o
    i                     @   sT   d dl Z d dlZe dZe dZe dZe dZdd Zdd	 Zd
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              
   C   s   t t| dd}|d? d@ }|d? d@ }|d? d@ }|d? d@ }|d	? d
@ }|dkr/dnd}|dkr7dnt|}|dkrAdnt|}	|dkrKdn|d}
|
 d|	 d| d| d|d	S )N      )      -   .      1   4   ?   r   Y-z--02d:x)intSLINE_REmatchgroupstr)slineencZstallZyldZwrtdbZreadbZwatdbZyld_strZ	wrtdb_strZ	readb_strZ	watdb_str r   b/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/triton/tools/disasm.py	parseCtrl    s   "r   c                 C   sx   t | d}|dr|d d d }t|}t|d ur6tt|dd}||v r0nt|||< | | fS )Nr   z ;;   r   )FLINE_REr   r   endswithr   BRA_REr   len)fliner   labelsasmctrltargetr   r   r   processSassLines/   s   
r'   c                 C   s  |d u rt dd| g}n
t dd|d| g}| }d}|t|k r||  }t|d u rJ|d7 }|t|k rA||  }nd S t|d u s0t|d}d}|d| d7 }|d	7 }||  }i }g }	t|d ur||  }
|d7 }||  }|d7 }|		t
|
|| ||  }t|d usqt|	D ]I\}\}}|d
 }||v rd||  }|| d7 }||d 7 }t|rtt|d	d
}d||  }td| d|}||d 7 }q|d7 }|S d S )NZ	cuobjdumpz-sassz-funr   r    z	Function:
r   r   ZLBBz:
	z\1r   )
subprocesscheck_output
splitlinesr!   decodeFNAME_REr   r   r   appendr'   	enumerater    r   sub)	file_pathZfunZsass_strZ
sass_linesZline_idxlinefnameretr#   Z
asm_bufferr"   r   idxr%   r$   offsetZ
label_namer&   target_namer   r   r   extract?   sT   
r:   )
rer+   compiler   r   r/   r    r   r'   r:   r   r   r   r   <module>   s   



