a
    {d                     @   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--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   \/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/triton/tools/disasm.py	parseCtrl    s    r   c                 C   sx   t | d}|dr*|d d d }t|}t|d urltt|dd}||v 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 u rt dd| g}nt dd|d| g}| }d}|t|k r||  }t|d u r|d7 }|t|k r||  }qTd S qTt|d}d}|d| d7 }|d	7 }||  }i }g }	t|d ur"||  }
|d7 }||  }|d7 }|		t
|
|| ||  }qt|	D ]\}\}}|d
 }||v 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    
r8   )
rer*   compiler   r   r.   r   r   r&   r8   r   r   r   r   <module>   s   



