bpo-39573: Use the Py_TYPE() macro (GH-21433)

Replace obj->ob_type with Py_TYPE(obj).
diff --git a/PC/_msi.c b/PC/_msi.c
index f725c81..504899d 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -193,7 +193,7 @@
         if (!PyBytes_Check(result)) {
             PyErr_Format(PyExc_TypeError,
                 "Incorrect return type %s from getnextcabinet",
-                result->ob_type->tp_name);
+                Py_TYPE(result)->tp_name);
             Py_DECREF(result);
             return FALSE;
         }
@@ -879,7 +879,7 @@
     MSIHANDLE params = 0;
 
     if (oparams != Py_None) {
-        if (oparams->ob_type != &record_Type) {
+        if (!Py_IS_TYPE(oparams, &record_Type)) {
             PyErr_SetString(PyExc_TypeError, "Execute argument must be a record");
             return NULL;
         }
@@ -955,7 +955,7 @@
 {
     int status;
 
-    if (data->ob_type != &record_Type) {
+    if (!Py_IS_TYPE(data, &record_Type)) {
         PyErr_SetString(PyExc_TypeError, "Modify expects a record object");
         return NULL;
     }
diff --git a/PC/winreg.c b/PC/winreg.c
index 7c3b2f4..b2725b8 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -112,7 +112,7 @@
     HKEY hkey;
 } PyHKEYObject;
 
-#define PyHKEY_Check(op) ((op)->ob_type == &PyHKEY_Type)
+#define PyHKEY_Check(op) Py_IS_TYPE(op, &PyHKEY_Type)
 
 static char *failMsg = "bad operand type";
 
@@ -693,7 +693,7 @@
                     PyErr_Format(PyExc_TypeError,
                         "Objects of type '%s' can not "
                         "be used as binary registry values",
-                        value->ob_type->tp_name);
+                        Py_TYPE(value)->tp_name);
                     return FALSE;
                 }