
    nVh                     ,   d dl Z d dlZd dlZd dlZd dlZ ej
                  d      Z ej
                  d      Z ej
                  d      Z ej
                  d      Z	d Z
d Z e j                         dd       Z e j                         d	        Zd
 Zy)    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           
      @   t        t        j                  |       j                  d      d      }|dz	  dz  }|dz	  dz  }|dz	  dz  }|dz	  dz  }|d	z	  d
z  }|dk(  rdnd}|dk(  rd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encstallyldwrtdbreadbwatdbyld_str	wrtdb_str	readb_str	watdb_strs              C/home/dcms/DCMS/lib/python3.12/site-packages/triton/tools/disasm.py	parseCtrlr$   #   s    
hnnU#))!,b
1CBY#E"9
CBY#EBY#EBY$EAXc3Gzs5zIzs5zI
5+I[)Ai['!E!9EE    c                 J   t         j                  |       j                  d      }|j                  d      r|d d dz   }t	        |      }t
        j                  |      At        t
        j                  |      j                  d      d      }||v rnt        |      ||<   | | fS )Nr   z ;;   r   )FLINE_REr   r   endswithr$   BRA_REr   len)fliner   labelsasmctrltargets         r#   processSassLinesr3   2   s    
..

%
%a
(C
||D#2hnUD||C$V\\#&,,Q/4V [F6Nf#  r%   c                    t        j                         \  }}	 t        |d      5 }|j                  |        d d d        t	        ||      }t        j                  |       |S # 1 sw Y   ,xY w# t        j                  |       w xY w)Nwb)tempfilemkstempopenwriteextractosremove)	cubin_asmfunfdpathcubinsasss         r#   get_sassrC   B   so    !HB"d^ 	#uKK	"	#tS!
		$K	# 	# 			$s!   A. A"A. "A+'A. .Bc                      ddl m}   | d      S )Nr   _path_to_binary	cuobjdump)triton.backends.nvidia.compilerrF   rE   s    r#   path_to_cuobjdumprI   N   s    ?;''r%   c                    t               \  }}|t        j                  |d| g      }nt        j                  |d|d| g      }|j                         }d}|t	        |      k  r||   j                         }t        j                  |      >|dz  }|t	        |      k  r||   j                         }ny t        j                  |      >t        j                  |      j                  d      }d}	|	d| dz  }	|dz  }||   j                         }i }
g }t        j                  |      u||   j                         }|dz  }||   j                         }|dz  }|j                  t        |||
             ||   j                         }t        j                  |      ut        |      D ]  \  }\  }}|d	z  }||
v rd
|
|    }|	| dz  }	|	|dz   z  }	t        j                  |      rPt        t        j                  |      j                  d      d	      }d
|
|    }t        j                  d| d|      }|	|dz   z  }	 |	dz  }	|	S y )Nz-sassz-funr   r    z	Function:
r)   r   LBBz:
	z\1r(   )rI   
subprocesscheck_output
splitlinesr-   decodeFNAME_REr   r   r*   appendr3   	enumerater,   r   sub)	file_pathr>   rG   _sass_str
sass_linesline_idxlinefnameretr/   
asm_bufferr.   r   idxr1   r0   offset
label_namer2   target_names                        r#   r:   r:   T   s|   $&LIq
{**Iw	+JK**IvsGY+WX$$&JH
S_
$(#**, nnT"*MH#j/)!(+224 nnT"* t$**1-5'$$A(#**, 
nnT".x(//1EMHx(//1EMH.ueVDEh'..0D nnT". !** 5 	C$2XF"6&>"23
*S))4$;C||C V\\#.44Q7< #F6N#34jjB{m1!5s;3:C	 	t
i %r%   )N)	functoolsr;   rerO   r6   compiler*   r   rS   r,   r$   r3   	lru_cacherC   rI   r:    r%   r#   <module>ri      s   .  	 	  2::JK2::122::/0	/	0F!    ( (
<r%   