
    ji                     X    d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	  G d d          Z
dS )zZThis file is a simplified version of writer.py that outputs an AST instead of source code.    N)logger)TYPE_DESCRIPTOR)basic_blocksinstruction
opcode_insc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdBdZd Zd Zd ZdCdZed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed              Z!ed!e"d"e#fd#            Z$ed$             Z%ed%             Z&ed&             Z'ed'             Z(ed(             Z)ed)             Z*ed*             Z+ed+             Z,ed,             Z-ed-             Z.ed.             Z/ed/             Z0ed0             Z1ed1             Z2ed2             Z3ed3e"d4e4d"e#fd5            Z5ed6             Z6ed7             Z7ed8             Z8ed9             Z9ed:             Z:ed;             Z;ed<             Z<edDd>            Z=edCd?            Z>ed@             Z?ed"e#fdA            Z@dS )E
JSONWriterc                     || _         || _        t                      | _        d g| _        d g| _        d g| _        d g| _        d g| _        d | _	        d| _
        d| _        g | _        d S )NTF)graphmethodsetvisited_nodesloop_follow	if_followswitch_follow
latch_node
try_follow	next_case
need_breakconstructorcontext)selfr   r   s      a/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/androguard/decompiler/dast.py__init__zJSONWriter.__init__   sl    
 UU 6"V&&     c                 t    | j                             |                                            | j         d         S N)r   appendstatement_block)r   s    r   	__enter__zJSONWriter.__enter__/   s1    D0022333|Br   c                 8    | j                                          dS NF)r   pop)r   argss     r   __exit__zJSONWriter.__exit__3   s    ur   c                 H    |                      | j        d         |           d S r   )_appendr   )r   vals     r   addzJSONWriter.add8   s#    T\"%s+++++r   c                 d    |                      |                     || j                             d S )N)isCtor)r*   
_visit_insr   )r   ops     r   	visit_inszJSONWriter.visit_ins;   s-    D,<==>>>>>r   c                 <   | j         }|j        }d|v r|                    d           d| _        |j        d d          }d|j        vr
|dd          }t          |          t          |j                  k    r<d|v sd|v sJ |rJ t          t          t          |j                                      }g }t          |j        |          D ]k\  }}| 
                    |          }|                     d                    |                    }|                    |                     ||                     l| j        d }	n9| 5 }	|                     | j        j                   d d d            n# 1 swxY w Y   |j        || 
                    |j                  |g |	dS )	Nr   Tstatic   abstractnativep{})tripleflagsretparamscommentsbody)r   accessremover   lparamslenparams_typelistrangezipparse_descriptorlocalformatr   var_declr   
visit_nodeentryr6   type)
r   mr7   r9   
paramdeclsptypenametvr;   s
             r   get_astzJSONWriter.get_ast?   s   KE!!LL'''#D11118##ABBZF v;;#am,,,,&&(e*;*;*;;:%AM 2 23344F
q}f55 	3 	3KE4%%e,,A

5<<--..AdmmAq112222:DD 2
 01112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 h((00 
 
 	
s    E--E14E1c                 >   |j         r|j                                         |                     |                     |j                            }|                     |                     |j                            }|j        rdnd}|                     |||          }|S )Nz&&z||)isnotcond1negparenthesisget_condcond2isandbinary_infix)r   condleftrightr.   ress         r   _visit_conditionzJSONWriter._visit_conditione   s    : 	JNNdj 9 9::  tz!:!:;;Z)TTTD%00
r   c                    t          |t          j                  r|                     |j                  S t          |t          j                  r|                     |j                  S t          |          t          j        k    sJ t          |j
                  dk    sJ |                     |j
        d                   S )Nr2   r   )
isinstancer   ShortCircuitBlockr_   r[   	LoopBlockrW   rJ   	CondBlockr?   ins
visit_expr)r   nodes     r   rW   zJSONWriter.get_condn   s    dL:;; 	1((333l455 	1==+++::!77777tx==A%%%%??48B<000r   c                    || j         d         | j        d         | j        d         | j        d         | j        d         fv rd S |j        j        s|| j        v rd S | j                            |           |j	        D ]8}|j
        s(|                     |                     |                     d|_
        9|                    |            d S )Nr   T)r   r   r   r   r   rJ   	is_returnr   r*   var_to_declaredeclared
visit_declvisit)r   rg   vars      r   rH   zJSONWriter.visit_nodex   s    N2r"R OBOB
 
 
 Fy" 	tt/A'A'AFt$$$& 	  	 C< /--...CLL

4r   c                    d x}x}}|j         d         }|j        j        rN|j        |u r-|                                 |j        |j        c|_        |_        d}|                     |          }nQ|j        j        r"d}| j        	                    |j
                   n#|j        j        rd}|                     d          }| 5 }| j        	                    |           |j        j        r|                     |j                   n|                     |j                   | j                                         |j        j        rnZ|j        j        r4| j                                         |                     |j
                  }n|                     |j
                   d d d            n# 1 swxY w Y   ||J |                     |                     |||                     ||                     |           d S d S )NloopFT)followlooptype
is_pretesttruerU   falserW   is_posttestr   r   latch
is_endlessliteral_boolr   rH   r[   r$   r*   	loop_stmt)r   rp   isDo	cond_exprr;   rq   s         r   visit_loop_nodezJSONWriter.visit_loop_node   s3   "&&&y4V$=# 	0yF""


(,
DI%	4:Dd++II]& 	0DO""4:....]% 	0D))$//I 	,T##F+++}' +	****	***  """}' ,* ,##%%% MM$*55		
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,  $)9)99i66777OOF##### s   CF))F-0F-c                 6   d }g }|j         d         }|j        |j        u rW|                     |                     |                     |                               |                     |j                   d S |j        | j        d         u r-|                                 |j        |j        c|_        |_        | j        d         |j        |j        fv r|                     |          }| 5 }|                     | 	                    d                     d d d            n# 1 swxY w Y   |
                    |           | 5 }|                     |j                   d d d            n# 1 swxY w Y   |
                    |           |                     |                     ||                     d S ||j        || j        fv s|j        |j        j        k    r-|                                 |j        |j        c|_        |_        | j        
                    |           |j        r^|                     |          }| 5 }|                     |j                   d d d            n# 1 swxY w Y   |
                    |           ||j        |j        fv}|rW|j        | j        vrI| 5 }|                     |j                   d d d            n# 1 swxY w Y   |
                    |           | j                                         |                     |                     ||                     |                     |           d S |                     |          }| 5 }|                     |j                   d d d            n# 1 swxY w Y   |
                    |           | 5 }|                     |j                   d d d            n# 1 swxY w Y   |
                    |           |                     |                     ||                     d S )Nifr   break)rq   ru   rt   r*   expression_stmtrW   rH   r   rU   	jump_stmtr   if_stmtr   numr   r   r$   )r   r[   r|   scopesrq   scopeis_elses          r   visit_cond_nodezJSONWriter.visit_cond_node   s   	T":""HHT))$--*=*=>>???OODI&&&F:)"---HHJJJ$(J	!DItzBDItz#:::d++I 2001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2MM%    ,
+++, , , , , , , , , , , , , , ,MM%   HHT\\)V4455555	fdn5558dim++ 


(,
DI%	4:N!!&)))y % MM$//	 /UOODI.../ / / / / / / / / / / / / / /e$$$!di%<<G %4:T-??? 0UOODJ///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0e$$$N   HHT\\)V44555OOF#####d++I +	***+ + + + + + + + + + + + + + +MM%    ,
+++, , , , , , , , , , , , , , ,MM%   HHT\\)V4455555sl   *)DD#&D#E((E,/E, I''I+.I+)KKK NNN)OOOc                 z   |                                 }|d d         D ]}|                     |           |                                 d         }|                     |          }g }|j        d         }|j        }| j                            |           |j        }	t          |          D ]\  }
}|| j	        v r|j
        |         d d          }|
dz   t          |          k     r||
dz            | _        nd | _        ||	u r|                    d            d }	| 5 }|                     |           | j        r)|                     |                     d                     nd| _        d d d            n# 1 swxY w Y   |                    ||f           |	d |fvrG| 5 }|                     |	           d d d            n# 1 swxY w Y   |                    d g|f           |                     |                     ||                     | j                                         |                     |           d S )Nr   switchr2   r   T)get_insr/   rf   rq   casesr   r   default	enumerater   node_to_caser?   r   rH   r   r*   r   switch_stmtr$   )r   r   linsre   
switch_insr|   	ksv_pairsrq   r   r   irg   cur_ksr;   s                 r   visit_switch_nodezJSONWriter.visit_switch_node   s   ~~9 	  	 CNN3^^%%b)
OOJ//		x(!!&))). '' 	- 	-GAtt)))(.qqq1F1us5zz!!!&q1u!%wd### +%%%? +HHT^^G445555&*DO+ + + + + + + + + + + + + + + fd^,,,,4.(( )((() ) ) ) ) ) ) ) ) ) ) ) ) ) )tfd^,,,!!)Y77888   s%   AE44E8	;E8	GGGc                    | j                             |          }|                                D ]}|                     |           t	          |          dk    rt|d         | j        d         u r*|                     |                     d                     d S |d         | j        u r	d| _	        d S | 
                    |d                    d S d S )Nr2   r   r   r   F)r   sucsr   r/   r?   r   r*   r   r   r   rH   )r   stmtr   re   s       r   visit_statement_nodezJSONWriter.visit_statement_node  s    zt$$<<>> 	  	 CNN3t99>>Aw$*2...0011111aDN**"'Q((((( >r   c                 v   | 5 }| j                             |j                   |                     |j                   d d d            n# 1 swxY w Y   g }|j        D ]}|j        rk|j        }t          |t          j	                  sJ |j
        |j                 }d|_        |                                }d                    |j                  }n	|j        }d}|                     |                     |          |                     |                    }	| 5 }
|                     |j                   d d d            n# 1 swxY w Y   |                    |	|
f           |                     |                     ||                     |                     | j                                                    d S )NTv{}_)r   r   rq   rH   	try_startcatchexception_insra   r   MoveExceptionExpressionvar_maprefrk   get_typerF   rN   
catch_typerG   rD   rE   catch_startr*   try_stmtr$   )r   try_nodetrybpairs
catch_nodere   rn   ctyperN   
catch_declr;   s              r   visit_try_nodezJSONWriter.visit_try_node&  s    	0TO""8?333OOH.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ". 	- 	-J' 
 .!#{'JKKKKKk#'*#||CH--"-%%e,,djj.>.> J  8
 67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8LL*d+,,,,tU++,,,++--.....s#   :A		AAE  E	E	c                 l    d| _         |                                D ]}|                     |           d S r#   )r   r   r/   )r   r8   re   s      r   visit_return_nodezJSONWriter.visit_return_nodeC  s?    ;;== 	  	 CNN3	  	 r   c                 ^    |                                 D ]}|                     |           d S N)r   r/   )r   throwre   s      r   visit_throw_nodezJSONWriter.visit_throw_nodeH  s8    ==?? 	  	 CNN3	  	 r   Fc                    t          |t          j                  rC|j        d n$|                     |j        |j                           }|                     |          S t          |t          j                  r8|                     |                     |j        |j	                                     S t          |t          j
                  rd S t          |t          j        t          j        t          j        f          r|j                            |j                  }t          |t          j                  r|j        n|j                            |j                  }t          |t          j                  r9|j        s2d|_        |                     |          }|                     ||          S |rt          |t          j                  rw|j        }|j        it          |t          j                  rO|j        dk    rDt-          |j                  dk    r,t          |j        |j                 t          j                  rd S t          |t          j                  r@|j                            |j                  |j                            |j                  u rd S |                     |                     |                    S )NT<init>r   )ra   r   ReturnInstructionargrf   r   return_stmtThrowExpression
throw_stmtr   NopExpressionAssignExpressionMoveExpressionMoveResultExpressiongetlhsrhsVariablerk   rl   InvokeInstructionrN   r?   r%   base	ThisParamr   )r   r.   r,   exprr   r   op2s          r   r-   zJSONWriter._visit_insL  sd   b+788 	DOOBJrv<N,O,O  ##D)))K788 	??4??2:bf3E#F#FGGGK566 	4 ,*0
 
 	2 *..((C b+">??,Z^^BF++ 
 #{344 2S\ 2#s++sD111  		$j[%ABB 		$&Cv~*[2# #~ 8x''CMMQ,>,>!CH-{/D  $  $t b+455 	z~~bf%%)?)???t##DOOB$7$7888r   c                 \   t          |t          j                  r||j        |j                 k    r|j        |j                 }|j        dv rct          |t          j                  rI|                                dk    r1| 	                    | 
                    |          |j        dz            S |                     | 
                    |          | 
                    |          |j                  S |                     | 
                    |          | 
                    |                    S )Nz+-r2      )r.   )ra   r   BinaryExpressionr   arg1arg2r.   Constantget_int_valueunary_postfixrf   
assignment)r   r   r   exp_rhss       r   write_inplace_if_possiblez$JSONWriter.write_inplace_if_possible~  s   sK899	s{38,,,k#(+G $w(<== ))++q00))$//#*>*>
KKK??$$doog&>&>36 #    ts33T__S5I5IJJJr   c                     t          t          j                  r=                     j        j                           }                     g d|          S t          t          j                  r`                     j        j                           }                     j        j                           } 	                    ||          S t          t          j
                  r                     j        j                           }                     j        j                           }                     j        j                           }                      	                    ||          |          S t          t          j                  rSj                            j                  }j        }|                     |          S                      ||          S t          t          j                  rHj        'j        dk    sJ                      j                  S                      j                  S t          t          j                  rj                            j                  }j                            j                  }                     j                             |                               |                    }t          t          j                  s                     |          }|S t          t          j                  rsj                            j                  }                                                                j                                       |                              S t          t          j!                  rj                            j                  }j                            j                  }                     j                             |                               |                    S t          t          j"                  rj        j                 }t          |t          j                  r!j        |_                             |          S                      |          }tG          |$                                          }|dk    r1j        tJ          j&        j'        k    r (                    d|          }nb|dv r0                     j        | )                    d                    }n.                     j        | *                                          }|S t          t          j+                  r)j,        dk    r -                    j.                  S j,        dk    r /                    j.        dk              S j,        dv r )                    j0                  S j,        d	v r 1                    j0                  S j,        d
v r 2                    j.                  S j,        dv r 3                    j.                  S j,        dk    r 4                    j                  S  5                    dtG          j,                  z             S t          t          j6                  rU                     j        j7                           } 8                    j9                  }                     ||          S t          t          j:                  rD                     j,                  }	 fdj;        D             }
 <                    |
|	          S t          t          j=                  rWj        dd         j>        j?        f}                     j        j                           }                     ||          S t          t          j@                  rj        dd         j>        jA        f}                     |                     j        j                                     }                     j        j                           }                     ||          S t          t          jB                  r9j        jC                 }fdj;        D             }
t          t           j        |
                    }
j>        dk    rt          |t          jF                  r?|j,        dd         jG        d         k    rdnd} H                    jG        |d |
          S t          |t          jI                  r#djG        |
                     |j,                  gS t          |t          jJ                  sJ  H                    jG        j>                             |          |
          S t          t          jK                  r: 5                    d                     j        jL                           d          S t          t          jM                  r: 5                    d                     j        jL                           d          S t          t          jN                  rTj                            j                  }j                            j                  }                     ||          S t          t          jO                  rzj                            j                  }j                            j                  }                                          |                               |                    S t          t          jP                  r_                     j,        dd                    }	                     j        jQ                           } R                    |	|gd          S t          t          jI                  r. 5                    d                     j,                            S t          t          jS                  r\t          t          jF                  r                     d          S                      dT                    jU                            S t          t          jV                  rJj        dd         j>        j?        f}                     |                     j                            S t          t          jW                  rj        dd         j>        j?        f}                     |                     j                            }                     j        j                           }                     ||          S t          t          jX                  r%                     j        jY                           S t          t          jZ                  rj                            j                  }t          t          j[                  rB                                           j                                       |                    }n. (                    j                             |                    }                     |          S t          t          jJ                  r-                     dT                    j>                            S  5                    dtY                    j\        z             S )N)NlengthNsuperZ!VBSCIJFDr   zLjava/lang/String;ISCBJFDzLjava/lang/Class;z??? Unexpected constant: c                 P    g | ]"}                     j        |                   #S  )rf   r   ).0xr.   r   s     r   
<listcomp>z)JSONWriter.visit_expr.<locals>.<listcomp>  s+    FFFdoobjm44FFFr   r2   r   c                 *    g | ]}j         |         S r   )r   )r   r   r.   s     r   r   z)JSONWriter.visit_expr.<locals>.<listcomp>  s    999#bjo999r   r   thisClassInstanceCreationzmonitor enter()zmonitor exit(znew r5   r   z??? Unexpected op: )]ra   r   ArrayLengthExpressionrf   r   arrayfield_accessArrayLoadExpressionidxarray_accessArrayStoreInstructionindexr   r   r   r   r   r   	BaseClassclsdescclsrE   rD   r   r   r   rZ   r.   BinaryCompExpressionrV   CheckCastExpressionr   castConditionalExpressionConditionalZExpressionstrr   r   OpEQUALunary_prefixliteral_intliteral_nullr   rJ   literal_stringcstry   cst2literal_longliteral_floatliteral_doubleliteral_classdummyFillArrayExpressionregvisit_arr_datavalueFilledArrayExpressionr%   array_initializerInstanceExpressionrN   ftypeInstanceInstructionatyper   r   rA   mapr   r6   method_invocationNewInstancer   MonitorEnterExpressionr   MonitorExitExpressionr   r   NewArrayExpressionsizearray_creationParamrF   rP   StaticExpressionStaticInstructionSwitchExpressionsrcUnaryExpressionCastExpression__name__)r   r.   r   
array_expr
index_exprr   r   r   r  tnr9   r6   r   keywords   ``            r   rf   zJSONWriter.visit_expr  s   b+;<< 	C??2:bh#788D$$%;%;%;TBBBb+9:: 	=BH)=>>JBF);<<J$$Z<<<b+;<< 	BH)=>>JBH)=>>J//"*RV"455C??!!*j993   b+677 	<*..((C&C{s+++11#s;;;b+/00 	5z!v((((zz"&)))((444b+677 	*..))C*..))C$$ts++T__S-A-A D b+"BCC .''--Kb+9:: 	*..((C##		))"*55ts7K7K   
 b+;<< 	*..))C*..))C$$ts++T__S-A-A   b+<== 	*RV$C#{?@@ ,s+++??3''D''E||5JM///,,S$77D*$$((d6F6Fq6I6IJJ((d6G6G6I6IJJKb+.// 	Jw...**26222C((1555F""''000C((111C))"&111C**26222///))"*555::9CLLHIIIb+9:: 	4BF);<<J%%bh//C??:s333b+;<< 	6&&rw//BFFFFFbgFFFF))&"555b+899 	3Z"%rw8F??2:bf#566D$$VT222b+9:: 	-Z"%rw8F##
26(:;; C //"*RV"455C??3,,,b+788 	:bg&D9999999F#dov6677Fw(""dK$9:: B"&)AbD/RYq\"A"Aw   11	7D&    k&=>> B/	--di88	  &dK,@AAAAA))	27DOOD$9$96   b+<== 	:: $//"*RV2D"E"Es   b+;<< 	::BF1C!D!Dc   b+455 	<*..((C*..((C11#s;;;b+:;; 	O*..((C*..((C??4??3#7#79M9MNNNb+899 	6&&rwqrr{33B??2:bg#677D&&rD61555b+122 	F::fd&;&;BG&D&DEEEb++,, 	2"k344 *zz&)))::ell2400111b+677 	PZ"%rw8F$$VT-B-B2:-N-NOOOb+788 	-Z"%rw8F##FD,A,A"*,M,MNNC//"*RV"455C??3,,,b+677 	7??2:bf#5666b+566 	**..((C"k899 Fyy))"*55ts7K7K  ((0D0DEE##D)))b+.// 	5::ell2733444zz/$r((2CCDDDr   c           
         |                                 }g }|j        }|dk    rVt          d|j        dz  d          D ];}|                    t          j        d|||dz                      d                    <n2t          |j                  D ]}|                    ||                    |                     t          t          | j
        |                              S )N   r   z<i)get_dataelement_widthrB   r  r   structunpackr
  rA   r  r   )r   r  datatab	elem_sizer   s         r   r  zJSONWriter.visit_arr_dataG  s    ~~'	>>1ej1na00 D D

6=tAAI??BCCCCD 5:&& $ $

47####%%d3t/?+E+E&F&FGGGr   Nc                     |                      |                                          }|                     d                    |j                            }|                     ||                     ||                    S )Nr   )rD   r   rE   rF   rN   local_decl_stmtrG   )r   rn   	init_exprrO   rP   s        r   rl   zJSONWriter.visit_declS  s`    !!#,,..11JJu||CH--..##It}}Q/B/BCCCr   c                  8    t                               dd          S )Nnull)z.nullr   )r	   literalr   r   r   r   zJSONWriter.literal_nullX  s    !!&,777r   c                 R    t                               t          |           d          S )N)z.doubler   r	   r1  r   fs    r   r  zJSONWriter.literal_double\  s    !!#a&&.999r   c                 X    t                               t          |           dz   d          S )Nr5  )z.floatr   r3  r4  s    r   r  zJSONWriter.literal_float`  s"    !!#a&&3,>>>r   c                 X    t                               t          |           dz   d          S )NL)z.longr   r3  bs    r   r   zJSONWriter.literal_longd  s"    !!#a&&3,===r   c                 R    t                               t          |           d          S N)z.intr   )r	   r1  hexr9  s    r   literal_hex_intzJSONWriter.literal_hex_inth      !!#a&&+666r   c                 R    t                               t          |           d          S r<  r3  r9  s    r   r   zJSONWriter.literal_intl  r?  r   c                 v    t                               t          |                                           d          S )N)z.booleanr   )r	   r1  r   lowerr9  s    r   ry   zJSONWriter.literal_boolp  s&    !!#a&&,,../BBBr   c                 h    t                               t                               |           d          S )N)zjava/lang/Classr   )r	   r1  rD   )descs    r   r  zJSONWriter.literal_classt  s.    !!''--/E
 
 	
r   c                 R    t                               t          |           d          S )N)zjava/lang/Stringr   r3  )ss    r   r   zJSONWriter.literal_stringz  s    !!#a&&*ABBBr   rD  returnc                    d}| r)| d         dk    r| dd          } |dz  }| r| d         dk    | t           v r)t                              dt           |          z   |          S | r;| d         dk    r/| d         dk    r#t                              | dd         |          S t                              t	          |                     S )Nr   [r2   .r8  r   ;)r   r	   typenr  r   )rD  dims     r   rD   zJSONWriter.parse_descriptor~  s     	tAw#~~8D1HC  	tAw#~~ ?""##C/$*?$?EEE 	5DGsNNtBx3##D2J444D		***r   c                 `    | d         dk    sJ || d                              |           d S d S )Nr   BlockStatementr   )r   )sbr   s     r   r(   zJSONWriter._append  sD     !u(((((qELL r   c                      dd g gS )NrO  r   r   r   r   r    zJSONWriter.statement_block  s     !$++r   c                     dd | |gS )NSwitchStatementr   )r|   r   s     r   r   zJSONWriter.switch_stmt  s    !4I>>r   c                     dd | |gS )NIfStatementr   )r|   r   s     r   r   zJSONWriter.if_stmt  s    tY77r   c                     dd | |gS )NTryStatementr   )r   r   s     r   r   zJSONWriter.try_stmt  s    dE22r   c                     | rdnd}|d ||gS )NDoStatementWhileStatementr   )isdor|   r;   type_s       r   rz   zJSONWriter.loop_stmt  s     !%;+;tY--r   c                     d| d gS )NJumpStatementr   )r"  s    r   r   zJSONWriter.jump_stmt  s    $//r   c                 
    d| gS )NThrowStatementr   r   s    r   r   zJSONWriter.throw_stmt  s     $''r   c                 
    d| gS )NReturnStatementr   ra  s    r   r   zJSONWriter.return_stmt  s    !4((r   c                     d| |gS )NLocalDeclarationStatementr   )r   decls     r   r-  zJSONWriter.local_decl_stmt  s    +T488r   c                 
    d| gS )NExpressionStatementr   ra  s    r   r   zJSONWriter.expression_stmt  s    %t,,r   c                  
    d| gS )NDummyr   )r%   s    r   r  zJSONWriter.dummy      r   c                 
    | |gS r   r   )rL  rn   s     r   rG   zJSONWriter.var_decl  s    s|r   c                     d| g|dgS )NUnaryTr   )r\   r.   s     r   r   zJSONWriter.unary_postfix  s    $T**r   c                     d|g| dgS )Nrn  Fr   )r.   r\   s     r   r   zJSONWriter.unary_prefix  s    $U++r   basetrM  c                     d| |fgS )NTypeNamer   )rp  rM  s     r   rL  zJSONWriter.typen  s    UCL))r   c                     d| ggS )NParenthesisr   ra  s    r   rV   zJSONWriter.parenthesis  s    v&&r   c                 *    |d|| |dgS d|g|z   | |dgS )NMethodInvocationFTr   )r6   rN   r   r9   s       r   r  zJSONWriter.method_invocation  s/    <&eDD"TFVOVT4HHr   c                 
    d| gS )NLocalr   )rN   s    r   rE   zJSONWriter.local  rk  r   c                     d| |gS )NLiteralr   )resulttts     r   r1  zJSONWriter.literal  s    62&&r   c                     d|g| gS )NFieldAccessr   )r6   r\   s     r   r   zJSONWriter.field_access  s    vv..r   c                     d| |ggS )NCastr   )r!  r   s     r   r   zJSONWriter.cast  s    S	""r   c                     d||g| gS )NBinaryInfixr   )r.   r\   r]   s      r   rZ   zJSONWriter.binary_infix  s    e}b11r    c                     d| |g|gS )N
Assignmentr   )r   r   r.   s      r   r   zJSONWriter.assignment  s    sCj"--r   c                     d| |gS )NArrayInitializerr   )r9   r!  s     r   r
  zJSONWriter.array_initializer  s    "FB//r   c                     d| g|z   |gS )NArrayCreationr   )r!  r9   rM  s      r   r  zJSONWriter.array_creation  s    "44r   c                     d| |ggS )NArrayAccessr   )arrinds     r   r   zJSONWriter.array_access  s    Sz**r   )Fr   )r  )Ar  
__module____qualname__r   r!   r&   r*   r/   rQ   r_   rW   rH   r}   r   r   r   r   r   r   r-   r   rf   r  rl   staticmethodr   r  r  r   r>  r   ry   r  r   r   rA   rD   r(   r    r   r   r   rz   r   r   r   r-  r   r  rG   r   r   intrL  rV   r  rE   r1  r   r   rZ   r   r
  r  r   r   r   r   r	   r	      s         *       
, , ,? ? ?$
 $
 $
L  1 1 1  $&$ &$ &$P:6 :6 :6x*  *  * X
) 
) 
)/ / /:     
     09 09 09 09dK K K&tE tE tEl
H 
H 
HD D D D
 8 8 \8 : : \: ? ? \? > > \> 7 7 \7 7 7 \7 C C \C 
 
 \

 C C \C +s +t + + + \+   \ , , \,
 ? ? \? 8 8 \8 3 3 \3 . . \. 0 0 \0 ( ( \( ) ) \) 9 9 \9 - - \-   \   \ + + \+ , , \, *S *s *t * * * \* ' ' \' I I \I
   \ ' ' \' / / \/ # # \# 2 2 \2 . . . \. 0 0 0 \0 5 5 \5 +$ + + + \+ + +r   r	   )__doc__r'  logurur   androguard.core.dex.dex_typesr   androguard.decompilerr   r   r   r	   r   r   r   <module>r     s     a `        9 9 9 9 9 9 G G G G G G G G G Ge+ e+ e+ e+ e+ e+ e+ e+ e+ e+r   