(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_flavor)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FLAVOR>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<hardened>})
              )
            }
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_kpkg)
          op: assign_op.Equal
          rhs: {<linux-> ($ Id.VSub_DollarName '$_flavor')}
          spids: [14]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_kver)
          op: assign_op.Equal
          rhs: {<4.9.54>}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_kpkgrel)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_ver)
          op: assign_op.Equal
          rhs: {<5.1.26>}
          spids: [28]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_mypkgrel)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_name)
          op: assign_op.Equal
          rhs: {<virtualbox-guest-modules>}
          spids: [34]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_kpkgver)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$_kver') <-r> ($ Id.VSub_DollarName '$_kpkgrel'))}
          spids: [38]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_abi_release)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name _kver) <-> (${ Id.VSub_Name _kpkgrel) <-> (${ Id.VSub_Name _flavor)}
          spids: [45]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_abi_release_virthardened)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name _kver) <-> (${ Id.VSub_Name _kpkgrel) <-virthardened>}
          spids: [58]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name _name) <-> (${ Id.VSub_Name _flavor)}
          spids: [69]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$_kver')}
          spids: [78]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: {($ Id.VSub_DollarName '$_kpkgrel')}
                    right: {($ Id.VSub_DollarName '$_mypkgrel')}
                  )
              )
            }
          spids: [81]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'VirtualBox Additions guest kernel modules for '> ($ Id.VSub_DollarName '$_flavor'))
            }
          spids: [91]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(SQ <'x86 x86_64'>)}
          spids: [97]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(SQ <'http://virtualbox.org'>)}
          spids: [102]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <'GPL custom'>)}
          spids: [107]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'linux-hardened-dev='> ($ Id.VSub_DollarName '$_kpkgver') 
                <' linux-virthardened-dev='> ($ Id.VSub_DollarName '$_kpkgver') <' sed coreutils'>
              )
            }
          spids: [112]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$_name') <'-virthardened:_virthardened'>)}
          spids: [121]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'http://download.virtualbox.org/virtualbox/'> ($ Id.VSub_DollarName '$_ver') 
                <'/VirtualBox-'> ($ Id.VSub_DollarName '$_ver') <'.tar.bz2\n'> <'\tvboxguest-log-use-c99.patch\n'> 
                <'\tconst-struct-kernel_param.patch\n'> <'\t'>
              )
            }
          spids: [127]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:provides)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (${ Id.VSub_Name _name) <'-grsec='> (${ Id.VSub_Name pkgver) <-r> 
                (${ Id.VSub_Name pkgrel)
              )
            }
          spids: [139]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$srcdir')) <'/VirtualBox-'> ($ Id.VSub_DollarName '$_ver')}
          spids: [154]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<i>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_kapkbuild)
                              op: assign_op.Equal
                              rhs: 
                                {(DQ ($ Id.VSub_DollarName '$startdir')) <'/../../main/linux-'> 
                                  (${ Id.VSub_Name _flavor) <'/APKBUILD'>
                                }
                              spids: [182]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                                          {($ Id.VSub_DollarName '$_kapkbuild')} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (C {<.>} {($ Id.VSub_DollarName '$_kapkbuild')})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:pkgname)
                                      op: assign_op.Equal
                                      rhs: 
                                        {($ Id.VSub_DollarName '$_name') <-> 
                                          ($ Id.VSub_DollarName '$_flavor')
                                        }
                                      spids: [212]
                                    )
                                  ]
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName '$_kver'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$pkgver'))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<die>} 
                                          {
                                            (DQ <'please update _kver to '> 
                                              ($ Id.VSub_DollarName '$pkgver')
                                            )
                                          }
                                        )
                                      ]
                                      spids: [218 236]
                                    )
                                  ]
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName '$_kpkgrel'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$pkgrel'))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<die>} 
                                          {
                                            (DQ <'please update _kpkgrel to '> 
                                              ($ Id.VSub_DollarName '$pkgrel')
                                            )
                                          }
                                        )
                                      ]
                                      spids: [250 268]
                                    )
                                  ]
                                )
                              ]
                              spids: [193 204]
                            )
                          ]
                        )
                      ]
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<default_prepare>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C 
                  {(DQ ($ Id.VSub_DollarName '$builddir')) 
                    <'/src/VBox/Additions/linux/export_modules'>
                  } {(DQ ($ Id.VSub_DollarName '$srcdir') <'/vbox-kmod-'> ($ Id.VSub_DollarName '$_ver') <.tar.gz>)}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ForEach
              iter_name: i
              iter_words: [
                {($ Id.VSub_DollarName '$_abi_release')}
                {($ Id.VSub_DollarName '$_abi_release_virthardened')}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mkdir>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$i'))}
                    )
                    (C {<tar>} {<-C>} 
                      {(DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$i'))} {<-zxf>} 
                      {(DQ ($ Id.VSub_DollarName '$srcdir')) <'/vbox-kmod-'> 
                        ($ Id.VSub_DollarName '$_ver') <.tar.gz>
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<i>})
            (command.ForEach
              iter_name: i
              iter_words: [
                {($ Id.VSub_DollarName '$_abi_release')}
                {($ Id.VSub_DollarName '$_abi_release_virthardened')}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$i'))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<make>} 
                          {<Id.Lit_VarLike 'KERN_DIR='> <'/lib/modules/'> (${ Id.VSub_Name i) 
                            <'/build'>
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<i>} {<Id.Lit_VarLike 'module='>})
            (command.ForEach
              iter_name: i
              iter_words: [
                {($ Id.VSub_DollarName '$_abi_release')}
                {($ Id.VSub_DollarName '$_abi_release_virthardened')}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$i'))})
                    (command.ForEach
                      iter_name: module
                      iter_words: [{<Id.Lit_Star '*'> <.ko>}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<install>} {<-v>} {<-D>} {<-m644>} {(${ Id.VSub_Name module)} 
                              {
                                (DQ ($ Id.VSub_DollarName '$pkgdir') <'/lib/modules/'> 
                                  ($ Id.VSub_DollarName '$i') <'/misc/'> (${ Id.VSub_Name module)
                                )
                              }
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: _virthardened
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'VirtualBox Additions kernel modules for virthardened'>)}
                  spids: [535]
                )
              ]
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/lib/modules/'>})
            (C {<rm>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/lib/modules/'> 
                ($ Id.VSub_DollarName '$_abi_release_virthardened') <'/misc/vboxvideo.ko'>
              }
            )
            (C {<mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/lib/modules/'> 
                ($ Id.VSub_DollarName '$_abi_release_virthardened')
              } {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/lib/modules/'>}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'680e9646a51a0a5923b3ded10007ee1c1e2a41c6d8a961d2b2540db6578bed2847154f4cac87e3cfe1118a62595b47c7df99da854f6c340e173b9eb8cacf2add  VirtualBox-5.1.26.tar.bz2\n'
                > 
                <
'bd934e9ed3d2324ef66e2539d2f3f6fab35a8858d670bba817b9cabfe66e85fe13a8594b35f4a8e639841f72fb0b8d12af38518ba25638da5ef338b259ab600b  vboxguest-log-use-c99.patch\n'
                > 
                <
'd069876f93e431833800c1d26ea77ae1dec40c840bb549cf519ceea93ee1ca89bcb262a13b00001503d19e596965d74a71a7f49be232ea892a82114d3ea4337c  const-struct-kernel_param.patch'
                >
              )
            }
          spids: [583]
        )
      ]
    )
  ]
)