user: Demonstrate the C code that generates the assembly output below:

```asm
<parse_coord>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  jmp    L238
L49:
  add    $0x1,%rbx
L238:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L49
  mov    D118(%rip),%r12
  cmpb   $0x2d,(%rbx)
  je     L89
L334:
  pxor   %xmm1,%xmm1
  jmp    L50
L89:
  add    $0x1,%rbx
  mov    D234(%rip),%r12
  jmp    L334
L38:
  movsd  0x0(%rbp),%xmm0
  mulsd  D2(%rip),%xmm0
  movsd  %xmm0,0x0(%rbp)
  movsbl (%rbx),%eax
  sub    $0x30,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  addsd  %xmm0,%xmm1
  add    $0x1,%rbx
L50:
  movsd  %xmm1,0x0(%rbp)
  movsbl (%rbx),%edi
  call   <isdigit@plt>
  test   %rax,%rax
  jne    L38
  jmp    L212
L41:
  add    $0x1,%rbx
L212:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L41
  movzbl (%rbx),%esi
  test   %sil,%sil
  jne    L367
  movq   %r12,%xmm0
  mulsd  0x0(%rbp),%xmm0
  movsd  %xmm0,0x0(%rbp)
  mov    $0xffffffff,%r13d
L13:
  mov    %r13d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L367:
  movsbl %sil,%esi
  lea    D38(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L362
L91:
  movsbl (%rbx),%esi
  lea    D116(%rip),%rdi
  call   <strchr@plt>
  mov    $0x0,%r13d
  test   %rax,%rax
  je     L248
  movq   %r12,%xmm3
  xorpd  D137(%rip),%xmm3
  movq   %xmm3,%r12
L248:
  add    $0x1,%rbx
  jmp    L226
L362:
  movsbl (%rbx),%esi
  lea    D116(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L91
  movsbl (%rbx),%esi
  lea    D224(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L199
L202:
  movsbl (%rbx),%esi
  lea    D104(%rip),%rdi
  call   <strchr@plt>
  mov    $0x1,%r13d
  test   %rax,%rax
  je     L248
  movq   %r12,%xmm4
  xorpd  D137(%rip),%xmm4
  movq   %xmm4,%r12
  jmp    L248
L199:
  movsbl (%rbx),%esi
  lea    D104(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L202
  cmpb   $0x2e,(%rbx)
  jne    L263
  add    $0x1,%rbx
  mov    D233(%rip),%r13
  mov    D118(%rip),%r14
  jmp    L167
L254:
  movq   %r13,%xmm0
  mulsd  D2(%rip),%xmm0
  movsbl (%rbx),%eax
  sub    $0x30,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  addsd  %xmm0,%xmm1
  movq   %xmm1,%r13
  movq   %r14,%xmm5
  mulsd  D2(%rip),%xmm5
  movq   %xmm5,%r14
  add    $0x1,%rbx
L167:
  movsbl (%rbx),%edi
  call   <isdigit@plt>
  test   %rax,%rax
  jne    L254
  movq   %r13,%xmm0
  movq   %r14,%xmm6
  divsd  %xmm6,%xmm0
  addsd  0x0(%rbp),%xmm0
  movq   %r12,%xmm7
  mulsd  %xmm7,%xmm0
  movsd  %xmm0,0x0(%rbp)
  jmp    L327
L108:
  add    $0x1,%rbx
L327:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L108
  movzbl (%rbx),%eax
  mov    $0xffffffff,%r13d
  test   %al,%al
  je     L13
  movsbl %al,%esi
  lea    D38(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L110
L116:
  movsbl (%rbx),%esi
  lea    D116(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L361
  movsd  0x0(%rbp),%xmm0
  xorpd  D137(%rip),%xmm0
  movsd  %xmm0,0x0(%rbp)
  mov    $0x0,%r13d
  jmp    L13
L110:
  movsbl (%rbx),%esi
  lea    D116(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L116
  movsbl (%rbx),%esi
  lea    D224(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L148
L5:
  movsbl (%rbx),%esi
  lea    D104(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L178
  movsd  0x0(%rbp),%xmm0
  xorpd  D137(%rip),%xmm0
  movsd  %xmm0,0x0(%rbp)
  mov    $0x1,%r13d
  jmp    L13
L148:
  movsbl (%rbx),%esi
  lea    D104(%rip),%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L5
  mov    $0xffffffff,%r13d
  jmp    L13
L263:
  movq   %r12,%xmm0
  mulsd  0x0(%rbp),%xmm0
  movsd  %xmm0,0x0(%rbp)
  mov    $0xffffffff,%r13d
  jmp    L13
L351:
  add    $0x1,%rbx
L226:
  movsbl (%rbx),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L351
  mov    %rbx,%rdi
  call   <atof@plt>
  divsd  D235(%rip),%xmm0
  addsd  0x0(%rbp),%xmm0
  movq   %r12,%xmm2
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x0(%rbp)
  jmp    L13
L361:
  mov    $0x0,%r13d
  jmp    L13
L178:
  mov    $0x1,%r13d
  jmp    L13
```

tool_calls: name: extract_symbolic_data
arguments: tag: D118
type_infered: f64
name: extract_symbolic_data
arguments: tag: D234
type_infered: f32[2]
name: extract_symbolic_data
arguments: tag: D2
type_infered: f64
name: extract_symbolic_data
arguments: tag: D38
type_infered: string
name: extract_symbolic_data
arguments: tag: D116
type_infered: string
name: extract_symbolic_data
arguments: tag: D137
type_infered: f32[4]
name: extract_symbolic_data
arguments: tag: D224
type_infered: string
name: extract_symbolic_data
arguments: tag: D104
type_infered: string
name: extract_symbolic_data
arguments: tag: D233
type_infered: f32[2]
name: extract_symbolic_data
arguments: tag: D235
type_infered: f64

tool: D118: 1

tool: {"D234": [0.0,-1.875]}

tool: D2: 10

tool: D38: Nn

tool: D116: Ss

tool: {"D137": [0.0,-0.0,0.0,0.0]}

tool: D224: EeOo

tool: D104: Ww

tool: {"D233": [0.0,0.0]}

tool: D235: 60

assistant: ```c
int parse_coord(const char *s, double *a) {
  double e, f, n = 1.0;
  int r;
  for (; isspace((int)*s); s++)
    ;
  if (*s == '-') {
    s++;
    n = -1.0;
  }
  for (*a = 0.0; isdigit((int)*s); s++) {
    *a *= 10.0;
    *a += *s - '0';
  }
  for (; isspace((int)*s); s++)
    ;
  if (*s == '\0') {
    *a *= n;
    return -1;
  }
  if (((strchr("Nn", (*s)) != NULL) || (strchr("Ss", (*s)) != NULL))) {
    r = 0;
    if ((strchr("Ss", (*s)) != NULL))
      n *= -1.0;
  } else if (((strchr("EeOo", (*s)) != NULL) || (strchr("Ww", (*s)) != NULL))) {
    r = 1;
    if ((strchr("Ww", (*s)) != NULL))
      n *= -1.0;
  } else if (*s == '.') {
    s++;
    for (e = 1.0, f = 0.0; isdigit((int)*s); e *= 10.0, s++) {
      f *= 10.0;
      f += *s - '0';
    }
    *a += f / e;
    *a *= n;
    for (; isspace((int)*s); s++)
      ;
    if (*s == '\0')
      return -1;
    if (((strchr("Nn", (*s)) != NULL) || (strchr("Ss", (*s)) != NULL))) {
      if ((strchr("Ss", (*s)) != NULL))
        *a *= -1.0;
      return 0;
    } else if (((strchr("EeOo", (*s)) != NULL) || (strchr("Ww", (*s)) != NULL))) {
      if ((strchr("Ww", (*s)) != NULL))
        *a *= -1.0;
      return 1;
    } else
      return -1;
  } else {
    *a *= n;
    return -1;
  }
  s++;
  for (; isspace((int)*s); s++)
    ;
  f = atof(s);
  *a += f / 60.0;
  *a *= n;
  return r;
}
```