// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: check_if
static s7_pointer check_if(s7_scheme *sc)
                {
                    s7_pointer cdr_code, form;
                    form = sc->code;
                    sc->code = cdr(sc->code);

                    if (!is_pair(sc->code))                                /* (if) or (if . 1) */
                        eval_error(sc, "(if): if needs at least 2 expressions: ~A", 41, form);

                    cdr_code = cdr(sc->code);
                    if (!is_pair(cdr_code))                                /* (if 1) */
                        eval_error(sc, "(if ~A): if needs another clause", 32, car(sc->code));

                    if (is_pair(cdr(cdr_code)))
                    {
                        if (is_not_null(cddr(cdr_code)))                   /* (if 1 2 3 4) */
                            eval_error(sc, "too many clauses for if: ~A", 27, form);
                    }
                    else
                    {
                        if (is_not_null(cdr(cdr_code)))                    /* (if 1 2 . 3) */
                            eval_error(sc, "if: ~A has improper list?", 25, form);
                    }

                    pair_set_syntax_op(form, OP_IF_UNCHECKED);
                    set_if_opts(sc, form, is_null(cdr(cdr_code)), false);
                    return(sc->code);
                }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rcx
movq 0x78(%rsp), %rax
movq %rcx, (%rax)
movq 0x78(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x1932f9
movq 0x78(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x78(%rsp), %rax
movq 0x1918(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x5d66e(%rip), %rsi     # 0x1f092c
movl $0x29, %edx
callq 0xb880
movq 0x50(%rsp), %rdi
movq %rax, %rsi
movq 0x68(%rsp), %rdx
callq 0xb830
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq %rax, 0x80(%rsp)
jmp 0x193517
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x19338a
movq 0x78(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x78(%rsp), %rax
movq 0x1918(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x5d60e(%rip), %rsi     # 0x1f0956
movl $0x20, %edx
callq 0xb880
movq 0x38(%rsp), %rdi
movq %rax, %rsi
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdx
callq 0xb830
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq %rax, 0x80(%rsp)
jmp 0x193517
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x19342b
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x78(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0x193426
movq 0x78(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rax
movq 0x1918(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x5d58c(%rip), %rsi     # 0x1f0977
movl $0x1b, %edx
callq 0xb880
movq 0x20(%rsp), %rdi
movq %rax, %rsi
movq 0x68(%rsp), %rdx
callq 0xb830
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq %rax, 0x80(%rsp)
jmp 0x193517
jmp 0x1934ad
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x78(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0x1934ab
movq 0x78(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rax
movq 0x1918(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x5d520(%rip), %rsi     # 0x1f0993
movl $0x19, %edx
callq 0xb880
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq 0x68(%rsp), %rdx
callq 0xb830
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %rax, %rdx
callq 0x2f940
movq %rax, 0x80(%rsp)
jmp 0x193517
jmp 0x1934ad
jmp 0x1934af
movq 0x68(%rsp), %rax
movw $0x284, 0x4(%rax)       # imm = 0x284
movq 0x68(%rsp), %rax
movq (%rax), %rcx
andq $-0x10000, %rcx         # imm = 0xFFFF0000
orq $0x201, %rcx            # imm = 0x201
movq 0x68(%rsp), %rax
movq %rcx, (%rax)
movq 0x78(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x78(%rsp), %rcx
cmpq 0x110(%rcx), %rax
sete %al
movzbl %al, %edx
andl $0x1, %edx
xorl %ecx, %ecx
callq 0x193530
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
addq $0x88, %rsp
retq
nopw (%rax,%rax)