+
    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]4      t]	P>                  ! ]4        ! R R]4      t ]	PB                  ! ] 4        ! R R]4      t"]	PF                  ! ]"4        ! R R]4      t$]	PJ                  ! ]$4       R R lt& ! R R]4      t']	PP                  ! ]'4        ! R R]PR                  4      t*]	PV                  ! ]*4       ]	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? R R lt@R R  ltAR! R" ltB ! R# R$]4      tC]	P                  ! ]C4        ! R% R&]4      tE]	P                  ! ]E4       R' R( ltGR) R* ltHR+ R, ltIR- R. ltJR/ R0 ltKR1 R2 ltLR3 R4 ltMR5 R6 ltNR7 R8 ltOR9 R: ltPR; R< ltQR= R> ltRR? R@ ltSRA RB ltTRC RD ltURE RF ltVRG RH ltWRI RJ ltX]	P                  tY ]	P                  tZ ]	P                  t[ ]	P                  t\ ]	P                  t] RK RL lt^RM RN lt_RO RP lt`]	P                  ta ]	P                  tb ]	P                  tc ]	P                  td ]	P                  te ]	P                  tf ]	P                  tg RQ RR lthRS RT ltiRU RV ltjRW RX ltkRY RZ ltlR[ R\ ltmR] R^ ltnR_ R` ltoRa Rb ltpRc Rd ltqRe Rf ltrRg Rh ltsRi Rj lttRk Rl ltuRm Rn ltvRo Rp ltwRq Rr ltxRs Rt ltyRu Rv ltzRw Rx lt{Ry Rz lt|R{ R| lt}R} R~ lt~R R ltR R ltR R lt ! R R]4      t]	EP                  ! ]4        ! R R]4      t]	EP
                  ! ]4        ! R R]4      t]	EP                  ! ]4       R R ltR R ltR R ltR R l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P4                  t ]	EP6                  t ]	EP8                  t R R ltR tR tR R lt^ RIt]EPB                  R 4       tqR#   ] d	    ^ RIt ELki ; i)a  Routines for working with functions within the disassembled program.

This file also contains routines for working with library signatures (e.g. FLIRT).

Each function consists of function chunks. At least one function chunk must be present in the function definition - the function entry chunk. Other chunks are called function tails. There may be several of them for a function.

A function tail is a continuous range of addresses. It can be used in the definition of one or more functions. One function using the tail is singled out and called the tail owner. This function is considered as 'possessing' the tail. get_func() on a tail address will return the function possessing the tail. You can enumerate the functions using the tail by using func_parent_iterator_t.

Each function chunk in the disassembly is represented as an "range" (a range of addresses, see range.hpp for details) with characteristics.
A function entry must start with an instruction (code) byte.

.. 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 function management and analysis, see :mod:`ida_domain.functions`.)annotations)version_info.)
_ida_funcsNc                     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_funcs.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]! ]P                  4      t
R]R&   ]! ]P                  4      tR]R&   R	 R
 ltR R ltR R ltR R lt]P&                  t]P*                  tRtR# )dyn_stkpnt_arrayc                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>dyn_stkpnt_array.<lambda>V       r#   c                	8    V P                   P                  V4      # r.   rC   rE   vs   &&r   rF   rG   V       AFFJJqMr#   The membership flagdoc'stkpnt_t *'dataintcountc                    V ^8  d   QhRRRR/# )   _datarP   _countrR   r$   )formats   "r   __annotate__dyn_stkpnt_array.__annotate__\        1 1l 1C 1r#   c                	\    \         P                  ! V \         P                  ! W4      4       R # r.   )r   dyn_stkpnt_array_swiginitnew_dyn_stkpnt_arrayr   rV   rW   s   &&&r   __init__dyn_stkpnt_array.__init__\   '    ,,T:  4!!&40 	1r#   c                   V ^8  d   QhRR/# rU   returnrR   r$   )rX   s   "r   rY   rZ   `        9 9 9r#   c                	.    \         P                  ! V 4      # r.   )r   dyn_stkpnt_array___len__r   s   &r   __len__dyn_stkpnt_array.__len__`       22488r#   c                    V ^8  d   QhRRRR/# )rU   irR   re   'stkpnt_t const &'r$   )rX   s   "r   rY   rZ   c        @ @S @$6 @r#   c                	.    \         P                  ! W4      # r.   )r   dyn_stkpnt_array___getitem__r   rn   s   &&r   __getitem__dyn_stkpnt_array.__getitem__c       66t??r#   c               $    V ^8  d   QhRRRRRR/# )rU   rn   rR   rK   ro   re   Noner$   )rX   s   "r   rY   rZ   f   '     C CS C%7 C4 Cr#   c                	0    \         P                  ! WV4      # r.   )r   dyn_stkpnt_array___setitem__r   rn   rK   s   &&&r   __setitem__dyn_stkpnt_array.__setitem__f       66tBBr#   r$   N)r   r   r8   r9   r   r   r   r
   r   dyn_stkpnt_array_data_getrQ   __annotations__dyn_stkpnt_array_count_getrS   r`   rj   rt   r}   
ida_idaapi_bounded_getitem_iterator__iter__delete_dyn_stkpnt_array__swig_destroy__r<   r$   r#   r   rA   rA   U   q    -/I!#GH!*"F"FGD,G*??@E3@19@C33H!99r#   rA   c                      ] tR t^ot$ ]! R R RR7      t]t]! ]P                  4      t
R]R&   ]! ]P                  4      tR]R&   R	 R
 ltR R ltR R ltR R lt]P&                  t]P*                  tRtR# )dyn_regvar_arrayc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   dyn_regvar_array.<lambda>p   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r   p   rL   r#   rM   rN   'regvar_t *'rQ   rR   rS   c                    V ^8  d   QhRRRR/# )rU   rV   r   rW   rR   r$   )rX   s   "r   rY   dyn_regvar_array.__annotate__v   r[   r#   c                	\    \         P                  ! V \         P                  ! W4      4       R # r.   )r   dyn_regvar_array_swiginitnew_dyn_regvar_arrayr_   s   &&&r   r`   dyn_regvar_array.__init__v   rb   r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   r   z   rf   r#   c                	.    \         P                  ! V 4      # r.   )r   dyn_regvar_array___len__ri   s   &r   rj   dyn_regvar_array.__len__z   rl   r#   c                    V ^8  d   QhRRRR/# )rU   rn   rR   re   'regvar_t const &'r$   )rX   s   "r   rY   r   }   rp   r#   c                	.    \         P                  ! W4      # r.   )r   dyn_regvar_array___getitem__rs   s   &&r   rt   dyn_regvar_array.__getitem__}   rv   r#   c               $    V ^8  d   QhRRRRRR/# )rU   rn   rR   rK   r   re   rx   r$   )rX   s   "r   rY   r      ry   r#   c                	0    \         P                  ! WV4      # r.   )r   dyn_regvar_array___setitem__r|   s   &&&r   r}   dyn_regvar_array.__setitem__   r   r#   r$   N)r   r   r8   r9   r   r   r   r
   r   dyn_regvar_array_data_getrQ   r   dyn_regvar_array_count_getrS   r`   rj   rt   r}   r   r   r   delete_dyn_regvar_arrayr   r<   r$   r#   r   r   r   o   r   r#   r   c                      ] tR t^t$ ]! R R RR7      t]t]! ]P                  4      t
R]R&   ]! ]P                  4      tR]R&   R	 R
 ltR R ltR R ltR R lt]P&                  t]P*                  tRtR# )dyn_range_arrayc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   dyn_range_array.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r      rL   r#   rM   rN   'range_t *'rQ   rR   rS   c                    V ^8  d   QhRRRR/# )rU   rV   	'range_t'rW   rR   r$   )rX   s   "r   rY   dyn_range_array.__annotate__   s     0 0i 0 0r#   c                	\    \         P                  ! V \         P                  ! W4      4       R # r.   )r   dyn_range_array_swiginitnew_dyn_range_arrayr_   s   &&&r   r`   dyn_range_array.__init__   s'    ++D*3  %3/ 	0r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   r      s     8 8 8r#   c                	.    \         P                  ! V 4      # r.   )r   dyn_range_array___len__ri   s   &r   rj   dyn_range_array.__len__       11$77r#   c                    V ^8  d   QhRRRR/# )rU   rn   rR   re   'range_t const &'r$   )rX   s   "r   rY   r      s     ? ?S ?$5 ?r#   c                	.    \         P                  ! W4      # r.   )r   dyn_range_array___getitem__rs   s   &&r   rt   dyn_range_array.__getitem__   s    55d>>r#   c               $    V ^8  d   QhRRRRRR/# )rU   rn   rR   rK   r   re   rx   r$   )rX   s   "r   rY   r      s&     B BS BY B$ Br#   c                	0    \         P                  ! WV4      # r.   )r   dyn_range_array___setitem__r|   s   &&&r   r}   dyn_range_array.__setitem__   s    55dqAAr#   r$   N)r   r   r8   r9   r   r   r   r
   r   dyn_range_array_data_getrQ   r   dyn_range_array_count_getrS   r`   rj   rt   r}   r   r   r   delete_dyn_range_arrayr   r<   r$   r#   r   r   r      sp    -/I!#GH !D!DED+E*>>?E3?08?B33H!88r#   r   c                      ] tR t^t$ ]! R R RR7      t]t]! ]P                  4      t
R]R&   ]! ]P                  4      tR]R&   R	 R
 ltR R ltR R ltR R lt]P&                  t]P*                  tRtR# )dyn_ea_arrayc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   dyn_ea_array.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r      rL   r#   rM   rN   'unsigned long long *'rQ   rR   rS   c                    V ^8  d   QhRRRR/# )rU   rV   r   rW   rR   r$   )rX   s   "r   rY   dyn_ea_array.__annotate__   s      4 c r#   c                	\    \         P                  ! V \         P                  ! W4      4       R # r.   )r   dyn_ea_array_swiginitnew_dyn_ea_arrayr_   s   &&&r   r`   dyn_ea_array.__init__   s"    ((z/J/J0 	r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   r      s     5 5 5r#   c                	.    \         P                  ! V 4      # r.   )r   dyn_ea_array___len__ri   s   &r   rj   dyn_ea_array.__len__       ..t44r#   c                    V ^8  d   QhRRRR/# )rU   rn   rR   re   'unsigned long long const &'r$   )rX   s   "r   rY   r      s     < <S <$@ <r#   c                	.    \         P                  ! W4      # r.   )r   dyn_ea_array___getitem__rs   s   &&r   rt   dyn_ea_array.__getitem__   s    224;;r#   c               $    V ^8  d   QhRRRRRR/# )rU   rn   rR   rK   r   re   rx   r$   )rX   s   "r   rY   r      s"     ? ?S ?%A ?T ?r#   c                	0    \         P                  ! WV4      # r.   )r   dyn_ea_array___setitem__r|   s   &&&r   r}   dyn_ea_array.__setitem__   s    224A>>r#   r$   N)r   r   r8   r9   r   r   r   r
   r   dyn_ea_array_data_getrQ   r   dyn_ea_array_count_getrS   r`   rj   rt   r}   r   r   r   delete_dyn_ea_arrayr   r<   r$   r#   r   r   r      sp    -/I!#GH#+J,L,L#MD
 M*;;<E3<5<?33H!55r#   r   c                      ] tR t^t$ ]! R R RR7      t]t]! ]P                  4      t
R]R&   ]! ]P                  4      tR]R&   R	 R
 ltR R ltR R ltR R lt]P&                  t]P*                  tRtR# )dyn_regarg_arrayc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   dyn_regarg_array.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r      rL   r#   rM   rN   'regarg_t *'rQ   rR   rS   c                    V ^8  d   QhRRRR/# )rU   rV   
'regarg_t'rW   rR   r$   )rX   s   "r   rY   dyn_regarg_array.__annotate__   s     1 1j 1# 1r#   c                	\    \         P                  ! V \         P                  ! W4      4       R # r.   )r   dyn_regarg_array_swiginitnew_dyn_regarg_arrayr_   s   &&&r   r`   dyn_regarg_array.__init__   rb   r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   r      rf   r#   c                	.    \         P                  ! V 4      # r.   )r   dyn_regarg_array___len__ri   s   &r   rj   dyn_regarg_array.__len__   rl   r#   c                    V ^8  d   QhRRRR/# )rU   rn   rR   re   z'regarg_t const &'r$   )rX   s   "r   rY   r      rp   r#   c                	.    \         P                  ! W4      # r.   )r   dyn_regarg_array___getitem__rs   s   &&r   rt   dyn_regarg_array.__getitem__   rv   r#   c               $    V ^8  d   QhRRRRRR/# )rU   rn   rR   rK   r   re   rx   r$   )rX   s   "r   rY   r      s&     C CS CZ C4 Cr#   c                	0    \         P                  ! WV4      # r.   )r   dyn_regarg_array___setitem__r|   s   &&&r   r}   dyn_regarg_array.__setitem__   r   r#   r$   N)r   r   r8   r9   r   r   r   r
   r   dyn_regarg_array_data_getrQ   r   dyn_regarg_array_count_getrS   r`   rj   rt   r}   r   r   r   delete_dyn_regarg_arrayr   r<   r$   r#   r   r   r      r   r#   r   c                    V ^8  d   QhRRRR/# )rU   rK   r   re   rx   r$   )rX   s   "r   rY   rY      s     % %: % %r#   c                .    \         P                  ! V 4      # r.   )r   free_regarg)rK   s   &r   r   r      s    !!!$$r#   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
&   R t]P(                  tR R ltRtR# )regarg_tc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   regarg_t.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r     rL   r#   rM   rN   rR   regz
'type_t *'r   z'char *'r   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   regarg_t_swiginitnew_regarg_tr   argss   &*r   r`   regarg_t.__init__   s    $$T:+B+BD+IJr#   c                    V ^8  d   QhRRRR/# )rU   rr   re   rx   r$   )rX   s   "r   rY   regarg_t.__annotate__   s     1 1j 1D 1r#   c                	.    \         P                  ! W4      # r.   )r   regarg_t_swap)r   r  s   &&r   swapregarg_t.swap   s    ''00r#   r$   N)r   r   r8   r9   r   r   r   r
   r   regarg_t_reg_getregarg_t_reg_setr  r   regarg_t_type_getregarg_t_type_setr   regarg_t_name_getregarg_t_name_setr   r`   delete_regarg_tr   r  r<   r$   r#   r   r   r      s    -/I!#GH
33ZC 
 < <jD* j::JD( K!111 1r#   r   c                  v   ] tR t^t$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    R R ltR	 R
 ltR R ltR R lt]! ]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&    ]! ]Pd                  ]Pf                  4      t4R ]R!&    ]! ]Pj                  ]Pl                  4      t7R]R"&    ]! ]Pp                  ]Pr                  4      t:R#]R$&    ]! ]Pv                  ]Px                  4      t=R%]R&&    ]! ]P|                  ]P~                  4      t@R]R'&    ]! ]P                  ]P                  4      tCR(]R)&    RAR* R+ lltDR, R- ltER. R/ ltFR0 R1 ltGR2 R3 ltHR4 R5 ltI]! ]E4      t( ]! ]F4      t. ]! ]G4      t: ]! ]H4      tC ]! ]I4      t4 R6 tJR7 tKR8 tLR9 tMR: tNR; tOR< tPR= tQR> tR]! ]O4      tS]! ]P4      tT]! ]Q4      tU]P                  tWR?tXR@# )Bfunc_tc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   func_t.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r     rL   r#   rM   rN   z'uint64'flagsc                   V ^8  d   QhRR/# rU   re   boolr$   )rX   s   "r   rY   func_t.__annotate__   s     . .t .r#   c                .    \         P                  ! V 4      # )zIs a far function?
)r   func_t_is_farri   s   &r   is_farfunc_t.is_far   s     ''--r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r"          3 3D 3r#   c                .    \         P                  ! V 4      # )zDoes function return?
)r   func_t_does_returnri   s   &r   does_returnfunc_t.does_return        ,,T22r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r"    r(  r#   c                .    \         P                  ! V 4      # )z Has SP-analysis been performed?
)r   func_t_analyzed_spri   s   &r   analyzed_spfunc_t.analyzed_sp  r-  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r"  	  s     < <T <r#   c                .    \         P                  ! V 4      # )zNeeds prolog analysis?
)r   func_t_need_prolog_analysisri   s   &r   need_prolog_analysisfunc_t.need_prolog_analysis	  s     55d;;r#   rR   frame	'asize_t'frsizez'ushort'frregsargsizefpdz'bgcolor_t'colorpntqtyrP   points	regvarqtyr   regvars	regargqtyr   regargstailqtyr   tailsida_idaapi.ea_townerrefqty'ea_t *'referersc               $    V ^8  d   QhRRRRRR/# )rU   startrG  endf'flags64_t'r$   )rX   s   "r   rY   r"  R  s'     O Oo Oo OOr#   c                	^    \         P                  ! V \         P                  ! WV4      4       R # r.   )r   func_t_swiginit
new_func_t)r   rM  rN  rO  s   &&&&r   r`   func_t.__init__R  s    ""4)>)>u1)MNr#   c                   V ^8  d   QhRR/# )rU   re   z%'dynamic_wrapped_array_t< stkpnt_t >'r$   )rX   s   "r   rY   r"  V  s     6 6D 6r#   c                	.    \         P                  ! V 4      # r.   )r   func_t___get_points__ri   s   &r   __get_points__func_t.__get_points__V  s    //55r#   c                   V ^8  d   QhRR/# )rU   re   z%'dynamic_wrapped_array_t< regvar_t >'r$   )rX   s   "r   rY   r"  Y       7 7 E 7r#   c                	.    \         P                  ! V 4      # r.   )r   func_t___get_regvars__ri   s   &r   __get_regvars__func_t.__get_regvars__Y      0066r#   c                   V ^8  d   QhRR/# )rU   re   z$'dynamic_wrapped_array_t< range_t >'r$   )rX   s   "r   rY   r"  \  s     5 5B 5r#   c                	.    \         P                  ! V 4      # r.   )r   func_t___get_tails__ri   s   &r   __get_tails__func_t.__get_tails__\  r   r#   c                   V ^8  d   QhRR/# )rU   re   z!'dynamic_wrapped_array_t< ea_t >'r$   )rX   s   "r   rY   r"  _  s     8 8!B 8r#   c                	.    \         P                  ! V 4      # r.   )r   func_t___get_referers__ri   s   &r   __get_referers__func_t.__get_referers___  r   r#   c                   V ^8  d   QhRR/# )rU   re   z%'dynamic_wrapped_array_t< regarg_t >'r$   )rX   s   "r   rY   r"  b  r[  r#   c                	.    \         P                  ! V 4      # r.   )r   func_t___get_regargs__ri   s   &r   __get_regargs__func_t.__get_regargs__b  r`  r#   c              #  T   "   \        V 4      P                  4        Rj  xL
  R#  L5i)z2
Alias for func_item_iterator_t(self).addresses()
N)func_item_iterator_t	addressesri   s   &r   rr  func_t.addressest        (-77999   (&(c              #  T   "   \        V 4      P                  4        Rj  xL
  R#  L5i)z3
Alias for func_item_iterator_t(self).code_items()
N)rq  
code_itemsri   s   &r   rw  func_t.code_itemsz        (-88:::ru  c              #  T   "   \        V 4      P                  4        Rj  xL
  R#  L5i)z3
Alias for func_item_iterator_t(self).data_items()
N)rq  
data_itemsri   s   &r   r{  func_t.data_items  ry  ru  c              #  T   "   \        V 4      P                  4        Rj  xL
  R#  L5i)z3
Alias for func_item_iterator_t(self).head_items()
N)rq  
head_itemsri   s   &r   r~  func_t.head_items  ry  ru  c              #  T   "   \        V 4      P                  4        Rj  xL
  R#  L5i)z2
Alias for func_item_iterator_t(self).not_tails()
N)rq  	not_tailsri   s   &r   r  func_t.not_tails  rt  ru  c                b    \         P                  ! V 4      pVP                  4       '       d   RpV# )aN  Retrieve the function frame, in the form of a structure
where frame offsets that are accessed by the program, as well
as areas for "saved registers" and "return address", are
represented by structure members.

If the function has no associated frame, return None

:returns: a ida_typeinf.tinfo_t object representing the frame, or NoneN)r   func_t_get_frame_objectemptyr   vals   & r   get_frame_objectfunc_t.get_frame_object  s)     00699;;C
r#   c                .    \         P                  ! V 4      # )z2Get the function name

:returns: the function name)r   func_t_get_nameri   s   &r   get_namefunc_t.get_name  s     ))$//r#   c                b    \         P                  ! V 4      pVP                  4       '       d   RpV# )a]  Retrieve the function prototype.

Once you have obtained the prototype, you can:

* retrieve the return type through ida_typeinf.tinfo_t.get_rettype()
* iterate on the arguments using ida_typeinf.tinfo_t.iter_func()

If the function has no associated prototype, return None

:returns: a ida_typeinf.tinfo_t object representing the prototype, or NoneN)r   func_t_get_prototyper  r  s   & r   get_prototypefunc_t.get_prototype  s)     --d399;;C
r#   c                4    \        V 4      P                  4       # )z1
Alias for func_item_iterator_t(self).__iter__()
)rq  r   ri   s   &r   r   func_t.__iter__  s     $D)2244r#   r$   N)    r  r  )Yr   r   r8   r9   r   r   r   r
   r   func_t_flags_getfunc_t_flags_setr  r   r%  r+  r1  r6  func_t_frame_getfunc_t_frame_setr8  func_t_frsize_getfunc_t_frsize_setr:  func_t_frregs_getfunc_t_frregs_setr;  func_t_argsize_getfunc_t_argsize_setr<  func_t_fpd_getfunc_t_fpd_setr=  func_t_color_getfunc_t_color_setr>  func_t_pntqty_getfunc_t_pntqty_setr?  func_t_points_getfunc_t_points_setr@  func_t_regvarqty_getfunc_t_regvarqty_setrA  func_t_regvars_getfunc_t_regvars_setrB  func_t_regargqty_getfunc_t_regargqty_setrC  func_t_regargs_getfunc_t_regargs_setrD  func_t_tailqty_getfunc_t_tailqty_setrE  func_t_tails_getfunc_t_tails_setrF  func_t_owner_getfunc_t_owner_setrH  func_t_refqty_getfunc_t_refqty_setrI  func_t_referers_getfunc_t_referers_setrK  r`   rX  r^  rd  ri  rn  rr  rw  r{  r~  r  r  r  r  r   frame_objectr   	prototypedelete_func_tr   r<   r$   r#   r   r  r     s   -/I!#GHz::JE8 .
3
3
< *55zE3  !=!=zFI 
 < <jFH !*"?"?		GY j77C !*"="=zE; :77FC #J$@$@$$&FL &j==zIs $Z%B%B%%'G\ 'j==zIs $Z%B%B%%'G\ 'J99:GS !*"="=zE; %j&A&A##%E? %:77FC !*"@"@&&(Hh (O67587n%F'G]#E()H'G:;;;:0 5
 ,-LHD'I!//r#   r  c                    V ^8  d   QhRRRR/# rU   pfn'func_t're   r!  r$   )rX   s   "r   rY   rY      s     ) )x )4 )r#   c                .    \         P                  ! V 4      # )z/Does function describe a function entry chunk?
)r   is_func_entryr  s   &r   r  r          ##C((r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY     s     ( (h ($ (r#   c                .    \         P                  ! V 4      # )z.Does function describe a function tail chunk?
)r   is_func_tailr  s   &r   r  r    s     ""3''r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  lockr!  re   rx   r$   )rX   s   "r   rY   rY     s!     1 1 1 1 1r#   c                .    \         P                  ! W4      # )zLock function pointer Locked pointers are guaranteed to remain valid until they are unlocked. Ranges with locked pointers cannot be deleted or moved. 
        )r   lock_func_range)r  r  s   &&r   r  r    s     %%c00r#   c                  X    ] tR tRt]! R R RR7      t]tR R lt]	P                  tRtR	# )
	lock_funci  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   lock_func.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r    rL   r#   rM   rN   c                   V ^8  d   QhRR/# )rU   _pfnr  r$   )rX   s   "r   rY   lock_func.__annotate__  s     L LX Lr#   c                	\    \         P                  ! V \         P                  ! V4      4       R # r.   )r   lock_func_swiginitnew_lock_func)r   r  s   &&r   r`   lock_func.__init__  s    %%dJ,D,DT,JKr#   r$   N)r   r   r8   r9   r   r   r   r
   r`   r   delete_lock_funcr   r<   r$   r#   r   r  r    s,    -/I!#GHL!22r#   r  c                  X    ] tR tRt]! R R RR7      t]tR R lt]	P                  tRtR	# )
lock_func_with_tails_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   lock_func_with_tails_t.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r     rL   r#   rM   rN   c                   V ^8  d   QhRR/# )rU   r  r  r$   )rX   s   "r   rY   #lock_func_with_tails_t.__annotate__$  s     - -H -r#   c                	\    \         P                  ! V \         P                  ! V4      4       R # r.   )r   lock_func_with_tails_t_swiginitnew_lock_func_with_tails_t)r   r  s   &&r   r`   lock_func_with_tails_t.__init__$  s'    224&&:''*:, 	-r#   r$   N)r   r   r8   r9   r   r   r   r
   r`   r   delete_lock_func_with_tails_tr   r<   r$   r#   r   r  r    s-    -/I!#GH- "??r#   r  c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   -  s     * * *D *r#   c                .    \         P                  ! V 4      # )z Is the function pointer locked?
)r   is_func_lockedr  s   &r   r  r  -       $$S))r#   c                    V ^8  d   QhRRRR/# rU   earG  re   
'func_t *'r$   )rX   s   "r   rY   rY   3  s     # # #J #r#   c                .    \         P                  ! V 4      # )zGet pointer to function structure by address. 
        
:param ea: any address in a function
:returns: ptr to a function or nullptr. This function returns a function entry chunk.)r   get_funcr  s   &r   r  r  3      
 r""r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  r  rG  re   rR   r$   )rX   s   "r   rY   rY   ;  s!     1 18 1 1C 1r#   c                .    \         P                  ! W4      # )zGet the containing tail chunk of 'ea'. 
        
:returns: -1: means 'does not contain ea'
:returns: 0: means the 'pfn' itself contains ea
:returns: >0: the number of the containing function tail chunk)r   get_func_chunknumr  r  s   &&r   r  r  ;  s     ''00r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  r  rG  re   r!  r$   )rX   s   "r   rY   rY   D  s!     - -x -_ - -r#   c                .    \         P                  ! W4      # )z3Does the given function contain the given address?
)r   func_containsr  s   &&r   r  r  D  s     ##C,,r#   c               $    V ^8  d   QhRRRRRR/# rU   ea1rG  ea2re   r!  r$   )rX   s   "r   rY   rY   J  s!     - -o -O -t -r#   c                .    \         P                  ! W4      # )z.Do two addresses belong to the same function?
)r   is_same_func)r  r  s   &&r   r  r  J  s     ""3,,r#   c                    V ^8  d   QhRRRR/# rU   nrR   re   r  r$   )rX   s   "r   rY   rY   P  s     # # #
 #r#   c                .    \         P                  ! V 4      # )zGet pointer to function structure by number. 
        
:param n: number of function, is in range 0..get_func_qty()-1
:returns: ptr to a function or nullptr. This function returns a function entry chunk.)r   	getn_funcr  s   &r   r  r  P  s    
 ""r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   rY   X  s     % %S %r#   c                 ,    \         P                  ! 4       # )z.Get total number of functions in the program.
)r   get_func_qtyr$   r#   r   r  r  X  s     ""$$r#   c                    V ^8  d   QhRRRR/# rU   r  rG  re   rR   r$   )rX   s   "r   rY   rY   ^  s     ' '_ ' 'r#   c                .    \         P                  ! V 4      # )zGet ordinal number of a function. 
        
:param ea: any address in the function
:returns: number of function (0..get_func_qty()-1). -1 means 'no function at the specified address'.)r   get_func_numr  s   &r   r	  r	  ^  s    
 ""2&&r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   f       ( (o ( (r#   c                .    \         P                  ! V 4      # )zGet pointer to the previous function. 
        
:param ea: any address in the program
:returns: ptr to function or nullptr if previous function doesn't exist)r   get_prev_funcr  s   &r   r  r  f      
 ##B''r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   n  r  r#   c                .    \         P                  ! V 4      # )zGet pointer to the next function. 
        
:param ea: any address in the program
:returns: ptr to function or nullptr if next function doesn't exist)r   get_next_funcr  s   &r   r  r  n  r  r#   c               $    V ^8  d   QhRRRRRR/# )rU   rangesz'rangeset_t'r  r  re   rG  r$   )rX   s   "r   rY   rY   v  s!     3 3L 3x 3? 3r#   c                .    \         P                  ! W4      # )zGet function ranges. 
        
:param ranges: buffer to receive the range info
:param pfn: ptr to function structure
:returns: end address of the last function range (BADADDR-error))r   get_func_ranges)r  r  s   &&r   r  r  v  s     %%f22r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  
repeatabler!  re   strr$   )rX   s   "r   rY   rY     s!     4 4h 4D 4C 4r#   c                .    \         P                  ! W4      # )zGet function comment. 
        
:param pfn: ptr to function structure
:param repeatable: get repeatable comment?
:returns: size of comment or -1 In fact this function works with function chunks too.)r   get_func_cmt)r  r  s   &&r   r  r    s     ""333r#   c               (    V ^8  d   QhRRRRRRRR/# )rU   r  r  cmtr  r  r!  re   r$   )rX   s   "r   rY   rY     s(     9 9h 9S 9d 9d 9r#   c                0    \         P                  ! WV4      # )zSet function comment. This function works with function chunks too. 
        
:param pfn: ptr to function structure
:param cmt: comment string, may be multiline (with '
'). Use empty str ("") to delete comment
:param repeatable: set repeatable comment?)r   set_func_cmt)r  r  r  s   &&&r   r  r    s     ""3Z88r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY          ' 'X ' 'r#   c                .    \         P                  ! V 4      # )zUpdate information about a function in the database (func_t). You must not change the function start and end addresses using this function. Use set_func_start() and set_func_end() for it. 
        
:param pfn: ptr to function structure
:returns: success)r   update_funcr  s   &r   r"  r"        
 !!#&&r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY     r   r#   c                .    \         P                  ! V 4      # )zAdd a new function. If the fn->end_ea is BADADDR, then IDA will try to determine the function bounds by calling find_func_bounds(..., FIND_FUNC_DEFINE). 
        
:param pfn: ptr to filled function structure
:returns: success)r   add_func_exr  s   &r   r&  r&    r#  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   rY     s     & &d &r#   c                 *    \         P                  ! V !  # )zAdd a new function. If the function end address is BADADDR, then IDA will try to determine the function bounds by calling find_func_bounds(..., FIND_FUNC_DEFINE). 
        
:param ea1: start address
:param ea2: end address
:returns: success)r   add_funcr	  s   *r   r)  r)    s     %%r#   c                    V ^8  d   QhRRRR/# rU   r  rG  re   r!  r$   )rX   s   "r   rY   rY     s     # # #D #r#   c                .    \         P                  ! V 4      # )zaDelete a function. 
        
:param ea: any address in the function entry chunk
:returns: success)r   del_funcr  s   &r   r.  r.    r  r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  rG  newstartre   rR   r$   )rX   s   "r   rY   rY     s!     3 3 3/ 3S 3r#   c                .    \         P                  ! W4      # )zMove function chunk start address. 
        
:param ea: any address in the function
:param newstart: new end address of the function
:returns: Function move result codes)r   set_func_start)r  r0  s   &&r   r2  r2    s     $$R22r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  rG  newendre   r!  r$   )rX   s   "r   rY   rY     s!     / /_ /o / /r#   c                .    \         P                  ! W4      # )zMove function chunk end address. 
        
:param ea: any address in the function
:param newend: new end address of the function
:returns: success)r   set_func_end)r  r4  s   &&r   r6  r6    s     ""2..r#   c                   V ^8  d   QhRR/# )rU   re   rx   r$   )rX   s   "r   rY   rY     s     0 0 0r#   c                 *    \         P                  ! V !  # )a  Reanalyze a function. This function plans to analyzes all chunks of the given function. Optional parameters (ea1, ea2) may be used to narrow the analyzed range. 
        
:param pfn: pointer to a function
:param ea1: start of the range to analyze
:param ea2: end of range to analyze
:param analyze_parents: meaningful only if pfn points to a function tail. if true, all tail parents will be reanalyzed. if false, only the given tail will be reanalyzed.)r   reanalyze_functionr*  s   *r   r9  r9    s     (($//r#   c               $    V ^8  d   QhRRRRRR/# )rU   nfnr  r  rR   re   r$   )rX   s   "r   rY   rY     s!     3 3( 33 3# 3r#   c                .    \         P                  ! W4      # )a  Determine the boundaries of a new function. This function tries to find the start and end addresses of a new function. It calls the module with processor_t::func_bounds in order to fine tune the function boundaries. 
        
:param nfn: structure to fill with information \ nfn->start_ea points to the start address of the new function.
:param flags: Find function bounds flags
:returns: Find function bounds result codes)r   find_func_bounds)r;  r  s   &&r   r=  r=    s     &&s22r#   c                    V ^8  d   QhRRRR/# )rU   r  rG  re   r  r$   )rX   s   "r   rY   rY      s     ( (o ( (r#   c                .    \         P                  ! V 4      # )ziGet function name. 
        
:param ea: any address in the function
:returns: length of the function name)r   get_func_namer  s   &r   r@  r@     r  r#   c                    V ^8  d   QhRRRR/# )rU   r  r  re   r9  r$   )rX   s   "r   rY   rY     s     * * *I *r#   c                .    \         P                  ! V 4      # )zCalculate function size. This function takes into account all fragments of the function. 
        
:param pfn: ptr to function structure)r   calc_func_sizer  s   &r   rC  rC    s     $$S))r#   c                    V ^8  d   QhRRRR/# rU   r  r  re   rR   r$   )rX   s   "r   rY   rY     s     , ,( ,c ,r#   c                .    \         P                  ! V 4      # )zGet function bitness (which is equal to the function segment bitness). pfn==nullptr => returns 0 
        
:returns: 0: 16
:returns: 1: 32
:returns: 2: 64)r   get_func_bitnessr  s   &r   rG  rG    s     &&s++r#   c                    V ^8  d   QhRRRR/# rE  r$   )rX   s   "r   rY   rY     s     ) )x )3 )r#   c                .    \         P                  ! V 4      # )z/Get number of bits in the function addressing.
)r   get_func_bitsr  s   &r   rJ  rJ    r  r#   c                    V ^8  d   QhRRRR/# rE  r$   )rX   s   "r   rY   rY     s     * * *C *r#   c                .    \         P                  ! V 4      # )z0Get number of bytes in the function addressing.
)r   get_func_bytesr  s   &r   rM  rM    r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   $  s     + + +T +r#   c                .    \         P                  ! V 4      # )z&Is the function visible (not hidden)?
)r   is_visible_funcr  s   &r   rP  rP  $  s     %%c**r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   *  s     3 3 3T 3r#   c                .    \         P                  ! V 4      # )zBIs the function visible (event after considering SCF_SHHID_FUNC)?
)r   is_finally_visible_funcr  s   &r   rS  rS  *  s     --c22r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  visibler!  re   rx   r$   )rX   s   "r   rY   rY   0  s!     5 5( 5T 5T 5r#   c                .    \         P                  ! W4      # )zSet visibility of function.
)r   set_visible_func)r  rU  s   &&r   rW  rW  0  s     &&s44r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  oldnamer  re   rR   r$   )rX   s   "r   rY   rY   6  s!     > >8 >c >S >r#   c                .    \         P                  ! W4      # )a;  Give a meaningful name to function if it consists of only 'jump' instruction. 
        
:param pfn: pointer to function (may be nullptr)
:param oldname: old name of function. if old name was in "j_..." form, then we may discard it and set a new name. if oldname is not known, you may pass nullptr.
:returns: success)r   set_func_name_if_jumpfunc)r  rY  s   &&r   r[  r[  6  s     //==r#   c                    V ^8  d   QhRRRR/# )rU   r  r  re   rJ  r$   )rX   s   "r   rY   rY   ?  s     2 2 2H 2r#   c                .    \         P                  ! V 4      # )zCalculate target of a thunk function. 
        
:param pfn: pointer to function (may not be nullptr)
:returns: the target function or BADADDR)r   calc_thunk_func_targetr  s   &r   r^  r^  ?  s    
 ,,S11r#   c                    V ^8  d   QhRRRR/# )rU   calleerG  re   r!  r$   )rX   s   "r   rY   rY   G       / /_ / /r#   c                .    \         P                  ! V 4      # )a  Does the function return? To calculate the answer, FUNC_NORET flag and is_noret() are consulted The latter is required for imported functions in the .idata section. Since in .idata we have only function pointers but not functions, we have to introduce a special flag for them. 
        )r   func_does_return)r`  s   &r   rc  rc  G  s     &&v..r#   c                    V ^8  d   QhRRRR/# r,  r$   )rX   s   "r   rY   rY   M  ra  r#   c                .    \         P                  ! V 4      # )zPlan to reanalyze noret flag. This function does not remove FUNC_NORET if it is already present. It just plans to reanalysis. 
        )r   reanalyze_noret_flagr  s   &r   rf  rf  M  s     **2..r#   c               $    V ^8  d   QhRRRRRR/# )rU   insn_earG  noretr!  re   r$   )rX   s   "r   rY   rY   S  s!     5 5O 5D 5D 5r#   c                .    \         P                  ! W4      # )a  Signal a non-returning instruction. This function can be used by the processor module to tell the kernel about non-returning instructions (like call exit). The kernel will perform the global function analysis and find out if the function returns at all. This analysis will be done at the first call to func_does_return() 
        
:returns: true if the instruction 'noret' flag has been changed)r   set_noret_insn)rh  ri  s   &&r   rk  rk  S  s     $$W44r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   Z  s     % %? %j %r#   c                .    \         P                  ! V 4      # )zGet pointer to function chunk structure by address. 
        
:param ea: any address in a function chunk
:returns: ptr to a function chunk or nullptr. This function may return a function entry as well as a function tail.)r   
get_fchunkr  s   &r   rn  rn  Z  s    
   $$r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   b  s     % %3 %* %r#   c                .    \         P                  ! V 4      # )zGet pointer to function chunk structure by number. 
        
:param n: number of function chunk, is in range 0..get_fchunk_qty()-1
:returns: ptr to a function chunk or nullptr. This function may return a function entry as well as a function tail.)r   getn_fchunkr  s   &r   rq  rq  b  s    
 !!!$$r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   rY   j  s     ' 's 'r#   c                 ,    \         P                  ! 4       # )z4Get total number of function chunks in the program.
)r   get_fchunk_qtyr$   r#   r   rt  rt  j  s     $$&&r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   p  s     ) ) )# )r#   c                .    \         P                  ! V 4      # )zGet ordinal number of a function chunk in the global list of function chunks. 
        
:param ea: any address in the function chunk
:returns: number of function chunk (0..get_fchunk_qty()-1). -1 means 'no function chunk at the specified address'.)r   get_fchunk_numr  s   &r   rw  rw  p  s    
 $$R((r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY   x       * * *: *r#   c                .    \         P                  ! V 4      # )zGet pointer to the previous function chunk in the global list. 
        
:param ea: any address in the program
:returns: ptr to function chunk or nullptr if previous function chunk doesn't exist)r   get_prev_fchunkr  s   &r   r{  r{  x      
 %%b))r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY     ry  r#   c                .    \         P                  ! V 4      # )zGet pointer to the next function chunk in the global list. 
        
:param ea: any address in the program
:returns: ptr to function chunk or nullptr if next function chunk doesn't exist)r   get_next_fchunkr  s   &r   r  r    r|  r#   c               (    V ^8  d   QhRRRRRRRR/# )rU   r  r  r  rG  r  re   r!  r$   )rX   s   "r   rY   rY     s)     6 6( 6 6 66r#   c                0    \         P                  ! WV4      # )aV  Append a new tail chunk to the function definition. If the tail already exists, then it will simply be added to the function tail list Otherwise a new tail will be created and its owner will be set to be our function If a new tail cannot be created, then this function will fail. 
        
:param pfn: pointer to the function
:param ea1: start of the tail. If a tail already exists at the specified address it must start at 'ea1'
:param ea2: end of the tail. If a tail already exists at the specified address it must end at 'ea2'. If specified as BADADDR, IDA will determine the end address itself.)r   append_func_tail)r  r  r  s   &&&r   r  r    s     &&s55r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  tail_earG  re   r!  r$   )rX   s   "r   rY   rY     s!     5 5( 5_ 5 5r#   c                .    \         P                  ! W4      # )a4  Remove a function tail. If the tail belongs only to one function, it will be completely removed. Otherwise if the function was the tail owner, the first function using this tail becomes the owner of the tail. 
        
:param pfn: pointer to the function
:param tail_ea: any address inside the tail to remove)r   remove_func_tail)r  r  s   &&r   r  r    s    
 &&s44r#   c               $    V ^8  d   QhRRRRRR/# )rU   fntr  	new_ownerrG  re   r!  r$   )rX   s   "r   rY   rY     s!     5 5 5_ 5 5r#   c                .    \         P                  ! W4      # )zSet a new owner of a function tail. The new owner function must be already referring to the tail (after append_func_tail). 
        
:param fnt: pointer to the function tail
:param new_owner: the entry point of the new owner function)r   set_tail_owner)r  r  s   &&r   r  r    s    
 $$S44r#   c               (    V ^8  d   QhRRRRRRRR/# )	rU   fti'func_tail_iterator_t'r  r  r  rG  re   r!  r$   )rX   s   "r   rY   rY     s+     ; ; 6 ;X ;;;r#   c                0    \         P                  ! WV4      # r.   )r   func_tail_iterator_set)r  r  r  s   &&&r   r  r    s    ,,Sr::r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  r  r  rG  re   r!  r$   )rX   s   "r   rY   rY     s#     9 9#9 9 99r#   c                .    \         P                  ! W4      # r.   )r   func_tail_iterator_set_ea)r  r  s   &&r   r  r    s    //88r#   c               $    V ^8  d   QhRRRRRR/# )rU   fpiz'func_parent_iterator_t'r  r  re   r!  r$   )rX   s   "r   rY   rY     s#     9 9": 9 99r#   c                .    \         P                  ! W4      # r.   )r   func_parent_iterator_set)r  r  s   &&r   r  r    s    ..s88r#   c               $    V ^8  d   QhRRRRRR/# )rU   arg1rP  arg2z'void *'re   r!  r$   )rX   s   "r   rY   rY     s!     ( ( (8 (t (r#   c                .    \         P                  ! W4      # )z'Helper function to accept any address.
)r   f_any)r  r  s   &&r   r  r    s     D''r#   c                      ] tR tRt]! 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 t]tRtR# )func_tail_iterator_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   func_tail_iterator_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r    rL   r#   rM   rN   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   func_tail_iterator_t_swiginitnew_func_tail_iterator_tr  s   &*r   r`   func_tail_iterator_t.__init__  '    00z$$8%&*8, 	-r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   !func_tail_iterator_t.__annotate__  s     @ @4 @r#   c                	2    \         P                  ! V .VO5!  # r.   )r   func_tail_iterator_t_setr  s   &*r   r    func_tail_iterator_t.set  s    224?$??r#   c                    V ^8  d   QhRRRR/# r,  r$   )rX   s   "r   rY   r    s     @ @ @D @r#   c                	.    \         P                  ! W4      # r.   )r   func_tail_iterator_t_set_ea)r   r  s   &&r   set_eafunc_tail_iterator_t.set_ea  s    55d??r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rX   s   "r   rY   r    s&     I I_ I? Id Ir#   c                	0    \         P                  ! WV4      # r.   )r   func_tail_iterator_t_set_ranger   r  r  s   &&&r   	set_rangefunc_tail_iterator_t.set_range  s    88CHHr#   c                   V ^8  d   QhRR/# rU   re   r   r$   )rX   s   "r   rY   r         ; ;' ;r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t_chunkri   s   &r   chunkfunc_tail_iterator_t.chunk      44T::r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r         ; ;d ;r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t_firstri   s   &r   firstfunc_tail_iterator_t.first  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r         : :T :r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t_lastri   s   &r   lastfunc_tail_iterator_t.last      33D99r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    s     > > >r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t___next__ri   s   &r   __next__func_tail_iterator_t.__next__      77==r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t_prevri   s   &r   prevfunc_tail_iterator_t.prev  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_tail_iterator_t_mainri   s   &r   mainfunc_tail_iterator_t.main  r  r#   c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)z'
Provide an iterator on function tails
N)r  r  nextr   oks   & r   r   func_tail_iterator_t.__iter__  s1      YY[**,B 
   A&Ar$   N)r   r   r8   r9   r   r   r   r
   r`   r   delete_func_tail_iterator_tr   r    r  r  r  r  r  r  r  r  r   r  r<   r$   r#   r   r  r    si    -/I!#GH- "==@@I;;:>:: Dr#   r  c                     ] tR tRt]! R R RR7      t]tR 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/ R0 ltR1 R2 ltR3 R4 ltR5 t ]t!R6 t"R7 t#R8 t$R9 t%R: t&]'PP                  t)R;t*R<# )=rq  i  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   func_item_iterator_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r    rL   r#   rM   rN   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   func_item_iterator_t_swiginitnew_func_item_iterator_tr  s   &*r   r`   func_item_iterator_t.__init__  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   !func_item_iterator_t.__annotate__  s     @ @4 @r#   c                2    \         P                  ! V .VO5!  # )zJSet a function range. if pfn == nullptr then a segment range will be set.
)r   func_item_iterator_t_setr  s   &*r   r    func_item_iterator_t.set  s     224?$??r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rX   s   "r   rY   r    s&     I I_ I? Id Ir#   c                0    \         P                  ! WV4      # )zSet an arbitrary range.
)r   func_item_iterator_t_set_ranger  s   &&&r   r  func_item_iterator_t.set_range  s     88CHHr#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_firstri   s   &r   r  func_item_iterator_t.first  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r     r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_lastri   s   &r   r  func_item_iterator_t.last   r  r#   c                   V ^8  d   QhRR/# rU   re   rG  r$   )rX   s   "r   rY   r    s     = = =r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_currentri   s   &r   currentfunc_item_iterator_t.current      66t<<r#   c                    V ^8  d   QhRRRR/# )rU   _earG  re   r!  r$   )rX   s   "r   rY   r    s     A A/ AT Ar#   c                	.    \         P                  ! W4      # r.   )r   func_item_iterator_t_set_ea)r   r  s   &&r   r  func_item_iterator_t.set_ea  s    55d@@r#   c                   V ^8  d   QhRR/# r  r$   )rX   s   "r   rY   r  	  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_chunkri   s   &r   r  func_item_iterator_t.chunk	  r  r#   c                    V ^8  d   QhRRRR/# rU   funcz'testf_t *'re   r!  r$   )rX   s   "r   rY   r    s     D D[ DD Dr#   c                	.    \         P                  ! W4      # r.   )r   func_item_iterator_t___next__r   r  s   &&r   r  func_item_iterator_t.__next__  s    77CCr#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   r    s     @ @ @ @r#   c                	.    \         P                  ! W4      # r.   )r   func_item_iterator_t_prevr  s   &&r   r  func_item_iterator_t.prev  s    33D??r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r         ? ?$ ?r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_next_addrri   s   &r   	next_addrfunc_item_iterator_t.next_addr      88>>r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_next_headri   s   &r   	next_headfunc_item_iterator_t.next_head  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_next_coderi   s   &r   	next_codefunc_item_iterator_t.next_code  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_next_datari   s   &r   	next_datafunc_item_iterator_t.next_data  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r         C Cd Cr#   c                	.    \         P                  ! V 4      # r.   )r   "func_item_iterator_t_next_not_tailri   s   &r   next_not_tail"func_item_iterator_t.next_not_tail      <<TBBr#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  !  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_prev_addrri   s   &r   	prev_addrfunc_item_iterator_t.prev_addr!  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  $  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_prev_headri   s   &r   	prev_headfunc_item_iterator_t.prev_head$  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  '  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_prev_coderi   s   &r   	prev_codefunc_item_iterator_t.prev_code'  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  *  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_prev_datari   s   &r   	prev_datafunc_item_iterator_t.prev_data*  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  -  r.  r#   c                	.    \         P                  ! V 4      # r.   )r   "func_item_iterator_t_prev_not_tailri   s   &r   prev_not_tail"func_item_iterator_t.prev_not_tail-  r3  r#   c                    V ^8  d   QhRRRR/# )rU   out
'insn_t *'re   r!  r$   )rX   s   "r   rY   r  0  s     K KJ K$ Kr#   c                	.    \         P                  ! W4      # r.   )r   %func_item_iterator_t_decode_prev_insn)r   rN  s   &&r   decode_prev_insn%func_item_iterator_t.decode_prev_insn0  s    ??JJr#   c               (    V ^8  d   QhRRRRRRRR/# )	rU   visitedz'eavec_t *'p_farrefz'bool *'rN  rO  re   r!  r$   )rX   s   "r   rY   r  3  s+     $ $[ $$!$%)$r#   c                	2    \         P                  ! V WV4      # r.   )r   *func_item_iterator_t_decode_preceding_insn)r   rU  rV  rN  s   &&&&r   decode_preceding_insn*func_item_iterator_t.decode_preceding_insn3  s    DDTs$ 	$r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   r  8  s     @ @ @ @r#   c                .    \         P                  ! W4      # )zSimilar to next(), but succ() iterates the chunks from low to high addresses, while next() iterates through chunks starting at the function entry chunk 
        )r   func_item_iterator_t_succr  s   &&r   succfunc_item_iterator_t.succ8  s     33D??r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r  =  r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_item_iterator_t_succ_coderi   s   &r   	succ_codefunc_item_iterator_t.succ_code=  r  r#   c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)z#
Provide an iterator on code items
Nr  r   r&  r  s   & r   r   func_item_iterator_t.__iter__@  2      ZZ\,,. !B r  c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)z@
Provide an iterator on addresses contained within the function
N)r  r   r  r  s   & r   rr  func_item_iterator_t.addressesJ  rh  r  c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)zA
Provide an iterator on code items contained within the function
Nrf  r  s   & r   rw  func_item_iterator_t.code_itemsS  rh  r  c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)zA
Provide an iterator on data items contained within the function
N)r  r   r+  r  s   & r   r{  func_item_iterator_t.data_items\  rh  r  c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)zA
Provide an iterator on item heads contained within the function
N)r  r   r!  r  s   & r   r~  func_item_iterator_t.head_itemse  rh  r  c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)zI
Provide an iterator on non-tail addresses contained within the function
N)r  r   r1  r  s   & r   r  func_item_iterator_t.not_tailsn  s4      ZZ\,,. ##%B r  r$   N)+r   r   r8   r9   r   r   r   r
   r`   r    r  r  r  r   r  r  r  r  r  r!  r&  r+  r1  r7  r<  rA  rF  rK  rR  rY  r^  rc  r   r  rr  rw  r{  r~  r  r   delete_func_item_iterator_tr   r<   r$   r#   r   rq  rq    s    -/I!#GH-@
I
;:=A;D@????C????CK$
@
?" D""""& "==r#   rq  c                      ] tR tRt]! 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 t]tRtR# )func_parent_iterator_ti|  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   func_parent_iterator_t.<lambda>}  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   rw  }  rL   r#   rM   rN   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   func_parent_iterator_t_swiginitnew_func_parent_iterator_tr  s   &*r   r`   func_parent_iterator_t.__init__  s'    224&&:'(,:. 	/r#   c                    V ^8  d   QhRRRR/# )rU   _fntr  re   r!  r$   )rX   s   "r   rY   #func_parent_iterator_t.__annotate__  s     A A AD Ar#   c                	.    \         P                  ! W4      # r.   )r   func_parent_iterator_t_setr   r~  s   &&r   r    func_parent_iterator_t.set  s    44T@@r#   c                   V ^8  d   QhRR/# r  r$   )rX   s   "r   rY   r    s     > > >r#   c                	.    \         P                  ! V 4      # r.   )r   func_parent_iterator_t_parentri   s   &r   parentfunc_parent_iterator_t.parent  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    s     = =d =r#   c                	.    \         P                  ! V 4      # r.   )r   func_parent_iterator_t_firstri   s   &r   r  func_parent_iterator_t.first  r  r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r         < <T <r#   c                	.    \         P                  ! V 4      # r.   )r   func_parent_iterator_t_lastri   s   &r   r  func_parent_iterator_t.last      55d;;r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    s     @ @ @r#   c                	.    \         P                  ! V 4      # r.   )r   func_parent_iterator_t___next__ri   s   &r   r  func_parent_iterator_t.__next__  s    99$??r#   c                   V ^8  d   QhRR/# r   r$   )rX   s   "r   rY   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   func_parent_iterator_t_prevri   s   &r   r  func_parent_iterator_t.prev  r  r#   c                    V ^8  d   QhRRRR/# )rU   r~  r  re   rx   r$   )rX   s   "r   rY   r    s     G Gh G$ Gr#   c                	.    \         P                  ! W4      # r.   )r    func_parent_iterator_t_reset_fntr  s   &&r   	reset_fnt func_parent_iterator_t.reset_fnt  s    ::4FFr#   c              #     "   V P                  4       pV'       d%   V P                  4       x  V P                  4       pK,  R# 5i)z)
Provide an iterator on function parents
N)r  r  r  r  s   & r   r   func_parent_iterator_t.__iter__  s1      ZZ\++-B r  r$   N)r   r   r8   r9   r   r   r   r
   r`   r   delete_func_parent_iterator_tr   r    r  r  r  r  r  r  r   r  r<   r$   r#   r   ru  ru  |  s_    -/I!#GH/ "??A>=<@<G Dr#   ru  c               $    V ^8  d   QhRRRRRR/# rU   r  r  r  rG  re   r$   )rX   s   "r   rY   rY     !     2 2H 2/ 2_ 2r#   c                .    \         P                  ! W4      # r.   )r   get_prev_func_addrr  s   &&r   r  r        ((11r#   c               $    V ^8  d   QhRRRRRR/# r  r$   )rX   s   "r   rY   rY     r  r#   c                .    \         P                  ! W4      # r.   )r   get_next_func_addrr  s   &&r   r  r    r  r#   c                    V ^8  d   QhRRRR/# )rU   r  r  re   rx   r$   )rX   s   "r   rY   rY     s     ( (h ($ (r#   c                .    \         P                  ! V 4      # r.   )r   read_regargsr  s   &r   r  r    s    ""3''r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rU   r  r  r  rR   tifz	'tinfo_t'r   r  re   rx   r$   )rX   s   "r   rY   rY     s/     6 6H 63 6Y 6c 6T 6r#   c                0    \         P                  ! WW#4      # r.   )r   
add_regarg)r  r  r  r   s   &&&&r   r  r    s      355r#   c                    V ^8  d   QhRRRR/# )rU   fnamer  re   rR   r$   )rX   s   "r   rY   rY     s     2 2 2s 2r#   c                .    \         P                  ! V 4      # )zAdd a signature file to the list of planned signature files. 
        
:param fname: file name. should not contain directory part.
:returns: 0 if failed, otherwise number of planned (and applied) signatures)r   plan_to_apply_idasgn)r  s   &r   r  r    s    
 **511r#   c               (    V ^8  d   QhRRRRRRRR/# )	rU   signamer  r  rG  
is_startupr!  re   rR   r$   )rX   s   "r   rY   rY     s(     ? ?S ?o ?4 ?3 ?r#   c                0    \         P                  ! WV4      # )al  Apply a signature file to the specified address. 
        
:param signame: short name of signature file (the file name without path)
:param ea: address to apply the signature
:param is_startup: if set, then the signature is treated as a startup one for startup signature ida doesn't rename the first function of the applied module.
:returns: Library function codes)r   apply_idasgn_to)r  r  r  s   &&&r   r  r    s     %%g:>>r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   rY     s     ' 's 'r#   c                 ,    \         P                  ! 4       # )z`Get number of signatures in the list of planned and applied signatures. 
        
:returns: 0..n)r   get_idasgn_qtyr$   r#   r   r  r    s     $$&&r#   c                   V ^8  d   QhRR/# rd   r$   )rX   s   "r   rY   rY     s     + +3 +r#   c                 ,    \         P                  ! 4       # )z?Get number of the current signature. 
        
:returns: 0..n-1)r   get_current_idasgnr$   r#   r   r  r    s     ((**r#   c                    V ^8  d   QhRRRR/# rU   r  rR   re   r$   )rX   s   "r   rY   rY     s     + + + +r#   c                .    \         P                  ! V 4      # )zGet state of a signature in the list of planned signatures 
        
:param n: number of signature in the list (0..get_idasgn_qty()-1)
:returns: state of signature or IDASGN_BADARG)r   calc_idasgn_stater  s   &r   r  r    s    
 ''**r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY     s     $ $# $ $r#   c                .    \         P                  ! V 4      # )zRemove signature from the list of planned signatures. 
        
:param n: number of signature in the list (0..get_idasgn_qty()-1)
:returns: IDASGN_OK, IDASGN_BADARG, IDASGN_APPLIED)r   
del_idasgnr  s   &r   r  r    s    
   ##r#   c                    V ^8  d   QhRRRR/# )rU   r   r  re   r$   )rX   s   "r   rY   rY     s     - -3 -# -r#   c                .    \         P                  ! V 4      # )zGet full description of the signature by its short name. 
        
:param name: short name of a signature
:returns: size of signature description or -1)r   get_idasgn_title)r   s   &r   r  r    s    
 &&t,,r#   c               $    V ^8  d   QhRRRRRR/# )rU   r  rG  startupr  re   r!  r$   )rX   s   "r   rY   rY     s!     5 5/ 5C 54 5r#   c                .    \         P                  ! W4      # )a	  Apply a startup signature file to the specified address. 
        
:param ea: address to apply the signature to; usually idainfo::start_ea
:param startup: the name of the signature file without path and extension
:returns: true if successfully applied the signature)r   apply_startup_sig)r  r  s   &&r   r  r    s     ''44r#   c                    V ^8  d   QhRRRR/# r  r$   )rX   s   "r   rY   rY     s     - -? -c -r#   c                .    \         P                  ! V 4      # )zApply the currently loaded signature file to the specified address. If a library function is found, then create a function and name it accordingly. 
        
:param ea: any address in the program
:returns: Library function codes)r   try_to_add_libfuncr  s   &r   r  r    s    
 ((,,r#   c                   V ^8  d   QhRR/# )rU   r  rR   r$   )rX   s   "r   rY   rY     s     2 23 2r#   c                .    \         P                  ! W4      # r.   )r   get_fchunk_referer)r  idxs   &&r   r  r    s    ((11r#   c                .    \         P                  ! V 4      # )a  Get information about a signature in the list.
It returns: (name of signature, names of optional libraries)

See also: get_idasgn_desc_with_matches

:param n: number of signature in the list (0..get_idasgn_qty()-1)
:returns: None on failure or tuple(signame, optlibs))r   get_idasgn_descr  s   &r   r  r  "  s     %%a((r#   c                .    \         P                  ! V 4      # )a   Get information about a signature in the list.
It returns: (name of signature, names of optional libraries, number of matches)

:param n: number of signature in the list (0..get_idasgn_qty()-1)
:returns: None on failure or tuple(signame, optlibs, nmatches))r   get_idasgn_desc_with_matchesr  s   &r   r  r  -  s     22155r#   c                    V ^8  d   QhRRRR/# )rU   ptrvalrR   re   r  r$   )rX   s   "r   rY   rY   6  s     4 4# 4 4r#   c                .    \         P                  ! V 4      # r.   )r   func_t__from_ptrval__)r  s   &r   r  r  6  s    ++F33r#   c                     \        V 4      ^8X  dT   V w  r\        P                  R,          ! V4      w  r4^ RIpVP                  P                  V4      P                  V4       V# \        P                  R,          ! V !  # )zCalculate target of a thunk function. 
        
:param pfn: pointer to function (may not be nullptr)
:param fptr: out: will hold address of a function pointer (if indirect jump)
:returns: the target function or BADADDRorigN)lenr^  r0   ida_pro
ea_pointerfrompointerassign)r	  r  rawptrtargetfptrr  s   *     r   r^  r^  =  sj     4yA~-66v>sC&&v.55d;%..v6==r#   )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   	ida_rangeobjectrA   dyn_stkpnt_array_swigregisterr   dyn_regvar_array_swigregisterr   dyn_range_array_swigregisterr   dyn_ea_array_swigregisterr   dyn_regarg_array_swigregisterr   r   regarg_t_swigregisterrange_tr  func_t_swigregister
FUNC_NORETFUNC_FARFUNC_LIBFUNC_STATICDEF
FUNC_FRAMEFUNC_USERFARFUNC_HIDDEN
FUNC_THUNKFUNC_BOTTOMBPFUNC_NORET_PENDINGFUNC_SP_READYFUNC_FUZZY_SPFUNC_PROLOG_OKFUNC_PURGED_OK	FUNC_TAILFUNC_LUMINAFUNC_OUTLINEFUNC_REANALYZEFUNC_UNWIND
FUNC_CATCHr  r  r  r  lock_func_swigregisterr  #lock_func_with_tails_t_swigregisterr  r  r  r  r  r  r  r	  r  r  r  r  r  r"  r&  r)  r.  r2  MOVE_FUNC_OKMOVE_FUNC_NOCODEMOVE_FUNC_BADSTARTMOVE_FUNC_NOFUNCMOVE_FUNC_REFUSEDr6  r9  r=  FIND_FUNC_NORMALFIND_FUNC_DEFINEFIND_FUNC_IGNOREFNFIND_FUNC_KEEPBDFIND_FUNC_UNDEFFIND_FUNC_OKFIND_FUNC_EXISTr@  rC  rG  rJ  rM  rP  rS  rW  r[  r^  rc  rf  rk  rn  rq  rt  rw  r{  r  r  r  r  r  r  r  r  r  !func_tail_iterator_t_swigregisterrq  !func_item_iterator_t_swigregisterru  #func_parent_iterator_t_swigregisterr  r  r  r  	IDASGN_OKIDASGN_BADARGIDASGN_APPLIEDIDASGN_CURRENTIDASGN_PLANNEDr  r  r  r  r  r  r  r  r  LIBFUNC_FOUNDLIBFUNC_NONELIBFUNC_DELAYr  r  r  r  replfunr$   r#   r   <module>r*     s  M" # 9#/"
 L$ L
 $<<  % %  :v :.  ( ()9 ::v :.  ( ()9 :9f 9.  ' ' 866 6.  $ $\ 2:v :.  ( ()9 :%1v 1&      *M0Y M0`   v &""
**""
&&$$""
((22 ((((****  	$$&&**$$""
)(13 3  ! !) ,@V @  . ./E F*#1--#%'((349''&#3 &&.. 22 .. 00 /03 .. .. 22 .. ,,&&,,(*,)*+35>2//5%%')**655;
9
9
(-6 -`  , ,-A BL>6 L>^  , ,-A B'V 'T  . ./E F22(6   	((******2?'++$-5- ((&&((2)64  > >I)  s   V VV