(CommandList
  children: [
    (C {(Lit_Other ":")} {(cross)} {(compiler)} {(a.out)} {(execution)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(crossexec)} spids:[68])]
      spids: [68]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tmp)
          op: Equal
          rhs: {(/tmp/cross) ($ VSub_Dollar "$$")}
          spids: [72]
        )
      ]
      spids: [72]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Subshell
                    child: 
                      (CommandList
                        children: [
                          (Sentence
                            child: (C {(getopts)} {(SQ <"[-][123:xyz]">)} {(opt)} {(--xyz)})
                            terminator: <Op_Semi ";">
                          )
                          (C {(echo)} {(0) ($ VSub_Name "$opt")})
                        ]
                      )
                    redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[98])]
                    spids: [80 96]
                  )
                ]
              )
            left_token: <Left_Backtick "`">
            spids: [79 100]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(0123)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ARGV0)
                  op: Equal
                  rhs: {(DQ ("-a ") ($ VSub_Name "$command"))}
                  spids: [107]
                )
              ]
              spids: [107]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:USAGE)
                  op: Equal
                  rhs: 
                    {
                      (SQ <"\n"> <"[-?\n"> <"@(#)$Id: crossexec (AT&T Labs Research) 2004-01-04 $\n"> 
                        <"]\n">
                      ) ($ VSub_Name "$USAGE_LICENSE") 
                      (SQ <"\n"> <"[+NAME?crossexec - cross compiler a.out execution]\n"> 
                        <"[+DESCRIPTION?"> <Lit_EscapedChar "\\b"> <crossexec> <Lit_EscapedChar "\\b"> <" runs a cross-compiled "> 
                        <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" in an environment\n"> 
                        <"\tthat supports a cross-compilation architecture different from the\n"> <"\tcurrent host. The cross environment is determined by "> <Lit_EscapedChar "\\a"> <crosstype> 
                        <Lit_EscapedChar "\\a"> <",\n"> <"\tusually a host type name produced by "> <Lit_EscapedChar "\\b"> <package> 
                        <Lit_EscapedChar "\\b"> <"(1). "> <Lit_EscapedChar "\\a"> <crosstype> <Lit_EscapedChar "\\a"> <"\n"> 
                        <"\tis used to find an entry in "> <Lit_EscapedChar "\\b"> <"$HOME/.crossexec"> <Lit_EscapedChar "\\b"> <" that specifies\n"> 
                        <"\tthe cross compiler host and access details.]\n"> <"[+?The exit status of "> <Lit_EscapedChar "\\b"> <crossexec> <Lit_EscapedChar "\\b"> 
                        <" is the exit status of "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <".]\n"> <"[+CROSS ENVIRONMENT FILE?"> 
                        <Lit_EscapedChar "\\b"> <"$HOME/.crossexec"> <Lit_EscapedChar "\\b"> <" contains one line for each\n"> <"\tsupported "> 
                        <Lit_EscapedChar "\\a"> <crosstype> <Lit_EscapedChar "\\a"> <". Each line contains 5 tab separated fields.\n"> 
                        <"\tField default values are specified as "> <Lit_EscapedChar "\\b"> <-> <Lit_EscapedChar "\\b"> <". The fields are:]{\n"> 
                        <"\t[+crosstype?The host type produced by "> <Lit_EscapedChar "\\b"> <package> <Lit_EscapedChar "\\b"> <"(1).]\n"> <"\t[+host?The host name.]\n"> 
                        <"\t[+user?The user name on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". The default is the current user.]\n"> 
                        <"\t[+dir?The directory to copy "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" and execute it. The default\n"> 
                        <"\t\tis the "> <Lit_EscapedChar "\\a"> <user> <Lit_EscapedChar "\\a"> <" "> <Lit_EscapedChar "\\b"> <"$HOME"> 
                        <Lit_EscapedChar "\\b"> <" on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <".]\n"> 
                        <"\t[+shell?The command used to get shell access to "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". Currently\n"> <"\t\tonly "> 
                        <Lit_EscapedChar "\\b"> <rsh> <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <ssh> <Lit_EscapedChar "\\b"> 
                        <" are supported.]\n"> <"\t[+copy?The command used to copy "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" to "> 
                        <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". Currently\n"> <"\t\tonly "> <Lit_EscapedChar "\\b"> <rcp> 
                        <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <scp> <Lit_EscapedChar "\\b"> <" are supported.]\n"> <"}\n"> 
                        <"[n:show?Show the underlying commands but do not execute.]\n"> <"\n"> <"crosstype command [ option ... ] [ file ... ]\n"> <"\n"> <"[+SEE ALSO?"> <Lit_EscapedChar "\\b"> 
                        <rcp> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <rsh> <Lit_EscapedChar "\\b"> <"(1), "> 
                        <Lit_EscapedChar "\\b"> <scp> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <ssh> <Lit_EscapedChar "\\b"> <"(1)]\n">
                      )
                    }
                  spids: [114]
                )
              ]
              spids: [114]
            )
          ]
          spids: [104 105 265 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ARGV0) op:Equal rhs:{(DQ )} spids:[270])]
              spids: [270]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:USAGE)
                  op: Equal
                  rhs: {(DQ ("crosstype command [ option ... ] [ file ... ]"))}
                  spids: [275]
                )
              ]
              spids: [275]
            )
          ]
          spids: [267 268 281 -1]
        )
      ]
      spids: [77 102 283]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(0)} spids:[293])]
              spids: [293]
            )
            (C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)} {(SQ <"-?">)})
            (C {(exit)} {(2)})
          ]
          spids: [290]
        )
      spids: [286 289]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(SQ )} spids:[319])]
      spids: [319]
    )
    (While
      cond: [(C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name "$OPT")}
              arms: [
                (case_arm
                  pat_list: [{(n)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(echo)} spids:[350])]
                      spids: [350]
                    )
                  ]
                  spids: [347 348 353 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(usage)})]
                  spids: [356 357 361 -1]
                )
              ]
              spids: [340 344 364]
            )
          ]
          spids: [338 366]
        )
    )
    (C {(shift)} {($ VSub_Name "$OPTIND") (-1)})
    (Case
      to_match: {($ VSub_Pound "$#")}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other "[") (01) (Lit_Other "]")}]
          action: [(C {(usage)})]
          spids: [379 382 386 -1]
        )
      ]
      spids: [373 377 388]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:type) op:Equal rhs:{($ VSub_Number "$1")} spids:[391])]
      spids: [391]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:cmd) op:Equal rhs:{($ VSub_Number "$1")} spids:[396])]
      spids: [396]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:info)
          op: Equal
          rhs: {($ VSub_Name "$HOME") (/.) ($ VSub_Name "$command")}
          spids: [406]
        )
      ]
      spids: [406]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(KW_Bang "!")} {(-r)} {($ VSub_Name "$info")})]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ($ VSub_Name "$command") (": ") ($ VSub_Name "$info") (": not found"))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[432])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 421]
        )
      ]
      spids: [-1 440]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ifs)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name IFS>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ <"\n"> <"\t ">)})
                spids: [443 450]
              )
            }
          spids: [442]
        )
      ]
      spids: [442]
    )
    (While
      cond: [(C {(Lit_Other ":")})]
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(SQ <"\t">)} spids:[458])]
              spids: [458]
            )
            (C {(read)} {(hosttype)} {(hostname)} {(usr)} {(dir)} {(sh)} {(cp)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:code)
                  op: Equal
                  rhs: {($ VSub_QMark "$?")}
                  spids: [479]
                )
              ]
              spids: [479]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {($ VSub_Name "$ifs")}
                  spids: [483]
                )
              ]
              spids: [483]
            )
            (Case
              to_match: {($ VSub_Name "$code")}
              arms: [
                (case_arm pat_list:[{(0)}] spids:[494495497-1])
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ($ VSub_Name "$command") (": ") ($ VSub_Name "$type") 
                            (": unknown cross compiler host type")
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[512])]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [500 501 521 -1]
                )
              ]
              spids: [487 491 524]
            )
            (Case
              to_match: {($ VSub_Name "$hosttype")}
              arms: [
                (case_arm
                  pat_list: [{($ VSub_Name "$type")}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [534 535 539 -1]
                )
              ]
              spids: [527 531 542]
            )
          ]
          spids: [456 544]
        )
      redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{($ VSub_Name "$info")} spids:[546])]
    )
    (Case
      to_match: {($ VSub_Name "$usr")}
      arms: [
        (case_arm
          pat_list: [{(-)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair lhs:(LhsName name:cpu) op:Equal rhs:{(SQ )} spids:[564])
                (assign_pair lhs:(LhsName name:shu) op:Equal rhs:{(SQ )} spids:[566])
              ]
              spids: [564]
            )
          ]
          spids: [561 562 568 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cpu)
                  op: Equal
                  rhs: {(${ VSub_Name usr) (Lit_Other "@")}
                  spids: [573]
                )
                (assign_pair
                  lhs: (LhsName name:shu)
                  op: Equal
                  rhs: {(DQ ("-l ") ($ VSub_Name "$usr"))}
                  spids: [579]
                )
              ]
              spids: [573]
            )
          ]
          spids: [570 571 585 -1]
        )
      ]
      spids: [555 559 587]
    )
    (Case
      to_match: {($ VSub_Name "$dir")}
      arms: [
        (case_arm
          pat_list: [{(-)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal rhs:{(SQ )} spids:[598])]
              spids: [598]
            )
          ]
          spids: [595 596 600 -1]
        )
      ]
      spids: [589 593 602]
    )
    (Case
      to_match: {($ VSub_Name "$sh")}
      arms: [
        (case_arm
          pat_list: [{(SQ )} {(-)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:sh) op:Equal rhs:{(ssh)} spids:[616])]
              spids: [616]
            )
          ]
          spids: [-1 614 619 -1]
        )
      ]
      spids: [604 608 621]
    )
    (Case
      to_match: {($ VSub_Name "$cp")}
      arms: [
        (case_arm
          pat_list: [{(SQ )} {(-)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:cp) op:Equal rhs:{(scp)} spids:[635])]
              spids: [635]
            )
          ]
          spids: [-1 633 638 -1]
        )
        (case_arm
          pat_list: [{(scp)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cp)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$cp") (" -q"))}
                  spids: [643]
                )
              ]
              spids: [643]
            )
          ]
          spids: [640 641 649 -1]
        )
      ]
      spids: [623 627 651]
    )
    (C {(trap)} {(DQ ("rm -f ") ($ VSub_Name "$tmp"))} {(0)} {(1)} {(2)} {(3)} {(15)})
    (AndOr
      children: [
        (SimpleCommand
          words: [
            {($ VSub_Name "$exec")}
            {($ VSub_Name "$cp")}
            {($ VSub_Name "$cmd")}
            {($ VSub_Name "$cpu") ($ VSub_Name "$hostname") (Lit_Other ":") ($ VSub_Name "$dir")}
          ]
          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[682])]
        )
        (C {(exit)} {(1)})
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cmd)
          op: Equal
          rhs: 
            {(./) 
              (BracedVarSub
                token: <VSub_Name cmd>
                suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)})
                spids: [693 698]
              )
            }
          spids: [691]
        )
      ]
      spids: [691]
    )
    (SimpleCommand
      words: [
        {($ VSub_Name "$exec")}
        {($ VSub_Name "$sh")}
        {($ VSub_Name "$shu")}
        {($ VSub_Name "$hostname")}
        {
          (DQ ("cd ") ($ VSub_Name "$dir") ("; LD_LIBRARY_PATH=: ") ($ VSub_Name "$cmd") (" ") 
            ($ VSub_At "$@") (" </dev/null 2>/dev/null; code=") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("?; rm -f ") 
            ($ VSub_Name "$cmd") ("; echo ") ($ VSub_Name "$command") (": exit ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
            ("code >&2")
          )
        }
      ]
      redirects: [
        (Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[726])
        (Redir op_id:Redir_Great fd:2 arg_word:{($ VSub_Name "$tmp")} spids:[729])
      ]
    )
    (C {(exit)} 
      {
        (CommandSubPart
          command_list: 
            (CommandList
              children: [
                (C {(sed)} {(-e)} {(SQ <"/^">) ($ VSub_Name "$command") (SQ <": exit [0-9][0-9]*$/!d">)} 
                  {(-e)} {(SQ <"s/.* //">)} {($ VSub_Name "$tmp")}
                )
              ]
            )
          left_token: <Left_Backtick "`">
          spids: [734 754]
        )
      }
    )
  ]
)