(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compat)
          op: assign_op.Equal
          rhs: {<COMPAT_43>}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compat4)
          op: assign_op.Equal
          rhs: {<COMPAT_FREEBSD4>}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compat6)
          op: assign_op.Equal
          rhs: {<COMPAT_FREEBSD6>}
          spids: [24]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compat7)
          op: assign_op.Equal
          rhs: {<COMPAT_FREEBSD7>}
          spids: [27]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compat10)
          op: assign_op.Equal
          rhs: {<COMPAT_FREEBSD10>}
          spids: [30]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysnames)
          op: assign_op.Equal
          rhs: {(DQ <syscalls.c>)}
          spids: [37]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysproto)
          op: assign_op.Equal
          rhs: {(DQ <'../sys/sysproto.h'>)}
          spids: [42]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysproto_h)
          op: assign_op.Equal
          rhs: {<_SYS_SYSPROTO_H_>}
          spids: [47]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syshdr)
          op: assign_op.Equal
          rhs: {(DQ <'../sys/syscall.h'>)}
          spids: [50]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysmk)
          op: assign_op.Equal
          rhs: {(DQ <'../sys/syscall.mk'>)}
          spids: [55]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syssw)
          op: assign_op.Equal
          rhs: {(DQ <init_sysent.c>)}
          spids: [60]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscallprefix)
          op: assign_op.Equal
          rhs: {(DQ <SYS_>)}
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:switchname)
          op: assign_op.Equal
          rhs: {(DQ <sysent>)}
          spids: [70]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:namesname)
          op: assign_op.Equal
          rhs: {(DQ <syscallnames>)}
          spids: [75]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:systrace)
          op: assign_op.Equal
          rhs: {(DQ <systrace_args.c>)}
          spids: [80]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysaue)
          op: assign_op.Equal
          rhs: {(DQ <sysent.aue.> ($ Id.VSub_Dollar '$$'))}
          spids: [89]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysdcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.dcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [95]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat.> ($ Id.VSub_Dollar '$$'))}
          spids: [101]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompatdcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compatdcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [107]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat4)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat4.> ($ Id.VSub_Dollar '$$'))}
          spids: [113]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat4dcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat4dcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [119]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat6)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat6.> ($ Id.VSub_Dollar '$$'))}
          spids: [125]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat6dcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat6dcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [131]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat7)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat7.> ($ Id.VSub_Dollar '$$'))}
          spids: [137]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat7dcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat7dcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [143]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat10)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat10.> ($ Id.VSub_Dollar '$$'))}
          spids: [149]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:syscompat10dcl)
          op: assign_op.Equal
          rhs: {(DQ <sysent.compat10dcl.> ($ Id.VSub_Dollar '$$'))}
          spids: [155]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysent)
          op: assign_op.Equal
          rhs: {(DQ <sysent.switch.> ($ Id.VSub_Dollar '$$'))}
          spids: [161]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysinc)
          op: assign_op.Equal
          rhs: {(DQ <sysinc.switch.> ($ Id.VSub_Dollar '$$'))}
          spids: [167]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysarg)
          op: assign_op.Equal
          rhs: {(DQ <sysarg.switch.> ($ Id.VSub_Dollar '$$'))}
          spids: [173]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysprotoend)
          op: assign_op.Equal
          rhs: {(DQ <sysprotoend.> ($ Id.VSub_Dollar '$$'))}
          spids: [179]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:systracetmp)
          op: assign_op.Equal
          rhs: {(DQ <systrace.> ($ Id.VSub_Dollar '$$'))}
          spids: [185]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:systraceret)
          op: assign_op.Equal
          rhs: {(DQ <systraceret.> ($ Id.VSub_Dollar '$$'))}
          spids: [191]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-r>} {<capabilities.conf>} {<Id.Lit_RBracket ']'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:capenabled)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<cat>} {<capabilities.conf>})
                              (C {<grep>} {<-v>} {(DQ <'^#'>)})
                              (C {<grep>} {<-v>} {(DQ <'^'> <Id.Lit_Dollar '$'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [212]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:capenabled)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName '$capenabled')})
                              (C {<sed>} {(SQ <'s/ /,/g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [243]
                )
              ]
            )
          ]
          spids: [198 209]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:capenabled)
              op: assign_op.Equal
              rhs: {(DQ )}
              spids: [263]
            )
          ]
        )
      ]
    )
    (C {<trap>} 
      {
        (DQ <'rm '> ($ Id.VSub_DollarName '$sysaue') <' '> ($ Id.VSub_DollarName '$sysdcl') <' '> 
          ($ Id.VSub_DollarName '$syscompat') <' '> ($ Id.VSub_DollarName '$syscompatdcl') <' '> ($ Id.VSub_DollarName '$syscompat4') <' '> 
          ($ Id.VSub_DollarName '$syscompat4dcl') <' '> ($ Id.VSub_DollarName '$syscompat6') <' '> ($ Id.VSub_DollarName '$syscompat6dcl') <' '> 
          ($ Id.VSub_DollarName '$syscompat7') <' '> ($ Id.VSub_DollarName '$syscompat7dcl') <' '> ($ Id.VSub_DollarName '$syscompat10') <' '> 
          ($ Id.VSub_DollarName '$syscompat10dcl') <' '> ($ Id.VSub_DollarName '$sysent') <' '> ($ Id.VSub_DollarName '$sysinc') <' '> 
          ($ Id.VSub_DollarName '$sysarg') <' '> ($ Id.VSub_DollarName '$sysprotoend') <' '> ($ Id.VSub_DollarName '$systracetmp') <' '> 
          ($ Id.VSub_DollarName '$systraceret')
        )
      } {<0>}
    )
    (C {<touch>} {($ Id.VSub_DollarName '$sysaue')} {($ Id.VSub_DollarName '$sysdcl')} 
      {($ Id.VSub_DollarName '$syscompat')} {($ Id.VSub_DollarName '$syscompatdcl')} {($ Id.VSub_DollarName '$syscompat4')} 
      {($ Id.VSub_DollarName '$syscompat4dcl')} {($ Id.VSub_DollarName '$syscompat6')} {($ Id.VSub_DollarName '$syscompat6dcl')} 
      {($ Id.VSub_DollarName '$syscompat7')} {($ Id.VSub_DollarName '$syscompat7dcl')} {($ Id.VSub_DollarName '$syscompat10')} 
      {($ Id.VSub_DollarName '$syscompat10dcl')} {($ Id.VSub_DollarName '$sysent')} {($ Id.VSub_DollarName '$sysinc')} {($ Id.VSub_DollarName '$sysarg')} 
      {($ Id.VSub_DollarName '$sysprotoend')} {($ Id.VSub_DollarName '$systracetmp')} {($ Id.VSub_DollarName '$systraceret')}
    )
    (command.Case
      to_match: {($ Id.VSub_Pound '$#')}
      arms: [
        (case_arm
          pat_list: [{<0>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'usage: '> ($ Id.VSub_Number '$0') <' input-file <config-file>'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [360 361 380 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$2'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<.>} {($ Id.VSub_Number '$2')})]
          spids: [385 398]
        )
      ]
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [
            {<sed>}
            {<-e>}
            {
              (SQ <'\n'> <':join\n'> <'\t/\\\\$/{a\\\n'> <'\n'> <'\tN\n'> <'\ts/\\\\\\n//\n'> 
                <'\tb join\n'> <'\t}\n'> <'2,${\n'> <'\t/^#/!s/\\([{}()*,]\\)/ \\1 /g\n'> <'}\n'>
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Less '<'>
              loc: (redir_loc.Fd fd:0)
              arg: {($ Id.VSub_Number '$1')}
            )
          ]
          do_fork: T
        )
        (C {<awk>} 
          {
            (DQ <'\n'> <'\tBEGIN {\n'> <'\t\tsysaue = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$sysaue') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tsysdcl = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$sysdcl') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsysproto = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$sysproto') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsysprotoend = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$sysprotoend') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              <'\n'> <'\t\tsysproto_h = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$sysproto_h') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompat') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tsyscompatdcl = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompatdcl') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat4 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$syscompat4') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat4dcl = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompat4dcl') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              <'\n'> <'\t\tsyscompat6 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$syscompat6') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat6dcl = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompat6dcl') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              <'\n'> <'\t\tsyscompat7 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$syscompat7') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat7dcl = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompat7dcl') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              <'\n'> <'\t\tsyscompat10 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$syscompat10') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscompat10dcl = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syscompat10dcl') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              <'\n'> <'\t\tsysent = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$sysent') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyssw = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syssw') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tsysinc = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$sysinc') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsysarg = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$sysarg') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsysnames = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$sysnames') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tsyshdr = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$syshdr') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsysmk = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$sysmk') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsystrace = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$systrace') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tsystracetmp = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$systracetmp') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsystraceret = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$systraceret') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tcompat = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$compat') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tcompat4 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$compat4') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tcompat6 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$compat6') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tcompat7 = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$compat7') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tcompat10 = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$compat10') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tsyscallprefix = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_DollarName '$syscallprefix') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tswitchname = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$switchname') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\tnamesname = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$namesname') 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tinfile = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
              ($ Id.VSub_Number '$1') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\t\tcapenabled_string = '> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$capenabled') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
              <'\t\t'>
            ) 
            (SQ <'\n'> <'\n'> <'\t\tsplit(capenabled_string, capenabled, ",");\n'> <'\n'> 
              <'\t\tprintf "\\n/* The casts are bogus but will do for now. */\\n" > sysent\n'> <'\t\tprintf "struct sysent %s[] = {\\n",switchname > sysent\n'> <'\n'> 
              <'\t\tprintf "/*\\n * System call switch table.\\n *\\n" > syssw\n'> <'\t\tprintf " * DO NOT EDIT-- this file is automatically generated.\\n" > syssw\n'> 
              <'\t\tprintf " * $%s$\\n", "FreeBSD" > syssw\n'> <'\t\tprintf " */\\n\\n" > syssw\n'> <'\n'> 
              <'\t\tprintf "/*\\n * System call prototypes.\\n *\\n" > sysarg\n'> <'\t\tprintf " * DO NOT EDIT-- this file is automatically generated.\\n" > sysarg\n'> 
              <'\t\tprintf " * $%s$\\n", "FreeBSD" > sysarg\n'> <'\t\tprintf " */\\n\\n" > sysarg\n'> <'\t\tprintf "#ifndef %s\\n", sysproto_h > sysarg\n'> 
              <'\t\tprintf "#define\\t%s\\n\\n", sysproto_h > sysarg\n'> <'\t\tprintf "#include <sys/signal.h>\\n" > sysarg\n'> 
              <'\t\tprintf "#include <sys/acl.h>\\n" > sysarg\n'> <'\t\tprintf "#include <sys/cpuset.h>\\n" > sysarg\n'> 
              <'\t\tprintf "#include <sys/_ffcounter.h>\\n" > sysarg\n'> <'\t\tprintf "#include <sys/_semaphore.h>\\n" > sysarg\n'> 
              <'\t\tprintf "#include <sys/ucontext.h>\\n" > sysarg\n'> <'\t\tprintf "#include <sys/wait.h>\\n\\n" > sysarg\n'> 
              <'\t\tprintf "#include <bsm/audit_kevents.h>\\n\\n" > sysarg\n'> <'\t\tprintf "struct proc;\\n\\n" > sysarg\n'> <'\t\tprintf "struct thread;\\n\\n" > sysarg\n'> 
              <
'\t\tprintf "#define\\tPAD_(t)\\t(sizeof(register_t) <= sizeof(t) ? \\\\\\n" > sysarg\n'
              > <'\t\tprintf "\\t\\t0 : sizeof(register_t) - sizeof(t))\\n\\n" > sysarg\n'> 
              <'\t\tprintf "#if BYTE_ORDER == LITTLE_ENDIAN\\n"> sysarg\n'> <'\t\tprintf "#define\\tPADL_(t)\\t0\\n" > sysarg\n'> 
              <'\t\tprintf "#define\\tPADR_(t)\\tPAD_(t)\\n" > sysarg\n'> <'\t\tprintf "#else\\n" > sysarg\n'> <'\t\tprintf "#define\\tPADL_(t)\\tPAD_(t)\\n" > sysarg\n'> 
              <'\t\tprintf "#define\\tPADR_(t)\\t0\\n" > sysarg\n'> <'\t\tprintf "#endif\\n\\n" > sysarg\n'> <'\n'> 
              <'\t\tprintf "\\n#ifdef %s\\n\\n", compat > syscompat\n'> <'\t\tprintf "\\n#ifdef %s\\n\\n", compat4 > syscompat4\n'> 
              <'\t\tprintf "\\n#ifdef %s\\n\\n", compat6 > syscompat6\n'> <'\t\tprintf "\\n#ifdef %s\\n\\n", compat7 > syscompat7\n'> 
              <'\t\tprintf "\\n#ifdef %s\\n\\n", compat10 > syscompat10\n'> <'\n'> <'\t\tprintf "/*\\n * System call names.\\n *\\n" > sysnames\n'> 
              <
'\t\tprintf " * DO NOT EDIT-- this file is automatically generated.\\n" > sysnames\n'
              > <'\t\tprintf " * $%s$\\n", "FreeBSD" > sysnames\n'> <'\t\tprintf " */\\n\\n" > sysnames\n'> 
              <'\t\tprintf "const char *%s[] = {\\n", namesname > sysnames\n'> <'\n'> <'\t\tprintf "/*\\n * System call numbers.\\n *\\n" > syshdr\n'> 
              <'\t\tprintf " * DO NOT EDIT-- this file is automatically generated.\\n" > syshdr\n'> <'\t\tprintf " * $%s$\\n", "FreeBSD" > syshdr\n'> <'\t\tprintf " */\\n\\n" > syshdr\n'> <'\n'> 
              <'\t\tprintf "# FreeBSD system call object files.\\n" > sysmk\n'> <'\t\tprintf "# DO NOT EDIT-- this file is automatically generated.\\n" > sysmk\n'> 
              <'\t\tprintf "# $%s$\\n", "FreeBSD" > sysmk\n'> <'\t\tprintf "MIASM = " > sysmk\n'> <'\n'> 
              <
'\t\tprintf "/*\\n * System call argument to DTrace register array converstion.\\n *\\n" > systrace\n'
              > <'\t\tprintf " * DO NOT EDIT-- this file is automatically generated.\\n" > systrace\n'> 
              <'\t\tprintf " * $%s$\\n", "FreeBSD" > systrace\n'> <'\t\tprintf " * This file is part of the DTrace syscall provider.\\n */\\n\\n" > systrace\n'> 
              <
'\t\tprintf "static void\\nsystrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)\\n{\\n" > systrace\n'
              > <'\t\tprintf "\\tint64_t *iarg  = (int64_t *) uarg;\\n" > systrace\n'> 
              <'\t\tprintf "\\tswitch (sysnum) {\\n" > systrace\n'> <'\n'> 
              <
'\t\tprintf "static void\\nsystrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)\\n{\\n\\tconst char *p = NULL;\\n" > systracetmp\n'
              > <'\t\tprintf "\\tswitch (sysnum) {\\n" > systracetmp\n'> <'\n'> 
              <
'\t\tprintf "static void\\nsystrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)\\n{\\n\\tconst char *p = NULL;\\n" > systraceret\n'
              > <'\t\tprintf "\\tswitch (sysnum) {\\n" > systraceret\n'> <'\t}\n'> <'\tNR == 1 {\n'> <'\t\tnext\n'> 
              <'\t}\n'> <'\tNF == 0 || $1 ~ /^;/ {\n'> <'\t\tnext\n'> <'\t}\n'> <'\t$1 ~ /^#[ \t]*include/ {\n'> 
              <'\t\tprint > sysinc\n'> <'\t\tnext\n'> <'\t}\n'> <'\t$1 ~ /^#[ \t]*if/ {\n'> <'\t\tprint > sysent\n'> <'\t\tprint > sysdcl\n'> 
              <'\t\tprint > sysarg\n'> <'\t\tprint > syscompat\n'> <'\t\tprint > syscompat4\n'> <'\t\tprint > syscompat6\n'> 
              <'\t\tprint > syscompat7\n'> <'\t\tprint > syscompat10\n'> <'\t\tprint > sysnames\n'> <'\t\tprint > systrace\n'> 
              <'\t\tprint > systracetmp\n'> <'\t\tprint > systraceret\n'> <'\t\tsavesyscall = syscall\n'> <'\t\tnext\n'> <'\t}\n'> 
              <'\t$1 ~ /^#[ \t]*else/ {\n'> <'\t\tprint > sysent\n'> <'\t\tprint > sysdcl\n'> <'\t\tprint > sysarg\n'> <'\t\tprint > syscompat\n'> 
              <'\t\tprint > syscompat4\n'> <'\t\tprint > syscompat6\n'> <'\t\tprint > syscompat7\n'> <'\t\tprint > syscompat10\n'> 
              <'\t\tprint > sysnames\n'> <'\t\tprint > systrace\n'> <'\t\tprint > systracetmp\n'> <'\t\tprint > systraceret\n'> 
              <'\t\tsyscall = savesyscall\n'> <'\t\tnext\n'> <'\t}\n'> <'\t$1 ~ /^#/ {\n'> <'\t\tprint > sysent\n'> <'\t\tprint > sysdcl\n'> 
              <'\t\tprint > sysarg\n'> <'\t\tprint > syscompat\n'> <'\t\tprint > syscompat4\n'> <'\t\tprint > syscompat6\n'> 
              <'\t\tprint > syscompat7\n'> <'\t\tprint > syscompat10\n'> <'\t\tprint > sysnames\n'> <'\t\tprint > systrace\n'> 
              <'\t\tprint > systracetmp\n'> <'\t\tprint > systraceret\n'> <'\t\tnext\n'> <'\t}\n'> <'\tsyscall != $1 {\n'> 
              <'\t\tprintf "%s: line %d: syscall number out of sync at %d\\n",\n'> <'\t\t    infile, NR, syscall\n'> <'\t\tprintf "line is:\\n"\n'> <'\t\tprint\n'> <'\t\texit 1\n'> 
              <'\t}\n'> <'\t# Returns true if the type "name" is the first flag in the type field\n'> 
              <'\tfunction type(name, flags, n) {\n'> <'\t\tn = split($3, flags, /\\|/)\n'> <'\t\treturn (n > 0 && flags[1] == name)\n'> <'\t}\n'> 
              <'\t# Returns true if the flag "name" is set in the type field\n'> <'\tfunction flag(name, flags, i, n) {\n'> <'\t\tn = split($3, flags, /\\|/)\n'> 
              <'\t\tfor (i = 1; i <= n; i++)\n'> <'\t\t\tif (flags[i] == name)\n'> <'\t\t\t\treturn 1\n'> <'\t\treturn 0\n'> <'\t}\n'> 
              <'\tfunction align_sysent_comment(column) {\n'> <'\t\tprintf("\\t") > sysent\n'> <'\t\tcolumn = column + 8 - column % 8\n'> 
              <'\t\twhile (column < 56) {\n'> <'\t\t\tprintf("\\t") > sysent\n'> <'\t\t\tcolumn = column + 8\n'> <'\t\t}\n'> <'\t}\n'> 
              <'\tfunction parserr(was, wanted) {\n'> <'\t\tprintf "%s: line %d: unexpected %s (expected %s)\\n",\n'> <'\t\t    infile, NR, was, wanted\n'> 
              <'\t\texit 1\n'> <'\t}\n'> <'\tfunction parseline() {\n'> <'\t\tf=4\t\t\t# toss number, type, audit event\n'> 
              <'\t\targc= 0;\n'> <'\t\targssize = "0"\n'> <'\t\tthr_flag = "SY_THR_STATIC"\n'> <'\t\tif (flag("NOTSTATIC")) {\n'> 
              <'\t\t\tthr_flag = "SY_THR_ABSENT"\n'> <'\t\t}\n'> <'\t\tif ($NF != "}") {\n'> <'\t\t\tfuncalias=$(NF-2)\n'> <'\t\t\targalias=$(NF-1)\n'> 
              <'\t\t\trettype=$NF\n'> <'\t\t\tend=NF-3\n'> <'\t\t} else {\n'> <'\t\t\tfuncalias=""\n'> <'\t\t\targalias=""\n'> 
              <'\t\t\trettype="int"\n'> <'\t\t\tend=NF\n'> <'\t\t}\n'> <'\t\tif (flag("NODEF")) {\n'> <'\t\t\tauditev="AUE_NULL"\n'> 
              <'\t\t\tfuncname=$4\n'> <'\t\t\targssize = "AS(" $6 ")"\n'> <'\t\t\treturn\n'> <'\t\t}\n'> <'\t\tif ($f != "{")\n'> 
              <'\t\t\tparserr($f, "{")\n'> <'\t\tf++\n'> <'\t\tif ($end != "}")\n'> <'\t\t\tparserr($end, "}")\n'> <'\t\tend--\n'> 
              <'\t\tif ($end != ";")\n'> <'\t\t\tparserr($end, ";")\n'> <'\t\tend--\n'> <'\t\tif ($end != ")")\n'> <'\t\t\tparserr($end, ")")\n'> 
              <'\t\tend--\n'> <'\n'> <'\t\tsyscallret=$f\n'> <'\t\tf++\n'> <'\n'> <'\t\tfuncname=$f\n'> <'\n'> <'\t\t#\n'> 
              <'\t\t# We now know the func name, so define a flags field for it.\n'> <'\t\t# Do this before any other processing as we may return early\n'> <'\t\t# from it.\n'> <'\t\t#\n'> 
              <'\t\tfor (cap in capenabled) {\n'> <'\t\t\tif (funcname == capenabled[cap]) {\n'> <'\t\t\t\tflags = "SYF_CAPENABLED";\n'> 
              <'\t\t\t\tbreak;\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\n'> <'\t\tif (funcalias == "")\n'> <'\t\t\tfuncalias = funcname\n'> 
              <'\t\tif (argalias == "") {\n'> <'\t\t\targalias = funcname "_args"\n'> <'\t\t\tif (flag("COMPAT"))\n'> 
              <'\t\t\t\targalias = "o" argalias\n'> <'\t\t\tif (flag("COMPAT4"))\n'> <'\t\t\t\targalias = "freebsd4_" argalias\n'> 
              <'\t\t\tif (flag("COMPAT6"))\n'> <'\t\t\t\targalias = "freebsd6_" argalias\n'> <'\t\t\tif (flag("COMPAT7"))\n'> 
              <'\t\t\t\targalias = "freebsd7_" argalias\n'> <'\t\t\tif (flag("COMPAT10"))\n'> <'\t\t\t\targalias = "freebsd10_" argalias\n'> <'\t\t}\n'> 
              <'\t\tf++\n'> <'\n'> <'\t\tif ($f != "(")\n'> <'\t\t\tparserr($f, ")")\n'> <'\t\tf++\n'> <'\n'> 
              <'\t\tif (f == end) {\n'> <'\t\t\tif ($f != "void")\n'> <'\t\t\t\tparserr($f, "argument definition")\n'> <'\t\t\treturn\n'> 
              <'\t\t}\n'> <'\n'> <'\t\twhile (f <= end) {\n'> <'\t\t\targc++\n'> <'\t\t\targtype[argc]=""\n'> <'\t\t\toldf=""\n'> 
              <'\t\t\twhile (f < end && $(f+1) != ",") {\n'> <'\t\t\t\tif (argtype[argc] != "" && oldf != "*")\n'> 
              <'\t\t\t\t\targtype[argc] = argtype[argc]" ";\n'> <'\t\t\t\targtype[argc] = argtype[argc]$f;\n'> <'\t\t\t\toldf = $f;\n'> <'\t\t\t\tf++\n'> <'\t\t\t}\n'> 
              <'\t\t\tif (argtype[argc] == "")\n'> <'\t\t\t\tparserr($f, "argument definition")\n'> <'\t\t\targname[argc]=$f;\n'> 
              <'\t\t\tf += 2;\t\t\t# skip name, and any comma\n'> <'\t\t}\n'> <'\t\tif (argc != 0)\n'> <'\t\t\targssize = "AS(" argalias ")"\n'> <'\t}\n'> 
              <'\t{\tcomment = $4\n'> <'\t\tif (NF < 7)\n'> <'\t\t\tfor (i = 5; i <= NF; i++)\n'> <'\t\t\t\tcomment = comment " " $i\n'> 
              <'\t}\n'> <'\n'> <'\t#\n'> <'\t# The AUE_ audit event identifier.\n'> <'\t#\n'> <'\t{\n'> <'\t\tauditev = $2;\n'> 
              <'\t}\n'> <'\n'> <'\t#\n'> <'\t# The flags, if any.\n'> <'\t#\n'> <'\t{\n'> <'\t\tflags = "0";\n'> <'\t}\n'> <'\n'> 
              <'\ttype("STD") || type("NODEF") || type("NOARGS") || type("NOPROTO") \\\n'> <'\t    || type("NOSTD") {\n'> <'\t\tparseline()\n'> 
              <'\t\tprintf("\\t/* %s */\\n\\tcase %d: {\\n", funcname, syscall) > systrace\n'> <'\t\tprintf("\\t/* %s */\\n\\tcase %d:\\n", funcname, syscall) > systracetmp\n'> 
              <'\t\tprintf("\\t/* %s */\\n\\tcase %d:\\n", funcname, syscall) > systraceret\n'> <'\t\tif (argc > 0) {\n'> <'\t\t\tprintf("\\t\\tswitch(ndx) {\\n") > systracetmp\n'> 
              <'\t\t\tprintf("\\t\\tstruct %s *p = params;\\n", argalias) > systrace\n'> <'\t\t\tfor (i = 1; i <= argc; i++) {\n'> <'\t\t\t\targ = argtype[i]\n'> 
              <'\t\t\t\tsub("__restrict$", "", arg)\n'> 
              <
'\t\t\t\tprintf("\\t\\tcase %d:\\n\\t\\t\\tp = \\"%s\\";\\n\\t\\t\\tbreak;\\n", i - 1, arg) > systracetmp\n'
              > <'\t\t\t\tif (index(arg, "*") > 0 || arg == "caddr_t")\n'> 
              <'\t\t\t\t\tprintf("\\t\\tuarg[%d] = (intptr_t) p->%s; /* %s */\\n", \\\n'> <'\t\t\t\t\t     i - 1, \\\n'> <'\t\t\t\t\t     argname[i], arg) > systrace\n'> 
              <'\t\t\t\telse if (arg == "union l_semun")\n'> <'\t\t\t\t\tprintf("\\t\\tuarg[%d] = p->%s.buf; /* %s */\\n", \\\n'> <'\t\t\t\t\t     i - 1, \\\n'> 
              <'\t\t\t\t\t     argname[i], arg) > systrace\n'> <'\t\t\t\telse if (substr(arg, 1, 1) == "u" || arg == "size_t")\n'> 
              <'\t\t\t\t\tprintf("\\t\\tuarg[%d] = p->%s; /* %s */\\n", \\\n'> <'\t\t\t\t\t     i - 1, \\\n'> <'\t\t\t\t\t     argname[i], arg) > systrace\n'> <'\t\t\t\telse\n'> 
              <'\t\t\t\t\tprintf("\\t\\tiarg[%d] = p->%s; /* %s */\\n", \\\n'> <'\t\t\t\t\t     i - 1, \\\n'> <'\t\t\t\t\t     argname[i], arg) > systrace\n'> <'\t\t\t}\n'> 
              <'\t\t\tprintf("\\t\\tdefault:\\n\\t\\t\\tbreak;\\n\\t\\t};\\n") > systracetmp\n'> <'\n'> <'\t\t\tprintf("\\t\\tif (ndx == 0 || ndx == 1)\\n") > systraceret\n'> 
              <'\t\t\tprintf("\\t\\t\\tp = \\"%s\\";\\n", syscallret) > systraceret\n'> <'\t\t\tprintf("\\t\\tbreak;\\n") > systraceret\n'> <'\t\t}\n'> 
              <'\t\tprintf("\\t\\t*n_args = %d;\\n\\t\\tbreak;\\n\\t}\\n", argc) > systrace\n'> <'\t\tprintf("\\t\\tbreak;\\n") > systracetmp\n'> 
              <'\t\tif (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \\\n'> <'\t\t    !flag("NODEF")) {\n'> <'\t\t\tprintf("struct %s {\\n", argalias) > sysarg\n'> 
              <'\t\t\tfor (i = 1; i <= argc; i++)\n'> <'\t\t\t\tprintf("\\tchar %s_l_[PADL_(%s)]; " \\\n'> 
              <'\t\t\t\t    "%s %s; char %s_r_[PADR_(%s)];\\n",\n'> <'\t\t\t\t    argname[i], argtype[i],\n'> <'\t\t\t\t    argtype[i], argname[i],\n'> 
              <'\t\t\t\t    argname[i], argtype[i]) > sysarg\n'> <'\t\t\tprintf("};\\n") > sysarg\n'> <'\t\t}\n'> 
              <'\t\telse if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF"))\n'> <'\t\t\tprintf("struct %s {\\n\\tregister_t dummy;\\n};\\n",\n'> <'\t\t\t    argalias) > sysarg\n'> 
              <'\t\tif (!flag("NOPROTO") && !flag("NODEF")) {\n'> <'\t\t\tif (funcname == "nosys" || funcname == "lkmnosys" ||\n'> 
              <'\t\t\t    funcname == "sysarch" || funcname ~ /^freebsd/ || \n'> <'\t\t\t    funcname ~ /^linux/ || funcname ~ /^svr4/ || \n'> 
              <'\t\t\t    funcname ~ /^ibcs2/ || funcname ~ /^xenix/ ||\n'> <'\t\t\t    funcname ~ /^cloudabi/) {\n'> 
              <'\t\t\t\tprintf("%s\\t%s(struct thread *, struct %s *)",\n'> <'\t\t\t\t    rettype, funcname, argalias) > sysdcl\n'> <'\t\t\t} else {\n'> 
              <'\t\t\t\tprintf("%s\\tsys_%s(struct thread *, struct %s *)",\n'> <'\t\t\t\t    rettype, funcname, argalias) > sysdcl\n'> <'\t\t\t} \n'> 
              <'\t\t\tprintf(";\\n") > sysdcl\n'> <'\t\t\tprintf("#define\\t%sAUE_%s\\t%s\\n", syscallprefix,\n'> 
              <'\t\t\t    funcalias, auditev) > sysaue\n'> <'\t\t}\n'> <'\t\tprintf("\\t{ %s, (sy_call_t *)", argssize) > sysent\n'> 
              <'\t\tcolumn = 8 + 2 + length(argssize) + 15\n'> <'\t\tif (flag("NOSTD")) {\n'> 
              <
'\t\t\tprintf("lkmressys, AUE_NULL, NULL, 0, 0, %s, SY_THR_ABSENT },", flags) > sysent\n'
              > <'\t\t\tcolumn = column + length("lkmressys") + length("AUE_NULL") + 3\n'> <'\t\t} else {\n'> 
              <'\t\t\tif (funcname == "nosys" || funcname == "sysarch" || \n'> <'\t\t\t    funcname == "lkmnosys" || funcname ~ /^freebsd/ ||\n'> 
              <'\t\t\t    funcname ~ /^linux/ || funcname ~ /^svr4/ ||\n'> <'\t\t\t    funcname ~ /^ibcs2/ || funcname ~ /^xenix/ ||\n'> 
              <'\t\t\t    funcname ~ /^cloudabi/) {\n'> <'\t\t\t\tprintf("%s, %s, NULL, 0, 0, %s, %s },", funcname, auditev, flags, thr_flag) > sysent\n'> 
              <
'\t\t\t\tcolumn = column + length(funcname) + length(auditev) + length(flags) + 3 \n'
              > <'\t\t\t} else {\n'> 
              <
'\t\t\t\tprintf("sys_%s, %s, NULL, 0, 0, %s, %s },", funcname, auditev, flags, thr_flag) > sysent\n'
              > <'\t\t\t\tcolumn = column + length(funcname) + length(auditev) + length(flags) + 3 + 4\n'> 
              <'\t\t\t} \n'> <'\t\t} \n'> <'\t\talign_sysent_comment(column)\n'> 
              <'\t\tprintf("/* %d = %s */\\n", syscall, funcalias) > sysent\n'> <'\t\tprintf("\\t\\"%s\\",\\t\\t\\t/* %d = %s */\\n",\n'> 
              <'\t\t    funcalias, syscall, funcalias) > sysnames\n'> <'\t\tif (!flag("NODEF")) {\n'> <'\t\t\tprintf("#define\\t%s%s\\t%d\\n", syscallprefix,\n'> 
              <'\t\t    \t    funcalias, syscall) > syshdr\n'> <'\t\t\tprintf(" \\\\\\n\\t%s.o", funcalias) > sysmk\n'> <'\t\t}\n'> <'\t\tsyscall++\n'> <'\t\tnext\n'> 
              <'\t}\n'> <'\ttype("COMPAT") || type("COMPAT4") || type("COMPAT6") || \\\n'> 
              <'\t    type("COMPAT7") || type("COMPAT10") {\n'> <'\t\tif (flag("COMPAT")) {\n'> <'\t\t\tncompat++\n'> <'\t\t\tout = syscompat\n'> 
              <'\t\t\toutdcl = syscompatdcl\n'> <'\t\t\twrap = "compat"\n'> <'\t\t\tprefix = "o"\n'> <'\t\t\tdescr = "old"\n'> 
              <'\t\t} else if (flag("COMPAT4")) {\n'> <'\t\t\tncompat4++\n'> <'\t\t\tout = syscompat4\n'> <'\t\t\toutdcl = syscompat4dcl\n'> 
              <'\t\t\twrap = "compat4"\n'> <'\t\t\tprefix = "freebsd4_"\n'> <'\t\t\tdescr = "freebsd4"\n'> <'\t\t} else if (flag("COMPAT6")) {\n'> 
              <'\t\t\tncompat6++\n'> <'\t\t\tout = syscompat6\n'> <'\t\t\toutdcl = syscompat6dcl\n'> <'\t\t\twrap = "compat6"\n'> 
              <'\t\t\tprefix = "freebsd6_"\n'> <'\t\t\tdescr = "freebsd6"\n'> <'\t\t} else if (flag("COMPAT7")) {\n'> <'\t\t\tncompat7++\n'> 
              <'\t\t\tout = syscompat7\n'> <'\t\t\toutdcl = syscompat7dcl\n'> <'\t\t\twrap = "compat7"\n'> <'\t\t\tprefix = "freebsd7_"\n'> 
              <'\t\t\tdescr = "freebsd7"\n'> <'\t\t} else if (flag("COMPAT10")) {\n'> <'\t\t\tncompat10++\n'> <'\t\t\tout = syscompat10\n'> 
              <'\t\t\toutdcl = syscompat10dcl\n'> <'\t\t\twrap = "compat10"\n'> <'\t\t\tprefix = "freebsd10_"\n'> <'\t\t\tdescr = "freebsd10"\n'> 
              <'\t\t}\n'> <'\t\tparseline()\n'> <'\t\tif (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \\\n'> 
              <'\t\t    !flag("NODEF")) {\n'> <'\t\t\tprintf("struct %s {\\n", argalias) > out\n'> <'\t\t\tfor (i = 1; i <= argc; i++)\n'> 
              <'\t\t\t\tprintf("\\tchar %s_l_[PADL_(%s)]; %s %s; " \\\n'> <'\t\t\t\t    "char %s_r_[PADR_(%s)];\\n",\n'> <'\t\t\t\t    argname[i], argtype[i],\n'> 
              <'\t\t\t\t    argtype[i], argname[i],\n'> <'\t\t\t\t    argname[i], argtype[i]) > out\n'> <'\t\t\tprintf("};\\n") > out\n'> <'\t\t}\n'> 
              <'\t\telse if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF"))\n'> <'\t\t\tprintf("struct %s {\\n\\tregister_t dummy;\\n};\\n",\n'> <'\t\t\t    argalias) > sysarg\n'> 
              <'\t\tif (!flag("NOPROTO") && !flag("NODEF")) {\n'> <'\t\t\tprintf("%s\\t%s%s(struct thread *, struct %s *);\\n",\n'> 
              <'\t\t\t    rettype, prefix, funcname, argalias) > outdcl\n'> <'\t\t\tprintf("#define\\t%sAUE_%s%s\\t%s\\n", syscallprefix,\n'> 
              <'\t\t\t    prefix, funcname, auditev) > sysaue\n'> <'\t\t}\n'> <'\t\tif (flag("NOSTD")) {\n'> 
              <'\t\t\tprintf("\\t{ %s, (sy_call_t *)%s, %s, NULL, 0, 0, 0, SY_THR_ABSENT },",\n'> <'\t\t\t    "0", "lkmressys", "AUE_NULL") > sysent\n'> 
              <'\t\t\talign_sysent_comment(8 + 2 + length("0") + 15 + \\\n'> <'\t\t\t    length("lkmressys") + length("AUE_NULL") + 3)\n'> <'\t\t} else {\n'> 
              <'\t\t\tprintf("\\t{ %s(%s,%s), %s, NULL, 0, 0, %s, %s },",\n'> <'\t\t\t    wrap, argssize, funcname, auditev, flags, thr_flag) > sysent\n'> 
              <'\t\t\talign_sysent_comment(8 + 9 + length(argssize) + 1 + \\\n'> <'\t\t\t    length(funcname) + length(auditev) + \\\n'> <'\t\t\t    length(flags) + 4)\n'> <'\t\t}\n'> 
              <'\t\tprintf("/* %d = %s %s */\\n", syscall, descr, funcalias) > sysent\n'> <'\t\tprintf("\\t\\"%s.%s\\",\\t\\t/* %d = %s %s */\\n",\n'> 
              <'\t\t    wrap, funcalias, syscall, descr, funcalias) > sysnames\n'> <'\t\t# Do not provide freebsdN_* symbols in libc for < FreeBSD 7\n'> 
              <'\t\tif (flag("COMPAT") || flag("COMPAT4") || flag("COMPAT6")) {\n'> <'\t\t\tprintf("\\t\\t\\t\\t/* %d is %s %s */\\n",\n'> 
              <'\t\t\t    syscall, descr, funcalias) > syshdr\n'> <'\t\t} else if (!flag("NODEF")) {\n'> <'\t\t\tprintf("#define\\t%s%s%s\\t%d\\n", syscallprefix,\n'> 
              <'\t\t\t    prefix, funcalias, syscall) > syshdr\n'> <'\t\t\tprintf(" \\\\\\n\\t%s%s.o", prefix, funcalias) > sysmk\n'> <'\t\t}\n'> <'\t\tsyscall++\n'> 
              <'\t\tnext\n'> <'\t}\n'> <'\ttype("OBSOL") {\n'> 
              <
'\t\tprintf("\\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },") > sysent\n'
              > <'\t\talign_sysent_comment(34)\n'> 
              <'\t\tprintf("/* %d = obsolete %s */\\n", syscall, comment) > sysent\n'> <'\t\tprintf("\\t\\"obs_%s\\",\\t\\t\\t/* %d = obsolete %s */\\n",\n'> 
              <'\t\t    $4, syscall, comment) > sysnames\n'> <'\t\tprintf("\\t\\t\\t\\t/* %d is obsolete %s */\\n",\n'> <'\t\t    syscall, comment) > syshdr\n'> 
              <'\t\tsyscall++\n'> <'\t\tnext\n'> <'\t}\n'> <'\ttype("UNIMPL") {\n'> 
              <
'\t\tprintf("\\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },\\t\\t\\t/* %d = %s */\\n",\n'
              > <'\t\t    syscall, comment) > sysent\n'> <'\t\tprintf("\\t\\"#%d\\",\\t\\t\\t/* %d = %s */\\n",\n'> 
              <'\t\t    syscall, syscall, comment) > sysnames\n'> <'\t\tsyscall++\n'> <'\t\tnext\n'> <'\t}\n'> <'\t{\n'> 
              <'\t\tprintf "%s: line %d: unrecognized keyword %s\\n", infile, NR, $3\n'> <'\t\texit 1\n'> <'\t}\n'> <'\tEND {\n'> 
              <
'\t\tprintf "\\n#define AS(name) (sizeof(struct name) / sizeof(register_t))\\n" > sysinc\n'
              > <'\n'> 
              <
'\t\tif (ncompat != 0 || ncompat4 != 0 || ncompat6 != 0 || ncompat7 != 0 || ncompat10 != 0)\n'
              > <'\t\t\tprintf "#include \\"opt_compat.h\\"\\n\\n" > syssw\n'> <'\n'> <'\t\tif (ncompat != 0) {\n'> 
              <'\t\t\tprintf "\\n#ifdef %s\\n", compat > sysinc\n'> <'\t\t\tprintf "#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)\\n" > sysinc\n'> 
              <'\t\t\tprintf "#else\\n" > sysinc\n'> <'\t\t\tprintf "#define compat(n, name) 0, (sy_call_t *)nosys\\n" > sysinc\n'> 
              <'\t\t\tprintf "#endif\\n" > sysinc\n'> <'\t\t}\n'> <'\n'> <'\t\tif (ncompat4 != 0) {\n'> <'\t\t\tprintf "\\n#ifdef %s\\n", compat4 > sysinc\n'> 
              <
'\t\t\tprintf "#define compat4(n, name) n, (sy_call_t *)__CONCAT(freebsd4_,name)\\n" > sysinc\n'
              > <'\t\t\tprintf "#else\\n" > sysinc\n'> 
              <'\t\t\tprintf "#define compat4(n, name) 0, (sy_call_t *)nosys\\n" > sysinc\n'> <'\t\t\tprintf "#endif\\n" > sysinc\n'> <'\t\t}\n'> <'\n'> <'\t\tif (ncompat6 != 0) {\n'> 
              <'\t\t\tprintf "\\n#ifdef %s\\n", compat6 > sysinc\n'> <'\t\t\tprintf "#define compat6(n, name) n, (sy_call_t *)__CONCAT(freebsd6_,name)\\n" > sysinc\n'> 
              <'\t\t\tprintf "#else\\n" > sysinc\n'> <'\t\t\tprintf "#define compat6(n, name) 0, (sy_call_t *)nosys\\n" > sysinc\n'> 
              <'\t\t\tprintf "#endif\\n" > sysinc\n'> <'\t\t}\n'> <'\n'> <'\t\tif (ncompat7 != 0) {\n'> <'\t\t\tprintf "\\n#ifdef %s\\n", compat7 > sysinc\n'> 
              <
'\t\t\tprintf "#define compat7(n, name) n, (sy_call_t *)__CONCAT(freebsd7_,name)\\n" > sysinc\n'
              > <'\t\t\tprintf "#else\\n" > sysinc\n'> 
              <'\t\t\tprintf "#define compat7(n, name) 0, (sy_call_t *)nosys\\n" > sysinc\n'> <'\t\t\tprintf "#endif\\n" > sysinc\n'> <'\t\t}\n'> <'\t\tif (ncompat10 != 0) {\n'> 
              <'\t\t\tprintf "\\n#ifdef %s\\n", compat10 > sysinc\n'> <'\t\t\tprintf "#define compat10(n, name) n, (sy_call_t *)__CONCAT(freebsd10_,name)\\n" > sysinc\n'> 
              <'\t\t\tprintf "#else\\n" > sysinc\n'> <'\t\t\tprintf "#define compat10(n, name) 0, (sy_call_t *)nosys\\n" > sysinc\n'> 
              <'\t\t\tprintf "#endif\\n" > sysinc\n'> <'\t\t}\n'> <'\t\tprintf("\\n#endif /* %s */\\n\\n", compat) > syscompatdcl\n'> 
              <'\t\tprintf("\\n#endif /* %s */\\n\\n", compat4) > syscompat4dcl\n'> <'\t\tprintf("\\n#endif /* %s */\\n\\n", compat6) > syscompat6dcl\n'> 
              <'\t\tprintf("\\n#endif /* %s */\\n\\n", compat7) > syscompat7dcl\n'> <'\t\tprintf("\\n#endif /* %s */\\n\\n", compat10) > syscompat10dcl\n'> <'\n'> 
              <'\t\tprintf("\\n#undef PAD_\\n") > sysprotoend\n'> <'\t\tprintf("#undef PADL_\\n") > sysprotoend\n'> <'\t\tprintf("#undef PADR_\\n") > sysprotoend\n'> 
              <'\t\tprintf("\\n#endif /* !%s */\\n", sysproto_h) > sysprotoend\n'> <'\n'> <'\t\tprintf("\\n") > sysmk\n'> <'\t\tprintf("};\\n") > sysent\n'> 
              <'\t\tprintf("};\\n") > sysnames\n'> <'\t\tprintf("#define\\t%sMAXSYSCALL\\t%d\\n", syscallprefix, syscall) \\\n'> <'\t\t    > syshdr\n'> 
              <
'\t\tprintf "\\tdefault:\\n\\t\\t*n_args = 0;\\n\\t\\tbreak;\\n\\t};\\n}\\n" > systrace\n'
              > 
              <
'\t\tprintf "\\tdefault:\\n\\t\\tbreak;\\n\\t};\\n\\tif (p != NULL)\\n\\t\\tstrlcpy(desc, p, descsz);\\n}\\n" > systracetmp\n'
              > 
              <
'\t\tprintf "\\tdefault:\\n\\t\\tbreak;\\n\\t};\\n\\tif (p != NULL)\\n\\t\\tstrlcpy(desc, p, descsz);\\n}\\n" > systraceret\n'
              > <'\t} '>
            )
          }
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>} {($ Id.VSub_DollarName '$sysinc')} {($ Id.VSub_DollarName '$sysent')}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$syssw')}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<cat>}
        {($ Id.VSub_DollarName '$sysarg')}
        {($ Id.VSub_DollarName '$sysdcl')}
        {($ Id.VSub_DollarName '$syscompat')}
        {($ Id.VSub_DollarName '$syscompatdcl')}
        {($ Id.VSub_DollarName '$syscompat4')}
        {($ Id.VSub_DollarName '$syscompat4dcl')}
        {($ Id.VSub_DollarName '$syscompat6')}
        {($ Id.VSub_DollarName '$syscompat6dcl')}
        {($ Id.VSub_DollarName '$syscompat7')}
        {($ Id.VSub_DollarName '$syscompat7dcl')}
        {($ Id.VSub_DollarName '$syscompat10')}
        {($ Id.VSub_DollarName '$syscompat10dcl')}
        {($ Id.VSub_DollarName '$sysaue')}
        {($ Id.VSub_DollarName '$sysprotoend')}
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$sysproto')}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>} {($ Id.VSub_DollarName '$systracetmp')}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$systrace')}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>} {($ Id.VSub_DollarName '$systraceret')}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$systrace')}
        )
      ]
      do_fork: T
    )
  ]
)