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

```asm
<dendroid_mountains>:
  endbr64
  push   %r15
  push   %r14
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  movaps %xmm0,%xmm7
  mulss  D48(%rip),%xmm7
  mulss  D48(%rip),%xmm1
  movss  %xmm1,0x1c(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm1,%xmm4
  movsd  D256(%rip),%xmm0
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm4,%xmm1
  mulsd  %xmm0,%xmm1
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm1,%xmm5
  movd   %xmm5,%r14d
  movss  %xmm7,0x18(%rsp)
  pxor   %xmm6,%xmm6
  cvtss2sd %xmm7,%xmm6
  movsd  %xmm6,0x10(%rsp)
  mulsd  %xmm6,%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movd   %xmm3,%r15d
  mov    $0x13f39,%edi
  movaps %xmm5,%xmm1
  movaps %xmm3,%xmm0
  call   <sxnoise_2d@plt>
  movq   %xmm0,%rbx
  mov    $0xb19b,%edi
  movd   %r14d,%xmm1
  movd   %r15d,%xmm0
  call   <sxnoise_2d@plt>
  movq   %xmm0,%r14
  movsd  D357(%rip),%xmm0
  movsd  0x8(%rsp),%xmm1
  mulsd  %xmm0,%xmm1
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm1,%xmm5
  movd   %xmm5,%r15d
  mulsd  0x10(%rsp),%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movd   %xmm3,%ebp
  mov    $0x1558,%edi
  movaps %xmm5,%xmm1
  movaps %xmm3,%xmm0
  call   <sxnoise_2d@plt>
  movq   %rbx,%xmm5
  mulsd  D23(%rip),%xmm5
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm5,%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  D318(%rip),%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm1,%xmm5
  movd   %xmm5,%ebx
  mov    $0x2228,%edi
  movd   %r15d,%xmm1
  movd   %ebp,%xmm0
  call   <sxnoise_2d@plt>
  movapd %xmm0,%xmm2
  movsd  D23(%rip),%xmm0
  movq   %r14,%xmm5
  mulsd  %xmm5,%xmm0
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm0,%xmm1
  cvtss2sd %xmm1,%xmm1
  movsd  D318(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm1,%xmm5
  movss  %xmm5,0x28(%rsp)
  movsd  D59(%rip),%xmm0
  movsd  0x8(%rsp),%xmm1
  mulsd  %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  cvtsd2ss %xmm1,%xmm2
  movd   %xmm2,%r14d
  mulsd  0x10(%rsp),%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movd   %xmm3,%r15d
  mov    $0x158b,%edi
  movaps %xmm2,%xmm1
  movaps %xmm3,%xmm0
  call   <sxnoise_2d@plt>
  cvtsd2ss %xmm0,%xmm0
  movd   %ebx,%xmm2
  mulss  %xmm0,%xmm2
  movd   %xmm2,%ebx
  mulss  0x28(%rsp),%xmm0
  movss  %xmm0,0x20(%rsp)
  mov    $0x103d,%edi
  movd   %r14d,%xmm1
  movd   %r15d,%xmm0
  call   <sxnoise_2d@plt>
  movapd %xmm0,%xmm1
  movsd  0x10(%rsp),%xmm0
  mulsd  D27(%rip),%xmm0
  addsd  %xmm1,%xmm0
  subsd  D211(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  call   <sinf@plt>
  movss  %xmm0,0x28(%rsp)
  mov    $0x1a59,%edi
  movd   %r14d,%xmm1
  movd   %r15d,%xmm0
  call   <sxnoise_2d@plt>
  movapd %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm5
  mulsd  D320(%rip),%xmm5
  movapd %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  addsd  D211(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  call   <cosf@plt>
  movaps %xmm0,%xmm2
  mulss  0x28(%rsp),%xmm2
  movss  %xmm2,0x28(%rsp)
  movsd  D211(%rip),%xmm8
  mulsd  0x8(%rsp),%xmm8
  movsd  D211(%rip),%xmm9
  mulsd  0x10(%rsp),%xmm9
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm9,%xmm0
  mov    $0x13669,%edi
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm8,%xmm1
  call   <sxnoise_2d@plt>
  cvtsd2ss %xmm0,%xmm0
  addss  D217(%rip),%xmm0
  mulss  D295(%rip),%xmm0
  mulss  %xmm0,%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  D8(%rip),%xmm0
  addsd  D284(%rip),%xmm0
  movss  D217(%rip),%xmm10
  addss  0x28(%rsp),%xmm10
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm10,%xmm1
  mulsd  D242(%rip),%xmm1
  cvtsd2ss %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm11,%xmm11
  cvtsd2ss %xmm0,%xmm11
  movss  %xmm11,0x2c(%rsp)
  movd   %ebx,%xmm12
  addss  0x18(%rsp),%xmm12
  movaps %xmm12,%xmm0
  movss  0x20(%rsp),%xmm3
  addss  0x1c(%rsp),%xmm3
  movaps %xmm3,%xmm1
  call   <dendroid_noise@plt>
  addss  D217(%rip),%xmm0
  mulss  D295(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  D31(%rip),%xmm0
  movsd  %xmm0,0x20(%rsp)
  movsd  D178(%rip),%xmm3
  mulsd  0x8(%rsp),%xmm3
  movsd  D178(%rip),%xmm5
  mulsd  0x10(%rsp),%xmm5
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm5,%xmm0
  mov    $0x15993,%edi
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm3,%xmm1
  call   <sxnoise_2d@plt>
  movsd  %xmm0,0x8(%rsp)
  movss  D48(%rip),%xmm6
  mulss  0x18(%rsp),%xmm6
  movaps %xmm6,%xmm0
  mov    $0x1a3a,%edi
  movss  D48(%rip),%xmm1
  mulss  0x1c(%rsp),%xmm1
  call   <sxnoise_2d@plt>
  movsd  D242(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x8(%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cvtsd2ss %xmm1,%xmm1
  divss  D48(%rip),%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  D283(%rip),%xmm1
  pxor   %xmm2,%xmm2
  cvtsd2ss 0x20(%rsp),%xmm2
  cvtss2sd %xmm2,%xmm2
  cvtsd2ss %xmm1,%xmm1
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm0
  mulsd  D51(%rip),%xmm0
  movapd %xmm2,%xmm3
  mulsd  D378(%rip),%xmm3
  addsd  %xmm3,%xmm0
  movss  D217(%rip),%xmm3
  movss  0x2c(%rsp),%xmm4
  subss  %xmm4,%xmm3
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm3,%xmm0
  mulsd  D178(%rip),%xmm2
  movsd  D122(%rip),%xmm3
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm4,%xmm1
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  addss  0x28(%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  D196(%rip),%xmm0
  mulsd  D242(%rip),%xmm0
  subsd  %xmm3,%xmm0
  cvtsd2ss %xmm0,%xmm0
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: unpack_data
arguments: label: D48
type: f32
name: unpack_data
arguments: label: D256
type: f64
name: unpack_data
arguments: label: D357
type: f64
name: unpack_data
arguments: label: D23
type: f64
name: unpack_data
arguments: label: D318
type: f64
name: unpack_data
arguments: label: D59
type: f64
name: unpack_data
arguments: label: D27
type: f64
name: unpack_data
arguments: label: D211
type: f64
name: unpack_data
arguments: label: D320
type: f64
name: unpack_data
arguments: label: D217
type: f32
name: unpack_data
arguments: label: D295
type: f32
name: unpack_data
arguments: label: D8
type: f64
name: unpack_data
arguments: label: D284
type: f64
name: unpack_data
arguments: label: D242
type: byte[8]
name: unpack_data
arguments: label: D31
type: f64
name: unpack_data
arguments: label: D178
type: f64
name: unpack_data
arguments: label: D283
type: f64
name: unpack_data
arguments: label: D51
type: f64
name: unpack_data
arguments: label: D378
type: f64
name: unpack_data
arguments: label: D122
type: f64
name: unpack_data
arguments: label: D196
type: f64

tool: D48: 1.5

tool: D256: 1.1

tool: D357: 2.4

tool: D23: 0.23

tool: D318: 0.12

tool: D59: 0.4

tool: D27: 0.55

tool: D211: 0.3

tool: D320: 0.52

tool: D217: 1

tool: D295: 0.5

tool: D8: 0.9

tool: D284: 0.1

tool: {"D242": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: D31: 1.2

tool: D178: 0.8

tool: D283: 0.14

tool: D51: 0.95

tool: D378: 0.05

tool: D122: 0.2

tool: D196: 1.3

assistant: ```c
float dendroid_mountains(float x, float y) {
  x *= 1.5;
  y *= 1.5;
  float dx = 0.23 * sxnoise_2d(x * 1.1, y * 1.1, 81721);
  float dy = 0.23 * sxnoise_2d(x * 1.1, y * 1.1, 45467);
  dx += 0.12 * sxnoise_2d(x * 2.4, y * 2.4, 5464);
  dy += 0.12 * sxnoise_2d(x * 2.4, y * 2.4, 8744);
  float str = sxnoise_2d(x * 0.4, y * 0.4, 5515);
  dx *= str;
  dy *= str;
  float cont = sinf(x * 0.55 + sxnoise_2d(x * 0.4, y * 0.4, 4157) - 0.3);
  cont *= cosf(y * 0.52 + sxnoise_2d(x * 0.4, y * 0.4, 6745) + 0.3);
  float interp = sxnoise_2d(x * 0.3, y * 0.3, 79465);
  interp = (1 + interp) / 2.0;
  interp *= interp;
  interp *= interp;
  interp = 0.1 + 0.9 * interp;
  interp *= (1 + cont) / 2.0;
  float base = dendroid_noise(x + dx, y + dy);
  base = (1 + base) / 2.0;
  base *= 1.2;
  float alt = sxnoise_2d(x * 0.8, y * 0.8, 88467);
  alt += 0.5 * sxnoise_2d(x * 1.5, y * 1.5, 6714);
  alt /= 1.5;
  alt *= 0.14;
  float full = interp * (0.8 * base + 0.2 * alt) + (1 - interp) * (0.95 * alt + 0.05 * base);
  return 1.3 * (cont + full) / 2.0 - 0.2;
}
```