+
    iP                        ^ RI Ht ^ RIt^RIHt  ! R R]P                  4      t ! R R]P                  4      t ! R R	]P                  4      t
 ! R
 R]P                  4      t ! R R4      tRR ltR tR t ! R R4      tRR ltR# )    )linesepN)get_table_type_namec                   N    ] tR t^tR]P
                  3R]P                  3.tRtR# )OffsetUnionoffsetuoffset N)	__name__
__module____qualname____firstlineno__ctc_uint16c_int16_fields___static_attributes__r	       2/usr/lib/python3/dist-packages/bcc/disassembler.pyr   r      s    BKK(8RZZ*@AHr   r   c                   N    ] tR t^tR]P
                  3R]P                  3.tRtR# )ImmUnionimmuimmr	   N)	r
   r   r   r   r   c_uint32c_int32r   r   r	   r   r   r   r      s    %rzz':;Hr   r   c                       ] tR t^t^tRtR]P                  3R]P                  ^3R]P                  ^3R]3R]	3.t
RtR# )	BPFInstrFieldsoiopcodedstsrcr	   N)r   r   )r
   r   r   r   _pack__anonymous_r   c_uint8r   r   r   r   r	   r   r   r   r      sJ    FK2::&

A&

A&k"h	!Hr   r   c                   B    ] tR t^"t^tRtR]3R]P                  3.t	Rt
R# )BPFInstrsinstrr	   N)r
   r   r   r   r"   r#   r   r   c_uint64r   r   r	   r   r   r&   r&   "   s$    FKn%'=>Hr   r&   c                     a  ] tR t^'t o ^t. RNRNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]Nt/ ^Rab^Rbb^Rcb^Rdb^Reb^Rfb^Rgb^Rhb^Rib^Rjb^Rkb^Rlb^ Rmb^$Rnb^%Rob^'Rpb^(Rqb/ ^,Rrb^-Rsb^/Rtb^0Rub^4Rvb^5Rwb^7Rxb^8Ryb^<Rzb^=R{b^?R|b^@R}b^DR~b^ERb^GRb^HRb^LRbC/ ^MRb^ORb^PRb^TRb^URb^WRb^XRb^\Rb^]Rb^_Rb^aRb^bRb^cRb^dRb^eRb^gRb^iRbC/ ^jRb^kRb^lRb^mRb^oRb^qRb^rRb^sRb^tRb^uRb^wRb^yRb^zRb^{Rb^|Rb^}Rb^RbC/ ^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^RbC^R^R^R^R^R^R^R^R^R^R^R^R/Ct]R_ 4       tR`t	V t
R^# )
BPFDecoderunspecmap_lookup_elemmap_update_elemmap_delete_elem
probe_readktime_get_nstrace_printkget_prandom_u32get_smp_processor_idskb_store_bytesl3_csum_replacel4_csum_replace	tail_callclone_redirectget_current_pid_tgidget_current_uid_gidget_current_commget_cgroup_classidskb_vlan_pushskb_vlan_popskb_get_tunnel_keyskb_set_tunnel_keyperf_event_readredirectget_route_realmperf_event_outputskb_load_bytesget_stackid	csum_diffskb_get_tunnel_optskb_set_tunnel_optskb_change_protoskb_change_typeskb_under_cgroupget_hash_recalcget_current_taskprobe_write_usercurrent_task_under_cgroupskb_change_tailskb_pull_datacsum_updateset_hash_invalidget_numa_node_idskb_change_headxdp_adjust_headprobe_read_strget_socket_cookieget_socket_uidset_hash
setsockoptskb_adjust_roomredirect_mapsk_redirect_mapsock_map_updatexdp_adjust_metaperf_event_read_valueperf_prog_read_value
getsockoptoverride_returnsock_ops_cb_flags_setmsg_redirect_mapmsg_apply_bytesmsg_cork_bytesmsg_pull_databindxdp_adjust_tailskb_get_xfrm_state	get_stackskb_load_bytes_relative
fib_lookupsock_hash_updatemsg_redirect_hashsk_redirect_hashlwt_push_encaplwt_seg6_store_byteslwt_seg6_adjust_srhlwt_seg6_action	rc_repeat
rc_keydownskb_cgroup_idget_current_cgroup_idget_local_storagesk_select_reuseportskb_ancestor_cgroup_idsk_lookup_tcpsk_lookup_udp
sk_releasemap_push_elemmap_pop_elemmap_peek_elemmsg_push_datamsg_pop_datarc_pointer_relNc                    V P                   VP                  ,          w  rErgVR 8X  d"   RVP                  WbP                  3,          ^ 3# VR8X  d"   RVP                  WbP                  3,          ^ 3# VR8X  d6   RRVP
                  ,          WP
                  ,           ^,           3,          ^ 3# VR8X  d"   RVP                  WbP                  3,          ^ 3# VR	8X  dL   R
VP                  WbP                  RVP
                  ,          WP
                  ,           ^,           3,          ^ 3# VR8X  dL   RVP                  WbP                  RVP
                  ,          WP
                  ,           ^,           3,          ^ 3# VR8X  d}   Vf   \        R4      hVP                  ^ 8X  d"   RVP                  VP                  3,          ^3# VP                  ^ ,          VP                  ,          pRVP                  V3,          ^3# VR8X  d   RV: RVP                  : R2^ 3# VR8X  d)   RWrP                  RVP                  ,          3,          ^ 3# VR8X  d4   RVP                  WrP                  RVP
                  ,          3,          ^ 3# VR8X  d4   RWrP                  RVP
                  ,          VP                  3,          ^ 3# VR8X  d4   RWrP                  RVP
                  ,          VP                  3,          ^ 3# VR8X  d#   RVP                  WgVP                  3,          ^ 3# VR8X  dk   VP                  V P                  8w  d4    R W@P                  VP                  ,          VP                  3,          ^ 3# V: R"RVP                  ,          : 2^ 3# VR#8X  d   V^ 3# \        R$4      h  \         d    R!YbP                  3,          ^ 3u # i ; i  \         d    R%TP                  ,          u # i ; i)&dstimmz	r%d %s %d	dstimm_bwzr%d %s 0x%xjoffzgoto %s <%d>z%+ddstsrcz
r%d %s r%d
jdstimmoffzif r%d %s %d goto pc%s <%d>
jdstsrcoffzif r%d %s r%d goto pc%s <%d>lddwz1lddw requires two instructions to be disassembledzr%d = <map at fd #%d>z
r%d = 0x%xldabszr0 = *(uz*)skb[]ldindzr0 = *(u%d*)skb[r%d %s]
ldstsrcoffzr%d = *(u%d*)(r%d %s)
sdstoffimmz*(u%d*)(r%d %s) = %d
sdstoffsrcz*(u%d*)(r%d %s) = r%dr    zr%d = %s (u%s)r%dcallz%s bpf_%s#%dz%s <unknown helper #%d> exitzunknown opcode classzunknown <0x%x>)opcodesr   r    r   r   r   r!   	ExceptionBPF_PSEUDO_CALLbpf_helpers
IndexErrorKeyError)	clsr   ww1nameopclassopbitsr   s	   &&&&     r   decodeBPFDecoder.decode   s   F	1&)kk!((&;#D2(""aeeR%77::K'$r66'::A==F"%!(();)*XX)9); ;<=> > H$#quub%%&88!;;L(4r556;qxx6H67((lQ6F8H HIJK K L(5EE7<7I7888|a7G9I IJKL L F" :#$WXX66Q;2aeeQUU^CQFFvv|quu,#quucl2A55G#04aee<a??G#0D%%49QUUO4E EFGH H L(.!%%uu271882D2F FGHI I L(-uu16!((1CQUU1L LMNO O L(.$271882Daee2M MNOP P E!*aeeRquu-EEqHHF"55C///K-qvv7NPQPVPV0WWYZZZ #'8!;;F"Qw 677 & K8B<GJJK  	1#qxx00	1s   AO 
'O 2;O .'O AO (AO :AO :O =O .O 
9O 9O >9O 8(O !"O 1N( 6O 
O O (!O	O OO O0/O0r	   )add32r   +=    )jar   N@   )addr   r   r   )r   r   r   r   )r   r   r   r   )sub32r   -=r   )jeqr   ==r   )subr   r   r   )r   r   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldabswr   Nr   )mul32r   *=r   )jgtr   >r   )mulr   r   r   )ldabshr   N   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldabsbr   N   )div32r   /=r   )jger   >=r   )divr   r   r   )ldabsdwr   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldindwr   Nr   )or32r   |=r   )jsetr   &r   )orr   r   r   )ldindhr   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldindbr   Nr   )and32r   &=r   )jner   !=r   )andr   r   r   )ldinddwr   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldxwr   Nr   )stwr   Nr   )stxwr   Nr   )lsh32r   <<=r   )jsgtr   s>r   )lshr   r   r   )ldxhr   Nr   )sthr   Nr   )stxhr   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )ldxbr   Nr   )stbr   Nr   )stxbr   Nr   )rsh32r   >>=r   )jsger   s>=r   )rshr   r   r   )ldxdwr   Nr   )stdwr   Nr   )stxdwr   Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )neg32r    ~r   )r   r   Nr   )negr    r   r   )mod32r   %=r   )r   r   Nr   )modr   r   r   )r   r   r   r   )r   r   r   r   )xor32r   ^=r   )jltr   <r   )xorr   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )mov32r   =r   )jler   <=r   )movr   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )arsh32r   s>>=r   )jsltr   s<r   )arshr   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )jsler   zs<=r   )endian32r   endianr   )r
   r   r   r   r   r   r   classmethodr   r   __classdictcell____classdict__s   @r   r+   r+   '   sV
    O\%8 \%$\%$\% %\%  	\%
 "\% "\% %\% *\% %\% %\% %\% \% $\% *\% )\%  &!\%" (#\%$ #%\%& "'\%( ()\%* (+\%, %-\%. /\%0 %1\%2 '3\%4 $5\%6 !7\%8 9\%: (;\%< (=\%> &?\%@ %A\%B &C\%D %E\%F &G\%H &I\%J /K\%L %M\%N #O\%P !Q\%R &S\%T &U\%V %W\%X %Y\%Z $[\%\ ']\%^ $_\%` a\%b  c\%d %e\%f "g\%h %i\%j %k\%l %m\%n +o\%p *q\%r  s\%t %u\%v +w\%x &y\%z %{\%| $}\%~ #\%@ A\%B %C\%D (E\%F G\%H -I\%J  K\%L &M\%N 'O\%P &Q\%R $S\%T *U\%V )W\%X %Y\%Z [\%\  ]\%^ #_\%` +a\%b 'c\%d )e\%f ,g\%h #i\%j #k\%l  m\%n #o\%p "q\%r #s\%t #u\%v "w\%x $y\%K|`@t= `@=`@=`@ =`@ =	`@
 =`@ =`@ =`@ =`@ =`@ =`@ =`@ =`@ =`@ =`@ =`@  =!`@" =#`@$ =%`@& ='`@( =)`@* =+`@, =-`@. =/`@0 =1`@2 =3`@4 =5`@6 =7`@8 =9`@: =;`@< ==`@> =?`@@ =A`@B =C`@D =E`@F =G`@H =I`@J =K`@L =M`@N =O`@P =Q`@R =S`@T =U`@V =W`@X =Y`@Z =[`@\ =]`@^ =_`@` =a`@b =c`@d =e`@f =g`@h =i`@j =k`@l =m`@n =o`@p =q`@r =s`@t =u`@v =w`@x =y`@z ={`@| =}`@~ =`@@ =A`@B =C`@D =E`@F =G`@H =I`@J =K`@L =M`@N =O`@P =Q`@R =S`@T =U`@V =W`@X =Y`@Z =[`@\ =]`@^ =_`@` =a`@b =c`@d =e`@f =g`@h =i`@j ============A`@GD G1 G1r   r+   c                 `    \         P                  WV4      w  r4R WP                  V3,          V3# )z%4d: (%02x) %s)r+   r   r   )r   w0r   r(   skips   &&&  r   disassemble_instructionr  3  s/    ##A2.KEq))U33T99r   c                    \         P                  ! \         P                  ! V 4      \         P                  ! \        4      4      p\        \        V 4      ^,          4      pV^ ,          p^ p. p\        ^V4       FN  pW,          pV'       d   V^,          pRV,          pM\        V^,
          W74      w  rVP                  V4       TpKP  	  \        V^,
          VR4      w  rVP                  V4       V# )r   z%4d:      (64-bit upper word)N)
r   castc_char_pPOINTERr&   intlenranger  append)	bpfstrptrnuminstrr  r  
instr_listr   r   	instr_strs	   &        r   disassemble_strr  7  s    
''"++f%rzz(';
<C3v;?#H	QBDJ1hVAID71=I5a!eRDOI)$   .hlBEOIi r   c                 f    R V ,          .pV\        V4      ,          p\        P                  ! V4      # )zDisassemble of BPF program %s:)r  r   join)	func_namer  r  s   && r   disassemble_progr  J  s-    2i@AJ/&))J<<
##r   c                   V  a  ] tR tRt o / ]P
                  Rb]P                  Rb]P                  Rb]P                  Rb]P                  Rb]P                  Rb]P                  Rb]P                  R	b]P                  R
b]P                  Rb]P                  Rb]P                   Rb]P"                  Rb]P$                  Rb]P&                  Rb]P(                  ^,          Rb]P*                  ^,          Rbt]R 4       t]RR l4       t]RR l4       t]R 4       t]RR l4       tRtV tR# )
MapDecoderiO  _Boolcharwchar_tzunsigned charshortzunsigned shortr  zunsigned intlongzunsigned longz	long longzunsigned long longfloatdoublezlong double__int128zunsigned __int128c                    \        V\        P                  4      '       d   R pV# \        V\        P                  4      '       d   RpV# \        V\        P                  4      '       dH   V P
                  VP                  ,          R,           \        VP                  4      ,           R,           pV# V P
                  V,          p V#   \         d    \        T4      p T# i ; i)structunion[r   )

issubclassr   	StructureUnionArray	ctype2str_type_str_length_r   )r   tfield_type_names   && r   get_ct_nameMapDecoder.get_ct_nameb  s    
	%!R\\**"*  Arxx((")  Arxx(("%--"9C"?#ajj/"QTW"W
  #&--"2   	%!!fO	%s#   "C "C 
A%C 1C C! C!Nc                H    V'       g   R # Ve   RWV3,          # RW3,          # ) z[%d,%d +%d bit]z	[%d +%d] r	   )r   r   sizeenabled	bitoffsets   &&&&&r   format_size_infoMapDecoder.format_size_infoq  s+     $4'@@@f^++r   c           
     n   . p VP                    EF  w  rg\        V\        P                  4      ;'       g    \        V\        P                  4      pV P                  V4      p	\        W4      P                  p
\        P                  ! V4      pV P                  W:,           W4      pV'       d]   VP                  V: V: V	: R 24       WPP                  VVR,           W:,           4      ,          pVP                  V: RV: R24       K  VP                  V: V: V	: RV: R24       EK  	  V#   \         d    ^ pTP                    F  p\        T4      ^8X  dF   Tw  rgpT P                  T4      p	T P                  Y=YO4      pTP                  RY,T	TT3,          4       MTw  rgT P                  T4      p	\        Y4      P                  p
\        P                  ! T4      p^ p^ pT P                  Y:,           Y4      pTP                  T: T: T	: RT: R24       Y:,          pY,          pK  	   T# i ; i)z {  z} ;r   z%s%s%s %s:%d;)r   r(  r   r)  r*  r2  getattrr   sizeofr9  r  print_ct_map
ValueErrorr  )r   r0  indentr   sizeinfo	map_lines
field_name
field_typeis_structuredr1  field_offset
field_sizesizedescoffset_bitsfield
field_bitss   &&&&&           r   r@  MapDecoder.print_ct_mapy  s!   	.	**+**&
!+J!E "B "B!+J!A "%//*"=&q5<<YYz2
//0E0:F $$68_%UV!1!1*284-282G"I II $$&*%EF$$VX5D5?&A B +5\ 9  	*Ku:?9>6JJ&)ooj&AO"33F4< JH$$_8G8B8B8D &D E .3*J&)ooj&AO#*1#9#@#@L!#:!6J!"J"#K"33F4I4> JH$$VX5D5?&A B *F)1 $2 9	*s   D*D0 0D H43H4c                D   \        V\        P                  4      ;'       g    \        V\        P                  4      pV P	                  V4      pV'       d?   R V,          .pW`P                  VRVR7      ,          pVP                  RV,          4       V# RV: RV: R2.pV# )z  %s {z    rC  z  } %s;r<  r   r=  )r(  r   r)  r*  r2  r@  r  )r   r0  rE  rC  rG  	type_namerD  s   &&&&   r   print_map_ctypeMapDecoder.print_map_ctype  s    #Ar||4 1 1#Arxx0 	OOA&	!Y/0I))!Vh)GGIY*56  
 (1*=>Ir   c                   R VVVP                   VP                  3,          .pWPP                  VP                  RVR7      ,          pWPP                  VP                  RVR7      ,          p\
        P                  ! V4      # )z-Layout of BPF map %s (type %s, FD %d, ID %d):keyrP  value)map_fdmap_idrR  KeyLeafr   r  )r   map_namemap_objmap_typerC  rD  s   &&&&& r   
decode_mapMapDecoder.decode_map  sz    DHPHOHOHX X Y	 	((eh(OO	((w(RR	||I&&r   r	   )FN)r5  r   FF)r
   r   r   r   r   c_boolc_charc_wcharc_ubytec_shortc_ushortc_intc_uintc_longc_ulong
c_longlongc_ulonglongc_floatc_doublec_longdoublec_int64r)   r,  r   r2  r9  r@  rR  r^  r   r  r  s   @r   r  r  O  s    9H 9G9Z9 -9 X	9
 /9 69 O9 G9 -9 9 !69 X9 i9 .9 a9  q"6!9I$   , , 1 1f 
 
 ' 'r   r  c                 F    \        V4      p\        P                  WWCR 7      # )rP  )r   r  r^  )r[  r\  r]  rC  map_type_names   &&&& r   r^  r^    s"    '1M  M UUr   )Nr`  )osr   ctypesr   tabler   r*  r   r   r)  r   r&   r+   r  r  r  r  r^  r	   r   r   <module>rv     s      &B"(( B<rxx <!R\\ !?rxx ?
J1 J1X:&$
s' s'jVr   