user: Please show me the C implementation that matches the assembly code listed below:

```asm
<gaosifansuan>:
  endbr64
  push   %r14
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  movq   %xmm0,%r12
  movq   %xmm2,%r14
  subsd  D192(%rip),%xmm1
  movsd  %xmm1,0x30(%rsp)
  mov    $0x7fffffff,%edi
  call   <sqrt@plt>
  divsd  D364(%rip),%xmm0
  movsd  %xmm0,(%rsp)
  mov    $0x7fffffff,%edi
  call   <sqrt@plt>
  movapd %xmm0,%xmm3
  divsd  D290(%rip),%xmm3
  movsd  %xmm3,0x48(%rsp)
  movsd  (%rsp),%xmm7
  mulsd  %xmm7,%xmm7
  movsd  %xmm7,0x38(%rsp)
  movsd  D419(%rip),%xmm0
  subsd  %xmm7,%xmm0
  movapd %xmm0,%xmm13
  mulsd  D364(%rip),%xmm13
  movsd  %xmm13,0x40(%rsp)
  movapd %xmm7,%xmm4
  mulsd  %xmm13,%xmm4
  movsd  D250(%rip),%xmm2
  mulsd  %xmm2,%xmm4
  movsd  D139(%rip),%xmm3
  mulsd  %xmm3,%xmm4
  movapd %xmm7,%xmm1
  mulsd  %xmm4,%xmm1
  movsd  D334(%rip),%xmm8
  mulsd  %xmm8,%xmm1
  mulsd  D169(%rip),%xmm1
  movapd %xmm7,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D81(%rip),%xmm6
  mulsd  %xmm6,%xmm0
  divsd  D119(%rip),%xmm0
  mulsd  %xmm0,%xmm7
  movapd %xmm7,%xmm5
  mulsd  D365(%rip),%xmm5
  movsd  D422(%rip),%xmm9
  mulsd  %xmm9,%xmm5
  mulsd  %xmm3,%xmm4
  movapd %xmm1,%xmm7
  mulsd  %xmm2,%xmm7
  mulsd  %xmm9,%xmm7
  movapd %xmm13,%xmm10
  addsd  %xmm4,%xmm10
  addsd  %xmm10,%xmm7
  mulsd  %xmm0,%xmm8
  movapd %xmm8,%xmm10
  movsd  D123(%rip),%xmm8
  mulsd  %xmm8,%xmm10
  addsd  %xmm10,%xmm7
  movapd %xmm5,%xmm10
  mulsd  D56(%rip),%xmm10
  mulsd  D8(%rip),%xmm10
  addsd  %xmm10,%xmm7
  movapd %xmm7,%xmm14
  movsd  %xmm7,0x10(%rsp)
  mulsd  %xmm5,%xmm6
  mulsd  %xmm1,%xmm3
  addsd  %xmm4,%xmm3
  movapd %xmm0,%xmm7
  mulsd  D211(%rip),%xmm7
  movsd  D222(%rip),%xmm4
  mulsd  %xmm4,%xmm7
  addsd  %xmm7,%xmm3
  movapd %xmm6,%xmm7
  mulsd  %xmm8,%xmm7
  addsd  %xmm7,%xmm3
  movsd  %xmm3,0x18(%rsp)
  mulsd  %xmm0,%xmm2
  mulsd  %xmm8,%xmm2
  mulsd  %xmm9,%xmm1
  addsd  %xmm1,%xmm2
  mulsd  %xmm4,%xmm6
  addsd  %xmm6,%xmm2
  movsd  %xmm2,0x20(%rsp)
  mulsd  %xmm4,%xmm0
  mulsd  %xmm8,%xmm5
  addsd  %xmm5,%xmm0
  movsd  %xmm0,0x28(%rsp)
  movq   %r12,%xmm5
  divsd  %xmm14,%xmm5
  movsd  %xmm5,(%rsp)
L4:
  movsd  (%rsp),%xmm6
  movapd %xmm6,%xmm0
  addsd  %xmm6,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rbp
  movsd  D44(%rip),%xmm0
  mulsd  (%rsp),%xmm0
  call   <sin@plt>
  movq   %xmm0,%rbx
  movsd  D119(%rip),%xmm0
  mulsd  (%rsp),%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm6
  movsd  %xmm6,0x8(%rsp)
  movq   %rbp,%xmm2
  mulsd  0x18(%rsp),%xmm2
  mulsd  D139(%rip),%xmm2
  pxor   %xmm1,%xmm1
  subsd  %xmm2,%xmm1
  movq   %rbx,%xmm2
  mulsd  0x20(%rsp),%xmm2
  mulsd  D169(%rip),%xmm2
  addsd  %xmm2,%xmm1
  mulsd  0x28(%rsp),%xmm0
  divsd  D119(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movq   %r12,%xmm0
  subsd  %xmm1,%xmm0
  divsd  0x10(%rsp),%xmm0
  movsd  %xmm0,(%rsp)
  mov    $0xfffffff8,%edi
  movsd  D399(%rip),%xmm0
  call   <pow@plt>
  movsd  (%rsp),%xmm1
  subsd  0x8(%rsp),%xmm1
  andpd  D186(%rip),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  D389(%rip),%xmm0
  divsd  D103(%rip),%xmm0
  comisd %xmm0,%xmm1
  ja     L4
  movsd  (%rsp),%xmm0
  call   <tan@plt>
  movsd  %xmm0,0x8(%rsp)
  movsd  (%rsp),%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  0x38(%rsp),%xmm3
  mulsd  %xmm0,%xmm3
  movapd %xmm3,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D419(%rip),%xmm1
  subsd  %xmm0,%xmm1
  cvttsd2si %xmm1,%edi
  call   <sqrt@plt>
  movsd  D364(%rip),%xmm1
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x10(%rsp)
  movapd %xmm0,%xmm3
  mulsd  %xmm0,%xmm3
  mulsd  %xmm3,%xmm0
  movsd  0x40(%rsp),%xmm1
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsp)
  movsd  (%rsp),%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm4
  mulsd  0x48(%rsp),%xmm4
  movsd  %xmm4,0x20(%rsp)
  mov    $0x10,%edi
  call   <malloc@plt>
  mov    %rax,%rbp
  movsd  0x30(%rsp),%xmm7
  movapd %xmm7,%xmm6
  movsd  0x8(%rsp),%xmm5
  mulsd  %xmm5,%xmm6
  movapd %xmm6,%xmm0
  mulsd  %xmm7,%xmm0
  movsd  0x18(%rsp),%xmm6
  movapd %xmm6,%xmm1
  addsd  %xmm6,%xmm1
  mulsd  0x10(%rsp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  (%rsp),%xmm2
  subsd  %xmm0,%xmm2
  movsd  %xmm2,0x28(%rsp)
  movsd  0x20(%rsp),%xmm4
  movapd %xmm4,%xmm3
  mulsd  %xmm4,%xmm3
  movapd %xmm5,%xmm0
  mulsd  D250(%rip),%xmm0
  mulsd  %xmm5,%xmm0
  addsd  D334(%rip),%xmm0
  movsd  %xmm3,0x38(%rsp)
  addsd  %xmm3,%xmm0
  movapd %xmm4,%xmm1
  mulsd  D365(%rip),%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm5,%xmm1
  subsd  %xmm1,%xmm0
  mulsd  %xmm5,%xmm0
  movsd  %xmm0,0x40(%rsp)
  mov    $0x4,%edi
  movapd %xmm7,%xmm0
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm9
  mulsd  0x40(%rsp),%xmm9
  movq   %xmm9,%rbx
  mov    $0x3,%edi
  movsd  0x10(%rsp),%xmm0
  call   <pow@plt>
  movsd  0x18(%rsp),%xmm1
  mulsd  D59(%rip),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  %xmm0,%xmm1
  movq   %rbx,%xmm15
  divsd  %xmm1,%xmm15
  movapd %xmm15,%xmm14
  addsd  0x28(%rsp),%xmm14
  movq   %xmm14,%rbx
  mov    $0x4,%edi
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm7
  mulsd  D344(%rip),%xmm7
  movapd %xmm7,%xmm0
  mulsd  %xmm5,%xmm0
  addsd  D335(%rip),%xmm0
  imul   $0x2d,%eax,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm11
  mulsd  %xmm5,%xmm11
  movsd  %xmm11,0x28(%rsp)
  mov    $0x6,%edi
  movsd  0x30(%rsp),%xmm0
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm15
  mulsd  0x28(%rsp),%xmm15
  movq   %xmm15,%r12
  mov    $0x5,%edi
  movsd  0x10(%rsp),%xmm0
  call   <pow@plt>
  movsd  0x18(%rsp),%xmm1
  mulsd  D245(%rip),%xmm1
  movapd %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  mulsd  %xmm1,%xmm0
  movq   %r12,%xmm1
  divsd  %xmm0,%xmm1
  movq   %rbx,%xmm6
  subsd  %xmm1,%xmm6
  movsd  %xmm6,0x0(%rbp)
  movsd  (%rsp),%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  0x10(%rsp),%xmm0
  movsd  0x30(%rsp),%xmm7
  movapd %xmm7,%xmm6
  divsd  %xmm0,%xmm6
  movsd  %xmm6,0x18(%rsp)
  movsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm4
  addsd  %xmm5,%xmm4
  movapd %xmm4,%xmm0
  mulsd  %xmm5,%xmm0
  addsd  D419(%rip),%xmm0
  addsd  0x38(%rsp),%xmm0
  movsd  %xmm0,0x28(%rsp)
  mov    $0x3,%edi
  movapd %xmm7,%xmm0
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm11
  mulsd  0x28(%rsp),%xmm11
  movq   %xmm11,%r12
  mov    $0x3,%edi
  movsd  0x10(%rsp),%xmm0
  call   <pow@plt>
  mov    %eax,%ebx
  movsd  (%rsp),%xmm0
  call   <cos@plt>
  imul   %ebx,%eax
  lea    (%rax,%rax,2),%eax
  add    %eax,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movq   %r12,%xmm14
  divsd  %xmm1,%xmm14
  movsd  0x18(%rsp),%xmm6
  subsd  %xmm14,%xmm6
  movsd  %xmm6,0x18(%rsp)
  mov    $0x4,%edi
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  0x8(%rsp),%xmm3
  movapd %xmm3,%xmm4
  mulsd  D355(%rip),%xmm4
  movapd %xmm4,%xmm0
  mulsd  %xmm3,%xmm0
  addsd  D334(%rip),%xmm0
  lea    (%rax,%rax,2),%eax
  shl    $0x3,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x20(%rsp),%xmm4
  movapd %xmm4,%xmm1
  mulsd  D119(%rip),%xmm1
  mulsd  %xmm4,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm4,%xmm1
  mulsd  D88(%rip),%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm1
  movapd %xmm0,%xmm5
  addsd  %xmm1,%xmm5
  movsd  %xmm5,0x8(%rsp)
  mov    $0x5,%edi
  movsd  0x30(%rsp),%xmm0
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm3
  mulsd  0x8(%rsp),%xmm3
  movq   %xmm3,%rbx
  mov    $0x5,%edi
  movsd  0x10(%rsp),%xmm0
  call   <pow@plt>
  mov    %eax,%r12d
  movsd  (%rsp),%xmm0
  call   <cos@plt>
  imul   %eax,%r12d
  imul   $0x78,%r12d,%r12d
  pxor   %xmm1,%xmm1
  cvtsi2sd %r12d,%xmm1
  movq   %rbx,%xmm0
  divsd  %xmm1,%xmm0
  addsd  0x18(%rsp),%xmm0
  movsd  D372(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  0x0(%rbp),%xmm1
  movsd  D389(%rip),%xmm2
  divsd  %xmm2,%xmm1
  movsd  %xmm1,0x0(%rbp)
  divsd  %xmm2,%xmm0
  movq   %r14,%xmm5
  addsd  %xmm5,%xmm0
  movsd  %xmm0,0x8(%rbp)
  mov    %rbp,%rax
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  ret
```

tool_calls: name: read_data
arguments: tag: D192
type_infered: f32[2]
name: read_data
arguments: tag: D364
type_infered: f32[2]
name: read_data
arguments: tag: D290
type_infered: byte[8]
name: read_data
arguments: tag: D419
type_infered: f32[2]
name: read_data
arguments: tag: D250
type_infered: f32[2]
name: read_data
arguments: tag: D139
type_infered: f32[2]
name: read_data
arguments: tag: D334
type_infered: f32[2]
name: read_data
arguments: tag: D169
type_infered: f32[2]
name: read_data
arguments: tag: D81
type_infered: f32[2]
name: read_data
arguments: tag: D119
type_infered: f64
name: read_data
arguments: tag: D365
type_infered: f32[2]
name: read_data
arguments: tag: D422
type_infered: f32[2]
name: read_data
arguments: tag: D123
type_infered: f32[2]
name: read_data
arguments: tag: D56
type_infered: f32[2]
name: read_data
arguments: tag: D8
type_infered: f32[2]
name: read_data
arguments: tag: D211
type_infered: f32[2]
name: read_data
arguments: tag: D222
type_infered: f32[2]
name: read_data
arguments: tag: D44
type_infered: f64
name: read_data
arguments: tag: D399
type_infered: f64
name: read_data
arguments: tag: D186
type_infered: qword[2]
name: read_data
arguments: tag: D389
type_infered: f64
name: read_data
arguments: tag: D103
type_infered: f32[2]
name: read_data
arguments: tag: D59
type_infered: f32[2]
name: read_data
arguments: tag: D344
type_infered: f32[2]
name: read_data
arguments: tag: D335
type_infered: f32[2]
name: read_data
arguments: tag: D245
type_infered: f32[2]
name: read_data
arguments: tag: D355
type_infered: f32[2]
name: read_data
arguments: tag: D88
type_infered: f64
name: read_data
arguments: tag: D372
type_infered: f32[2]

tool: {"D192": [0.0,9.9073486328125]}

tool: {"D364": [2.0,13.520666122436523]}

tool: {"D290": [0x6d,0xf8,0x15,0x13,0xc4,0x3f,0x58,0x41]}

tool: {"D419": [0.0,1.875]}

tool: {"D250": [0.0,2.125]}

tool: {"D139": [0.0,1.75]}

tool: {"D334": [0.0,2.3125]}

tool: {"D169": [0.0,1.625]}

tool: {"D81": [0.0,2.4375]}

tool: D119: 6

tool: {"D365": [0.0,2.53125]}

tool: {"D422": [0.0,1.5]}

tool: {"D123": [0.0,1.375]}

tool: {"D56": [0.0,3.0234375]}

tool: {"D8": [0.0,1.0]}

tool: {"D211": [0.0,2.71875]}

tool: {"D222": [0.0,1.25]}

tool: D44: 4

tool: D399: 10

tool: {"D186": [0x7fffffffffffffff,0x0000000000000000]}

tool: D389: 3.1415926

tool: {"D103": [0.0,4.1328125]}

tool: {"D59": [0.0,2.875]}

tool: {"D344": [0.0,3.3515625]}

tool: {"D335": [0.0,3.2265625]}

tool: {"D245": [0.0,4.203125]}

tool: {"D355": [0.0,2.9375]}

tool: D88: 8

tool: {"D372": [0.0,3.6015625]}

assistant: ```c
double *gaosifansuan(double x, double y, double L0) {
  double a, f, b, c, e1, e2;
  double Bf, itaf, tf, Nf, Mf, Wf;
  double l;
  double *BL;
  double m[5], n[5];
  a = 6378137;
  b = 6356752.3142;
  f = 1 / 298.257;
  e1 = 0.006694385;
  e2 = 0.00673950;
  y = y - 500000;
  {
    b = a * (1 - f);
    e1 = sqrt(a * a - b * b) / a;
    e2 = sqrt(a * a - b * b) / b;
    c = a * a / b;
    m[0] = a * (1 - e1 * e1);
    m[1] = 3 * (e1 * e1 * m[0]) / 2.0;
    m[2] = 5 * (e1 * e1 * m[1]) / 4.0;
    m[3] = 7 * (e1 * e1 * m[2]) / 6.0;
    m[4] = 9 * (e1 * e1 * m[3]) / 8.0;
    n[0] = m[0] + m[1] / 2 + 3 * m[2] / 8 + 5 * m[3] / 16 + 35 * m[4] / 128;
    n[1] = m[1] / 2 + m[2] / 2 + 15 * m[3] / 32 + 7 * m[4] / 16;
    n[2] = m[2] / 8 + 3 * m[3] / 16 + 7 * m[4] / 32;
    n[3] = m[3] / 32 + m[4] / 16;
    n[4] = m[4] / 128;
  }
  {
    double Bf1, Bfi0, Bfi1, FBfi;
    Bf1 = x / n[0];
    Bfi0 = Bf1;
    Bfi1 = 0;
    FBfi = 0;
    int num = 0;
    do {
      num = 0;
      FBfi = 0.0 - n[1] * sin(2 * Bfi0) / 2.0 + n[2] * sin(4 * Bfi0) / 4.0 - n[3] * sin(6 * Bfi0) / 6.0;
      Bfi1 = (x - FBfi) / n[0];
      if (fabs(Bfi1 - Bfi0) > (3.1415926 * pow(10.0, -8) / (36 * 18))) {
        num = 1;
        Bfi0 = Bfi1;
      }
    } while (num == 1);
    Bf = Bfi1;
  }
  tf = tan(Bf);
  Wf = sqrt(1 - e1 * e1 * sin(Bf) * sin(Bf));
  Nf = a / Wf;
  Mf = a * (1 - e1 * e1) / (Wf * Wf * Wf);
  itaf = e2 * cos(Bf);
  BL = (double *)malloc(2 * sizeof(double));
  BL[0] = Bf - tf * y * y / (2 * Mf * Nf) + tf * (5 + 3 * tf * tf + itaf * itaf - 9 * itaf * itaf * tf * tf) * pow(y, 4) / (24 * Mf * pow(Nf, 3)) - tf * (61 + 90 * tf * tf + 45 * pow(tf, 4)) * pow(y, 6) / (720 * Mf * pow(Nf, 5));
  l = y / (Nf * cos(Bf)) - (1 + 2 * tf * tf + itaf * itaf) * pow(y, 3) / (6 * pow(Nf, 3) * cos(Bf)) + (5 + 28 * tf * tf + 24 * pow(tf, 4) + 6 * itaf * itaf + 8 * itaf * itaf * tf * tf) * pow(y, 5) / (120 * pow(Nf, 5) * cos(Bf));
  l = l * 180 / 3.1415926;
  BL[0] = BL[0] * 180 / 3.1415926;
  BL[1] = l + L0;
  return BL;
}
```