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

```asm
<main>:
  endbr64
  push   %rbx
  lea    D272(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0xce4,%eax
  jne    L124
L216:
  lea    D286(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0xce4,%eax
  jne    L261
L113:
  lea    D104(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0xce4,%eax
  jne    L296
L208:
  lea    D24(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x1388,%eax
  jne    L263
L14:
  lea    D77(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x1388,%eax
  jne    L204
L48:
  lea    D301(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x1388,%eax
  jne    L297
L126:
  lea    D431(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x1388,%eax
  jne    L55
L190:
  lea    D345(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x1,%eax
  jne    L277
L139:
  lea    D56(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0xa,%eax
  jne    L292
L39:
  lea    D314(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x64,%eax
  jne    L79
L220:
  lea    D39(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x457,%eax
  jne    L128
L101:
  lea    D62(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x9,%eax
  jne    L289
L23:
  lea    D323(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x5a,%eax
  jne    L35
L89:
  lea    D415(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x384,%eax
  jne    L22
L295:
  lea    D101(%rip),%rdi
  call   <parse_millinum@plt>
  cmp    $0x270f,%eax
  jne    L131
L233:
  mov    $0x0,%eax
  pop    %rbx
  ret
L124:
  lea    D272(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0xce4,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L216
L261:
  lea    D286(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0xce4,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L113
L296:
  lea    D104(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0xce4,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L208
L263:
  lea    D24(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x1388,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L14
L204:
  lea    D77(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x1388,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L48
L297:
  lea    D301(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x1388,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L126
L55:
  lea    D431(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x1388,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L190
L277:
  lea    D345(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x1,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L139
L292:
  lea    D56(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0xa,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L39
L79:
  lea    D314(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x64,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L220
L128:
  lea    D39(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x457,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L101
L289:
  lea    D62(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x9,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L23
L35:
  lea    D323(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x5a,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L89
L22:
  lea    D415(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x384,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L295
L131:
  lea    D101(%rip),%rbx
  mov    %rbx,%rdi
  call   <parse_millinum@plt>
  mov    %eax,%edx
  mov    $0x270f,%ecx
  mov    %rbx,%rsi
  lea    D182(%rip),%rdi
  call   <printf@plt>
  jmp    L233
```

tool_calls: name: extract_symbolic_data
arguments: tag: D272
datatype: string
name: extract_symbolic_data
arguments: tag: D286
datatype: string
name: extract_symbolic_data
arguments: tag: D104
datatype: string
name: extract_symbolic_data
arguments: tag: D24
datatype: string
name: extract_symbolic_data
arguments: tag: D77
datatype: string
name: extract_symbolic_data
arguments: tag: D301
datatype: string
name: extract_symbolic_data
arguments: tag: D431
datatype: string
name: extract_symbolic_data
arguments: tag: D345
datatype: string
name: extract_symbolic_data
arguments: tag: D56
datatype: string
name: extract_symbolic_data
arguments: tag: D314
datatype: string
name: extract_symbolic_data
arguments: tag: D39
datatype: string
name: extract_symbolic_data
arguments: tag: D62
datatype: string
name: extract_symbolic_data
arguments: tag: D323
datatype: string
name: extract_symbolic_data
arguments: tag: D415
datatype: string
name: extract_symbolic_data
arguments: tag: D101
datatype: string
name: extract_symbolic_data
arguments: tag: D182
datatype: string

tool: D272: 3.3

tool: D286: 3.30

tool: D104: 3.300

tool: D24: 5

tool: D77: 5.0

tool: D301: 5.00

tool: D431: 5.000

tool: D345: 0.001

tool: D56: 0.010

tool: D314: 0.100

tool: D39: 1.111

tool: D62: 0.009

tool: D323: 0.090

tool: D415: 0.900

tool: D101: 9.999

tool: D182: Parsing of %s yielded %u but expected %u


assistant: ```c
int main() {
  if (parse_millinum((uint8_t *)"3.3") != 3300) {
    printf("Parsing of %s yielded %u but expected %u\n", "3.3", parse_millinum((uint8_t *)"3.3"), 3300);
  };
  if (parse_millinum((uint8_t *)"3.30") != 3300) {
    printf("Parsing of %s yielded %u but expected %u\n", "3.30", parse_millinum((uint8_t *)"3.30"), 3300);
  };
  if (parse_millinum((uint8_t *)"3.300") != 3300) {
    printf("Parsing of %s yielded %u but expected %u\n", "3.300", parse_millinum((uint8_t *)"3.300"), 3300);
  };
  if (parse_millinum((uint8_t *)"5") != 5000) {
    printf("Parsing of %s yielded %u but expected %u\n", "5", parse_millinum((uint8_t *)"5"), 5000);
  };
  if (parse_millinum((uint8_t *)"5.0") != 5000) {
    printf("Parsing of %s yielded %u but expected %u\n", "5.0", parse_millinum((uint8_t *)"5.0"), 5000);
  };
  if (parse_millinum((uint8_t *)"5.00") != 5000) {
    printf("Parsing of %s yielded %u but expected %u\n", "5.00", parse_millinum((uint8_t *)"5.00"), 5000);
  };
  if (parse_millinum((uint8_t *)"5.000") != 5000) {
    printf("Parsing of %s yielded %u but expected %u\n", "5.000", parse_millinum((uint8_t *)"5.000"), 5000);
  };
  if (parse_millinum((uint8_t *)"0.001") != 1) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.001", parse_millinum((uint8_t *)"0.001"), 1);
  };
  if (parse_millinum((uint8_t *)"0.010") != 10) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.010", parse_millinum((uint8_t *)"0.010"), 10);
  };
  if (parse_millinum((uint8_t *)"0.100") != 100) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.100", parse_millinum((uint8_t *)"0.100"), 100);
  };
  if (parse_millinum((uint8_t *)"1.111") != 1111) {
    printf("Parsing of %s yielded %u but expected %u\n", "1.111", parse_millinum((uint8_t *)"1.111"), 1111);
  };
  if (parse_millinum((uint8_t *)"0.009") != 9) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.009", parse_millinum((uint8_t *)"0.009"), 9);
  };
  if (parse_millinum((uint8_t *)"0.090") != 90) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.090", parse_millinum((uint8_t *)"0.090"), 90);
  };
  if (parse_millinum((uint8_t *)"0.900") != 900) {
    printf("Parsing of %s yielded %u but expected %u\n", "0.900", parse_millinum((uint8_t *)"0.900"), 900);
  };
  if (parse_millinum((uint8_t *)"9.999") != 9999) {
    printf("Parsing of %s yielded %u but expected %u\n", "9.999", parse_millinum((uint8_t *)"9.999"), 9999);
  };
  return 0;
}
```