+
    i4                    v   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]	P4                  t ]	P6                  t ]	P8                  t ]	P:                  t ]	P<                  t ]	P>                  t ]	P@                  t  ]	PB                  t! ]	PD                  t" ]	PF                  t# ]	PH                  t$ ]	PJ                  t% ]	PL                  t& ]	PN                  t' ]	PP                  t( ]	PR                  t) ]	PT                  t* R R lt+]	PX                  t, ]	PZ                  t- ]	P\                  t. ]	P^                  t/ ]	P`                  t0  ! R R]14      t2]	Pf                  ! ]24       R R lt4R R lt5R R lt6R R lt7R R lt8R R lt9R 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,]14      tA]	P                  ! ]A4       R- R. ltCR/ R0 ltDR1 R2 ltER3 R4 ltFR#   ] d	    ^ RIt EL	i ; i)5zhFunctions that deal with fixup information.

A loader should setup fixup information using set_fixup().
)annotations)version_info.)
_ida_fixupNc                     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_fixup.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_attr,   s:    3j1CX&N&N5! !H3!NOOr#   r$   )r    r)   s   f r   '_swig_setattr_nondynamic_class_variabler+   *   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>.wrapper7   s'    s}}cll6G6G6IJJr#   r$   )r2   r3   s   f r   _swig_add_metaclassr5   4   s    KNr#   c                  >    ] tR t^<t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   <   s    U9$:J:JKKr#   r7   )TupleListUnionc                    V ^8  d   QhRRRR/# )   r   'fixup_type_t'returnboolr$   )formats   "r   __annotate__rF   z   s     , ,. ,D ,r#   c                .    \         P                  ! V 4      # )z(Is fixup processed by processor module?
)r   is_fixup_customr   s   &r   rH   rH   z   s     %%d++r#   c                  J   ] 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R R ltR R ltR>R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" 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+]PX                  t-R<t.R=# )?fixup_data_tc                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>fixup_data_t.<lambda>       r#   c                	8    V P                   P                  V4      # r.   rM   rO   vs   &&r   rP   rQ          AFFJJqMr#   The membership flagdocz'sel_t'selida_idaapi.ea_toffz	'adiff_t'displacementc                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   fixup_data_t_swiginitnew_fixup_data_t)r   argss   &*r   __init__fixup_data_t.__init__   s"    ((z/J/J0 	r#   c                   V ^8  d   QhRR/# )rA   rC   rB   r$   )rE   s   "r   rF   fixup_data_t.__annotate__   s     6 6 6r#   c                .    \         P                  ! V 4      # )zFixup type Types of fixups.
)r   fixup_data_t_get_typer   s   &r   get_typefixup_data_t.get_type        //55r#   c                    V ^8  d   QhRRRR/# )rA   type_rB   rC   Noner$   )rE   s   "r   rF   re      s     = =n = =r#   c                	.    \         P                  ! W4      # r.   )r   fixup_data_t_set_type)r   rm   s   &&r   set_typefixup_data_t.set_type   s    //<<r#   c               $    V ^8  d   QhRRRRRR/# )rA   rm   rB   flags_intrC   rn   r$   )rE   s   "r   rF   re      s&     O O O O Or#   c                	0    \         P                  ! WV4      # r.   )r   fixup_data_t_set_type_and_flags)r   rm   rt   s   &&&r   set_type_and_flagsfixup_data_t.set_type_and_flags   s    99$vNNr#   c                   V ^8  d   QhRR/# rA   rC   rD   r$   )rE   s   "r   rF   re      s     7 7$ 7r#   c                .    \         P                  ! V 4      # )zis_fixup_custom()
)r   fixup_data_t_is_customrh   s   &r   	is_customfixup_data_t.is_custom        0066r#   c                   V ^8  d   QhRR/# rA   rC   ru   r$   )rE   s   "r   rF   re           7 7# 7r#   c                .    \         P                  ! V 4      # )zFixup flags Fixup flags.
)r   fixup_data_t_get_flagsrh   s   &r   	get_flagsfixup_data_t.get_flags   r   r#   c                   V ^8  d   QhRR/# r{   r$   )rE   s   "r   rF   re           7 7$ 7r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_is_extdefrh   s   &r   	is_extdeffixup_data_t.is_extdef       0066r#   c                   V ^8  d   QhRR/# rA   rC   rn   r$   )rE   s   "r   rF   re           8 84 8r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_set_extdefrh   s   &r   
set_extdeffixup_data_t.set_extdef       11$77r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   re      r   r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_clr_extdefrh   s   &r   
clr_extdeffixup_data_t.clr_extdef   r   r#   c                   V ^8  d   QhRR/# r{   r$   )rE   s   "r   rF   re      r   r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_is_unusedrh   s   &r   	is_unusedfixup_data_t.is_unused   r   r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   re      r   r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_set_unusedrh   s   &r   
set_unusedfixup_data_t.set_unused   r   r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   re      r   r#   c                	.    \         P                  ! V 4      # r.   )r   fixup_data_t_clr_unusedrh   s   &r   
clr_unusedfixup_data_t.clr_unused   r   r#   c                   V ^8  d   QhRR/# r{   r$   )rE   s   "r   rF   re      s     6 6 6r#   c                .    \         P                  ! V 4      # )zIs fixup relative?
)r   fixup_data_t_has_baserh   s   &r   has_basefixup_data_t.has_base   rk   r#   c                   V ^8  d   QhRR/# r{   r$   )rE   s   "r   rF   re      s     9 9D 9r#   c                .    \         P                  ! V 4      # )zIs fixup artificial?
)r   fixup_data_t_was_createdrh   s   &r   was_createdfixup_data_t.was_created        22488r#   c                   V ^8  d   QhRR/# rA   rC   r[   r$   )rE   s   "r   rF   re      s     6 6 6r#   c                .    \         P                  ! V 4      # )zGet base of fixup. 
        )r   fixup_data_t_get_baserh   s   &r   get_basefixup_data_t.get_base   rk   r#   c                    V ^8  d   QhRRRR/# )rA   new_baser[   rC   rn   r$   )rE   s   "r   rF   re      s     @ @ @D @r#   c                .    \         P                  ! W4      # )zUSet base of fixup. The target should be set before a call of this function. 
        )r   fixup_data_t_set_base)r   r   s   &&r   set_basefixup_data_t.set_base   s     //??r#   c                    V ^8  d   QhRRRR/# )rA   segz'segment_t const *'rC   rn   r$   )rE   s   "r   rF   re      s     : :. :$ :r#   c                	.    \         P                  ! W4      # r.   )r   fixup_data_t_set_sel)r   r   s   &&r   set_selfixup_data_t.set_sel   s    ..t99r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   re      s     < <t <r#   c                .    \         P                  ! V 4      # )zgSet selector of fixup to the target. The target should be set before a call of this function. 
        )r   fixup_data_t_set_target_selrh   s   &r   set_target_selfixup_data_t.set_target_sel   s     55d;;r#   c                    V ^8  d   QhRRRR/# rA   sourcer[   rC   rn   r$   )rE   s   "r   rF   re           9 9/ 9T 9r#   c                .    \         P                  ! W4      # )zset_fixup()
)r   fixup_data_t_setr   r   s   &&r   r    fixup_data_t.set        **488r#   c                    V ^8  d   QhRRRR/# rA   r   r[   rC   rD   r$   )rE   s   "r   rF   re      r   r#   c                .    \         P                  ! W4      # )zget_fixup()
)r   fixup_data_t_getr   s   &&r   getfixup_data_t.get   r   r#   c                   V ^8  d   QhRR/# )rA   rC   'fixup_handler_t const *'r$   )rE   s   "r   rF   re      s     9 95 9r#   c                .    \         P                  ! V 4      # )zget_fixup_handler()
)r   fixup_data_t_get_handlerrh   s   &r   get_handlerfixup_data_t.get_handler   r   r#   c                    V ^8  d   QhRRRR/# )rA   r   r[   rC   strr$   )rE   s   "r   rF   re      s     > > ># >r#   c                .    \         P                  ! W4      # )zget_fixup_desc()
)r   fixup_data_t_get_descr   s   &&r   get_descfixup_data_t.get_desc   s     //==r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   re     r   r#   c                .    \         P                  ! V 4      # )zcalc_fixup_size()
)r   fixup_data_t_calc_sizerh   s   &r   	calc_sizefixup_data_t.calc_size  r   r#   c                    V ^8  d   QhRRRR/# )rA   ear[   rC   ru   r$   )rE   s   "r   rF   re     s     ; ;O ;s ;r#   c                .    \         P                  ! W4      # )zget_fixup_value()
)r   fixup_data_t_get_valuer   r   s   &&r   	get_valuefixup_data_t.get_value  s     00::r#   c                    V ^8  d   QhRRRR/# )rA   r   r[   rC   rD   r$   )rE   s   "r   rF   re     s     = =o = =r#   c                .    \         P                  ! W4      # )zpatch_fixup_value()
)r   fixup_data_t_patch_valuer   s   &&r   patch_valuefixup_data_t.patch_value  s     224<<r#   r$   N)    )/r   r   r8   r9   r   r   r   r
   r   fixup_data_t_sel_getfixup_data_t_sel_setrZ   __annotations__fixup_data_t_off_getfixup_data_t_off_setr\   fixup_data_t_displacement_getfixup_data_t_displacement_setr]   rb   ri   rq   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   delete_fixup_data_t__swig_destroy__r<   r$   r#   r   rK   rK      s   -/I!#GHJ;;ZC #J$C$C'')C )&z%%z'O'O
L) 
6
=O7
7
7887886
9
6
@
:<
9
9
9
>
7
;
= "55r#   rK   c               $    V ^8  d   QhRRRRRR/# )rA   fd'fixup_data_t'r   r[   rC   rD   r$   )rE   s   "r   rF   rF     s!     , ,. ,/ ,T ,r#   c                .    \         P                  ! W4      # )zGet fixup information.
)r   	get_fixup)r  r   s   &&r   r  r    s     ++r#   c                    V ^8  d   QhRRRR/# r   r$   )rE   s   "r   rF   rF     s     + + +D +r#   c                .    \         P                  ! V 4      # )z0Check that a fixup exists at the given address.
)r   exists_fixupr   s   &r   r
  r
    s     ""6**r#   c               $    V ^8  d   QhRRRRRR/# )rA   r   r[   r  r  rC   rn   r$   )rE   s   "r   rF   rF   "  s!     , ,o ,> ,T ,r#   c                .    \         P                  ! W4      # )zSet fixup information. You should fill fixup_data_t and call this function and the kernel will remember information in the database. 
        
:param source: the fixup source address, i.e. the address modified by the fixup
:param fd: fixup data)r   	set_fixupr   r  s   &&r   r  r  "  s    
 ++r#   c                    V ^8  d   QhRRRR/# r   r$   )rE   s   "r   rF   rF   *  s     ( (o ( (r#   c                .    \         P                  ! V 4      # )zDelete fixup information.
)r   	del_fixupr  s   &r   r  r  *  s     ''r#   c                   V ^8  d   QhRR/# r   r$   )rE   s   "r   rF   rF   0  s     + +? +r#   c                 ,    \         P                  ! 4       # r.   )r   get_first_fixup_ear$   r#   r   r  r  0  s    ((**r#   c                    V ^8  d   QhRRRR/# rA   r   r[   rC   r$   )rE   s   "r   rF   rF   4       , ,/ ,_ ,r#   c                .    \         P                  ! V 4      # r.   )r   get_next_fixup_ear   s   &r   r  r  4      ''++r#   c                    V ^8  d   QhRRRR/# r  r$   )rE   s   "r   rF   rF   8  r  r#   c                .    \         P                  ! V 4      # r.   )r   get_prev_fixup_ear  s   &r   r  r  8  r  r#   c                    V ^8  d   QhRRRR/# )rA   r   rB   rC   r   r$   )rE   s   "r   rF   rF   <  s     . .N ..G .r#   c                .    \         P                  ! V 4      # )z)Get handler of standard or custom fixup.
)r   get_fixup_handlerrI   s   &r   r"  r"  <  s     ''--r#   c               $    V ^8  d   QhRRRRRR/# )rA   r   r[   r   rB   rC   ru   r$   )rE   s   "r   rF   rF   B  s!     0 0 0~ 0 0r#   c                .    \         P                  ! W4      # )aN  Get the operand value. This function get fixup bytes from data or an instruction at `ea` and convert them to the operand value (maybe partially). It is opposite in meaning to the `patch_fixup_value()`. For example, FIXUP_HI8 read a byte at `ea` and shifts it left by 8 bits, or AArch64's custom fixup BRANCH26 get low 26 bits of the insn at `ea` and shifts it left by 2 bits. This function is mainly used to get a relocation addend. 
        
:param ea: address to get fixup bytes from, the size of the fixup bytes depends on the fixup type.
:param type: fixup type
:returns: operand: value)r   get_fixup_value)r   r   s   &&r   r%  r%  B  s     %%b//r#   c               $    V ^8  d   QhRRRRRR/# )rA   r   r[   r  r  rC   rD   r$   )rE   s   "r   rF   rF   K  s!     0 0/ 0~ 0 0r#   c                .    \         P                  ! W4      # )a8  Patch the fixup bytes. This function updates data or an instruction at `ea` to the fixup bytes. For example, FIXUP_HI8 updates a byte at `ea` to the high byte of `fd->off`, or AArch64's custom fixup BRANCH26 updates low 26 bits of the insn at `ea` to the value of `fd->off` shifted right by 2. 
        
:param ea: address where data are changed, the size of the changed data depends on the fixup type.
:param fd: fixup data
:returns: false: the fixup bytes do not fit (e.g. `fd->off` is greater than 0xFFFFFFC for BRANCH26). The database is changed even in this case.)r   patch_fixup_value)r   r  s   &&r   r(  r(  K  s     ''//r#   c               $    V ^8  d   QhRRRRRR/# )rA   r   r[   r  r  rC   r   r$   )rE   s   "r   rF   rF   T  s!     1 1? 1 1# 1r#   c                .    \         P                  ! W4      # )zGet FIXUP description comment.
)r   get_fixup_descr  s   &&r   r+  r+  T  s     $$V00r#   c                    V ^8  d   QhRRRR/# )rA   r   rB   rC   ru   r$   )rE   s   "r   rF   rF   Z  s     , ,. ,C ,r#   c                .    \         P                  ! V 4      # )zlCalculate size of fixup in bytes (the number of bytes the fixup patches) 
        
:returns: -1: means error)r   calc_fixup_sizerI   s   &r   r.  r.  Z  s     %%d++r#   c                    V ^8  d   QhRRRR/# )rA   r   r   rC   rB   r$   )rE   s   "r   rF   rF   a  s     . .C .> .r#   c                .    \         P                  ! V 4      # r.   )r   find_custom_fixup)r   s   &r   r1  r1  a  s    ''--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	&   R
 t]P"                  tRtR# )fixup_info_tie  c                	6    V P                   P                  4       # r.   rM   rN   s   &r   rP   fixup_info_t.<lambda>f  rR   r#   c                	8    V P                   P                  V4      # r.   rM   rT   s   &&r   rP   r5  f  rV   r#   rW   rX   r[   r   r  r  c                	Z    \         P                  ! V \         P                  ! 4       4       R # r.   )r   fixup_info_t_swiginitnew_fixup_info_trh   s   &r   rb   fixup_info_t.__init__n  s    ((z/J/J/LMr#   r$   N)r   r   r8   r9   r   r   r   r
   r   fixup_info_t_ea_getfixup_info_t_ea_setr   r   fixup_info_t_fd_getfixup_info_t_fd_setr  rb   delete_fixup_info_tr  r<   r$   r#   r   r3  r3  e  sp    -/I!#GH":#A#A&&(B (!*"@"@&&(B (N!55r#   r3  c               (    V ^8  d   QhRRRRRRRR/# )	rA   outz'fixups_t *'r   r[   size	'asize_t'rC   rD   r$   )rE   s   "r   rF   rF   v  s(     0 0L 0o 0Y 0$ 0r#   c                0    \         P                  ! WV4      # r.   )r   
get_fixups)rA  r   rB  s   &&&r   rE  rE  v  s      $//r#   c               $    V ^8  d   QhRRRRRR/# )rA   r   r[   rB  rC  rC   rD   r$   )rE   s   "r   rF   rF   z  s!     0 0 0y 0D 0r#   c                .    \         P                  ! W4      # )z@Does the specified address range contain any fixup information?
)r   contains_fixups)r   rB  s   &&r   rH  rH  z  s     %%b//r#   c               (    V ^8  d   QhRRRRRRRR/# )rA   _fromr[   torB  rC  rC   rn   r$   )rE   s   "r   rF   rF     s)     6 6/ 6 6i 66r#   c                0    \         P                  ! WV4      # )a  Relocate the bytes with fixup information once more (generic function). This function may be called from loader_t::move_segm() if it suits the goal. If loader_t::move_segm is not defined then this function will be called automatically when moving segments or rebasing the entire program. Special parameter values (from = BADADDR, size = 0, to = delta) are used when the function is called from rebase_program(delta). 
        )r   gen_fix_fixups)rJ  rK  rB  s   &&&r   rM  rM    s     $$U55r#   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rA   riz'refinfo_t'r   r[   otherrB   macro_reft_and_flagsru   rC   rD   r$   )rE   s   "r   rF   rF     s2      {  *-15r#   c                2    \         P                  ! WVV4      # )an  Handle two fixups in a macro. We often combine two instruction that load parts of a value into one macro instruction. For example: 
       ADRP  X0, #var@PAGE
           ADD   X0, X0, #var@PAGEOFF  --> ADRL X0, var
      lui   $v0, %hi(var)
           addiu $v0, $v0, %lo(var)    --> la   $v0, var


        
:returns: success ('false' means that RI was not changed))r   handle_fixups_in_macro)rO  r   rP  rQ  s   &&&&r   rS  rS    s     ,,RU r#   )Gr:   
__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?   
ida_idaapi
FIXUP_OFF8FIXUP_OFF16FIXUP_SEG16FIXUP_PTR16FIXUP_OFF32FIXUP_PTR32	FIXUP_HI8
FIXUP_HI16
FIXUP_LOW8FIXUP_LOW16V695_FIXUP_VHIGHV695_FIXUP_VLOWFIXUP_OFF64FIXUP_OFF8SFIXUP_OFF16SFIXUP_OFF32SFIXUP_CUSTOMrH   
FIXUPF_RELFIXUPF_EXTDEFFIXUPF_UNUSEDFIXUPF_CREATEDFIXUPF_LOADER_MASKobjectrK   fixup_data_t_swigregisterr  r
  r  r  r  r  r  r"  r%  r(  r+  r.  r1  r3  fixup_info_t_swigregisterrE  rH  rM  rS  r$   r#   r   <module>rw     su   # 9#/"
 L$ L
 $<<  % % ""
$$$$$$$$$$  	""
""
$$.. ,,$$$$&&&&&&, ""
(((( **22 {66 {6|  $ $\ 2,+,(+,,.001,.66 6  $ $\ 2006u  s   H) )H87H8