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

```asm
<processSetSensorValue>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  mov    %edx,-0x2c(%rbp)
  movsd  %xmm0,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8d,-0x30(%rbp)
  movl   $0x1,-0x1c(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  D27(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x38(%rbp),%xmm1
  movsd  D27(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L12
L25:
  cmpl   $0x4,-0x2c(%rbp)
  jne    L65
  mov    $0x4,%edi
  call   <inclino_getX_value@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  jmp    L75
L65:
  cmpl   $0x5,-0x2c(%rbp)
  jne    L11
  mov    $0x5,%edi
  call   <inclino_getY_value@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  jmp    L75
L11:
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <rot_get_value@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
L75:
  movsd  -0x10(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L3
  mov    -0x28(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  mov    -0x24(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  jmp    L37
L3:
  movsd  -0x18(%rbp),%xmm0
  comisd -0x8(%rbp),%xmm0
  jbe    L23
  mov    -0x24(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  mov    -0x28(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  jmp    L37
L23:
  mov    -0x24(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  mov    -0x28(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <relay_set_state@plt>
  movl   $0x0,-0x1c(%rbp)
L37:
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <sleep@plt>
L12:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L25
  mov    -0x30(%rbp),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <socket_tx@plt>
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D27
type: f64
name: unpack_data
arguments: label: D24
type: string
name: unpack_data
arguments: label: D38
type: string

tool: D27: 3

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


tool: D38: sensorValue=%.1f


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);
}
```