U
    -e                     @   sT   d dl Z d dlZe dZe dZe dZe dZdd Zdd	 Zd
d Z	dS )    Nz1\s*/\*\w{4}\*/\s*([^;]*;)\s*/\* 0x(\w{16}) \*/\s*z\s*/\* 0x(\w{16}) \*/\s*z\s*Function : (\w+)\s*z(.*BRA(?:\.U)? )(0x\w+);c              
   C   s   t t| dd}|d? d@ }|d? d@ }|d? d@ }|d? d@ }|d	? d
@ }|dkr^dnd}|dkrndnt|}|dkrdnt|}	|dkrdn|d}
|
 d|	 d| d| d|d	S )N      )      -   .      1   4   ?   r   Y-z--02d:x)intSLINE_REmatchgroupstr)slineencZstallZyldZwrtdbZreadbZwatdbZyld_strZ	wrtdb_strZ	readb_strZ	watdb_str r   T/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/triton/tools/disasm.py	parseCtrl    s    r   c                 C   sx   t | d}|dr*|d d d }t|}t|d k	rltt|dd}||kr`nt|||< | | fS )Nr   z ;;   r   )FLINE_REr   r   endswithr   BRA_REr   len)fliner   labelsasmctrltargetr   r   r   processSassLines/   s    
r'   c                 C   s  |d krt dd| g}nt dd|d| g}| }d}|t|k r||  }t|d kr|d7 }|t|k r||  }qTd S qTt|d}d}|d| d7 }|d	7 }||  }i }g }	t|d k	r"||  }
|d7 }||  }|d7 }|		t
|
|| ||  }qt|	D ]\}\}}|d
 }||krdd||  }|| d7 }||d 7 }t|rtt|d	d
}d||  }td| d|}||d 7 }q*|d7 }|S d S )NZ	cuobjdumpz-sassz-funr   r    z	Function:
r   r   ZLBBz:
	z\1r   )
subprocesscheck_output
splitlinesr!   decodeFNAME_REr   r   r   appendr'   	enumerater    r   sub)	file_pathZfunZsass_strZ
sass_linesZline_idxlinefnameretr#   Z
asm_bufferr"   r   idxr%   r$   offsetZ
label_namer&   Ztarget_namer   r   r   extract?   sN    
r9   )
rer+   compiler   r   r/   r    r   r'   r9   r   r   r   r   <module>   s   



