user: What would the C source look like for the assembly code provided here:

```asm
<processSetSensorValue>:
  endbr64
  push   %r15
  movapd %xmm0,%xmm4
  mov    %r8d,%r15d
  push   %r14
  mov    %rcx,%r14
  push   %r13
  lea    D21(%rip),%r13
  push   %r12
  mov    %edi,%r12d
  lea    D1(%rip),%rdi
  push   %rbp
  mov    %esi,%ebp
  push   %rbx
  mov    %edx,%ebx
  sub    $0x28,%rsp
  movsd  D4(%rip),%xmm1
  subsd  %xmm1,%xmm4
  addsd  %xmm0,%xmm1
  movsd  %xmm4,0x8(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <printf@plt>
  cmp    $0x4,%ebx
  je     L28
  nopw   0x0(%rax,%rax,1)
L71:
  cmp    $0x5,%ebx
  je     L43
  mov    %ebx,%edi
  call   <rot_get_value@plt>
L25:
  movsd  0x8(%rsp),%xmm2
  comisd %xmm0,%xmm2
  ja     L73
L19:
  comisd 0x10(%rsp),%xmm0
  jbe    L52
  mov    $0x1,%esi
  mov    %r12d,%edi
  movsd  %xmm0,0x18(%rsp)
  call   <relay_set_state@plt>
  xor    %esi,%esi
  mov    %ebp,%edi
  call   <relay_set_state@plt>
  movsd  0x18(%rsp),%xmm0
L1:
  mov    %r13,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <sleep@plt>
  cmp    $0x4,%ebx
  jne    L71
L28:
  mov    $0x4,%edi
  call   <inclino_getX_value@plt>
  movsd  0x8(%rsp),%xmm2
  comisd %xmm0,%xmm2
  jbe    L19
L73:
  mov    $0x1,%esi
  mov    %ebp,%edi
  movsd  %xmm0,0x18(%rsp)
  call   <relay_set_state@plt>
  xor    %esi,%esi
  mov    %r12d,%edi
  call   <relay_set_state@plt>
  movsd  0x18(%rsp),%xmm0
  jmp    L1
  nopw   0x0(%rax,%rax,1)
L52:
  mov    %r12d,%edi
  mov    $0x1,%esi
  movsd  %xmm0,0x8(%rsp)
  call   <relay_set_state@plt>
  mov    $0x1,%esi
  mov    %ebp,%edi
  call   <relay_set_state@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %r13,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <sleep@plt>
  add    $0x28,%rsp
  mov    %r15d,%esi
  mov    %r14,%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10d0 <socket_tx@plt>
L43:
  mov    $0x5,%edi
  call   <inclino_getY_value@plt>
  jmp    L25
```

tool_calls: name: retrieve_data
arguments: tag: D21
data_type: string
name: retrieve_data
arguments: tag: D1
data_type: string
name: retrieve_data
arguments: tag: D4
data_type: f64

tool: D21: sensorValue=%.1f


tool: D1: sensorValueToBe=%.1f +- 3


tool: D4: 3

assistant: ```c
void processSetSensorValue(int relayNbPlus, int relayNbMoins, int sensorNb, double sensorValueToBe, unsigned char *toSendOnFinish, int length) {
  bool notFinish = true;
  double sensorValue;
  double sensorValueToBeMin = sensorValueToBe - 3;
  double sensorValueToBeMax = sensorValueToBe + 3;
  printf("sensorValueToBe=%.1f +- 3\n", sensorValueToBe);
  while (notFinish) {
    if (sensorNb == 4)
      sensorValue = inclino_getX_value(4);
    else if (sensorNb == 5)
      sensorValue = inclino_getY_value(5);
    else
      sensorValue = rot_get_value(sensorNb);
    if (sensorValue < sensorValueToBeMin) {
      relay_set_state(relayNbMoins, 1);
      relay_set_state(relayNbPlus, 0);
    } else if (sensorValue > sensorValueToBeMax) {
      relay_set_state(relayNbPlus, 1);
      relay_set_state(relayNbMoins, 0);
    } else {
      relay_set_state(relayNbPlus, 1);
      relay_set_state(relayNbMoins, 1);
      notFinish = false;
    }
    printf("sensorValue=%.1f\n", sensorValue);
    sleep(1);
  }
  socket_tx(toSendOnFinish, length);
}
```