user: 请将以下的汇编代码转换成C语言代码：

```asm
<find_side>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  mov    $0xaaaaaaab,%r14d
  push   %r13
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x38,%rsp
L52:
  movsd  0x0(%rbp,%rbx,8),%xmm0
  call   <to_radians@plt>
  lea    0x1(%rbx),%edx
  mov    %rdx,%rax
  imul   %r14,%rdx
  movsd  %xmm0,0x8(%rsp)
  shr    $0x21,%rdx
  lea    (%rdx,%rdx,2),%edx
  sub    %edx,%eax
  cltq
  movsd  0x0(%rbp,%rax,8),%xmm0
  lea    0x0(,%rax,8),%r12
  add    %r15,%r12
  call   <to_radians@plt>
  lea    0x2(%rbx),%edx
  mov    %rdx,%rax
  imul   %r14,%rdx
  movsd  %xmm0,(%rsp)
  shr    $0x21,%rdx
  lea    (%rdx,%rdx,2),%edx
  sub    %edx,%eax
  cltq
  movsd  0x0(%rbp,%rax,8),%xmm0
  lea    0x0(,%rax,8),%r13
  add    %r15,%r13
  call   <to_radians@plt>
  movsd  (%r15,%rbx,8),%xmm5
  pxor   %xmm1,%xmm1
  movsd  (%r12),%xmm4
  movsd  0x0(%r13),%xmm6
  movsd  (%rsp),%xmm2
  movapd %xmm0,%xmm3
  lea    (%r15,%rbx,8),%rdx
  comisd %xmm1,%xmm5
  jbe    L122
L112:
  comisd %xmm1,%xmm4
  jbe    L219
  comisd %xmm1,%xmm6
  jbe    L106
L216:
  add    $0x1,%rbx
  cmp    $0x3,%rbx
  jne    L52
  xor    %eax,%eax
L1:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L122:
  movsd  0x8(%rsp),%xmm7
  comisd %xmm1,%xmm7
  jbe    L112
  comisd %xmm1,%xmm4
  jbe    L197
  comisd %xmm1,%xmm2
  ja     L299
L197:
  comisd %xmm1,%xmm6
  jbe    L112
  comisd %xmm1,%xmm3
  jbe    L112
  movsd  0x8(%rsp),%xmm0
  mov    %rdx,0x28(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm3,0x20(%rsp)
  call   <sin@plt>
  movsd  0x20(%rsp),%xmm3
  movsd  %xmm0,(%rsp)
  movapd %xmm3,%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm4
  mov    0x28(%rsp),%rdx
  mulsd  %xmm6,%xmm5
  divsd  %xmm0,%xmm5
  jmp    L84
  nopl   0x0(%rax)
L219:
  comisd %xmm1,%xmm2
  jbe    L413
  comisd %xmm1,%xmm5
  jbe    L270
  movsd  0x8(%rsp),%xmm7
  comisd %xmm1,%xmm7
  ja     L49
L270:
  comisd %xmm1,%xmm6
  jbe    L106
  comisd %xmm1,%xmm3
  ja     L214
  comisd %xmm1,%xmm4
  ja     L216
  comisd %xmm1,%xmm5
  jbe    L216
  comisd %xmm1,%xmm6
  jbe    L216
L201:
  movapd %xmm6,%xmm0
  movapd %xmm5,%xmm4
  mov    %rdx,0x20(%rsp)
  mulsd  %xmm6,%xmm0
  movsd  %xmm5,0x10(%rsp)
  mulsd  %xmm5,%xmm4
  movsd  %xmm6,0x8(%rsp)
  addsd  %xmm0,%xmm4
  movapd %xmm5,%xmm0
  addsd  %xmm5,%xmm0
  movsd  %xmm4,0x18(%rsp)
  mulsd  %xmm6,%xmm0
  movsd  %xmm0,(%rsp)
  movapd %xmm2,%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  movsd  0x18(%rsp),%xmm4
  cvtsi2sd %eax,%xmm0
  mulsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  mov    0x20(%rsp),%rdx
  subsd  %xmm0,%xmm4
  ucomisd %xmm4,%xmm1
  ja     L233
  sqrtsd %xmm4,%xmm4
  nopl   0x0(%rax)
L84:
  movsd  %xmm5,(%rdx)
  mov    $0x1,%eax
  movsd  %xmm4,(%r12)
  movsd  %xmm6,0x0(%r13)
  jmp    L1
  nopw   0x0(%rax,%rax,1)
L413:
  comisd %xmm1,%xmm6
  ja     L407
  cs nopw 0x0(%rax,%rax,1)
L106:
  comisd %xmm1,%xmm3
  jbe    L407
  comisd %xmm1,%xmm5
  jbe    L343
  movsd  0x8(%rsp),%xmm7
  comisd %xmm1,%xmm7
  ja     L255
  comisd %xmm1,%xmm4
  jbe    L76
L275:
  comisd %xmm1,%xmm2
  ja     L342
  comisd %xmm1,%xmm5
  ja     L363
L407:
  comisd %xmm1,%xmm4
  ja     L216
L76:
  comisd %xmm1,%xmm2
  jbe    L216
  comisd %xmm1,%xmm5
  jbe    L216
  comisd %xmm1,%xmm6
  jbe    L216
  jmp    L201
  nop
L343:
  comisd %xmm1,%xmm4
  ja     L275
  comisd %xmm1,%xmm5
  jbe    L407
  comisd %xmm1,%xmm4
  jbe    L76
L363:
  movapd %xmm5,%xmm0
  movapd %xmm4,%xmm2
  mov    %rdx,0x20(%rsp)
  mulsd  %xmm5,%xmm0
  movsd  %xmm5,0x10(%rsp)
  mulsd  %xmm4,%xmm2
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm0,%xmm6
  movapd %xmm5,%xmm0
  addsd  %xmm5,%xmm0
  addsd  %xmm2,%xmm6
  mulsd  %xmm4,%xmm0
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm0,(%rsp)
  movapd %xmm3,%xmm0
  call   <cos@plt>
  pxor   %xmm2,%xmm2
  pxor   %xmm1,%xmm1
  movsd  0x18(%rsp),%xmm6
  cvtsi2sd %eax,%xmm2
  mulsd  (%rsp),%xmm2
  movsd  0x8(%rsp),%xmm4
  movsd  0x10(%rsp),%xmm5
  mov    0x20(%rsp),%rdx
  subsd  %xmm2,%xmm6
  ucomisd %xmm6,%xmm1
  ja     L416
  sqrtsd %xmm6,%xmm6
  jmp    L84
L299:
  movapd %xmm7,%xmm0
  mov    %rdx,0x28(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm2,0x20(%rsp)
  call   <sin@plt>
  movsd  0x20(%rsp),%xmm2
  movsd  %xmm0,(%rsp)
  movapd %xmm2,%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm5
  movsd  0x10(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm6
  mov    0x28(%rsp),%rdx
  mulsd  %xmm4,%xmm5
  divsd  %xmm0,%xmm5
  jmp    L84
L49:
  movapd %xmm2,%xmm0
  mov    %rdx,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  call   <sin@plt>
  movsd  %xmm0,(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm4
  movsd  0x10(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  mov    0x20(%rsp),%rdx
  mulsd  %xmm5,%xmm4
  divsd  %xmm0,%xmm4
  jmp    L84
L255:
  movapd %xmm3,%xmm0
  mov    %rdx,0x20(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  call   <sin@plt>
  movsd  %xmm0,(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm6
  movsd  0x10(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm4
  mov    0x20(%rsp),%rdx
  mulsd  %xmm5,%xmm6
  divsd  %xmm0,%xmm6
  jmp    L84
L342:
  movapd %xmm3,%xmm0
  mov    %rdx,0x20(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  movsd  %xmm2,0x18(%rsp)
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm2
  movsd  %xmm0,(%rsp)
  movapd %xmm2,%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm6
  movsd  0x10(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm5
  mov    0x20(%rsp),%rdx
  mulsd  %xmm4,%xmm6
  divsd  %xmm0,%xmm6
  jmp    L84
L214:
  movapd %xmm2,%xmm0
  mov    %rdx,0x20(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm5,0x8(%rsp)
  movsd  %xmm3,0x18(%rsp)
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm3
  movsd  %xmm0,(%rsp)
  movapd %xmm3,%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm4
  movsd  0x10(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm5
  mov    0x20(%rsp),%rdx
  mulsd  %xmm6,%xmm4
  divsd  %xmm0,%xmm4
  jmp    L84
L233:
  movapd %xmm4,%xmm0
  mov    %rdx,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  movsd  %xmm5,(%rsp)
  call   <sqrt@plt>
  movsd  (%rsp),%xmm5
  movsd  0x8(%rsp),%xmm6
  mov    0x10(%rsp),%rdx
  movapd %xmm0,%xmm4
  jmp    L84
L416:
  movapd %xmm6,%xmm0
  mov    %rdx,0x10(%rsp)
  movsd  %xmm4,0x8(%rsp)
  movsd  %xmm5,(%rsp)
  call   <sqrt@plt>
  movsd  (%rsp),%xmm5
  movsd  0x8(%rsp),%xmm4
  mov    0x10(%rsp),%rdx
  movapd %xmm0,%xmm6
  jmp    L84
```

assistant: ```c
int find_side(double *sides, const double *angles) {
  double a, b, c;
  register int i;
  a = b = c = 0;
  for (i = 0; i < 3; i++) {
    const double A = to_radians(angles[(i + 0)]);
    const double B = to_radians(angles[(i + 1) % 3]);
    const double C = to_radians(angles[(i + 2) % 3]);
    a = sides[(i + 0)];
    b = sides[(i + 1) % 3];
    c = sides[(i + 2) % 3];
    if (!((a) > 0) && ((A) > 0) && ((b) > 0) && ((B) > 0)) {
      a = sin(A) * b / sin(B);
      goto new_info;
    }
    if (!((a) > 0) && ((A) > 0) && ((c) > 0) && ((C) > 0)) {
      a = sin(A) * c / sin(C);
      goto new_info;
    }
    if (!((b) > 0) && ((B) > 0) && ((a) > 0) && ((A) > 0)) {
      b = sin(B) * a / sin(A);
      goto new_info;
    }
    if (!((b) > 0) && ((B) > 0) && ((c) > 0) && ((C) > 0)) {
      b = sin(B) * c / sin(C);
      goto new_info;
    }
    if (!((c) > 0) && ((C) > 0) && ((a) > 0) && ((A) > 0)) {
      c = sin(C) * a / sin(A);
      goto new_info;
    }
    if (!((c) > 0) && ((C) > 0) && ((b) > 0) && ((B) > 0)) {
      c = sin(C) * b / sin(B);
      goto new_info;
    }
    if (!((c) > 0) && ((C) > 0) && ((a) > 0) && ((b) > 0)) {
      c = sqrt(a * a + b * b - 2 * a * b * cos(C));
      goto new_info;
    }
    if (!((b) > 0) && ((B) > 0) && ((a) > 0) && ((c) > 0)) {
      b = sqrt(a * a + c * c - 2 * a * c * cos(B));
      goto new_info;
    }
    if (!((a) > 0) && ((A) > 0) && ((a) > 0) && ((b) > 0)) {
      a = sqrt(b * b + c * c - 2 * b * c * cos(A));
      goto new_info;
    }
  }
  return 0;
new_info:
  sides[(i + 0) % 3] = a;
  sides[(i + 1) % 3] = b;
  sides[(i + 2) % 3] = c;
  return 1;
}
```