Spade
Mini Shell
| Directory:~$ /proc/self/root/lib64/python3.6/__pycache__/ |
| [Home] [System Details] [Kill Me] |
3
\�F�@s�ddlZddlZddlZddlZddlTddlmZdddddd d
ddd
dgeZ[ejejej e
eefZ
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�Wn0tk
r�}zt
d||d�WYdd}~XnXt
|d�qdWnbt|d�r�t
||d�nJt|ttf��rt||d�n,t|t��r(t||d�ntd 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
rMcCstt|��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�scCs
|}|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_infosr~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|
tkr�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_ARGUMENTZEXTENDED_ARG)r�Zextended_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__�szBytecode.__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
zBytecode.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
rr}r~rxrr)r+rr�r
r rr�r-rrrr�<module>sv
#3
2=