// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: d_add_any_ok
static bool d_add_any_ok(s7_scheme *sc, opt_info *opc, s7_pointer car_x, int32_t len)
                {
                    s7_pointer head;
                    int32_t start;
                    start = sc->pc;
                    head = car(car_x);
                    if ((head == sc->add_symbol) ||
                            (head == sc->multiply_symbol))
                    {
                        s7_pointer p;
                        int32_t cur_len;
                        for (cur_len = 0, p = cdr(car_x); is_pair(p); p = cdr(p), cur_len++)
                            if (!float_optimize(sc, p))
                                break;
                        if (is_null(p))
                        {
                            /* since 2|3|4-arg case is split out above, can cur_len ever be 2? */
                            opc->v[1].i = cur_len;
                            opc->v[0].fd = (head == sc->add_symbol) ? opt_d_add_any_f : opt_d_multiply_any_f;
                            return(oo_set_type_0(opc, 2));
                        }
                    }
                    else
                    {
                        if (head == sc->subtract_symbol)
                        {
                            s7_pointer p;
                            opc->v[1].i = (len - 1);
                            for (p = cdr(car_x); is_pair(p); p = cdr(p))
                                if (!float_optimize(sc, p))
                                    break;
                            if (is_null(p))
                            {
                                opc->v[0].fd = opt_d_subtract_any_f;
                                return(oo_set_type_0(opc, 2));
                            }
                        }
                    }
                    pc_fallback(sc, start);
                    return(return_false(sc, car_x, __func__, __LINE__));
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movq %rdx, 0x38(%rsp)
movl %ecx, 0x34(%rsp)
movq 0x48(%rsp), %rax
movl 0x2258(%rax), %eax
movl %eax, 0x24(%rsp)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0xba8(%rcx), %rax
je 0xe450e
movq 0x28(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x1358(%rcx), %rax
jne 0xe45dd
movl $0x0, 0x14(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xe4563
movq 0x48(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x473f0
testb $0x1, %al
jne 0xe4546
jmp 0xe4563
jmp 0xe4548
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0xe4524
movq 0x18(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe45d8
movslq 0x14(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x28(%rsp), %rdx
movq 0x48(%rsp), %rax
movq 0xba8(%rax), %rsi
leaq 0x32f24(%rip), %rcx     # 0x1174c0
leaq 0x32e8d(%rip), %rax     # 0x117430
cmpq %rsi, %rdx
cmoveq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, (%rax)
movq 0x40(%rsp), %rdi
movl $0x2, %esi
leaq 0x10b16f(%rip), %rdx    # 0x1ef732
movl $0xe730, %ecx           # imm = 0xE730
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xe46a5
jmp 0xe4692
movq 0x28(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x1588(%rcx), %rax
jne 0xe4690
movl 0x34(%rsp), %eax
subl $0x1, %eax
movslq %eax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xe4649
movq 0x48(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x473f0
testb $0x1, %al
jne 0xe4637
jmp 0xe4649
jmp 0xe4639
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0xe4615
movq 0x8(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe468e
movq 0x40(%rsp), %rax
leaq 0x32ef8(%rip), %rcx     # 0x117560
movq %rcx, (%rax)
movq 0x40(%rsp), %rdi
movl $0x2, %esi
leaq 0x10b0b6(%rip), %rdx    # 0x1ef732
movl $0xe73f, %ecx           # imm = 0xE73F
callq 0xe4820
andb $0x1, %al
movb %al, 0x57(%rsp)
jmp 0xe46a5
jmp 0xe4690
jmp 0xe4692
movq 0x48(%rsp), %rdi
movl 0x24(%rsp), %esi
callq 0xe59a0
movb $0x0, 0x57(%rsp)
movb 0x57(%rsp), %al
andb $0x1, %al
addq $0x58, %rsp
retq