+
    iq                    	   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                  t2R R lt3R R lt4]	Pj                  t5 ]	Pl                  t6 ]	Pn                  t7 ]	Pp                  t8 ]	Pr                  t9 ]	Pt                  t: R R lt;]	Px                  t< ]	Pz                  t= ]	P|                  t> ]	P~                  t? ]	P                  t@ ]	P                  tA ]	P                  tB ]	P                  tC R R ltD]	P                  tE ]	P                  tF R R ltGR R ltHR R ltIR R  ltJR! R" ltKR# R$ ltLR% R& ltM]	P                  tN ]	P                  tO]	P                  tP]	P                  tQ ! R' R(]4      tR]	P                  ! ]R4        ! R) R*]4      tT]	P                  ! ]T4       ]	P                  tV ! R+ R,]4      tW]	P                  ! ]W4       RTR- R. lltYR/ R0 ltZR1 R2 lt[R3 R4 lt\R5 R6 lt]]	P                  t^  ! R7 R8]4      t_]	P                  ! ]_4       ]	P                  ta R9 R: ltb]	P                  tc ]	P                  td ]	P                  te R; R< ltfR= R> ltgRUR? R@ llth]	P                  ti ]	P                  tj ]	P                  tk ]	P                  tl RA RB ltmRVRC RD lltnRE RF lto]	P                  tp ]	P                  tq ]	P                  tr RG RH ltsRI RJ lttRK RL ltuRM tvRN twRO txRP RQ ltyRTRR RS lltzR#   ] d	    ^ RIt ELWi ; i)Wa  Definitions of IDP, LDR, PLUGIN module interfaces.

This file also contains:

* functions to load files into the database
* functions to generate output files
* high level functions to work with the database (open, save, close)


The LDR interface consists of one structure: loader_t

The IDP interface consists of one structure: processor_t

The PLUGIN interface consists of one structure: plugin_t

Modules can't use standard FILE* functions. They must use functions from <fpro.h>

Modules can't use standard memory allocation functions. They must use functions
from <pro.h>

The exported entry #1 in the module should point to the the appropriate
structure. (loader_t for LDR module, for example)

.. 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 database operations, see :mod:`ida_domain.database`.)annotations)version_info.)_ida_loaderNc                     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   & BC:\Users\user\Downloads\ida93sp2\portable_win\python\ida_loader.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_attr5   su    6>E"YIIMM% T  ZT
D0I& &E" !K"       )r    r!   s   f r   *_swig_setattr_nondynamic_instance_variabler%   3   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_attrE   s:    3j1CX&N&N5! !H3!NOOr#   r$   )r    r)   s   f r   '_swig_setattr_nondynamic_class_variabler+   C   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>.wrapperP   s'    s}}cll6G6G6IJJr#   r$   )r2   r3   s   f r   _swig_add_metaclassr5   M   s    KNr#   c                  >    ] tR t^Ut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   U   s    U9$:J:JKKr#   r7   )TupleListUnionc                     ] tR t^`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 R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ lt R0 R1 lt!R2 R3 lt"R4 R5 lt#R6 R7 lt$R8 R9 lt%R: R; lt&R< R= lt'R> R? lt(])PT                  t+])PX                  t-])P\                  t/R@t0RA# )Bqvector_snapshotvec_tc                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>qvector_snapshotvec_t.<lambda>a       r#   c                	8    V P                   P                  V4      # r.   rC   rE   vs   &&r   rF   rG   a       AFFJJqMr#   The membership flagdocc                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   qvector_snapshotvec_t_swiginitnew_qvector_snapshotvec_tr   argss   &*r   __init__qvector_snapshotvec_t.__init__e   s'    224%%:&'+:- 	.r#   c                   V ^8  d   QhRR/# )   returnz'snapshot_t *&'r$   )formats   "r   __annotate__"qvector_snapshotvec_t.__annotate__j   s     H H Hr#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_push_backrS   s   &*r   	push_backqvector_snapshotvec_t.push_backj   s    ::4G$GGr#   c                   V ^8  d   QhRR/# rX   rY   Noner$   )rZ   s   "r   r[   r\   m        @ @ @r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_pop_backr   s   &r   pop_backqvector_snapshotvec_t.pop_backm       99$??r#   c                   V ^8  d   QhRR/# rX   rY   intr$   )rZ   s   "r   r[   r\   p   s     < <S <r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_sizerg   s   &r   sizeqvector_snapshotvec_t.sizep   s    55d;;r#   c                   V ^8  d   QhRR/# rX   rY   boolr$   )rZ   s   "r   r[   r\   s        = =d =r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_emptyrg   s   &r   emptyqvector_snapshotvec_t.emptys       66t<<r#   c                    V ^8  d   QhRRRR/# )rX   _idxrm   rY   'snapshot_t *const &'r$   )rZ   s   "r   r[   r\   v   s     @ @s @3 @r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_at)r   r|   s   &&r   atqvector_snapshotvec_t.atv   s    33D??r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   y   s     > >t >r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_qclearrg   s   &r   qclearqvector_snapshotvec_t.qcleary   s    77==r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\   |   ru   r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_clearrg   s   &r   clearqvector_snapshotvec_t.clear|   rz   r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\      s     E Ed Er#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_resizerS   s   &*r   resizeqvector_snapshotvec_t.resize   s    77DtDDr#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r\      s     @ @ @r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_capacityrg   s   &r   capacityqvector_snapshotvec_t.capacity   rj   r#   c                    V ^8  d   QhRRRR/# )rX   cntrm   rY   rc   r$   )rZ   s   "r   r[   r\      s     D D3 D$ Dr#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_reserve)r   r   s   &&r   reserveqvector_snapshotvec_t.reserve   s    88CCr#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r\      rd   r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_truncaterg   s   &r   truncateqvector_snapshotvec_t.truncate   rj   r#   c                    V ^8  d   QhRRRR/# )rX   r'qvector_snapshotvec_t'rY   rc   r$   )rZ   s   "r   r[   r\      s     ? ?- ? ?r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_swapr   r   s   &&r   swapqvector_snapshotvec_t.swap       55d>>r#   c                   V ^8  d   QhRR/# )rX   rY   'snapshot_t **'r$   )rZ   s   "r   r[   r\      s     ? ? ?r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t_extractrg   s   &r   extractqvector_snapshotvec_t.extract       88>>r#   c               $    V ^8  d   QhRRRRRR/# )rX   sr   lenrm   rY   rc   r$   )rZ   s   "r   r[   r\      s&     F F Fc FT Fr#   c                	0    \         P                  ! WV4      # r.   )r   qvector_snapshotvec_t_inject)r   r   r   s   &&&r   injectqvector_snapshotvec_t.inject   s    77EEr#   c                    V ^8  d   QhRRRR/# rX   r   r   rY   rt   r$   )rZ   s   "r   r[   r\           A A/ A4 Ar#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t___eq__r   s   &&r   __eq__qvector_snapshotvec_t.__eq__       77@@r#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      r   r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t___ne__r   s   &&r   __ne__qvector_snapshotvec_t.__ne__   r   r#   c                   V ^8  d   QhRR/# rX   rY   z)'qvector< snapshot_t * >::const_iterator'r$   )rZ   s   "r   r[   r\      s     D DF Dr#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_beginrS   s   &*r   beginqvector_snapshotvec_t.begin       66tCdCCr#   c                   V ^8  d   QhRR/# r   r$   )rZ   s   "r   r[   r\      s     B BD Br#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_endrS   s   &*r   endqvector_snapshotvec_t.end   s    44TADAAr#   c               $    V ^8  d   QhRRRRRR/# )rX   it#'qvector< snapshot_t * >::iterator'rE   'snapshot_t'rY   r$   )rZ   s   "r   r[   r\      s(     E E< E E/Er#   c                	0    \         P                  ! WV4      # r.   )r   qvector_snapshotvec_t_insert)r   r   rE   s   &&&r   insertqvector_snapshotvec_t.insert   s    77!DDr#   c                   V ^8  d   QhRR/# )rX   rY   r   r$   )rZ   s   "r   r[   r\      s     D D@ Dr#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_eraserS   s   &*r   eraseqvector_snapshotvec_t.erase   r   r#   c                   V ^8  d   QhRR/# r   r$   )rZ   s   "r   r[   r\      s     C CE Cr#   c                	2    \         P                  ! V .VO5!  # r.   )r   qvector_snapshotvec_t_findrS   s   &*r   findqvector_snapshotvec_t.find   s    55dBTBBr#   c                    V ^8  d   QhRRRR/# rX   rE   r   rY   rt   r$   )rZ   s   "r   r[   r\      s     > >\ >T >r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_hasr   rE   s   &&r   hasqvector_snapshotvec_t.has   s    44T==r#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      s     E EL ED Er#   c                	.    \         P                  ! W4      # r.   )r    qvector_snapshotvec_t_add_uniquer   s   &&r   
add_unique qvector_snapshotvec_t.add_unique   s    ;;DDDr#   c                    V ^8  d   QhRRRR/# r   r$   )rZ   s   "r   r[   r\      s     ? ?l ?d ?r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t__delr   s   &&r   _delqvector_snapshotvec_t._del   r   r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r\      s     ? ? ?r#   c                	.    \         P                  ! V 4      # r.   )r   qvector_snapshotvec_t___len__rg   s   &r   __len__qvector_snapshotvec_t.__len__   r   r#   c                    V ^8  d   QhRRRR/# )rX   irm   rY   r}   r$   )rZ   s   "r   r[   r\      s     F FS F$9 Fr#   c                	.    \         P                  ! W4      # r.   )r   !qvector_snapshotvec_t___getitem__)r   r   s   &&r   __getitem__!qvector_snapshotvec_t.__getitem__   s    <<TEEr#   c               $    V ^8  d   QhRRRRRR/# )rX   r   rm   rK   r   rY   rc   r$   )rZ   s   "r   r[   r\      s&     I IS I\ IT Ir#   c                	0    \         P                  ! WV4      # r.   )r   !qvector_snapshotvec_t___setitem__)r   r   rK   s   &&&r   __setitem__!qvector_snapshotvec_t.__setitem__   s    <<TaHHr#   c                    V ^8  d   QhRRRR/# )rX   rE   r   rY   rc   r$   )rZ   s   "r   r[   r\      s     A A A Ar#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_appendr   s   &&r   appendqvector_snapshotvec_t.append   r   r#   c                    V ^8  d   QhRRRR/# )rX   rE   r   rY   rc   r$   )rZ   s   "r   r[   r\      r   r#   c                	.    \         P                  ! W4      # r.   )r   qvector_snapshotvec_t_extendr   s   &&r   extendqvector_snapshotvec_t.extend   r   r#   r$   N)1r   r   r8   r9   r   r   r   r
   rU   r   delete_qvector_snapshotvec_t__swig_destroy__r_   rh   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  
ida_idaapi_qvector_frontfront_qvector_backback_bounded_getitem_iterator__iter__r<   r$   r#   r   rA   rA   `   s    -/I!#GH. #??H@<=@>=E@D@??FAADBEDC>E??FIAA%%E##D33Hr#   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&    R t]P"                  tR	tR
# )loader_tc                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   loader_t.<lambda>   rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r     rL   r#   rM   rN   rm   versionflagsc                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   loader_t_swiginitnew_loader_trg   s   &r   rU   loader_t.__init__   s    %%dK,D,D,FGr#   r$   N)r   r   r8   r9   r   r   r   r
   r   loader_t_version_getloader_t_version_setr  __annotations__loader_t_flags_getloader_t_flags_setr  rU   delete_loader_tr  r<   r$   r#   r   r  r     sx    -/I!#GHK<<kGS +88+E3 H"22r#   r  c               8    V ^8  d   QhRRRRRRRRR	R
RR
RRRR/# )rX   filenamestrli'linput_t *'_neflags'ushort'fileoff
'qoff64_t'baseparaida_idaapi.ea_tbinoffnbytesz'uint64'rY   rt   r$   )rZ   s   "r   r[   r[     sI     " "s " " ""#2"<K"""r#   c           	     4    \         P                  ! WW#WEV4      # )at  Load a binary file into the database. This function usually is called from ui. 
        
:param filename: the name of input file as is (if the input file is from library, then this is the name from the library)
:param li: loader input source
:param _neflags: Load file flags. For the first file, the flag NEF_FIRST must be set.
:param fileoff: Offset in the input file
:param basepara: Load address in paragraphs
:param binoff: Load offset (load_address=(basepara<<4)+binoff)
:param nbytes: Number of bytes to load from the file.
* 0: up to the end of the file
:returns: true: ok
:returns: false: failed (couldn't open the file))r   load_binary_file)r)  r+  r-  r/  r1  r3  r4  s   &&&&&&&r   r6  r6    s      ''h&" "r#   c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# )rX   	temp_filer*  r+  r,  module_nameneflagsz
'ushort *'	defmemberloaderz'load_info_t const *'rY   r$   )rZ   s   "r   r[   r[   0  sA      s  3 $'1FJMr#   c                2    \         P                  ! WW#WE4      # )zCalls loader_t::process_archive() For parameters and return value description look at loader_t::process_archive(). Additional parameter 'loader' is a pointer to load_info_t structure. 
        )r   process_archive)r8  r+  r9  r:  r;  r<  s   &&&&&&r   r>  r>  0  s     &&yk r#   c               0    V ^8  d   QhRRRRRRRRRR	R
R	/# )rX   otypez'ofile_type_t'fp'FILE *'ea1r2  ea2r  rm   rY   r$   )rZ   s   "r   r[   r[   L  s9     < <N < < <<<#&<r#   c                2    \         P                  ! WW#V4      # )a  Generate an output file. OFILE_EXE: 
        
:param otype: type of output file.
:param fp: the output file handle
:param ea1: start address. For some file types this argument is ignored
:param ea2: end address. For some file types this argument is ignored as usual in ida, the end address of the range is not included
:param flags: Generate file flags
:returns: number of the generated lines. -1 if an error occurred
:returns: 0: can't generate exe file
:returns: 1: ok)r   gen_file)r@  rA  rC  rD  r  s   &&&&&r   rF  rF  L  s     3U;;r#   c               0    V ^8  d   QhRRRRRRRRRR	R
R	/# )rX   r+  r,  posr0  rC  r2  rD  	patchablerm   rY   r$   )rZ   s   "r   r[   r[   u  s9     ? ?, ?Z ?o ?? #?'*?r#   c                2    \         P                  ! WW#V4      # )a  Load portion of file into the database. This function will include (ea1..ea2) into the addressing space of the program (make it enabled). 
        
:param li: pointer of input source
:param pos: position in the file
:param ea1: range of destination linear addresses
:param ea2: range of destination linear addresses
:param patchable: should the kernel remember correspondence of file offsets to linear addresses.
:returns: 1: ok
:returns: 0: read error, a warning is displayed)r   	file2base)r+  rH  rC  rD  rI  s   &&&&&r   rK  rK  u  s       #I>>r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rX   rA  rB  rH  r0  rC  r2  rD  rY   rm   r$   )rZ   s   "r   r[   r[     s1     	4 	4( 	4 	4/ 	4	4	4r#   c                0    \         P                  ! WW#4      # )a/  Unload database to a binary file. This function works for wide byte processors too. 
        
:param fp: pointer to file
:param pos: position in the file
:param ea1: range of source linear addresses
:param ea2: range of source linear addresses
:returns: 1-ok(always), write error leads to immediate exit)r   	base2file)rA  rH  rC  rD  s   &&&&r   rN  rN    s       #33r#   c                    V ^8  d   QhRRRR/# )rX   r+  r,  rY   z'filetype_t'r$   )rZ   s   "r   r[   r[     s     / /L /L /r#   c                .    \         P                  ! V 4      # )zWGet the input file type. This function can recognize libraries and zip files. 
        )r   get_basic_file_type)r+  s   &r   rQ  rQ    s     **2..r#   c                   V ^8  d   QhRR/# rX   rY   r*  r$   )rZ   s   "r   r[   r[     s     , ,3 ,r#   c                 ,    \         P                  ! 4       # )zGet name of the current file type. The current file type is kept in idainfo::filetype. 
        
:returns: size of answer, this function always succeeds)r   get_file_type_namer$   r#   r   rU  rU    s     ))++r#   c               (    V ^8  d   QhRRRRRRRR/# )rX   modnoderm   ear2  ordrY   rc   r$   )rZ   s   "r   r[   r[     s(     < < < <s <d <r#   c                0    \         P                  ! WV4      # )a   Set information about the ordinal import entry. This function performs 'modnode.altset(ord, ea2node(ea));' 
        
:param modnode: node with information about imported entries
:param ea: linear address of the entry
:param ord: ordinal number of the entry)r   set_import_ordinal)rW  rX  rY  s   &&&r   r[  r[    s     ))'s;;r#   c               (    V ^8  d   QhRRRRRRRR/# )	rX   rW  rm   rX  r2  r   r*  rY   rc   r$   )rZ   s   "r   r[   r[     s(     : :S :o :S :D :r#   c                0    \         P                  ! WV4      # )zSet information about the named import entry. This function performs 'modnode.supset_ea(ea, name);' 
        
:param modnode: node with information about imported entries
:param ea: linear address of the entry
:param name: name of the entry)r   set_import_name)rW  rX  r   s   &&&r   r^  r^    s     &&wD99r#   c                    V ^8  d   QhRRRR/# )rX   fname'char *'rY   rm   r$   )rZ   s   "r   r[   r[     s     . .8 .s .r#   c                .    \         P                  ! V 4      # )a%  Load and apply IDS file. This function loads the specified IDS file and applies it to the database. If the program imports functions from a module with the same name as the name of the ids file being loaded, then only functions from this module will be affected. Otherwise (i.e. when the program does not import a module with this name) any function in the program may be affected. 
        
:param fname: name of file to apply
:returns: 1: ok
:returns: 0: some error (a message is displayed). if the ids file does not exist, no message is displayed)r   load_ids_module)r`  s   &r   rc  rc    s     &&u--r#   c                    V ^8  d   QhRRRR/# )rX   pluginr*  rY   r$   )rZ   s   "r   r[   r[     s     2 2s 2c 2r#   c                .    \         P                  ! V 4      # )a  Get plugin options from the command line. If the user has specified the options in the -Oplugin_name:options format, them this function will return the 'options' part of it The 'plugin' parameter should denote the plugin name Returns nullptr if there we no options specified 
        )r   get_plugin_options)re  s   &r   rg  rg    s     ))&11r#   c                  &   ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R&    ]! ]P                   ]P"                  4      tR	]R
&    R t]P(                  tRtR# )
idp_name_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   idp_name_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   rk    rL   r#   rM   rN   r*  lnamesnamert   hiddenc                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   idp_name_t_swiginitnew_idp_name_trg   s   &r   rU   idp_name_t.__init__      ''k.H.H.JKr#   r$   N)r   r   r8   r9   r   r   r   r
   r   idp_name_t_lname_getidp_name_t_lname_setrm  r$  idp_name_t_sname_getidp_name_t_sname_setrn  idp_name_t_hidden_getidp_name_t_hidden_setro  rU   delete_idp_name_tr  r<   r$   r#   r   ri  ri    s    -/I!#GH+::KE3 +::KE3 K=={FD L"44r#   ri  c                     ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R	&    ]! ]P                   ]P"                  4      tR]R
&    ]! ]P&                  ]P(                  4      tR]R&    ]! ]P,                  ]P.                  4      tR]R&    ]! ]P2                  ]P4                  4      tR]R&    R t]P:                  tRtR# )
idp_desc_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   idp_desc_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r    rL   r#   rM   rN   r*  pathz'time_t'mtimefamilyz'idp_names_t'namesrt   	is_scriptcheckedc                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   idp_desc_t_swiginitnew_idp_desc_trg   s   &r   rU   idp_desc_t.__init__  rt  r#   r$   N) r   r   r8   r9   r   r   r   r
   r   idp_desc_t_path_getidp_desc_t_path_setr  r$  idp_desc_t_mtime_getidp_desc_t_mtime_setr  idp_desc_t_family_getidp_desc_t_family_setr  idp_desc_t_names_getidp_desc_t_names_setr  idp_desc_t_is_script_getidp_desc_t_is_script_setr  idp_desc_t_checked_getidp_desc_t_checked_setr  rU   delete_idp_desc_tr  r<   r$   r#   r   r}  r}    s   -/I!#GH88+D# {??((*E8 *;<<kFC #K$D$D((*E= *{CC,,.It .[??**,GT ,L"44r#   r}  c                     ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R	&    ]! ]P                   ]P"                  4      tR]R
&    ]! ]P&                  ]P(                  4      tR]R&    ]! ]P,                  ]P.                  4      tR]R&    ]! ]P2                  ]P4                  4      tR]R&    ]! ]P8                  ]P:                  4      tR]R&    ]! ]P>                  ]P@                  4      t!R]R&    ]! ]PD                  ]PF                  4      t$R]R&   ]! ]PJ                  ]PL                  4      t'R]R&    ]! ]PP                  ]PR                  4      t*R]R&    ]! ]PV                  ]PX                  4      t-R]R&    R t.]P^                  t0Rt1R# )plugin_info_ti  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   plugin_info_t.<lambda>  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r    rL   r#   rM   rN   z'plugin_info_t *'nextra  r  org_namer   r.  
org_hotkeyhotkeyrm   arg'plugin_t *'entryz
'idadll_t'dllmemr  commentr*  idaplg_namec                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   plugin_info_t_swiginitnew_plugin_info_trg   s   &r   rU   plugin_info_t.__init__?  s$    **42 2  	!r#   r$   N)2r   r   r8   r9   r   r   r   r
   r   plugin_info_t_next_getplugin_info_t_next_setr  r$  plugin_info_t_path_getplugin_info_t_path_setr  plugin_info_t_org_name_getplugin_info_t_org_name_setr  plugin_info_t_name_getplugin_info_t_name_setr   plugin_info_t_org_hotkey_getplugin_info_t_org_hotkey_setr  plugin_info_t_hotkey_getplugin_info_t_hotkey_setr  plugin_info_t_arg_getplugin_info_t_arg_setr  plugin_info_t_entry_getplugin_info_t_entry_setr  plugin_info_t_dllmem_getplugin_info_t_dllmem_setr  plugin_info_t_flags_getplugin_info_t_flags_setr  plugin_info_t_comment_getplugin_info_t_comment_setr  plugin_info_t_idaplg_name_getplugin_info_t_idaplg_name_setr  rU   delete_plugin_info_tr  r<   r$   r#   r   r  r    s   -/I!#GH&{'I'I**,D
 ,k@@**,D( ,!+"H"H..0Hh 0k@@**,D( ,#K$$k&N&NPJ P D D,,.FH .99;C ";#F#F++-E< -!+"F"F,,.FJ .+=={!E3 ! !F!F--/GX / I I113K 3! #77r#   r  c               $    V ^8  d   QhRRRRRR/# )rX   r   r*  load_if_neededrt   rY   r  r$   )rZ   s   "r   r[   r[   H  s!     9 9c 94 9 9r#   c                .    \         P                  ! W4      # )a  Find a user-defined plugin and optionally load it. 
        
:param name: short plugin name without path and extension, or absolute path to the file name
:param load_if_needed: if the plugin is not present in the memory, try to load it
:returns: pointer to plugin description block)r   find_plugin)r   r  s   &&r   r  r  H  s     ""488r#   c                    V ^8  d   QhRRRR/# )rX   rX  r2  rY   r0  r$   )rZ   s   "r   r[   r[   Q  s     1 1o 1 1r#   c                .    \         P                  ! V 4      # )zGet offset in the input file which corresponds to the given ea. If the specified ea can't be mapped into the input file offset, return -1. 
        )r   get_fileregion_offset)rX  s   &r   r  r  Q  s     ,,R00r#   c                    V ^8  d   QhRRRR/# )rX   offsetr0  rY   r2  r$   )rZ   s   "r   r[   r[   W  s     1 1j 1O 1r#   c                .    \         P                  ! V 4      # )ztGet linear address which corresponds to the specified input file offset. If can't be found, return BADADDR 
        )r   get_fileregion_ea)r  s   &r   r  r  W  s     ((00r#   c                    V ^8  d   QhRRRR/# )rX   rA  rB  rY   rm   r$   )rZ   s   "r   r[   r[   ]  s     ( (X ( (r#   c                .    \         P                  ! V 4      # )zGenerate an exe file (unload the database in binary form). 
        
:returns: fp the output file handle. if fp == nullptr then return:
* 1: can generate an executable file
* 0: can't generate an executable file
:returns: 1: ok
:returns: 0: failed)r   gen_exe_file)rA  s   &r   r  r  ]  s     ##B''r#   c               $    V ^8  d   QhRRRRRR/# )rX   filer*  	is_remotert   rY   r$   )rZ   s   "r   r[   r[   h  s!     4 4c 4d 4d 4r#   c                .    \         P                  ! W4      # )a  Reload the input file. This function reloads the byte values from the input file. It doesn't modify the segmentation, names, comments, etc. 
        
:param file: name of the input file. if file == nullptr then returns:
* 1: can reload the input file
* 0: can't reload the input file
:param is_remote: is the file located on a remote computer with the debugger server?
:returns: success)r   reload_file)r  r  s   &&r   r  r  h  s     ""433r#   c                     ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R	&    ]! ]P                   ]P"                  4      tR
]R&    ]! ]P&                  ]P(                  4      tR]R&    ]! ]P,                  ]P.                  4      tR]R&    R 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 ]PB                  t"Rt#R # )!
snapshot_tix  c                	6    V P                   P                  4       # r.   rC   rD   s   &r   rF   snapshot_t.<lambda>y  rH   r#   c                	8    V P                   P                  V4      # r.   rC   rJ   s   &&r   rF   r  y  rL   r#   rM   rN   z'qtime64_t'idz'uint16'r  z'char [128]'descz'char [QMAXPATH]'r)  z'snapshots_t'childrenc                    V ^8  d   QhRRRR/# rX   r   r   rY   rt   r$   )rZ   s   "r   r[   snapshot_t.__annotate__       6 6 6 6r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___eq__r   s   &&r   r   snapshot_t.__eq__      ,,T55r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r    r  r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___ne__r   s   &&r   r   snapshot_t.__ne__  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r    r  r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___lt__r   s   &&r   __lt__snapshot_t.__lt__  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r    r  r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___gt__r   s   &&r   __gt__snapshot_t.__gt__  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r    r  r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___le__r   s   &&r   __le__snapshot_t.__le__  r  r#   c                    V ^8  d   QhRRRR/# r  r$   )rZ   s   "r   r[   r    r  r#   c                	.    \         P                  ! W4      # r.   )r   snapshot_t___ge__r   s   &&r   __ge__snapshot_t.__ge__  r  r#   c                   V ^8  d   QhRR/# rb   r$   )rZ   s   "r   r[   r    s     2 2d 2r#   c                	.    \         P                  ! V 4      # r.   )r   snapshot_t_clearrg   s   &r   r   snapshot_t.clear  s    ++D11r#   c                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   snapshot_t_swiginitnew_snapshot_trg   s   &r   rU   snapshot_t.__init__  rt  r#   r$   N)$r   r   r8   r9   r   r   r   r
   r   snapshot_t_id_getsnapshot_t_id_setr  r$  snapshot_t_flags_getsnapshot_t_flags_setr  snapshot_t_desc_getsnapshot_t_desc_setr  snapshot_t_filename_getsnapshot_t_filename_setr)  snapshot_t_children_getsnapshot_t_children_setr  r   r   r  r  r  r  r   rU   delete_snapshot_tr  r<   r$   r#   r   r  r  x  s   -/I!#GH{<<kB {??((*E8 *!+"A"A'')D, )"*;!D!D#FH F&{'J'J++-Hm -6666662L"44r#   r  c                    V ^8  d   QhRRRR/# )rX   rootr   rY   rt   r$   )rZ   s   "r   r[   r[     s     1 1l 1d 1r#   c                .    \         P                  ! V 4      # )z}Build the snapshot tree. 
        
:param root: snapshot root that will contain the snapshot tree elements.
:returns: success)r   build_snapshot_tree)r  s   &r   r  r    s    
 **400r#   c                   V ^8  d   QhRR/# rl   r$   )rZ   s   "r   r[   r[     s     ' 'c 'r#   c                 ,    \         P                  ! 4       # )zFlush buffers to the disk.
)r   flush_buffersr$   r#   r   r  r    s     $$&&r#   c                   V ^8  d   QhRR/# rs   r$   )rZ   s   "r   r[   r[     s     ( (t (r#   c                 ,    \         P                  ! 4       # )z'Is the database considered as trusted?
)r   is_trusted_idbr$   r#   r   r  r    s     %%''r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rX   outfiler*  r  rm   r  r   attrrY   rt   r$   )rZ   s   "r   r[   r[     s8     	A 	A3 	AC 	A 	A
	A#	Ar#   c                0    \         P                  ! WW#4      # )a   Save current database using a new file name. 
        
:param outfile: output database file name; nullptr means the current path
:param flags: Database flags; 0 means the current flags
:param root: optional: snapshot tree root.
:param attr: optional: snapshot attributes
:returns: success)r   save_database)r  r  r  r  s   &&&&r   r   r     s     $$WT@@r#   c                    V ^8  d   QhRRRR/# )rX   dbflrm   rY   rt   r$   )rZ   s   "r   r[   r[     s     . .3 .$ .r#   c                .    \         P                  ! V 4      # )zyGet the current database flag 
        
:param dbfl: flag Database flags
:returns: the state of the flag (set or cleared))r   is_database_flagr"  s   &r   r$  r$    s    
 ''--r#   c               $    V ^8  d   QhRRRRRR/# )rX   r"  rm   cndrt   rY   rc   r$   )rZ   s   "r   r[   r[     s!     4 4C 4d 44 4r#   c                .    \         P                  ! W4      # )zuSet or clear database flag 
        
:param dbfl: flag Database flags
:param cnd: set if true or clear flag otherwise)r   set_database_flag)r"  r'  s   &&r   r)  r)    s    
 ((33r#   c                    V ^8  d   QhRRRR/# )rX   r"  rm   rY   rc   r$   )rZ   s   "r   r[   r[     s     / /C /4 /r#   c                .    \         P                  ! V 4      # r.   )r   clr_database_flagr%  s   &r   r,  r,    s    ((..r#   c                    V ^8  d   QhRRRR/# )rX   pt'path_type_t'rY   r*  r$   )rZ   s   "r   r[   r[   	  s     $ $ $# $r#   c                .    \         P                  ! V 4      # )zyGet the file path 
        
:param pt: file path type Types of the file pathes
:returns: file path, never returns nullptr)r   get_path)r.  s   &r   r1  r1  	  s    
 ##r#   c               $    V ^8  d   QhRRRRRR/# )rX   r.  r/  r  r*  rY   rc   r$   )rZ   s   "r   r[   r[     s!     * * *c *T *r#   c                .    \         P                  ! W4      # )zSet the file path 
        
:param pt: file path type Types of the file pathes
:param path: new file path, use nullptr or empty string to clear the file path)r   set_path)r.  r  s   &&r   r4  r4    s    
 ))r#   c                   V ^8  d   QhRR/# rS  r$   )rZ   s   "r   r[   r[     s     6 6S 6r#   c                 ,    \         P                  ! 4       # )zPGet the value of the ELF_DEBUG_FILE_DIRECTORY configuration directive. 
        )r   get_elf_debug_file_directoryr$   r#   r   r7  r7    s     3355r#   c                0    \         P                  ! WV4      # )a  Load database from the memory.

:param mem: the buffer
:param ea: start linear addresses
:param fpos: position in the input file the data is taken from.
             if == -1, then no file position correspond to the data.
:returns: 1, or 0 in case of failure)r   mem2base)memrX  fposs   &&&r   r9  r9    s     ..r#   c                .    \         P                  ! V 4      # )zLoads a plugin

:param name: short plugin name without path and extension,
             or absolute path to the file name
:returns: An opaque object representing the loaded plugin, or None if plugin could not be loaded)r   load_plugin)r   s   &r   r=  r=  *  s     ""4((r#   c                .    \         P                  ! W4      # )zRuns a plugin

:param plg: A plugin object (returned by load_plugin())
:param arg: the code to pass to the plugin's "run()" function
:returns: Boolean)r   
run_plugin)plgr  s   &&r   r?  r?  3  s     !!#++r#   c               $    V ^8  d   QhRRRRRR/# )rX   r   r*  r  rm   rY   rt   r$   )rZ   s   "r   r[   r[   <  s!     6 6c 6 6t 6r#   c                .    \         P                  ! W4      # )zLoad & run a plugin.
)r   load_and_run_plugin)r   r  s   &&r   rC  rC  <  s     **455r#   c               $    V ^8  d   QhRRRRRR/# )rX   r`  r*  r  rt   rY   z'PyObject *'r$   )rZ   s   "r   r[   r[   B  s'     E Es Et EEr#   c                .    \         P                  ! W4      # )a  Extract a module for an archive file. Parse an archive file, show the list of modules to the user, allow him to select a module, extract the selected module to a file (if the extract module is an archive, repeat the process). This function can handle ZIP, AR, AIXAR, OMFLIB files. The temporary file will be automatically deleted by IDA at the end. 
        
:param is_remote: is the input file remote?
:returns: true: ok
:returns: false: something bad happened (error message has been displayed to the user))r   extract_module_from_archive)r`  r  s   &&r   rF  rF  B  s     225DDr#   )F)N    NN)T){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  objectrA   "qvector_snapshotvec_t_swigregisterr  loader_t_swigregisterLDRF_RELOADLDRF_REQ_PROCACCEPT_ARCHIVEACCEPT_CONTINUEACCEPT_FIRSTNEF_SEGSNEF_RSCSNEF_NAMENEF_MANNEF_FILLNEF_IMPS	NEF_FIRSTNEF_CODE
NEF_RELOADNEF_FLATNEF_MININEF_LOPTNEF_LALLDLLEXT
LOADER_DLLr6  r>  	OFILE_MAP	OFILE_EXE	OFILE_IDC	OFILE_LST	OFILE_ASM	OFILE_DIFrF  GENFLG_MAPSEGGENFLG_MAPNAMEGENFLG_MAPDMNGGENFLG_MAPLOCGENFLG_IDCTYPEGENFLG_ASMTYPEGENFLG_GENHTMLGENFLG_ASMINCrK  FILEREG_PATCHABLEFILEREG_NOTPATCHABLErN  rQ  rU  r[  r^  rc  rg  
PLUGIN_DLLMODULE_ENTRY_LOADERMODULE_ENTRY_PLUGINMODULE_ENTRY_IDPri  idp_name_t_swigregisterr}  idp_desc_t_swigregisterIDP_DLLr  plugin_info_t_swigregisterr  r  r  r  r  MAX_DATABASE_DESCRIPTIONr  snapshot_t_swigregisterSSF_AUTOMATICr  	SSUF_DESC	SSUF_PATH
SSUF_FLAGSr  r  r   	DBFL_KILL	DBFL_COMPDBFL_BAK	DBFL_TEMPr$  r)  r,  PATH_TYPE_CMDPATH_TYPE_IDBPATH_TYPE_ID0r1  r4  r7  r9  r=  r?  rC  rF  r$   r#   r   <module>r     s  ?: # 9#/"
 L$ L
 %==  % % c4F c4L  . ./D E3v 3$  ! !( +%%))++--''


!!	##
 			##
"& !!	!!	!!	!!	!!	!!	< ))++++))++++++))?  11 "77 	4/,<:.2 ##
!55 !55 // 5 5,  # #J /5 5D  # #J /


68F 68r  & &} 5911(4 '?? 05 05f  # #J /))1 !!	!!	##
'(	A !!	!!	!!	.4/ ))))))$*6/),6E Ey  s   Q7 7RR