user: What is the c source code of the assembly code below:

```asm
<test_json_number_toDouble>:
  endbr64
  push   %r15
  lea    D148(%rip),%rdi
  lea    D231(%rip),%r15
  push   %r14
  lea    D6(%rip),%r14
  push   %r13
  lea    D66(%rip),%r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    $0x1,%ebx
  sub    $0x348,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x338(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rbp
  lea    0x8(%rsp),%r12
  call   <puts@plt>
  lea    D150(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  mov    $0x64,%ecx
  mov    %rbp,%rdi
  rep stos %rax,%es:(%rdi)
  lea    D187(%rip),%rax
  mov    %rax,0x18(%rsp)
  lea    D192(%rip),%rax
  mov    %rax,0x20(%rsp)
  lea    D260(%rip),%rax
  mov    %rax,0x28(%rsp)
  lea    D125(%rip),%rax
  mov    %rax,0x30(%rsp)
  lea    D142(%rip),%rax
  mov    %rax,0x38(%rsp)
  lea    D74(%rip),%rax
  mov    %rax,0x40(%rsp)
  lea    D203(%rip),%rax
  mov    %rax,0x48(%rsp)
  lea    D159(%rip),%rax
  mov    %rax,0x50(%rsp)
  lea    D149(%rip),%rax
  mov    %rax,0x58(%rsp)
  lea    D347(%rip),%rax
  mov    %rax,0x60(%rsp)
  lea    D246(%rip),%rax
  mov    %rax,0x68(%rsp)
  lea    D232(%rip),%rax
  mov    %rax,0x70(%rsp)
  lea    D188(%rip),%rax
  mov    %rax,0x78(%rsp)
  lea    D346(%rip),%rax
  mov    %rax,0x80(%rsp)
  lea    D184(%rip),%rax
  mov    %rax,0x88(%rsp)
  lea    D294(%rip),%rax
  mov    %rax,0x90(%rsp)
  lea    D45(%rip),%rax
  mov    %rax,0x98(%rsp)
  lea    D190(%rip),%rax
  mov    %rax,0xa0(%rsp)
  lea    D308(%rip),%rax
  mov    %rax,0xa8(%rsp)
  lea    D42(%rip),%rax
  mov    %rax,0xb0(%rsp)
  lea    D30(%rip),%rax
  mov    %rax,0xb8(%rsp)
  lea    D103(%rip),%rax
  mov    %rax,0xc0(%rsp)
  lea    D57(%rip),%rax
  mov    %rax,0xc8(%rsp)
  lea    D277(%rip),%rax
  mov    %rax,0xd0(%rsp)
  lea    D7(%rip),%rax
  mov    %rax,0xd8(%rsp)
  lea    D8(%rip),%rax
  mov    %rax,0xe0(%rsp)
  lea    D82(%rip),%rax
  mov    %rax,0xe8(%rsp)
  lea    D172(%rip),%rax
  mov    %rax,0xf0(%rsp)
  lea    D162(%rip),%rax
  mov    %rax,0xf8(%rsp)
  lea    D214(%rip),%rax
  mov    %rax,0x100(%rsp)
  jmp    L41
  xchg   %ax,%ax
L3:
  mov    %r14,%rsi
  lea    D344(%rip),%rdi
  xor    %eax,%eax
  add    $0x1,%rbx
  call   <printf@plt>
  mov    -0x8(%rbp,%rbx,8),%r14
  test   %r14,%r14
  je     L31
L41:
  mov    %ebx,%esi
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %esi,%esi
  mov    %r12,%rdx
  mov    %r14,%rdi
  call   <json_number_toDouble@plt>
  test   %rax,%rax
  jne    L3
  movsd  0x8(%rsp),%xmm0
  mov    %r14,%rsi
  mov    %r15,%rdi
  add    $0x1,%rbx
  mov    $0x1,%eax
  call   <printf@plt>
  mov    -0x8(%rbp,%rbx,8),%r14
  test   %r14,%r14
  jne    L41
L31:
  mov    0x338(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L11
  add    $0x348,%rsp
  lea    D250(%rip),%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1080 <puts@plt>
L11:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D148
datatype: string
name: extract_symbolic_data
arguments: tag: D231
datatype: string
name: extract_symbolic_data
arguments: tag: D6
datatype: string
name: extract_symbolic_data
arguments: tag: D66
datatype: string
name: extract_symbolic_data
arguments: tag: D150
datatype: string
name: extract_symbolic_data
arguments: tag: D187
datatype: string
name: extract_symbolic_data
arguments: tag: D192
datatype: string
name: extract_symbolic_data
arguments: tag: D260
datatype: string
name: extract_symbolic_data
arguments: tag: D125
datatype: string
name: extract_symbolic_data
arguments: tag: D142
datatype: string
name: extract_symbolic_data
arguments: tag: D74
datatype: string
name: extract_symbolic_data
arguments: tag: D203
datatype: string
name: extract_symbolic_data
arguments: tag: D159
datatype: string
name: extract_symbolic_data
arguments: tag: D149
datatype: string
name: extract_symbolic_data
arguments: tag: D347
datatype: string
name: extract_symbolic_data
arguments: tag: D246
datatype: string
name: extract_symbolic_data
arguments: tag: D232
datatype: string
name: extract_symbolic_data
arguments: tag: D188
datatype: string
name: extract_symbolic_data
arguments: tag: D346
datatype: string
name: extract_symbolic_data
arguments: tag: D184
datatype: string
name: extract_symbolic_data
arguments: tag: D294
datatype: string
name: extract_symbolic_data
arguments: tag: D45
datatype: string
name: extract_symbolic_data
arguments: tag: D190
datatype: string
name: extract_symbolic_data
arguments: tag: D308
datatype: string
name: extract_symbolic_data
arguments: tag: D42
datatype: string
name: extract_symbolic_data
arguments: tag: D30
datatype: string
name: extract_symbolic_data
arguments: tag: D103
datatype: string
name: extract_symbolic_data
arguments: tag: D57
datatype: string
name: extract_symbolic_data
arguments: tag: D277
datatype: string
name: extract_symbolic_data
arguments: tag: D7
datatype: string
name: extract_symbolic_data
arguments: tag: D8
datatype: string
name: extract_symbolic_data
arguments: tag: D82
datatype: string
name: extract_symbolic_data
arguments: tag: D172
datatype: string
name: extract_symbolic_data
arguments: tag: D162
datatype: string
name: extract_symbolic_data
arguments: tag: D214
datatype: string
name: extract_symbolic_data
arguments: tag: D344
datatype: string
name: extract_symbolic_data
arguments: tag: D250
datatype: string

tool: D148: Test json_number_toDouble

tool: D231: %s = %f


tool: D6: --123

tool: D66: %d. 

tool: D150: ================================================================================

tool: D187: abc

tool: D192: 123


tool: D260: 456

tool: D125: -

tool: D142: -abc

tool: D74: -123

tool: D203: 0

tool: D159: -0

tool: D149: 0.

tool: D347: .

tool: D246: 0.0

tool: D232: 1.2.3

tool: D188: -10.123

tool: D346: 10.e

tool: D184: 10..

tool: D294: e

tool: D45: -E

tool: D190: -0e12

tool: D308: 10.5e00abc

tool: D42: 10.5E+13

tool: D30: 8.5E-2

tool: D103: 8e

tool: D57: 123E-

tool: D277: 456E+

tool: D7: 9.e

tool: D8: 9.e99

tool: D82: 0ee

tool: 

tool: D162: 0.0eabc

tool: D214: 0.0e-abc

tool: D344: %s is not number


tool: D250: ================================================================================


assistant: ```c
void test_json_number_toDouble() {
  puts("Test json_number_toDouble");
  puts("================================================================================");
  char *str[100] = {"--123", "abc", "123\n", "456", "-", "-abc", "-123", "0", "-0", "0.", ".", "0.0", "1.2.3", "-10.123", "10.e", "10..", "e", "-E", "-0e12", "10.5e00abc", "10.5E+13", "8.5E-2", "8e", "123E-", "456E+", "9.e", "9.e99", "0ee", "", "0.0eabc", "0.0e-abc"};
  int i;
  for (i = 0; str[i] != NULL; i++) {
    double number;
    printf("%d. ", i + 1);
    if (json_number_toDouble(str[i], 0, &number) != 0) {
      printf("%s is not number\n", str[i]);
    } else {
      printf("%s = %f\n", str[i], number);
    }
  }
  puts("================================================================================\n");
}
```