+
    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 R]4      t]	P8                  ! ]4        ! R R]4      t]	P<                  ! ]4       ]	P>                  t]P@                  t  ]PB                  t! ]PD                  t" ]PF                  t# ]PH                  t$ ]PJ                  t% ]PL                  t& ]PN                  t' ]PP                  t( ]PR                  t) ]PT                  t* ]PV                  t+ ]PX                  t, ]PZ                  t- ]	P\                  t. ]	P^                  t/ ]	P`                  t0 ]	Pb                  t1 ]	Pd                  t2 ]	Pf                  t3 ]	Ph                  t4 ]	Pj                  t5 ]	Pl                  t6 ]	Pn                  t7 ]	Pp                  t8 ]	Pr                  t9 ]	Pt                  t: ]	Pv                  t; ]	Px                  t< ]	Pz                  t= ]	P|                  t> ]	P~                  t? ]	P                  t@ ]	P                  tA ]	P                  tB ]	P                  tC ]	P                  tD ]	P                  tE R R ltFR R ltGR R ltHR R ltI ! R R]4      tJ]	P                  ! ]J4       ]	P                  tL ]	P                  tM ]	P                  tN R R ltORPR R lltPR R  ltQR! R" ltRR# R$ ltS ! R% R&]4      tT]	P                  ! ]T4       ]	P                  tV ]	P                  tW ]	P                  tX ]	P                  tY ]	P                  tZ ]	P                  t[ ]	P                  t\ ]	P                  t] ]	P                  t^ ]	P                  t_ ]	P                  t` ]	P                  ta ]	P                  tb ]	P                  tc ]	P                  td ]	P                  te ]	P                  tf ]	P                  tg ]	P                  th ]	P                  ti ]	P                  tj ]	P                  tk ]	P                  tl ]	P                  tm ]	P                  tn ]	P                  to ]	P                  tp ]	P                  tq ]	P                  tr ]	P                  ts ]	P                  tt ]	P                  tu ]	P                  tv ]	P                  tw ]	P                  tx ]	P                  ty ]	P                  tz ]	P                  t{ ]	P                  t| ]	P                  t} ]	P                  t~ ]	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]	EP                  t]	EP                  t ]	EP                  t ]	EP                  t  ! R' R(]T4      t]	EP                  ! ]4       ]	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.                  tRQR) R* lltR+ R, lt]	EP4                  t ]	EP6                  t ]	EP8                  t ]	EP:                  t R- R. ltR/ R0 ltR1 R2 ltRRR3 R4 lltR5 R6 ltR7 R8 ltRSR9 R: lltR; R< lt ! R= R>]4      t]	EPN                  ! ]4       R? R@ ltRA tRB RC ltRTRD RE lltRTRF RG lltRH RI ltRJ RK ltRL RM ltRN RO lt]t^t^tR#   ] d	    ^ RIt ELUi ; i)Ua9  Functions that deal with the disassembling of program instructions.

There are 2 kinds of functions:

* functions that are called from the kernel to disassemble an instruction.
  These functions call IDP module for it.
* functions that are called from IDP module to disassemble an instruction.
  We will call them 'helper functions'.


Disassembly of an instruction is made in three steps:

0. analysis: ana.cpp
1. emulation: emu.cpp
2. conversion to text: out.cpp


The kernel calls the IDP module to perform these steps. At first, the kernel
always calls the analysis. The analyzer must decode the instruction and fill
the insn_t instance that it receives through its callback. It must not change
anything in the database.

The second step, the emulation, is called for each instruction. This step must
make necessary changes to the database, plan analysis of subsequent instructions,
track register values, memory contents, etc. Please keep in mind that the kernel
may call the emulation step for any address in the program - there is no ordering
of addresses. Usually, the emulation is called for consecutive addresses but
this is not guaranteed.

The last step, conversion to text, is called each time an instruction is
displayed on the screen. The kernel will always call the analysis step before
calling the text conversion step. The emulation and the text conversion steps
should use the information stored in the insn_t instance they receive. They
should not access the bytes of the instruction and decode it again - this
should only be done in the analysis step.

.. 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 instruction operations, see :mod:`ida_domain.instructions`.)annotations)version_info.)_ida_uaNc                     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   & >C:\Users\user\Downloads\ida93sp2\portable_win\python\ida_ua.py
_swig_reprr   7   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_attrB   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_attrR   s:    3j1CX&N&N5! !H3!NOOr#   r$   )r    r)   s   f r   '_swig_setattr_nondynamic_class_variabler+   P   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>.wrapper]   s'    s}}cll6G6G6IJJr#   r$   )r2   r3   s   f r   _swig_add_metaclassr5   Z   s    KNr#   c                  >    ] tR t^bt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   b   s    U9$:J:JKKr#   r7   )TupleListUnionc                      ] tR t^mt$ ]! R R RR7      t]t]! ]P                  4      t
R]R&   R R ltR	 R
 ltR R ltR R ltR R ltR R lt]P&                  t]! ]]4      t]P,                  tRtR# )operands_arrayc                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>operands_array.<lambda>n       r#   c                	8    V P                   P                  V4      # r.   rC   rE   vs   &&r   rF   rG   n       AFFJJqMr#   The membership flagdoc'op_t (&)[8]'datac                   V ^8  d   QhRR/# )   rQ   rP   r$   )formats   "r   __annotate__operands_array.__annotate__s   s     P P] Pr#   c                	\    \         P                  ! V \         P                  ! V4      4       R # r.   )r   operands_array_swiginitnew_operands_array)r   rQ   s   &&r   __init__operands_array.__init__s   s    ''g.H.H.NOr#   c                   V ^8  d   QhRR/# rS   returnintr$   )rT   s   "r   rU   rV   v   s     4 4 4r#   c                	.    \         P                  ! V 4      # r.   )r   operands_array___len__r   s   &r   __len__operands_array.__len__v       --d33r#   c                    V ^8  d   QhRRRR/# )rS   ir_   r^   z'op_t const &'r$   )rT   s   "r   rU   rV   y   s     ; ;S ;N ;r#   c                	.    \         P                  ! W4      # r.   )r   operands_array___getitem__)r   rg   s   &&r   __getitem__operands_array.__getitem__y   s    11$::r#   c               $    V ^8  d   QhRRRRRR/# )rS   rg   r_   rK   'op_t'r^   Noner$   )rT   s   "r   rU   rV   |   s!     > >S >V >t >r#   c                	0    \         P                  ! WV4      # r.   )r   operands_array___setitem__)r   rg   rK   s   &&&r   __setitem__operands_array.__setitem__|   s    11$1==r#   c                   V ^8  d   QhRR/# )rS   r^   z'bytevec_t'r$   )rT   s   "r   rU   rV      s     7 7; 7r#   c                	.    \         P                  ! V 4      # r.   )r   operands_array__get_bytesrb   s   &r   
_get_bytesoperands_array._get_bytes       0066r#   c                    V ^8  d   QhRRRR/# )rS   btsz'bytevec_t const &'r^   rn   r$   )rT   s   "r   rU   rV      s     < <1 <T <r#   c                	.    \         P                  ! W4      # r.   )r   operands_array__set_bytes)r   rz   s   &&r   
_set_bytesoperands_array._set_bytes   s    00;;r#   r$   N)r   r   r8   r9   r   r   r   r
   r   operands_array_data_getrQ   __annotations__rZ   rc   rj   rq   rv   r}   
ida_idaapi_bounded_getitem_iterator__iter__bytesdelete_operands_array__swig_destroy__r<   r$   r#   r   rA   rA   m   sq    -/I!#GH"7#B#BCD-CP4;>7<33HZ,E44r#   rA   c                     ] tR t^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 R ltR R ltR R lt]! ]P8                  ]P:                  4      tR]R&    ]! ]P>                  ]P@                  4      t!R]R&    ]! ]PD                  ]PF                  4      t$R]R&    R R lt%]! ]PL                  ]PN                  4      t(R]R&    R R lt)]! ]PT                  ]PV                  4      t,R]R&    ]! ]PZ                  ]P\                  4      t/R]R &    ]! ]P`                  ]Pb                  4      t2R	]R!&   ]! ]Pf                  ]Ph                  4      t5R	]R"&   ]! ]Pl                  ]Pn                  4      t8R	]R#&   ]! ]Pr                  ]Pt                  4      t;R	]R$&   R% t<R& R' lt=R( R) lt>R* R+ lt?R, R- lt@R. R/ ltAR0 R1 ltBR2 R3 ltCR4 R5 ltDR6 R7 ltER8 R9 ltFR: R; ltGR< tH]! ]=]>4      t! ]! ]=]>4      t$ ]! ]?]@4      t( ]! ]A]B4      tI]! ]C]D4      t, ]! ]E]F4      t/ ]P                  tKR=tLR># )?op_tc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   op_t.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r      rL   r#   rM   rN   'uchar'nz
'optype_t'r   'char'offboffoflagsc                   V ^8  d   QhRR/# rS   r^   rn   r$   )rT   s   "r   rU   op_t.__annotate__        , ,$ ,r#   c                .    \         P                  ! V 4      # )zSet operand to be shown.
)r   op_t_set_shownrb   s   &r   	set_shownop_t.set_shown        %%d++r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r      r   r#   c                .    \         P                  ! V 4      # )zSet operand to hidden.
)r   op_t_clr_shownrb   s   &r   	clr_shownop_t.clr_shown   r   r#   c                   V ^8  d   QhRR/# rS   r^   boolr$   )rT   s   "r   rU   r      s     ( (d (r#   c                .    \         P                  ! V 4      # )zIs operand set to be shown?
)r   
op_t_shownrb   s   &r   shown
op_t.shown   s     !!$''r#   'op_dtype_t'dtype'uint16'regphrasec                    V ^8  d   QhRRRR/# )rS   rr_   r^   r   r$   )rT   s   "r   rU   r           , , ,t ,r#   c                .    \         P                  ! W4      # )zIs register operand?
)r   op_t_is_regr   r   s   &&r   is_regop_t.is_reg        ""4++r#   r_   r   c                    V ^8  d   QhRRRR/# )rS   rK   r_   r^   r   r$   )rT   s   "r   rU   r      r   r#   c                .    \         P                  ! W4      # )zIs immediate operand?
)r   op_t_is_immr   rK   s   &&r   is_immop_t.is_imm   r   r#   ida_idaapi.ea_taddrspecval	specflag1	specflag2	specflag3	specflag4c                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   op_t_swiginitnew_op_trb   s   &r   rZ   op_t.__init__   s    dG$4$4$67r#   c                   V ^8  d   QhRR/# rS   r^   r   r$   )rT   s   "r   rU   r      s     5 58 5r#   c                	.    \         P                  ! V 4      # r.   )r   op_t___get_reg_phrase__rb   s   &r   __get_reg_phrase__op_t.__get_reg_phrase__       ..t44r#   c                    V ^8  d   QhRRRR/# )rS   r   r   r^   rn   r$   )rT   s   "r   rU   r      s     8 8H 8 8r#   c                	.    \         P                  ! W4      # r.   )r   op_t___set_reg_phrase__r   s   &&r   __set_reg_phrase__op_t.__set_reg_phrase__   s    ..t77r#   c                   V ^8  d   QhRR/# rS   r^   r   r$   )rT   s   "r   rU   r      s     0 0o 0r#   c                	.    \         P                  ! V 4      # r.   )r   op_t___get_value__rb   s   &r   __get_value__op_t.__get_value__       ))$//r#   c                    V ^8  d   QhRRRR/# rS   rK   r   r^   rn   r$   )rT   s   "r   rU   r      s     3 3 3$ 3r#   c                	.    \         P                  ! W4      # r.   )r   op_t___set_value__r   s   &&r   __set_value__op_t.__set_value__   s    ))$22r#   c                   V ^8  d   QhRR/# rS   r^   'uint64'r$   )rT   s   "r   rU   r      s     2 2 2r#   c                	.    \         P                  ! V 4      # r.   )r   op_t___get_value64__rb   s   &r   __get_value64__op_t.__get_value64__       ++D11r#   c                    V ^8  d   QhRRRR/# )rS   rK   r   r^   rn   r$   )rT   s   "r   rU   r      s     5 5 5T 5r#   c                	.    \         P                  ! W4      # r.   )r   op_t___set_value64__r   s   &&r   __set_value64__op_t.__set_value64__       ++D44r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r      s     / /_ /r#   c                	.    \         P                  ! V 4      # r.   )r   op_t___get_addr__rb   s   &r   __get_addr__op_t.__get_addr__   s    ((..r#   c                    V ^8  d   QhRRRR/# r   r$   )rT   s   "r   rU   r      s     2 2o 2 2r#   c                	.    \         P                  ! W4      # r.   )r   op_t___set_addr__r   s   &&r   __set_addr__op_t.__set_addr__   s    ((11r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r      s     2 2 2r#   c                	.    \         P                  ! V 4      # r.   )r   op_t___get_specval__rb   s   &r   __get_specval__op_t.__get_specval__   r   r#   c                    V ^8  d   QhRRRR/# r   r$   )rT   s   "r   rU   r      s     5 5 5D 5r#   c                	.    \         P                  ! W4      # r.   )r   op_t___set_specval__r   s   &&r   __set_specval__op_t.__set_specval__   r   r#   c                    V ^8  d   QhRRRR/# )rS   otherrm   r^   rn   r$   )rT   s   "r   rU   r      s     0 0F 0d 0r#   c                	.    \         P                  ! W4      # r.   )r   op_t_assignr   r  s   &&r   assignop_t.assign   s    ""4//r#   c                4    V P                   VP                   8H  # )z;Checks if the operand accesses the given processor register)r   r   s   &&r   has_regop_t.has_reg   s    xx155  r#   r$   N)Mr   r   r8   r9   r   r   r   r
   r   
op_t_n_get
op_t_n_setr   r   op_t_type_getop_t_type_setr   op_t_offb_getop_t_offb_setr   op_t_offo_getop_t_offo_setr   op_t_flags_getop_t_flags_setr   r   r   r   op_t_dtype_getop_t_dtype_setr   op_t_reg_getop_t_reg_setr   op_t_phrase_getop_t_phrase_setr   r   op_t_value_getop_t_value_setr   r   op_t_addr_getop_t_addr_setr   op_t_specval_getop_t_specval_setr   op_t_specflag1_getop_t_specflag1_setr   op_t_specflag2_getop_t_specflag2_setr   op_t_specflag3_getop_t_specflag3_setr   op_t_specflag4_getop_t_specflag4_setr   rZ   r   r   r   r   r   r   r   r   r   r   r  r	  value64delete_op_tr   r<   r$   r#   r   r   r      s   -/I!#GH',,g.@.@AAwA 5 5w7L7LMD*MG1173H3HID&IG1173H3HID&Ig44g6L6LME7M,
,
( #7#9#97E< W1173G3GHCH 7 7FH , '00'2H2HIE3I, %W%:%:GD/ '(@(@' G_  !;!;WIv  !;!;WIv  !;!;WIv  !;!;WIv 8580325/2250! %'9
:C(*<=F]M2E8GL,/D8G**r#   r   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rS   insn'insn_t'tor   opoffr_   r   'cref_t'r^   rn   r$   )rT   s   "r   rU   rU     1     8 8 8o 8c 888r#   c                0    \         P                  ! WW#4      # r.   )r   insn_add_crefr,  r.  r/  r   s   &&&&r   r3  r3          577r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rS   r,  r-  r.  r   r/  r_   r   'dref_t'r^   rn   r$   )rT   s   "r   rU   rU     r1  r#   c                0    \         P                  ! WW#4      # r.   )r   insn_add_drefr4  s   &&&&r   r9  r9    r5  r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rS   r,  r-  rE   rm   r   r7  outfr_   r^   r   r$   )rT   s   "r   rU   rU     s0     ; ;X ;& ; ; ;;r#   c                0    \         P                  ! WW#4      # r.   )r   insn_add_off_drefs)r,  rE   r   r;  s   &&&&r   r=  r=    s    %%dt::r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rS   r,  r-  rE   rm   rK   	'adiff_t'r   r_   r^   r   r$   )rT   s   "r   rU   rU     s0     9 9X 9& 9Y 9s 99r#   c                0    \         P                  ! WW#4      # r.   )r   insn_create_stkvar)r,  rE   rK   r   s   &&&&r   rA  rA    s    %%dq88r#   c                  >   ] tR tRt$ ]! R R RR7      t]tR 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&    ]! ]	P:                  ]	P<                  4      tR]R&   ]! ]	P@                  ]	PB                  4      t"R]R&   ]! ]	PF                  ]	PH                  4      t%R]R&    ]! ]	PL                  ]	PN                  4      t(R]R&    ]! ]	PR                  ]	PT                  4      t+R]R&    ]! ]	PX                  ]	PZ                  4      t.R]R&    R R lt/R R lt0R R  lt1R! R" lt2R# R$ lt3R% R& lt4R' R( lt5R) R* lt6R+ R, lt7R- R. lt8R/ R0 lt9R1 R2 lt:R3 R4 lt;R5 R6 lt<R7 R8 lt=R9 R: lt>R; R< lt?R= R> lt@R? R@ ltA]! ]:4      t. ]! RA 4      tB]! RB 4      tC]! RC 4      tD]! RD 4      tE]! RE 4      tF]! RF 4      tG]! RG 4      tH]! RH 4      tI]! ]<]=4      t RI tJRJ tK]	P                  tMRKtNRL# )Minsn_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   insn_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   rE    rL   r#   rM   rN   c                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   insn_t_swiginit
new_insn_trb   s   &r   rZ   insn_t.__init__  s    g&8&8&:;r#   r   csipear   itypesizer_   auxprefz'uint16 [2]'auxpref_u16z'uint8 [4]'
auxpref_u8r   segprefinsnprefz'int16'r   z
'op_t [8]'opsc                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   insn_t.__annotate__       - - -r#   c                .    \         P                  ! V 4      # )zIs a macro instruction?
)r   insn_t_is_macrorb   s   &r   is_macroinsn_t.is_macro       &&t,,r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rW    rX  r#   c                .    \         P                  ! V 4      # )zBelongs to a 64-bit segment?
)r   insn_t_is_64bitrb   s   &r   is_64bitinsn_t.is_64bit  r]  r#   c                   V ^8  d   QhRR/# )rS   r^   z'uint8'r$   )rT   s   "r   rU   rW    s     2 2g 2r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t_get_next_byterb   s   &r   get_next_byteinsn_t.get_next_byte  r   r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rW    s     2 2h 2r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t_get_next_wordrb   s   &r   get_next_wordinsn_t.get_next_word  r   r#   c                   V ^8  d   QhRR/# r]   r$   )rT   s   "r   rU   rW    s     3 3s 3r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t_get_next_dwordrb   s   &r   get_next_dwordinsn_t.get_next_dword      ,,T22r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rW    s     3 3x 3r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t_get_next_qwordrb   s   &r   get_next_qwordinsn_t.get_next_qword  rr  r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rW    s     : :d :r#   c                	2    \         P                  ! V .VO5!  # r.   )r   insn_t_create_op_datar   argss   &*r   create_op_datainsn_t.create_op_data  s    ,,T9D99r#   c               (    V ^8  d   QhRRRRRRRR/# )	rS   rE   rm   rK   r?  stkvar_flagsr_   r^   r   r$   )rT   s   "r   rU   rW    s.     F Fv F) F3 F$ Fr#   c                	0    \         P                  ! WW#4      # r.   )r   insn_t_create_stkvar)r   rE   rK   r  s   &&&&r   create_stkvarinsn_t.create_stkvar  s    ++DQEEr#   c               (    V ^8  d   QhRRRRRRRR/# )	rS   r.  r   r/  r_   r   r0  r^   rn   r$   )rT   s   "r   rU   rW    (     > >? >3 >h >$ >r#   c                	0    \         P                  ! WW#4      # r.   )r   insn_t_add_crefr   r.  r/  r   s   &&&&r   add_crefinsn_t.add_cref      &&t==r#   c               (    V ^8  d   QhRRRRRRRR/# )	rS   r.  r   r/  r_   r   r7  r^   rn   r$   )rT   s   "r   rU   rW    r  r#   c                	0    \         P                  ! WW#4      # r.   )r   insn_t_add_drefr  s   &&&&r   add_drefinsn_t.add_dref  r  r#   c               (    V ^8  d   QhRRRRRRRR/# )	rS   rE   rm   r   r7  r;  r_   r^   r   r$   )rT   s   "r   rU   rW    s/     A Av AX AS AAr#   c                	0    \         P                  ! WW#4      # r.   )r   insn_t_add_off_drefs)r   rE   r   r;  s   &&&&r   add_off_drefsinsn_t.add_off_drefs  s    ++DT@@r#   c                   V ^8  d   QhRR/# )rS   r^   z'wrapped_array_t< op_t,8 >'r$   )rT   s   "r   rU   rW    s     0 07 0r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t___get_ops__rb   s   &r   __get_ops__insn_t.__get_ops__  r   r#   c                    V ^8  d   QhRRRR/# )rS   r   r_   r^   'op_t *'r$   )rT   s   "r   rU   rW    s     7 7 7 7r#   c                	.    \         P                  ! W4      # r.   )r   insn_t___get_operand__r   r   s   &&r   __get_operand__insn_t.__get_operand__      --d66r#   c                   V ^8  d   QhRR/# r]   r$   )rT   s   "r   rU   rW    s     4 4 4r#   c                	.    \         P                  ! V 4      # r.   )r   insn_t___get_auxpref__rb   s   &r   __get_auxpref__insn_t.__get_auxpref__  re   r#   c                    V ^8  d   QhRRRR/# )rS   rK   r_   r^   rn   r$   )rT   s   "r   rU   rW    s     7 7 7 7r#   c                	.    \         P                  ! W4      # r.   )r   insn_t___set_auxpref__r   s   &&r   __set_auxpref__insn_t.__set_auxpref__  r  r#   c                    V ^8  d   QhRRRR/# )rS   r  r-  r^   rn   r$   )rT   s   "r   rU   rW    s     2 2H 2 2r#   c                	.    \         P                  ! W4      # r.   )r   insn_t_assignr  s   &&r   r  insn_t.assign  s    $$T11r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rW    s     9 9T 9r#   c                2    \         P                  ! V .VO5!  # )z!see processor_t::is_canon_insn()
)r   insn_t_is_canon_insnr{  s   &*r   is_canon_insninsn_t.is_canon_insn  s     ++D8488r#   c                   V ^8  d   QhRR/# r]   r$   )rT   s   "r   rU   rW    s     = = =r#   c                2    \         P                  ! V .VO5!  # )zsee instruc_t::feature
)r   insn_t_get_canon_featurer{  s   &*r   get_canon_featureinsn_t.get_canon_feature  s     //<t<<r#   c                   V ^8  d   QhRR/# )rS   r^   strr$   )rT   s   "r   rU   rW    s     : :c :r#   c                2    \         P                  ! V .VO5!  # )zsee instruc_t::name
)r   insn_t_get_canon_mnemr{  s   &*r   get_canon_mneminsn_t.get_canon_mnem  s     ,,T9D99r#   c                	$    V P                  ^ 4      #     r  rb   s   &r   rF   rE         4 4Q 7r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE     r  r#   c                	$    V P                  ^4      # )rS   r  rb   s   &r   rF   rE  !  r  r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE  "  r  r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE  #  r  r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE  $  r  r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE  %  r  r#   c                	$    V P                  ^4      # )   r  rb   s   &r   rF   rE  &  r  r#   c                	0   a  V 3R  l\        ^ ^4       4       # )c              3  J   <"   T F  pSP                   V,          x  K  	  R # 5ir.   )rU  ).0idxr   s   & r   	<genexpr>"insn_t.__iter__.<locals>.<genexpr>,  s     5#s    #)rangerb   s   fr   r   insn_t.__iter__+  s    5q!55r#   c                B    V^8  d   \         hV P                  V,          # )zQ
Operands can be accessed directly as indexes

:returns: an operand of type op_t
)KeyErrorrU  )r   r  s   &&r   rj   insn_t.__getitem__.  s     !8N88C= r#   r$   N)Or   r   r8   r9   r   r   r   r
   rZ   r   insn_t_cs_getinsn_t_cs_setrK  r   insn_t_ip_getinsn_t_ip_setrL  insn_t_ea_getinsn_t_ea_setrM  insn_t_itype_getinsn_t_itype_setrN  insn_t_size_getinsn_t_size_setrO  insn_t_auxpref_getinsn_t_auxpref_setrP  insn_t_auxpref_u16_getinsn_t_auxpref_u16_setrQ  insn_t_auxpref_u8_getinsn_t_auxpref_u8_setrR  insn_t_segpref_getinsn_t_segpref_setrS  insn_t_insnpref_getinsn_t_insnpref_setrT  insn_t_flags_getinsn_t_flags_setr   insn_t_ops_getinsn_t_ops_setrU  r[  ra  rf  rk  rp  rv  r}  r  r  r  r  r  r  r  r  r  r  r  r  Op1Op2Op3Op4Op5Op6Op7Op8r   rj   delete_insn_tr   r<   r$   r#   r   rC  rC    s   -/I!#GH<"7#8#8':O:O 
B 
"7#8#8':O:O 
B 
"7#8#8':O:O 
B 
w77E8 g55w7N7NOD(OG66GS  ()G)G&&!(K (&w'D'D%%'J 'w997GV  ; ;WHf g66E7 w55w7M7MNCN-
-
2233:F>>A074729
=
: ;
C
7
8C
7
8C
7
8C
7
8C
7
8C
7
8C
7
8C
7
8C8G6	! ,,r#   rC  c                   V ^8  d   QhRR/# r]   r$   )rT   s   "r   rU   rU   G  s     " "S "r#   c                 ,    \         P                  ! 4       # )zNumber of instructions to look back. This variable is not used by the kernel. Its value may be specified in ida.cfg: LOOKBACK = <number>. IDP may use it as you like it. (TMS module uses it) 
        )r   get_lookbackr$   r#   r   r  r  G  s     !!r#   c               (    V ^8  d   QhRRRRRRRR/# )rS   r,  r-  r   r_   rgnumr^   r   r$   )rT   s   "r   rU   rU   M  s(     0 0x 0C 03 0_ 0r#   c                0    \         P                  ! WV4      # r.   )r   calc_dataseg)r,  r   r  s   &&&r   r  r  M  s    //r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rU   Q       & & &r#   c                 *    \         P                  ! V !  # r.   )r   map_data_ear|  s   *r   r
  r
  Q      %%r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rU   U  r  r#   c                 *    \         P                  ! V !  # r.   )r   map_code_ear  s   *r   r  r  U  r  r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rU   Y  s     ! !O !r#   c                 *    \         P                  ! V !  # r.   )r   map_ear  s   *r   r  r  Y  s    >>4  r#   c                     ] tR tRt$ ]! R R RR7      tR 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R R ltR R ltR R ltR R ltRwR R lltRwR R l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'RxR1 R2 llt(R3 R4 lt)R5 R6 lt*R7 R8 lt+RxR9 R: llt,R; R< lt-R= R> lt.RyR? R@ llt/RA RB lt0RC RD lt1RE RF lt2RG RH lt3RI RJ lt4RxRK RL llt5RM RN lt6RO RP lt7RQ RR lt8RyRS RT llt9RyRU RV llt:RzRX RY llt;RZ R[ lt<R\ R] lt=R{R^ R_ llt>R` Ra lt?Rb Rc lt@Rd Re ltARf Rg ltBRh Ri ltCRj Rk ltDRl Rm ltERn Ro ltFRp Rq ltGRr Rs ltHRt Ru ltIRvtJRW# )|outctx_base_ti]  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   outctx_base_t.<lambda>^  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r  ^  rL   r#   rM   rN   c                	    \        R 4      hzNo constructor definedr   r   r|  kwargss   &*,r   rZ   outctx_base_t.__init__a      566r#   r   insn_ear  outbufz	'flags_t'F32r_   default_lnnumc                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   outctx_base_t.__annotate__s       : :t :r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_only_main_linerb   s   &r   only_main_lineoutctx_base_t.only_main_lines      33D99r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  v  s     5 5$ 5r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_multilinerb   s   &r   	multilineoutctx_base_t.multilinev  r   r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  y       6 64 6r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_force_coderb   s   &r   
force_codeoutctx_base_t.force_codey      //55r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  |  r1  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_stack_viewrb   s   &r   
stack_viewoutctx_base_t.stack_view|  r6  r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$         9 9d 9r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_display_voidsrb   s   &r   display_voidsoutctx_base_t.display_voids      22488r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    r%  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_display_hiddenrb   s   &r   display_hiddenoutctx_base_t.display_hidden  r*  r#   c                    V ^8  d   QhRRRR/# rS   onr   r^   rn   r$   )rT   s   "r   rU   r$    s     = = =T =r#   c                	.    \         P                  ! W4      # r.   )r   outctx_base_t_set_gen_xrefsr   rJ  s   &&r   set_gen_xrefsoutctx_base_t.set_gen_xrefs  s    224<<r#   c                    V ^8  d   QhRRRR/# rI  r$   )rT   s   "r   rU   r$    s     ; ;d ;4 ;r#   c                	.    \         P                  ! W4      # r.   )r   outctx_base_t_set_gen_cmtrM  s   &&r   set_gen_cmtoutctx_base_t.set_gen_cmt  s    00::r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    r=  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_clr_gen_labelrb   s   &r   clr_gen_labeloutctx_base_t.clr_gen_label  rB  r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    r=  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_set_gen_labelrb   s   &r   set_gen_labeloutctx_base_t.set_gen_label  rB  r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    s     C C Cr#   c                	.    \         P                  ! V 4      # r.   )r   %outctx_base_t_set_gen_demangled_labelrb   s   &r   set_gen_demangled_label%outctx_base_t.set_gen_demangled_label  s    <<TBBr#   c                    V ^8  d   QhRRRR/# rS   rM  r   r^   rn   r$   )rT   s   "r   rU   r$    s     @ @? @d @r#   c                	.    \         P                  ! W4      # r.   )r   outctx_base_t_set_comment_addrr   rM  s   &&r   set_comment_addroutctx_base_t.set_comment_addr  s    55d??r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$         ; ; ;r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_set_dlbind_opndrb   s   &r   set_dlbind_opndoutctx_base_t.set_dlbind_opnd      44T::r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    rl  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_print_label_nowrb   s   &r   print_label_nowoutctx_base_t.print_label_now  rq  r#   c                   V ^8  d   QhRR/# r]   r$   )rT   s   "r   rU   r$    s     > >3 >r#   c                	.    \         P                  ! V 4      # r.   )r    outctx_base_t_forbid_annotationsrb   s   &r   forbid_annotations outctx_base_t.forbid_annotations  s    77==r#   c                    V ^8  d   QhRRRR/# )rS   saved_flagsr_   r^   rn   r$   )rT   s   "r   rU   r$    s     I IC I4 Ir#   c                	.    \         P                  ! W4      # r.   )r   outctx_base_t_restore_ctxflags)r   r}  s   &&r   restore_ctxflagsoutctx_base_t.restore_ctxflags  s    55dHHr#   c                    V ^8  d   QhRRRR/# )rS   rT   r  r^   r_   r$   )rT   s   "r   rU   r$    s     > > > >r#   c                .    \         P                  ! W4      # )z------------------------------------------------------------------------- Functions to append text to the current output buffer (outbuf) Append a formatted string to the output string. 
        
:returns: the number of characters appended)r   outctx_base_t_out_printfr   rT   s   &&r   
out_printfoutctx_base_t.out_printf  s     //==r#   c               $    V ^8  d   QhRRRRRR/# )rS   rE   rm   r;  r_   r^   'flags64_t'r$   )rT   s   "r   rU   r$    s!     > >6 > >+ >r#   c                0    \         P                  ! WV4      # )a  Output immediate value. Try to use this function to output all constants of instruction operands. This function outputs a number from x.addr or x.value in the form determined by F. It outputs colored text. 
        
:param x: value to output
:param outf: Output value flags
:returns: flags of the output value, otherwise:
:returns: -1: if printed a number with COLOR_ERROR
:returns: 0: if printed a nice number or character or segment or enum)r   outctx_base_t_out_value)r   rE   r;  s   &&&r   	out_valueoutctx_base_t.out_value  s     ..t==r#   c                    V ^8  d   QhRRRR/# rS   cr   r^   rn   r$   )rT   s   "r   rU   r$    s     9 9F 9d 9r#   c                .    \         P                  ! W4      # )z,Output a character with COLOR_SYMBOL color.
)r   outctx_base_t_out_symbolr   r  s   &&r   
out_symboloutctx_base_t.out_symbol  s     //88r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r   r   r_   r^   rn   r$   )rT   s   "r   rU   r$    s!     ; ;6 ;c ;T ;r#   c                0    \         P                  ! WV4      # )z#Append a character multiple times.
)r   outctx_base_t_out_chars)r   r  r   s   &&&r   	out_charsoutctx_base_t.out_chars  s     ..t::r#   c                    V ^8  d   QhRRRR/# )rS   len	'ssize_t'r^   rn   r$   )rT   s   "r   rU   r$         ; ;i ;4 ;r#   c                .    \         P                  ! W4      # )z=Appends spaces to outbuf until its tag_strlen becomes 'len'.
)r   outctx_base_t_out_spaces)r   r  s   &&r   
out_spacesoutctx_base_t.out_spaces       //::r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  color	'color_t'r^   rn   r$   )rT   s   "r   rU   r$    s&     @ @C @	 @t @r#   c                0    \         P                  ! WV4      # )z*Output a string with the specified color.
)r   outctx_base_t_out_line)r   r  r  s   &&&r   out_lineoutctx_base_t.out_line  s     --d??r#   c                    V ^8  d   QhRRRR/# rS   r  r^   rn   r$   )rT   s   "r   rU   r$    s     < <s <d <r#   c                .    \         P                  ! W4      # )z*Output a string with COLOR_KEYWORD color.
)r   outctx_base_t_out_keywordr   r  s   &&r   out_keywordoutctx_base_t.out_keyword  s     00;;r#   c                    V ^8  d   QhRRRR/# r  r$   )rT   s   "r   rU   r$    s     = = =t =r#   c                .    \         P                  ! W4      # )z)Output a character with COLOR_REG color.
)r   outctx_base_t_out_registerr  s   &&r   out_registeroutctx_base_t.out_register  s     11$<<r#   c               $    V ^8  d   QhRRRRRR/# )rS   r   r  widthr_   r^   rn   r$   )rT   s   "r   rU   r$    s&     A AS A A4 Ar#   c                0    \         P                  ! WV4      # )z5Output local variable name with COLOR_LOCNAME color.
)r   outctx_base_t_out_lvar)r   r   r  s   &&&r   out_lvaroutctx_base_t.out_lvar       --d%@@r#   c                    V ^8  d   QhRRRR/# rS   tagr  r^   rn   r$   )rT   s   "r   rU   r$    s     : :Y :$ :r#   c                .    \         P                  ! W4      # )z(Output "turn color on" escape sequence.
)r   outctx_base_t_out_tagonr   r  s   &&r   	out_tagonoutctx_base_t.out_tagon  s     ..t99r#   c                    V ^8  d   QhRRRR/# r  r$   )rT   s   "r   rU   r$    r  r#   c                .    \         P                  ! W4      # )z)Output "turn color off" escape sequence.
)r   outctx_base_t_out_tagoffr  s   &&r   
out_tagoffoutctx_base_t.out_tagoff  r  r#   c                    V ^8  d   QhRRRR/# re  r$   )rT   s   "r   rU   r$    s     < < <$ <r#   c                .    \         P                  ! W4      # )z"Output "address" escape sequence.
)r   outctx_base_t_out_addr_tagrh  s   &&r   out_addr_tagoutctx_base_t.out_addr_tag  s     11$;;r#   c                    V ^8  d   QhRRRR/# r  r$   )rT   s   "r   rU   r$    s     J JS JD Jr#   c                .    \         P                  ! W4      # )zOutput a colored line with register names in it. The register names will be substituted by user-defined names (regvar_t) Please note that out_tagoff tries to make substitutions too (when called with COLOR_REG) 
        )r   'outctx_base_t_out_colored_register_liner  s   &&r   out_colored_register_line'outctx_base_t.out_colored_register_line  s     >>tIIr#   c                    V ^8  d   QhRRRR/# r  r$   )rT   s   "r   rU   r$    s     7 7& 7D 7r#   c                .    \         P                  ! W4      # )zbOutput one character. The character is output without color codes. see also out_symbol() 
        )r   outctx_base_t_out_charr  s   &&r   out_charoutctx_base_t.out_char  s     --d66r#   c               $    V ^8  d   QhRRRRRR/# rS   Wordr_   radixr   r^   rn   r$   )rT   s   "r   rU   r$    s&     A AS A AT Ar#   c                0    \         P                  ! WV4      # zOutput a number with the specified base (binary, octal, decimal, hex) The number is output without color codes. see also out_long() 
        )r   outctx_base_t_out_btoar   r  r  s   &&&r   out_btoaoutctx_base_t.out_btoa  r  r#   c               $    V ^8  d   QhRRRRRR/# )rS   rK   r_   r  r   r^   rn   r$   )rT   s   "r   rU   r$    s!     	> 	># 	>f 	> 	>r#   c                0    \         P                  ! WV4      # )aM  Output a number with appropriate color. Low level function. Use out_value() if you can. if 'suspop' is set then this function uses COLOR_VOIDOP instead of COLOR_NUMBER. 'suspop' is initialized:
* in out_one_operand()
* in ..\ida\gl.cpp (before calling processor_t::d_out())



:param v: value to output
:param radix: base (2,8,10,16))r   outctx_base_t_out_long)r   rK   r  s   &&&r   out_longoutctx_base_t.out_long  s     --du==r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    s     @ @T @r#   c                2    \         P                  ! V .VO5!  # )a  Output a name expression. 
        
:param x: instruction operand referencing the name expression
:param ea: address to convert to name expression
:param off: the value of name expression. this parameter is used only to check that the name expression will have the wanted value. You may pass BADADDR for this parameter but I discourage it because it prohibits checks.
:returns: true if the name expression has been produced)r   outctx_base_t_out_name_exprr{  s   &*r   out_name_exproutctx_base_t.out_name_expr  s     224?$??r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$    r=  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_close_commentrb   s   &r   close_commentoutctx_base_t.close_comment  rB  r#   c                    V ^8  d   QhRRRR/# )rS   indentr_   r^   r   r$   )rT   s   "r   rU   r$    s     @ @3 @T @r#   c                .    \         P                  ! W4      # )aQ  ------------------------------------------------------------------------- Functions to populate the output line array (lnar) Move the contents of the output buffer to the line array (outbuf->lnar) The kernel augments the outbuf contents with additional text like the line prefix, user-defined comments, xrefs, etc at this call. 
        )r   outctx_base_t_flush_outbuf)r   r  s   &&r   flush_outbufoutctx_base_t.flush_outbuf  s     11$??r#   c               $    V ^8  d   QhRRRRRR/# )rS   bufr  r  r_   r^   r   r$   )rT   s   "r   rU   r$    s&     B BS B# BD Br#   c                0    \         P                  ! WV4      # )zoAppend contents of 'buf' to the line array. Behaves like flush_outbuf but accepts an arbitrary buffer 
        )r   outctx_base_t_flush_buf)r   r  r  s   &&&r   	flush_bufoutctx_base_t.flush_buf  s     ..t&AAr#   Nc                    V ^8  d   QhRRRR/# rS   prefixr  r^   r_   r$   )rT   s   "r   rU   r$    s     ? ?# ?c ?r#   c                .    \         P                  ! W4      # zOFinalize the output context. 
        
:returns: the number of generated lines.)r   outctx_base_t_term_outctxr   r  s   &&r   term_outctxoutctx_base_t.term_outctx  s     00>>r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r_   rT   r  r^   r   r$   )rT   s   "r   rU   r$    s&     F F Fc FT Fr#   c                0    \         P                  ! WV4      # )a  printf-like function to add lines to the line array. 
        
:param indent: indention of the line. if indent == -1, the kernel will indent the line at idainfo::indent. if indent < 0, -indent will be used for indention. The first line printed with indent < 0 is considered as the most important line at the current address. Usually it is the line with the instruction itself. This line will be displayed in the cross-reference lists and other places. If you need to output an additional line before the main line then pass DEFAULT_INDENT instead of -1. The kernel will know that your line is not the most important one.
:param format: printf style colored line to generate
:returns: overflow, lnar_maxsize has been reached)r   outctx_base_t_gen_printf)r   r  rT   s   &&&r   
gen_printfoutctx_base_t.gen_printf  s     //fEEr#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  #  s     : :t :r#   c                .    \         P                  ! V 4      # )zGenerate empty line. This function does nothing if generation of empty lines is disabled. 
        
:returns: overflow, lnar_maxsize has been reached)r   outctx_base_t_gen_empty_linerb   s   &r   gen_empty_lineoutctx_base_t.gen_empty_line#  s     33D99r#   c                    V ^8  d   QhRRRR/# )rS   solidr   r^   r$   )rT   s   "r   rU   r$  )  s     B BT B4 Br#   c                .    \         P                  ! W4      # )zGenerate thin border line. This function does nothing if generation of border lines is disabled. 
        
:param solid: generate solid border line (with =), otherwise with -
:returns: overflow, lnar_maxsize has been reached)r   outctx_base_t_gen_border_line)r   r  s   &&r   gen_border_lineoutctx_base_t.gen_border_line)  s    
 44TAAr#   c                    V ^8  d   QhRRRR/# rS   rT   r  r^   r   r$   )rT   s   "r   rU   r$  0  s     @ @3 @$ @r#   c                .    \         P                  ! W4      # )zGenerate one non-indented comment line, colored with COLOR_AUTOCMT. 
        
:param format: printf() style format line. The resulting comment line should not include comment character (;)
:returns: overflow, lnar_maxsize has been reached)r   outctx_base_t_gen_cmt_liner  s   &&r   gen_cmt_lineoutctx_base_t.gen_cmt_line0  s    
 11$??r#   c                    V ^8  d   QhRRRR/# r  r$   )rT   s   "r   rU   r$  7  s     F F F Fr#   c                .    \         P                  ! W4      # )zGenerate one non-indented comment line, colored with COLOR_COLLAPSED. 
        
:param format: printf() style format line. The resulting comment line should not include comment character (;)
:returns: overflow, lnar_maxsize has been reached)r    outctx_base_t_gen_collapsed_liner  s   &&r   gen_collapsed_line outctx_base_t.gen_collapsed_line7  s    
 77EEr#   c               $    V ^8  d   QhRRRRRR/# )rS   cmtr  r  r  r^   r   r$   )rT   s   "r   rU   r$  >  s&     E E EY E$ Er#   c                0    \         P                  ! WV4      # )a  Generate big non-indented comment lines. 
        
:param cmt: comment text. may contain \n characters to denote new lines. should not contain comment character (;)
:param color: color of comment text (one of Color tags)
:returns: overflow, lnar_maxsize has been reached)r   outctx_base_t_gen_block_cmt)r   r$  r  s   &&&r   gen_block_cmtoutctx_base_t.gen_block_cmt>  s     224eDDr#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r  makeline_flagsr_   r^   rn   r$   )rT   s   "r   rU   r$  F  s&     P P3 P Pt Pr#   c                0    \         P                  ! WV4      # z2Initialization; normally used only by the kernel.
)r   outctx_base_t_setup_outctx)r   r  r*  s   &&&r   setup_outctxoutctx_base_t.setup_outctxF  s     11$OOr#   c                   V ^8  d   QhRR/# rS   r^   r  r$   )rT   s   "r   rU   r$  K  s     8 8Y 8r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_retrieve_cmtrb   s   &r   retrieve_cmtoutctx_base_t.retrieve_cmtK  s    11$77r#   c               $    V ^8  d   QhRRRRRR/# rS   arg2r  arg3z'color_t *'r^   r  r$   )rT   s   "r   rU   r$  N  s&     E E# E[ EI Er#   c                	0    \         P                  ! WV4      # r.   )r   outctx_base_t_retrieve_namer   r8  r9  s   &&&r   retrieve_nameoutctx_base_t.retrieve_nameN  s    224tDDr#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  Q  r%  r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_gen_xref_linesrb   s   &r   gen_xref_linesoutctx_base_t.gen_xref_linesQ  r*  r#   c               $    V ^8  d   QhRRRRRR/# )rS   answersz'qstrvec_t *'maxsizer_   r^   rn   r$   )rT   s   "r   rU   r$  T  s&     N N N Nt Nr#   c                	0    \         P                  ! WV4      # r.   )r   outctx_base_t_init_lines_array)r   rE  rF  s   &&&r   init_lines_arrayoutctx_base_t.init_lines_arrayT  s    55dWMMr#   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rS   rE   rm   rK   r_   vvz
'sval_t *'is_sp_basedz'int *'_framez	'tinfo_t'r^   r  r$   )rT   s   "r   rU   r$  W  s9      F s 
 "&/r#   c                	4    \         P                  ! WW#VV4      # r.   )r   outctx_base_t_get_stkvar)r   rE   rK   rL  rM  rN  s   &&&&&&r   
get_stkvaroutctx_base_t.get_stkvarW  s    // 	r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   r$  \  s     N N4 Nr#   c                	.    \         P                  ! V 4      # r.   )r   0outctx_base_t_gen_empty_line_without_annotationsrb   s   &r   "gen_empty_line_without_annotations0outctx_base_t.gen_empty_line_without_annotations\  s    GGMMr#   c                   V ^8  d   QhRR/# )rS   r^   r  r$   )rT   s   "r   rU   r$  _  s     0 0[ 0r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_base_t_getFrb   s   &r   getFoutctx_base_t.getF_  r   r#   r$   )Tr  )r.   )F)Kr   r   r8   r9   r   r   rZ   r   r
   r   outctx_base_t_insn_ea_getoutctx_base_t_insn_ea_setr  r   outctx_base_t_outbuf_getoutctx_base_t_outbuf_setr   outctx_base_t_F32_getoutctx_base_t_F32_setr!  outctx_base_t_default_lnnum_getoutctx_base_t_default_lnnum_setr"  r(  r.  r4  r:  r@  rF  rN  rS  rX  r]  rb  ri  ro  ru  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.  r4  r=  rB  rI  rQ  rV  r[  r<   r$   r#   r   r  r  ]  s   -/I!#G7H'(I(I)) +G_ +7;;W  "FC "g;;WC !'"I"I//1M3 1:5669:=;99C@;;>I>>9
;
;
@
<
=
A
:
;
<
J
7
A
	>@9@
B
?F:B@FEP
8E:N
N0 0r#   r  c                     ] tR tRt$ ]! R R RR7      tR 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&   ]! ]	P:                  ]	P<                  4      tR]R&   ]! ]	P@                  ]	PB                  4      t"R]R&   ]! ]	PF                  ]	PH                  4      t%R]R&   ]! ]	PL                  ]	PN                  4      t(R]R&   ]! ]	PR                  ]	PT                  4      t+R]R&   ]! ]	PX                  ]	PZ                  4      t.R]R&   ]! ]	P^                  ]	P`                  4      t1R]R&   R R lt2RFR! R" llt3R# R$ lt4R% R& lt5R' R( lt6RGR) R* llt7R+ R, lt8RHR- R. llt9RHR/ R0 llt:R1 R2 lt;R3 R4 lt<R5 R6 lt=R7 R8 lt>R9 R: lt?R; R< lt@R= R> ltAR? R@ ltBRA RB ltCRC RD ltDREtER # )Ioutctx_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   outctx_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   ri    rL   r#   rM   rN   c                	    \        R 4      hr  r  r  s   &*,r   rZ   outctx_t.__init__  r  r#   r   bin_ear   	bin_stater_   	gl_bpsize	bin_widthr-  r,  r  curlabelz'printop_t const *'wifz'procmod_t *'procmodz'processor_t &'phz	'asm_t &'ashz'uval_t [8]'saved_immvals	prefix_eanext_line_eac               $    V ^8  d   QhRRRRRR/# )rS   r  r  r   r_   r^   rn   r$   )rT   s   "r   rU   outctx_t.__annotate__)  s&     B B3 Bs Bd Br#   c                0    \         P                  ! WV4      # r,  )r   outctx_t_setup_outctx)r   r  r   s   &&&r   r.  outctx_t.setup_outctx)  s     ,,T5AAr#   Nc                    V ^8  d   QhRRRR/# r   r$   )rT   s   "r   rU   rz  .  s     : :# :c :r#   c                .    \         P                  ! W4      # r  )r   outctx_t_term_outctxr  s   &&r   r  outctx_t.term_outctx.  s     ++D99r#   c                   V ^8  d   QhRR/# r1  r$   )rT   s   "r   rU   rz  4  s     3 3Y 3r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_t_retrieve_cmtrb   s   &r   r4  outctx_t.retrieve_cmt4  rr  r#   c               $    V ^8  d   QhRRRRRR/# r7  r$   )rT   s   "r   rU   rz  7  s&     @ @# @[ @I @r#   c                	0    \         P                  ! WV4      # r.   )r   outctx_t_retrieve_namer<  s   &&&r   r=  outctx_t.retrieve_name7  s    --d$??r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  :  s     5 5t 5r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_t_gen_xref_linesrb   s   &r   rB  outctx_t.gen_xref_lines:  r   r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rT   s   "r   rU   rz  =  s!     < <S < <T <r#   c                0    \         P                  ! WV4      # r  )r   outctx_t_out_btoar  s   &&&r   r  outctx_t.out_btoa=  s     ((U;;r#   c                    V ^8  d   QhRRRR/# )rS   r   r_   r^   rn   r$   )rT   s   "r   rU   rz  B  s     ; ;3 ;$ ;r#   c                	.    \         P                  ! W4      # r.   )r   outctx_t_set_bin_state)r   r   s   &&r   set_bin_stateoutctx_t.set_bin_stateB  s    --d::r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r_   postfixr  r^   rn   r$   )rT   s   "r   rU   rz  E  s!     ? ?c ?c ?$ ?r#   c                0    \         P                  ! WV4      # )a  Output instruction mnemonic for 'insn' using information in 'ph.instruc' array. This function outputs colored text. It should be called from processor_t::ev_out_insn() or processor_t::ev_out_mnem() handler. It will output at least one space after the instruction. mnemonic even if the specified 'width' is not enough. 
        
:param width: width of field with mnemonic. if < 0, then 'postfix' will be output before the mnemonic, i.e. as a prefix
:param postfix: optional postfix added to the instruction mnemonic)r   outctx_t_out_mnem)r   r  r  s   &&&r   out_mnemoutctx_t.out_mnemE  s    
 ((g>>r#   c               (    V ^8  d   QhRRRRRRRR/# )rS   mnemr  r  r_   r  r^   rn   r$   )rT   s   "r   rU   rz  L  s/     L LC L L LLr#   c                0    \         P                  ! WW#4      # )aZ  Output custom mnemonic for 'insn'. E.g. if it should differ from the one in 'ph.instruc'. This function outputs colored text. See out_mnem 
        
:param mnem: custom mnemonic
:param width: width of field with mnemonic. if < 0, then 'postfix' will be output before the mnemonic, i.e. as a prefix
:param postfix: optional postfix added to 'mnem')r   outctx_t_out_custom_mnem)r   r  r  r  s   &&&&r   out_custom_mnemoutctx_t.out_custom_mnemL  s     //EKKr#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  U  s     3 3T 3r#   c                .    \         P                  ! V 4      # )zOutput instruction mnemonic using information in 'insn'. It should be called from processor_t::ev_out_insn() and it will call processor_t::ev_out_mnem() or out_mnem. This function outputs colored text. 
        )r   outctx_t_out_mnemonicrb   s   &r   out_mnemonicoutctx_t.out_mnemonicU  s     ,,T22r#   c                    V ^8  d   QhRRRR/# )rS   r   r_   r^   r   r$   )rT   s   "r   rU   rz  Z  s     9 9 9 9r#   c                .    \         P                  ! W4      # )a  Use this function to output an operand of an instruction. This function checks for the existence of a manually defined operand and will output it if it exists. It should be called from processor_t::ev_out_insn() and it will call processor_t::ev_out_operand(). This function outputs colored text. 
        
:param n: 0..UA_MAXOP-1 operand number
:returns: 1: operand is displayed
:returns: 0: operand is hidden)r   outctx_t_out_one_operandr  s   &&r   out_one_operandoutctx_t.out_one_operandZ  s     //88r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  b  s     7 7 7r#   c                .    \         P                  ! V 4      # )zPrint all operand values as commented character constants. This function is used to comment void operands with their representation in the form of character constants. This function outputs colored text. 
        )r   outctx_t_out_immchar_cmtsrb   s   &r   out_immchar_cmtsoutctx_t.out_immchar_cmtsb  s     0066r#   c                    V ^8  d   QhRRRR/# )rS   pfnz
'func_t *'r^   rn   r$   )rT   s   "r   rU   rz  g  s     ; ;: ; ;r#   c                	.    \         P                  ! W4      # r.   )r   outctx_t_gen_func_headerr   r  s   &&r   gen_func_headeroutctx_t.gen_func_headerg      //::r#   c                    V ^8  d   QhRRRR/# )rS   r  z'func_t const *'r^   rn   r$   )rT   s   "r   rU   rz  j  s     ; ;#3 ;t ;r#   c                	.    \         P                  ! W4      # r.   )r   outctx_t_gen_func_footerr  s   &&r   gen_func_footeroutctx_t.gen_func_footerj  r  r#   c                    V ^8  d   QhRRRR/# )rS   analyze_onlyr   r^   rn   r$   )rT   s   "r   rU   rz  m  s     = =T =T =r#   c                	.    \         P                  ! W4      # r.   )r   outctx_t_out_data)r   r  s   &&r   out_dataoutctx_t.out_datam  s    ((<<r#   c                    V ^8  d   QhRRRR/# )rS   segtyper   r^   r   r$   )rT   s   "r   rU   rz  p  s     : :' :T :r#   c                	.    \         P                  ! W4      # r.   )r   outctx_t_out_specea)r   r  s   &&r   
out_speceaoutctx_t.out_speceap  s    **499r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  s  s     7 7 7r#   c                	.    \         P                  ! V 4      # r.   )r   outctx_t_gen_header_extrarb   s   &r   gen_header_extraoutctx_t.gen_header_extras  rx   r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  v  s     8 8$ 8r#   c                	2    \         P                  ! V .VO5!  # r.   )r   outctx_t_gen_headerr{  s   &*r   
gen_headeroutctx_t.gen_headerv  s    **47$77r#   c                   V ^8  d   QhRR/# r   r$   )rT   s   "r   rU   rz  y  s     6 6 6r#   c                .    \         P                  ! V 4      # )zPrint addresses referenced *from* the specified address as commented symbolic names. This function is used to show, for example, multiple callees of an indirect call. This function outputs colored text. 
        )r   outctx_t_out_fcref_namesrb   s   &r   out_fcref_namesoutctx_t.out_fcref_namesy  s     //55r#   r$   r.   r  )   N)Fr   r   r8   r9   r   r   rZ   r   r
   r   outctx_t_bin_ea_getoutctx_t_bin_ea_setrm  r   outctx_t_bin_state_getoutctx_t_bin_state_setrn  outctx_t_gl_bpsize_getoutctx_t_gl_bpsize_setro  outctx_t_bin_width_getoutctx_t_bin_width_setrp  outctx_t_insn_getoutctx_t_insn_setr,  outctx_t_curlabel_getoutctx_t_curlabel_setrq  outctx_t_wif_getoutctx_t_wif_setrr  outctx_t_procmod_getoutctx_t_procmod_setrs  outctx_t_ph_getoutctx_t_ph_setrt  outctx_t_ash_getoutctx_t_ash_setru  outctx_t_saved_immvals_getoutctx_t_saved_immvals_setrv  outctx_t_prefix_ea_getoutctx_t_prefix_ea_setrw  outctx_t_next_line_ea_getoutctx_t_next_line_ea_setrx  r.  r  r4  r=  rB  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   r$   r#   r   rg  rg    s8   -/I!#G7H&w'B'BG		FO  !?!? Iv  g<<g Is  g<<g Is  g77D( W::GHc '(@(@' C	 %g&B&BG		G] "7#:#:GB g66C "*7""G$F$F#HM< H!)'*H*H&&"(I ($,W!!7#D#D%FL/ FB
:3@5<
;?L3
97
;;=:786 6r#   rg  c               (    V ^8  d   QhRRRRRRRR/# )	rS   rM  r   Fr  suspopr_   r^   'outctx_base_t *'r$   )rT   s   "r   rU   rU     s)     0 0o 0+ 0 00r#   c                0    \         P                  ! WV4      # )zKCreate a new output context. To delete it, just use "delete pctx" 
        )r   create_outctx)rM  r  r  s   &&&r   r  r    s       //r#   c                    V ^8  d   QhRRRR/# )rS   rM  r   r^   r  r$   )rT   s   "r   rU   rU     s     ' ' '3 'r#   c                .    \         P                  ! V 4      # )zePrint instruction mnemonics. 
        
:param ea: linear address of the instruction
:returns: success)r   print_insn_mnemrM  s   &r   r  r    s    
 ""2&&r#   c                    V ^8  d   QhRRRR/# )rS   r   r   r^   r  r$   )rT   s   "r   rU   rU     s     ) ), )+ )r#   c                .    \         P                  ! V 4      # )z!Get flags for op_t::dtype field.
)r   get_dtype_flagr   s   &r   r  r         !!%((r#   c                    V ^8  d   QhRRRR/# )rS   r   r   r^   r_   r$   )rT   s   "r   rU   rU     s     ) ), )# )r#   c                .    \         P                  ! V 4      # )zGet size of opt_::dtype field.
)r   get_dtype_sizer  s   &r   r  r    r  r#   c                    V ^8  d   QhRRRR/# )rS   r   r   r^   r   r$   )rT   s   "r   rU   rU     s     , ,\ ,T ,r#   c                .    \         P                  ! V 4      # )zIs a floating type operand?
)r   is_floating_dtyper  s   &r   r	  r	    s     $$U++r#   c               $    V ^8  d   QhRRRRRR/# )rS   rM  r   outr-  r^   r_   r$   )rT   s   "r   rU   rU     s!     ( (O (( (3 (r#   c                .    \         P                  ! W4      # )a  Create an instruction at the specified address. This function checks if an instruction is present at the specified address and will try to create one if there is none. It will fail if there is a data item or other items hindering the creation of the new instruction. This function will also fill the 'out' structure. 
        
:param ea: linear address
:param out: the resulting instruction
:returns: the length of the instruction or 0)r   create_insn)rM  r  s   &&r   r  r    s     r''r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r-  rM  r   r^   r_   r$   )rT   s   "r   rU   rU     s!     ( (X (? (c (r#   c                .    \         P                  ! W4      # )a=  Analyze the specified address and fill 'out'. This function does not modify the database. It just tries to interpret the specified address as an instruction and fills the 'out' structure. 
        
:param out: the resulting instruction
:param ea: linear address
:returns: the length of the (possible) instruction or 0)r   decode_insnr  rM  s   &&r   r  r    s     s''r#   c                    V ^8  d   QhRRRR/# )rS   rM  r   r^   r   r$   )rT   s   "r   rU   rU     s     " "? "d "r#   c                .    \         P                  ! V 4      # )zCan the bytes at address 'ea' be decoded as instruction? 
        
:param ea: linear address
:returns: whether or not the contents at that address could be a valid instruction)r   
can_decoder  s   &r   r  r    s    
 b!!r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rS   rM  r   r   r_   
getn_flagsnewtypez'printop_t'r^   r  r$   )rT   s   "r   rU   rU     s1     	= 	=o 	=# 	=3 	=	=	=r#   c                0    \         P                  ! WW#4      # )a  Generate text representation for operand #n. This function will generate the text representation of the specified operand (includes color codes.) 
        
:param ea: the item address (instruction or data)
:param n: 0..UA_MAXOP-1 operand number, meaningful only for instructions
:param getn_flags: Name expression flags Currently only GETN_NODUMMY is accepted.
:param newtype: if specified, print the operand using the specified type
:returns: success)r   print_operand)rM  r   r  r  s   &&&&r   r  r    s       
<<r#   c               $    V ^8  d   QhRRRRRR/# )rS   r  r-  rM  r   r^   r$   )rT   s   "r   rU   rU     s!     - -( - -? -r#   c                .    \         P                  ! W4      # )zDecode previous instruction if it exists, fill 'out'. 
        
:param out: the resulting instruction
:param ea: the address to decode the previous instruction from
:returns: the previous instruction address (BADADDR-no such insn))r   decode_prev_insnr  s   &&r   r  r    s     ##C,,r#   c                      ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&   ]P                  tR R	 ltR
 R ltR tR tRtR# )macro_constructor_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   macro_constructor_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r     rL   r#   rM   rN   r_   reservedc               $    V ^8  d   QhRRRRRR/# )rS   r,  r-  enabler   r^   r$   )rT   s   "r   rU    macro_constructor_t.__annotate__  s&     	O 	OH 	Od 	Od 	Or#   c                0    \         P                  ! WV4      # )a*  Construct a macro instruction. This function may be called from ana() to generate a macro instruction.
The real work is done by the 'build_macro()' virtual function. It must be defined by the processor module.
construct_macro() modifies the database using the info provided by build_macro(). It verifies if the instruction can really be created (for example, that other items do not hinder), may plan to reanalyze the macro, etc. If the macro instructions are disabled by the user, construct_macro() will destroy the macro instruction. Note: if INSN_MODMAC is not set in insn.flags, the database will not be modified.

:param insn: the instruction to modify into a macro
:param enable: enable macro generation
:returns: true: the macro instruction is generated in 'insn'
:returns: false: did not create a macro)r   #macro_constructor_t_construct_macro)r   r,  r$  s   &&&r   construct_macro#macro_constructor_t.construct_macro  s     ::4vNNr#   c               $    V ^8  d   QhRRRRRR/# )rS   r,  r-  may_go_forwardr   r^   r$   )rT   s   "r   rU   r%    s!       $ $ r#   c                0    \         P                  ! WV4      # )a  Try to extend the instruction.
This function may modify 'insn' and return false; these changes will be accepted by the kernel but the instruction will not be considered as a macro.

:param insn: Instruction to modify, usually the first instruction of the macro
:param may_go_forward: Is it ok to consider the next instruction for the macro? This argument may be false, for example, if there is a cross reference to the end of INSN. In this case creating a macro is not desired. However, it may still be useful to perform minor tweaks to the instruction using the information about the surrounding instructions.
:returns: true if created an macro instruction.)r   macro_constructor_t_build_macro)r   r,  r+  s   &&&r   build_macromacro_constructor_t.build_macro  s     66t 	r#   c                	    V P                   \        8X  d   R pMT p\        P                  ! V \        P                  ! V4      4       R # r.   )r   r  r   macro_constructor_t_swiginitnew_macro_constructor_t)r   _selfs   & r   rZ   macro_constructor_t.__init__  s>    >>00EE,,T7##4$$)4+ 	,r#   c                	    V P                   P                  4        \        P                  ! V 4       \        P
                  ! V 4      # r.   )r	   disownr   disown_macro_constructor_tweakrefproxyrb   s   &r   
__disown__macro_constructor_t.__disown__  s/    		**40}}T""r#   r$   N)r   r   r8   r9   r   r   r   r
   r    macro_constructor_t_reserved_get macro_constructor_t_reserved_setr"  r   delete_macro_constructor_tr   r(  r.  rZ   r:  r<   r$   r#   r   r  r    s]    -/I!#GHWEE002Hc 299	O,#r#   r  c               $    V ^8  d   QhRRRRRR/# )rS   r  rC  rM  r   r^   zTuple[ida_idaapi.ea_t, bool]r$   )rT   s   "r   rU   rU   !  s$     2 2v 2? 2 ? 2r#   c                .    \         P                  ! W4      # )zDecodes the preceding instruction.

:param out: instruction storage
:param ea: current ea
:returns: tuple(preceeding_ea or BADADDR, farref = Boolean))r   decode_preceding_insnr  s   &&r   rA  rA  !  s     ((11r#   c                 *    \         P                  ! V !  # )aI  See ua.hpp's construct_macro().

This function has the following signatures

    1. construct_macro(insn: insn_t, enable: bool, build_macro: callable) -> bool
    2. construct_macro(constuctor: macro_constructor_t, insn: insn_t, enable: bool) -> bool

:param insn: the instruction to build the macro for
:param enable: enable macro generation
:param build_macro: a callable with 2 arguments: an insn_t, and
                    whether it is ok to consider the next instruction
                    for the macro
:param constructor: a macro_constructor_t implementation
:returns: success)r   r(  r  s   *r   r(  r(  +  s     ""D))r#   c                    V ^8  d   QhRRRR/# )rS   rO  z	'asize_t'r^   r_   r$   )rT   s   "r   rU   rU   =  s     + +I + +r#   c                .    \         P                  ! V 4      # )zGet op_t::dtype from size.
)r   get_dtype_by_size)rO  s   &r   rE  rE  =  s     $$T**r#   c               (    V ^8  d   QhRRRRRRRR/# 	rS   rM  r   r   r_   r  r  r^   z'PyObject *'r$   )rT   s   "r   rU   rU   C  s(     ) )O ) ) ) )r#   c                0    \         P                  ! WV4      # )aN  Get immediate values at the specified address. This function decodes instruction at the specified address or inspects the data item. It finds immediate values and copies them to 'out'. This function will store the original value of the operands in 'out', unless the last bits of 'F' are "...0 11111111", in which case the transformed values (as needed for printing) will be stored instead. 
        
:param ea: address to analyze
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all the operands
:param F: flags for the specified address
:returns: number of immediate values (0..2*UA_MAXOP))r   get_immvalsrM  r   r  s   &&&r   rI  rI  C  s     ra((r#   c               (    V ^8  d   QhRRRRRRRR/# rG  r$   )rT   s   "r   rU   rU   M  s)     3 3o 3# 3+ 33r#   c                0    \         P                  ! WV4      # )a  Get immediate ready-to-print values at the specified address 
        
:param ea: address to analyze
:param n: 0..UA_MAXOP-1 operand number, OPND_ALL all the operands
:param F: flags for the specified address
:returns: number of immediate values (0..2*UA_MAXOP))r   get_printable_immvalsrJ  s   &&&r   rM  rM  M  s     ((22r#   c                    V ^8  d   QhRRRR/# )rS   ptrvalr_   r^   z
'insn_t *'r$   )rT   s   "r   rU   rU   X  s     1 1# 1 1r#   c                .    \         P                  ! V 4      # r.   )r   insn_t__from_ptrval__rO  s   &r   rQ  rQ  X  s    ((00r#   c                    V ^8  d   QhRRRR/# )rS   rO  r_   r^   r  r$   )rT   s   "r   rU   rU   \  s     / / /x /r#   c                .    \         P                  ! V 4      # r.   )r   op_t__from_ptrval__rR  s   &r   rU  rU  \  s    &&v..r#   c                    V ^8  d   QhRRRR/# )rS   rO  r_   r^   r  r$   )rT   s   "r   rU   rU   `  s     8 8 80A 8r#   c                .    \         P                  ! V 4      # r.   )r   outctx_base_t__from_ptrval__rR  s   &r   rX  rX  `  s    //77r#   c                    V ^8  d   QhRRRR/# )rS   rO  r_   r^   z'outctx_t *'r$   )rT   s   "r   rU   rU   d  s     3 3C 3< 3r#   c                .    \         P                  ! V 4      # r.   )r   outctx_t__from_ptrval__rR  s   &r   r[  r[  d  s    **622r#   )r]  r]  )r  r  r.   )r  Nr  )r:   
__future__r   sysr   _swig_python_version_info__package__r   r   r   builtinsr   ImportErrorr   r%   r+   r5   r   r7   r8  SWIG_PYTHON_LEGACY_BOOLtypingr=   r>   r?   r   objectrA   operands_array_swigregisterr   op_t_swigregistercvaro_voido_rego_memo_phraseo_displo_immo_faro_near
o_idpspec0
o_idpspec1
o_idpspec2
o_idpspec3
o_idpspec4
o_idpspec5OF_NO_BASE_DISPOF_OUTER_DISPPACK_FORM_DEF	OF_NUMBEROF_SHOWdt_bytedt_worddt_dworddt_float	dt_doubledt_tbytedt_packrealdt_qword	dt_byte16dt_codedt_voiddt_fword
dt_bitfild	dt_string
dt_unicodedt_ldbl	dt_byte32	dt_byte64dt_halfr3  r9  r=  rA  rC  insn_t_swigregister
INSN_MACROINSN_MODMAC
INSN_64BITr  r  r
  r  r  r  outctx_base_t_swigregister	CTXF_MAIN
CTXF_MULTI	CTXF_CODE
CTXF_STACKCTXF_GEN_XREFSCTXF_XREF_STATEXREFSTATE_NONEXREFSTATE_GOXREFSTATE_DONECTXF_GEN_CMTCTXF_CMT_STATECOMMSTATE_NONECOMMSTATE_GOCOMMSTATE_DONE
CTXF_VOIDSCTXF_NORMAL_LABELCTXF_DEMANGLED_LABELCTXF_LABEL_OKCTXF_DEMANGLED_OKCTXF_OVSTORE_PRNTCTXF_OUTCTX_TCTXF_DBLIND_OPNDCTXF_BINOP_STATEBINOPSTATE_NONEBINOPSTATE_GOBINOPSTATE_DONECTXF_HIDDEN_ADDRCTXF_BIT_PREFIXCTXF_UNHIDEOOF_SIGNMASKOOFS_IFSIGNOOFS_NOSIGNOOFS_NEEDSIGN
OOF_SIGNED
OOF_NUMBEROOF_WIDTHMASKOOFW_IMMOOFW_8OOFW_16OOFW_24OOFW_32OOFW_64OOF_ADDR	OOF_OUTEROOF_ZSTROFF
OOF_NOBNOT
OOF_SPACESOOF_ANYSERIALOOF_LZEROESOOF_NO_LZEROESDEFAULT_INDENTMAKELINE_NONEMAKELINE_BINPREFMAKELINE_VOIDMAKELINE_STACKrg  outctx_t_swigregisterGH_PRINT_PROCGH_PRINT_ASMGH_PRINT_BYTESEXGH_PRINT_HEADERGH_BYTESEX_HAS_HIGHBYTEGH_PRINT_PROC_AND_ASMGH_PRINT_PROC_ASM_AND_BYTESEXGH_PRINT_ALLGH_PRINT_ALL_BUT_BYTESEXr  r  	FCBF_CONTFCBF_ERR_REPLFCBF_FF_LIT
FCBF_DELIMr  r  r	  r  r  r  r  r  r   macro_constructor_t_swigregisterrA  r(  rE  rI  rM  rQ  rU  rX  r[  ua_mnemSTKVAR_VALID_SIZESTKVAR_KEEP_EXISTINGr$   r#   r   <module>r     su  )FT # 9#/"
 L$ L
 !99  % % 5V 58  # #N 3B+6 B+J   $ ||	

 	

 == ,, 	

 	

 

 __
__
__
__
__
__
))%%%%	
//
//
//	!!	
//
//
	

//		
//8
8
;
9
Q-V Q-h   F #
!!
"0&&!C0F C0L  " "= 1	
	
''))''##''##''''##''
-- 33 %%-- -- %%++ ++ ))%%))++ ))!!##!!!!%%

%%	
//
//
//
//	!!

%%!!''''%%++ %%''u6} u6p   h '%%##++ ))!99 55  ' E E ##";; 0' 	%%!!
)),(("	=-(#& (#V  ( ()< =2*$+)31/83   o)  s   ]5 5^^