
    'wfƨ                        d dl Z d dlZd dlmZ ej                  d    dk  ZereZg dZdZ	d Z
e	Ze
ZdZdeeefz  Zd ZdZdZdZd	ZdZd
ZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d Z$dZ%d	Z&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4d	Z5dZ6dZ7dZ8dZ9dZ:e&Z;e'Z<dZ=d	Z>dZ?dZ@dZAdZBdZCdZDdZEdZFd ZGdZHdZIdZJd	ZKdZLd	ZMdZNdZOdZPdZQePeQz  ZRdZSd	ZTdZUdZVdZWdZXdZYdZZd	Z[dZ\dZ]dZ^dZ_dZ`d ZadZbdZcdZdd	ZedZfd
ZgdZhdZidZjd ZkdZld ZmdZndZodZpd	ZqdZrd
ZsdZtdZudZvdZwdZxdZydZzdZ{dZ|dZ}dZ~d ZdZdZdZd	ZdZd
ZdZd ZdZdZdZd	ZdZdZdZdZdZd ZdZdZdZd	ZdZd
ZdZdZdZdZdZdZdZdZe"dz   Ze"dz   Z e       jG                         D  ci c]  \  } }| jI                  d      s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d       s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d!      s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d"      s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d#      s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d$      s||  c}} Z e       jG                         D  ci c]  \  } }| jI                  d%      s||  c}} Zd dlZd dlZd d&lmZmZmZ d dlZd dlZd dlZ eejn                  e   d'      s# ejr                   ejt                               Zej                  d(k(  rd)Znej                  d*v rd+Znd,Zd-Zd. ZdZ e j                  d/d       ej                  ed0       e ee      d    d0      d1ej                  j                         ej                  d(k(  rd2nd3gZeD ]  Zeŀ eeū      Ze n	  ed4      d5 Zd6 Zdd7lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d8 d9ej                        Z G d: d;ej                        Z G d< d=ej                        Z ej                  ej                   ej                  ej                        ej                  ej                  ej                        Z G d> d?ej                        Z G d@ dAej                        ZdB Z eedCej                  ej                  ej                   ej                  ej                                eedDej                  ej                   ej                  ej                        ej                  ej                  ej                   ej                   ej                  e            	        eedEdej                  ej                          eedFej                   ej                  ej                                eedGej                  ej                  ej                          eedHej                  ej                  ej                          eedIej                  ej                  ej                          eedJej                  ej                   ej                  e      ej                          eedKej                  ej                   ej                  e      ej                  ej                          eedLej                  ej                          eedMej                  ej                  ej                  ej                          eedNej                   ej                  ej                         ej                  ej                                eedOej                  ej                          eedPej                  ej                          eedQej                  ej                   ej                  e       ej                  ej                  dz         ej                  ej                         ej                  ej                  dz         ej                  ej                        	        G dR dSe      ZdT ZdU ZdV Z G dW dXe      ZdadYZdadZZd[ Z G d\ d]e      Z G d^ d_e      Zd` Zyc c}} w c c}} w c c}} w c c}} w c c}} w c c}} w c c}} w )b    N)system   )CsCsInsncs_disasm_quickcs_disasm_lite
cs_version
cs_supportversion_binddebugCS_API_MAJORCS_API_MINORCS_VERSION_MAJORCS_VERSION_MINORCS_VERSION_EXTRACS_ARCH_ARMCS_ARCH_ARM64CS_ARCH_MIPSCS_ARCH_X86CS_ARCH_PPCCS_ARCH_SPARCCS_ARCH_SYSZCS_ARCH_XCORECS_ARCH_M68KCS_ARCH_TMS320C64XCS_ARCH_M680XCS_ARCH_EVMCS_ARCH_MOS65XXCS_ARCH_WASMCS_ARCH_BPFCS_ARCH_RISCV
CS_ARCH_SHCS_ARCH_TRICORECS_ARCH_ALLCS_MODE_LITTLE_ENDIANCS_MODE_BIG_ENDIAN
CS_MODE_16
CS_MODE_32
CS_MODE_64CS_MODE_ARMCS_MODE_THUMBCS_MODE_MCLASSCS_MODE_MICROCS_MODE_MIPS3CS_MODE_MIPS32R6CS_MODE_MIPS2
CS_MODE_V8
CS_MODE_V9CS_MODE_QPXCS_MODE_SPECS_MODE_BOOKE
CS_MODE_PSCS_MODE_M68K_000CS_MODE_M68K_010CS_MODE_M68K_020CS_MODE_M68K_030CS_MODE_M68K_040CS_MODE_M68K_060CS_MODE_MIPS32CS_MODE_MIPS64CS_MODE_M680X_6301CS_MODE_M680X_6309CS_MODE_M680X_6800CS_MODE_M680X_6801CS_MODE_M680X_6805CS_MODE_M680X_6808CS_MODE_M680X_6809CS_MODE_M680X_6811CS_MODE_M680X_CPU12CS_MODE_M680X_HCS08CS_MODE_BPF_CLASSICCS_MODE_BPF_EXTENDEDCS_MODE_RISCV32CS_MODE_RISCV64CS_MODE_RISCVCCS_MODE_MOS65XX_6502CS_MODE_MOS65XX_65C02CS_MODE_MOS65XX_W65C02CS_MODE_MOS65XX_65816CS_MODE_MOS65XX_65816_LONG_MCS_MODE_MOS65XX_65816_LONG_XCS_MODE_MOS65XX_65816_LONG_MXCS_MODE_SH2CS_MODE_SH2ACS_MODE_SH3CS_MODE_SH4CS_MODE_SH4ACS_MODE_SHFPUCS_MODE_SHDSPCS_MODE_TRICORE_110CS_MODE_TRICORE_120CS_MODE_TRICORE_130CS_MODE_TRICORE_131CS_MODE_TRICORE_160CS_MODE_TRICORE_161CS_MODE_TRICORE_162CS_OPT_SYNTAXCS_OPT_SYNTAX_DEFAULTCS_OPT_SYNTAX_INTELCS_OPT_SYNTAX_ATTCS_OPT_SYNTAX_NOREGNAMECS_OPT_SYNTAX_MASMCS_OPT_SYNTAX_MOTOROLACS_OPT_SYNTAX_CS_REG_ALIASCS_OPT_DETAILCS_OPT_MODE	CS_OPT_ON
CS_OPT_OFFCS_OPT_INVALID
CS_OPT_MEMCS_OPT_SKIPDATACS_OPT_SKIPDATA_SETUPCS_OPT_MNEMONICCS_OPT_UNSIGNEDCS_OPT_NO_BRANCH_OFFSET	CS_ERR_OK
CS_ERR_MEMCS_ERR_ARCHCS_ERR_HANDLE
CS_ERR_CSHCS_ERR_MODECS_ERR_OPTIONCS_ERR_DETAILCS_ERR_VERSIONCS_ERR_MEMSETUPCS_ERR_DIETCS_ERR_SKIPDATACS_ERR_X86_ATTCS_ERR_X86_INTELCS_ERR_X86_MASMCS_SUPPORT_DIETCS_SUPPORT_X86_REDUCECS_SKIPDATA_CALLBACKCS_OP_INVALID	CS_OP_REG	CS_OP_IMMCS_OP_FP
CS_OP_PREDCS_OP_RESERVED_5CS_OP_RESERVED_6CS_OP_RESERVED_7CS_OP_RESERVED_8CS_OP_RESERVED_9CS_OP_RESERVED_10CS_OP_RESERVED_11CS_OP_RESERVED_12CS_OP_RESERVED_13CS_OP_RESERVED_14CS_OP_RESERVED_15CS_OP_SPECIAL	CS_OP_MEMCS_GRP_INVALIDCS_GRP_JUMPCS_GRP_CALL
CS_GRP_RET
CS_GRP_INTCS_GRP_IRETCS_GRP_PRIVILEGECS_GRP_BRANCH_RELATIVECS_AC_INVALID
CS_AC_READCS_AC_WRITECsError__version__      z%u.%u.%u               	   
                           i      @      l           i   i   CS_AC_CS_ARCH_CS_ERR_CS_GRP_CS_MODE_CS_OP_CS_OPT_)splitjoindirname__file__darwinzlibcapstone.dylib)win32cygwinzcapstone.dllzlibcapstone.soFc                    t        | t              }t        j                  j	                  |      rt
        j                  j                  |      S |j                  d      rjt        j                  j	                  |dj                  t              z         r5t
        j                  j                  |dj                  t              z         S y )Nz.soz.{})r   _libospathexistsctypescdllLoadLibraryendswithformatr   )r   lib_files     e/home/panchajanya/Development/work/volatility3/venv/lib/python3.12/site-packages/capstone/__init__.py	_load_libr     s    D$H	ww~~h{{&&x00 U#ww~~h6F)GGH{{..x%,,GW:X/XYY    LIBCAPSTONE_PATHlib z/usr/local/lib/z
/usr/lib64z(ERROR: fail to load the dynamic library.c           	           t        |              }t        j                  t        j                  |      t        j                  |       t        j                  t        |                    |S )zFReturns a new ctypes object which is a bitwise copy of an existing one)typer   memmovebyrefsizeof)srcdsts     r   copy_ctypesr     sC    
$s)+C
NN6<<$fll3&7tCy9QRJr   c                 >    | D cg c]  }t        |       c}S c c}w N)r   )r   ns     r   copy_ctypes_listr     s    $'(qKN(((s   )armarm64m68kmipsppcsparcsystemzx86xcore
tms320c64xm680xevmmos65xxwasmbpfriscvshtricorec                      e Zd Zdej                  fdej                  fdej                  fde	j                  fdej                  fdej                  fdej                   fdej$                  fd	ej(                  fd
ej,                  fdej0                  fdej4                  fdej8                  fdej<                  fdej@                  fde!jD                  fde#jH                  fde%jL                  ffZ'y)_cs_archr   r   r   r   r   r   r   syszr   r   r   r   r   r   r   r   r   r   N)(__name__
__module____qualname__r   CsArm64r   CsArmr   CsM68Kr   CsMipsr   CsX86r   CsPpcr   CsSparcr   CsSyszr   CsXcorer   CsTMS320C64xr   CsM680xr   CsEvmr   	CsMOS65xxr   CsWasmr   CsBPFr   CsRISCVr   CsSHr   	CsTriCore_fields_ r   r   r   r     s    	%-- 												%-- 	 	%-- 	z../	%-- 				G%%&					%-- 	rww	G%%&%Hr   r   c            	           e Zd Zdej                  dz  fdej
                  fdej                  dz  fdej
                  fdej
                  dz  fdej
                  fd	ej                  fd
effZy)
_cs_detail	regs_read   regs_read_count
regs_writeregs_write_countgroupsr   groups_count	writebackarchN)	r   r   r   r   c_uint16c_ubytec_boolr   r  r  r   r   r  r    st    	foo*+	FNN+	v+,	V^^,	6>>A%&	(	fmm$		Hr   r  c            
           e Zd Zdej                  fdej
                  fdej                  fdej                  dz  fdej                  dz  fdej                  d	z  fd
 ej                  e
      ffZy)_cs_insnidaddresssizebytes   mnemonicr   op_str   detailN)r   r   r   r   c_uintc_uint64r  r  c_charPOINTERr  r  r  r   r   r"  r"    ss    	v}}	FOO$	!	&..2%&	V]]R'(	6==3&'	>6>>*-.Hr   r"  c                   J    e Zd Zdej                  fdefdej                  ffZy)_cs_opt_skipdatar(  callback	user_dataN)r   r   r   r   c_char_pr   c_void_pr  r  r   r   r1  r1    s*    	V__%	)*	foo&Hr   r1  c                   D    e Zd Zdej                  fdej
                  ffZy)_cs_opt_mnemr#  r(  N)r   r   r   r   r,  r4  r  r  r   r   r7  r7    s!    	v}}	V__%Hr   r7  c                 H    |t        | |      _        |t        | |      _        y r   )getattrrestypeargtypes)r   fnamer:  r;  s       r   _setup_prototyper=    s     ")GC#+GC r   cs_open	cs_disasmcs_freecs_closecs_reg_namecs_insn_namecs_group_namecs_op_countcs_op_indexcs_errno	cs_optionr	   r
   cs_strerrorcs_regs_accessc                   $    e Zd Zd Zerd Zyd Zy)r   c                     || _         y r   )errno)selfrM  s     r   __init__zCsError.__init__  s	    
r   c                 @    t         j                  | j                        S r   )_csrI  rM  rN  s    r   __str__zCsError.__str__  s    ??4::..r   c                 \    t         j                  | j                        j                         S r   )rQ  rI  rM  decoderR  s    r   rS  zCsError.__str__  s    ??4::.5577r   N)r   r   r   rO  _python2rS  r  r   r   r   r     s     	/	8r   r   c                      t        j                         } t        j                         }t        j                  t        j                  |       t        j                  |            }| j
                  |j
                  |fS r   )r   c_intrQ  r	   r   value)majorminorcombineds      r   r	   r	      sO    LLNELLNE~~fll516<<3FGHKKh//r   c                  8    t         t        t         dz  t        z   fS )Nr   )r   r   r  r   r   r   r   (  s    ,):l(JKKr   c                 ,    t         j                  |       S r   )rQ  r
   )querys    r   r
   r
   ,  s    >>%  r   c                       e Zd Zd Zy)	_dummy_csc                 .    || _         || _        d| _        y NF)cshr  _detail)rN  rd  r  s      r   rO  z_dummy_cs.__init__3  s    	r   N)r   r   r   rO  r  r   r   ra  ra  2  s    r   ra  c           
   #   J  K   t               \  }}}|t        k7  s	|t        k7  rt        t              t        j                         }t        j                  | |t        j                  |            }	|	t        k7  rt        |	       t        j                  t                     }
t        j                  ||t        |      ||t        j                  |
            }|dkD  rD	 t        |      D ]  }t!        t#        ||       |
|           	 t        j%                  |
|       n*t        j'                  |      }	|	t        k7  rt        |	      y t        j)                  t        j                  |            }	|	t        k7  rt        |	      y # t        j%                  |
|       w xY wwNr   )r	   r   r   r   r~   r   c_size_trQ  r>  r   rv   r/  r"  r?  lenranger   ra  r@  rG  rA  )r  modecodeoffsetcountrZ  r[  	_combinedrd  statusall_insnresis                r   r   r   <  sL     *UE9 5n%%
//
C[[tV\\#%67Ffo'v~~h')H
--T3t9feV\\(=S
TC
Qw	'3Z @YsD18A;??@ KK#&c"Y&/! \\&,,s+,Ffo  KK#&s   CF#+F 
A>F#F  F#c           
   #     K   t               \  }}}|t        k7  s	|t        k7  rt        t              t        t              rt        t              t        j                         }t        j                  | |t        j                  |            }	|	t        k7  rt        |	       t        j                  t                     }
t        j!                  ||t#        |      ||t        j                  |
            }|dkD  r|	 t%        |      D ]U  }|
|   }|j&                  |j(                  |j*                  j-                  d      |j.                  j-                  d      f W 	 t        j1                  |
|       n*t        j3                  |      }	|	t        k7  rt        |	      y t        j5                  t        j                  |            }	|	t        k7  rt        |	      y # t        j1                  |
|       w xY wwNr   ascii)r	   r   r   r   r~   r
   r   r   r   rh  rQ  r>  r   rv   r/  r"  r?  ri  rj  r$  r%  r(  rU  r)  r@  rG  rA  )r  rk  rl  rm  rn  rZ  r[  ro  rd  rp  rq  rr  rs  insns                 r   r   r   a  s     *UE9 5n%%/"k""
//
C[[tV\\#%67Ffo'v~~h')H
--T3t9feV\\(=S
TC
Qw	'3Z l{||TYY0D0DW0Mt{{OaOabiOjkkl KK#&c"Y&/! \\&,,s+,Ffo  KK#&s    C9G9<A#G  A>G9G66G9c                 ,    | |S | j                  d      S Nrv  )rU  )namedefaults     r   _ascii_name_or_defaultr|    s    l7<G(<<r   c                       e Zd Zd Zd Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zd Zd Zd ZddZddZddZd Zd Zd Zd Zd Zd Zy)r   c           
          t        |      | _        || _        | j                  j                  r| j                  j                  dk7  rt        j                  |j                  j                               | j                  _        t        j                  t        j                  | j                  j                  d         t        j                  |j                  d         t        j                  t        |j                  d                      y y y rg  )r   _rawrQ  re  r#  r   pointerr+  _type_r   r   r   r   )rN  csall_infos      r   rO  zCsInsn.__init__  s    )	88		 1%~~hoo.D.D.FGDIINN6<<		(8(8(;<fll8??[\K]>^`f`m`mnrs{  tC  tC  DE  tF  oG  aH  I !2r   c                     d| j                   | j                  j                         | j                  | j                  fz  S )Nz<CsInsn 0x%x [%s]: %s %s>)r$  r&  hexr(  r)  rR  s    r   __repr__zCsInsn.__repr__  s0    *dllDJJNN<Ldmm]a]h]h-iiir   c                 .    | j                   j                  S r   )r  r#  rR  s    r   r#  z	CsInsn.id  s    yy||r   c                 .    | j                   j                  S r   )r  r$  rR  s    r   r$  zCsInsn.address  s    yy   r   c                 .    | j                   j                  S r   )r  r%  rR  s    r   r%  zCsInsn.size  s    yy~~r   c                 n    t        | j                  j                        d | j                  j                   S r   )	bytearrayr  r&  r%  rR  s    r   r&  zCsInsn.bytes  s$    )/499>>::r   c                     | j                   j                  rt        t              | j                  j
                  j                  d      S ry  )rQ  _dietr   r   r  r(  rU  rR  s    r   r(  zCsInsn.mnemonic  s3    88>>+&&yy!!((11r   c                     | j                   j                  rt        t              | j                  j
                  j                  d      S ry  )rQ  r  r   r   r  r)  rU  rR  s    r   r)  zCsInsn.op_str  s3    88>>+&&yy&&w//r   c                    | j                   j                  dk(  rt        t              | j                  j
                  rt        t              | j                  j                  rU| j                   j                  j                  j                  d | j                   j                  j                  j                   S t        t              rg  )r  r#  r   r   rQ  r  r   re  r+  contentsr  r  r}   rR  s    r   r  zCsInsn.regs_read  s    99<<1/**88>>+&&8899##,,667a		8H8H8Q8Q8a8abbm$$r   c                    | j                   j                  dk(  rt        t              | j                  j
                  rt        t              | j                  j                  rU| j                   j                  j                  j                  d | j                   j                  j                  j                   S t        t              rg  )r  r#  r   r   rQ  r  r   re  r+  r  r  r  r}   rR  s    r   r  zCsInsn.regs_write  s    99<<1/**88>>+&&8899##,,778c9I9I9R9R9c9cddm$$r   c                    | j                   j                  dk(  rt        t              | j                  j
                  rt        t              | j                  j                  rU| j                   j                  j                  j                  d | j                   j                  j                  j                   S t        t              rg  )r  r#  r   r   rQ  r  r   re  r+  r  r  r  r}   rR  s    r   r  zCsInsn.groups  s    99<<1/**88>>+&&8899##,,334[TYY5E5E5N5N5[5[\\m$$r   c                 T   | j                   j                  dk(  ry | j                  j                  }|t        k(  rt        j                  | j                   j                  j                  j                  j
                        \  | _	        | _
        | _        | _        | _        | _        | _        | _        | _        | _        | _        y |t(        k(  rgt+        j                  | j                   j                  j                  j                  j*                        \  | _        | _        | _        | _        | _        y |t,        k(  rt/        j                  | j                   j                  j                  j                  j.                        \  | _        | _        | _        | _        | _        | _        | _        | _        | _         | _!        | _"        | _#        | _$        | _%        | _&        | _'        | _(        | _)        | _*        | _+        | _,        | _-        | _.        | _        y |t^        k(  rUta        j                  | j                   j                  j                  j                  j`                        \  | _        | _1        y |td        k(  rMtg        j                  | j                   j                  j                  j                  jf                        | _        y |th        k(  ratk        j                  | j                   j                  j                  j                  jj                        \  | _6        | _7        | _8        | _        y |tr        k(  r[tu        j                  | j                   j                  j                  j                  jt                        \  | _        | _;        | _        y |tx        k(  rUt{        j                  | j                   j                  j                  j                  j|                        \  | _        | _        y |t~        k(  rMt        j                  | j                   j                  j                  j                  j                        | _        y |t        k(  rat        j                  | j                   j                  j                  j                  j                        \  | _C        | _D        | _E        | _        y |t        k(  rUt        j                  | j                   j                  j                  j                  j                        \  | _H        | _        y |t        k(  r[t        j                  | j                   j                  j                  j                  j                        \  | _K        | _L        | _M        y |t        k(  r[t        j                  | j                   j                  j                  j                  j                        \  | _P        | _Q        | _        y |t        k(  rMt        j                  | j                   j                  j                  j                  j                        | _        y |t        k(  rMt        j                  | j                   j                  j                  j                  j                        | _        y |t        k(  rUt        j                  | j                   j                  j                  j                  j                        \  | _X        | _        y |t        k(  r[t        j                  | j                   j                  j                  j                  j                        \  | _[        | _\        | _        y |t        k(  rUt        j                  | j                   j                  j                  j                  j                        \  | _        | _        y y rg  )_r  r#  rQ  r  r   r   get_arch_infor+  r  usermodevector_sizevector_datacps_modecps_flagccupdate_flagsr  
post_indexmem_barrieroperandsr   r   r   r   prefixopcoderex	addr_sizemodrmsibdisp	sib_index	sib_scalesib_basexop_ccsse_ccavx_ccavx_saeavx_rmeflags	fpu_flagsencodingmodrm_offsetdisp_offset	disp_size
imm_offsetimm_sizer   r   op_sizer   r   r   r   bcbh
update_cr0r   r   hintr   r   r   r   r   r   r   	conditionfunitparallelr   r   flagsr   r   poppushfeer   r   ammodifies_flagsr   r   r    r   r!   r   need_effective_addrr"   r   sh_insnsh_sizer#   r   )rN  r  s     r   __gen_detailzCsInsn.__gen_detail  sR   99<<1xx}};PSPaPabfbkbkbrbrb{b{  cA  cA  cE  cE  QFNT]D,d.>t}^b^egkgxNDOT-=t}]"##DII$4$4$=$=$B$B$H$HI YTWd'$-[  "%!2!24993C3C3L3L3Q3Q3U3U!VT[$+tx
DHdit{DKT\4;T^t0$2BDNTXTceier\!040B0B499CSCSC\C\CaCaCfCf0g-\! $ 2 24993C3C3L3L3Q3Q3V3V W[ !!$))"2"2";";"@"@"D"DE ?TWdgt]"272E2EdiiFVFVF_F_FdFdFjFj2k/TWdi\!'.'<'<TYY=M=M=V=V=[=[=`=`'a$TWdm]"#11$))2B2B2K2K2P2P2V2VWT]''ISIaIabfbkbkbrbrb{b{  cA  cA  cL  cL  JMFT^TZ]"*/*=*=dii>N>N>W>W>\>\>b>b*c'TZ[ .1.?.?		@P@P@Y@Y@^@^@b@b.c+TXty$(_$<C<Q<QRVR[R[RbRbRkRkRpRpRxRx<y9TWd)4=\!"001A1A1J1J1O1O1T1TUT][ !//		0@0@0I0I0N0N0R0RST]]"8=8K8KDIIL\L\LeLeLjLjLpLp8q5T%t}Z:<:J:J499K[K[KdKdKiKiKlKl:m7T\4<_$181F1FtyyGWGWG`G`GeGeGmGm1n.T %r   c                 Z   | j                   j                  st        t              t        j
                  } || d      j                  st        |       || d      }d|vr| j                          ||vr3| j                  j                  dk(  rt        t              t        |      ||   S )NrQ  __dict__r  r   )rQ  re  r   r}   object__getattribute__AttributeError_CsInsn__gen_detailr  r#  r   )rN  rz  attr_dicts       r   __getattr__zCsInsn.__getattr__  s    xx-((&&D% (( &&T:&U"uyy||q o.. &&T{r   c                 T    t         j                  | j                   j                        S r   rQ  rG  rd  rR  s    r   rM  zCsInsn.errno.  s    ||DHHLL))r   Nc                     | j                   j                  rt        t              t	        t         j                  | j                   j                  |      |      S r   )rQ  r  r   r   r|  rB  rd  rN  reg_idr{  s      r   reg_namezCsInsn.reg_name2  s8    88>>+&&%coodhhllF&KWUUr   c                     | j                   j                  rt        t              | j                  j
                  dk(  r|S t        t         j                  | j                   j                  | j
                        |      S rg  )	rQ  r  r   r   r  r#  r|  rC  rd  )rN  r{  s     r   	insn_namezCsInsn.insn_name:  sS    88>>+&&99<<1N%c&6&6txx||TWW&MwWWr   c                     | j                   j                  rt        t              t	        t         j                  | j                   j                  |      |      S r   )rQ  r  r   r   r|  rD  rd  rN  group_idr{  s      r   
group_namezCsInsn.group_nameE  s;    88>>+&&%c&7&7h&OQXYYr   c                     | j                   j                  dk(  rt        t              | j                  j
                  rt        t              || j                  v S rg  )r  r#  r   r   rQ  r  r   r  )rN  r  s     r   groupzCsInsn.groupN  sB    99<<1/**88>>+&&4;;&&r   c                     | j                   j                  dk(  rt        t              | j                  j
                  rt        t              || j                  v S rg  )r  r#  r   r   rQ  r  r   r  rN  r  s     r   reg_readzCsInsn.reg_readY  sB    99<<1/**88>>+&&''r   c                     | j                   j                  dk(  rt        t              | j                  j
                  rt        t              || j                  v S rg  )r  r#  r   r   rQ  r  r   r  r  s     r   	reg_writezCsInsn.reg_writed  sB    99<<1/**88>>+&&((r   c                     | j                   j                  dk(  rt        t              d}| j                  D ]  }|j
                  |k(  s|dz  } |S Nr   r   r  r#  r   r   r  r   )rN  op_typecops       r   op_countzCsInsn.op_counto  sQ    99<<1/**-- 	Bww'!Q	 r   c                     | j                   j                  dk(  rt        t              d}| j                  D ]  }|j
                  |k(  r|dz  }||k(  s|c S  y r  r  )rN  r  positionr  r  s        r   op_findzCsInsn.op_findz  sV    99<<1/**-- 	Bww'!QH}			r   c           
         | j                   j                  dk(  rt        t              t	        j
                  dz         }t	        j                         }t	        j
                  dz         }t	        j                         }t        j                  | j                  j                  | j                   t	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |            }|t        k7  rt        |      |j                  dkD  r|d |j                   }ng }|j                  dkD  r|d |j                   }||fS g }||fS )Nr   r   )r  r#  r   r   r   r  c_uint8rQ  rJ  rd  r   rv   rY  )rN  r  r  r  r  rp  s         r   regs_accesszCsInsn.regs_access  sN   99<<1/**__r),	 ..*oo*-
!>>+##DHHLL$))V\\)=TV\VbVbcrVsu{  vB  vB  CM  vN  PV  P\  P\  ]m  Pn  oY&/!  1$!"8?#8#89II!!A%#$;%5%;%;<J :&& J:&&r   r   )r   r   r   rO  r  propertyr#  r$  r%  r&  r(  r)  r  r  r  r  r  rM  r  r  r  r  r  r  r  r  r  r  r   r   r   r     s   Ij   ! !   ; ; 2 2 0 0 % % % % % %1oh"*VXZ'()	'r   r   c                      e Zd Zd Zd Zed        Zed        Zed        Zej                  d        Zed        Z
e
j                  d        Z
ed	        Zej                  d
        Zed        Zej                  d        Zed        Zej                  d        Zd Zd Zed        Zej                  d        Zed        Zej                  d        Zed        Zej                  d        Zd ZddZddZddZddZddZy) r   c                    t               \  }}}|t        k7  s	|t        k7  rd | _        t	        t
              ||c| _        | _        t        j                         | _        t        j                  ||t        j                  | j                              }|t        k7  rd | _        t	        |      	 ddlm} |j!                  |       j"                  | _        |t$        k(  rt&        | _        nd | _        d| _        d| _        t/        t0              | _        t/        t4              | _        d| _        d| _        t=               | _        d| _         y #  Y {xY w)Nr   	ccapstoneFz.byte)NN)!r	   r   r   rd  r   r~   r  _moder   rh  rQ  r>  r   rv   r   r  r   disasmr   re   _syntaxre  _imm_unsignedr
   r   r  r   
_x86reduce_skipdata_mnem_skipdata_cbr1  _skipdata_opt	_skipdata)rN  r  rk  rZ  r[  ro  rp  r  s           r   rO  zCs.__init__  s   $.L!yL E\$9DH.)) $d	4:??$T4dhh)?@YDH&/!	##,,t,33DK ;.DLDL"0
$%:; &( ./)	s   /&E Ec                     | j                   rH	 t        j                  t        j                  | j                               }|t
        k7  rt        |      y y #  Y y xY wr   )rd  rQ  rA  r   r   rv   r   )rN  rp  s     r   __del__z
Cs.__del__  sO    88fll488&<=Y&!&/) ' 
s   AA Ac                     | j                   S r   )r  rR  s    r   dietzCs.diet      zzr   c                     | j                   S r   )r  rR  s    r   
x86_reducezCs.x86_reduce  s    r   c                     | j                   S r   )r  rR  s    r   syntaxz	Cs.syntax      ||r   c                     t         j                  | j                  t        |      }|t        k7  rt        |      || _        y r   )rQ  rH  rd  rc   rv   r   r  )rN  stylerp  s      r   r  z	Cs.syntax  s1    txx>Y&/!r   c                     | j                   S r   )r  rR  s    r   skipdatazCs.skipdata  s    ~~r   c                     |dk(  r*t         j                  | j                  t        t              }n)t         j                  | j                  t        t
              }|t        k7  rt        |      || _        y rc  )	rQ  rH  rd  rq   rn   rm   rv   r   r  rN  optrp  s      r   r  zCs.skipdata   sP    %<]]488_jIF]]488_iHFY&/! r   c                 6    | j                   f| j                  z   S r   )r  r  rR  s    r   skipdata_setupzCs.skipdata_setup  s    ##%(9(999r   c           	          |\  }}}|j                         | j                  _        t        |xs d      | j                  _        t        j                  |t
        j                        | j                  _        t        j                  | j                  t        t        j                  t        j                  | j                        t
        j                              }|t        k7  rt        |      || _        ||f| _        y rg  )encoder  r(  r   r2  r   castr5  r3  rQ  rH  rd  rr   r   rv   r   r  r  )rN  r  _mnem_cb_udrp  s         r   r  zCs.skipdata_setup  s    sC&+lln#&:38!&D#'-{{3'H$txx)>FLLY]YkYkLlntn}n}@~Y&/!# #Jr   c                     | j                   S r   )r  rR  s    r   skipdata_mnemzCs.skipdata_mnem   s    """r   c                 .    |f| j                   z   | _        y r   )r  r  )rN  mnems     r   r  zCs.skipdata_mnem%  s    #g(9(99r   c                     | j                   S r   )r  rR  s    r   skipdata_callbackzCs.skipdata_callback*  s       r   c                 ^    t        |t              s|d f}|\  }}| j                  ||f| _        y r   )
isinstancetupler  r  )rN  valfuncdatas       r   r  zCs.skipdata_callback/  s3    #u%+C
d#22D$?r   c           	      @   t               }||_        |r|j                         |_        n||_        t        j                  | j                  t        t        j                  t        j                  |      t        j                              }|t        k7  rt        |      y r   )r7  r#  r  r(  rQ  rH  rd  rs   r   r  r   r5  rv   r   )rN  r#  r  	_mnem_optrp  s        r   mnemonic_setupzCs.mnemonic_setup8  sr     N		!%I!%Itxx&++fllS\F]_e_n_n:opY&/! r   c                     t        |      S r   )r
   )rN  r_  s     r   supportz
Cs.supportF  s    %  r   c                     | j                   S r   )re  rR  s    r   r+  z	Cs.detailK  r  r   c                     |dk(  r*t         j                  | j                  t        t              }n)t         j                  | j                  t        t
              }|t        k7  rt        |      || _        y rc  )	rQ  rH  rd  rk   rn   rm   rv   r   re  r  s      r   r+  z	Cs.detailQ  sN    %<]]488]JGF]]488]IFFY&/!r   c                     | j                   S r   )r  rR  s    r   imm_unsignedzCs.imm_unsigned^  s    !!!r   c                     |dk(  r*t         j                  | j                  t        t              }n)t         j                  | j                  t        t
              }|t        k7  rt        |      || _        y rc  )	rQ  rH  rd  rt   rn   rm   rv   r   r  r  s      r   r,  zCs.imm_unsignedd  sO    %<]]488_jIF]]488_iHFY&/! r   c                     | j                   S r   )r  rR  s    r   rk  zCs.modeq  r  r   c                     t         j                  | j                  t        |      }|t        k7  rt        |      || _        y r   )rQ  rH  rd  rl   rv   r   r  r  s      r   rk  zCs.modew  s1    txxc:Y&/!
r   c                 @    t         j                  | j                        S r   r  rR  s    r   rM  zCs.errno  s    ||DHH%%r   Nc                     | j                   rt        t              t        t        j                  | j                  |      |      S r   )r  r   r   r|  rQ  rB  rd  r  s      r   r  zCs.reg_name  s0    ::+&&%coodhh&GQQr   c                     | j                   rt        t              t        t        j                  | j                  |      |      S r   )r  r   r   r|  rQ  rC  rd  )rN  insn_idr{  s      r   r  zCs.insn_name  s2    ::+&&%c&6&6txx&I7SSr   c                     | j                   rt        t              t        t        j                  | j                  |      |      S r   )r  r   r   r|  rQ  rD  rd  r  s      r   r  zCs.group_name  s2    ::+&&%c&7&7(&KWUUr   c           
   #     K    t        j                  t                     }	 t        |      }t	        |      }|j
                  s3t        j                  t         j                  j                  |            }n t        |t              s|j                         }t        j                  | j                  ||||t        j                  |            }|dkD  r:	 t        |      D ]  }t!        | ||           	 t        j#                  ||       y t        j%                  | j                        }	|	t&        k7  rt)        |	      y # t        j#                  ||       w xY wwrg  )r   r/  r"  ri  
memoryviewreadonlyr   r.  from_bufferr  r&  tobytesrQ  r?  rd  rj  r   r@  rG  rv   r   )
rN  rl  rm  rn  rq  r%  viewrr  rs  rp  s
             r   r  z	Cs.disasm  s	    +6>>(+-	
 4y$}}<< 9 9$ ?@DD%(<<>DmmDHHdD&%hAWX7+s 4A x{334 Hc*\\$((+F"fo% Hc*s   CE!E 6AEEEc           
   #   t  K   | j                   rt        t               t        j                  t
                     }t        |      }t        |      }|j                  s3t        j                  t        j                  j                  |            }n t        |t              s|j                         }t        j!                  | j"                  ||||t        j                  |            }|dkD  r|	 t%        |      D ]U  }||   }	|	j&                  |	j(                  |	j*                  j-                  d      |	j.                  j-                  d      f W 	 t        j1                  ||       y t        j3                  | j"                        }
|
t4        k7  rt        |
      y # t        j1                  ||       w xY wwru  )r  r   r   r   r/  r"  ri  r6  r7  r   r.  r8  r  r&  r9  rQ  r?  rd  rj  r$  r%  r(  rU  r)  r@  rG  rv   )rN  rl  rm  rn  rq  r%  r:  rr  rs  rw  rp  s              r   disasm_litezCs.disasm_lite  sG    ::+&&+6>>(+-4y$}}<< 9 9$ ?@DD%(<<>DmmDHHdD&%hAWX7+s pA#A;D<<DMM4H4H4QSWS^S^SeSefmSnoop Hc*\\$((+F"fo% Hc*s    C+F8.A#F AF8F55F8r   r   )r   r   r   rO  r   r  r  r  r  setterr  r  r  r  r&  r(  r+  r,  rk  rM  r  r  r  r  r<  r  r   r   r   r     s   'X  
  
  
 ]]   
 __	 	 : : 
' 
' # # : : ! ! @ @	"!
  
 ]]  " "
 ! !  
 
[[ &RTV>r   r   c                  \   	 ddl m}  | j                         S #  Y nxY wt        t              rd}nd}i dt
        dt        dt        dt        d	t        d
t        dt        dt        dt        dt        dt        dt         dt"        dt$        dt&        dt(        dt*        }d}|j-                         }t/        |      D ]  }t        ||         s|d|z  z  } t        t0              r|dz  }t        t2              r|dz  }t5               \  }}}d||||t6        t8        fz  S )Nr   r  r  standardr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z-%sz-x86_reducezpython-%s%s-c%u.%u-b%u.%u)r   r  r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r#   r   r"   keyssortedr   r   r	   r   r   )	r  r  archs	all_archsrB  krZ  r[  ro  s	            r   r   r     s     /"{#]4:L#[29= 	 &} 7CDV 		 !&{	 5>	
 	{
 $]
 5> 	 #JE I::<DD\ #eAh"I# +V	+,"I *UE9&$	5%Wc)ddds    r=  )r   sysplatformr   version_inforV  xrangerj  __all__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   CS_ARCH_MAXr$   r%   r*   r'   r(   r)   r+   r,   r1   r-   r.   r/   r0   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r&   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   ro   rc   rk   rl   rp   rq   rr   rs   rt   ru   rn   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   re   rf   rg   rh   ri   rj   rv   rw   rx   ry   rz   r{   r|   r}   r   r~   r   r   r   r   r   r   r   localsitems
startswithCS_ACCS_ARCHCS_ERRCS_GRPCS_MODECS_OPCS_OPTr   ctypes.utilos.pathr   r   r   distutils.sysconfig	distutilspkg_resourcesinspecthasattrmodulesr   getfilecurrentframer   r   _foundr   rQ  getenvresource_filename	sysconfigget_python_lib
_path_list_pathImportErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Unionr   	Structurer  r"  	CFUNCTYPErh  r/  r.  r5  r   r1  r7  r=  rX  r,  r-  r4  r   r  r  	Exceptionr   r	   r   r
   r  ra  r   r   r|  r   r   r   )rF  vs   00r   <module>rn     se
    A"Ern      +-=?OPP  
  



 

                         &  &  <?[ [         
   
	 		
           	 

   
        #  	

  /#A  "8>>+FCAaq||H/EAaCF!8>>+HCAaq||J/GAaCH!8>>+GCAaq||I/FAaCG!8>>+GCAaq||I/FAaCG!8>>+HCAaq||J/GAaCH!8>>+FCAaq||H/EAaCF!8>>+GCAaq||I/FAaCG  ( (   s{{8$j1w3w3356H<<8D\\((DD		  bii*D1-m--h>5?1%u-!!002#&<<8#;O
  BE}h
E
C
B
 @
AA
) F  F  F  F  Fv|| ,
!! 
	v 	 (v''9VX^XgXgioixix  {A  {J  {J  K v'' 6## , iv}}fmm^V^^\b\k\kMl m k6??FOO^V^^TZTaTaEbdjdsds.&..9Q*RT iv H j&,,v0O P mV__foov}} U nfoov V ov W mV\\6??NFNNS[D\^d^k^k l mV\\6??NFNNS[D\^d^k^kmsmzmz { j&,, @ k6<<&,,PVP_P_ ` lFLL.&..2NP^PVP^P^_e_k_kPl m lFMM6<< @ mV__fll C &foo~v~~V^G_aoagaoaopvpp  AC  qC  bD  FT  FL  FT  FT  U[  Uc  Uc  Fd  ft  fl  ft  ft  u{  uD  uD  EG  uG  fH  JX  JP  JX  JX  Y_  Yg  Yg  Jh  i
8i 
80L! J"H=
T'V T'ps sn	$eQ GHGGHFGsT   d,d, d2d2=d8d8:d>d>7ee4e
e
1ee