(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: [-1 23]
        )
      ]
      spids: [-1 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: [-1 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: [-1 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:[423426])}
                  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') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>))} {(DQ ($ VSub_Name '$expr'))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [432 443]
                      )
                    }
                  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: [460 469]
                                    )
                                  )
                                }
                              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: [487 494]
                              )
                            }
                          spids: [486]
                        )
                      ]
                      spids: [484]
                    )
                  ]
                  spids: [-1 481]
                )
              ]
              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: [503 517]
                          )
                        }
                      spids: [502]
                    )
                  ]
                  spids: [500]
                )
                (C 
                  {(cache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Comma ',') 
                    ($ VSub_Name '$address') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$code')
                  }
                )
              ]
              spids: [497 530]
            )
            (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: [-1 561]
                )
              ]
              spids: [-1 567]
            )
            (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: [576 584]
                      )
                    }
                  spids: [575]
                )
              ]
              spids: [575]
            )
            (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: [593 604]
                      )
                    }
                  spids: [592]
                )
              ]
              spids: [592]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:symbol)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$name') (' (') ($ VSub_Name '$code') (')'))}
                  spids: [612]
                )
              ]
              spids: [612]
            )
          ]
          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: [637 642]
                                    )
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [633 644]
                      )
                    }
                  spids: [632]
                )
              ]
              spids: [630]
            )
            (Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                (C {($ VSub_Name '$scripts') (/decodecode)})
              ]
              negated: False
            )
          ]
          spids: [627]
        )
      spids: [623 626]
    )
    (FuncDef
      name: handle_line
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:words) op:Equal spids:[671])]
              spids: [669]
            )
            (SimpleCommand
              words: [{(read)} {(-a)} {(words)}]
              redirects: [
                (Redir
                  op_id: Redir_TLess
                  fd: -1
                  arg_word: {(DQ ($ VSub_Number '$1'))}
                  spids: [685]
                )
              ]
            )
            (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: [714 720]
                                    )
                                  }
                              )
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [712 727]
                      )
                    }
                  spids: [711]
                )
              ]
              spids: [709]
            )
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name words>
                      prefix_op: VSub_Bang
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [738 744]
                    )
                  )
                }
              ]
              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: [759 764]
                                          )
                                        }
                                      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: [-1 783]
                        )
                      ]
                      spids: [-1 794]
                    )
                    (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: [806 811]
                                              )
                                            }
                                          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: [819 826]
                                              )
                                            }
                                          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') 
                                              (EscapedLiteralPart
                                                token: <Lit_EscapedChar '\\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: [863 870]
                                              )
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [854 872]
                                )
                              }
                            )
                          ]
                          spids: [-1 836]
                        )
                      ]
                      spids: [-1 875]
                    )
                  ]
                  spids: [748 878]
                )
              spids: [736 746]
            )
            (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: [886 891]
                                  )
                                }
                              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: [912 917]
                              )
                            }
                          spids: [911]
                        )
                      ]
                      spids: [911]
                    )
                    (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: [921 925]
                              )
                            }
                          spids: [920]
                        )
                      ]
                      spids: [920]
                    )
                    (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: [929 933]
                              )
                            }
                          spids: [928]
                        )
                      ]
                      spids: [928]
                    )
                    (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: [937 944]
                              )
                            }
                          spids: [936]
                        )
                      ]
                      spids: [936]
                    )
                    (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$last') (-1) (Lit_Other ']')})
                  ]
                  spids: [-1 908]
                )
              ]
              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: [964 969]
                          )
                        }
                      spids: [963]
                    )
                  ]
                  spids: [963]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:module) op:Equal rhs:{(SQ )} spids:[972])]
                  spids: [972]
                )
              ]
              spids: [956 975]
            )
            (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: [1001 1006]
                  )
                )
              } {(DQ ($ VSub_Name '$symbol') (' ') ($ VSub_Name '$module'))}
            )
          ]
          spids: [666]
        )
      spids: [662 665]
    )
    (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: [-1 1055]
                )
                (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: [1073 1089]
                )
              ]
              else_action: [(C {(echo)} {(DQ ($ VSub_Name '$line'))})]
              spids: [1099 1113]
            )
          ]
          spids: [1025 1115]
        )
    )
  ]
)