// File: /workspace/github_c_makefile_star2_O3/RodionGork[P]tinyscheme/scheme.c
// Function: Error_1
static pointer _Error_1(scheme * sc, const char *s, pointer a) {
  const char *str = s;
#if USE_ERROR_HOOK
  pointer x;
  pointer hdl = sc->ERROR_HOOK;
#endif

#if SHOW_ERROR_LINE
  char sbuf[AUXBUFF_SIZE];

  /* make sure error is not in REPL */
  if (sc->load_stack[sc->file_i].kind & port_file &&
      sc->load_stack[sc->file_i].rep.stdio.file != stdin) {
    int ln = sc->load_stack[sc->file_i].rep.stdio.curr_line;
    const char *fname = sc->load_stack[sc->file_i].rep.stdio.filename;

    /* should never happen */
    if (!fname)
      fname = "<unknown>";

    /* we started from 0 */
    ln++;
    snprintf(sbuf, AUXBUFF_SIZE, "(%s : %i) %s", fname, ln, s);

    str = (const char *) sbuf;
  }
#endif

#if USE_ERROR_HOOK
  x = find_slot_in_env(sc, sc->envir, hdl, 1);
  if (x != sc->NIL) {
    if (a != 0) {
      sc->code =
          cons(sc, cons(sc, sc->QUOTE, cons(sc, (a), sc->NIL)), sc->NIL);
    } else {
      sc->code = sc->NIL;
    }
    sc->code = cons(sc, mk_string(sc, str), sc->code);
    setimmutable(car(sc->code));
    sc->code = cons(sc, slot_value_in_env(x), sc->code);
    sc->op = (int) OP_EVAL;
    return sc->T;
  }
#endif

  if (a != 0) {
    sc->args = cons(sc, (a), sc->NIL);
  } else {
    sc->args = sc->NIL;
  }
  sc->args = cons(sc, mk_string(sc, str), sc->args);
  setimmutable(car(sc->args));
  sc->op = (int) OP_ERR0;
  return sc->T;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq 0x148(%rdi), %r12
movslq 0xa90(%rdi), %rax
shlq $0x5, %rax
testb $0x1, 0x190(%rdi,%rax)
je 0xadf3
addq %rbx, %rax
addq $0x190, %rax            # imm = 0x190
movq 0x8(%rax), %rcx
movq 0x821c(%rip), %rdx      # 0x12fd0
cmpq (%rdx), %rcx
je 0xadf3
movl 0x14(%rax), %r8d
movq 0x18(%rax), %rax
testq %rax, %rax
leaq 0x2ef6(%rip), %rcx      # 0xdcc1
cmovneq %rax, %rcx
incl %r8d
leaq 0x2ef2(%rip), %rdx      # 0xdccb
leaq 0x10(%rsp), %r13
movl $0x100, %esi            # imm = 0x100
movq %r13, %rdi
movq %r14, %r9
xorl %eax, %eax
callq 0x40e0
movq %r13, %r14
movq 0x38(%rbx), %rsi
movq %rbx, %rdi
movq %r12, %rdx
movl $0x1, %ecx
callq 0x5de8
movq 0x90(%rbx), %r13
cmpq %r13, %rax
je 0xaf11
movq %rax, %r12
testq %r15, %r15
je 0xae9b
movq 0x118(%rbx), %rbp
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x4689
movq %r14, 0x8(%rsp)
movq %rax, %r14
movl $0x5, %eax
movl %eax, (%r14)
movq %r15, 0x8(%r14)
movq %r13, 0x10(%r14)
movq %rbx, %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0x4689
movq %rax, %r15
movl $0x5, %eax
movl %eax, (%r15)
movq %rbp, 0x8(%r15)
movq %r14, 0x10(%r15)
movq 0x90(%rbx), %r14
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x4689
movq %rax, %r13
movl $0x5, %eax
movl %eax, (%r13)
movq %r15, 0x8(%r13)
movq %r14, 0x10(%r13)
movq 0x8(%rsp), %r14
movq %r13, 0x40(%rbx)
movq %r14, %rdi
callq 0x40c0
movq %rbx, %rdi
movq %r14, %rsi
movl %eax, %edx
callq 0x47a7
movq %rax, %r14
movq 0x40(%rbx), %r15
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x4689
movq %rax, %r13
movl $0x5, %ebp
movl %ebp, (%rax)
movq %r14, 0x8(%rax)
movq %r15, 0x10(%rax)
movq %rax, 0x40(%rbx)
movq 0x8(%rax), %rax
orl $0x2000, (%rax)         # imm = 0x2000
movq 0x10(%r12), %r14
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x4689
movl %ebp, (%rax)
movq %r14, 0x8(%rax)
movq %r13, 0x10(%rax)
movq %rax, 0x40(%rbx)
movl $0x6, %eax
jmp 0xaf84
testq %r15, %r15
je 0xaf35
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x4689
movl $0x5, (%rax)
movq %r15, 0x8(%rax)
movq %r13, 0x10(%rax)
movq %rax, %r13
movq %r13, 0x30(%rbx)
movq %r14, %rdi
callq 0x40c0
movq %rbx, %rdi
movq %r14, %rsi
movl %eax, %edx
callq 0x47a7
movq %rax, %r14
movq 0x30(%rbx), %r15
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x4689
movl $0x5, (%rax)
movq %r14, 0x8(%rax)
movq %r15, 0x10(%rax)
movq %rax, 0x30(%rbx)
movq 0x8(%rax), %rax
orl $0x2000, (%rax)         # imm = 0x2000
movl $0x8c, %eax
movl %eax, 0xec8(%rbx)
movq 0xb0(%rbx), %rax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq