Your IP : 52.15.92.58


Current Path : /usr/lib64/python3.6/__pycache__/
Upload File :
Current File : //usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-2.pyc

3


 \�F�@s�ddlZddlZddlZddlZddlTddlmZdddddd	d
ddd
dgeZ[ejejej	e
eefZ
edZdd�ZdJdd�dd�ZdKdd�dd�Zddddddddddd�
Zd d!�Zd"d#�Zd$d�Zd%d&�Zdd�d'd�Zejd(d)�Zd*ej_d+ej_d,ej_d-ej_d.ej_d/ej _d0ej!_d1ej"_Gd2d
�d
e�Z#dd3�d4d�Z$d5d6�Z%d7d8�Z&dLd9d:�Z'dNdd�d<d�Z(dPddd=�d>d?�Z)dd�d@dA�Z*e(Z+dBdC�Z,dDd
�Z-dEd	�Z.GdFd�d�Z/dGdH�Z0e1dIk�r�e0�dS)Q�N)�*)�__all__�	code_info�dis�disassemble�distb�disco�findlinestarts�
findlabels�	show_code�get_instructions�Instruction�Bytecode�FORMAT_VALUEcCs6yt||d�}Wn tk
r0t||d�}YnX|S)N�eval�exec)�compile�SyntaxError)�source�name�c�r�/usr/lib64/python3.6/dis.py�_try_compiles
r)�filecCs>|dkrt|d�dSt|d�r&|j}t|d�r6|j}t|d�rF|j}t|d�r�t|jj��}x�|D]n\}}t|t	�rdt
d||d�yt||d�Wn0tk
r�}zt
d||d�WYdd}~XnXt
|d�qdWnbt|d�r�t
||d�nJt|ttf��rt||d�n,t|t��r(t||d�ntd	t|�j��dS)
N)r�__func__�__code__�gi_code�__dict__zDisassembly of %s:zSorry:�co_codez(don't know how to disassemble %s objects)r�hasattrrrr�sortedr�items�
isinstance�
_have_code�printr�	TypeErrorr�bytes�	bytearray�_disassemble_bytes�str�_disassemble_str�type�__name__)�xrr"rZx1�msgrrrr"s6





 
c
CsZ|dkrBy
tj}Wntk
r.td��YnXx|jr@|j}q2Wt|jj|j|d�dS)Nz no last traceback to disassemble)r)	�sys�last_traceback�AttributeError�RuntimeError�tb_nextr�tb_frame�f_code�tb_lasti)�tbrrrrrEs

Z	OPTIMIZEDZ	NEWLOCALSZVARARGSZVARKEYWORDSZNESTEDZ	GENERATORZNOFREEZ	COROUTINEZITERABLE_COROUTINEZASYNC_GENERATOR)
������ �@��icCsbg}xRtd�D]8}d|>}||@r|jtj|t|���||N}|sPqW|jt|��dj|�S)Nr>r9z, )�range�append�COMPILER_FLAG_NAMES�get�hex�join)�flags�names�i�flagrrr�pretty_flags_srLcCsht|d�r|j}t|d�r |j}t|d�r0|j}t|t�rDt|d�}t|d�rR|Stdt|�j	��dS)Nrrrz
<disassembly>rz(don't know how to disassemble %s objects)
r rrrr#r*rr&r,r-)r.rrr�_get_code_objectms





rMcCstt|��S)N)�_format_code_inforM)r.rrrr|scCs�g}|jd|j�|jd|j�|jd|j�|jd|j�|jd|j�|jd|j�|jdt|j��|j	r�|jd�x t
|j	�D]}|jd	|�q�W|jr�|jd
�x t
|j�D]}|jd|�q�W|j�r|jd�x t
|j�D]}|jd|�q�W|j
�rF|jd
�x"t
|j
�D]}|jd|��q.W|j�r||jd�x"t
|j�D]}|jd|��qdWdj|�S)NzName:              %szFilename:          %szArgument count:    %szKw-only arguments: %szNumber of locals:  %szStack size:        %szFlags:             %sz
Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:�
)rC�co_name�co_filename�co_argcount�co_kwonlyargcount�
co_nlocals�co_stacksizerL�co_flags�	co_consts�	enumerate�co_names�co_varnames�co_freevars�co_cellvarsrG)�co�linesZi_cZi_nrrrrN�s:




rNcCstt|�|d�dS)N)r)r%r)r]rrrrr�s�_InstructionzBopname opcode arg argval argrepr offset starts_line is_jump_targetz!Human readable name for operationzNumeric code for operationz6Numeric argument to operation (if any), otherwise Nonez4Resolved arg value (if known), otherwise same as argz0Human readable description of operation argumentz1Start index of operation within bytecode sequencez4Line started by this opcode (if any), otherwise Nonez1True if other code jumps to here, otherwise Falsec@seZdZddd�ZdS)r
�FcCs�g}|r:|jdk	r,d|}|j||j�n|jd|�|rJ|jd�n
|jd�|jrf|jd�n
|jd�|jt|j�jd��|j|jjd��|jdk	r�|jt|j�jd	��|j	r�|jd
|j	d�dj
|�j�S)Nz%%%dd� z-->z   z>>z  r;���(�))�starts_linerC�is_jump_target�repr�offset�rjust�opname�ljust�arg�argreprrG�rstrip)�self�lineno_widthZmark_as_currentZfieldsZ
lineno_fmtrrr�_disassemble�s&



zInstruction._disassembleN)r`F)r-�
__module__�__qualname__rrrrrrr
�s)�
first_linecCsTt|�}|j|j}tt|��}|dk	r4||j}nd}t|j|j|j	|j
|||�S)Nr)rMr\r[�dictr	�co_firstlineno�_get_instructions_bytesrrZrYrW)r.rur]�
cell_names�
linestarts�line_offsetrrrr�scCs |}|dk	r||}|t|�fS)N)rh)Zconst_indexZ
const_list�argvalrrr�_get_const_info�sr}cCs*|}|dk	r||}|}nt|�}||fS)N)rh)Z
name_indexZ	name_listr|rnrrr�_get_name_infosr~c
csxt|�}d}�xdt|�D�]V\}	}
}|dk	rH|j|	d�}|dk	rH||7}|	|k}d}
d}|dk	�rT|}
|
tkr~t||�\}
}n�|
tkr�t||�\}
}n�|
tkr�|	d|}
dt|
�}n�|
t	kr�t||�\}
}n�|
t
kr�t|}
|
}nn|
tkr�t||�\}
}nV|
t
k�rTdtttf|d@t|d@�f}
d|d@}|
d	�rT|�rL|d
7}|d7}tt|
|
||
||	||�VqWdS)
N�r:zto r`r;r*rh�asciir9z, zwith format)rr*rhr�)r
�_unpack_opargsrEZhasconstr}Zhasnamer~�hasjrelrhZhaslocalZ
hascompareZcmp_opZhasfreerr*r��boolr
rk)�code�varnamesrI�	constants�cellsrzr{�labelsrfri�oprmrgr|rnrrrrxsH


 

rxr9c
Cs<|j|j}tt|��}t|j||j|j|j|||d�dS)N)r)	r\r[rvr	r)rrZrYrW)r]�lastirryrzrrrrJs)rr{c	Cs||dk	}	|	rdnd}
xbt|||||||d�D]H}|	oF|jdk	oF|jdk}|rVt|d�|j|k}
t|j|
|
�|d�q,WdS)Nr`r)r{)r)rxrfrir%rr)r�r�r�rIr�r�rzrr{Zshow_linenorqZinstrZnew_source_lineZis_current_instrrrrr)Qs




r)cCstt|d�|d�dS)Nz<dis>)r)rr)rrrrrr+csr+ccshd}x^tdt|�d�D]J}||}|tkrP||d|B}|tkrJ|d>nd}nd}|||fVqWdS)Nrr:r9r<)rB�lenZ
HAVE_ARGUMENTZEXTENDED_ARG)r�Zextended_argrJr�rmrrrr�isr�cCs`g}xVt|�D]J\}}}|dk	r|tkr6|d|}n|tkr|}nq||kr|j|�qW|S)Nr:)r�r�ZhasjabsrC)r�r�rir�rmZlabelrrrr
tsccs�|jddd�}|jddd�}d}|j}d}xPt||�D]B\}}|rd||kr\||fV|}||7}|dkrt|d8}||7}q:W||kr�||fVdS)Nrr:r9r@rA)�	co_lnotabrw�zip)r�Zbyte_incrementsZline_incrementsZ
lastlineno�linenoZaddrZ	byte_incrZ	line_incrrrrr	�s 
c@sHeZdZddd�dd�Zdd�Zdd�Zed	d
��Zdd�Zd
d�Z	dS)rN)ru�current_offsetcCsdt|�|_}|dkr&|j|_d|_n||_||j|_|j|j|_tt	|��|_
||_||_dS)Nr)
rM�codeobjrwru�_line_offsetr\r[�_cell_namesrvr	�_linestarts�_original_objectr�)rpr.rur�r]rrr�__init__�szBytecode.__init__c	Cs*|j}t|j|j|j|j|j|j|jd�S)N)r{)	r�rxrrZrYrWr�r�r�)rpr]rrr�__iter__�s
zBytecode.__iter__cCsdj|jj|j�S)Nz{}({!r}))�format�	__class__r-r�)rprrr�__repr__�s
zBytecode.__repr__cCs$x|jr|j}qW||jj|jd�S)N)r�)r4r5r6r7)�clsr8rrr�from_traceback�s
zBytecode.from_tracebackcCs
t|j�S)N)rNr�)rprrr�info�sz
Bytecode.infocCs`|j}|jdk	r|j}nd}tj��2}t|j|j|j|j|j	|j
|j||d�	|j�SQRXdS)Nr9)r�rIr�r�rzr{rr����)
r�r��io�StringIOr)rrZrYrWr�r�r��getvalue)rpr]ri�outputrrrr�s


zBytecode.dis)
r-rsrtr�r�r��classmethodr�r�rrrrrr�s
cCsdddl}|j�}|jd|j�ddd�|j�}|j�}|j�}WdQRXt||jjd�}t	|�dS)Nr�infile�?�-)r,�nargs�defaultr)
�argparse�ArgumentParser�add_argumentZFileType�
parse_argsr��readrrr)r��parser�argsr�rr�rrr�_test�sr��__main__)N)N)NNNNNrr�)r�r�)r�NNNNN)2r0�types�collectionsr�ZopcoderZ_opcodes_all�
MethodType�FunctionType�CodeTyper��staticmethodr,r$ZopmaprrrrrDrLrMrrNr�
namedtupler_rk�__doc__rmr|rnrirfrgr
rr}r~rxrr)r+rr�r
r	rr�r-rrrr�<module>sv


#3
2=


?>