File: //usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-1.pyc
3
  \�F  �               @   s�  d Z ddlZddlZddlZddlZddlT ddlmZ ddddd	d
ddd
ddge Z[ejej	ej
eee
fZed Zdd� ZdKdd�dd�ZdLdd�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_ d0ej _ d1ej!_ d2ej"_ G d3d� de�Z#dd4�d5d
�Z$d6d7� Z%d8d9� Z&dMd:d;�Z'dOdd�d=d�Z(dQddd>�d?d@�Z)dd�dAdB�Z*e(Z+dCdD� Z,dEd� Z-dFd
� Z.G dGd� d�Z/dHdI� Z0e1dJk�r�e0�  dS )Rz0Disassembler of Python byte code into mnemonics.�    N)�*)�__all__�	code_info�dis�disassemble�distb�disco�findlinestarts�
findlabels�	show_code�get_instructions�Instruction�Bytecode�FORMAT_VALUEc             C   s6   yt | |d�}W n  tk
r0   t | |d�}Y nX |S )z�Attempts to compile the given source, first as an expression and
       then as a statement if the first approach fails.
       Utility function to accept strings in functions that otherwise
       expect code objects
    �eval�exec)�compile�SyntaxError)�source�name�c� r   �/usr/lib64/python3.6/dis.py�_try_compile   s
    r   )�filec            C   s>  | dkrt |d� dS t| 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� W n0 tk
r� } zt
d||d� W Y dd}~X nX t
|d� qdW nbt| d	�r�t
| |d� nJt| ttf��rt| |d� n,t| t��r(t| |d� ntd
t| �j ��dS )zzDisassemble classes, methods, functions, generators, or code.
    With no argument, disassemble the last traceback.
    N)r   �__func__�__code__�gi_code�__dict__zDisassembly of %s:zSorry:�co_codez(don't know how to disassemble %s objects)r   �hasattrr   r   r   �sortedr   �items�
isinstance�
_have_code�printr   �	TypeErrorr   �bytes�	bytearray�_disassemble_bytes�str�_disassemble_str�type�__name__)�xr   r"