(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]
        )
    )
  ]
)