
    çg                        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dS )    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           
      r   t          t                              |                               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              O/var/www/html/ai-engine/env/lib/python3.11/site-packages/triton/tools/disasm.py	parseCtrlr'   %   s    
hnnU##))!,,b
1
1CBY#E"9
CBY#EBY#EBY$EAXXcc3Gzzs5zzIzzs5zzI

5IEE)EEiEE'EEEEEEE    c                    t                               |                               d          }|                    d          r|d d         dz   }t	          |          }t
                              |          Rt          t
                              |                              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 #2#hnUD||C$V\\#&&,,Q//44V [[F6NI#x  r(   c                 *   t          j                    \  }}	 t          |d          5 }|                    |            d d d            n# 1 swxY w Y   t	          ||          }t          j        |           n# t          j        |           w xY w|S )Nwb)tempfilemkstempopenwriteextractosremove)	cubin_asmfunfdpathcubinsasss         r&   get_sassrE   D   s    !!HB"d^^ 	#uKK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#tS!!
	$	$Ks-   A: A
A: 
AA: AA: :Bc                    t                      \  }}t                      \  }}|t          j        d<   |t	          j        |d| g          }nt	          j        |d|d| g          }|                                }d}|t          |          k     rX||                                         }t          
                    |          O|dz  }|t          |          k     r||                                         }nd S t          
                    |          Ot          
                    |                              d          }	d}
|
d|	 dz  }
|d	z  }||                                         }i }g }t          
                    |          ||                                         }|dz  }||                                         }|dz  }|                    t          |||                     ||                                         }t          
                    |          t          |          D ]\  }\  }}|d
z  }||v rd||          }|
| dz  }
|
|dz   z  }
t           
                    |          ret#          t           
                    |                              d	          d
          }d||          }t                               d| d|          }|
|dz   z  }
|
dz  }
|
S d S )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"*BJ
{*Iw	+JKK*IvsGY+WXX$$&&JH
S__
$
$(#**,, nnT""*MH#j//))!(+2244 nnT""* t$$**1--$5$$$$A(#**,, 
nnT"".x(//11EMHx(//11EMH.ueVDDEEEh'..00D nnT"". !** 5 5 	 	C$2XF36&>33
*))))4$;C||C   <V\\#..44Q77<<4F6N44jj!5{!5!5!5s;;3:CC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K2:1222:/00	/	0	0F F F! ! !     > > > > >r(   