o
    oh                     @   s   d dl Z d dlZd dlZ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e  dd
dZe  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r7dnt|}|dkrAdnt|}	|dkrKdn|d}
|
 d|	 d| d| d|d	S )N      )      -   .      1   4   ?   r   Y-z--02d:x)intSLINE_REmatchgroupstr)slineencstallyldwrtdbreadbwatdbyld_str	wrtdb_str	readb_str	watdb_str r!   g/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/triton/tools/disasm.py	parseCtrl#   s   "r#   c                 C   sx   t | d}|dr|d d d }t|}t|d ur6tt|dd}||v r0nt|||< | | fS )Nr   z ;;   r   )FLINE_REr   r   endswithr#   BRA_REr   len)fliner   labelsasmctrltargetr!   r!   r"   processSassLines2   s   
r0   c              	   C   sh   t  \}}z't|d}||  W d    n1 sw   Y  t||}W t| |S t| w )Nwb)tempfilemkstempopenwriteextractosremove)	cubin_asmfunfdpathcubinsassr!   r!   r"   get_sassB   s   
r?   c                  C   s   ddl m}  | dS )Nr   _path_to_binary	cuobjdump)triton.backends.nvidia.compilerrA   r@   r!   r!   r"   path_to_cuobjdumpN   s   rD   c                 C   s  t  \}}|d u rt|d| g}n
t|d|d| g}| }d}|t|k r||  }t|d u rO|d7 }|t|k rF||  }nd S t|d u s5t|d}d}	|	d| d7 }	|d7 }||  }i }
g }t	|d ur||  }|d7 }||  }|d7 }|
t|||
 ||  }t	|d usvt|D ]I\}\}}|d	 }||
v rd
|
|  }|	| d7 }	|	|d 7 }	t|rtt|dd	}d
|
|  }td| d|}|	|d 7 }	q|	d7 }	|	S d S )Nz-sassz-funr   r    z	Function:
r&   r   LBBz:
	z\1r%   )rD   
subprocesscheck_output
splitlinesr*   decodeFNAME_REr   r   r'   appendr0   	enumerater)   r   sub)	file_pathr:   rB   _sass_str
sass_linesline_idxlinefnameretr,   
asm_bufferr+   r   idxr.   r-   offset
label_namer/   target_namer!   r!   r"   r6   T   sV   

r6   )N)	functoolsr7   rerI   r2   compiler'   r   rM   r)   r#   r0   	lru_cacher?   rD   r6   r!   r!   r!   r"   <module>   s    




