+
    i                   $   R t ^ RIHt ^ RIHt ]'       g   R]9   d   ^RIH	t	 M^ RI	t	 ^ RI
tR tR tR tR	 t ! R
 R]4      t^ RIt]	P(                  t^ RIHtHtHt ^ RIt^ RIt ! R R]4      t]	P:                  ! ]4       R R ltR R ltR R lt R R lt!R R lt"R R lt#R R lt$R R lt%R R  lt&R! R" lt'R# R$ lt(R% R& lt)R' R( lt*R) R* lt+R+ R, lt,R- R. lt-R/ R0 lt.R1 R2 lt/R3 R4 lt0R5 R6 lt1R7 R8 lt2R9 R: lt3ERR; R< llt4]	Pj                  t5 ]	Pl                  t6 ]	Pn                  t7 ]	Pp                  t8 ]	Pr                  t9 R= R> lt:R? R@ lt;RA RB lt<]	Pz                  t= ]	P|                  t> ]	P~                  t? RC RD lt@RE RF ltARG RH ltBRI RJ ltCRK RL ltD]	P                  tE ]	P                  tF RM RN ltGRO RP ltHRQ RR ltIRS RT ltJRU RV ltKRW RX ltLRY RZ ltMR[ R\ ltNR] R^ ltOR_ R` ltPRa Rb ltQRc Rd ltRRe Rf ltS ! Rg Rh]4      tT]	P                  ! ]T4       Ri Rj ltVRk Rl ltWRm Rn ltXRo Rp ltYRq Rr ltZRs Rt lt[Ru Rv lt\Rw Rx lt]Ry Rz lt^R{ R| lt_R} R~ lt`R R ltaR R ltbR R ltcR R ltdR R lteR R ltfR R ltgR R lthR R ltiR R ltjR R ltkR R ltl]	P                  tm ]	P                  tn R R ltoR R ltp]	P                  tq ]	P                  tr ]	P                  ts ]	P                  tt ]	P                  tu R R ltvR R ltwR R ltxR R ltyR R ltzR R lt{R R lt|R R lt}R R lt~R R ltR R ltERR R llt]	EP                  t ]	EP                  t ]	EP                  t ]	EP
                  t ]	EP                  t ]	EP                  t ]	EP                  t R R ltR R ltR R lt]	EP                  t ]	EP                  t ]	EP                  t ]	EP                  t ]	EP                   t ]	EP"                  t ]	EP$                  t ]	EP&                  t ]	EP(                  t ]	EP*                  t R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R lt]	EP>                  t R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R lt]	EP^                  t ]	EP`                  t ]	EPb                  t ]	EPd                  t ]	EPf                  t ]	EPh                  t ]	EPj                  t ]	EPl                  t ]	EPn                  t ]	EPp                  t ]	EPr                  t ]	EPt                  t ]	EPv                  t ]	EPx                  t ]	EPz                  t R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR ER  ltER ER ltER ER ltER ER ltER ER ltER	 ER
 ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER ltER ER lt]	EP                  t ]	EP                  t ]	EP                  t ER ER ltER ER ltER ER  ltER! ER" ltER# ER$ ltER% ER& ltER' ER( ltER) ER* ltER+ ER, ltER- ER. ltER/ ER0 ltER1 ER2 ltER3 ER4 ltER5 ER6 ltER7 ER8 ltERER9 ER: lltER; ER< ltER= ER> ltER? ER@ ltERA ERB ltERC ERD ltERE ERF ltERG ERH ltERI ERJ ltERK ERL ltERM ERN ltERO ERP ltERQ ERR ltERS ERT ltERU ERV ltERW ERX ltERY ERZ ltER[ ER\ ltER] ER^ ltER_ ER` ltERa ERb ltERc ERd ltERe ERf ltERg ERh lEt ERi ERj lEtERk ERl lEtERm ERn lEtERo ERp lEtERq ERr lEtERs ERt lEtERu ERv lEtERw ERx lEt]	EP                  Et	 ]	EP                  Et
 ]	EP                  Et ]	EP                  Et ]	EP                  Et ]	EP                  Et ]	EP                  Et ]	EP                   Et ]	EP"                  Et ]	EP$                  Et ]	EP&                  Et ]	EP(                  Et ]	EP*                  Et ]	EP,                  Et ]	EP.                  Et ]	EP0                  Et ERy ERz lEtER{ ER| lEtER} ER~ lEtER ER lEtER ER lEtER ER lEtER ER lEtER ER lEt ER ER lEt!ER ER lEt"ER ER lEt#ER ER lEt$ER ER lEt%ER ER lEt&ER ER lEt'ER ER lEt(ER ER lEt)ER ER lEt*ER ER lEt+ER ER lEt,ER ER lEt-ER ER lEt.ER ER lEt/ER ER lEt0ER ER lEt1ER ER lEt2ER ER lEt3ER ER lEt4ER ER lEt5ER ER lEt6ER ER lEt7ER ER lEt8ER ER lEt9ER ER lEt:ER ER lEt;ER ER lEt<ER ER lEt=ER ER lEt>ER ER lEt?ER ER lEt@ER ER lEtAER ER lEtBER ER lEtCER ER lEtDER ER lEtEER ER lEtFER ER lEtGER ER lEtHER ER lEtIERER ER llEtJERER ER llEtKERER ER llEtLERER ER llEtMERER ER llEtNERER ER llEtOERER ER llEtPERER ER llEtQERER ER llEtRERER ER llEtSERER ER llEtTERER ER llEtUERER ER llEtVER ER lEtWER ER lEtXER ER lEtYER ER lEtZER ER lEt[ER ER  lEt\]	EP                  Et] ]	EP                  Et^ ]	EP                  Et_ ]	EP                  Et` ]	EP                  Eta ]	EP                  Etb ERER ER llEtc]	EP                  Etd ]	EP                  Ete ]	EP                  Etf ER ER lEtg]	EP                  Eth ]	EP                  Eti ]	EP                  Etj ]	EP                  Etk ]	EP                  Etl ]	EP                  Etm ]	EP                  Etn ]	EP                  Eto ER ER lEtpERER ER llEtqERER	 ER
 llEtrERER ER llEtsERER ER llEttER ER lEtuER ER lEtv]	EP                  Etw ]	EP                  Etx ]	EP                  Ety ]	EP                  Etz ER ER lEt{ER ER lEt|ER ER lEt} ! ER ER]4      Et~]	EP                  ! E]~4       ]	EP                   Et  ! ER ER]4      Et]	EP                  ! E]4       ER ER lEtER ER  lEtER! ER" lEtER# ER$ lEtER% ER& lEtER' ER( lEtER) ER* lEtER+ ER, lEtER- ER. lEtER/ ER0 lEtER1 ER2 lEtER3 ER4 lEtER5 ER6 lEtER7 ER8 lEtER9 ER: lEt ! ER; ER<]4      Et]	EP&                  ! E]4       ]	EP(                  Et ]	EP*                  Et ERER= ER> llEtER? Et]	EP0                  Et ]	EP2                  Et ]	EP4                  Et ]	EP6                  Et ]	EP8                  Et ]	EP:                  Et ]	EP<                  Et ]	EP>                  Et ER@ ERA lEtERB ERC lEtERD ERE lEt ! ERF ERG]EPF                  4      Et]	EPJ                  ! E]4       ERH ERI lEtERJ ERK lEtERL ERM lEtERN ERO lEtERP ERQ lEtERR ERS lEtERT ERU lEtERV ERW lEtERX ERY lEtERZ ER[ lEtER\ ER] lEtER^ ER_ lEtER` ERa lEtERb ERc lEtERd ERe lEtERf ERg lEt]	EPl                  Et]	EPn                  Et]	EPp                  Et]	EPr                  Et]	EPt                  Et]	EPv                  Et]	EPx                  Et]	EPz                  Et]	EP|                  Et]	EP~                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  Et]	EP                  EtERh ERi lEt]m3ERj ERk llEt]m3ERl ERm llEtERERn ERo llEtERERp ERq llEtERr ERs lEtERt EtERu EtERv EtERw EtERx EtERy ERz lEt^Et ER{ EtER| EtER} Et^ RIt^ RIt^ REIEt^ RItR]EP                  RE]E],          ^E]3ER~ ER llEt]EP                  RE]E]E],          3ER ER llEtR#   ] d	    ^ RIt EL>i ; i(  a  Contains functions that deal with individual byte characteristics.

Each byte of the disassembled program is represented by a 32-bit value. We will
call this value 'flags'. The structure of the flags is here.

You are not allowed to inspect individual bits of flags and modify them directly.
Use special functions to inspect and/or modify flags.

Flags are kept in a virtual array file (*.id1). Addresses (ea) are all 32-bit
(or 64-bit) quantities.

.. tip::
   The `IDA Domain API <https://ida-domain.docs.hex-rays.com/>`_ simplifies
   common tasks and provides better type hints, while remaining fully compatible
   with IDAPython for advanced use cases.

   For byte-level operations, see :mod:`ida_domain.bytes`.)annotations)version_info.)
_ida_bytesNc                     R V P                   P                  4       ,           pRV P                  P
                  : RV P                  P                  : RV: R2#   \        P                   d    Rp LPi ; i)z	proxy of  <r   z; z >)this__repr____builtin__	Exception	__class__
__module____name__)selfstrthiss   & AC:\Users\user\Downloads\ida93sp2\portable_win\python\ida_bytes.py
_swig_reprr      sg    		 2 2 44 "^^669     s   !A A43A4c                   a  V 3R  lpV# )c                  < VR 8X  d   S! WV4       R# VR8X  d   V P                   P                  V4       R# \        W4      '       d5   \        \	        \        V 4      V4      \        4      '       d   S! WV4       R# \        RV ,          4      h)r	   thisownz(You cannot add instance attributes to %sN)r	   ownhasattr
isinstancegetattrtypepropertyAttributeError)r   namevaluesets   &&&r   set_instance_attrE_swig_setattr_nondynamic_instance_variable.<locals>.set_instance_attr)   su    6>E"YIIMM% T  ZT
D0I& &E" !K"       )r    r!   s   f r   *_swig_setattr_nondynamic_instance_variabler%   '   s    
 r#   c                   a  V 3R  lpV# )c                   < \        W4      '       d+   \        \        W4      \        4      '       g   S! WV4       R# \	        R V ,          4      h)z%You cannot add class attributes to %sN)r   r   r   r   r   )clsr   r   r    s   &&&r   set_class_attr?_swig_setattr_nondynamic_class_variable.<locals>.set_class_attr9   s:    3j1CX&N&N5! !H3!NOOr#   r$   )r    r)   s   f r   '_swig_setattr_nondynamic_class_variabler+   7   s    P
 r#   c                   a  V 3R lpV# )zlClass decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclassc                p   < S! V P                   V P                  V P                  P                  4       4      # N)r   	__bases____dict__copy)r(   	metaclasss   &r   wrapper$_swig_add_metaclass.<locals>.wrapperD   s'    s}}cll6G6G6IJJr#   r$   )r2   r3   s   f r   _swig_add_metaclassr5   A   s    KNr#   c                  >    ] tR t^ItRt]! ]P                  4      tRtR# )_SwigNonDynamicMetazKMeta class to enforce nondynamic attributes (no new attributes) for a classr$   N)	r   r   __qualname____firstlineno____doc__r+   r   __setattr____static_attributes__r$   r#   r   r7   r7   I   s    U9$:J:JKKr#   r7   )TupleListUnionc                  (   ] tR t^Ut]! R R RR7      t]tR t]	P                  tR R ltR R	 ltR
 R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ lt R0 R1 lt!R2 R3 lt"R4 R5 lt#R6 R7 lt$R8 R9 lt%R: R; lt&R< R= lt'R> R? lt(R@ RA lt)]*PV                  t,]*PZ                  t.]*P^                  t0RB RC lt1]2RHRD RE ll4       t3RFt4RG# )Icompiled_binpat_vec_tc                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>compiled_binpat_vec_t.<lambda>V       r#   c                	8    V P                   P                  V4      # r.   rC   rE   vs   &&r   rF   rG   V       AFFJJqMr#   The membership flagdocc                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   compiled_binpat_vec_t_swiginitnew_compiled_binpat_vec_tr   argss   &*r   __init__compiled_binpat_vec_t.__init__Z   s'    11$
%%9&'+9- 	.r#   c                   V ^8  d   QhRR/# )   returnz'compiled_binpat_t &'r$   )formats   "r   __annotate__"compiled_binpat_vec_t.__annotate___   s     G G!6 Gr#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_push_backrS   s   &*r   	push_backcompiled_binpat_vec_t.push_back_   s    99$FFFr#   c                   V ^8  d   QhRR/# rX   rY   Noner$   )rZ   s   "r   r[   r\   b        ? ? ?r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_pop_backr   s   &r   pop_backcompiled_binpat_vec_t.pop_backb       88>>r#   c                   V ^8  d   QhRR/# rX   rY   intr$   )rZ   s   "r   r[   r\   e   s     ; ;S ;r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_sizerg   s   &r   sizecompiled_binpat_vec_t.sizee   s    44T::r#   c                   V ^8  d   QhRR/# rX   rY   boolr$   )rZ   s   "r   r[   r\   h        < <d <r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_emptyrg   s   &r   emptycompiled_binpat_vec_t.emptyh       55d;;r#   c                    V ^8  d   QhRRRR/# )rX   _idxrm   rY   'compiled_binpat_t const &'r$   )rZ   s   "r   r[   r\   k   s     ? ?s ?9 ?r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_at)r   r|   s   &&r   atcompiled_binpat_vec_t.atk   s    224>>r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   n   s     = =t =r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_qclearrg   s   &r   qclearcompiled_binpat_vec_t.qclearn   s    66t<<r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   q   ru   r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_clearrg   s   &r   clearcompiled_binpat_vec_t.clearq   rz   r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   t   s     D Dd Dr#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_resizerS   s   &*r   resizecompiled_binpat_vec_t.resizet   s    66tCdCCr#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   w   s     B BD Br#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_growrS   s   &*r   growcompiled_binpat_vec_t.groww       44TADAAr#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r\   z   s     ? ? ?r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_capacityrg   s   &r   capacitycompiled_binpat_vec_t.capacityz   rj   r#   c                    V ^8  d   QhRRRR/# )rX   cntrm   rY   rc   r$   )rZ   s   "r   r[   r\   }   s     C C3 C$ Cr#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_reserve)r   r   s   &&r   reservecompiled_binpat_vec_t.reserve}   s    77BBr#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\      rd   r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_truncaterg   s   &r   truncatecompiled_binpat_vec_t.truncate   rj   r#   c                    V ^8  d   QhRRRR/# )rX   r'compiled_binpat_vec_t'rY   rc   r$   )rZ   s   "r   r[   r\      s     > >- > >r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_swapr   r   s   &&r   swapcompiled_binpat_vec_t.swap       44T==r#   c                   V ^8  d   QhRR/# )rX   rY   z'compiled_binpat_t *'r$   )rZ   s   "r   r[   r\      s     > >- >r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t_extractrg   s   &r   extractcompiled_binpat_vec_t.extract       77==r#   c               $    V ^8  d   QhRRRRRR/# )rX   s'compiled_binpat_t'lenrm   rY   rc   r$   )rZ   s   "r   r[   r\      s'     E E+ E# E Er#   c                	0    \         P                  ! WV4      # r.   )r   compiled_binpat_vec_t_inject)r   r   r   s   &&&r   injectcompiled_binpat_vec_t.inject   s    66tDDr#   c                    V ^8  d   QhRRRR/# rX   r   r   rY   rt   r$   )rZ   s   "r   r[   r\           @ @/ @4 @r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t___eq__r   s   &&r   __eq__compiled_binpat_vec_t.__eq__       66t??r#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      r   r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t___ne__r   s   &&r   __ne__compiled_binpat_vec_t.__ne__   r   r#   c                   V ^8  d   QhRR/# rX   rY   z.'qvector< compiled_binpat_t >::const_iterator'r$   )rZ   s   "r   r[   r\      s     C CK Cr#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_beginrS   s   &*r   begincompiled_binpat_vec_t.begin       55dBTBBr#   c                   V ^8  d   QhRR/# r   r$   )rZ   s   "r   r[   r\      s     A AI Ar#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_endrS   s   &*r   endcompiled_binpat_vec_t.end   s    33D@4@@r#   c               $    V ^8  d   QhRRRRRR/# )rX   itr   rE   rY   ('qvector< compiled_binpat_t >::iterator'r$   )rZ   s   "r   r[   r\      s)     D D, D1D D4Dr#   c                	0    \         P                  ! WV4      # r.   )r   compiled_binpat_vec_t_insert)r   r   rE   s   &&&r   insertcompiled_binpat_vec_t.insert   s    66tCCr#   c                   V ^8  d   QhRR/# )rX   rY   r   r$   )rZ   s   "r   r[   r\      s     C CE Cr#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_eraserS   s   &*r   erasecompiled_binpat_vec_t.erase   r   r#   c                   V ^8  d   QhRR/# r   r$   )rZ   s   "r   r[   r\      s     B BJ Br#   c                	2    \         P                  ! V .VO5!  # r.   )r   compiled_binpat_vec_t_findrS   s   &*r   findcompiled_binpat_vec_t.find   r   r#   c                    V ^8  d   QhRRRR/# rX   rE   r   rY   rt   r$   )rZ   s   "r   r[   r\      s     = =( =D =r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_hasr   rE   s   &&r   hascompiled_binpat_vec_t.has   s    33D<<r#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      s     D D/ D4 Dr#   c                	.    \         P                  ! W4      # r.   )r    compiled_binpat_vec_t_add_uniquer   s   &&r   
add_unique compiled_binpat_vec_t.add_unique   s    ::4CCr#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      s     > >) >T >r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t__delr   s   &&r   _delcompiled_binpat_vec_t._del   r   r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r\      s     > > >r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_vec_t___len__rg   s   &r   __len__compiled_binpat_vec_t.__len__   r   r#   c                    V ^8  d   QhRRRR/# )rX   irm   rY   r}   r$   )rZ   s   "r   r[   r\      s     E ES E$? Er#   c                	.    \         P                  ! W4      # r.   )r   !compiled_binpat_vec_t___getitem__)r   r   s   &&r   __getitem__!compiled_binpat_vec_t.__getitem__   s    ;;DDDr#   c               $    V ^8  d   QhRRRRRR/# )rX   r   rm   rK   r   rY   rc   r$   )rZ   s   "r   r[   r\      s'     H HS H%8 HD Hr#   c                	0    \         P                  ! WV4      # r.   )r   !compiled_binpat_vec_t___setitem__)r   r   rK   s   &&&r   __setitem__!compiled_binpat_vec_t.__setitem__   s    ;;DQGGr#   c                    V ^8  d   QhRRRR/# )rX   rE   r   rY   rc   r$   )rZ   s   "r   r[   r\      s     @ @+ @t @r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_appendr   s   &&r   appendcompiled_binpat_vec_t.append   r   r#   c                    V ^8  d   QhRRRR/# )rX   rE   r   rY   rc   r$   )rZ   s   "r   r[   r\      r   r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_vec_t_extendr   s   &&r   extendcompiled_binpat_vec_t.extend   r   r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rX   eaida_idaapi.ea_ttextstrradixrm   strlits_encodingrY   rt   r$   )rZ   s   "r   r[   r\      s1     % % % %C %%!%%r#   c                	2    \         P                  ! WVW44      # r.   )r   compiled_binpat_vec_t__parse)r   r  r  r  r  s   &&&&&r   _parsecompiled_binpat_vec_t._parse   s    66t% 	%r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rX   r  r  r  r  r  rm   r  rY   rA   r$   )rZ   s   "r   r[   r\      s1     & &/ & &S &&$9&r#   c                >    \        4       pVP                  WW#4       V# )a%  Convert user-specified binary string to internal representation.

The 'in' parameter contains space-separated tokens:

    *numbers (numeric base is determined by 'radix')
        - if value of number fits a byte, it is considered as a byte
        - if value of number fits a word, it is considered as 2 bytes
        - if value of number fits a dword,it is considered as 4 bytes
    * "..." string constants
    * 'x'  single-character constants
    * ?    variable bytes

Note that string constants are surrounded with double quotes.

Here are a few examples (assuming base 16):

    * CD 21          - bytes 0xCD, 0x21
    * 21CD           - bytes 0xCD, 0x21 (little endian ) or 0x21, 0xCD (big-endian)
    * "Hello", 0     - the null terminated string "Hello"
    * L"Hello"       - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0
    * B8 ? ? ? ? 90  - byte 0xB8, 4 bytes with any value, byte 0x90

This method will throw an exception if the pattern could not be parsed

:param ea: linear address to convert for (the conversion depends on the
           address, because the number of bits in a byte depend on the
           segment type)
:param text: input text string
:param radix: numeric base of numbers (8,10,16). If `-1` (the default), then the default radix will be used (see get_default_radix)
:param strlits_encoding: the target encoding into which the string
                     literals present in 'in', should be encoded.
                     Can be any from [1, get_encoding_qty()), or
                     the special values PBSENC_*
:returns: a set of patterns)rA   r  )r  r  r  r  insts   &&&& r   parsecompiled_binpat_vec_t.parse   s     J %&Be6r#   r$   N)r#  )5r   r   r8   r9   r   r   r   r
   rU   r   delete_compiled_binpat_vec_t__swig_destroy__r_   rh   rp   rx   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  
ida_idaapi_qvector_frontfront_qvector_backback_bounded_getitem_iterator__iter__r  staticmethodr!  r<   r$   r#   r   rA   rA   U   s   -/I!#GH. ">>G?;<?=<DB?C?>>E@@CADCB=D>>EH@@%%E##D33H%
 & &r#   rA   c               (    V ^8  d   QhRRRRRRRR/# rX   start_ear  end_easttz'storage_type_t'rY   	'error_t'r$   )rZ   s   "r   r[   r[      s*     : :? :O ::!:r#   c                0    \         P                  ! WV4      # )aD  Allocate flags for address range. This function does not change the storage type of existing ranges. Exit with an error message if not enough disk space. 
        
:param start_ea: should be lower than end_ea.
:param end_ea: does not belong to the range.
:param stt: storage_type_t
:returns: 0 if ok, otherwise an error code)r   enable_flagsr0  r1  r2  s   &&&r   r5  r5     s     ""8S99r#   c               $    V ^8  d   QhRRRRRR/# )rX   r0  r  r1  rY   r3  r$   )rZ   s   "r   r[   r[      s"     6 6O 6_ 66r#   c                .    \         P                  ! W4      # )a  Deallocate flags for address range. Exit with an error message if not enough disk space (this may occur too). 
        
:param start_ea: should be lower than end_ea.
:param end_ea: does not belong to the range.
:returns: 0 if ok, otherwise return error code)r   disable_flags)r0  r1  s   &&r   r9  r9     s     ##H55r#   c               (    V ^8  d   QhRRRRRRRR/# r/  r$   )rZ   s   "r   r[   r[     s0     A A/ A? A	A&Ar#   c                0    \         P                  ! WV4      # )zChange flag storage type for address range. 
        
:param start_ea: should be lower than end_ea.
:param end_ea: does not belong to the range.
:param stt: storage_type_t
:returns: error code)r   change_storage_typer6  s   &&&r   r<  r<    s     ))(C@@r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   r$   )rZ   s   "r   r[   r[          $ $/ $_ $r#   c                .    \         P                  ! V 4      # )z{Get next address in the program (i.e. next address which has flags). 
        
:returns: BADADDR if no such address exists.)r   	next_addrr  s   &r   rA  rA         ##r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     r?  r#   c                .    \         P                  ! V 4      # )z[Get previous address in the program. 
        
:returns: BADADDR if no such address exists.)r   	prev_addrrB  s   &r   rF  rF    rC  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[          % %? %o %r#   c                .    \         P                  ! V 4      # )zxGet the first address of next contiguous chunk in the program. 
        
:returns: BADADDR if next chunk does not exist.)r   
next_chunkrB  s   &r   rJ  rJ           $$r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[   $  rH  r#   c                .    \         P                  ! V 4      # )zGet the last address of previous contiguous chunk in the program. 
        
:returns: BADADDR if previous chunk does not exist.)r   
prev_chunkrB  s   &r   rN  rN  $  rK  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[   +  s     & &O & &r#   c                .    \         P                  ! V 4      # )z~Get start of the contiguous address block containing 'ea'. 
        
:returns: BADADDR if 'ea' does not belong to the program.)r   chunk_startrB  s   &r   rQ  rQ  +       !!"%%r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   	'asize_t'r$   )rZ   s   "r   r[   r[   2  s     % %? %i %r#   c                .    \         P                  ! V 4      # )zwGet size of the contiguous address block containing 'ea'. 
        
:returns: 0 if 'ea' does not belong to the program.)r   
chunk_sizerB  s   &r   rW  rW  2  rK  r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   startr  rp   rU  	alignmentrY   r$   )rZ   s   "r   r[   r[   9  s*     > >? >) >> >r#   c                0    \         P                  ! WV4      # )aH  Search for a hole in the addressing space of the program. 
        
:param start: Address to start searching from
:param size: Size of the desired empty range
:param alignment: Alignment bitmask, must be a pow2-1. (for example, 0xF would align the returned range to 16 bytes).
:returns: Start of the found empty range or BADADDR)r   find_free_chunk)rY  rp   rZ  s   &&&r   r\  r\  9  s     %%e9==r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  maxeatestf'testf_t *'rY   r$   )rZ   s   "r   r[   r[   D  )     2 2/ 2/ 2+ 22r#   c                0    \         P                  ! WV4      # )a   Find next address with a flag satisfying the function 'testf'. 
        
:param ea: start searching at this address + 1
:param maxea: not included in the search range.
:param testf: test function to find next address
:returns: the found address or BADADDR.)r   	next_that)r  r^  r_  s   &&&r   rc  rc  D       511r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  r^  rY   r$   )rZ   s   "r   r[   r[   O  "     . ._ ._ ..r#   c                .    \         P                  ! W4      # )zKSimilar to next_that(), but will find the next address that is unexplored.
)r   next_unknownr  r^  s   &&r   ri  ri  O       ""2--r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  minear_  r`  rY   r$   )rZ   s   "r   r[   r[   V  ra  r#   c                0    \         P                  ! WV4      # )a  Find previous address with a flag satisfying the function 'testf'. 
        
:param ea: start searching from this address - 1.
:param minea: included in the search range.
:param testf: test function to find previous address
:returns: the found address or BADADDR.)r   	prev_that)r  rm  r_  s   &&&r   ro  ro  V  rd  r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  rm  rY   r$   )rZ   s   "r   r[   r[   a  rg  r#   c                .    \         P                  ! W4      # )zOSimilar to prev_that(), but will find the previous address that is unexplored.
)r   prev_unknownr  rm  s   &&r   rs  rs  a  rk  r#   c               $    V ^8  d   QhRRRRRR/# rq  r$   )rZ   s   "r   r[   r[   h  !     + +/ +/ +_ +r#   c                .    \         P                  ! W4      # )zGet start of previous defined item. 
        
:param ea: begin search at this address
:param minea: included in the search range
:returns: BADADDR if none exists.)r   	prev_headrt  s   &&r   rx  rx  h       **r#   c               $    V ^8  d   QhRRRRRR/# rf  r$   )rZ   s   "r   r[   r[   q  rv  r#   c                .    \         P                  ! W4      # )zGet start of next defined item. 
        
:param ea: begin search at this address
:param maxea: not included in the search range
:returns: BADADDR if none exists.)r   	next_headrj  s   &&r   r|  r|  q  ry  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[   z       ( (o ( (r#   c                .    \         P                  ! V 4      # )zRGet address of previous non-tail byte. 
        
:returns: BADADDR if none exists.)r   prev_not_tailrB  s   &r   r  r  z       ##B''r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     r~  r#   c                .    \         P                  ! V 4      # )zNGet address of next non-tail byte. 
        
:returns: BADADDR if none exists.)r   next_not_tailrB  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     rH  r#   c                .    \         P                  ! V 4      # )zIGet previous visible address. 
        
:returns: BADADDR if none exists.)r   
prev_visearB  s   &r   r  r    rK  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     rH  r#   c                .    \         P                  ! V 4      # )zEGet next visible address. 
        
:returns: BADADDR if none exists.)r   
next_visearB  s   &r   r  r    rK  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     s     ( (o ( (r#   c                .    \         P                  ! V 4      # )zGet the start address of the item at 'ea'. If there is no current item, then 'ea' is returned (see definition at the end of bytes.hpp source) 
        )r   get_item_headrB  s   &r   r  r         ##B''r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[     s     ' '_ ' 'r#   c                .    \         P                  ! V 4      # )zGet the end address of the item at 'ea'. The returned address does not belong to the current item. Unexplored bytes are counted as 1 byte entities. 
        )r   get_item_endrB  s   &r   r  r    s     ""2&&r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  howrm   rY   r$   )rZ   s   "r   r[   r[     s!     1 1/ 1 1/ 1r#   c                .    \         P                  ! W4      # )a{  Calculate maximal reasonable end address of a new item. This function will limit the item with the current segment bounds. 
        
:param ea: linear address
:param how: when to stop the search. A combination of Item end search flags
:returns: end of new item. If it is not possible to create an item, it will return 'ea'. If operation was cancelled by user, it will return 'ea')r   calc_max_item_endr  r  s   &&r   r  r    s     ''00r#   c                    V ^8  d   QhRRRR/# rT  r$   )rZ   s   "r   r[   r[     s     ( (o ( (r#   c                .    \         P                  ! V 4      # )zGet size of item (instruction/data) in bytes. Unexplored bytes have length of 1 byte. This function returns 0 only for BADADDR. 
        )r   get_item_sizerB  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   rt   r$   )rZ   s   "r   r[   r[          $ $/ $T $r#   c                .    \         P                  ! V 4      # )z6Is the specified address 'ea' present in the program?
)r   	is_mappedrB  s   &r   r  r         ##r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r  rm   rY   'flags64_t'r$   )rZ   s   "r   r[   r[     s!     , ,_ ,3 ,+ ,r#   c                .    \         P                  ! W4      # )z4Get flags for the specified address, extended form.
)r   get_flags_exr  s   &&r   r  r    s     ""2++r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   r  r$   )rZ   s   "r   r[   r[     s     & &O &{ &r#   c                .    \         P                  ! V 4      # )a  Get only 32 low bits of flags. This function returns the most commonly used bits of the flags. However, it does not return the operand info for the operands beyond the first two operands (0,1). If you need to deal with the operands (2..n), then use get_flags(). It is customary to assign the return value to the variable named "F32", to distinguish is from 64-bit flags. 
        
:returns: 0 if address is not present in the program)r   get_flags32rB  s   &r   r  r    rR  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     s     $ $/ $[ $r#   c                .    \         P                  ! V 4      # )a3  Get flags value for address 'ea'. The byte value is not included in the flags. This function should be used if the operand types of any operand beyond the first two operands is required. This function is more expensive to use than get_flags32() 
        
:returns: 0 if address is not present in the program)r   	get_flagsrB  s   &r   r  r    rC  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     s     ) ) )+ )r#   c                .    \         P                  ! V 4      # )zGet full flags value for address 'ea'. This function returns the byte value in the flags as well. See FF_IVL and MS_VAL. This function is more expensive to use than get_flags() 
        
:returns: 0 if address is not present in the program)r   get_full_flagsrB  s   &r   r  r         $$R((r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rX   _fromr  nrm   r  appzerort   rY   r  r$   )rZ   s   "r   r[   r[     s1     ; ; ;S ;o ;; ;r#   c                0    \         P                  ! WW#4      # )a  Get flag of the item at 'ea' even if it is a tail byte of some array or structure. This function is used to get flags of structure members or array elements. 
        
:param n: operand number which refers to 'ea' or OPND_ALL for one of the operands
:param ea: the referenced address
:param appzero: append a struct field name if the field offset is zero? meaningful only if the name refers to a structure.
:returns: flags or 0 (if failed))r   get_item_flag)r  r  r  r  s   &&&&r   r  r    s     ##Eb::r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   riz'refinfo_t'r  r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[     s(     2 2 2/ 2c 2T 2r#   c                0    \         P                  ! WV4      # )am  Get refinfo of the item at 'ea'. This function works for a regular offset operand as well as for a tail byte of a structure variable (in this case refinfo to corresponding structure member is returned) 
        
:param ri: refinfo holder
:param ea: the item address
:param n: operand number which refers to 'ea' or OPND_ALL for one of the operands
:returns: success)r   get_item_refinfo)r  r  r  s   &&&r   r  r    s     &&rq11r#   c                    V ^8  d   QhRRRR/# rX   Fr  rY   rt   r$   )rZ   s   "r   r[   r[          # # # #r#   c                .    \         P                  ! V 4      # )zDo flags contain byte value?
)r   	has_valuer  s   &r   r  r         ""r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   rc   r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )zUDelete byte value from flags. The corresponding byte becomes uninitialized. 
        )r   	del_valuerB  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z?Does the specified address have a byte value (is initialized?)
)r   	is_loadedrB  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   rm   r$   )rZ   s   "r   r[   r[   !  s        o    r#   c                .    \         P                  ! V 4      # )zGet number of bits in a byte at the given address. 
        
:returns: processor_t::dnbits() if the address does not belong to a segment, otherwise the result depends on the segment type)r   nbitsrB  s   &r   r  r  !  s     Br#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   (  s     # # #C #r#   c                .    \         P                  ! V 4      # )zCGet number of bytes required to store a byte at the given address.
)r   bytesizerB  s   &r   r  r  (       r""r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   'uchar'r$   )rZ   s   "r   r[   r[   .  s     # # #G #r#   c                .    \         P                  ! V 4      # )zjGet one byte (8-bit) of the program at 'ea'. This function works only for 8-bit byte processors. 
        )r   get_byterB  s   &r   r  r  .  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   4  s     & &O &w &r#   c                .    \         P                  ! V 4      # )zGet one byte (8-bit) of the program at 'ea' from the database. Works even if the debugger is active. See also get_dbg_byte() to read the process memory directly. This function works only for 8-bit byte processors. 
        )r   get_db_byterB  s   &r   r  r  4  s     !!"%%r#   c                    V ^8  d   QhRRRR/# )rX   r  r  rY   z'ushort'r$   )rZ   s   "r   r[   r[   :  s     # # #H #r#   c                .    \         P                  ! V 4      # )zGet one word (16-bit) of the program at 'ea'. This function takes into account order of bytes specified in idainfo::is_be() This function works only for 8-bit byte processors. 
        )r   get_wordrB  s   &r   r  r  :  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   @  s     $ $/ $S $r#   c                .    \         P                  ! V 4      # )zGet one dword (32-bit) of the program at 'ea'. This function takes into account order of bytes specified in idainfo::is_be() This function works only for 8-bit byte processors. 
        )r   	get_dwordrB  s   &r   r  r  @  r  r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   'uint64'r$   )rZ   s   "r   r[   r[   F  s     $ $/ $X $r#   c                .    \         P                  ! V 4      # )zGet one qword (64-bit) of the program at 'ea'. This function takes into account order of bytes specified in idainfo::is_be() This function works only for 8-bit byte processors. 
        )r   	get_qwordrB  s   &r   r  r  F  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   L       ( (o ( (r#   c                .    \         P                  ! V 4      # )zGet one wide byte of the program at 'ea'. Some processors may access more than 8-bit quantity at an address. These processors have 32-bit byte organization from the IDA's point of view. 
        )r   get_wide_byterB  s   &r   r  r  L  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   R  r  r#   c                .    \         P                  ! V 4      # )a  Get one wide word (2 'byte') of the program at 'ea'. Some processors may access more than 8-bit quantity at an address. These processors have 32-bit byte organization from the IDA's point of view. This function takes into account order of bytes specified in idainfo::is_be() 
        )r   get_wide_wordrB  s   &r   r  r  R  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   X  s     ) ) )( )r#   c                .    \         P                  ! V 4      # )a  Get two wide words (4 'bytes') of the program at 'ea'. Some processors may access more than 8-bit quantity at an address. These processors have 32-bit byte organization from the IDA's point of view. This function takes into account order of bytes specified in idainfo::is_be() 
        )r   get_wide_dwordrB  s   &r   r  r  X  s     $$R((r#   c                  v   ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&   ]! ]P                  ]P                  4      tR]R	&   ]! ]P                   ]P"                  4      tR
]R&   ]! ]P&                  ]P(                  4      tR]R&   R R ltR R lt]P0                  tRtR# )octet_generator_ti^  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   octet_generator_t.<lambda>_  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r  _  rL   r#   rM   rN   r  r   r  r  rm   
avail_bitsrt   high_byte_firstc                   V ^8  d   QhRR/# )rX   _ear  r$   )rZ   s   "r   r[   octet_generator_t.__annotate__l  s     ( (O (r#   c                	\    \         P                  ! V \         P                  ! V4      4       R # r.   )r   octet_generator_t_swiginitnew_octet_generator_t)r   r  s   &&r   rU   octet_generator_t.__init__l  s'    --dJ!!5""%5' 	(r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r  p       D D$ Dr#   c                	.    \         P                  ! V 4      # r.   )r   #octet_generator_t_invert_byte_orderrg   s   &r   invert_byte_order#octet_generator_t.invert_byte_orderp      ==dCCr#   r$   N)r   r   r8   r9   r   r   r   r
   r   octet_generator_t_value_getoctet_generator_t_value_setr   __annotations__octet_generator_t_ea_getoctet_generator_t_ea_setr   octet_generator_t_avail_bits_get octet_generator_t_avail_bits_setr  %octet_generator_t_high_byte_first_get%octet_generator_t_high_byte_first_setr  rU   r  delete_octet_generator_tr%  r<   r$   r#   r   r  r  ^  s    -/I!#GHzEE..0E8 0":#F#F++-B -zJJ335J 5$Z--z--/OT /(D!::r#   r  c                    V ^8  d   QhRRRR/# )rX   ogenz'octet_generator_t'rY   	'uchar *'r$   )rZ   s   "r   r[   r[   x  s     & &' &9 &r#   c                .    \         P                  ! V 4      # r.   )r   	get_octet)r  s   &r   r  r  x  s    %%r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   |  s     $ $/ $S $r#   c                .    \         P                  ! V 4      # )zGet 16bits of the program at 'ea'. 
        
:returns: 1 byte (getFullByte()) if the current processor has 16-bit byte, otherwise return get_word())r   	get_16bitrB  s   &r   r  r  |  rC  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     s     $ $/ $S $r#   c                .    \         P                  ! V 4      # )zGet not more than 32bits of the program at 'ea'. 
        
:returns: 32 bit value, depending on processor_t::nbits:
* if ( nbits <= 8 ) return get_dword(ea);
* if ( nbits <= 16) return get_wide_word(ea);
* return get_wide_byte(ea);)r   	get_32bitrB  s   &r   r  r         ##r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     s     $ $/ $X $r#   c                .    \         P                  ! V 4      # )zGet not more than 64bits of the program at 'ea'. 
        
:returns: 64 bit value, depending on processor_t::nbits:
* if ( nbits <= 8 ) return get_qword(ea);
* if ( nbits <= 16) return get_wide_dword(ea);
* return get_wide_byte(ea);)r   	get_64bitrB  s   &r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   rK   z
'uval_t *'r  r  rp   rU  rY   rt   r$   )rZ   s   "r   r[   r[     s(     2 2j 2o 2Y 2$ 2r#   c                0    \         P                  ! WV4      # )a$  Get the value at of the item at 'ea'. This function works with entities up to sizeof(ea_t) (bytes, word, etc) 
        
:param v: pointer to the result. may be nullptr
:param ea: linear address
:param size: size of data to read. If 0, then the item type at 'ea' will be used
:returns: success)r   get_data_value)rK   r  rp   s   &&&r   r  r    s     $$QD11r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          , ,/ ,X ,r#   c                .    \         P                  ! V 4      # )zoGet original byte value (that was before patching). This function works for wide byte processors too. 
        )r   get_original_byterB  s   &r   r!  r!         ''++r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )zGet original word value (that was before patching). This function works for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        )r   get_original_wordrB  s   &r   r%  r%    r"  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          - -? -h -r#   c                .    \         P                  ! V 4      # )zGet original dword (that was before patching) This function works for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        )r   get_original_dwordrB  s   &r   r)  r)         ((,,r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r'  r#   c                .    \         P                  ! V 4      # )zGet original qword value (that was before patching) This function DOESN'T work for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        )r   get_original_qwordrB  s   &r   r-  r-    r*  r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  rE   r  rY   rt   r$   )rZ   s   "r   r[   r[     s!     & & &X & &r#   c                .    \         P                  ! W4      # )zSet value of one byte of the program. This function modifies the database. If the debugger is active then the debugged process memory is patched too. 
        
:param ea: linear address
:param x: byte value
:returns: true if the database has been modified)r   put_byter  rE   s   &&r   r1  r1         r%%r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  rE   r  rY   rc   r$   )rZ   s   "r   r[   r[     s!     & & &X & &r#   c                .    \         P                  ! W4      # )zSet value of one word of the program. This function takes into account order of bytes specified in idainfo::is_be() This function works for wide byte processors too. 
        )r   put_wordr2  s   &&r   r7  r7    s     r%%r#   c               $    V ^8  d   QhRRRRRR/# r5  r$   )rZ   s   "r   r[   r[     !     ' '/ 'h '$ 'r#   c                .    \         P                  ! W4      # )zSet value of one dword of the program. This function takes into account order of bytes specified in idainfo::is_be() This function works for wide byte processors too. 
        
:param ea: linear address
:param x: dword value)r   	put_dwordr2  s   &&r   r;  r;        
 &&r#   c               $    V ^8  d   QhRRRRRR/# r5  r$   )rZ   s   "r   r[   r[     r9  r#   c                .    \         P                  ! W4      # )zSet value of one qword (8 bytes) of the program. This function takes into account order of bytes specified in idainfo::is_be() This function DOESN'T works for wide byte processors. 
        
:param ea: linear address
:param x: qword value)r   	put_qwordr2  s   &&r   r?  r?    r<  r#   c               $    V ^8  d   QhRRRRRR/# r/  r$   )rZ   s   "r   r[   r[     !     ( (? (x (4 (r#   c                .    \         P                  ! W4      # )a  Patch a byte of the program. The original value of the byte is saved and can be obtained by get_original_byte(). This function works for wide byte processors too. 
        
:returns: true: the database has been modified,
:returns: false: the debugger is running and the process' memory has value 'x' at address 'ea', or the debugger is not running, and the IDB has value 'x' at address 'ea already.)r   
patch_byter2  s   &&r   rC  rC        
   ''r#   c               $    V ^8  d   QhRRRRRR/# r/  r$   )rZ   s   "r   r[   r[     rA  r#   c                .    \         P                  ! W4      # )a  Patch a word of the program. The original value of the word is saved and can be obtained by get_original_word(). This function works for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        
:returns: true: the database has been modified,
:returns: false: the debugger is running and the process' memory has value 'x' at address 'ea', or the debugger is not running, and the IDB has value 'x' at address 'ea already.)r   
patch_wordr2  s   &&r   rG  rG    rD  r#   c               $    V ^8  d   QhRRRRRR/# r/  r$   )rZ   s   "r   r[   r[     !     ) )O ) )D )r#   c                .    \         P                  ! W4      # )a  Patch a dword of the program. The original value of the dword is saved and can be obtained by get_original_dword(). This function DOESN'T work for wide byte processors. This function takes into account order of bytes specified in idainfo::is_be() 
        
:returns: true: the database has been modified,
:returns: false: the debugger is running and the process' memory has value 'x' at address 'ea', or the debugger is not running, and the IDB has value 'x' at address 'ea already.)r   patch_dwordr2  s   &&r   rK  rK        
 !!"((r#   c               $    V ^8  d   QhRRRRRR/# r/  r$   )rZ   s   "r   r[   r[     rI  r#   c                .    \         P                  ! W4      # )a  Patch a qword of the program. The original value of the qword is saved and can be obtained by get_original_qword(). This function DOESN'T work for wide byte processors. This function takes into account order of bytes specified in idainfo::is_be() 
        
:returns: true: the database has been modified,
:returns: false: the debugger is running and the process' memory has value 'x' at address 'ea', or the debugger is not running, and the IDB has value 'x' at address 'ea already.)r   patch_qwordr2  s   &&r   rO  rO    rL  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          & &O &t &r#   c                .    \         P                  ! V 4      # )zVRevert patched byte 
        
:returns: true: byte was patched before and reverted now)r   revert_byterB  s   &r   rS  rS    rR  r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r   rm   rY   rc   r$   )rZ   s   "r   r[   r[     s!     * * * * *r#   c                .    \         P                  ! W4      # )zAdd a value to one byte of the program. This function works for wide byte processors too. 
        
:param ea: linear address
:param value: byte value)r   add_byter  r   s   &&r   rV  rV        
 r))r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  r   r  rY   rc   r$   )rZ   s   "r   r[   r[     s!     * * * *T *r#   c                .    \         P                  ! W4      # )zAdd a value to one word of the program. This function works for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        
:param ea: linear address
:param value: byte value)r   add_wordrW  s   &&r   r\  r\    rX  r#   c               $    V ^8  d   QhRRRRRR/# rZ  r$   )rZ   s   "r   r[   r[     !     + +/ +( +d +r#   c                .    \         P                  ! W4      # )zAdd a value to one dword of the program. This function works for wide byte processors too. This function takes into account order of bytes specified in idainfo::is_be() 
        
:param ea: linear address
:param value: byte value)r   	add_dwordrW  s   &&r   r`  r`        
 **r#   c               $    V ^8  d   QhRRRRRR/# rZ  r$   )rZ   s   "r   r[   r[     r^  r#   c                .    \         P                  ! W4      # )zAdd a value to one qword of the program. This function does not work for wide byte processors. This function takes into account order of bytes specified in idainfo::is_be() 
        
:param ea: linear address
:param value: byte value)r   	add_qwordrW  s   &&r   rd  rd    ra  r#   c               $    V ^8  d   QhRRRRRR/# )rX   zrangesz'rangeset_t'rangez	'range_t'rY   rt   r$   )rZ   s   "r   r[   r[     s!     6 6\ 6) 6t 6r#   c                .    \         P                  ! W4      # )a  Return set of ranges with zero initialized bytes. The returned set includes only big zero initialized ranges (at least >1KB). Some zero initialized byte ranges may be not included. Only zero bytes that use the sparse storage method (STT_MM) are reported. 
        
:param zranges: pointer to the return value. cannot be nullptr
:param range: the range of addresses to verify. can be nullptr - means all ranges
:returns: true if the result is a non-empty set)r   get_zero_ranges)rf  rg  s   &&r   ri  ri    s     %%g55r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  bufz'void const *'rY   rc   r$   )rZ   s   "r   r[   r[   0  s!     ) )/ ) )$ )r#   c                .    \         P                  ! W4      # )zModify the specified number of bytes of the program. This function does not save the original values of bytes. See also patch_bytes(). 
        
:param ea: linear address
:param buf: buffer with new values of bytes)r   	put_bytesr  rl  s   &&r   rn  rn  0  s    
 ((r#   c               $    V ^8  d   QhRRRRRR/# rk  r$   )rZ   s   "r   r[   r[   8  s!     + +O +. +D +r#   c                .    \         P                  ! W4      # )zPatch the specified number of bytes of the program. Original values of bytes are saved and are available with get_original...() functions. See also put_bytes(). 
        
:param ea: linear address
:param buf: buffer with new values of bytes)r   patch_bytesro  s   &&r   rr  rr  8  s    
 !!"**r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   Q       ! !{ !d !r#   c                .    \         P                  ! V 4      # z*Does flag denote start of an instruction?
)r   is_coder  s   &r   rw  rw  Q       a  r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  arg2'void *'rY   rt   r$   )rZ   s   "r   r[   r[   W  !     ) ) )H ) )r#   c                .    \         P                  ! W4      # rv  )r   	f_is_coder  r{  s   &&r   r  r  W       ((r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   ]  rt  r#   c                .    \         P                  ! V 4      # z Does flag denote start of data?
)r   is_datar  s   &r   r  r  ]  rx  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[   c  r}  r#   c                .    \         P                  ! W4      # r  )r   	f_is_datar  s   &&r   r  r  c  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   i  rt  r#   c                .    \         P                  ! V 4      # zDoes flag denote tail byte?
)r   is_tailr  s   &r   r  r  i  rx  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[   o  r}  r#   c                .    \         P                  ! W4      # r  )r   	f_is_tailr  s   &&r   r  r  o  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   u       % %; %$ %r#   c                .    \         P                  ! V 4      # r  )r   is_not_tailr  s   &r   r  r  u       !!!$$r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[   {  s!     - -[ - -D -r#   c                .    \         P                  ! W4      # r  )r   f_is_not_tailr  s   &&r   r  r  {  s     ##A,,r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          $ $+ $ $r#   c                .    \         P                  ! V 4      # )z"Does flag denote unexplored byte?
)r   
is_unknownr  s   &r   r  r           ##r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # z/Does flag denote start of instruction OR data?
)r   is_headr  s   &r   r  r    rx  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r}  r#   c                .    \         P                  ! W4      # r  )r   	f_is_headr  s   &&r   r  r    r  r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   r  r  flagsrm   nbytesrU  may_destroyz'may_destroy_cb_t *'rY   rt   r$   )rZ   s   "r   r[   r[     s8     	@ 	@/ 	@# 	@ 	@%	@.2	@r#   c                0    \         P                  ! WW#4      # )aC  Convert item (instruction/data) to unexplored bytes. The whole item (including the head and tail bytes) will be destroyed. It is allowed to pass any address in the item to this function 
        
:param ea: any address within the first item to delete
:param flags: combination of Unexplored byte conversion flags
:param nbytes: number of bytes in the range to be undefined
:param may_destroy: optional routine invoked before deleting a head item. If callback returns false then item is not to be deleted and operation fails
:returns: true on successful operation, otherwise false)r   	del_items)r  r  r  r  s   &&&&r   r  r    s     6??r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     s     ) ) )$ )r#   c                .    \         P                  ! V 4      # )zbIs the instruction overridden? 
        
:param ea: linear address of the instruction or data item)r   is_manual_insnrB  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# )rX   r  r  rY   r  r$   )rZ   s   "r   r[   r[     s     * * *3 *r#   c                .    \         P                  ! V 4      # )zRetrieve the user-specified string for the manual instruction. 
        
:param ea: linear address of the instruction or data item
:returns: size of manual instruction or -1)r   get_manual_insnrB  s   &r   r  r    s    
 %%b))r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  manual_insnr  rY   rc   r$   )rZ   s   "r   r[   r[     s!     7 7 7c 7T 7r#   c                .    \         P                  ! W4      # )zSet manual instruction string. 
        
:param ea: linear address of the instruction or data item
:param manual_insn: "" - delete manual string. nullptr - do nothing)r   set_manual_insn)r  r  s   &&r   r  r    s    
 %%b66r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )zQDoes the previous instruction exist and pass execution flow to the current byte?
)r   is_flowr  s   &r   r  r    rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          ( (k (T (r#   c                .    \         P                  ! V 4      # )zCDoes the current byte have additional anterior or posterior lines?
)r   has_extra_cmtsr  s   &r   r  r         $$Q''r#   c               $    V ^8  d   QhRRRRRR/# rX   fr  r{  r|  rY   rt   r$   )rZ   s   "r   r[   r[     s!     0 0 08 0t 0r#   c                .    \         P                  ! W4      # r.   )r   f_has_extra_cmtsr  r{  s   &&r   r  r    s    &&q//r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )z0Does the current byte have an indented comment?
)r   has_cmtr  s   &r   r  r    rx  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s!     ) ) )H ) )r#   c                .    \         P                  ! W4      # r.   )r   	f_has_cmtr  s   &&r   r  r    s    ((r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[          " " "t "r#   c                .    \         P                  ! V 4      # z3Does the current byte have cross-references to it?
)r   has_xrefr  s   &r   r  r         q!!r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     !     * *+ *X * *r#   c                .    \         P                  ! W4      # r  )r   
f_has_xrefr  s   &&r   r  r           ))r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # z9Does the current byte have non-trivial (non-dummy) name?
)r   has_namer  s   &r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # r  )r   
f_has_namer  s   &&r   r  r    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   $  r  r#   c                .    \         P                  ! V 4      # zMDoes the current byte have dummy (auto-generated, with special prefix) name?
)r   has_dummy_namer  s   &r   r  r  $  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   *  s!     0 0 08 0t 0r#   c                .    \         P                  ! W4      # r  )r   f_has_dummy_namer  s   &&r   r  r  *  s     &&q//r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   0       ' '[ 'D 'r#   c                .    \         P                  ! V 4      # )zDDoes the current byte have auto-generated (no special prefix) name?
)r   has_auto_namer  s   &r   r  r  0       ##A&&r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   6       & &K &4 &r#   c                .    \         P                  ! V 4      # )z%Does the current byte have any name?
)r   has_any_namer  s   &r   r  r  6       ""1%%r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   <  r  r#   c                .    \         P                  ! V 4      # z0Does the current byte have user-specified name?
)r   has_user_namer  s   &r   r  r  <  r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[   B  s!     / /{ /( /d /r#   c                .    \         P                  ! W4      # r  )r   f_has_user_namer  s   &&r   r  r  B  s     %%a..r#   c               (    V ^8  d   QhRRRRRRRR/# 	rX   r  r  r  r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[   H  s(     + +? +{ +s +d +r#   c                0    \         P                  ! WV4      # )z{Should the sign of n-th operand be inverted during output? allowed values of n: 0-first operand, 1-other operands 
        )r   
is_invsignr  r  r  s   &&&r   r  r  H  s       **r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[   N  !     ) )O ) )t )r#   c                .    \         P                  ! W4      # )z]Toggle sign of n-th operand. allowed values of n: 0-first operand, 1-other operands 
        )r   toggle_signr  r  s   &&r   r  r  N       !!"((r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   T  s(     ( ( (K (C (4 (r#   c                0    \         P                  ! WV4      # )z}Should we negate the operand? asm_t::a_bnot should be defined in the idp module in order to work with this function 
        )r   is_bnotr  s   &&&r   r   r   T  s     bQ''r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   Z  r  r#   c                .    \         P                  ! W4      # )z6Toggle binary negation of operand. also see is_bnot()
)r   toggle_bnotr  s   &&r   r  r  Z  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   `  s!     & & &S &D &r#   c                .    \         P                  ! W4      # )a^  Display leading zeros? Display leading zeros in operands. The global switch for the leading zeros is in idainfo::s_genflags Note: the leading zeros does not work if for the target assembler octal numbers start with 0. 
        
:param ea: the item (insn/data) address
:param n: the operand number (0-first operand, 1-other operands)
:returns: success)r   is_lzeror  s   &&r   r  r  `  r3  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   i  !     ' '/ 'c 'T 'r#   c                .    \         P                  ! W4      # )aH  Set toggle lzero bit. This function changes the display of leading zeros for the specified operand. If the default is not to display leading zeros, this function will display them and vice versa. 
        
:param ea: the item (insn/data) address
:param n: the operand number (0-first operand, 1-other operands)
:returns: success)r   	set_lzeror  s   &&r   r
  r
  i       &&r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   r  r  r#   c                .    \         P                  ! W4      # )a[  Clear toggle lzero bit. This function reset the display of leading zeros for the specified operand to the default. If the default is not to display leading zeros, leading zeros will not be displayed, as vice versa. 
        
:param ea: the item (insn/data) address
:param n: the operand number (0-first operand, 1-other operands)
:returns: success)r   	clr_lzeror  s   &&r   r  r  r  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   {  s!     * *_ * * *r#   c                .    \         P                  ! W4      # )zToggle lzero bit. 
        
:param ea: the item (insn/data) address
:param n: the operand number (0-first operand, 1-other operands)
:returns: success)r   toggle_lzeror  s   &&r   r  r  {  s     ""2))r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s!     4 4 43 4$ 4r#   c                .    \         P                  ! W4      # )z&Check if leading zeros are important.
)r   leading_zero_importantr  s   &&r   r  r    s     ,,R33r#   c                    V ^8  d   QhRRRR/# )rX   r  rm   rY   r$   )rZ   s   "r   r[   r[     s     0 0c 0S 0r#   c                .    \         P                  ! V 4      # )zGet the shift in `flags64_t` for the nibble representing operand `n`'s type
Note: n must be < UA_MAXOP, and is not checked

:param n: the operand number
:returns: the shift to the nibble)r   get_operand_type_shiftr  s   &r   r  r    s     ,,Q//r#   c               $    V ^8  d   QhRRRRRR/# )rX   typebits'uint8'r  rm   rY   r  r$   )rZ   s   "r   r[   r[     s!     4 4w 43 4+ 4r#   c                .    \         P                  ! W4      # )zPlace operand `n`'s type flag in the right nibble of a 64-bit flags set.

:param typebits: the type bits (one of `FF_N_`)
:param n: the operand number
:returns: the shift to the nibble)r   get_operand_flag)r  r  s   &&r   r  r    s     &&x33r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   r  r  r  r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[     s(     : :; :' :c :T :r#   c                0    \         P                  ! WV4      # )zCheck that the 64-bit flags set has the expected type for operand `n`.

:param F: the flags
:param typebits: the type bits (one of `FF_N_`)
:param n: the operand number
:returns: success)r   is_flag_for_operand)r  r  r  s   &&&r   r   r     s     ))!q99r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )zOIs the first operand defined? Initially operand has no defined representation.
)r   
is_defarg0r  s   &r   r#  r#    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )zPIs the second operand defined? Initially operand has no defined representation.
)r   
is_defarg1r  s   &r   r&  r&    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )z8Is the first operand offset? (example: push offset xxx)
)r   is_off0r  s   &r   r)  r)    rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )z<Is the second operand offset? (example: mov ax, offset xxx)
)r   is_off1r  s   &r   r,  r,    rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z=Is the first operand character constant? (example: push 'a')
)r   is_char0r  s   &r   r/  r/    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )zAIs the second operand character constant? (example: mov al, 'a')
)r   is_char1r  s   &r   r2  r2    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )zBIs the first operand segment selector? (example: push seg seg001)
)r   is_seg0r  s   &r   r5  r5    rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     rt  r#   c                .    \         P                  ! V 4      # )zDIs the second operand segment selector? (example: mov dx, seg dseg)
)r   is_seg1r  s   &r   r8  r8    rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z8Is the first operand a symbolic constant (enum member)?
)r   is_enum0r  s   &r   r;  r;    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z9Is the second operand a symbolic constant (enum member)?
)r   is_enum1r  s   &r   r>  r>    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z0Is the first operand an offset within a struct?
)r   
is_stroff0r  s   &r   rA  rA    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z1Is the second operand an offset within a struct?
)r   
is_stroff1r  s   &r   rD  rD    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z'Is the first operand a stack variable?
)r   
is_stkvar0r  s   &r   rG  rG    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   #  r  r#   c                .    \         P                  ! V 4      # )z(Is the second operand a stack variable?
)r   
is_stkvar1r  s   &r   rJ  rJ  #  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   )  r  r#   c                .    \         P                  ! V 4      # )z.Is the first operand a floating point number?
)r   	is_float0r  s   &r   rM  rM  )  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   /  r  r#   c                .    \         P                  ! V 4      # )z/Is the second operand a floating point number?
)r   	is_float1r  s   &r   rP  rP  /  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   5  r  r#   c                .    \         P                  ! V 4      # )z9Does the first operand use a custom data representation?
)r   is_custfmt0r  s   &r   rS  rS  5  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   ;  r  r#   c                .    \         P                  ! V 4      # )z:Does the second operand use a custom data representation?
)r   is_custfmt1r  s   &r   rV  rV  ;  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   A  r  r#   c                .    \         P                  ! V 4      # )zDIs the first operand a number (i.e. binary, octal, decimal or hex?)
)r   	is_numop0r  s   &r   rY  rY  A  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   G  r  r#   c                .    \         P                  ! V 4      # )zEIs the second operand a number (i.e. binary, octal, decimal or hex?)
)r   	is_numop1r  s   &r   r\  r\  G  r  r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   r$   )rZ   s   "r   r[   r[   M       + + + +r#   c                .    \         P                  ! V 4      # )zGet flags for first operand.
)r   get_optype_flags0r  s   &r   ra  ra  M       ''**r#   c                    V ^8  d   QhRRRR/# r^  r$   )rZ   s   "r   r[   r[   S  r_  r#   c                .    \         P                  ! V 4      # )zGet flags for second operand.
)r   get_optype_flags1r  s   &r   re  re  S  rb  r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[   d  !     & & & & &r#   c                .    \         P                  ! W4      # )zis defined?
)r   	is_defargr  r  s   &&r   rj  rj  d       %%r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[   j  !     # #k #c #T #r#   c                .    \         P                  ! W4      # )zis offset?
)r   is_offrk  s   &&r   rp  rp  j       Q""r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[   p  !     $ ${ $s $d $r#   c                .    \         P                  ! W4      # )zis character constant?
)r   is_charrk  s   &&r   ru  ru  p       a##r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[   v  rn  r#   c                .    \         P                  ! W4      # )zis segment?
)r   is_segrk  s   &&r   ry  ry  v  rq  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[   |  rs  r#   c                .    \         P                  ! W4      # )z	is enum?
)r   is_enumrk  s   &&r   r|  r|  |  rv  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     rh  r#   c                .    \         P                  ! W4      # )z-is forced operand? (use is_forced_operand())
)r   	is_manualrk  s   &&r   r  r    rl  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     rh  r#   c                .    \         P                  ! W4      # )zis struct offset?
)r   	is_stroffrk  s   &&r   r  r    rl  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     rh  r#   c                .    \         P                  ! W4      # )zis stack variable?
)r   	is_stkvarrk  s   &&r   r  r    rl  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     rh  r#   c                .    \         P                  ! W4      # )zis floating point number?
)r   	is_fltnumrk  s   &&r   r  r    rl  r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     s!     ' '+ '# ' 'r#   c                .    \         P                  ! W4      # )zis custom data format?
)r   
is_custfmtrk  s   &&r   r  r    s       &&r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     s!     % % % %t %r#   c                .    \         P                  ! W4      # )z is number (bin, oct, dec, hex)?
)r   is_numoprk  s   &&r   r  r    s     q$$r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s(     * */ *k *c *T *r#   c                0    \         P                  ! WV4      # )zis suspicious operand?
)r   	is_suspopr  s   &&&r   r  r    s     q))r#   c               $    V ^8  d   QhRRRRRR/# rg  r$   )rZ   s   "r   r[   r[     s!     * *[ *S *D *r#   c                .    \         P                  ! W4      # )zShould processor module create xrefs from the operand? Currently 'offset', 'structure offset', 'stack' and 'enum' operands create xrefs 
        )r   op_adds_xrefsrk  s   &&r   r  r    s     ##A))r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   r  r  r   r  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[     s(     / /O /; /3 /$ /r#   c                0    \         P                  ! WV4      # )a;  (internal function) change representation of operand(s). 
        
:param ea: linear address
:param type: new flag value (should be obtained from char_flag(), num_flag() and similar functions)
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:returns: 1: ok
:returns: 0: failed (applied to a tail byte))r   set_op_type)r  r   r  s   &&&r   r  r    s     !!"A..r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s!     $ $ $3 $$ $r#   c                .    \         P                  ! W4      # )zSet operand representation to be 'segment'. If applied to unexplored bytes, converts them to 16-/32-bit word data 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:returns: success)r   op_segr  s   &&r   r  r    s     R##r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   r  r  r  rm   id'tid_t'serialr  rY   rt   r$   )rZ   s   "r   r[   r[     s0     	1 	1 	1C 	1W 	1g 	1	1r#   c                0    \         P                  ! WW#4      # )a  Set operand representation to be enum type If applied to unexplored bytes, converts them to 16-/32-bit word data 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:param id: id of enum
:param serial: the serial number of the constant in the enumeration, usually 0. the serial numbers are used if the enumeration contains several constants with the same value
:returns: success)r   op_enum)r  r  r  r  s   &&&&r   r  r    s     bR00r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r  rm   rY   r  r$   )rZ   s   "r   r[   r[     s!     ) )O ) )y )r#   c                .    \         P                  ! W4      # )zGet enum id of 'enum' operand. 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL one of the operands
:returns: id of enum or BADNODE)r   get_enum_idr  s   &&r   r  r         !!"((r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   insn'insn_t const &'r  rm   opvalz	'adiff_t'baser  rY   rt   r$   )rZ   s   "r   r[   r[     s2     	< 	<* 	<s 	<9 	<	<	<r#   c                0    \         P                  ! WW#4      # )al  Set operand representation to be 'struct offset' if the operand likely points to a structure member. For example, let's there is a structure at 1000 1000 stru_1000 Elf32_Sym <...> the operand #8 will be represented as '#Elf32_Sym.st_size' after the call of 'op_based_stroff(..., 8, 0x1000)' By the way, after the call of 'op_plain_offset(..., 0x1000)' it will be represented as '#(stru_1000.st_size - 0x1000)' 
        
:param insn: the instruction
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:param opval: operand value (usually op_t::value or op_t::addr)
:param base: base reference
:returns: success)r   op_based_stroff)r  r  r  r  s   &&&&r   r  r    s     %%du;;r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )a)  Set operand representation to be 'stack variable'. Should be applied to an instruction within a function. Should be applied after creating a stack var using insn_t::create_stkvar(). 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:returns: success)r   	op_stkvarr  s   &&r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   r  r  r  rm   opr  rY   rt   r$   )rZ   s   "r   r[   r[     s(     	4 	4? 	4s 	4 	4t 	4r#   c                0    \         P                  ! WV4      # )zSet forced operand. 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number
:param op: text of operand
* nullptr: do nothing (return 0)
* "" : delete forced operand
:returns: success)r   set_forced_operand)r  r  r  s   &&&r   r  r    s     ((33r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r  rm   rY   r  r$   )rZ   s   "r   r[   r[     s!     0 0? 0s 0c 0r#   c                .    \         P                  ! W4      # )zGet forced operand. 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number
:returns: size of the forced operand or -1)r   get_forced_operandr  s   &&r   r  r    s     ((//r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s!     / // /c /T /r#   c                .    \         P                  ! W4      # )zgIs operand manually defined? 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number)r   is_forced_operandr  s   &&r   r  r    s    
 ''..r#   c                    V ^8  d   QhRRRR/# r^  r$   )rZ   s   "r   r[   r[     s     ' '[ 'K 'r#   c                .    \         P                  ! V 4      # r.   )r   combine_flagsr  s   &r   r  r    s    ##A&&r#   c                   V ^8  d   QhRR/# rX   rY   r  r$   )rZ   s   "r   r[   r[          " "+ "r#   c                 ,    \         P                  ! 4       # zsee FF_opbits
)r   	char_flagr$   r#   r   r  r         !!r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[          ! ! !r#   c                 ,    \         P                  ! 4       # r  )r   off_flagr$   r#   r   r  r           r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # r  )r   	enum_flagr$   r#   r   r  r    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   #       $ $K $r#   c                 ,    \         P                  ! 4       # r  )r   stroff_flagr$   r#   r   r  r  #       !!##r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   )  r  r#   c                 ,    \         P                  ! 4       # r  )r   stkvar_flagr$   r#   r   r  r  )  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   /  r  r#   c                 ,    \         P                  ! 4       # r  )r   flt_flagr$   r#   r   r  r  /  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   5  s     % %[ %r#   c                 ,    \         P                  ! 4       # r  )r   custfmt_flagr$   r#   r   r  r  5  s     ""$$r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   ;  r  r#   c                 ,    \         P                  ! 4       # r  )r   seg_flagr$   r#   r   r  r  ;  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   A  r  r#   c                 ,    \         P                  ! 4       # )z9Get number of default base (bin, oct, dec, hex) 
        )r   num_flagr$   r#   r   r  r  A  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   G  r  r#   c                 ,    \         P                  ! 4       # zXGet number flag of the base, regardless of current processor - better to use num_flag()
)r   hex_flagr$   r#   r   r  r  G  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   M  r  r#   c                 ,    \         P                  ! 4       # r  )r   dec_flagr$   r#   r   r  r  M  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   S  r  r#   c                 ,    \         P                  ! 4       # r  )r   oct_flagr$   r#   r   r  r  S  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   Y  r  r#   c                 ,    \         P                  ! 4       # r  )r   bin_flagr$   r#   r   r  r  Y  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   _  !     $ $ $3 $$ $r#   c                .    \         P                  ! W4      # )zset op type to char_flag()
)r   op_chrr  s   &&r   r  r  _       R##r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   e  r  r#   c                .    \         P                  ! W4      # )zset op type to num_flag()
)r   op_numr  s   &&r   r  r  e  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   k  r  r#   c                .    \         P                  ! W4      # )zset op type to hex_flag()
)r   op_hexr  s   &&r   r  r  k  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   q  r  r#   c                .    \         P                  ! W4      # )zset op type to dec_flag()
)r   op_decr  s   &&r   r  r  q  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   w  r  r#   c                .    \         P                  ! W4      # )zset op type to oct_flag()
)r   op_octr  s   &&r   r  r  w  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[   }  r  r#   c                .    \         P                  ! W4      # )zset op type to bin_flag()
)r   op_binr  s   &&r   r  r  }  r  r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zset op type to flt_flag()
)r   op_fltr  s   &&r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  r  rm   fidrY   rt   r$   )rZ   s   "r   r[   r[     s(     - -? -s - - -r#   c                0    \         P                  ! WV4      # )z?Set custom data format for operand (fid-custom data format id)
)r   
op_custfmt)r  r  r  s   &&&r   r  r    s       ,,r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     s!     ) )O ) )t )r#   c                .    \         P                  ! W4      # )zRemove operand representation information. (set operand representation to be 'undefined') 
        
:param ea: linear address
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all operands
:returns: success)r   clr_op_typer  s   &&r   r	  r	    r  r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r[     s     * *# *r#   c                 ,    \         P                  ! 4       # )zVGet default base of number for the current processor. 
        
:returns: 2, 8, 10, 16)r   get_default_radixr$   r#   r   r  r    s     ''))r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r  rm   rY   r$   )rZ   s   "r   r[   r[     s!     & & & & &r#   c                .    \         P                  ! W4      # )zGet radix of the operand, in: flags. If the operand is not a number, returns get_default_radix() 
        
:param F: flags
:param n: number of operand (0, 1, -1)
:returns: 2, 8, 10, 16)r   	get_radixrk  s   &&r   r  r    s     %%r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )zFF_CODE
)r   	code_flagr$   r#   r   r  r    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z%Get a flags64_t representing a byte.
)r   	byte_flagr$   r#   r   r  r    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z%Get a flags64_t representing a word.
)r   	word_flagr$   r#   r   r  r    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[          # #; #r#   c                 ,    \         P                  ! 4       # )z,Get a flags64_t representing a double word.
)r   
dword_flagr$   r#   r   r  r           ""r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z*Get a flags64_t representing a quad word.
)r   
qword_flagr$   r#   r   r   r     r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z)Get a flags64_t representing a octaword.
)r   
oword_flagr$   r#   r   r#  r#    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z)Get a flags64_t representing a ymm word.
)r   
yword_flagr$   r#   r   r&  r&    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z)Get a flags64_t representing a zmm word.
)r   
zword_flagr$   r#   r   r)  r)    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   
  r  r#   c                 ,    \         P                  ! 4       # )z&Get a flags64_t representing a tbyte.
)r   
tbyte_flagr$   r#   r   r,  r,  
  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z/Get a flags64_t representing a string literal.
)r   strlit_flagr$   r#   r   r/  r/    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z'Get a flags64_t representing a struct.
)r   	stru_flagr$   r#   r   r2  r2    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                 ,    \         P                  ! 4       # )z/Get a flags64_t representing custom type data.
)r   	cust_flagr$   r#   r   r5  r5    r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   "  r  r#   c                 ,    \         P                  ! 4       # )z5Get a flags64_t representing an alignment directive.
)r   
align_flagr$   r#   r   r8  r8  "  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   (  r  r#   c                 ,    \         P                  ! 4       # )z&Get a flags64_t representing a float.
)r   
float_flagr$   r#   r   r;  r;  (  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   .  r  r#   c                 ,    \         P                  ! 4       # )z'Get a flags64_t representing a double.
)r   double_flagr$   r#   r   r>  r>  .  r  r#   c                   V ^8  d   QhRR/# r  r$   )rZ   s   "r   r[   r[   4  s     & &k &r#   c                 ,    \         P                  ! 4       # )z4Get a flags64_t representing a packed decimal real.
)r   packreal_flagr$   r#   r   rA  rA  4  s     ##%%r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   :  rt  r#   c                .    \         P                  ! V 4      # )zFF_BYTE
)r   is_byter  s   &r   rD  rD  :  rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   @  rt  r#   c                .    \         P                  ! V 4      # )zFF_WORD
)r   is_wordr  s   &r   rG  rG  @  rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   F  r  r#   c                .    \         P                  ! V 4      # )z	FF_DWORD
)r   is_dwordr  s   &r   rJ  rJ  F  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   L  r  r#   c                .    \         P                  ! V 4      # )z	FF_QWORD
)r   is_qwordr  s   &r   rM  rM  L  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   R  r  r#   c                .    \         P                  ! V 4      # )z	FF_OWORD
)r   is_owordr  s   &r   rP  rP  R  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   X  r  r#   c                .    \         P                  ! V 4      # )z	FF_YWORD
)r   is_ywordr  s   &r   rS  rS  X  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   ^  r  r#   c                .    \         P                  ! V 4      # )z	FF_ZWORD
)r   is_zwordr  s   &r   rV  rV  ^  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   d  r  r#   c                .    \         P                  ! V 4      # )z	FF_TBYTE
)r   is_tbyter  s   &r   rY  rY  d  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   j  r  r#   c                .    \         P                  ! V 4      # )z	FF_FLOAT
)r   is_floatr  s   &r   r\  r\  j  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   p  r  r#   c                .    \         P                  ! V 4      # )z
FF_DOUBLE
)r   	is_doubler  s   &r   r_  r_  p  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   v  r  r#   c                .    \         P                  ! V 4      # )zFF_PACKREAL
)r   is_pack_realr  s   &r   rb  rb  v  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   |  r  r#   c                .    \         P                  ! V 4      # )z
FF_STRLIT
)r   	is_strlitr  s   &r   re  re  |  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z
FF_STRUCT
)r   	is_structr  s   &r   rh  rh    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z	FF_ALIGN
)r   is_alignr  s   &r   rk  rk    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! V 4      # )z
FF_CUSTOM
)r   	is_customr  s   &r   rn  rn    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r}  r#   c                .    \         P                  ! W4      # )zSee is_byte()
)r   	f_is_byter  s   &&r   rq  rq    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r}  r#   c                .    \         P                  ! W4      # )zSee is_word()
)r   	f_is_wordr  s   &&r   rt  rt    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_dword()
)r   
f_is_dwordr  s   &&r   rw  rw    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_qword()
)r   
f_is_qwordr  s   &&r   rz  rz    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_oword()
)r   
f_is_owordr  s   &&r   r}  r}    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_yword()
)r   
f_is_ywordr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_tbyte()
)r   
f_is_tbyter  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_float()
)r   
f_is_floatr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     !     + +; +h +$ +r#   c                .    \         P                  ! W4      # )zSee is_double()
)r   f_is_doubler  s   &&r   r  r         !!!**r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     s!     . .k . .T .r#   c                .    \         P                  ! W4      # )zSee is_pack_real()
)r   f_is_pack_realr  s   &&r   r  r    s     $$Q--r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_strlit()
)r   f_is_strlitr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_struct()
)r   f_is_structr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_align()
)r   
f_is_alignr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# rz  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )zSee is_custom()
)r   f_is_customr  s   &&r   r  r    r  r#   c               $    V ^8  d   QhRRRRRR/# )rX   F1r  F2rY   rt   r$   )rZ   s   "r   r[   r[     s!     0 0+ 0; 0$ 0r#   c                .    \         P                  ! W4      # )z/Do the given flags specify the same data type?
)r   is_same_data_type)r  r  s   &&r   r  r    s     ''//r#   c                    V ^8  d   QhRRRR/# )rX   rp   rm   rY   r  r$   )rZ   s   "r   r[   r[     s     . .C .; .r#   c                .    \         P                  ! V 4      # )ziGet flags from size (in bytes). Supported sizes: 1, 2, 4, 8, 16, 32. For other sizes, returns 0 
        )r   get_flags_by_size)rp   s   &r   r  r    s     ''--r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   r  r  dataflagr  rp   rU  tidr  rY   rt   r$   )rZ   s   "r   r[   r[     s1     	; 	;O 	;{ 	;) 	;		;	;r#   c                0    \         P                  ! WW#4      # )a  Convert to data (byte, word, dword, etc). This function may be used to create arrays. 
        
:param ea: linear address
:param dataflag: type of data. Value of function byte_flag(), word_flag(), etc.
:param size: size of array in bytes. should be divisible by the size of one item of the specified type. for variable sized items it can be specified as 0, and the kernel will try to calculate the size.
:param tid: type id. If the specified type is a structure, then tid is structure id. Otherwise should be BADNODE.
:returns: success)r   create_data)r  r  rp   r  s   &&&&r   r  r    s     !!"::r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  forcert   rY   r$   )rZ   s   "r   r[   r[      s!     , ,; ,t ,{ ,r#   c                .    \         P                  ! W4      # r.   )r   calc_dflags)r  r  s   &&r   r  r     s    !!!++r#   c               (    V ^8  d   QhRRRRRRRR/# rX   r  r  lengthrU  r  rt   rY   r$   )rZ   s   "r   r[   r[     )     5 5O 5Y 5t 55r#   c                0    \         P                  ! WV4      # )zConvert to byte.
)r   create_byter  r  r  s   &&&r   r  r         !!"e44r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                0    \         P                  ! WV4      # )zConvert to word.
)r   create_wordr  s   &&&r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[     )     6 6_ 6i 6 66r#   c                0    \         P                  ! WV4      # )zConvert to dword.
)r   create_dwordr  s   &&&r   r  r         ""2u55r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                0    \         P                  ! WV4      # )zConvert to quadword.
)r   create_qwordr  s   &&&r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[      r  r#   c                0    \         P                  ! WV4      # )zConvert to octaword/xmm word.
)r   create_owordr  s   &&&r   r  r     r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   '  r  r#   c                0    \         P                  ! WV4      # )zConvert to ymm word.
)r   create_ywordr  s   &&&r   r  r  '  r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   .  r  r#   c                0    \         P                  ! WV4      # )zConvert to zmm word.
)r   create_zwordr  s   &&&r   r  r  .  r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   5  r  r#   c                0    \         P                  ! WV4      # )zConvert to tbyte.
)r   create_tbyter  s   &&&r   r  r  5  r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   <  r  r#   c                0    \         P                  ! WV4      # )zConvert to float.
)r   create_floatr  s   &&&r   r  r  <  r  r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   C  s)     7 7o 7y 7 77r#   c                0    \         P                  ! WV4      # )zConvert to double.
)r   create_doubler  s   &&&r   r  r  C  s     ##B66r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   J  s)     < <? <I <d <<r#   c                0    \         P                  ! WV4      # )z Convert to packed decimal real.
)r   create_packed_realr  s   &&&r   r  r  J  s     ((U;;r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R/# )
rX   r  r  r  rU  r  r  r  rt   rY   r$   )rZ   s   "r   r[   r[   Q  s1     < <o <y <w <<<r#   c                0    \         P                  ! WW#4      # )zConvert to struct.
)r   create_struct)r  r  r  r  s   &&&&r   r  r  Q  s     ##B;;r#   c               0    V ^8  d   QhRRRRRRRRRR	R
R	/# )rX   r  r  r  rU  dtidrm   r  r  rt   rY   r$   )rZ   s   "r   r[   r[   X  sA     D D D D# DDD"Dr#   c                2    \         P                  ! WW#V4      # )zConvert to custom data type.
)r   create_custdata)r  r  r  r  r  s   &&&&&r   r  r  X  s     %%b$UCCr#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   r  r  r  rU  rZ  rm   rY   rt   r$   )rZ   s   "r   r[   r[   _  s)     : :_ :i :C ::r#   c                0    \         P                  ! WV4      # )a:  Create an alignment item. 
        
:param ea: linear address
:param length: size of the item in bytes. 0 means to infer from ALIGNMENT
:param alignment: alignment exponent. Example: 3 means align to 8 bytes. 0 means to infer from LENGTH It is forbidden to specify both LENGTH and ALIGNMENT as 0.
:returns: success)r   create_align)r  r  rZ  s   &&&r   r  r  _  s     ""2y99r#   c                    V ^8  d   QhRRRR/# )rX   r  rU  rY   rm   r$   )rZ   s   "r   r[   r[   j  s     - -9 - -r#   c                .    \         P                  ! V 4      # )zCalculate the minimal possible alignment exponent. 
        
:param length: size of the item in bytes.
:returns: a value in the 1..32 range)r   calc_min_align)r  s   &r   r  r  j  s    
 $$V,,r#   c                    V ^8  d   QhRRRR/# )rX   endear  rY   rm   r$   )rZ   s   "r   r[   r[   r  s     , ,/ ,S ,r#   c                .    \         P                  ! V 4      # )zCalculate the maximal possible alignment exponent. 
        
:param endea: end address of the alignment item.
:returns: a value in the 0..32 range)r   calc_max_align)r  s   &r   r  r  r  s    
 $$U++r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  minarm   maxarY   r$   )rZ   s   "r   r[   r[   z  s(     5 5 5c 5 5 5r#   c                0    \         P                  ! WV4      # )zCalculate the default alignment exponent. 
        
:param ea: linear address
:param mina: minimal possible alignment exponent.
:param maxa: minimal possible alignment exponent.)r   calc_def_align)r  r  r  s   &&&r   r  r  z  s     $$Rt44r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  r  rU  rY   rt   r$   )rZ   s   "r   r[   r[     !     4 4/ 49 4 4r#   c                .    \         P                  ! W4      # )z=Convert to 16-bit quantity (take the byte size into account)
)r   create_16bit_datar  r  s   &&r   r  r         ''33r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rZ   s   "r   r[   r[     r  r#   c                .    \         P                  ! W4      # )z=Convert to 32-bit quantity (take the byte size into account)
)r   create_32bit_datar  s   &&r   r  r    r  r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  strtyperm   optionsrY   r$   )rZ   s   "r   r[   r[     s/     	B 	Bo 	B 	Bc 	B	Br#   c                0    \         P                  ! WV4      # )a  Determine maximum length of string literal.
If the string literal has a length prefix (e.g., STRTYPE_LEN2 has a two-byte length prefix), the length of that prefix (i.e., 2) will be part of the returned value.

:param ea: starting address
:param strtype: string type. one of String type codes
:param options: combination of string literal length options
:returns: length of the string in octets (octet == 8 bits))r   get_max_strlit_length)r  r  r  s   &&&r   r  r    s     ++BAAr#   c               (    V ^8  d   QhRRRRRRRR/# )rX   rY  r  r   rm   r  rY   rt   r$   )rZ   s   "r   r[   r[     s(     9 9 9s 9S 9D 9r#   c                0    \         P                  ! WV4      # )ab  Convert to string literal and give a meaningful name. 'start' may be higher than 'end', the kernel will swap them in this case 
        
:param start: starting address
:param len: length of the string in bytes. if 0, then get_max_strlit_length() will be used to determine the length
:param strtype: string type. one of String type codes
:returns: success)r   create_strlit)rY  r   r  s   &&&r   r  r    s     ##E88r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   rl  
'opinfo_t'r  r  r  rm   r  r  rY   z'opinfo_t *'r$   )rZ   s   "r   r[   r[     s0     	4 	4J 	4O 	4 	4K 	4	4r#   c                0    \         P                  ! WW#4      # )a&  Get additional information about an operand representation. 
        
:param buf: buffer to receive the result. may not be nullptr
:param ea: linear address of item
:param n: number of operand, 0 or 1
:param flags: flags of the item
:returns: nullptr if no additional representation information)r   
get_opinfo)rl  r  r  r  s   &&&&r   r  r    s       !33r#   c               0    V ^8  d   QhRRRRRRRRR	R
RR
/# )rX   r  r  r  rm   flagr  tir  suppress_eventsrt   rY   r$   )rZ   s   "r   r[   r[     sA     
C 
C? 
Cs 
C+ 
C
C!%
C/3
Cr#   c                2    \         P                  ! WW#V4      # )a  Set additional information about an operand representation. This function is a low level one. Only the kernel should use it. 
        
:param ea: linear address of the item
:param n: number of operand, 0 or 1 (see the note below)
:param flag: flags of the item
:param ti: additional representation information
:param suppress_events: do not generate changing_op_type and op_type_changed events
:returns: success)r   
set_opinfo)r  r  r  r  r  s   &&&&&r   r  r    s       /BBr#   c               (    V ^8  d   QhRRRRRRRR/# 	rX   r  r  r  r  r  r  rY   rU  r$   )rZ   s   "r   r[   r[     s)     
1 
1 
1K 
1Z 
1
1r#   c                0    \         P                  ! WV4      # )a  Get size of data type specified in flags 'F'. 
        
:param ea: linear address of the item
:param F: flags
:param ti: additional information about the data type. For example, if the current item is a structure instance, then ti->tid is structure id. Otherwise is ignored (may be nullptr). If specified as nullptr, will be automatically retrieved from the database
:returns: * byte : 1
* word : 2
* etc...)r   get_data_elsizer  r  r  s   &&&r   r	  r	    s     %%bR00r#   c               (    V ^8  d   QhRRRRRRRR/# r  r$   )rZ   s   "r   r[   r[   	  s*     6 6_ 6 66 6r#   c                0    \         P                  ! WV4      # )zGet full size of data type specified in flags 'F'. takes into account processors with wide bytes e.g. returns 2 for a byte element with 16-bit bytes 
        )r   get_full_data_elsizer
  s   &&&r   r  r  	  s     **2"55r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rX   r  r  r  r  r  r  itemsizez'asize_t *'rY   rm   r$   )rZ   s   "r   r[   r[   	  s1     ; ; ;K ;Z ;;(+;r#   c                0    \         P                  ! WW#4      # )aX  Is the item at 'ea' variable size? 
        
:param ea: linear address of the item
:param F: flags
:param ti: additional information about the data type. For example, if the current item is a structure instance, then ti->tid is structure id. Otherwise is ignored (may be nullptr). If specified as nullptr, will be automatically retrieved from the database
:param itemsize: if not nullptr and the item is varsize, itemsize will contain the calculated item size (for struct types, the minimal size is returned)
:returns: 1: varsize item
:returns: 0: fixed item
:returns: -1: error (bad data definition))r   is_varsize_item)r  r  r  r  s   &&&&r   r  r  	  s     %%bR::r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  tifz	'tinfo_t'rY   rU  r$   )rZ   s   "r   r[   r[   	  s!     9 9/ 9	 9Y 9r#   c                .    \         P                  ! W4      # )zReturn the possible size of the item at EA of type TIF if TIF is the variable structure. 
        
:param ea: the linear address of the item
:param tif: the item type
:returns: the possible size
:returns: asize_t(-1): TIF is not a variable structure)r   get_possible_item_varsize)r  r  s   &&r   r  r  	  s     //88r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   r  r  r  rU  r  r  rY   rt   r$   )rZ   s   "r   r[   r[   $	  s)     9 9 9 9; 99r#   c                0    \         P                  ! WV4      # )a  Can define item (instruction/data) of the specified 'length', starting at 'ea'? 
* a new item would cross segment boundaries
* a new item would overlap with existing items (except items specified by 'flags') 


        
:param ea: start of the range for the new item
:param length: length of the new item in bytes
:param flags: if not 0, then the kernel will ignore the data types specified by the flags and destroy them. For example: 
                 1000 dw 5
                 1002 db 5 ; undef
                 1003 db 5 ; undef
                 1004 dw 5
                 1006 dd 5
                  can_define_item(1000, 6, 0) - false because of dw at 1004 
 can_define_item(1000, 6, word_flag()) - true, word at 1004 is destroyed
:returns: 1-yes, 0-no)r   can_define_item)r  r  r  s   &&&r   r  r  $	  s    & %%b%88r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   H	  r  r#   c                .    \         P                  ! V 4      # )zHas immediate value?
)r   has_immdr  s   &r   r  r  H	  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   N	  rt  r#   c                .    \         P                  ! V 4      # )zIs function start?
)r   is_funcr  s   &r   r  r  N	  rx  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   T	  s     # # #D #r#   c                .    \         P                  ! V 4      # )zfSet 'has immediate operand' flag. Returns true if the FF_IMMD bit was not set and now is set 
        )r   set_immdrB  s   &r   r!  r!  T	  r  r#   c                  8   ] tR tRt$ Rt]! R R RR7      t]t]! ]	P                  ]	P                  4      tR]R&    ]! ]	P                  ]	P                  4      tR	]R
&    ]! ]	P"                  ]	P$                  4      tR	]R&    ]! ]	P(                  ]	P*                  4      tR	]R&    ]! ]	P.                  ]	P0                  4      tR	]R&    ]! ]	P4                  ]	P6                  4      tR]R&    R R ltRR R llt]	P>                  t R R lt!]! ]!4      t"]t#R tRt$R# )data_type_tiZ	  zInformation about a data typec                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   data_type_t.<lambda>\	  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r%  \	  rL   r#   rM   rN   rm   propsr  r   	menu_namehotkeyasm_keywordrU  
value_sizec                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   data_type_t.__annotate__x	  s     @ @D @r#   c                .    \         P                  ! V 4      # )zAShould this type be shown in UI menus 
        
:returns: success)r   data_type_t_is_present_in_menusrg   s   &r   is_present_in_menusdata_type_t.is_present_in_menusx	  s     99$??r#   Nc               4    V ^8  d   QhRRRRRRRRRRR	RR
R/# )rX   _self'PyObject *'r   r  r+  rU  r(  r)  r*  r'  rm   r$   )rZ   s   "r   r[   r-  ~	  sK     M Ml M# MM #M25MMMr#   c                	b    \         P                  ! V \         P                  ! WW4WVV4      4       R # r.   )r   data_type_t_swiginitnew_data_type_t)r   r3  r   r+  r(  r)  r*  r'  s   &&&&&&&&r   rU   data_type_t.__init__~	  s,     	''j.H.HU/L 	Mr#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r-  	  s     5 5 5r#   c                	.    \         P                  ! V 4      # r.   )r   data_type_t___get_idrg   s   &r   __get_iddata_type_t.__get_id	  s    ..t44r#   c                	.    V P                   ! V .VO5!   R # r.   __real__init__rS   s   &*r   rU   r8  	      D(4(r#   r$   )    NNNrB  )%r   r   r8   r9   r:   r   r   r   r
   r   data_type_t_props_getdata_type_t_props_setr'  r  data_type_t_name_getdata_type_t_name_setr   data_type_t_menu_name_getdata_type_t_menu_name_setr(  data_type_t_hotkey_getdata_type_t_hotkey_setr)  data_type_t_asm_keyword_getdata_type_t_asm_keyword_setr*  data_type_t_value_size_getdata_type_t_value_size_setr+  r0  rU   delete_data_type_tr%  _data_type_t__get_idr  r@  r<   r$   r#   r   r#  r#  Z	  s7   '-/I!#GH*::JE3 88*D# jBB,,.Is .:<<j FC  
 F F..0K 0$Z%J%J--/J	 /@M
 "445	(	BN)r#   r#  c                  8   ] tR tRt$ Rt]! R R RR7      t]t]! ]	P                  ]	P                  4      tR]R&    ]! ]	P                  ]	P                  4      tR	]R
&    ]! ]	P"                  ]	P$                  4      tR	]R&    ]! ]	P(                  ]	P*                  4      tR	]R&    ]! ]	P.                  ]	P0                  4      tR]R&    ]! ]	P4                  ]	P6                  4      tR]R&    R R ltRR R llt]	P>                  t R R lt!]! ]!4      t"]t#R tRt$R# )data_format_ti	  zInformation about a data formatc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   data_format_t.<lambda>	  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   rT  	  rL   r#   rM   rN   rm   r'  r  r   r(  r)  rU  r+  
text_widthc                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   data_format_t.__annotate__	  s     B BD Br#   c                .    \         P                  ! V 4      # )zCShould this format be shown in UI menus 
        
:returns: success)r   !data_format_t_is_present_in_menusrg   s   &r   r0  !data_format_t.is_present_in_menus	  s     ;;DAAr#   Nc               4    V ^8  d   QhRRRRRRRRRR	R
RRR	/# )rX   r3  r4  r   r  r+  rU  r(  r'  rm   r)  rV  r$   )rZ   s   "r   r[   rX  	  sB     ! !l !# !! #!14!@C!!r#   c                	b    \         P                  ! V \         P                  ! WW4VWg4      4       R # r.   )r   data_format_t_swiginitnew_data_format_t)r   r3  r   r+  r(  r'  r)  rV  s   &&&&&&&&r   rU   data_format_t.__init__	  s0     	))$
1#:%1  	!r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   rX  	  s     7 7 7r#   c                	.    \         P                  ! V 4      # r.   )r   data_format_t___get_idrg   s   &r   r<  data_format_t.__get_id	  s    0066r#   c                	.    V P                   ! V .VO5!   R # r.   r?  rS   s   &*r   rU   r`  	  rA  r#   r$   )rB  NrB  NrB  )%r   r   r8   r9   r:   r   r   r   r
   r   data_format_t_props_getdata_format_t_props_setr'  r  data_format_t_name_getdata_format_t_name_setr   data_format_t_menu_name_getdata_format_t_menu_name_setr(  data_format_t_hotkey_getdata_format_t_hotkey_setr)  data_format_t_value_size_getdata_format_t_value_size_setr+  data_format_t_text_width_getdata_format_t_text_width_setrV  r0  rU   delete_data_format_tr%  _data_format_t__get_idr  r@  r<   r$   r#   r   rR  rR  	  s7   )-/I!#GH*<<j!E3 !::J D#  jDD..0Is 0:>>
  "FC "$Z$$j&M&MOJ	 OzFF//1J 1B! "667	(	BN)r#   rR  c                    V ^8  d   QhRRRR/# )rX   r  rm   rY   z'data_type_t const *'r$   )rZ   s   "r   r[   r[   	  s     1 1s 1&; 1r#   c                .    \         P                  ! V 4      # )z~Get definition of a registered custom data type. 
        
:param dtid: data type id
:returns: data type definition or nullptr)r   get_custom_data_typer  s   &r   rv  rv  	  s    
 **400r#   c                    V ^8  d   QhRRRR/# )rX   dfidrm   rY   z'data_format_t const *'r$   )rZ   s   "r   r[   r[   	  s     3 3 3(? 3r#   c                .    \         P                  ! V 4      # )zGet definition of a registered custom data format. 
        
:param dfid: data format id
:returns: data format definition or nullptr)r   get_custom_data_formatry  s   &r   r{  r{  	  s    
 ,,T22r#   c               $    V ^8  d   QhRRRRRR/# rX   r  rm   ry  rY   rt   r$   )rZ   s   "r   r[   r[   	  !     < <C <s <d <r#   c                .    \         P                  ! W4      # )a  Attach the data format to the data type. 
        
:param dtid: data type id that can use the data format. 0 means all standard data types. Such data formats can be applied to any data item or instruction operands. For instruction operands, the data_format_t::value_size check is not performed by the kernel.
:param dfid: data format id
:returns: true: ok
:returns: false: no such `dtid`, or no such `dfid', or the data format has already been attached to the data type)r   attach_custom_data_formatr  ry  s   &&r   r  r  	       //;;r#   c               $    V ^8  d   QhRRRRRR/# r~  r$   )rZ   s   "r   r[   r[   	  r  r#   c                .    \         P                  ! W4      # )a  Detach the data format from the data type. Unregistering a custom data type detaches all attached data formats, no need to detach them explicitly. You still need unregister them. Unregistering a custom data format detaches it from all attached data types. 
        
:param dtid: data type id to detach data format from
:param dfid: data format id to detach
:returns: true: ok
:returns: false: no such `dtid`, or no such `dfid', or the data format was not attached to the data type)r   detach_custom_data_formatr  s   &&r   r  r  	  r  r#   c               $    V ^8  d   QhRRRRRR/# r~  r$   )rZ   s   "r   r[   r[   	  s&     A A AC A4 Ar#   c                .    \         P                  ! W4      # )zIs the custom data format attached to the custom data type? 
        
:param dtid: data type id
:param dfid: data format id
:returns: true or false)r   is_attached_custom_data_formatr  s   &&r   r  r  	  s     44T@@r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r[   	  s     3 33 3r#   c                 *    \         P                  ! V !  # )zGet list of registered custom data type ids. 
        
:param out: buffer for the output. may be nullptr
:param min_size: minimum value size
:param max_size: maximum value size
:returns: number of custom data types with the specified size limits)r   get_custom_data_typesrT   s   *r   r  r  	  s     ++T22r#   c               $    V ^8  d   QhRRRRRR/# )rX   outz'intvec_t *'r  rm   rY   r$   )rZ   s   "r   r[   r[   
  s!     9 9 9S 9C 9r#   c                .    \         P                  ! W4      # )zGet list of attached custom data formats for the specified data type. 
        
:param out: buffer for the output. may be nullptr
:param dtid: data type id
:returns: number of returned custom data formats. if error, returns -1)r   get_custom_data_formats)r  r  s   &&r   r  r  
  s     --c88r#   c                    V ^8  d   QhRRRR/# rX   r   r  rY   rm   r$   )rZ   s   "r   r[   r[   
  s     2 2 2s 2r#   c                .    \         P                  ! V 4      # )zdGet id of a custom data type. 
        
:param name: name of the custom data type
:returns: id or -1)r   find_custom_data_typer   s   &r   r  r  
  s    
 ++D11r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   
  s     4 4# 4 4r#   c                .    \         P                  ! V 4      # )zhGet id of a custom data format. 
        
:param name: name of the custom data format
:returns: id or -1)r   find_custom_data_formatr  s   &r   r  r  
  s    
 --d33r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  commr  rptblert   rY   r$   )rZ   s   "r   r[   r[   
  s(     	0 	0 	0s 	0D 	0D 	0r#   c                0    \         P                  ! WV4      # )zSet an indented comment. 
        
:param ea: linear address
:param comm: comment string
* nullptr: do nothing (return 0)
* "" : delete comment
:param rptble: is repeatable?
:returns: success)r   set_cmt)r  r  r  s   &&&r   r  r  
  s     b//r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  r  r  rt   rY   r  r$   )rZ   s   "r   r[   r[   (
  s!     * * * * *r#   c                .    \         P                  ! W4      # )zGet an indented comment. 
        
:param ea: linear address. may point to tail byte, the function will find start of the item
:param rptble: get repeatable comment?
:returns: size of comment or -1)r   get_cmt)r  r  s   &&r   r  r  (
  s     b))r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  r  r  rt   rY   r$   )rZ   s   "r   r[   r[   1
  s(     2 2? 2 2d 2d 2r#   c                0    \         P                  ! WV4      # )a  Append to an indented comment. Creates a new comment if none exists. Appends a newline character and the specified string otherwise. 
        
:param ea: linear address
:param str: comment string to append
:param rptble: append to repeatable comment?
:returns: success)r   
append_cmt)r  r  r  s   &&&r   r  r  1
  s       &11r#   c                    V ^8  d   QhRRRR/# )rX   insr  rY   r  r$   )rZ   s   "r   r[   r[   ;
  s     / /- / /r#   c                .    \         P                  ! V 4      # )zmGet predefined comment. 
        
:param ins: current instruction information
:returns: size of comment or -1)r   get_predef_insn_cmt)r  s   &r   r  r  ;
  s    
 ))#..r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R/# 
rX   sEAr  rp   rU  r   r  bin_search_flagsrm   rY   r$   )rZ   s   "r   r[   r[   C
  s8     	D 	D? 	D) 	DG 	D	D,	Dr#   c                0    \         P                  ! WW#4      # )aM  Find forward a byte with the specified value (only 8-bit value from the database). example: ea=4 size=3 will inspect addresses 4, 5, and 6 
        
:param sEA: linear address
:param size: number of bytes to inspect
:param value: value to find
:param bin_search_flags: combination of Search flags
:returns: address of byte or BADADDR)r   	find_byter  rp   r   r  s   &&&&r   r  r  C
  s     5CCr#   c          
     ,    V ^8  d   QhRRRRRRRRR	R/# r  r$   )rZ   s   "r   r[   r[   O
  s8     	E 	EO 	E9 	EW 	E	E,	Er#   c                0    \         P                  ! WW#4      # )ad  Find reverse a byte with the specified value (only 8-bit value from the database). example: ea=4 size=3 will inspect addresses 6, 5, and 4 
        
:param sEA: the lower address of the search range
:param size: number of bytes to inspect
:param value: value to find
:param bin_search_flags: combination of Search flags
:returns: address of byte or BADADDR)r   
find_byterr  s   &&&&r   r  r  O
  s       EDDr#   c                     ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&   ]! ]P                  ]P                  4      tR]R&   ]! ]P                   ]P"                  4      tR	]R
&   ]! ]P&                  ]P(                  4      tR]R&   R tR R ltR R ltR R ltR R lt]P6                  tRtR# )compiled_binpat_ti[
  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   compiled_binpat_t.<lambda>\
  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r  \
  rL   r#   rM   rN   'bytevec_t'bytesmaskz'rangevec_t'strlitsrm   encidxc                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   compiled_binpat_t_swiginitnew_compiled_binpat_trg   s   &r   rU   compiled_binpat_t.__init__i
  s$    --dJ!!5" 5$ 	%r#   c                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   compiled_binpat_t.__annotate__m
  r  r#   c                	.    \         P                  ! V 4      # r.   )r   #compiled_binpat_t_all_bytes_definedrg   s   &r   all_bytes_defined#compiled_binpat_t.all_bytes_definedm
  r  r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r  p
  s     9 9t 9r#   c                	.    \         P                  ! V 4      # r.   )r   compiled_binpat_t_qclearrg   s   &r   r   compiled_binpat_t.qclearp
  s    22488r#   c                    V ^8  d   QhRRRR/# rX   r   r   rY   rt   r$   )rZ   s   "r   r[   r  s
       < <+ <t <r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_t___eq__r   s   &&r   r   compiled_binpat_t.__eq__s
      224;;r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r  v
  r  r#   c                	.    \         P                  ! W4      # r.   )r   compiled_binpat_t___ne__r   s   &&r   r   compiled_binpat_t.__ne__v
  r  r#   r$   N)r   r   r8   r9   r   r   r   r
   r   compiled_binpat_t_bytes_getcompiled_binpat_t_bytes_setr  r  compiled_binpat_t_mask_getcompiled_binpat_t_mask_setr  compiled_binpat_t_strlits_getcompiled_binpat_t_strlits_setr  compiled_binpat_t_encidx_getcompiled_binpat_t_encidx_setr  rU   r  r   r   r   delete_compiled_binpat_tr%  r<   r$   r#   r   r  r  [
  s    -/I!#GH!*"H"H..0E; 0 !F!F--/D+ /$Z%%z'O'O
G\ 
 :BB//1FC 1%D9<<!::r#   r  c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )rX   r  r   r  r  _inr  r  rm   r  rY   rt   r$   )rZ   s   "r   r[   r[   
  sC     N N1 N NNN'*N04Nr#   c                2    \         P                  ! WW#V4      # )zEDeprecated.

Please use compiled_binpat_vec_t.from_pattern() instead.)r   parse_binpat_str)r  r  r  r  r  s   &&&&&r   r  r  
  s    
 &&s<LMMr#   c                 *    \         P                  ! V !  # )a  Search for a set of bytes in the program

This function has the following signatures:

    1. bin_search(start_ea: ida_idaapi.ea_t, end_ea: ida_idaapi.ea_t, data: compiled_binpat_vec_t, flags: int) -> Tuple[ida_idaapi.ea_t, int]
    2. bin_search(start_ea: ida_idaapi.ea_t, end_ea: ida_idaapi.ea_t, image: bytes, mask: bytes, len: int, flags: int) -> ida_idaapi.ea_t

The return value type will differ depending on the form:

    1. a tuple `(matched-address, index-in-compiled_binpat_vec_t)` (1st form)
    2. the address of a match, or ida_idaapi.BADADDR if not found (2nd form)

This is a low-level function; more user-friendly alternatives
are available. Please see 'find_bytes' and 'find_string'.

:param start_ea: linear address, start of range to search
:param end_ea: linear address, end of range to search (exclusive)
:param data: (1st form) the prepared data to search for (see parse_binpat_str())
:param bytes: (2nd form) a set of bytes to match
:param mask: (2nd form) a mask to apply to the set of bytes
:param flags: combination of BIN_SEARCH_* flags
:returns: either a tuple holding both the address of the match and the index of the compiled pattern that matched, or the address of a match (ida_idaapi.BADADDR if not found))r   
bin_searchr  s   *r   r  r  
  s    .   $''r#   c               $    V ^8  d   QhRRRRRR/# rf  r$   )rZ   s   "r   r[   r[   
  !     - -O -O - -r#   c                .    \         P                  ! W4      # )z#Find the next initialized address.
)r   next_initedrj  s   &&r   r  r  
       !!",,r#   c               $    V ^8  d   QhRRRRRR/# rq  r$   )rZ   s   "r   r[   r[   
  r  r#   c                .    \         P                  ! W4      # )z'Find the previous initialized address.
)r   prev_initedrt  s   &&r   r  r  
  r  r#   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )rX   r  r  imagez'uchar const *'r  r   rm   r  rY   rt   r$   )rZ   s   "r   r[   r[   
  sB     J JO JO JJJ14J8<Jr#   c                2    \         P                  ! WW#V4      # )au  Compare 'len' bytes of the program starting from 'ea' with 'image'. 
        
:param ea: linear address
:param image: bytes to compare with
:param mask: array of mask bytes, it's length is 'len'. if the flag BIN_SEARCH_BITMASK is passsed, 'bitwise AND' is used to compare. if not; 1 means to perform the comparison of the corresponding byte. 0 means not to perform. if mask == nullptr, then all bytes of 'image' will be compared. if mask == SKIP_FF_MASK then 0xFF bytes will be skipped
:param len: length of block to compare in bytes.
:param bin_search_flags: combination of Search flags
:returns: 1: equal
:returns: 0: not equal)r   equal_bytes)r  r  r  r   r  s   &&&&&r   r  r  
  s     !!"T8HIIr#   c                     ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R&    ]! ]P                   ]P"                  4      tR]R	&    ]! ]P&                  ]P(                  4      tR
]R&    ]! ]P,                  ]P.                  4      tR]R&    R t]P4                  tRtR# )hidden_range_ti
  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   hidden_range_t.<lambda>
  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r  
  rL   r#   rM   rN   z'char *'descriptionheaderfooterrt   visiblez'bgcolor_t'colorc                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   hidden_range_t_swiginitnew_hidden_range_trg   s   &r   rU   hidden_range_t.__init__
  s$    **42 2! 	"r#   r$   N)r   r   r8   r9   r   r   r   r
   r   hidden_range_t_description_gethidden_range_t_description_setr  r  hidden_range_t_header_gethidden_range_t_header_setr  hidden_range_t_footer_gethidden_range_t_footer_setr  hidden_range_t_visible_gethidden_range_t_visible_setr  hidden_range_t_color_gethidden_range_t_color_setr  rU   delete_hidden_range_tr%  r<   r$   r#   r   r  r  
  s    -/I!#GH$Z&&
&&(K (
 D D,,.FH .
 D D,,.FH .ZBB--/GT /!*"E"E++-E; -" "77r#   r  c                    V ^8  d   QhRRRR/# )rX   haz'hidden_range_t'rY   rt   r$   )rZ   s   "r   r[   r[   
  s     . ., . .r#   c                .    \         P                  ! V 4      # )zUpdate hidden range information in the database. You cannot use this function to change the range boundaries 
        
:param ha: range to update
:returns: success)r   update_hidden_range)r  s   &r   r  r  
  s    
 ))"--r#   c                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   r[     s     
. 
.d 
.r#   c                 *    \         P                  ! V !  # )a{  Mark a range of addresses as hidden. The range will be created in the invisible state with the default color 
        
:param ea1: linear address of start of the address range
:param ea2: linear address of end of the address range
:param description: range parameters
:param header: range parameters
:param footer: range parameters
:param color: the range color
:returns: success)r   add_hidden_ranger  s   *r   r  r    s     &&--r#   c                    V ^8  d   QhRRRR/# rX   r  r  rY   'hidden_range_t *'r$   )rZ   s   "r   r[   r[     s     + + +,> +r#   c                .    \         P                  ! V 4      # )zoGet pointer to hidden range structure, in: linear address. 
        
:param ea: any address in the hidden range)r   get_hidden_rangerB  s   &r   r  r    s     &&r**r#   c                    V ^8  d   QhRRRR/# )rX   r  rm   rY   r  r$   )rZ   s   "r   r[   r[     s     + + + 2 +r#   c                .    \         P                  ! V 4      # )zGet pointer to hidden range structure, in: number of hidden range. 
        
:param n: number of hidden range, is in range 0..get_hidden_range_qty()-1)r   getn_hidden_ranger  s   &r   r  r    s     ''**r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r[      s     - -S -r#   c                 ,    \         P                  ! 4       # )zGet number of hidden ranges.
)r   get_hidden_range_qtyr$   r#   r   r  r     s     **,,r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   &  s     / /_ / /r#   c                .    \         P                  ! V 4      # )zGet number of a hidden range. 
        
:param ea: any address in the hidden range
:returns: number of hidden range (0..get_hidden_range_qty()-1))r   get_hidden_range_numrB  s   &r   r  r  &  s    
 **2..r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   .       0 0o 01C 0r#   c                .    \         P                  ! V 4      # )zGet pointer to previous hidden range. 
        
:param ea: any address in the program
:returns: ptr to hidden range or nullptr if previous hidden range does not exist)r   get_prev_hidden_rangerB  s   &r   r"  r"  .      
 ++B//r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   6  r   r#   c                .    \         P                  ! V 4      # )zGet pointer to next hidden range. 
        
:param ea: any address in the program
:returns: ptr to hidden range or nullptr if next hidden range does not exist)r   get_next_hidden_rangerB  s   &r   r&  r&  6  r#  r#   c                   V ^8  d   QhRR/# rX   rY   r  r$   )rZ   s   "r   r[   r[   >  s     / /1 /r#   c                 ,    \         P                  ! 4       # )zYGet pointer to the first hidden range. 
        
:returns: ptr to hidden range or nullptr)r   get_first_hidden_ranger$   r#   r   r*  r*  >  s     ,,..r#   c                   V ^8  d   QhRR/# r(  r$   )rZ   s   "r   r[   r[   E  s     . .0 .r#   c                 ,    \         P                  ! 4       # )zXGet pointer to the last hidden range. 
        
:returns: ptr to hidden range or nullptr)r   get_last_hidden_ranger$   r#   r   r-  r-  E  s     ++--r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   L  s     + + +D +r#   c                .    \         P                  ! V 4      # )z[Delete hidden range. 
        
:param ea: any address in the hidden range
:returns: success)r   del_hidden_rangerB  s   &r   r0  r0  L  s    
 &&r**r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  torp   rU  rY   rt   r$   )rZ   s   "r   r[   r[   T  s)     3 3 3O 39 33r#   c                0    \         P                  ! WV4      # )zIDA supports memory mapping. References to the addresses from the mapped range use data and meta-data from the mapping range. 
        
:param to: start of the mapping range (existent address)
:param size: size of the range
:returns: success)r   add_mapping)r  r2  rp   s   &&&r   r4  r4  T  s     !!%T22r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r[   ^  rQ  r#   c                .    \         P                  ! V 4      # )zQDelete memory mapping range. 
        
:param ea: any address in the mapped range)r   del_mappingrB  s   &r   r7  r7  ^  rR  r#   c                    V ^8  d   QhRRRR/# r>  r$   )rZ   s   "r   r[   r[   e  s     & &O & &r#   c                .    \         P                  ! V 4      # )zwTranslate address according to current mappings. 
        
:param ea: address to translate
:returns: translated address)r   use_mappingrB  s   &r   r:  r:  e  s    
 !!"%%r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r[   m  s     ) ) )r#   c                 ,    \         P                  ! 4       # )zGet number of mappings.
)r   get_mappings_qtyr$   r#   r   r=  r=  m  s     &&((r#   c                    V ^8  d   QhRRRR/# )rX   r  rm   rY   z'ea_t *, ea_t *, asize_t *'r$   )rZ   s   "r   r[   r[   s  s     % %3 %5 %r#   c                .    \         P                  ! V 4      # )zGet memory mapping range by its number. 
        
:param n: number of mapping range (0..get_mappings_qty()-1)
:returns: false if the specified range does not exist, otherwise returns `from`, `to`, `size`)r   get_mappingr  s   &r   r@  r@  s  s    
 !!!$$r#   c                    V ^8  d   QhRRRR/# )rX   ea1r  ea2r$   )rZ   s   "r   r[   r[     s     > >_ >? >r#   c                0    \         P                  ! WV4      # )a  Enumerates patched bytes in the given range and invokes a callable

:param ea1: start address
:param ea2: end address
:param callable: a Python callable with the following prototype:
                 callable(ea, fpos, org_val, patch_val).
                 If the callable returns non-zero then that value will be
                 returned to the caller and the enumeration will be
                 interrupted.
:returns: Zero if the enumeration was successful or the return
         value of the callback if enumeration was interrupted.)r   visit_patched_bytes)rB  rC  callables   &&&r   rE  rE    s     ))#H==r#   c               $    V ^8  d   QhRRRRRR/# rX   r  r  rp   rm   	gmb_flagsr$   )rZ   s   "r   r[   r[     s!     5 5/ 5 5 5r#   c                0    \         P                  ! WV4      # )a  Get the specified number of bytes of the program.

:param ea: program address
:param size: number of bytes to return
:param gmb_flags: OR'ed combination of GMB_* values (defaults to GMB_READALL)
:returns: the bytes (as bytes object), or None in case of failure)r   	get_bytesr  rp   rI  s   &&&r   rK  rK    s     )44r#   c               $    V ^8  d   QhRRRRRR/# rH  r$   )rZ   s   "r   r[   r[     s!     
> 
>? 
># 
># 
>r#   c                0    \         P                  ! WV4      # )a}  Get the specified number of bytes of the program, and a bitmask
specifying what bytes are defined and what bytes are not.

:param ea: program address
:param size: number of bytes to return
:param gmb_flags: OR'ed combination of GMB_* values (defaults to GMB_READALL)
:returns: a tuple (bytes, mask), or None in case of failure.
         Both 'bytes' and 'mask' are 'str' instances.)r   get_bytes_and_maskrL  s   &&&r   rO  rO    s     ((9==r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   r  r  r   rm   r   r  r$   )rZ   s   "r   r[   r[     s.     @ @O @# @S @ @r#   c                0    \         P                  ! WW#4      # )a  Get contents of string literal, as UTF-8-encoded codepoints.
It works even if the string has not been created in the database yet.

Note that the returned value will be of type 'bytes'; if
you want auto-conversion to unicode strings (that is: real Python
strings), you should probably be using the idautils.Strings class.

:param ea: linear address of the string
:param len: length of the string in bytes (including terminating 0)
:param type: type of the string. Represents both the character encoding,
             <u>and</u> the 'type' of string at the given location.
:param flags: combination of STRCONV_..., to perform output conversion.
:returns: a bytes-filled str object.)r   get_strlit_contents)r  r   r   r  s   &&&&r   rR  rR    s     ))"4??r#   c               $    V ^8  d   QhRRRRRR/# )rX   r  rm   r  rY   r4  r$   )rZ   s   "r   r[   r[     s!     8 8s 83 8L 8r#   c                .    \         P                  ! W4      # )zGet string type information: the string type name (possibly decorated with hotkey markers), and the tooltip.

:param strtype: the string type
:param flags: or'ed PSTF_* constants
:returns: length of generated text)r   print_strlit_type)r  r  s   &&r   rU  rU    s     ''77r#   c                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   r[     s     ' 't 'r#   c                 *    \         P                  ! V !  # )a7  Set operand representation to be 'struct offset'.

This function has the following signatures:

    1. op_stroff(ins: ida_ua.insn_t, n: int, path: List[int], delta: int)
    2. op_stroff(ins: ida_ua.insn_t, n: int, path: ida_pro.tid_array, path_len: int, delta: int) (backward-compatibility only)

Here is an example using this function:

    ins = ida_ua.insn_t()
    if ida_ua.decode_insn(ins, some_address):
        operand = 0
        path = [ida_typeinf.get_named_type_tid("my_stucture_t")] # a one-element path
        ida_bytes.op_stroff(ins, operand, path, 0))r   	op_stroffr  s   *r   rX  rX    s     &&r#   c                 ~    \         P                  ! V !  p\        V\        4      '       d   V^,          V^,          3pV# )a  Get the structure offset path for operand `n`, at the
specified address.

This function has the following signatures:

    1. get_stroff_path(ea: ida_idaapi.ea_t, n : int) -> Tuple[List[int], int]
    2. get_stroff_path(path: tid_array, delta: sval_pointer, ea: ida_idaapi.ea_t, n : int) (backward-compatibility only)

:param ea: address where the operand holds a path to a structure offset (1st form)
:param n: operand number (1st form)
:returns: a tuple holding a (list_of_tid_t's, delta_within_the_last_type), or (None, None))r   get_stroff_pathr   tuple)rT   vals   * r   rZ  rZ    s7     
$
$d
+C#u!fc!fnJr#   c                .    \         P                  ! V 4      # )zRegisters a custom data type.

:param dt: an instance of the data_type_t class
:returns: < 0 if failed to register
:returns: > 0 data type id)r   register_custom_data_typedts   &r   r^  r^     s     //33r#   c                .    \         P                  ! V 4      # )zPUnregisters a custom data type.

:param dtid: the data type id
:returns: Boolean)r   unregister_custom_data_typerw  s   &r   rb  rb  	  s    
 11$77r#   c                .    \         P                  ! V 4      # )zRegisters a custom data format with a given data type.

:param df: an instance of data_format_t
:returns: < 0 if failed to register
:returns: > 0 data format id)r   register_custom_data_format)dfs   &r   rd  rd    s     11"55r#   c                .    \         P                  ! V 4      # )zOUnregisters a custom data format

:param dfid: data format id
:returns: Boolean)r   unregister_custom_data_formatr|  s   &r   rg  rg    s    
 33D99r#   c                    V ^8  d   QhRRRR/# )rX   r  z'bytevec_t const &'rY   r  r$   )rZ   s   "r   r[   r[   "  s     ( () ([ (r#   c                .    \         P                  ! V 4      # r.   )r   __to_bytevec)r  s   &r   rj  rj  "  s    ""3''r#   c                |   R pV  F  p\        V4      ^8X  d#   V! V^ ,          ^ 4      '       g   Rp V'       * # K5  V^ ,          pVR,          pV'       d   V! V4      '       g   Rp V'       * # V F  pV! WP                  4      '       d   K  Rp M	  V'       d   K  V! V4      '       d   K  Rp V'       * # 	  V'       * # )FT:   NN)r   r  )	formatstype_actionformat_action
installingbrokenr  r`  dfsre  s	   &&&&     r   __walk_types_and_formatsrs  +  s    Fq6Q; 1q)) :! * 1BB%C+b// : $R//!F  :k"oo:% $ :r#   c                @    R pR p\        WVR4      pV'       d   ^# R# )a  
Registers multiple data types and formats at once.
To register one type/format at a time use register_custom_data_type/register_custom_data_format

It employs a special table of types and formats described below:

The 'formats' is a list of tuples. If a tuple has one element then it is the format to be registered with dtid=0
If the tuple has more than one element, then tuple[0] is the data type and tuple[1:] are the data formats. For example:
many_formats = [
  (pascal_data_type(), pascal_data_format()),
  (simplevm_data_type(), simplevm_data_format()),
  (makedword_data_format(),),
  (simplevm_data_format(),)
]
The first two tuples describe data types and their associated formats.
The last two tuples describe two data formats to be used with built-in data types.
The data format may be attached to several data types. The id of the
data format is stored in the first data_format_t object. For example:
assert many_formats[1][1] != -1
assert many_formats[2][0] != -1
assert many_formats[3][0] == -1
c                   \        V 4      pVR8X  d   \        V P                  4      pVR8X  d   R# \        W4       V^ 8X  d!   \	        RV P                  V3,          4       R# \	        RV P                  W!3,          4       R# )rl  Fz1Registered format '%s' with built-in types, ID=%dz*   Registered format '%s', ID=%d (dtid=%d)Tr#  )rd  r  r   r  print)re  r  ry  s   && r   __reg_format5register_data_types_and_formats.<locals>.__reg_formatZ  s    *2.2:*2773Drz!$-19EtI  
  >"''B  r#   c                    \        V 4       \        R V P                  V P                  3,          4       V P                  R8g  # )zRegistered type '%s', ID=%dr#  )r^  rv  r   r  r_  s   &r   
__reg_type3register_data_types_and_formats.<locals>.__reg_typei  s3    !"%+rww.>>?uu{r#   Tr#  rs  )rm  rw  rz  oks   &   r   register_data_types_and_formatsr~  B  s)    0 
"'|T	JB1r#   c                @    R pR p\        WVR4      pV'       d   ^# R# )zu
As opposed to register_data_types_and_formats(), this function
unregisters multiple data types and formats at once.
c                |    \        V^ 8X  d   RMR: RV P                  : R24       \        V P                  4       R# )rB  Uz   uznregistering format ''T)rv  r   rg  r  )re  r  s   &&r   __unreg_format9unregister_data_types_and_formats.<locals>.__unreg_formatw  s2    TQYcF.JGG 	%bee,r#   c                    \        R V P                  V P                  3,          4       \        V P                  4       R# )zUnregistering type '%s', ID=%dT)rv  r   r  rb  r_  s   &r   __unreg_type7unregister_data_types_and_formats.<locals>.__unreg_type}  s,    ."''2551AAB#BEE*r#   Fr#  r|  )rm  r  r  r}  s   &   r   !unregister_data_types_and_formatsr  q  s)     
"'	OB1r#   c               <    V ^8  d   QhRRRRRRRRRR	R
RRRRRRR/	# )rX   bsz#typing.Union[bytes, bytearray, str]range_startrm   
range_sizetyping.Optional[int]	range_endr  z/typing.Optional[typing.Union[bytes, bytearray]]r  r  strlit_encoding'typing.Optional[typing.Union[int, str]]rY   r$   )rZ   s   "r   r[   r[     s^      6 S $6J ) 3	
 ,
 ?Br#   c                   \        V\        P                  4      '       d   VP                  VP                  r1\        4       p\        V \        4      '       d   \        V\        4      '       d3   \        P                  ! V4      p	V	^ 8  d   T	pM\        RV,          4      h\        WWV4      p
V
RJ g'   \        V
\        4      '       d*   \        V
4      ^ 8  d   \        RT
;'       g    R: 24      hM4VP                  4       p\        V 4      Vn        Ve   \        V4      Vn        Ve	   W,           p\!        WW4      w  rV# )rB  zUnknown encoding: "%s"FzCould not parse pattern: zunknown error)r   	ida_rangerange_tr0  r1  rA   r  ida_naltadd_encodingr   r  r   r_   rj  r  r  r  )r  r  r  r  r  r  r  r  patternsstrlit_encoding_iparse_resultp0r  _s   &&&&&&&&      r   
find_bytesr    s*    +y0011!,!5!5{7I7IY$&H"cos++ ( 5 5o F 1$"3 8? JKK'r5 J|S$A$AcGG\ >  > >  " # # !#"4(BG,	{x?EBIr#   c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )rX   _strr  r  rm   r  r  r  r  r  r  rY   r$   )rZ   s   "r   r[   r[     sS     M Mc M M 9 M&:M<M  M KNMr#   c           	     `    V P                  R R4      p\        R V,           R ,           WW5VR7      # )"z\22)r  r  r  r  )replacer  )r  r  r  r  r  r  escapeds   &&&&&& r   find_stringr    s5     ll3'GcGmc);OM Mr#   )   )rB  rl  N)rB  )Fr.   )NN(  r:   
__future__r   sysr   _swig_python_version_info__package__r   r   r   builtinsr   ImportErrorr   r%   r+   r5   r   r7   weakrefSWIG_PYTHON_LEGACY_BOOLtypingr=   r>   r?   r&  r  objectrA   "compiled_binpat_vec_t_swigregisterr5  r9  r<  rA  rF  rJ  rN  rQ  rW  r\  rc  ri  ro  rs  rx  r|  r  r  r  r  r  r  r  ITEM_END_FIXUPITEM_END_INITEDITEM_END_NAMEITEM_END_XREFITEM_END_CANCELr  r  r  	GFE_VALUEGFE_IDB_VALUE	GFE_32BITr  r  r  r  r  MS_VALFF_IVLr  r  r  r  r  r  r  r  r  r  r  r  r  r  octet_generator_t_swigregisterr  r  r  r  r  r!  r%  r)  r-  r1  r7  r;  r?  rC  rG  rK  rO  rS  rV  r\  r`  rd  ri  GMB_READALLGMB_WAITBOXrn  rr  MS_CLSFF_CODEFF_DATAFF_TAILFF_UNKrw  r  r  r  r  r  r  r  r  r  r  r  DELIT_SIMPLEDELIT_EXPANDDELIT_DELNAMESDELIT_NOTRUNCDELIT_NOUNAMEDELIT_NOCMTDELIT_KEEPFUNCr  r  r  MS_COMMFF_COMMFF_REFFF_LINEFF_NAMEFF_LABLFF_FLOWFF_SIGNFF_BNOT	FF_UNUSEDr  r  r  r  r  r  r  r  r  
FF_ANYNAMEr  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  	MS_N_TYPE	FF_N_VOID	FF_N_NUMH	FF_N_NUMD	FF_N_CHARFF_N_SEGFF_N_OFF	FF_N_NUMB	FF_N_NUMO	FF_N_ENUMFF_N_FOP	FF_N_STROFF_N_STKFF_N_FLT	FF_N_CUSTr  r  r   r#  r&  r)  r,  r/  r2  r5  r8  r;  r>  rA  rD  rG  rJ  rM  rP  rS  rV  rY  r\  ra  re  
OPND_OUTER	OPND_MASKOPND_ALLrj  rp  ru  ry  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  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  DT_TYPEFF_BYTEFF_WORDFF_DWORDFF_QWORDFF_TBYTE	FF_STRLIT	FF_STRUCTFF_OWORDFF_FLOAT	FF_DOUBLEFF_PACKREALFF_ALIGN	FF_CUSTOMFF_YWORDFF_ZWORDr  r  r  r  r   r#  r&  r)  r,  r/  r2  r5  r8  r;  r>  rA  rD  rG  rJ  rM  rP  rS  rV  rY  r\  r_  rb  re  rh  rk  rn  rq  rt  rw  rz  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  r  r  r  r  ALOPT_IGNHEADSALOPT_IGNPRINTALOPT_IGNCLTALOPT_MAX4KALOPT_ONLYTERMALOPT_APPENDr  STRCONV_ESCAPESTRCONV_REPLCHARSTRCONV_INCLLENr  
PSTF_TNORMPSTF_TBRIEFPSTF_TINLIN
PSTF_TMASKPSTF_HOTKEYPSTF_ENCPSTF_ONLY_ENCPSTF_ATTRIBr  r  r	  r  r  r  r  MS_CODEFF_FUNCFF_IMMDFF_JUMPr  r  r!  r#  data_type_t_swigregister	DTP_NODUPrR  data_format_t_swigregisterrv  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  compiled_binpat_t_swigregisterPBSENC_DEF1BPU
PBSENC_ALLr  r  BIN_SEARCH_CASEBIN_SEARCH_NOCASEBIN_SEARCH_NOBREAKBIN_SEARCH_INITEDBIN_SEARCH_NOSHOWBIN_SEARCH_FORWARDBIN_SEARCH_BACKWARDBIN_SEARCH_BITMASKr  r  r  r  r  hidden_range_t_swigregisterr  r  r  r  r  r  r"  r&  r*  r-  r0  r4  r7  r:  r=  r@  MS_0TYPEFF_0VOIDFF_0NUMHFF_0NUMDFF_0CHARFF_0SEGFF_0OFFFF_0NUMBFF_0NUMOFF_0ENUMFF_0FOPFF_0STROFF_0STKFF_0FLTFF_0CUSTMS_1TYPEFF_1VOIDFF_1NUMHFF_1NUMDFF_1CHARFF_1SEGFF_1OFFFF_1NUMBFF_1NUMOFF_1ENUMFF_1FOPFF_1STROFF_1STKFF_1FLTFF_1CUSTrE  rK  rO  rR  rU  rX  rZ  r^  rb  rd  rg  rj  rs  r~  r  r  BADADDRr  r  r$   r#   r   <module>r8     s<  >" # 9#/"
 L$ L
 $<<  % %  TF Tn  - -.C D:6A$$%%&%>2.2.++((%%('1 1 **,, ((((,,($,   	((  	&$);2 
					#$$ ##&#$$((); ;.  ) )*; <&$$$2,,--&&''(())&**++6 $$$$)+ 
		








			!)!)!)%-$!)	@ 	@ &&&&**(((($$**)*7 




			

















  	!(0!)"*"* ""
(0'&'/+)()&''*4   	  	  	  	  	  	  	  	  	  	04:$$!!""!!""$$$$##%%##++ ""
  	&#$#$&&&&'%**/$	1 	1)	<'	40/'"!"$$!%!!!!!!$$$ $$ $$ $$ $$ $- -) )* *& & 







  	  	  	$$  	" "" "" "# ## ## ## ## ## #$ $" "" "# ## #$ $& &! !! !" "" "" "" "" "" "" "# #& &# ## #" "# #) )) )* ** ** ** ** ** *+ +. .+ ++ +* *+ +0 0. .	; 	;, ,5 55 56 66 66 66 66 66 66 67 7< << <D D: :- -, ,5 54 44 4 ****&&$$**&&	B 	B ** .. ,,9 9 ""
$$$$""
$$(($$	4 	4
C 
C
1 
16 6; ;9 99 9, 










" "! !# #1)& 1)h  # #K 0  	2)F 2)j  % %m 41 13 3< << <A A3 39 92 24 4	0 	0* *2 2/ /	D 	D	E 	E; ;@  ) )*; <**""
N N(4 ,,00 22 00 00 22  44 22 - -- -J J8Y&& 8@  & &~ 6. .
. 
.+ ++ +- -/ /0 00 0/ /. .+ +3 3& && &) )% % 





























> > >I 5 5 
> 
>@ @$8 8' '$$486:( ( 	.,^(     &*);*35,: D 4=K 25F FM Med  s   AI IAI-I,AI-