// File: /workspace/github_c_makefile_star2_O3/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 0x104124
jp 0x104124
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 0xd434
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movq %xmm1, %rax
btrq $0x3f, %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
cmpq %rcx, %rax
jl 0x104195
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x42811(%rip), %rdx     # 0x146960
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 0x468b6(%rip), %r9      # 0x14aa38
movq %rbx, %rdi
callq 0xa4e4
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movapd %xmm0, %xmm3
divsd %xmm1, %xmm3
cmpb $0x0, 0x46a64(%rip)     # 0x14ac08
jne 0x1041ac
xorpd %xmm2, %xmm2
jmp 0x1041b4
movsd 0x1e6c(%rip), %xmm2     # 0x106020
ucomisd %xmm2, %xmm3
ja 0x1041db
cmpb $0x0, 0x46867(%rip)     # 0x14aa28
jne 0x1041c9
xorpd %xmm2, %xmm2
jmp 0x1041d1
movsd 0x1e57(%rip), %xmm2     # 0x106028
ucomisd %xmm3, %xmm2
jbe 0x1042a7
movsd %xmm3, 0x10(%rsp)
movq 0x1470(%rbx), %rax
movq 0x8(%rax), %r14
movq 0x90(%rbx), %rax
cmpq 0x98(%rbx), %rax
ja 0x104216
movq %rbx, %rdi
callq 0xa550
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 0x467d4(%rip), %rcx     # 0x14aa40
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 0x38dfa
movsd 0x10(%rsp), %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x1042bc
movapd %xmm3, %xmm0
callq 0x85f0
jmp 0x1042c5
movapd %xmm3, %xmm0
callq 0x86c0
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