
M9c       s  d  Z  d k Z d k Z d k Z e d  Z e d  Z d d  Z e Z d   Z	 d d d	 d
 d d d d d d d d f Z
 g  Z g  Z g  Z g  Z g  Z g  Z d g d Z x) e d  d r Z d e d e e <q Wd   Z d   Z d   Z d   Z e d d  e d d  e d d  e d d  e d  d!  e d" d#  e d$ d%  e d& d'  e d( d)  e d* d+  e d, d-  e d. d/  e d0 d1  e d2 d3  e d4 d5  e d6 d7  e d8 d9  e d: d;  e d< d=  e d> d?  e d@ dA  e dB dC  e dD dE  e dF dG  e dH dI  e dJ dK  e dL dM  e dN dO  e dP dQ  e dR dS  e dT dU  e dV dW  e dX dY  e dZ d[  e d\ d]  e d^ d_  e d` da  e db dc  e dd de  e df dg  e dh di  e dj dk  e dl dm  e dn do  e dp dq  e dr ds  e dt du  e dv dw  e dx dy  e dz d{  e d| d}  e d~ d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  d Z e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e i d  e d d  e d d  e d d  e d d  e d d  e d d  e i d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  e i d  e d d  e i d  e d d  e i d  e d d  d Z e d d  e d d  e d d  e d d  e d d  e d d  e d d  e d d  d Z d   Z e d j o e   n d S(   s0   Disassembler of Python byte code into mnemonics.Nc    sT  |  o t   d Sn t |   t i j o |  i }  n t |  d  o |  i i   } | i	   xx | d rn \ } } t |  t i t i t i f j o= d | GHy t |  Wn t j
 o } d G| GHn XHn ql Wno t |  d  o |  i }  n t |  d  o |  i }  n t |  d  o t |   n t d	 t |   i  d S(
   sh   Disassemble classes, methods, functions, or code.

	With no argument, disassemble the last traceback.

	Ns   __dict__i    s   Disassembly of %s:s   Sorry:s   im_funcs	   func_codes   co_codes(   don't know how to disassemble %s objects(   s   xs   distbs   types   typess   InstanceTypes	   __class__s   hasattrs   __dict__s   itemss   sorts   names   x1s
   MethodTypes   FunctionTypes   CodeTypes   diss	   TypeErrors   msgs   im_funcs	   func_codes   disassembles   __name__(   s   xs   itemss   names   x1s   msgs    /mit/python/lib/python2.0/dis.pys   dis s2     
	 %	c    sm   |  oK y t i }  Wn t j
 o t d  n Xx |  i o |  i }  q7 Wn t |  i i |  i	  d S(   s2   Disassemble a traceback (default: last traceback).s    no last traceback to disassembleN(
   s   tbs   syss   last_tracebacks   AttributeErrors   RuntimeErrors   tb_nexts   disassembles   tb_frames   f_codes   tb_lasti(   s   tbs    /mit/python/lib/python2.0/dis.pys   distb+ s      
 c 
   s  |  i } t |  } t |  } d } d } x| | j  o| | } t
 |  } | t j o
 | d j o Hn | | j o d Gn d G| | j o d Gn d Gt i | d  Gt i t | d  G| d } | t j ot
 | |  t
 | | d  d	 | }	 d } | d
 } | t j o |	 d } n t i |	 d  G| t j o d |  i |	 d Gn | t j o d |  i |	 d Gnh | t j o d | |	 d GnF | t j o d |  i |	 d Gn" | t j o d t |	 d Gn n Hq0 Wd S(   s   Disassemble a code object.i    s   -->s      s   >>s     i   i   i   i   i   l      i   s   (s   )s   (to N(   s   cos   co_codes   codes
   findlabelss   labelss   lens   ns   is   extended_args   cs   ords   ops
   SET_LINENOs   lastis   strings   rjusts   ljusts   opnames   HAVE_ARGUMENTs   opargs   EXTENDED_ARGs   hasconsts	   co_constss   hasnames   co_namess   hasjrels   haslocals   co_varnamess
   hascompares   cmp_op(
   s   cos   lastis   codes   labelss   ns   is   extended_args   cs   ops   opargs    /mit/python/lib/python2.0/dis.pys   disassemble5 sN     	 
   
*
i   c    s   g  } t |   } d } x | | j  o |  | } t |  } | d } | t j o t |  |  t |  | d  d } | d } d } | t j o | | } n | t j o
 | } n | d j o" | | j o | i |  n n n q W| Sd S(   sZ   Detect all offsets in a byte code which are jump targets.

	Return the list of offsets.

	i    i   i   i   N(   s   labelss   lens   codes   ns   is   cs   ords   ops   HAVE_ARGUMENTs   opargs   labels   hasjrels   hasjabss   append(   s   codes   labelss   ns   is   cs   ops   opargs   labels    /mit/python/lib/python2.0/dis.pys
   findlabels\ s*      

&

s   <s   <=s   ==s   !=s   >s   >=s   ins   not ins   iss   is nots   exception matchs   BADs    i   i    c    s   |  t | <d  S(   N(   s   names   opnames   op(   s   names   ops    /mit/python/lib/python2.0/dis.pys   def_op s    c    s   |  t | <t i |  d  S(   N(   s   names   opnames   ops   hasnames   append(   s   names   ops    /mit/python/lib/python2.0/dis.pys   name_op s    
c    s   |  t | <t i |  d  S(   N(   s   names   opnames   ops   hasjrels   append(   s   names   ops    /mit/python/lib/python2.0/dis.pys   jrel_op s    
c    s   |  t | <t i |  d  S(   N(   s   names   opnames   ops   hasjabss   append(   s   names   ops    /mit/python/lib/python2.0/dis.pys   jabs_op s    
s	   STOP_CODEs   POP_TOPs   ROT_TWOi   s	   ROT_THREEi   s   DUP_TOPi   s   ROT_FOURi   s   UNARY_POSITIVEi
   s   UNARY_NEGATIVEi   s	   UNARY_NOTi   s   UNARY_CONVERTi   s   UNARY_INVERTi   s   BINARY_POWERi   s   BINARY_MULTIPLYi   s   BINARY_DIVIDEi   s   BINARY_MODULOi   s
   BINARY_ADDi   s   BINARY_SUBTRACTi   s   BINARY_SUBSCRi   s   SLICE+0i   s   SLICE+1i   s   SLICE+2i    s   SLICE+3i!   s   STORE_SLICE+0i(   s   STORE_SLICE+1i)   s   STORE_SLICE+2i*   s   STORE_SLICE+3i+   s   DELETE_SLICE+0i2   s   DELETE_SLICE+1i3   s   DELETE_SLICE+2i4   s   DELETE_SLICE+3i5   s   INPLACE_ADDi7   s   INPLACE_SUBTRACTi8   s   INPLACE_MULTIPLYi9   s   INPLACE_DIVIDEi:   s   INPLACE_MODULOi;   s   STORE_SUBSCRi<   s   DELETE_SUBSCRi=   s   BINARY_LSHIFTi>   s   BINARY_RSHIFTi?   s
   BINARY_ANDi@   s
   BINARY_XORiA   s	   BINARY_ORiB   s   INPLACE_POWERiC   s
   PRINT_EXPRiF   s
   PRINT_ITEMiG   s   PRINT_NEWLINEiH   s   PRINT_ITEM_TOiI   s   PRINT_NEWLINE_TOiJ   s   INPLACE_LSHIFTiK   s   INPLACE_RSHIFTiL   s   INPLACE_ANDiM   s   INPLACE_XORiN   s
   INPLACE_ORiO   s
   BREAK_LOOPiP   s   LOAD_LOCALSiR   s   RETURN_VALUEiS   s   IMPORT_STARiT   s	   EXEC_STMTiU   s	   POP_BLOCKiW   s   END_FINALLYiX   s   BUILD_CLASSiY   iZ   s
   STORE_NAMEs   DELETE_NAMEi[   s   UNPACK_SEQUENCEi\   s
   STORE_ATTRi_   s   DELETE_ATTRi`   s   STORE_GLOBALia   s   DELETE_GLOBALib   s   DUP_TOPXic   s
   LOAD_CONSTid   s	   LOAD_NAMEie   s   BUILD_TUPLEif   s
   BUILD_LISTig   s	   BUILD_MAPih   s	   LOAD_ATTRii   s
   COMPARE_OPij   s   IMPORT_NAMEik   s   IMPORT_FROMil   s   JUMP_FORWARDin   s   JUMP_IF_FALSEio   s   JUMP_IF_TRUEip   s   JUMP_ABSOLUTEiq   s   FOR_LOOPir   s   LOAD_GLOBALit   s
   SETUP_LOOPix   s   SETUP_EXCEPTiy   s   SETUP_FINALLYiz   s	   LOAD_FASTi|   s
   STORE_FASTi}   s   DELETE_FASTi~   s
   SET_LINENOi   s   RAISE_VARARGSi   s   CALL_FUNCTIONi   s   MAKE_FUNCTIONi   s   BUILD_SLICEi   s   CALL_FUNCTION_VARi   s   CALL_FUNCTION_KWi   s   CALL_FUNCTION_VAR_KWi   s   EXTENDED_ARGi   c     s   t  i d o_ t  i d o! t  i i d  t  i d  n t  i d }  |  p
 |  d j o
 t }  n n t }  |  o t  i } n t	 |   } | i
   } |  o | i   n d }  t | |  d  } t |  d S(   s*   Simple test program to disassemble a file.i   i   s   usage: python dis.py [-|file]
s   -s   <stdin>s   execN(   s   syss   argvs   stderrs   writes   exits   fns   Nones   stdins   fs   opens   reads   sources   closes   compiles   codes   dis(   s   fns   fs   sources   codes    /mit/python/lib/python2.0/dis.pys   _tests$     s   __main__(   s   __doc__s   syss   strings   typess   Nones   diss   distbs   disassembles   discos
   findlabelss   cmp_ops   hasconsts   hasnames   hasjrels   hasjabss   haslocals
   hascompares   opnames   ranges   ops   def_ops   name_ops   jrel_ops   jabs_ops   HAVE_ARGUMENTs   appends
   SET_LINENOs   EXTENDED_ARGs   _tests   __name__(    s    /mit/python/lib/python2.0/dis.pys   ? s
  			$
%	*  					