user: 请从给定的汇编指令推导出C源代码：

```asm
<testParseBool>:
  endbr64
  sub    $0x8,%rsp
  lea    D136(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  je     L39
  lea    D15(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  je     L52
  lea    D52(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  je     L89
  lea    D70(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  jne    L73
  lea    D91(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  jne    L55
  lea    D73(%rip),%rdi
  call   <parseBool@plt>
  test   %rax,%rax
  jne    L42
  mov    $0x0,%edi
  call   <parseBool@plt>
  test   %rax,%rax
  jne    L98
  mov    $0x0,%edi
  call   <parseBool@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  je     L121
  lea    D118(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L39:
  lea    D135(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
L121:
  add    $0x8,%rsp
  ret
L52:
  lea    D34(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L89:
  lea    D101(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L73:
  lea    D90(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L55:
  lea    D125(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L42:
  lea    D53(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
L98:
  lea    D124(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L121
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D136
datatype: string
name: extract_symbolic_data
arguments: data_tag: D15
datatype: string
name: extract_symbolic_data
arguments: data_tag: D52
datatype: string
name: extract_symbolic_data
arguments: data_tag: D70
datatype: string
name: extract_symbolic_data
arguments: data_tag: D91
datatype: string
name: extract_symbolic_data
arguments: data_tag: D73
datatype: string
name: extract_symbolic_data
arguments: data_tag: D118
datatype: string
name: extract_symbolic_data
arguments: data_tag: D135
datatype: string
name: extract_symbolic_data
arguments: data_tag: D34
datatype: string
name: extract_symbolic_data
arguments: data_tag: D101
datatype: string
name: extract_symbolic_data
arguments: data_tag: D90
datatype: string
name: extract_symbolic_data
arguments: data_tag: D125
datatype: string
name: extract_symbolic_data
arguments: data_tag: D53
datatype: string
name: extract_symbolic_data
arguments: data_tag: D124
datatype: string

tool: D136: true

tool: D15: True

tool: D52: TRUE

tool: D70: false

tool: D91: blort

tool: 

tool: D118: 0 is not false


tool: D135: 'true' is not true


tool: D34: 'True' is not true


tool: D101: 'TRUE' is not true


tool: D90: 'false' is not false


tool: D125: 'blort' is not false


tool: D53: '' is not false


tool: D124: NULL is not false


assistant: ```c
bool testParseBool(void) {
  if (!parseBool("true")) {
    printf("'true' is not true\n");
    return false;
  }
  if (!parseBool("True")) {
    printf("'True' is not true\n");
    return false;
  }
  if (!parseBool("TRUE")) {
    printf("'TRUE' is not true\n");
    return false;
  }
  if (parseBool("false")) {
    printf("'false' is not false\n");
    return false;
  }
  if (parseBool("blort")) {
    printf("'blort' is not false\n");
    return false;
  }
  if (parseBool("")) {
    printf("'' is not false\n");
    return false;
  }
  if (parseBool(NULL)) {
    printf("NULL is not false\n");
    return false;
  }
  if (parseBool(0)) {
    printf("0 is not false\n");
    return false;
  }
  return true;
}
```