// File: /workspace/github_c_makefile_star2_O0/RodionGork[P]tinyscheme/scheme.c
// Function: opexe_6
static pointer opexe_6(scheme * sc, enum scheme_opcodes op) {
  pointer x, y;
  long v;

  switch (op) {
  case OP_LIST_LENGTH:         /* length *//* a.k */
    v = list_length(sc, car(sc->args));
    if (v < 0) {
      Error_1(sc, "length: not a list:", car(sc->args));
    }
    s_return(sc, mk_integer(sc, v));

  case OP_ASSQ:                /* assq *//* a.k */
    x = car(sc->args);
    for (y = cadr(sc->args); is_pair(y); y = cdr(y)) {
      if (!is_pair(car(y))) {
        Error_0(sc, "unable to handle non pair element");
      }
      if (x == caar(y))
        break;
    }
    if (is_pair(y)) {
      s_return(sc, car(y));
    } else {
      s_return(sc, sc->F);
    }


  case OP_GET_CLOSURE:         /* get-closure-code *//* a.k */
    sc->args = car(sc->args);
    if (sc->args == sc->NIL) {
      s_return(sc, sc->F);
    } else if (is_closure(sc->args)) {
      s_return(sc, cons(sc, sc->LAMBDA, closure_code(sc->value)));
    } else if (is_macro(sc->args)) {
      s_return(sc, cons(sc, sc->LAMBDA, closure_code(sc->value)));
    } else {
      s_return(sc, sc->F);
    }
  case OP_CLOSUREP:            /* closure? */
    /*
     * Note, macro object is also a closure.
     * Therefore, (closure? <#MACRO>) ==> #t
     */
    s_retbool(is_closure(car(sc->args)));
  case OP_MACROP:              /* macro? */
    s_retbool(is_macro(car(sc->args)));
  default:
    sprintf(sc->strbuff, "%d: illegal operator", sc->op);
    Error_0(sc, sc->strbuff);
  }
  return sc->T;                 /* NOTREACHED */
}

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x88(%rsp)
movl %esi, 0x84(%rsp)
movl 0x84(%rsp), %eax
addl $0xffffff49, %eax       # imm = 0xFFFFFF49
movl %eax, %ecx
movq %rcx, 0x60(%rsp)
subl $0x4, %eax
ja 0x12a33
movq 0x60(%rsp), %rax
leaq 0x4cfe(%rip), %rcx      # 0x1732c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x5840
cltq
movq %rax, 0x68(%rsp)
cmpq $0x0, 0x68(%rsp)
jge 0x12694
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x5f2b(%rip), %rsi      # 0x185ad
callq 0x12ce0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x4b00
movq 0x58(%rsp), %rdi
movq %rax, %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
callq 0x4710
cmpl $0x0, %eax
je 0x1276a
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x4710
cmpl $0x0, %eax
jne 0x12742
movq 0x88(%rsp), %rdi
leaq 0x5e95(%rip), %rsi      # 0x185c1
xorl %eax, %eax
movl %eax, %edx
callq 0x12ce0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x78(%rsp), %rax
movq 0x70(%rsp), %rcx
movq 0x8(%rcx), %rcx
cmpq 0x8(%rcx), %rax
jne 0x12758
jmp 0x1276a
jmp 0x1275a
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x126fb
movq 0x70(%rsp), %rdi
callq 0x4710
cmpl $0x0, %eax
je 0x1279c
movq 0x88(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0xd0(%rax), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x88(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x88(%rsp), %rcx
cmpq 0x90(%rcx), %rax
jne 0x12827
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0xd0(%rax), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x4850
cmpl $0x0, %eax
je 0x128ad
movq 0x88(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x88(%rsp), %rax
movq 0x110(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x88(%rsp), %rax
movq 0xec0(%rax), %rdi
callq 0x4890
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x4950
movq 0x50(%rsp), %rdi
movq %rax, %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x4870
cmpl $0x0, %eax
je 0x12933
movq 0x88(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x88(%rsp), %rax
movq 0x110(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x88(%rsp), %rax
movq 0xec0(%rax), %rdi
callq 0x4890
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x4950
movq 0x38(%rsp), %rdi
movq %rax, %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0xd0(%rax), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x4850
cmpl $0x0, %eax
je 0x12999
movq 0x88(%rsp), %rax
movq 0xb0(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x129ad
movq 0x88(%rsp), %rax
movq 0xd0(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x88(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x4870
cmpl $0x0, %eax
je 0x12a06
movq 0x88(%rsp), %rax
movq 0xb0(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x12a1a
movq 0x88(%rsp), %rax
movq 0xd0(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x131b0
movq %rax, 0x90(%rsp)
jmp 0x12a86
movq 0x88(%rsp), %rax
movq 0xea0(%rax), %rdi
movq 0x88(%rsp), %rax
movl 0xec8(%rax), %edx
leaq 0x5581(%rip), %rsi      # 0x17fd8
movb $0x0, %al
callq 0x4280
movq 0x88(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0xea0(%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x12ce0
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
addq $0x98, %rsp
retq
nopw %cs:(%rax,%rax)