(FuncDef
  name: nicenumber
  body: 
    (BraceGroup
      children: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:integer)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (Pipeline
                            children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d.)} {(-f1)})]
                            negated: F
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [37 49]
                  )
                }
              spids: [36]
            )
          ]
          spids: [36]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:decimal)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (Pipeline
                            children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d.)} {(-f2)})]
                            negated: F
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [56 68]
                  )
                }
              spids: [55]
            )
          ]
          spids: [55]
        )
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$decimal'))} {(KW_Bang '!') (Lit_Other '=')} 
                      {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:result)
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name DD>
                              suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(" '.'")})
                              spids: [106 110]
                            ) ($ VSub_Name '$decimal')
                          )
                        }
                      spids: [104]
                    )
                  ]
                  spids: [104]
                )
              ]
              spids: [16777215 97]
            )
          ]
          spids: [16777215 115]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:thousands)
              op: Equal
              rhs: {($ VSub_Name '$integer')}
              spids: [119]
            )
          ]
          spids: [119]
        )
        (WhileUntil
          keyword: <KW_While while>
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {($ VSub_Name '$thousands')} {(-gt)} {(999)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          body: 
            (DoGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:remainder)
                      op: Equal
                      rhs: 
                        {
                          (ArithSubPart
                            anode: 
                              (ArithBinary
                                op_id: Arith_Percent
                                left: (ArithWord w:{($ VSub_Name '$thousands')})
                                right: (ArithWord w:{(Lit_Digits 1000)})
                              )
                            spids: [141 148]
                          )
                        }
                      spids: [140]
                    )
                  ]
                  spids: [140]
                )
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (BracedVarSub
                              token: <VSub_Name remainder>
                              prefix_op: VSub_Pound
                              spids: [164 167]
                            )
                          } {(-lt)} {(3)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:remainder)
                              op: Equal
                              rhs: {(DQ (0) ($ VSub_Name '$remainder'))}
                              spids: [183]
                            )
                          ]
                          spids: [183]
                        )
                      ]
                      spids: [177 190]
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:result)
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name TD>
                              suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (','))})
                              spids: [196 202]
                            ) (${ VSub_Name remainder) (${ VSub_Name result)
                          )
                        }
                      spids: [194]
                    )
                  ]
                  spids: [194]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:thousands)
                      op: Equal
                      rhs: 
                        {
                          (ArithSubPart
                            anode: 
                              (ArithBinary
                                op_id: Arith_Slash
                                left: (ArithWord w:{($ VSub_Name '$thousands')})
                                right: (ArithWord w:{(Lit_Digits 1000)})
                              )
                            spids: [216 223]
                          )
                        }
                      spids: [215]
                    )
                  ]
                  spids: [215]
                )
              ]
              spids: [137 229]
            )
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:nicenum)
              op: Equal
              rhs: {(DQ (${ VSub_Name thousands) (${ VSub_Name result))}
              spids: [233]
            )
          ]
          spids: [233]
        )
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Number '$2')} {(Lit_Other ']')})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [(C {(echo)} {($ VSub_Name '$nicenum')})]
              spids: [16777215 258]
            )
          ]
          spids: [16777215 266]
        )
      ]
      spids: [20]
    )
  spids: [16 19]
)