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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encZstallZyldZwrtdbZreadbZwatdbZyld_strZ	wrtdb_strZ	readb_strZ	watdb_str r   Y/home/www/facesmatcher.com/frenv_anti/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   
r'   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)Z	cubin_asmfunfdpathZcubinsassr   r   r   get_sassB   s   
r4   c                  C   s   ddl m}  | jjjS )Nr   knobs)Ztritonr6   Znvidia	cuobjdumpr2   r5   r   r   r   path_to_cuobjdumpN   s   
r8   c                 C   s  t  }|d u rt|d| g}n
t|d|d| g}| }d}|t|k r||  }t|d u rM|d7 }|t|k rD||  }nd S t|d u s3t|d}d}|d| d7 }|d7 }||  }i }	g }
t	|d ur||  }|d7 }||  }|d7 }|

t|||	 ||  }t	|d ustt|
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   ZLBBz:
	z\1r   )r8   
subprocesscheck_output
splitlinesr!   decodeFNAME_REr   r   r   appendr'   	enumerater    r   sub)	file_pathr0   r7   Zsass_strZ
sass_linesZline_idxlinefnameretr#   Z
asm_bufferr"   r   idxr%   r$   offsetZ
label_namer&   target_namer   r   r   r-   S   sV   
r-   )N)	functoolsr.   rer<   r)   compiler   r   r@   r    r   r'   	lru_cacher4   r8   r-   r   r   r   r   <module>   s   



