// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: chooser_check_arg_types
static s7_pointer chooser_check_arg_types(s7_scheme *sc, s7_pointer arg1, s7_pointer arg2, s7_pointer fallback,
                        s7_pointer f_2_ff, s7_pointer f_2_ii, s7_pointer f_2_if, s7_pointer f_2_fi,
                        s7_pointer f_2_xi, s7_pointer f_2_ix, s7_pointer f_2_fx, s7_pointer f_2_xf)
                {
                    s7_pointer arg1_type, arg2_type;

                    arg1_type = argument_type(sc, arg1);
                    arg2_type = argument_type(sc, arg2);

                    if ((arg1_type) || (arg2_type))
                    {
                        if (arg1_type == sc->is_float_symbol)
                        {
                            if (arg2_type == sc->is_float_symbol)
                                return(f_2_ff);
                            if (arg2_type == sc->is_integer_symbol)
                                return(f_2_fi);
                            return(f_2_fx);
                        }
                        if (arg1_type == sc->is_integer_symbol)
                        {
                            if (arg2_type == sc->is_float_symbol)
                                return(f_2_if);
                            if (arg2_type == sc->is_integer_symbol)
                                return(f_2_ii);
                            return(f_2_ix);
                        }
                        if (arg2_type == sc->is_float_symbol)
                            return(f_2_xf);
                        if (arg2_type == sc->is_integer_symbol)
                            return(f_2_xi);
                    }
                    return(fallback);
                }

// Assembly:
subq $0x48, %rsp
movq 0x78(%rsp), %rax
movq 0x70(%rsp), %rax
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rax
movq 0x58(%rsp), %rax
movq 0x50(%rsp), %rax
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movq %r9, 0x10(%rsp)
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x1d8ef0
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x1d8ef0
movq %rax, (%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x1d8dda
cmpq $0x0, (%rsp)
je 0x1d8ed7
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x11e0(%rcx), %rax
jne 0x1d8e3e
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x11e0(%rcx), %rax
jne 0x1d8e0e
movq 0x18(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x10d0(%rcx), %rax
jne 0x1d8e2f
movq 0x58(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq 0x70(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x10d0(%rcx), %rax
jne 0x1d8e99
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x11e0(%rcx), %rax
jne 0x1d8e6f
movq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x10d0(%rcx), %rax
jne 0x1d8e8d
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x11e0(%rcx), %rax
jne 0x1d8eb7
movq 0x78(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
movq (%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x10d0(%rcx), %rax
jne 0x1d8ed5
movq 0x60(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1d8ee1
jmp 0x1d8ed7
movq 0x20(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax,%rax)