
    (Th                     .   S SK r S SKrS SKrS SKrS SKr\R
                  " S5      r\R
                  " S5      r\R
                  " S5      r\R
                  " S5      r	S r
S r\ R                  " 5       SS j5       r\ R                  " 5       S	 5       rS
 rg)    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           
      H   [        [        R                  U 5      R                  S5      S5      nUS-	  S-  nUS-	  S-  nUS-	  S-  nUS-	  S-  nUS	-	  S
-  nUS:X  a  SOSnUS:X  a  SO
[	        U5      nUS:X  a  SO
[	        U5      n	US:X  a  SOUS n
U
 SU	 SU SU SUS 3	$ )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              K/var/www/auris/envauris/lib/python3.13/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                 V   [         R                  U 5      R                  S5      nUR                  S5      (       a  US S S-   n[	        U5      n[
        R                  U5      bA  [        [
        R                  U5      R                  S5      S5      nXR;   a  O[        U5      X%'   U U 4$ )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 [FNf#  r%   c                    [         R                  " 5       u  p# [        US5       nUR                  U 5        S S S 5        [	        X15      n[
        R                  " U5        U$ ! , (       d  f       N1= f! [
        R                  " U5        f = f)Nwb)tempfilemkstempopenwriteextractosremove)	cubin_asmfunfdpathcubinsasss         r#   get_sassrC   B   sc    !HB"d^uKK	" t!
		$K ^ 			$s!   A3 A"A3 "
A0,A3 3Bc                      SSK Jn   U " S5      $ )Nr   _path_to_binary	cuobjdump)triton.backends.nvidia.compilerrF   rE   s    r#   path_to_cuobjdumprI   N   s    ?;''r%   c                    [        5       u  p#Uc  [        R                  " USU /5      nO[        R                  " USUSU /5      nUR                  5       nSnU[	        U5      :  Ga  XV   R                  5       n[        R                  U5      c@  US-  nU[	        U5      :  a  XV   R                  5       nOg [        R                  U5      c  M@  [        R                  U5      R                  S5      nSn	U	SU S3-  n	US-  nXV   R                  5       n0 n
/ n[        R                  U5      bs  XV   R                  5       nUS-  nXV   R                  5       nUS-  nUR                  [        XU
5      5        XV   R                  5       n[        R                  U5      b  Ms  [        U5       H  u  nu  nnUS	-  nUU
;   a  S
U
U    3nU	U S3-  n	XS-   -  n	[        R                  U5      (       aP  [        [        R                  U5      R                  S5      S	5      nS
U
U    3n[        R                  SU S3U5      nU	US-   -  n	M     U	S-  n	U	$ g )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   sh   $&LI
{**Iw	+JK**IvsGY+WX$$&JH
S_
$#**, nnT"*MH#j/)!+224 nnT"* t$**1-5'$$A#**, 
nnT".(//1EMH(//1EMH.uVDE'..0D nnT". !** 5C$2XF"6&>"23
*S))$;C||C  V\\#.44Q7< #F6N#34jjB{m1!5s;3:C !6 	t
i %r%   )N)	functoolsr;   rerO   r6   compiler*   r   rS   r,   r$   r3   	lru_cacherC   rI   r:    r%   r#   <module>ri      s   .  	 	  ::JK::12::/0	/	0F!    ( (
<r%   