
    sg                        d dl Z d dlZd dlZd dlZd dlZddlmZm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d Zy)    N   )path_to_cuobjdumppath_to_nvdisasmz1\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              F/var/www/html/venv/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   r   )FLINE_REr   r   endswithr'   BRA_REr   len)fliner   labelsasmctrltargets         r&   processSassLinesr5   4   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_sassrE   D   so    !HB"d^ 	#uKK	"	#tS!
		$K	# 	# 			$s!   A. A"A. "A+'A. .Bc                    t               \  }}t               \  }}|t        j                  d<   |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 )NNVDISASM_PATHz-sassz-funr   r    z	Function:
r   r   LBBz:
	z\1r+   )r   r   r=   environ
subprocesscheck_output
splitlinesr/   decodeFNAME_REr   r   r,   appendr5   	enumerater.   r   sub)	file_pathr@   	cuobjdump_nvdisasmsass_str
sass_linesline_idxlinefnameretr1   
asm_bufferr0   r   idxr3   r2   offset
label_namer4   target_names                         r&   r<   r<   P   s   $&LIq"$KHa"*BJJ
{**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=   rerM   r8   common.backendr   r   compiler,   r   rQ   r.   r'   r5   	lru_cacherE   r<    r(   r&   <module>rj      s   .  	 	   @2::JK2::122::/0	/	0F!   >r(   