user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<prutenic_longitude_luna>:
  endbr64
  push   %rbx
  mov    $0x168,%edi
  sub    $0x20,%rsp
  movsd  %xmm0,(%rsp)
  mulsd  D82(%rip),%xmm0
  addsd  D53(%rip),%xmm0
  call   <pmod@plt>
  movsd  (%rsp),%xmm3
  mov    $0x168,%edi
  mulsd  D70(%rip),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movsd  D35(%rip),%xmm0
  addsd  %xmm3,%xmm0
  call   <pmod@plt>
  movsd  (%rsp),%xmm3
  mov    $0x168,%edi
  mulsd  D60(%rip),%xmm3
  movsd  %xmm0,0x10(%rsp)
  movsd  D16(%rip),%xmm0
  addsd  %xmm3,%xmm0
  call   <pmod@plt>
  movsd  0x8(%rsp),%xmm5
  mov    $0x168,%edi
  movapd %xmm5,%xmm4
  addsd  %xmm5,%xmm4
  movapd %xmm4,%xmm0
  call   <pmod@plt>
  movsd  %xmm0,0x18(%rsp)
  call   <prutenic_2nd_epicycle_luna@plt>
  movsd  0x18(%rsp),%xmm1
  comisd D15(%rip),%xmm1
  movapd %xmm0,%xmm2
  movsd  0x10(%rsp),%xmm0
  jbe    L14
  subsd  %xmm2,%xmm0
L6:
  mov    $0x168,%edi
  movsd  %xmm1,0x10(%rsp)
  call   <pmod@plt>
  movsd  0x10(%rsp),%xmm1
  movq   %xmm0,%rbx
  movapd %xmm1,%xmm0
  call   <prutenic_prop_luna@plt>
  movsd  %xmm0,0x10(%rsp)
  movq   %rbx,%xmm0
  call   <prutenic_1st_epicycle_luna@plt>
  movsd  %xmm0,0x18(%rsp)
  movq   %rbx,%xmm0
  call   <prutenic_excess_luna@plt>
  movq   %rbx,%xmm2
  comisd D15(%rip),%xmm2
  movsd  0x8(%rsp),%xmm1
  mulsd  0x10(%rsp),%xmm0
  divsd  D55(%rip),%xmm0
  addsd  0x18(%rsp),%xmm0
  jbe    L38
  addsd  %xmm0,%xmm1
L10:
  movapd %xmm1,%xmm0
  mov    $0x168,%edi
  call   <pmod@plt>
  movsd  %xmm0,0x8(%rsp)
  movsd  (%rsp),%xmm0
  call   <prutenic_mean_longitude_sol@plt>
  addsd  0x8(%rsp),%xmm0
  mov    $0x168,%edi
  call   <pmod@plt>
  movsd  %xmm0,0x8(%rsp)
  movsd  (%rsp),%xmm0
  call   <prutenic_precession@plt>
  addsd  0x8(%rsp),%xmm0
  add    $0x20,%rsp
  mov    $0x168,%edi
  pop    %rbx
  jmp    1110 <pmod@plt>
  nopw   0x0(%rax,%rax,1)
L14:
  addsd  %xmm2,%xmm0
  jmp    L6
  nopl   0x0(%rax)
L38:
  subsd  %xmm0,%xmm1
  jmp    L10
```

tool_calls: name: parse_data
arguments: tag: D82
datatype: byte[8]
name: parse_data
arguments: tag: D53
datatype: byte[8]
name: parse_data
arguments: tag: D70
datatype: byte[8]
name: parse_data
arguments: tag: D35
datatype: byte[8]
name: parse_data
arguments: tag: D60
datatype: byte[8]
name: parse_data
arguments: tag: D16
datatype: byte[8]
name: parse_data
arguments: tag: D15
datatype: f64[2]
name: parse_data
arguments: tag: D55
datatype: f64

tool: {"D82": [0x9e,0x4f,0x23,0xae,0xa9,0x61,0x28,0x40]}

tool: {"D53": [0xdd,0x06,0x73,0x65,0x22,0x3f,0x6a,0x40]}

tool: {"D70": [0xd8,0x44,0xbd,0x7e,0x45,0x21,0x2a,0x40]}

tool: {"D35": [0x32,0xa1,0x3b,0xf0,0x2d,0xe7,0x69,0x40]}

tool: {"D60": [0x22,0x52,0x73,0x4f,0x6d,0x75,0x2a,0x40]}

tool: {"D16": [0xef,0x65,0xc2,0x15,0x51,0x36,0x60,0x40]}

tool: {"D15": [180.0,60.0]}

tool: D55: 60

assistant: ```c
double prutenic_longitude_luna(double days_since_epoch) {
  static double med_elong_radix = ((209) + (((58) + (((22) + (((36) + (56) / 60.)) / 60.)) / 60.)) / 60.);
  static double med_elong_daily = ((12) + (((11) + (((26) + (((41) + (((29) + (((57) + (((49) + (37) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.);
  static double anomaly_radix = ((207) + (((13) + (((27) + (((41) + (16) / 60.)) / 60.)) / 60.)) / 60.);
  static double anomaly_daily = ((13) + (((3) + (((53) + (((56) + (((23) + (((57) + (((40) + (46) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.);
  static double arg_latitude_radix = ((129) + (((41) + (((50) + (((37) + (59) / 60.)) / 60.)) / 60.)) / 60.);
  static double arg_latitude_daily = ((13) + (((13) + (((45) + (((39) + (((30) + (((46) + (((28) + (53) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.)) / 60.);
  double med_elong = pmod(med_elong_radix + days_since_epoch * med_elong_daily, 360);
  double anomaly = pmod(anomaly_radix + days_since_epoch * anomaly_daily, 360);
  double arg_latitude = pmod(arg_latitude_radix + days_since_epoch * arg_latitude_daily, 360);
  double double_elong = pmod(2 * med_elong, 360);
  double epicycle_2 = prutenic_2nd_epicycle_luna(double_elong);
  double corrected_anomaly = pmod((double_elong > 180) ? anomaly - epicycle_2 : anomaly + epicycle_2, 360);
  double prop = prutenic_prop_luna(double_elong);
  double epicycle_1 = prutenic_1st_epicycle_luna(corrected_anomaly);
  double excess = prutenic_excess_luna(corrected_anomaly);
  double corr_add_sub = epicycle_1 + excess * prop / 60;
  double elongation = pmod((corrected_anomaly > 180) ? med_elong + corr_add_sub : med_elong - corr_add_sub, 360);
  double mean_longitude_sol = prutenic_mean_longitude_sol(days_since_epoch);
  double true_longitude_1st_aries = pmod(elongation + mean_longitude_sol, 360);
  double precession = prutenic_precession(days_since_epoch);
  double true_longitude = pmod(true_longitude_1st_aries + precession, 360);
  return true_longitude;
}
```