Checking in a slight variation of Barry's patch 103303.
diff --git a/Lib/dis.py b/Lib/dis.py
index 8c15919..6ecefd3 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -15,6 +15,10 @@
         return
     if type(x) is types.InstanceType:
         x = x.__class__
+    if hasattr(x, 'im_func'):
+        x = x.im_func
+    if hasattr(x, 'func_code'):
+        x = x.func_code
     if hasattr(x, '__dict__'):
         items = x.__dict__.items()
         items.sort()
@@ -28,17 +32,12 @@
                 except TypeError, msg:
                     print "Sorry:", msg
                 print
+    elif hasattr(x, 'co_code'):
+        disassemble(x)
     else:
-        if hasattr(x, 'im_func'):
-            x = x.im_func
-        if hasattr(x, 'func_code'):
-            x = x.func_code
-        if hasattr(x, 'co_code'):
-            disassemble(x)
-        else:
-            raise TypeError, \
-                  "don't know how to disassemble %s objects" % \
-                  type(x).__name__
+        raise TypeError, \
+              "don't know how to disassemble %s objects" % \
+              type(x).__name__
 
 def distb(tb=None):
     """Disassemble a traceback (default: last traceback)."""