// File: /workspace/github_c_makefile_star2_O1/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 0x10d6a6
jp 0x10d6a6
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 0xe1ae
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movq %xmm1, %rax
btrq $0x3f, %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
cmpq %rcx, %rax
jl 0x10d717
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x4128f(%rip), %rdx     # 0x14e960
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 0x45334(%rip), %r9      # 0x152a38
movq %rbx, %rdi
callq 0xb31d
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm3
divsd %xmm1, %xmm3
cmpb $0x0, 0x454e2(%rip)     # 0x152c08
jne 0x10d72e
xorpd %xmm2, %xmm2
jmp 0x10d736
movsd 0x18ea(%rip), %xmm2     # 0x10f020
ucomisd %xmm2, %xmm3
ja 0x10d75d
cmpb $0x0, 0x452e5(%rip)     # 0x152a28
jne 0x10d74b
xorpd %xmm2, %xmm2
jmp 0x10d753
movsd 0x18d5(%rip), %xmm2     # 0x10f028
ucomisd %xmm3, %xmm2
jbe 0x10d829
movsd %xmm3, 0x10(%rsp)
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x10d791
movq %rbx, %rdi
callq 0xb389
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), %rax
movq 0x45252(%rip), %rcx     # 0x152a40
movq 0x1ef8(%rbx), %rdx
movq 0x10(%rdx), %rdx
movq %r14, 0x8(%rdx)
movq 0x10(%rdx), %rdx
movq %rax, 0x8(%rdx)
movq 0x10(%rdx), %rax
movq %rcx, 0x8(%rax)
movq 0x1948(%rbx), %rsi
movq 0x1ef8(%rbx), %rdx
movq %rbx, %rdi
callq 0x3b366
movsd 0x10(%rsp), %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x10d83e
movapd %xmm3, %xmm0
callq 0x95f0
jmp 0x10d847
movapd %xmm3, %xmm0
callq 0x96c0
cvttsd2si %xmm0, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd 0x8(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd (%rsp), %xmm0
subsd %xmm1, %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
retq