(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<john>}
          spids: [9]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<1.8.0>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_pkgrel)
          op: assign_op.Equal
          rhs: {<jumbo-1>}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<7>}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: {(DQ <'John the Ripper password cracker'>)}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'http://www.openwall.com/john'>)}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <'x86_64 armhf ppc64le'>)}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <GPL2>)}
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends)
          op: assign_op.Equal
          rhs: {(DQ <nss>)}
          spids: [41]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:options)
          op: assign_op.Equal
          rhs: {(DQ <'!strip'>)}
          spids: [46]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: {(DQ <'libpcap-dev libressl-dev gmp-dev yasm-dev zlib-dev'>)}
          spids: [51]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:install)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [56]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <'-doc\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') 
                <'-scripts-py:py:noarch\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') <'-scripts-perl:perl:noarch\n'> <'\t'> 
                ($ Id.VSub_DollarName '$pkgname') <'-scripts-ruby:ruby:noarch\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') <'-misc::noarch\n'> <'\t'> 
                ($ Id.VSub_DollarName '$pkgname') <'-zsh-completion:zshcomp:noarch\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') 
                <'-bash-completion:bashcomp:noarch\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') <'-jumbo:jumbo:noarch\n'> <'\t'>
              )
            }
          spids: [60]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <-> ($ Id.VSub_DollarName '$pkgver') 
                <'.tar.gz::https://github.com/magnumripper/JohnTheRipper/archive/'> ($ Id.VSub_DollarName '$pkgver') <-> ($ Id.VSub_DollarName '$_pkgrel') <'.tar.gz\n'> 
                <'\ttruecrypt_fmt_plug.patch\n'> <'\tparams-h.patch\n'> <'\tgcc5-support.patch\n'> <'\tlibressl.patch\n'> <'\t'>
              )
            }
          spids: [88]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$srcdir') <'/JohnTheRipper-'> ($ Id.VSub_DollarName '$pkgver') 
                <-> ($ Id.VSub_DollarName '$_pkgrel')
              )
            }
          spids: [105]
        )
      ]
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/src'>})
            (C {<sed>} {<-i>} {<-e>} 
              {
                (DQ <'s/ac_default_prefix.*/ac_default_prefix='> <Id.Lit_BadBackslash '\\'> <'/usr/g'>)
              } {<configure>}
            )
            (C {<export>} {<Id.Lit_VarLike 'OPENSSL_LIBS='> (DQ <'-lssl -lcrypto'>)})
            (C {<'./configure'>} {<--disable-openmp>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<make>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin'>})
            (C {<mkdir>} {<-p>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/share/doc/'> 
                ($ Id.VSub_DollarName '$pkgname')
              }
            )
            (C {<install>} {<-Dm644>} {<'run/john.conf'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/etc/john/john.conf'>}
            )
            (C {<install>} {<-Dm644>} {<'run/john.local.conf'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/etc/john/john.local.conf'>}
            )
            (C {<install>} {<-Dm644>} {<'doc/'> <Id.Lit_Star '*'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/share/doc/'> 
                ($ Id.VSub_DollarName '$pkgname')
              }
            )
            (C {<install>} {<-Dm644>} {<'doc/LICENSE'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/share/licenses/'> 
                ($ Id.VSub_DollarName '$pkgname') <'/LICENSE'>
              }
            )
            (C {<rm>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/share/doc/'> 
                ($ Id.VSub_DollarName '$pkgname') <'/LICENSE'> <Id.Lit_Star '*'>
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'john_bins='> 
                (DQ <'john calc_stat genmkvpwd mkvcalcproba relbench\n'> <'\t\t\ttgtsnarf raw2dyna'>)
              }
            )
            (command.ForEach
              iter_name: bin
              iter_words: [{(${ Id.VSub_Name john_bins)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<install>} {<-Dm755>} {<'run/'> (${ Id.VSub_Name bin)} 
                      {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin'>}
                    )
                  ]
                )
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'john_links='> 
                (DQ <'hccap2john keepass2john mozilla2john pdf2john\n'> 
                  <'\t\t\tpfx2john pwsafe2john racf2john rar2john ssh2john\n'> <'\t\t\tunafs unique unsahdow undrop zip2john'>
                )
              }
            )
            (command.ForEach
              iter_name: link
              iter_words: [{(${ Id.VSub_Name john_links)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<ln>} {<-s>} {<john>} 
                      {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin/'> (${ Id.VSub_Name link)}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: py
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: {(DQ <'libxml2 libgsf'>)}
                  spids: [364]
                )
              ]
            )
            (C {<_script>} {<python>} {(DQ <'*.py'>)})
          ]
        )
    )
    (command.ShFunction
      name: perl
      body: (BraceGroup children:[(C {<_script>} {<perl>} {(DQ <'*.pl benchmark-unify'>)})])
    )
    (command.ShFunction
      name: ruby
      body: (BraceGroup children:[(C {<_script>} {<ruby>} {(DQ <'*.rb'>)})])
    )
    (command.ShFunction
      name: _script
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'lang='> (DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$depends') <' '> ($ Id.VSub_DollarName '$lang'))}
                  spids: [433]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'John the Ripper ('> ($ Id.VSub_DollarName '$lang') <' scripts)'>)}
                  spids: [441]
                )
              ]
            )
            (C {<_install>} {<755>} {(DQ ($ Id.VSub_Number '$2'))})
          ]
        )
    )
    (command.ShFunction
      name: misc
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'Misc tools for John the Ripper: password list and charset files'>)}
                  spids: [467]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'john_pwd='> (DQ <'password.lst dictionary.rfc2865 stats'>)})
            (C {<local>} {<Id.Lit_VarLike 'john_chr='> (DQ <'*.chr'>)})
            (C {<local>} 
              {<Id.Lit_VarLike 'john_cfg='> 
                (DQ <'dumb*.conf repeats*.conf dynamic*.conf\n'> 
                  <'\t\t\tkorelogic.conf regex_alphabets.conf'>
                )
              }
            )
            (C {<_install>} {<644>} 
              {
                (DQ ($ Id.VSub_DollarName '$john_pwd') <' '> ($ Id.VSub_DollarName '$john_cfg') <' '> 
                  ($ Id.VSub_DollarName '$john_chr')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: _install
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'perm='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} {<Id.Lit_VarLike 'files='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<mkdir>} {<-p>} 
              {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/share/'> 
                ($ Id.VSub_DollarName '$pkgname')
              }
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/run'>})
            (command.ForEach
              iter_name: f
              iter_words: [{(${ Id.VSub_Name files)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<install>} {<-Dm> (${ Id.VSub_Name perm)} {(${ Id.VSub_Name f)} 
                      {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/share/john'>}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: bashcomp
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [599]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'Bash completions for '> ($ Id.VSub_DollarName '$pkgname'))}
                  spids: [604]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_if)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$pkgname') <'='> ($ Id.VSub_DollarName '$pkgver') <-r> 
                        ($ Id.VSub_DollarName '$pkgrel') <' bash-completion'>
                      )
                    }
                  spids: [611]
                )
              ]
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-Dm644>} {<'run/john.bash_completion'>} 
                  {(DQ ($ Id.VSub_DollarName '$subpkgdir')) 
                    <'/usr/share/bash-completion/completions/'> ($ Id.VSub_DollarName '$pkgname')
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: zshcomp
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [660]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'Zsh completions for '> ($ Id.VSub_DollarName '$pkgname'))}
                  spids: [665]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_if)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$pkgname') <'='> ($ Id.VSub_DollarName '$pkgver') <-r> 
                        ($ Id.VSub_DollarName '$pkgrel') <' zsh'>
                      )
                    }
                  spids: [672]
                )
              ]
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-Dm644>} {<'run/john.zsh_completion'>} 
                  {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/share/zsh/site-functions/'> 
                    ($ Id.VSub_DollarName '$pkgname')
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: jumbo
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$pkgdesc') <' (jumbo pack)'>)}
                  spids: [721]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$pkgname') <'-scripts-py '> 
                        ($ Id.VSub_DollarName '$pkgname') <'-scripts-perl\n'> <'\t\t'> ($ Id.VSub_DollarName '$pkgname') <'-scripts-ruby '> 
                        ($ Id.VSub_DollarName '$pkgname') <-misc>
                      )
                    }
                  spids: [728]
                )
              ]
            )
            (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$subpkgdir'))})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'8b7fad7a6330b5ff1afc306218ba698aaa27776b566f82c2e76102d5ceb10aeafa69d71fa6fff67c81996ea2c6a04384bab4696ed192306c6d074873562e7089  john-1.8.0.tar.gz\n'
                > 
                <
'80be6cc1b1b35c6a85392008638b2f8b6d8a518ee35f59405e2f5682e025e4b8beecf964148311e6f62d76b59153f04427024fa81aaf56ee2062ac2dbf0a9bcb  truecrypt_fmt_plug.patch\n'
                > 
                <
'a5c22feb8bf11509c306a2f236f2bd4891fdfc3b01882f07d85015e0895d82f28df0dff78ba8d3a3862d8d95877a88a9eb8138e6c407b40881fa1455079b98fc  params-h.patch\n'
                > 
                <
'4ebe8b41b1d0c3839348dcf5348332f9d7ce25919077fa054db64b7106150f299c6b177d117f7c18c1db672a494a6de6be8b5afe502f5ca3639602ba3aef6866  gcc5-support.patch\n'
                > 
                <
'fb46431fe3e42e36c72361c13460e8ac626d2f146fa84c8f6e17e5407e69530a84ceb1de6bc9910c1a03a6e907fc113f7000a2cbc3936ae0860103d3e2d489b0  libressl.patch'
                >
              )
            }
          spids: [751]
        )
      ]
    )
  ]
)