(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:n_args) op:Equal rhs:{(10000)} spids:[59])]
      spids: [59]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {('#include <stdio.h>\n') ('#include <mcheck.h>\n') ('\n') ('/*\n') 
              ('  Compile do_test without optimization: GCC 4.9/5.0/6.0 takes a long time\n') ('  to build this source. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67396  */\n') ('\n') 
              ('__attribute__ ((optimize ("-O0")))\n') ('int do_test (void)\n') ('{\n') ('    mtrace ();\n') ('    printf (\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [65]
        )
      ]
    )
    (ForExpr
      init: (BinaryAssign op_id:Arith_Equal left:(LhsName name:j) right:(ArithWord w:{(Lit_Digits 0)}))
      cond: 
        (ArithBinary
          op_id: Arith_Less
          left: (ArithVarRef name:j)
          right: 
            (ArithBinary
              op_id: Arith_Slash
              left: (ArithWord w:{($ VSub_Name '$n_args')})
              right: (ArithWord w:{(Lit_Digits 10)})
            )
        )
      update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:j))
      body: 
        (DoGroup
          children: [
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:k)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:k)
                  right: (ArithWord w:{(Lit_Digits 10)})
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:k))
              body: 
                (DoGroup
                  children: [
                    (C {(printf)} {(SQ <'"%%%d$s" '>)} 
                      {
                        (ArithSubPart
                          anode: 
                            (ArithBinary
                              op_id: Arith_Plus
                              left: 
                                (ArithBinary
                                  op_id: Arith_Plus
                                  left: 
                                    (ArithBinary
                                      op_id: Arith_Star
                                      left: (ArithWord w:{(Lit_Digits 10)})
                                      right: (ArithWord w:{($ VSub_Name '$j')})
                                    )
                                  right: (ArithWord w:{($ VSub_Name '$k')})
                                )
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                          spids: [133 148]
                        )
                      }
                    )
                  ]
                  spids: [124 151]
                )
            )
            (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>))})
          ]
          spids: [98 160]
        )
    )
    (C {(printf)} {(SQ <'"%%%d$s",\\n'>)} 
      {
        (ArithSubPart
          anode: 
            (ArithBinary
              op_id: Arith_Plus
              left: (ArithWord w:{($ VSub_Name '$n_args')})
              right: (ArithWord w:{(Lit_Digits 1)})
            )
          spids: [169 176]
        )
      }
    )
    (ForExpr
      init: (BinaryAssign op_id:Arith_Equal left:(LhsName name:j) right:(ArithWord w:{(Lit_Digits 0)}))
      cond: 
        (ArithBinary
          op_id: Arith_Less
          left: (ArithVarRef name:j)
          right: 
            (ArithBinary
              op_id: Arith_Slash
              left: (ArithWord w:{($ VSub_Name '$n_args')})
              right: (ArithWord w:{(Lit_Digits 10)})
            )
        )
      update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:j))
      body: 
        (DoGroup
          children: [
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:k)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:k)
                  right: (ArithWord w:{(Lit_Digits 10)})
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:k))
              body: (DoGroup children:[(C {(printf)} {(SQ <'"a", '>)})] spids:[232242])
            )
            (C {(printf)} {(DQ ('  /* %4d */') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>))} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: 
                        (ArithBinary
                          op_id: Arith_Star
                          left: (ArithWord w:{(Lit_Digits 10)})
                          right: (ArithWord w:{($ VSub_Name '$j')})
                        )
                      right: (ArithWord w:{($ VSub_Name '$k')})
                    )
                  spids: [252 263]
                )
              }
            )
          ]
          spids: [206 265]
        )
    )
    (C {(printf)} {(SQ <'"\\\\n");'>)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {('\n') ('  return 0;\n') ('}\n') ('\n') ('#define TEST_FUNCTION do_test ()\n') 
              ('#include "../test-skeleton.c"\n') ('\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [278]
        )
      ]
    )
  ]
)