(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:MODULE_NAME) op:Equal rhs:{(udelay_test)} spids:[53])]
      spids: [53]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:UDELAY_PATH)
          op: Equal
          rhs: {(/sys/kernel/debug/udelay_test)}
          spids: [56]
        )
      ]
      spids: [56]
    )
    (FuncDef
      name: setup
      body: 
        (BraceGroup
          children: [
            (C {(/sbin/modprobe)} {(-q)} {($ VSub_Name '$MODULE_NAME')})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tmp_file)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(mktemp)})])
                        left_token: <Left_Backtick '`'>
                        spids: [75 77]
                      )
                    }
                  spids: [74]
                )
              ]
              spids: [74]
            )
          ]
          spids: [64]
        )
      spids: [60 63]
    )
    (FuncDef
      name: test_one
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:delay)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [89]
                )
              ]
              spids: [89]
            )
            (SimpleCommand
              words: [{(echo)} {($ VSub_Name '$delay')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$UDELAY_PATH')}
                  spids: [97]
                )
              ]
            )
            (SimpleCommand
              words: [{(tee)} {(-a)} {($ VSub_Name '$tmp_file')}]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: 16777215
                  arg_word: {($ VSub_Name '$UDELAY_PATH')}
                  spids: [108]
                )
              ]
            )
          ]
          spids: [86]
        )
      spids: [82 85]
    )
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {($ VSub_Name '$tmp_file')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {($ VSub_Name '$tmp_file')})]
                  spids: [16777215 133]
                )
              ]
              spids: [16777215 141]
            )
            (C {(/sbin/modprobe)} {(-q)} {(-r)} {($ VSub_Name '$MODULE_NAME')})
          ]
          spids: [119]
        )
      spids: [115 118]
    )
    (C {(trap)} {(cleanup)} {(EXIT)})
    (C {(setup)})
    (ForExpr
      init: 
        (BinaryAssign
          op_id: Arith_Equal
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 1)})
        )
      cond: 
        (ArithBinary
          op_id: Arith_Less
          left: (ArithVarRef name:delay)
          right: (ArithWord w:{(Lit_Digits 200)})
        )
      update: 
        (BinaryAssign
          op_id: Arith_PlusEqual
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 1)})
        )
      body: (DoGroup children:[(C {(test_one)} {($ VSub_Name '$delay')})] spids:[198 205])
    )
    (ForExpr
      init: 
        (BinaryAssign
          op_id: Arith_Equal
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 200)})
        )
      cond: 
        (ArithBinary
          op_id: Arith_Less
          left: (ArithVarRef name:delay)
          right: (ArithWord w:{(Lit_Digits 500)})
        )
      update: 
        (BinaryAssign
          op_id: Arith_PlusEqual
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 10)})
        )
      body: (DoGroup children:[(C {(test_one)} {($ VSub_Name '$delay')})] spids:[235 242])
    )
    (ForExpr
      init: 
        (BinaryAssign
          op_id: Arith_Equal
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 500)})
        )
      cond: 
        (ArithBinary
          op_id: Arith_LessEqual
          left: (ArithVarRef name:delay)
          right: (ArithWord w:{(Lit_Digits 2000)})
        )
      update: 
        (BinaryAssign
          op_id: Arith_PlusEqual
          left: (LhsName name:delay)
          right: (ArithWord w:{(Lit_Digits 100)})
        )
      body: (DoGroup children:[(C {(test_one)} {($ VSub_Name '$delay')})] spids:[272 279])
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:count)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(grep)} {(-c)} {(FAIL)} {($ VSub_Name '$tmp_file')})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [286 294]
              )
            }
          spids: [285]
        )
      ]
      spids: [285]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(DQ (0))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('ERROR: ') ($ VSub_Name '$count') (' delays failed to delay long enough'))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:retcode) op:Equal rhs:{(1)} spids:[323])]
              spids: [323]
            )
          ]
          spids: [16777215 311]
        )
      ]
      spids: [16777215 326]
    )
    (C {(exit)} {($ VSub_Name '$retcode')})
  ]
)