// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: c_rem_dbl
static s7_double c_rem_dbl(s7_scheme *sc, s7_double x, s7_double y)
    {
        s7_int quo;
        s7_double pre_quo;
        if (y == 0.0)
            division_by_zero_error(sc, sc->remainder_symbol, set_elist_2(sc, wrap_real(sc, x), wrap_real2(sc, y)));
        if ((is_inf(y)) || (is_NaN(y)))
            wrong_type_argument_with_type(sc, sc->remainder_symbol, 2, set_elist_1(sc, wrap_real(sc, y)), a_normal_real_string);

        pre_quo = x / y;
        if ((pre_quo > s7_int_max) || (pre_quo < s7_int_min))
            simple_out_of_range(sc, sc->remainder_symbol, set_elist_2(sc, make_real(sc, x), wrap_real(sc, y)), its_too_large_string);
        if (pre_quo > 0.0)
            quo = (s7_int)floor(pre_quo);
        else quo = (s7_int)ceil(pre_quo);
        return(x - (y * quo));
    }

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm1
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, (%rsp)
jne 0xd05c8
jp 0xd05c8
movq 0x1470(%rbx), %rsi
movq 0x1f18(%rbx), %rax
movsd %xmm0, 0x8(%rax)
movq 0x1f18(%rbx), %rax
movq 0x1f20(%rbx), %rcx
movsd %xmm1, 0x8(%rcx)
movq 0x1f20(%rbx), %rcx
movq 0x6e0(%rbx), %rdx
movq %rax, 0x8(%rdx)
movq 0x6e0(%rbx), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x6e0(%rbx), %rdx
movq %rbx, %rdi
callq 0xc1ff
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movq %xmm1, %rax
btrq $0x3f, %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
cmpq %rcx, %rax
jl 0xd0639
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x4536d(%rip), %rdx     # 0x115960
movq 0x1f18(%rbx), %rax
movsd %xmm1, 0x8(%rax)
movq 0x1f18(%rbx), %rax
movq 0x6d8(%rbx), %rcx
movq %rax, 0x8(%rcx)
movq 0x6d8(%rbx), %rcx
movq 0x140(%rbx), %r8
movq 0x49412(%rip), %r9      # 0x119a38
movq %rbx, %rdi
callq 0x9bbb
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm3
divsd %xmm1, %xmm3
cmpb $0x0, 0x495c0(%rip)     # 0x119c08
jne 0xd0650
xorpd %xmm2, %xmm2
jmp 0xd0658
movsd 0x19c8(%rip), %xmm2     # 0xd2020
ucomisd %xmm2, %xmm3
ja 0xd067f
cmpb $0x0, 0x493c3(%rip)     # 0x119a28
jne 0xd066d
xorpd %xmm2, %xmm2
jmp 0xd0675
movsd 0x19b3(%rip), %xmm2     # 0xd2028
ucomisd %xmm3, %xmm2
jbe 0xd0721
movsd %xmm3, 0x10(%rsp)
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0xd06ba
movq %rbx, %rdi
callq 0x9c27
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rax
movq $0xd, (%rax)
movsd %xmm0, 0x8(%rax)
movq 0x1f18(%rbx), %rcx
movsd %xmm1, 0x8(%rcx)
movq 0x1f18(%rbx), %rcx
movq 0x6e0(%rbx), %rdx
movq %rax, 0x8(%rdx)
movq 0x6e0(%rbx), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x6e0(%rbx), %rdx
movq 0x49330(%rip), %rcx     # 0x119a40
movq %rbx, %rdi
movq %r14, %rsi
callq 0x35b47
movsd 0x10(%rsp), %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jbe 0xd0736
movapd %xmm3, %xmm0
callq 0x85f0
jmp 0xd073f
movapd %xmm3, %xmm0
callq 0x86c0
cvttsd2si %xmm0, %rax
cvtsi2sd %rax, %xmm0
movsd 0x8(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd (%rsp), %xmm0
subsd %xmm1, %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
retq