(List
  (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /reader.sh]}  )
  (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /printer.sh]}  )
  (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /env.sh]}  )
  (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /core.sh]}  )
  (FunctionDef READ []
    (List
      (AndOr OP_AND_IF
        (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]}        )
        (AndOr OP_OR_IF
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub 1]]})])
          (Com {[LIT_CHARS READLINE]}          )
        )
      )
      (Com {[LIT_CHARS READ_STR]} {[DQ [VarSub r]]}      )
    )
  )
  (FunctionDef IS_PAIR []
    (List
      (If
        (Com {[LIT_CHARS _sequential] [LIT_OTHER "?"]} {[DQ [VarSub 1]]}        )
        (List
          (Com {[LIT_CHARS _count]} {[DQ [VarSub 1]]}          )
          (AndOr OP_AND_IF
            (DBracket {B2 BINARY_STRING_GREAT {[DQ [VarSub r]]} {[LIT_CHARS 0]}})
            (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}            )
          )
        )
      )
      (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}      )
    )
  )
  (FunctionDef QUASIQUOTE []
    (List
      (If
        (Pipeline!
          (Com {[LIT_CHARS IS_PAIR]} {[DQ [VarSub 1]]}          )
        )
        (List
          (Com {[LIT_CHARS _symbol]} {[LIT_CHARS quote]}          )
          (Com {[LIT_CHARS _list]} {[DQ [VarSub r]]} {[DQ [VarSub 1]]}          )
          (Com {[LIT_CHARS return]}          )
        )
        (ElseTrue)
        (List
          (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 0]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})])
          (If
            (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a0]]}})]]} {[DQ [LIT_CHARS unquote]]}})
            (List
              (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 1]}              )
              (Com {[LIT_CHARS return]}              )
            )
            (Com {[LIT_CHARS IS_PAIR]} {[DQ [VarSub a0]]}            )
            (List
              (Com {[LIT_CHARS _nth]} {[DQ [VarSub a0]]} {[LIT_CHARS 0]}              )
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a00', {[DQ [VarSub r]]})])
              (If
                (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a00]]}})]]} {[DQ [LIT_CHARS splice-unquote]]}})
                (List
                  (Com {[LIT_CHARS _symbol]} {[LIT_CHARS concat]}                  )
                  (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a', {[DQ [VarSub r]]})])
                  (Com {[LIT_CHARS _nth]} {[DQ [VarSub a0]]} {[LIT_CHARS 1]}                  )
                  (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('b', {[DQ [VarSub r]]})])
                  (Com {[LIT_CHARS _rest]} {[DQ [VarSub 1]]}                  )
                  (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub r]]}                  )
                  (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('c', {[DQ [VarSub r]]})])
                  (Com {[LIT_CHARS _list]} {[DQ [VarSub a]]} {[DQ [VarSub b]]} {[DQ [VarSub c]]}                  )
                  (Com {[LIT_CHARS return]}                  )
                )
              )
            )
          )
        )
      )
      (Com {[LIT_CHARS _symbol]} {[LIT_CHARS cons]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a', {[DQ [VarSub r]]})])
      (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub a0]]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('b', {[DQ [VarSub r]]})])
      (Com {[LIT_CHARS _rest]} {[DQ [VarSub 1]]}      )
      (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub r]]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('c', {[DQ [VarSub r]]})])
      (Com {[LIT_CHARS _list]} {[DQ [VarSub a]]} {[DQ [VarSub b]]} {[DQ [VarSub c]]}      )
      (Com {[LIT_CHARS return]}      )
    )
  )
  (FunctionDef IS_MACRO_CALL []
    (List
      (If
        (Pipeline!
          (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub 1]]}          )
        )
        (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}        )
      )
      (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 0]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})])
      (If
        (Com {[LIT_CHARS _symbol] [LIT_OTHER "?"]} {[DQ [VarSub a0]]}        )
        (List
          (Com {[LIT_CHARS ENV_FIND]} {[DQ [VarSub 2]]} {[DQ [VarSub a0]]}          )
          (If
            (DBracket {B1 UNARY_STRING_n {[DQ [VarSub r]]}})
            (List
              (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub 2]]} {[DQ [VarSub a0]]}              )
              (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r][LIT_CHARS _ismacro_]]}})]]} {[LIT_DBRACKET_LIKE "]"]}              )
              (Com {[LIT_CHARS return]} {[VarSub ?]}              )
            )
          )
        )
      )
      (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}      )
    )
  )
  (FunctionDef MACROEXPAND []
    (List
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})])
      (While
        (Com {[LIT_CHARS IS_MACRO_CALL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}        )
        (List
          (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 0]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})])
          (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub env]]} {[DQ [VarSub a0]]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('mac', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})])
          (Com {[LIT_CHARS _rest]} {[DQ [VarSub ast]]}          )
          (Com {[VarSub mac transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "@*"]}]]} {[VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})])
        )
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub ast]]})])
    )
  )
  (FunctionDef EVAL_AST []
    (List
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})])
      (Com {[LIT_CHARS _obj_type]} {[DQ [VarSub ast]]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('ot', {[DQ [VarSub r]]})])
      (Case to_match={[DQ [VarSub ot]]}, pat_word_list=[[{[LIT_CHARS symbol]}], [{[LIT_CHARS list]}], [{[LIT_CHARS vector]}], [{[LIT_CHARS hash_map]}], [{[LIT_OTHER "*"]}]]
        (List
          (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub env]]} {[DQ [VarSub ast]]}          )
          (Com {[LIT_CHARS return]}          )
        )
        (Com {[LIT_CHARS _map_with_type]} {[LIT_CHARS _list]} {[LIT_CHARS EVAL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}        )
        (Com {[LIT_CHARS _map_with_type]} {[LIT_CHARS _vector]} {[LIT_CHARS EVAL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}        )
        (List
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('res', {[DQ ]}), ('key', {[SQ ]}), ('val', {[DQ ]}), ('hm', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub ast]]}})]]})])
          (Com {[LIT_CHARS _hash_map]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('new_hm', {[DQ [VarSub r]]})])
          (Com {[LIT_CHARS eval]} {[LIT_CHARS local]} {[LIT_VAR_LIKE "keys="] [DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{!"][VarSub hm][LIT_CHARS "[@]}"]] =}          )
          (For key [{[VarSub keys]}])
            (List
              (Com {[LIT_CHARS eval]} {[LIT_VAR_LIKE "val="] [DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{"][VarSub hm][LIT_CHARS "["][\ LIT_ESCAPED_CHAR "\\\""][VarSub key][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "]}"]] =}              )
              (Com {[LIT_CHARS EVAL]} {[DQ [VarSub val]]} {[DQ [VarSub env]]}              )
              (Com {[LIT_CHARS _assoc] [LIT_OTHER "!"]} {[DQ [VarSub new_hm]]} {[DQ [VarSub key]]} {[DQ [VarSub r]]}              )
            )
          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub new_hm]]})])
        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub ast]]})])
      )
    )
  )
  (FunctionDef EVAL []
    (List
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})])
      (While
        (Com {[LIT_CHARS true]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[SQ ]})])
          (AndOr OP_AND_IF
            (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
            (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}            )
          )
          (If
            (Pipeline!
              (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub ast]]}              )
            )
            (List
              (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}              )
              (Com {[LIT_CHARS return]}              )
            )
          )
          (Com {[LIT_CHARS MACROEXPAND]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}          )
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})])
          (If
            (Pipeline!
              (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub ast]]}              )
            )
            (Com {[LIT_CHARS return]}            )
          )
          (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 0]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})])
          (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 1]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a1', {[DQ [VarSub r]]})])
          (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 2]}          )
          (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a2', {[DQ [VarSub r]]})])
          (Case to_match={[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a0]]}})]]}, pat_word_list=[[{[LIT_CHARS def] [LIT_OTHER "!"]}], [{[LIT_CHARS let] [LIT_OTHER "*"]}], [{[LIT_CHARS quote]}], [{[LIT_CHARS quasiquote]}], [{[LIT_CHARS defmacro] [LIT_OTHER "!"]}], [{[LIT_CHARS macroexpand]}], [{[LIT_CHARS do]}], [{[LIT_CHARS if]}], [{[LIT_CHARS fn] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]]
            (List
              (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]}              )
              (AndOr OP_AND_IF
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
                (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}                )
              )
              (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]} {[DQ [VarSub r]]}              )
              (Com {[LIT_CHARS return]}              )
            )
            (List
              (Com {[LIT_CHARS ENV]} {[DQ [VarSub env]]}              )
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('let_env', {[DQ [VarSub r]]})])
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('let_pairs', {[Array {[VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a1]]}})]}]})])
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('idx', {[LIT_CHARS 0]})])
              (While
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub idx]]}})]]}})
                (List
                  (Com {[LIT_CHARS EVAL]} {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub idx]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]}})]]} {[DQ [VarSub let_env]]}                  )
                  (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub let_env]]} {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub idx]}})]]} {[DQ [VarSub r]]}                  )
                  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('idx', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub idx]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}]})])
                )
              )
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub a2]]})])
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('env', {[DQ [VarSub let_env]]})])
            )
            (List
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub a1]]})])
              (Com {[LIT_CHARS return]}              )
            )
            (List
              (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub a1]]}              )
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})])
            )
            (List
              (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]}              )
              (AndOr OP_AND_IF
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
                (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}                )
              )
              (Com {[LIT_CHARS ANON] [LIT_DBRACKET_LIKE "["] [DQ [VarSub r][LIT_CHARS _ismacro_]] [LIT_DBRACKET_LIKE "]="] [DQ [LIT_CHARS yes]]}              )
              (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]} {[DQ [VarSub r]]}              )
              (Com {[LIT_CHARS return]}              )
            )
            (List
              (Com {[LIT_CHARS MACROEXPAND]} {[DQ [VarSub a1]]} {[DQ [VarSub env]]}              )
              (Com {[LIT_CHARS return]}              )
            )
            (List
              (Com {[LIT_CHARS _count]} {[DQ [VarSub ast]]}              )
              (Com {[LIT_CHARS _slice]} {[DQ [VarSub ast]]} {[LIT_CHARS 1]} {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub r]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}]}              )
              (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub r]]} {[DQ [VarSub env]]}              )
              (AndOr OP_AND_IF
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
                (AndOr OP_AND_IF
                  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[SQ ]})])
                  (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}                  )
                )
              )
              (Com {[LIT_CHARS _last]} {[DQ [VarSub ast]]}              )
              (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})])
            )
            (List
              (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a1]]} {[DQ [VarSub env]]}              )
              (AndOr OP_AND_IF
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
                (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}                )
              )
              (If
                (DBracket {B? LOGICAL_BINARY_OR {B2 BINARY_STRING_EQUAL {[DQ [VarSub r]]} {[DQ [VarSub __false]]}} {B2 BINARY_STRING_EQUAL {[DQ [VarSub r]]} {[DQ [VarSub __nil]]}}})
                (List
                  (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 3]}                  )
                  (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('a3', {[DQ [VarSub r]]})])
                  (If
                    (DBracket {B1 UNARY_STRING_n {[DQ [VarSub a3]]}})
                    (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub a3]]})])
                    (ElseTrue)
                    (List
                      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [VarSub __nil]]})])
                      (Com {[LIT_CHARS return]}                      )
                    )
                  )
                )
                (ElseTrue)
                (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub a2]]})])
              )
            )
            (List
              (Com {[LIT_CHARS _function]} {[DQ [LIT_CHARS "ENV "][\ LIT_ESCAPED_CHAR "\\\""][VarSub env][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][VarSub a1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{@}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "; "][LIT_CHARS "                         EVAL "][\ LIT_ESCAPED_CHAR "\\\""][VarSub a2][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{r}"][\ LIT_ESCAPED_CHAR "\\\""]]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]}              )
              (Com {[LIT_CHARS return]}              )
            )
            (List
              (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]}              )
              (AndOr OP_AND_IF
                (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
                (AndOr OP_AND_IF
                  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[SQ ]})])
                  (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}                  )
                )
              )
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('el', {[DQ [VarSub r]]})])
              (Com {[LIT_CHARS _first]} {[DQ [VarSub el]]}              )
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('f', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})])
              (Com {[LIT_CHARS _rest]} {[DQ [VarSub el]]}              )
              (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('args', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})])
              (If
                (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub f transform_ops=[PatSub {[LIT_CHARS "@"]} {[LIT_CHARS " "]} do_all]]]} {[DQ [VarSub f]]}})
                (List
                  (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[VarSub f transform_ops=[PatSub {[LIT_CHARS "@"]} {[LIT_CHARS " "]} do_all]]}                  )
                  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('ast', {[DQ [VarSub 2]]})])
                  (Com {[LIT_CHARS ENV]} {[DQ [VarSub 3]]} {[DQ [VarSub 4]]} {[VarSub args]}                  )
                  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('env', {[DQ [VarSub r]]})])
                )
                (ElseTrue)
                (List
                  (Com {[LIT_CHARS eval]} {[VarSub f transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "@*"]}]]} {[VarSub args]}                  )
                  (Com {[LIT_CHARS return]}                  )
                )
              )
            )
          )
        )
      )
    )
  )
  (FunctionDef PRINT []
    (If
      (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}})
      (List
        (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub __ERROR]]} {[LIT_CHARS yes]}        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[DQ [LIT_CHARS "Error: "][VarSub r]]})])
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('__ERROR', {[SQ ]})])
      )
      (ElseTrue)
      (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub 1]]} {[LIT_CHARS yes]}      )
    )
  )
  (Com {[LIT_CHARS ENV]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('REPL_ENV', {[DQ [VarSub r]]})])
  (FunctionDef REP []
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('r', {[SQ ]})])
      (Com {[LIT_CHARS READ]} {[DQ [VarSub 1]]}      )
      (Com {[LIT_CHARS EVAL]} {[DQ [VarSub r]]} {[DQ [VarSub REPL_ENV]]}      )
      (Com {[LIT_CHARS PRINT]} {[DQ [VarSub r]]}      )
    )
  )
  (FunctionDef _fref []
    (List
      (Com {[LIT_CHARS _symbol]} {[DQ [VarSub 1]]}      )
      (= scope=<EAssignScope.LOCAL 0> flags=0 words=[] bindings=[('sym', {[DQ [VarSub r]]})])
      (Com {[LIT_CHARS _function]} {[DQ [VarSub 2][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{@}"][\ LIT_ESCAPED_CHAR "\\\""]]}      )
      (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub REPL_ENV]]} {[DQ [VarSub sym]]} {[DQ [VarSub r]]}      )
    )
  )
  (For n [{[DQ [VarSub core_ns bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(!ref)]]]}])
    (Com {[LIT_CHARS _fref]} {[DQ [VarSub n]]} {[DQ [VarSub core_ns bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub n]]}})]]}    )
  )
  (FunctionDef _eval []
    (Com {[LIT_CHARS EVAL]} {[DQ [VarSub 1]]} {[DQ [VarSub REPL_ENV]]}    )
  )
  (Com {[LIT_CHARS _fref]} {[DQ [LIT_CHARS eval]]} {[LIT_CHARS _eval]}  )
  (Com {[LIT_CHARS _list]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('argv', {[DQ [VarSub r]]})])
  (For _arg [{[DQ [VarSub @ transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}} None]]]}])
    (List
      (Com {[LIT_CHARS _string]} {[DQ [VarSub _arg]]}      )
      (Com {[LIT_CHARS _conj] [LIT_OTHER "!"]} {[DQ [VarSub argv]]} {[DQ [VarSub r]]}      )
    )
  )
  (Com {[LIT_CHARS _symbol]} {[DQ [LIT_CHARS __STAR__ARGV__STAR__]]}  )
  (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub REPL_ENV]]} {[DQ [VarSub r]]} {[DQ [VarSub argv]]}  )
  (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(def! not (fn* (a) (if a false true)))"]]}  )
  (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(def! load-file (fn* (f) (eval (read-string (str "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "(do "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " (slurp f) "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")))))"]]}  )
  (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(defmacro! cond (fn* (& xs) (if (> (count xs) 0) (list 'if (first xs) (if (> (count xs) 1) (nth xs 1) (throw "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "odd number of forms to cond"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")) (cons 'cond (rest (rest xs)))))))"]]}  )
  (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(defmacro! or (fn* (& xs) (if (empty? xs) nil (if (= 1 (count xs)) (first xs) "][\ LIT_ESCAPED_CHAR "\\`"][LIT_CHARS "(let* (or_FIXME ~(first xs)) (if or_FIXME or_FIXME (or ~@(rest xs))))))))"]]}  )
  (If
    (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 1]]}})
    (List
      (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(load-file "][\ LIT_ESCAPED_CHAR "\\\""][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")"]]}      )
      (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}      )
    )
  )
  (While
    (Com {[LIT_CHARS true]}    )
    (List
      (AndOr OP_OR_IF
        (Com {[LIT_CHARS READLINE]} {[DQ [LIT_CHARS "user> "]]}        )
        (Com {[LIT_CHARS exit]} {[DQ [VarSub ?]]}        )
      )
      (AndOr OP_AND_IF
        (DBracket {B1 UNARY_STRING_n {[DQ [VarSub r]]}})
        (AndOr OP_AND_IF
          (Com {[LIT_CHARS REP]} {[DQ [VarSub r]]}          )
          (Com {[LIT_CHARS echo]} {[DQ [VarSub r]]}          )
        )
      )
    )
  )
)