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

```asm
<find_side>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    $0x0,%ebx
  jmp    L418
L104:
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <to_radians@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x28(%rbp)
  lea    0x1(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <to_radians@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x20(%rbp)
  lea    0x2(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <to_radians@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  lea    0x1(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  lea    0x2(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L114
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L114
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L114
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L114
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm2
  mulsd  -0x38(%rbp),%xmm2
  movsd  %xmm2,-0x58(%rbp)
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  jmp    L416
L114:
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L348
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L348
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L348
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L348
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  mulsd  -0x30(%rbp),%xmm3
  movsd  %xmm3,-0x58(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  jmp    L416
L348:
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L98
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L98
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L98
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L98
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm4
  mulsd  -0x40(%rbp),%xmm4
  movsd  %xmm4,-0x58(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L416
L98:
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L334
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L334
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L334
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L334
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm5
  mulsd  -0x30(%rbp),%xmm5
  movsd  %xmm5,-0x58(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L416
L334:
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L392
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L392
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L392
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L392
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm6
  mulsd  -0x40(%rbp),%xmm6
  movsd  %xmm6,-0x58(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L416
L392:
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L228
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L228
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L228
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L228
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm7
  mulsd  -0x38(%rbp),%xmm7
  movsd  %xmm7,-0x58(%rbp)
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L416
L228:
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L57
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L57
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L57
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L57
  movsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x58(%rbp)
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x30(%rbp)
  jmp    L416
L57:
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L176
  movsd  -0x20(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L176
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L176
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L176
  movsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x58(%rbp)
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  jmp    L416
L176:
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L164
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L164
  movsd  -0x40(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L164
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L164
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x58(%rbp)
  movsd  -0x38(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  jmp    L416
L164:
  add    $0x1,%ebx
L418:
  cmp    $0x2,%ebx
  jle    L104
  mov    $0x0,%eax
  jmp    L381
L416:
  movslq %ebx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %ebx,%edx
  sar    $0x1f,%edx
  sub    %edx,%eax
  mov    %eax,%edx
  add    %edx,%edx
  add    %eax,%edx
  mov    %ebx,%eax
  sub    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  lea    0x1(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  lea    0x2(%rbx),%edx
  movslq %edx,%rax
  imul   $0x55555556,%rax,%rax
  shr    $0x20,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  add    %ecx,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    $0x1,%eax
L381:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

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