(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:Redir_Less left:{($ VSub_Pound '$#')} right:{(2)}) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Usage:'))}) (C {(echo)} {(DQ ('\t') ($ VSub_Number '$0') (' [vmlinux] [base path] [modules path]'))}) (C {(exit)} {(1)}) ] spids: [16777215 23] ) ] spids: [16777215 46] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:vmlinux) op:Equal rhs:{($ VSub_Number '$1')} spids:[49])] spids: [49] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:basepath) op: Equal rhs: {($ VSub_Number '$2')} spids: [52] ) ] spids: [52] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:modpath) op:Equal rhs:{($ VSub_Number '$3')} spids:[55])] spids: [55] ) (Assignment keyword: Assign_Declare flags: [-A] pairs: [(assign_pair lhs:(LhsName name:cache) op:Equal spids:[62])] spids: [58] ) (Assignment keyword: Assign_Declare flags: [-A] pairs: [(assign_pair lhs:(LhsName name:modcache) op:Equal spids:[68])] spids: [64] ) (FuncDef name: parse_symbol body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$module')} right:{(DQ )}) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: {($ VSub_Name '$vmlinux')} spids: [119] ) ] spids: [117] ) ] spids: [16777215 114] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name modcache> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$module')}) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [128 135] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: { (BracedVarSub token: <VSub_Name modcache> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$module')})) spids: [153 158] ) } spids: [152] ) ] spids: [150] ) ] spids: [123 147] ) ] else_action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$modpath')} right:{(DQ )}) ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(find)} {(DQ ($ VSub_Name '$modpath'))} {(-name)} {($ VSub_Name '$module') (.ko)} {(-print)} {(-quit)} ) ] ) left_token: <Left_CommandSub '$('> spids: [183 198] ) } spids: [182] ) ] spids: [180] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$objfile')} right:{(DQ )}) ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (C {(modcache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$objfile') } ) ] spids: [161 225] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} ) spids: [234 238] ) } spids: [233] ) ] spids: [233] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} ) spids: [242 246] ) } spids: [241] ) ] spids: [241] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{('+*')}) spids: [257 261] ) } spids: [256] ) ] spids: [254] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$name')}) ) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [282 291] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:base_addr) op: Equal rhs: { (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$name')}) ) ) spids: [309 316] ) } spids: [308] ) ] spids: [306] ) ] spids: [16777215 303] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:base_addr) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(nm)} {(DQ ($ VSub_Name '$objfile'))}) (C {(grep)} {(-i)} {(SQ <' t '>)}) (C {(awk)} { (DQ ('/ ') ($ VSub_Name '$name') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('/ {print ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('1}') ) } ) (C {(head)} {(-n1)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [325 360] ) } spids: [324] ) ] spids: [322] ) (C {(cache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Comma ',') ($ VSub_Name '$name') (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$base_addr')) } ) ] spids: [319 375] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [389 394] ) } spids: [388] ) ] spids: [386] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: { (BracedVarSub token: <VSub_Name expr> suffix_op: (PatSub pat: {($ VSub_Name '$name')} replace: {(0x) ($ VSub_Name '$base_addr')} do_all: False do_prefix: False do_suffix: False ) spids: [407 414] ) } spids: [406] ) ] spids: [406] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: {(ArithSubPart anode:(ArithVarRef name:expr) spids:[423 426])} spids: [422] ) ] spids: [422] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:address) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%x') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$expr'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [432 444] ) } spids: [431] ) ] spids: [429] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$address')}) ) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [461 470] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$address')}) ) ) spids: [488 495] ) } spids: [487] ) ] spids: [485] ) ] spids: [16777215 482] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(addr2line)} {(-i)} {(-e)} {(DQ ($ VSub_Name '$objfile'))} {(DQ ($ VSub_Name '$address'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [504 518] ) } spids: [503] ) ] spids: [501] ) (C {(cache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Comma ',') ($ VSub_Name '$address') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$code') } ) ] spids: [498 531] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$code')} right: {(DQ ('??:0'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [16777215 562] ) ] spids: [16777215 568] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name code> suffix_op: (PatSub pat: {($ VSub_Name '$basepath')} replace: {(DQ )} do_all: True do_prefix: False do_suffix: False ) spids: [577 585] ) } spids: [576] ) ] spids: [576] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name code> suffix_op: (PatSub pat: {(SQ <Lit_EscapedChar '\\n'>)} replace: {(SQ <' '>)} do_all: True do_prefix: False do_suffix: False ) spids: [594 605] ) } spids: [593] ) ] spids: [593] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: {(DQ ($ VSub_Name '$name') (' (') ($ VSub_Name '$code') (')'))} spids: [613] ) ] spids: [613] ) ] spids: [75] ) spids: [71 74] ) (FuncDef name: decode_code body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:scripts) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(dirname)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [638 643] ) ) } ) ] ) left_token: <Left_Backtick '`'> spids: [634 645] ) } spids: [633] ) ] spids: [631] ) (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {($ VSub_Name '$scripts') (/decodecode)}) ] negated: False ) ] spids: [628] ) spids: [624 627] ) (FuncDef name: handle_line body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:words) op:Equal spids:[672])] spids: [670] ) (SimpleCommand words: [{(read)} {(-a)} {(words)}] redirects: [ (Redir op_id: Redir_TLess fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [686] ) ] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:last) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [715 721] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [713 728] ) } spids: [712] ) ] spids: [710] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [739 745] ) ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [760 765] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) (EscapedLiteralPart token: <Lit_EscapedChar '\\<'> ) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\>'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\]'>) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']')}) ] spids: [16777215 784] ) ] spids: [16777215 795] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [807 812] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>)} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [820 827] ) } right: {(Lit_Other '*') (EscapedLiteralPart token: <Lit_EscapedChar '\\]'> ) } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']')}) (C {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other '+') (1) (Lit_Other ']') (Lit_Other '=') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('[%13s') (Lit_Other '\\') (n))} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [865 872] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [855 874] ) } ) ] spids: [16777215 837] ) ] spids: [16777215 877] ) ] spids: [749 880] ) spids: [737 747] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [888 893] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\]'> ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [914 919] ) } spids: [913] ) ] spids: [913] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name module> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>)} ) spids: [923 927] ) } spids: [922] ) ] spids: [922] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name module> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\]'>)} ) spids: [931 935] ) } spids: [930] ) ] spids: [930] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$last')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [939 946] ) } spids: [938] ) ] spids: [938] ) (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$last') (-1) (Lit_Other ']')}) ] spids: [16777215 910] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [966 971] ) } spids: [965] ) ] spids: [965] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:module) op:Equal rhs:{(SQ )} spids:[974])] spids: [974] ) ] spids: [958 977] ) (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$last') (Lit_Other ']')}) (C {(parse_symbol)}) (C {(echo)} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [1003 1008] ) ) } {(DQ ($ VSub_Name '$symbol') (' ') ($ VSub_Name '$module'))} ) ] spids: [667] ) spids: [663 666] ) (While cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name '$line')} right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) (EscapedLiteralPart token: <Lit_EscapedChar '\\<'> ) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\>'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\]'>) } ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(handle_line)} {(DQ ($ VSub_Name '$line'))})] spids: [16777215 1057] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$line')} right: {(Lit_Other '*') (Code) (Lit_Other ':') (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(decode_code)} {(DQ ($ VSub_Name '$line'))})] spids: [1075 1091] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$line'))})] spids: [1101 1115] ) ] spids: [1027 1117] ) ) ] )