(List
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[LIT_CHARS Yes]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('OPTIONS_KEEPDASHDASH', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('OPTIONS_SPEC', {[DQ [LIT_CHARS "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] [<upstream>] [<branch>]\n"][LIT_CHARS "git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]\n"][LIT_CHARS "git-rebase [-i] --continue | --abort | --skip\n"][LIT_CHARS "--\n"][LIT_CHARS " Available options are\n"][LIT_CHARS "v,verbose!         display a diffstat of what changed upstream\n"][LIT_CHARS "q,quiet!           be quiet. implies --no-stat\n"][LIT_CHARS "onto=!             rebase onto given branch instead of upstream\n"][LIT_CHARS "p,preserve-merges! try to recreate merges instead of ignoring them\n"][LIT_CHARS "s,strategy=!       use the given merge strategy\n"][LIT_CHARS "no-ff!             cherry-pick all commits, even if unchanged\n"][LIT_CHARS "m,merge!           use merging strategies to rebase\n"][LIT_CHARS "i,interactive!     let the user edit the list of commits to rebase\n"][LIT_CHARS "x,exec=!           add exec lines after each commit of the editable list\n"][LIT_CHARS "k,keep-empty\t   preserve empty commits during rebase\n"][LIT_CHARS "f,force-rebase!    force rebase even if branch is up to date\n"][LIT_CHARS "X,strategy-option=! pass the argument through to the merge strategy\n"][LIT_CHARS "stat!              display a diffstat of what changed upstream\n"][LIT_CHARS "n,no-stat!         do not show diffstat of what changed upstream\n"][LIT_CHARS "verify             allow pre-rebase hook to run\n"][LIT_CHARS "rerere-autoupdate  allow rerere to update index with resolved conflicts\n"][LIT_CHARS "root!              rebase all reachable commits up to the root(s)\n"][LIT_CHARS "autosquash         move commits that begin with squash!/fixup! under -i\n"][LIT_CHARS "committer-date-is-author-date! passed to 'git am'\n"][LIT_CHARS "ignore-date!       passed to 'git am'\n"][LIT_CHARS "whitespace=!       passed to 'git apply'\n"][LIT_CHARS "ignore-whitespace! passed to 'git apply'\n"][LIT_CHARS "C=!                passed to 'git apply'\n"][LIT_CHARS " Actions:\n"][LIT_CHARS "continue!          continue\n"][LIT_CHARS "abort!             abort and check out the original branch\n"][LIT_CHARS "skip!              skip current patch and continue\n"]]})])
  (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}  )
  (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-i18n]}  )
  (Com {[LIT_CHARS set_reflog_action]} {[LIT_CHARS rebase]}  )
  (Com {[LIT_CHARS require_work_tree_exists]}  )
  (Com {[LIT_CHARS cd_to_toplevel]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('LF', {[SQ <LIT_CHARS "\n">]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('resolvemsg', {[DQ [LIT_CHARS "\n"][ComSub (Com {[LIT_CHARS gettext]} {[SQ <LIT_CHARS "When you have resolved this problem, run \"git rebase --continue\".\n"> <LIT_CHARS "If you prefer to skip this patch, run \"git rebase --skip\" instead.\n"> <LIT_CHARS "To check out the original branch and stop rebasing, run \"git rebase --abort\".">]})][LIT_CHARS "\n"]]})])
  (Com {[LIT_CHARS unset]} {[LIT_CHARS onto]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('cmd', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy_opts', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('do_merge', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('merge_dir', {[DQ [VarSub GIT_DIR]] [LIT_CHARS /rebase-merge]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('apply_dir', {[DQ [VarSub GIT_DIR]] [LIT_CHARS /rebase-apply]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('verbose', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[SQ ]})])
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS rebase.stat]})]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS true]}    )
    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})])
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('rebase_root', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('force_rebase', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('in_progress', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('action', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('preserve_merges', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('autosquash', {[SQ ]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('keep_empty', {[SQ ]})])
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS rebase.autosquash]})]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS true]]}    )
    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('autosquash', {[LIT_CHARS t]})])
  )
  (FunctionDef read_basic_state []
    (List
      (AndOr OP_AND_IF
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('head_name', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /head-name]})]})])
        (AndOr OP_AND_IF
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /onto]})]})])
          (AndOr OP_AND_IF
            (If
              (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]}              )
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]})]})])
              (ElseTrue)
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /head]})]})])
            )
            (AndOr OP_AND_IF
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_QUIET', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /quiet]})]})])
              (AndOr OP_AND_IF
                (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /verbose]}                )
                (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})])
              )
            )
          )
        )
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy]}        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy]})]]})])
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]}        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy_opts', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]})]]})])
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]}        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]})]]})])
      )
    )
  )
  (FunctionDef write_basic_state []
    (List
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS echo]} {[DQ [VarSub head_name]]}
          <
          (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /head-name]} <REDIR_GREAT ">"> 1),
          >
        )
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS echo]} {[DQ [VarSub onto]]}
            <
            (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /onto]} <REDIR_GREAT ">"> 1),
            >
          )
          (AndOr OP_AND_IF
            (Com {[LIT_CHARS echo]} {[DQ [VarSub orig_head]]}
              <
              (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]} <REDIR_GREAT ">"> 1),
              >
            )
            (AndOr OP_AND_IF
              (Com {[LIT_CHARS echo]} {[DQ [VarSub GIT_QUIET]]}
                <
                (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /quiet]} <REDIR_GREAT ">"> 1),
                >
              )
              (AndOr OP_AND_IF
                (Com {[LIT_CHARS test]} {[LIT_CHARS t]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub verbose]]}                )
                (Com {[LIT_OTHER ":"]}
                  <
                  (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /verbose]} <REDIR_GREAT ">"> 1),
                  >
                )
              )
            )
          )
        )
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub strategy]]}        )
        (Com {[LIT_CHARS echo]} {[DQ [VarSub strategy]]}
          <
          (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /strategy]} <REDIR_GREAT ">"> 1),
          >
        )
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub strategy_opts]]}        )
        (Com {[LIT_CHARS echo]} {[DQ [VarSub strategy_opts]]}
          <
          (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]} <REDIR_GREAT ">"> 1),
          >
        )
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub allow_rerere_autoupdate]]}        )
        (Com {[LIT_CHARS echo]} {[DQ [VarSub allow_rerere_autoupdate]]}
          <
          (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]} <REDIR_GREAT ">"> 1),
          >
        )
      )
    )
  )
  (FunctionDef output []
    (Case to_match={[DQ [VarSub verbose]]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "*"]}]]
      (List
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('output', {[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} <REDIR_GREATAND "2>&"> 2)]{[DQ [VarSub @]]})]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('status', {[VarSub ?]})])
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]}          )
          (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub output]]}          )
        )
        (Com {[LIT_CHARS return]} {[VarSub status]}        )
      )
      (Com {[DQ [VarSub @]]}      )
    )
  )
  (FunctionDef move_to_original_branch []
    (Case to_match={[DQ [VarSub head_name]]}, pat_word_list=[[{[LIT_CHARS refs/] [LIT_OTHER "*"]}]]
      (List
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('message', {[DQ [LIT_CHARS "rebase finished: "][VarSub head_name][LIT_CHARS " onto "][VarSub onto]]})])
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [VarSub message]]} {[VarSub head_name]} {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]} {[VarSub orig_head]}          )
          (AndOr OP_OR_IF
            (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "rebase finished: returning to "][VarSub head_name]]} {[LIT_CHARS HEAD]} {[VarSub head_name]}            )
            (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not move back to "][VarSub head_name]]})]]}            )
          )
        )
      )
    )
  )
  (FunctionDef run_specific_rebase []
    (List
      (If
        (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub interactive_rebase]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS implied]} {[LIT_DBRACKET_LIKE "]"]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_EDITOR', {[LIT_OTHER ":"]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=1 words=[{[LIT_CHARS GIT_EDITOR]}] bindings=[])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('autosquash', {[SQ ]})])
        )
      )
      (Com {[LIT_CHARS .]} {[LIT_CHARS git-rebase--] [VarSub type]}      )
    )
  )
  (FunctionDef run_pre_rebase_hook []
    (If
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub ok_to_skip_pre_rebase]]}        )
        (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub GIT_DIR][LIT_CHARS /hooks/pre-rebase]]}        )
      )
      (AndOr OP_OR_IF
        (Com {[DQ [VarSub GIT_DIR][LIT_CHARS /hooks/pre-rebase]]} {[VarSub 1 test_op=VS_TEST_PLUS {[DQ [VarSub @]]}]}        )
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "The pre-rebase hook refused to rebase."]]})]]}        )
      )
    )
  )
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub apply_dir]] [LIT_CHARS /applying]}    )
    (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "It looks like git-am is in progress. Cannot rebase."]]})]]}    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub apply_dir]]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS am]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub apply_dir]]})])
    )
    (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub merge_dir]]}    )
    (List
      (If
        (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub merge_dir]] [LIT_CHARS /interactive]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS interactive]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS explicit]})])
        )
        (ElseTrue)
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS merge]})])
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})])
    )
  )
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub type]]}    )
    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('in_progress', {[LIT_CHARS t]})])
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('total_argc', {[VarSub #]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]}    )
    (List
      (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --no-verify]}], [{[LIT_CHARS --verify]}], [{[LIT_CHARS --continue]}, {[LIT_CHARS --skip]}, {[LIT_CHARS --abort]}], [{[LIT_CHARS --onto]}], [{[LIT_CHARS -x]}], [{[LIT_CHARS -i]}], [{[LIT_CHARS -k]}], [{[LIT_CHARS -p]}], [{[LIT_CHARS --autosquash]}], [{[LIT_CHARS --no-autosquash]}], [{[LIT_CHARS -M]}, {[LIT_CHARS -m]}], [{[LIT_CHARS -X]}], [{[LIT_CHARS -s]}], [{[LIT_CHARS -n]}], [{[LIT_CHARS --stat]}], [{[LIT_CHARS -v]}], [{[LIT_CHARS -q]}], [{[LIT_CHARS --whitespace]}], [{[LIT_CHARS --ignore-whitespace]}], [{[LIT_CHARS --committer-date-is-author-date]}, {[LIT_CHARS --ignore-date]}], [{[LIT_CHARS -C]}], [{[LIT_CHARS --root]}], [{[LIT_CHARS -f]}, {[LIT_CHARS --no-ff]}], [{[LIT_CHARS --rerere-autoupdate]}, {[LIT_CHARS --no-rerere-autoupdate]}], [{[LIT_CHARS --]}]]
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[LIT_CHARS yes]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[SQ ]})])
        (List
          (AndOr OP_OR_IF
            (Com {[LIT_CHARS test]} {[VarSub total_argc]} {[LIT_CHARS -eq]} {[LIT_CHARS 2]}            )
            (Com {[LIT_CHARS usage]}            )
          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('action', {[VarSub 1 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS --]}]]})])
        )
        (List
          (AndOr OP_OR_IF
            (Com {[LIT_CHARS test]} {[LIT_CHARS 2]} {[LIT_CHARS -le]} {[DQ [VarSub #]]}            )
            (Com {[LIT_CHARS usage]}            )
          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto', {[DQ [VarSub 2]]})])
          (Com {[LIT_CHARS shift]}          )
        )
        (List
          (AndOr OP_OR_IF
            (Com {[LIT_CHARS test]} {[LIT_CHARS 2]} {[LIT_CHARS -le]} {[DQ [VarSub #]]}            )
            (Com {[LIT_CHARS usage]}            )
          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('cmd', {[DQ [VarSub cmd][LIT_CHARS "exec "][VarSub 2][VarSub LF]]})])
          (Com {[LIT_CHARS shift]}          )
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS explicit]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('keep_empty', {[LIT_CHARS yes]})])
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('preserve_merges', {[LIT_CHARS t]})])
          (AndOr OP_AND_IF
            (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub interactive_rebase]]}            )
            (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS implied]})])
          )
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('autosquash', {[LIT_CHARS t]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('autosquash', {[SQ ]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})])
        (List
          (Com {[LIT_CHARS shift]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy_opts', {[DQ [VarSub strategy_opts][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [LIT_CHARS --][VarSub 1]]})]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})])
          (AndOr OP_AND_IF
            (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub strategy]]}            )
            (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy', {[LIT_CHARS recursive]})])
          )
        )
        (List
          (Com {[LIT_CHARS shift]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('strategy', {[DQ [VarSub 1]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})])
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[SQ ]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})])
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_QUIET', {[SQ ]})])
        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS t]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " -q"]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('verbose', {[SQ ]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('diffstat', {[SQ ]})])
        )
        (List
          (Com {[LIT_CHARS shift]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " --whitespace="][VarSub 1]]})])
          (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS fix]}, {[LIT_CHARS strip]}]]
            (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})])
          )
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " "][VarSub 1]]})])
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " "][VarSub 1]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})])
        )
        (List
          (Com {[LIT_CHARS shift]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " -C"][VarSub 1]]})])
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('rebase_root', {[LIT_CHARS t]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[DQ [VarSub 1]]})])
        (List
          (Com {[LIT_CHARS shift]}          )
          (Com {[LIT_CHARS break]}          )
        )
      )
      (Com {[LIT_CHARS shift]}      )
    )
  )
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 2]}    )
    (Com {[LIT_CHARS usage]}    )
  )
  (If
    (AndOr OP_AND_IF
      (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub cmd]]}      )
      (Com {[LIT_CHARS test]} {[DQ [VarSub interactive_rebase]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS explicit]}      )
    )
    (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "The --exec option must be used with the --interactive option"]]})]]}    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub action]]}    )
    (List
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub in_progress]]}        )
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No rebase in progress?"]]})]]}        )
      )
      (If
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS interactive]}          )
          (Com {[LIT_CHARS test]} {[DQ [VarSub GIT_REFLOG_ACTION]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS rebase]}          )
        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [LIT_CHARS "rebase -i ("][VarSub action][LIT_CHARS ")"]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=1 words=[{[LIT_CHARS GIT_REFLOG_ACTION]}] bindings=[])
        )
      )
    )
  )
  (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_CHARS continue]}], [{[LIT_CHARS skip]}], [{[LIT_CHARS abort]}]]
    (List
      (AndOr OP_OR_IF
        (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]}
          <
          (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} <REDIR_GREAT ">"> 1),
          >
        )
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot read HEAD"]]})]]}        )
      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --ignore-submodules]} {[LIT_CHARS --refresh]}        )
        (AndOr OP_OR_IF
          (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --quiet]} {[LIT_CHARS --ignore-submodules]}          )
          (List
            (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You must edit all merge conflicts and then\n"][LIT_CHARS "mark them as resolved using git add"]]})]]}            )
            (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}            )
          )
        )
      )
      (Com {[LIT_CHARS read_basic_state]}      )
      (Com {[LIT_CHARS run_specific_rebase]}      )
    )
    (List
      (AndOr OP_OR_IF
        (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[LIT_CHARS HEAD]}        )
        (Com {[LIT_CHARS exit]} {[VarSub ?]}        )
      )
      (Com {[LIT_CHARS read_basic_state]}      )
      (Com {[LIT_CHARS run_specific_rebase]}      )
    )
    (List
      (Com {[LIT_CHARS git]} {[LIT_CHARS rerere]} {[LIT_CHARS clear]}      )
      (Com {[LIT_CHARS read_basic_state]}      )
      (Case to_match={[DQ [VarSub head_name]]}, pat_word_list=[[{[LIT_CHARS refs/] [LIT_OTHER "*"]}]]
        (AndOr OP_OR_IF
          (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "rebase: aborting"]]} {[LIT_CHARS HEAD]} {[VarSub head_name]}          )
          (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not move back to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS head_name]]})]]}          )
        )
      )
      (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[VarSub orig_head]}      )
      (Com {[LIT_CHARS rm]} {[LIT_CHARS -r]} {[DQ [VarSub state_dir]]}      )
      (Com {[LIT_CHARS exit]}      )
    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub in_progress]]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir_base', {[VarSub state_dir transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('cmd_live_rebase', {[DQ [LIT_CHARS "git rebase (--continue | --abort | --skip)"]]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('cmd_clear_stale_rebase', {[DQ [LIT_CHARS "rm -fr "][\ LIT_ESCAPED_CHAR "\\\""][VarSub state_dir][\ LIT_ESCAPED_CHAR "\\\""]]})])
      (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "\n"][ComSub (Com {[LIT_CHARS eval_gettext]} {[SQ <LIT_CHARS "It seems that there is already a $state_dir_base directory, and\n"> <LIT_CHARS "I wonder if you are in the middle of another rebase.  If that is the\n"> <LIT_CHARS "case, please try\n"> <LIT_CHARS "\t$cmd_live_rebase\n"> <LIT_CHARS "If that is not the case, please\n"> <LIT_CHARS "\t$cmd_clear_stale_rebase\n"> <LIT_CHARS "and run me again.  I am stopping in case you still have something\n"> <LIT_CHARS "valuable there.">]})]]}      )
    )
  )
  (If
    (AndOr OP_AND_IF
      (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub rebase_root]]}      )
      (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub onto]]}      )
    )
    (AndOr OP_AND_IF
      (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub interactive_rebase]]}      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS implied]})])
    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub interactive_rebase]]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS interactive]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})])
    )
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub do_merge]]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS merge]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})])
    )
    (ElseTrue)
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('type', {[LIT_CHARS am]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub apply_dir]]})])
    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rebase_root]]}    )
    (List
      (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]]
        (If
          (Pipeline!
            (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_name', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} <REDIR_GREAT "2>"> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --symbolic-full-name]} {[LIT_CHARS --verify]} {[LIT_CHARS -q]} {[LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS upstream] [LIT_RBRACE "}"]})]})])
          )
          (List
            (Com {[LIT_CHARS .]} {[LIT_CHARS git-parse-remote]}            )
            (Com {[LIT_CHARS error_on_missing_default_upstream]} {[DQ [LIT_CHARS rebase]]} {[DQ [LIT_CHARS rebase]]} {[DQ [LIT_CHARS against]]} {[DQ [LIT_CHARS "git rebase <branch>"]]}            )
          )
        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_name', {[DQ [VarSub 1]]})])
          (Com {[LIT_CHARS shift]}          )
        )
      )
      (AndOr OP_OR_IF
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub upstream_name][LIT_CHARS "^0"]]})]})])
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "invalid upstream "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS upstream_name]]})]]}        )
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_arg', {[DQ [VarSub upstream_name]]})])
    )
    (ElseTrue)
    (List
      (If
        (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub onto]]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('empty_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS -t]} {[LIT_CHARS tree]} {[LIT_CHARS /dev/null]})]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} <REDIR_LESS "<"> 0)]{[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub empty_tree]})]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('squash_onto', {[DQ [VarSub onto]]})])
        )
      )
      (Com {[LIT_CHARS unset]} {[LIT_CHARS upstream_name]}      )
      (Com {[LIT_CHARS unset]} {[LIT_CHARS upstream]}      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 1]}        )
        (Com {[LIT_CHARS usage]}        )
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_arg', {[LIT_CHARS --root]})])
    )
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto_name', {[VarSub onto test_op=VS_TEST_HYPHEN {[DQ [VarSub upstream_name]]}]})])
  (Case to_match={[DQ [VarSub onto_name]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS ...] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]]
    (If
      (AndOr OP_AND_IF
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('left', {[VarSub onto_name transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS "...*"]}]]}), ('right', {[VarSub onto_name transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*..."]}]]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[LIT_CHARS --all]} {[VarSub left test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]} {[VarSub right test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]})]})])
      )
      (Case to_match={[DQ [VarSub onto]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"] [DQ [VarSub LF]] [LIT_OTHER "?"] [LIT_OTHER "*"]}], [{[SQ ]}]]
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there are more than one merge bases"]]})]]}        )
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there is no merge base"]]})]]}        )
      )
      (ElseTrue)
      (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there is no merge base"]]})]]}      )
    )
    (AndOr OP_OR_IF
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub onto_name][LIT_CHARS "^0"]]})]})])
      (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Does not point to a valid commit: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS onto_name]]})]]}      )
    )
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('switch_to', {[SQ ]})])
  (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 1]}], [{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]]
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('branch_name', {[DQ [VarSub 1]]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('switch_to', {[DQ [VarSub 1]]})])
      (If
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[LIT_CHARS --]} {[DQ [LIT_CHARS refs/heads/][VarSub 1]]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [LIT_CHARS refs/heads/][VarSub 1]]})]})])
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS refs/heads/][VarSub 1]]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]]})]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS "detached HEAD"]]})])
        (ElseTrue)
        (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "fatal: no such branch: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS branch_name]]})]]}        )
      )
    )
    (List
      (If
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('branch_name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[LIT_CHARS HEAD]})]})])
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('head_name', {[VarSub branch_name]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('branch_name', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [LIT_CHARS z][VarSub branch_name]]} {[LIT_OTHER ":"]} {[SQ <LIT_CHARS "zrefs/heads/\\(.*\\)">]})]})])
        )
        (ElseTrue)
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS "detached HEAD"]]})])
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('branch_name', {[LIT_CHARS HEAD]})])
          (Com {[LIT_OTHER "#"]} {[LIT_CHARS detached]}          )
        )
      )
      (AndOr OP_OR_IF
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub branch_name][LIT_CHARS "^0"]]})]})])
        (Com {[LIT_CHARS exit]}        )
      )
    )
    (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "BUG: unexpected number of arguments left to parse"]]}    )
  )
  (Com {[LIT_CHARS require_clean_work_tree]} {[DQ [LIT_CHARS rebase]]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Please commit or stash them."]]})]]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('mb', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[DQ [VarSub onto]]} {[DQ [VarSub orig_head]]})]})])
  (If
    (AndOr OP_AND_IF
      (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS interactive]}      )
      (AndOr OP_AND_IF
        (Com {[LIT_CHARS test]} {[DQ [VarSub upstream]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub onto]]}        )
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS test]} {[DQ [VarSub mb]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub onto]]}          )
          (Pipeline!
            (Subshell
              (Pipeline
                (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[DQ [VarSub onto]] [LIT_CHARS ..] [DQ [VarSub orig_head]]}                )
                (Com {[LIT_CHARS sane_grep]} {[DQ [LIT_CHARS " .* "]]}                )
              )
            )
          )
        )
      )
    )
    (If
      (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub force_rebase]]}      )
      (List
        (AndOr OP_OR_IF
          (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub switch_to]]}          )
          (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub switch_to]]} {[LIT_CHARS --]}          )
        )
        (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Current branch "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name is up to date."]]})]]}        )
        (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}        )
      )
      (ElseTrue)
      (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Current branch "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name is up to date, rebase forced."]]})]]}      )
    )
  )
  (Com {[LIT_CHARS run_pre_rebase_hook]} {[DQ [VarSub upstream_arg]]} {[DQ [VarSub @]]}  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub diffstat]]}    )
    (List
      (If
        (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub verbose]]}        )
        (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Changes from "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "mb to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto:"]]})]]}        )
      )
      (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --stat]} {[LIT_CHARS --summary]} {[DQ [VarSub mb]]} {[DQ [VarSub onto]]}      more_env=[('GIT_PAGER', {[SQ ]})]       )
    )
  )
  (AndOr OP_AND_IF
    (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS interactive]}    )
    (Com {[LIT_CHARS run_specific_rebase]}    )
  )
  (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "First, rewinding head to replay your work on top of it..."]]})]]}  )
  (AndOr OP_OR_IF
    (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -q]} {[DQ [VarSub onto][LIT_CHARS "^0"]]}    )
    (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "could not detach HEAD"]]}    )
  )
  (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS ORIG_HEAD]} {[VarSub orig_head]}  )
  (If
    (Com {[LIT_CHARS test]} {[DQ [VarSub mb]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub orig_head]]}    )
    (List
      (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Fast-forwarded "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS onto_name.]]})]]}      )
      (Com {[LIT_CHARS move_to_original_branch]}      )
      (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}      )
    )
  )
  (If
    (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub rebase_root]]}    )
    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('revisions', {[DQ [VarSub onto][LIT_CHARS ..][VarSub orig_head]]})])
    (ElseTrue)
    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('revisions', {[DQ [VarSub upstream][LIT_CHARS ..][VarSub orig_head]]})])
  )
  (Com {[LIT_CHARS run_specific_rebase]}  )
)