U
    ®9%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r‚dnt|ƒ}	|dkr–d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   úR/var/www/html/Darija-Ai-API/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
|
||ƒ¡ ||  ¡ }qÊt|	ƒD ]˜\}\}}|d
 }||krdd|| › }||› d7 }||d 7 }t |¡r´t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   



