(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:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (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: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 235
          stdin_parts: [
            ('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')
          ]
        )
      ]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)