(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:data)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [87]
        )
      ]
    )
    (C {(shift)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cxx)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:93)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(echo)} {($ Id.VSub_Star '$*')})
                          (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:s/-fgnu89-inline// span_id:103))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [92]
        )
      ]
    )
    (command.Pipeline
      children: [
        (command.WhileUntil
          keyword: (Token id:Id.KW_While val:while span_id:107)
          cond: [
            (command.Sentence
              child: (C {(read)} {(t)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:112)
            )
          ]
          body: 
            (command.DoGroup
              children: [
                (C {(echo)} {(-n)} {(DQ ($ Id.VSub_DollarName '$t') (':'))})
                (command.Pipeline
                  children: [
                    (C {($ Id.VSub_DollarName '$cxx')} {(-S)} 
                      {(-xc) (Id.Lit_Other '+') (Id.Lit_Other '+')} {(-o)} {(-)} {(-D_GNU_SOURCE)} 
                      {
                        (command_sub
                          left_token: (Token id:Id.Left_ProcSubIn val:'<(' span_id:141)
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Simple
                                  words: [{(cat)}]
                                  redirects: [
                                    (redir.HereDoc
                                      op: (Token id:Id.Redir_DLess val:'<<' span_id:144)
                                      fd: -1
                                      here_begin: {(EOF)}
                                      here_end_span_id: 155
                                      stdin_parts: [
                                        ('#include <sys/types.h>\n')
                                        ('#include <sys/stat.h>\n')
                                        ('#include <sys/resource.h>\n')
                                        ('#include <unistd.h>\n')
                                        ('void foo (')
                                        ($ Id.VSub_DollarName '$t')
                                        (') { }\n')
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                      }
                    )
                    (C {(sed)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
's/[[:space:]]*[.]globa\\?l[[:space:]]*_Z3foo\\([_[:alnum:]]*\\).*/\\1/p;d'
                            span_id: 164
                          )
                        )
                      }
                    )
                  ]
                  negated: F
                )
              ]
            )
          redirects: [
            (redir.HereDoc
              op: (Token id:Id.Redir_DLess val:'<<' span_id:169)
              fd: -1
              here_begin: {(EOF)}
              here_end_span_id: 242
              stdin_parts: [
                ('blkcnt64_t\n')
                ('blkcnt_t\n')
                ('blksize_t\n')
                ('caddr_t\n')
                ('clockid_t\n')
                ('clock_t\n')
                ('daddr_t\n')
                ('dev_t\n')
                ('fd_mask\n')
                ('fsblkcnt64_t\n')
                ('fsblkcnt_t\n')
                ('fsfilcnt64_t\n')
                ('fsfilcnt_t\n')
                ('fsid_t\n')
                ('gid_t\n')
                ('id_t\n')
                ('ino64_t\n')
                ('ino_t\n')
                ('int16_t\n')
                ('int32_t\n')
                ('int64_t\n')
                ('int8_t\n')
                ('intptr_t\n')
                ('key_t\n')
                ('loff_t\n')
                ('mode_t\n')
                ('nlink_t\n')
                ('off64_t\n')
                ('off_t\n')
                ('pid_t\n')
                ('pthread_attr_t\n')
                ('pthread_barrier_t\n')
                ('pthread_barrierattr_t\n')
                ('pthread_cond_t\n')
                ('pthread_condattr_t\n')
                ('pthread_key_t\n')
                ('pthread_mutex_t\n')
                ('pthread_mutexattr_t\n')
                ('pthread_once_t\n')
                ('pthread_rwlock_t\n')
                ('pthread_rwlockattr_t\n')
                ('pthread_spinlock_t\n')
                ('pthread_t\n')
                ('quad_t\n')
                ('register_t\n')
                ('rlim64_t\n')
                ('rlim_t\n')
                ('sigset_t\n')
                ('size_t\n')
                ('socklen_t\n')
                ('ssize_t\n')
                ('suseconds_t\n')
                ('time_t\n')
                ('u_char\n')
                ('uid_t\n')
                ('uint\n')
                ('u_int\n')
                ('u_int16_t\n')
                ('u_int32_t\n')
                ('u_int64_t\n')
                ('u_int8_t\n')
                ('ulong\n')
                ('u_long\n')
                ('u_quad_t\n')
                ('useconds_t\n')
                ('ushort\n')
                ('u_short\n')
              ]
            )
          ]
        )
        (C {(diff)} {(-N)} {(-U0)} {($ Id.VSub_DollarName '$data')} {(-)})
      ]
      negated: F
    )
  ]
)