(CommandList
  children: [
    (C {(.)} {(../1/library.sh)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(3)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ('Usage: ') ($ VSub_Number '$0') (' principal interest loan-duration-years'))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[56])]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 45]
        )
      ]
      spids: [16777215 64]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair lhs:(LhsName name:P) op:Equal rhs:{($ VSub_Number '$1')} spids:[67])
        (assign_pair lhs:(LhsName name:I) op:Equal rhs:{($ VSub_Number '$2')} spids:[70])
        (assign_pair lhs:(LhsName name:L) op:Equal rhs:{($ VSub_Number '$3')} spids:[73])
      ]
      spids: [67]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:J)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(scriptbc)} {(-p)} {(8)} {($ VSub_Name '$I')} {(/)} 
                          {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(12)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>)} {(100)} 
                          {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [78 99]
                )
              )
            }
          spids: [76]
        )
      ]
      spids: [76]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:N)
          op: Equal
          rhs: 
            {
              (DQ 
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Star
                      left: (ArithWord w:{($ VSub_Name '$L')})
                      right: (ArithWord w:{(Lit_Digits 12)})
                    )
                  spids: [104 113]
                )
              )
            }
          spids: [102]
        )
      ]
      spids: [102]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:M)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(scriptbc)} {(-p)} {(8)} {($ VSub_Name '$P')} 
                          {(EscapedLiteralPart token:<Lit_EscapedChar '\\*'>)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {($ VSub_Name '$J')} {(/)} 
                          {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>) (1)} {(-)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>) (1)} {(Lit_Other '+')} 
                          {($ VSub_Name '$J') (EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\^'>)} 
                          {(-) ($ VSub_Name '$N') (EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [118 156]
                )
              )
            }
          spids: [116]
        )
      ]
      spids: [116]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:dollars)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [(C {(echo)} {($ VSub_Name '$M')}) (C {(cut)} {(-d.)} {(-f1)})]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [166 178]
                )
              )
            }
          spids: [164]
        )
      ]
      spids: [164]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cents)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Name '$M')})
                            (C {(cut)} {(-d.)} {(-f2)})
                            (C {(cut)} {(-c1-2)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [183 201]
                )
              )
            }
          spids: [181]
        )
      ]
      spids: [181]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('A ') ($ VSub_Name '$L') ('-year loan at ') ($ VSub_Name '$I') 
                ('% interest with a principal amount of ') 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(nicenumber)} {($ VSub_Name '$P')} {(1)})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [216 223]
                ) (' \n') ('results in a payment of ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                ($ VSub_Name '$dollars') (.) ($ VSub_Name '$cents') (' each month for the duration of\n') ('the loan (') ($ VSub_Name '$N') 
                (' payments).\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [207]
        )
      ]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)