// File: /workspace/github_c_makefile_star2_O1/BernardTatin[P]s7sh/s7.c
// Function: op_closure_3s
static void op_closure_3s(s7_scheme *sc)
                {
                    s7_pointer e, p, args, last_slot;
                    s7_int id;
                    check_stack_size(sc);
                    args = cdr(sc->code);
                    sc->code = opt1_lambda(sc->code);

                    new_frame(sc, closure_let(sc->code), e);
                    sc->z = e;
                    id = let_id(e);
                    p = closure_args(sc->code);
                    add_slot(e, car(p), lookup(sc, car(args)));
                    last_slot = let_slots(e);
                    p = cdr(p);
                    args = cdr(args);
                    add_slot_at_end(id, last_slot, car(p), lookup(sc, car(args)));
                    add_slot_at_end(id, last_slot, cadr(p), lookup(sc, cadr(args)));

                    sc->envir = e;
                    sc->z = sc->nil;
                }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x50(%rdi), %rax
cmpq 0x58(%rdi), %rax
jb 0xca697
movq %rbx, %rdi
callq 0xc15d0
movq (%rbx), %rax
movq 0x90(%rbx), %rcx
movq 0x10(%rax), %r14
movq 0x18(%rax), %rax
movq %rax, (%rbx)
cmpq 0x98(%rbx), %rcx
ja 0xca6bd
movq %rbx, %rdi
callq 0xb389
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rax
movq $0x20001c, (%rax)       # imm = 0x20001C
movq 0x250(%rbx), %rcx
incq %rcx
movq %rcx, 0x250(%rbx)
movq %rcx, 0x18(%rax)
movq $0x0, 0x8(%rax)
movq (%rbx), %rcx
movq 0x18(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq %rax, 0x4f0(%rbx)
movq (%rbx), %rdx
movq 0x8(%rbx), %rcx
movq 0x8(%rdx), %rsi
movq 0x8(%rsi), %rdi
movq 0x8(%r14), %rdx
movq 0x18(%rcx), %r9
movq 0x20(%rdx), %r8
cmpq %r8, %r9
je 0xca741
jle 0xca738
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %r9
cmpq %r9, %r8
jl 0xca72b
cmpq %r8, %r9
jne 0xca89f
movq 0x18(%rdx), %rcx
movq 0x10(%rcx), %r8
movq 0x18(%rax), %rcx
movq 0x90(%rbx), %rdx
leaq -0x8(%rdx), %r9
movq %r9, 0x90(%rbx)
movq -0x8(%rdx), %rdx
movq $0x20, (%rdx)
movq %rdi, 0x8(%rdx)
movq %r8, 0x10(%rdx)
movq %rdx, 0x18(%rdi)
movq 0x18(%rax), %r8
movq %r8, 0x20(%rdi)
incl 0x28(%rdi)
movq 0x8(%rax), %rdi
movq %rdi, 0x18(%rdx)
movq %rdx, 0x8(%rax)
movq 0x10(%rsi), %r8
movq 0x10(%r14), %rdi
movq 0x8(%r8), %r9
movq 0x8(%rdi), %rsi
movq 0x8(%rbx), %r10
movq 0x18(%r10), %r14
movq 0x20(%rsi), %r11
cmpq %r11, %r14
je 0xca7c6
jle 0xca7bd
movq 0x10(%r10), %r10
movq 0x18(%r10), %r14
cmpq %r14, %r11
jl 0xca7b0
cmpq %r11, %r14
jne 0xca8e8
movq 0x18(%rsi), %rsi
movq 0x10(%rsi), %r11
movq 0x90(%rbx), %rsi
leaq -0x8(%rsi), %r10
movq %r10, 0x90(%rbx)
movq -0x8(%rsi), %rsi
movq $0x20, (%rsi)
movq %r9, 0x8(%rsi)
movq $0x0, 0x18(%rsi)
movq %r11, 0x10(%rsi)
movq %rsi, 0x18(%r9)
movq %rcx, 0x20(%r9)
incl 0x28(%r9)
movq %rsi, 0x18(%rdx)
movq 0x10(%r8), %rdx
movq 0x8(%rdx), %rdx
movq 0x10(%rdi), %rdi
movq 0x8(%rdi), %rdi
movq 0x8(%rbx), %r8
movq 0x18(%r8), %r10
movq 0x20(%rdi), %r9
cmpq %r9, %r10
je 0xca844
jle 0xca83b
movq 0x10(%r8), %r8
movq 0x18(%r8), %r10
cmpq %r10, %r9
jl 0xca82e
cmpq %r9, %r10
jne 0xca933
movq 0x18(%rdi), %rdi
movq 0x10(%rdi), %r9
movq 0x90(%rbx), %rdi
leaq -0x8(%rdi), %r8
movq %r8, 0x90(%rbx)
movq -0x8(%rdi), %rdi
movq $0x20, (%rdi)
movq %rdx, 0x8(%rdi)
movq $0x0, 0x18(%rdi)
movq %r9, 0x10(%rdi)
movq %rdi, 0x18(%rdx)
movq %rcx, 0x20(%rdx)
incl 0x28(%rdx)
movq %rdi, 0x18(%rsi)
movq %rax, 0x8(%rbx)
movq 0x110(%rbx), %rax
movq %rax, 0x4f0(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
cmpb $0x1c, (%rcx)
jne 0xca8d3
movq 0x8(%rcx), %r10
testq %r10, %r10
sete %r9b
je 0xca8c1
cmpq %rdx, 0x8(%r10)
je 0xca8bd
movq 0x18(%r10), %r10
jmp 0xca8a8
movq 0x10(%r10), %r8
testb %r9b, %r9b
je 0xca749
movq 0x10(%rcx), %rcx
cmpb $0x1c, (%rcx)
je 0xca8a4
movq 0x10(%rdx), %rcx
cmpb $0x20, (%rcx)
je 0xca745
xorl %r8d, %r8d
jmp 0xca749
cmpb $0x1c, (%r10)
jne 0xca91e
movq 0x8(%r10), %r14
testq %r14, %r14
sete %bpl
je 0xca90b
cmpq %rsi, 0x8(%r14)
je 0xca907
movq 0x18(%r14), %r14
jmp 0xca8f2
movq 0x10(%r14), %r11
testb %bpl, %bpl
je 0xca7ce
movq 0x10(%r10), %r10
cmpb $0x1c, (%r10)
je 0xca8ee
movq 0x10(%rsi), %rsi
cmpb $0x20, (%rsi)
je 0xca7ca
xorl %r11d, %r11d
jmp 0xca7ce
cmpb $0x1c, (%r8)
jne 0xca969
movq 0x8(%r8), %r11
testq %r11, %r11
sete %r10b
je 0xca956
cmpq %rdi, 0x8(%r11)
je 0xca952
movq 0x18(%r11), %r11
jmp 0xca93d
movq 0x10(%r11), %r9
testb %r10b, %r10b
je 0xca84c
movq 0x10(%r8), %r8
cmpb $0x1c, (%r8)
je 0xca939
movq 0x10(%rdi), %rdi
cmpb $0x20, (%rdi)
je 0xca848
xorl %r9d, %r9d
jmp 0xca84c