
    Xh                         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d	 Z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           
      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              e/var/www/tools.fuzzalab.pt/emblema-extractor/venv/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   )FLINE_REr   r   endswithr$   BRA_REr   len)fliner   labelsasmctrltargets         r#   processSassLinesr3   2   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_sassrC   B   s    !!HB"d^^ 	#uKK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#tS!!
	$	$Ks-   A: A
A: 
AA: AA: :Bc                  0    ddl m}  | j        j        j        S )Nr   knobs)tritonrF   nvidia	cuobjdumpr@   rE   s    r#   path_to_cuobjdumprJ   N   s"    <!&&r%   c                    t                      }|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 )Nz-sassz-funr   r    z	Function:
r)   r   LBBz:
	z\1r(   )rJ   
subprocesscheck_output
splitlinesr-   decodeFNAME_REr   r   r*   appendr3   	enumerater,   r   sub)	file_pathr>   rI   sass_str
sass_linesline_idxlinefnameretr/   
asm_bufferr.   r   idxr1   r0   offset
label_namer2   target_names                       r#   r:   r:   S   s   !##I
{*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;   rerP   r6   compiler*   r   rT   r,   r$   r3   	lru_cacherC   rJ   r:    r%   r#   <module>ri      s   .     				 				     2:JKK2:1222:/00	/	0	0F F F! ! !     ' ' '
< < < < <r%   