(command.CommandList
  children: [
    (command.ShFunction
      name: unmount_devpts
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(mountpoint)} {(-q)} {(/dev/pts/)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:45)
                    )
                  ]
                  action: [(C {(umount)} {(-n)} {(-l)} {(/dev/pts/)})]
                  spids: [38 47]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(mountpoint)} {(-q)} {(/dev/shm/)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:70)
                    )
                  ]
                  action: [(C {(umount)} {(-n)} {(-l)} {(/dev/shm/)})]
                  spids: [63 72]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: mount_devtmpfs
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(grep)} {(-E)} {(-q)} {(DQ ('^[^[:space:]]+ /dev devtmpfs'))} {(/proc/mounts)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:112)
                    )
                  ]
                  action: [
                    (C {(mount)} {(-n)} {(-o)} 
                      {(remount) (Id.Lit_Comma ',') (nosuid) (Id.Lit_Comma ',') (Id.Lit_VarLike 'size=') 
                        ($ Id.VSub_DollarName '$tmpfs_size') (Id.Lit_Comma ',') (Id.Lit_VarLike 'mode=') (0755)
                      } {(-t)} {(devtmpfs)} {(devtmpfs)} {(/dev)}
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:142)
                    )
                  ]
                  spids: [99 114]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(mount)} {(-n)} {(-o)} 
                              {(nosuid) (Id.Lit_Comma ',') (Id.Lit_VarLike 'size=') 
                                ($ Id.VSub_DollarName '$tmpfs_size') (Id.Lit_Comma ',') (Id.Lit_VarLike 'mode=') (0755)
                              } {(-t)} {(devtmpfs)} {(devtmpfs)} {(/dev)}
                            )
                          ]
                          negated: T
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:174)
                    )
                  ]
                  action: [
                    (C {(log_failure_msg)} {(DQ ('udev requires devtmpfs support, not started'))})
                    (C {(log_end_msg)} {(1)})
                  ]
                  spids: [149 176]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:195)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: create_dev_makedev
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-e)} {(/sbin/MAKEDEV)} {(Id.Lit_RBracket ']')})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:218)
                    )
                  ]
                  action: [(C {(ln)} {(-sf)} {(/sbin/MAKEDEV)} {(/dev/MAKEDEV)})]
                  spids: [209 220]
                )
              ]
              else_action: [(C {(ln)} {(-sf)} {(/bin/true)} {(/dev/MAKEDEV)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: supported_kernel
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: 
                {
                  (DQ 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:259)
                      command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {(2.) (Id.Lit_LBracket '[') (012345) (Id.Lit_RBracket ']') (.) (Id.Lit_Star '*')}
                    {(2.6.) (Id.Lit_LBracket '[') (0-9) (Id.Lit_RBracket ']')}
                    {(2.6.) (Id.Lit_LBracket '[') (0-9) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') 
                      (Id.KW_Bang '!') (0-9) (Id.Lit_RBracket ']') (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:292)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [269 290 296 -1]
                )
                (case_arm
                  pat_list: [
                    {(2.6.) (Id.Lit_LBracket '[') (12) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (0-9) 
                      (Id.Lit_RBracket ']')
                    }
                    {(2.6.) (Id.Lit_LBracket '[') (12) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (0-9) 
                      (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Id.KW_Bang '!') (0-9) (Id.Lit_RBracket ']') (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:321)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [299 319 325 -1]
                )
                (case_arm
                  pat_list: [
                    {(2.6.3) (Id.Lit_LBracket '[') (0-1) (Id.Lit_RBracket ']')}
                    {(2.6.3) (Id.Lit_LBracket '[') (0-1) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') 
                      (Id.KW_Bang '!') (0-9) (Id.Lit_RBracket ']') (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:344)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [328 342 348 -1]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:354)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: my_tty
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-x)} {(/bin/readlink)} {(Id.Lit_RBracket ']')})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:381)
                  arg_word: {(0)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-e)} {(/proc/self/fd/0)} {(Id.Lit_RBracket ']')})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:396)
                  arg_word: {(0)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(readlink)} {(--silent)} {(/proc/self/fd/0)}) (C {(true)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: warn_if_interactive
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$RUNLEVEL'))} 
                          {(Id.Lit_Equals '=')} {(DQ (S))} {(-a)} {(DQ ($ Id.VSub_DollarName '$PREVLEVEL'))} {(Id.Lit_Equals '=')} {(DQ (N))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:448)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:453)
                    )
                  ]
                  spids: [421 450]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TTY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:461)
                        command_list: (command.CommandList children:[(C {(my_tty)})])
                      )
                    }
                  spids: [460]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$TTY'))} {(-o)} 
                          {(DQ ($ Id.VSub_DollarName '$TTY'))} {(Id.Lit_Equals '=')} {(DQ (/dev/console))} {(-o)} {(DQ ($ Id.VSub_DollarName '$TTY'))} 
                          {(Id.Lit_Equals '=')} {(DQ (/dev/null))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:501)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:506)
                    )
                  ]
                  spids: [466 503]
                )
              ]
            )
            (C {(printf)} 
              {
                (DQ (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') 
                  ('nIt has been detected that the command') (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (t) ($ Id.VSub_Number '$0') (' ') 
                  ($ Id.VSub_Star '$*') (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (n)
                )
              }
            )
            (C {(printf)} {(DQ ('has been run from an interactive shell.') (Id.Lit_Other '\\') (n))})
            (C {(printf)} 
              {
                (DQ ('It will probably not do what you expect, so this script will wait') 
                  (Id.Lit_Other '\\') (n)
                )
              }
            )
            (C {(printf)} 
              {(DQ ('60 seconds before continuing. Press ^C to stop it.') (Id.Lit_Other '\\') (n))}
            )
            (C {(printf)} 
              {
                (DQ ('RUNNING THIS COMMAND IS HIGHLY DISCOURAGED!') (Id.Lit_Other '\\') (n) 
                  (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (n) (Id.Lit_Other '\\') (n)
                )
              }
            )
            (C {(sleep)} {(60)})
          ]
        )
    )
    (command.ShFunction
      name: make_static_nodes
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-e)} 
                  {(/lib/modules/) 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:599)
                      command_list: (command.CommandList children:[(C {(uname)} {(-r)})])
                    ) (/modules.devname)
                  } {(Id.Lit_RBracket ']')}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:610)
                  arg_word: {(0)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-x)} {(/bin/kmod)} {(Id.Lit_RBracket ']')})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:625)
                  arg_word: {(0)}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(/bin/kmod)} {(static-nodes)} {(--format) (Id.Lit_Equals '=') (tmpfiles)} 
                  {(--output) (Id.Lit_Equals '=') (/proc/self/fd/1)}
                )
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:647)
                  cond: [
                    (command.Sentence
                      child: (C {(read)} {(type)} {(name)} {(mode)} {(uid)} {(gid)} {(age)} {(arg)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:664)
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(Id.Lit_LBracket '[')} {(-e)} {($ Id.VSub_DollarName '$name')} 
                              {(Id.Lit_RBracket ']')}
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:679)
                            )
                          ]
                        )
                        (command.Case
                          to_match: {(DQ ($ Id.VSub_DollarName '$type'))}
                          arms: [
                            (case_arm
                              pat_list: [{(c)} {(b)} {(c) (Id.KW_Bang '!')} {(b) (Id.KW_Bang '!')}]
                              action: [
                                (C {(mknod)} {(-m)} {($ Id.VSub_DollarName '$mode')} 
                                  {($ Id.VSub_DollarName '$name')} {($ Id.VSub_DollarName '$type')} 
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:712)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (command.Pipeline
                                              children: [
                                                (C {(echo)} {($ Id.VSub_DollarName '$arg')})
                                                (C {(sed)} 
                                                  {
                                                    (SQ 
                                                      (Token
                                                        id: Id.Lit_Chars
                                                        val: 's/:/ /'
                                                        span_id: 722
                                                      )
                                                    )
                                                  }
                                                )
                                              ]
                                              negated: F
                                            )
                                          ]
                                        )
                                    )
                                  }
                                )
                              ]
                              spids: [691 700 726 -1]
                            )
                            (case_arm
                              pat_list: [{(d)} {(d) (Id.KW_Bang '!')}]
                              action: [(C {(mkdir)} {($ Id.VSub_DollarName '$name')})]
                              spids: [729 733 739 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (command.Simple
                                  words: [
                                    {(echo)}
                                    {
                                      (DQ ('unparseable line (') ($ Id.VSub_DollarName '$type') (' ') 
                                        ($ Id.VSub_DollarName '$name') (' ') ($ Id.VSub_DollarName '$mode') (' ') ($ Id.VSub_DollarName '$uid') (' ') 
                                        ($ Id.VSub_DollarName '$gid') (' ') ($ Id.VSub_DollarName '$age') (' ') ($ Id.VSub_DollarName '$arg') (')')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:765)
                                      fd: -1
                                      arg_word: {(2)}
                                    )
                                  ]
                                )
                              ]
                              spids: [742 743 768 -1]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {(Id.Lit_LBracket '[')} {(-x)} {(/sbin/restorecon)} 
                                      {(Id.Lit_RBracket ']')}
                                    )
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:784)
                                )
                              ]
                              action: [(C {(/sbin/restorecon)} {($ Id.VSub_DollarName '$name')})]
                              spids: [775 786]
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {(DQ ('/sbin:/bin'))}
          spids: [807]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NAME)
          op: assign_op.Equal
          rhs: {(DQ (systemd-udevd))}
          spids: [812]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DAEMON)
          op: assign_op.Equal
          rhs: {(DQ (/lib/systemd/systemd-udevd))}
          spids: [817]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DESC)
          op: assign_op.Equal
          rhs: {(DQ ('the hotplug events dispatcher'))}
          spids: [822]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(Id.Lit_LBracket '[')} {(-x)} {($ Id.VSub_DollarName '$DAEMON')} {(Id.Lit_RBracket ']')})
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:838)
          arg_word: {(0)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmpfs_size)
          op: assign_op.Equal
          rhs: {(DQ (10M))}
          spids: [846]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Id.Lit_LBracket '[')} {(-e)} {(/etc/udev/udev.conf)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:861)
            )
          ]
          action: [(C {(.)} {(/etc/udev/udev.conf)})]
          spids: [852 863]
        )
      ]
    )
    (C {(.)} {(/lib/lsb/init-functions)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (command.Pipeline children:[(C {(supported_kernel)})] negated:T)
              terminator: (Token id:Id.Op_Semi val:';' span_id:883)
            )
          ]
          action: [
            (C {(log_failure_msg)} {(DQ ('udev requires a kernel >= 2.6.32, not started'))})
            (C {(log_end_msg)} {(1)})
          ]
          spids: [878 885]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} {(/proc/filesystems)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:913)
            )
          ]
          action: [
            (C {(log_failure_msg)} {(DQ ('udev requires a mounted procfs, not started'))})
            (C {(log_end_msg)} {(1)})
          ]
          spids: [902 915]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(grep)} {(-q)} 
                      {(SQ (Token id:Id.Lit_Chars val:'[[:space:]]devtmpfs$' span_id:941))} {(/proc/filesystems)}
                    )
                  ]
                  negated: T
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:945)
            )
          ]
          action: [
            (C {(log_failure_msg)} {(DQ ('udev requires devtmpfs support, not started'))})
            (C {(log_end_msg)} {(1)})
          ]
          spids: [932 947]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} {(/sys/class/)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:975)
            )
          ]
          action: [
            (C {(log_failure_msg)} {(DQ ('udev requires a mounted sysfs, not started'))})
            (C {(log_end_msg)} {(1)})
          ]
          spids: [964 977]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(ps)} {(--no-headers)} {(--format)} {(args)} {(ax)})
                    (C {(egrep)} {(-q)} {(SQ (Token id:Id.Lit_Chars val:'^\\[' span_id:1015))})
                  ]
                  negated: T
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1017)
            )
          ]
          action: [
            (C {(log_warning_msg)} {(DQ ('udev does not support containers, not started'))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1029)
              arg_word: {(0)}
            )
          ]
          spids: [994 1019]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(Id.Lit_LBracket '[')} {(-d)} {(/sys/class/mem/null)} {(-a)} {(Id.KW_Bang '!')} 
                      {(-L)} {(/sys/class/mem/null)} {(Id.Lit_RBracket ']')}
                    )
                    (C {(Id.Lit_LBracket '[')} {(-e)} {(/sys/block)} {(-a)} {(Id.KW_Bang '!')} {(-e)} 
                      {(/sys/class/block)} {(Id.Lit_RBracket ']')}
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1073)
            )
          ]
          action: [
            (C {(log_warning_msg)} {(DQ ('CONFIG_SYSFS_DEPRECATED must not be selected'))})
            (C {(log_warning_msg)} 
              {(DQ ('Booting will continue in 30 seconds but many things will be broken'))}
            )
            (C {(sleep)} {(30)})
          ]
          spids: [1036 1075]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{(start)}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(init_is_upstart)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:1126)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1128)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1133)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1122 1130]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} {(DQ (/run/udev/))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1155)
                    )
                  ]
                  action: [(C {(warn_if_interactive)})]
                  spids: [1142 1157]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-w)} {(/sys/kernel/uevent_helper)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1176)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1183)
                          fd: -1
                          arg_word: {(/sys/kernel/uevent_helper)}
                        )
                      ]
                    )
                  ]
                  spids: [1167 1178]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(mountpoint)} {(-q)} {(/dev/)})]
                          negated: T
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1201)
                    )
                  ]
                  action: [
                    (C {(unmount_devpts)})
                    (C {(mount_devtmpfs)})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(Id.Lit_LBracket '[')} {(-d)} {(/proc/1)} {(Id.Lit_RBracket ']')})
                        (C {(mount)} {(-n)} {(/proc)})
                      ]
                    )
                  ]
                  spids: [1192 1203]
                )
              ]
            )
            (C {(make_static_nodes)})
            (C {(udevadm)} {(info)} {(--cleanup-db)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-x)} {(/sbin/restorecon)} {(Id.Lit_RBracket ']')})
                (C {(/sbin/restorecon)} {(-R)} {(/dev)})
              ]
            )
            (C {(log_daemon_msg)} {(DQ ('Starting ') ($ Id.VSub_DollarName '$DESC'))} 
              {(DQ ($ Id.VSub_DollarName '$NAME'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {($ Id.VSub_DollarName '$DAEMON')} {(--daemon)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1288)
                    )
                  ]
                  action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
                  spids: [1283 1290]
                )
              ]
              else_action: [
                (C {(log_warning_msg)} {($ Id.VSub_QMark '$?')})
                (C {(log_warning_msg)} {(DQ ('Waiting 15 seconds and trying to continue anyway'))})
                (C {(sleep)} {(15)})
              ]
            )
            (C {(log_action_begin_msg)} {(DQ ('Synthesizing the initial hotplug events'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(udevadm)} {(trigger)} {(--action) (Id.Lit_Equals '=') (add)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1338)
                    )
                  ]
                  action: [(C {(log_action_end_msg)} {($ Id.VSub_QMark '$?')})]
                  spids: [1329 1340]
                )
              ]
              else_action: [(C {(log_action_end_msg)} {($ Id.VSub_QMark '$?')})]
            )
            (C {(create_dev_makedev)})
            (C {(log_action_begin_msg)} {(DQ ('Waiting for /dev to be fully populated'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(udevadm)} {(settle)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1380)
                    )
                  ]
                  action: [(C {(log_action_end_msg)} {(0)})]
                  spids: [1375 1382]
                )
              ]
              else_action: [
                (C {(log_action_end_msg)} {(0)} {(SQ (Token id:Id.Lit_Chars val:timeout span_id:1398))})
              ]
            )
          ]
          spids: [1118 1119 1405 -1]
        )
        (case_arm
          pat_list: [{(stop)}]
          action: [
            (C {(log_daemon_msg)} {(DQ ('Stopping ') ($ Id.VSub_DollarName '$DESC'))} 
              {(DQ ($ Id.VSub_DollarName '$NAME'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(start-stop-daemon)} {(--stop)} {(--name)} {($ Id.VSub_DollarName '$NAME')} 
                          {(--user)} {(root)} {(--quiet)} {(--oknodo)} {(--retry)} {(5)}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1446)
                    )
                  ]
                  action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
                  spids: [1425 1448]
                )
              ]
              else_action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
            )
          ]
          spids: [1409 1410 1467 -1]
        )
        (case_arm
          pat_list: [{(restart)}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(init_is_upstart)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:1479)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1481)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1486)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1475 1483]
                )
              ]
            )
            (C {(log_daemon_msg)} {(DQ ('Stopping ') ($ Id.VSub_DollarName '$DESC'))} 
              {(DQ ($ Id.VSub_DollarName '$NAME'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(start-stop-daemon)} {(--stop)} {(--name)} {($ Id.VSub_DollarName '$NAME')} 
                          {(--user)} {(root)} {(--quiet)} {(--oknodo)} {(--retry)} {(5)}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1527)
                    )
                  ]
                  action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
                  spids: [1506 1529]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')}) (C {(true)})]
                )
              ]
            )
            (C {(log_daemon_msg)} {(DQ ('Starting ') ($ Id.VSub_DollarName '$DESC'))} 
              {(DQ ($ Id.VSub_DollarName '$NAME'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {($ Id.VSub_DollarName '$DAEMON')} {(--daemon)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1570)
                    )
                  ]
                  action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
                  spids: [1565 1572]
                )
              ]
              else_action: [(C {(log_end_msg)} {($ Id.VSub_QMark '$?')})]
            )
          ]
          spids: [1471 1472 1591 -1]
        )
        (case_arm
          pat_list: [{(reload)} {(force-reload)}]
          action: [(C {(udevadm)} {(control)} {(--reload-rules)})]
          spids: [1595 1598 1608 -1]
        )
        (case_arm
          pat_list: [{(status)}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(status_of_proc)} {($ Id.VSub_DollarName '$DAEMON')} 
                  {($ Id.VSub_DollarName '$NAME')}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:1624)
                  arg_word: {(0)}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:1630)
                  arg_word: {($ Id.VSub_QMark '$?')}
                )
              ]
            )
          ]
          spids: [1612 1613 1635 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(DQ ('Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload|status}'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1649)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1653)
              arg_word: {(1)}
            )
          ]
          spids: [1639 1640 1658 -1]
        )
      ]
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:1663) arg_word:{(0)})
  ]
)