(CommandList
  children: [
    (FuncDef
      name: check
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Pipeline
                      children: [
                        (C {(grep)} {(-q)} {(DQ ($ VSub_Number '$2'))} {(DQ ($ VSub_Number '$1'))})
                      ]
                      negated: T
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Did not find expected segment in ') ($ VSub_Number '$1') (':'))})
                    (C {(echo)} {(DQ ('   ') ($ VSub_Number '$2'))})
                    (C {(echo)} {(DQ )})
                    (C {(echo)} {(DQ ('Actual output below:'))})
                    (C {(cat)} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 92]
                )
              ]
              spids: [16777215 137]
            )
          ]
          spids: [72]
        )
      spids: [68 71]
    )
    (FuncDef
      name: check_count
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(grep)} {(-c)} {(DQ ($ VSub_Number '$2'))} 
                                    {(DQ ($ VSub_Number '$1'))}
                                  )
                                ]
                              )
                            left_token: <Left_Backtick '`'>
                            spids: [154 166]
                          )
                        )
                      } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$3'))}
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Did not find expected segment in ') ($ VSub_Number '$1') (':'))})
                    (C {(echo)} {(DQ ('   ') ($ VSub_Number '$2'))})
                    (C {(echo)} {(DQ )})
                    (C {(echo)} {(DQ ('Actual output below:'))})
                    (C {(cat)} {(DQ ($ VSub_Number '$1'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 177]
                )
              ]
              spids: [16777215 222]
            )
          ]
          spids: [146]
        )
      spids: [142 145]
    )
    (C {(check_count)} {(script_test_3.stdout)} {(DQ ('^  INTERP'))} {(1)})
    (C {(check_count)} {(script_test_3.stdout)} {(DQ ('^  LOAD'))} {(3)})
    (C {(check_count)} {(script_test_3.stdout)} {(DQ ('^  DYNAMIC'))} {(1)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:section)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(fgrep)} {(.interp)} {(script_test_3.stdout)})
                          (C {(grep)} {(PROGBITS)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [265 277]
              )
            }
          spids: [264]
        )
      ]
      spids: [264]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(DQ ($ VSub_Name '$section'))} {(Lit_Other '=')} {(DQ )})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Did not find .interp section'))})
            (C {(echo)} {(DQ )})
            (C {(echo)} {(DQ ('Actual output below:'))})
            (C {(cat)} {(script_test_3.stdout)})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 293]
        )
      ]
      spids: [16777215 325]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:section)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name '$section'))})
                          (C {(sed)} {(-e)} {(SQ <'s/[][]*//g'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [334 350]
              )
            }
          spids: [333]
        )
      ]
      spids: [333]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:section_size)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name '$section'))})
                          (C {(awk)} {(SQ <'{ print $6; }'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [353 367]
              )
            }
          spids: [352]
        )
      ]
      spids: [352]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:segment)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(grep)} {(SQ <'^  INTERP'>)} {(script_test_3.stdout)})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [371 379]
              )
            }
          spids: [370]
        )
      ]
      spids: [370]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:segment_size)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name '$segment'))})
                          (C {(awk)} {(SQ <'{ print $5; }'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [385 399]
              )
            }
          spids: [384]
        )
      ]
      spids: [384]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:section_size)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name '$section_size'))})
                          (C {(sed)} {(-e)} {(SQ <'s/^0*//'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [409 425]
              )
            }
          spids: [408]
        )
      ]
      spids: [408]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:segment_size)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name '$segment_size'))})
                          (C {(sed)} {(-e)} {(SQ <'s/^0x//'>)} {(-e)} {(SQ <'s/^0*//'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [428 450]
              )
            }
          spids: [427]
        )
      ]
      spids: [427]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} {(DQ ($ VSub_Name '$section_size'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ ($ VSub_Name '$segment_size'))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('.interp size ') ($ VSub_Name '$section_size') (' != PT_INTERP size ') 
                  ($ VSub_Name '$segment_size')
                )
              }
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 469]
        )
      ]
      spids: [16777215 486]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:found) op:Equal rhs:{(no)} spids:[492])]
      spids: [492]
    )
    (ForEach
      iter_name: a
      iter_words: [
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Pipeline
                    children: [
                      (C {(grep)} {(LOAD)} {(script_test_3.stdout)})
                      (C {(sed)} {(-e)} {(SQ <'s/^.* 0x/0x/'>)})
                    ]
                    negated: F
                  )
                ]
              )
            left_token: <Left_Backtick '`'>
            spids: [501 517]
          )
        }
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:script)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('BEGIN { if (') ($ VSub_Name '$a') (' >= 0x100000) { print ') 
                        (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (true) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' } else { print ') 
                        (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (false) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' } }')
                      )
                    }
                  spids: [523]
                )
              ]
              spids: [523]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:x)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [{(awk)} {(DQ ($ VSub_Name '$script'))}]
                                redirects: [
                                  (Redir
                                    op_id: Redir_Less
                                    fd: 16777215
                                    arg_word: {(/dev/null)}
                                    spids: [547]
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [540 550]
                      )
                    }
                  spids: [539]
                )
              ]
              spids: [539]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(DQ ($ VSub_Name '$x'))} {(Lit_Other '=')} {(DQ (true))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:found) op:Equal rhs:{(yes)} spids:[571])]
                      spids: [571]
                    )
                  ]
                  spids: [16777215 568]
                )
              ]
              spids: [16777215 575]
            )
          ]
          spids: [520 577]
        )
      spids: [500 518]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(DQ ($ VSub_Name '$found'))} {(Lit_Other '=')} {(DQ (no))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('no LOAD segment has required alignment'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 594]
        )
      ]
      spids: [16777215 608]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)