user: 下面的汇编指令对应的C源代码是什么:

```asm
<parse_constraints_line>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1a0,%rsp
  mov    %rdi,-0x158(%rbp)
  mov    %esi,%eax
  mov    %rdx,-0x168(%rbp)
  mov    %rcx,-0x170(%rbp)
  mov    %r8,-0x178(%rbp)
  mov    %r9,-0x180(%rbp)
  mov    %al,-0x15c(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x188(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x190(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x198(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x13c(%rbp)
  movl   $0x0,-0x138(%rbp)
  movl   $0x0,-0x134(%rbp)
  movl   $0x5,-0x130(%rbp)
  movl   $0x0,-0x12c(%rbp)
  movsbl -0x15c(%rbp),%eax
  sub    $0x20,%eax
  cmp    $0x30,%eax
  seta   %dl
  test   %dl,%dl
  jne    L390
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    %rdx,%rax
  mov    %rax,%rdx
  and    $0x8008029,%edx
  test   %rdx,%rdx
  setne  %dl
  test   %dl,%dl
  jne    L129
  movabs $0x1004200000000,%rdx
  and    %rax,%rdx
  test   %rdx,%rdx
  setne  %dl
  test   %dl,%dl
  jne    L180
  movabs $0x2800000000,%rdx
  and    %rdx,%rax
  test   %rax,%rax
  setne  %al
  test   %al,%al
  jne    L173
  jmp    L390
L180:
  movl   $0x5,-0x130(%rbp)
  jmp    L189
L173:
  movl   $0x4,-0x130(%rbp)
  jmp    L189
L129:
  movl   $0x2,-0x13c(%rbp)
  jmp    L189
L390:
  movl   $0x1,-0x13c(%rbp)
  nop
L189:
  mov    -0x188(%rbp),%rax
  movb   $0x3f,(%rax)
  movb   $0x0,-0x14d(%rbp)
  jmp    L186
L214:
  mov    -0x144(%rbp),%eax
  add    %eax,-0x134(%rbp)
  cmpl   $0x4,-0x12c(%rbp)
  ja     L561
  mov    -0x12c(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D82(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D82(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    -0x144(%rbp),%rsi
  lea    -0x148(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rsi,%r8
  lea    D96(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x2,%eax
  jne    L532
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L163
  mov    -0x14c(%rbp),%edx
  mov    -0x168(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x148(%rbp),%edx
  mov    -0x170(%rbp),%rax
  mov    %edx,(%rax)
  movl   $0x1,-0x138(%rbp)
  subl   $0x1,-0x130(%rbp)
  jmp    L561
L532:
  lea    -0x144(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D113(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L163
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L163
  mov    -0x14c(%rbp),%edx
  mov    -0x168(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L561
L163:
  movl   $0x1,-0x13c(%rbp)
  jmp    L561
  lea    -0x144(%rbp),%rsi
  lea    -0x148(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rsi,%r8
  lea    D96(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x2,%eax
  jne    L172
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L144
  mov    -0x14c(%rbp),%edx
  mov    -0x178(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x148(%rbp),%edx
  mov    -0x180(%rbp),%rax
  mov    %edx,(%rax)
  cmpl   $0x0,-0x138(%rbp)
  jne    L463
  subl   $0x1,-0x130(%rbp)
L463:
  movl   $0x1,-0x138(%rbp)
  jmp    L561
L172:
  cmpl   $0x0,-0x138(%rbp)
  je     L44
  lea    -0x144(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D113(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L144
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L144
  mov    -0x14c(%rbp),%edx
  mov    -0x180(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L561
L44:
  lea    -0x144(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D113(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L144
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L144
  mov    -0x14c(%rbp),%edx
  mov    -0x170(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L561
L144:
  movl   $0x1,-0x13c(%rbp)
  jmp    L561
  cmpl   $0x0,-0x138(%rbp)
  jne    L519
  lea    -0x144(%rbp),%rcx
  lea    -0x14c(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D113(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L305
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L305
  mov    -0x14c(%rbp),%edx
  mov    -0x178(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L561
L305:
  movl   $0x1,-0x13c(%rbp)
  jmp    L561
L519:
  subl   $0x1,-0x130(%rbp)
  cmpb   $0x45,-0x15c(%rbp)
  jne    L445
  lea    -0x144(%rbp),%rcx
  lea    -0x140(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D55(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L486
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L486
  movss  -0x140(%rbp),%xmm0
  mov    -0x198(%rbp),%rax
  movss  %xmm0,(%rax)
  jmp    L561
L445:
  lea    -0x144(%rbp),%rcx
  lea    -0x11a(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L486
  movb   $0x0,-0x112(%rbp)
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x144(%rbp),%edx
  cmp    %edx,%eax
  jne    L486
  lea    -0x11a(%rbp),%rax
  mov    %rax,-0x128(%rbp)
  jmp    L408
L311:
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x41,%eax
  cmp    $0x2c,%eax
  ja     L14
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D92(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D92(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  orb    $0x1,-0x14d(%rbp)
  jmp    L368
  orb    $0x2,-0x14d(%rbp)
  jmp    L368
  orb    $0x4,-0x14d(%rbp)
  jmp    L368
  orb    $0x8,-0x14d(%rbp)
  jmp    L368
  orb    $0x10,-0x14d(%rbp)
  jmp    L368
  orb    $0x20,-0x14d(%rbp)
  jmp    L368
  orb    $0x3f,-0x14d(%rbp)
  jmp    L368
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x190(%rbp),%rax
  mov    %dl,(%rax)
  jmp    L368
L14:
  movl   $0x1,-0x13c(%rbp)
L368:
  addq   $0x1,-0x128(%rbp)
L408:
  mov    -0x128(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L596
  cmpl   $0x0,-0x13c(%rbp)
  je     L311
L596:
  cmpb   $0x0,-0x14d(%rbp)
  je     L271
  mov    -0x188(%rbp),%rax
  movzbl -0x14d(%rbp),%edx
  mov    %dl,(%rax)
  jmp    L271
L486:
  movl   $0x1,-0x13c(%rbp)
  jmp    L561
  mov    -0x190(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D120(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  je     L29
  movl   $0x1,-0x13c(%rbp)
  jmp    L29
L271:
  nop
  jmp    L561
L29:
  nop
L561:
  addl   $0x1,-0x12c(%rbp)
L186:
  cmpl   $0x0,-0x13c(%rbp)
  jne    L406
  mov    -0x12c(%rbp),%eax
  cmp    -0x130(%rbp),%eax
  jge    L406
  mov    -0x134(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x158(%rbp),%rax
  lea    (%rdx,%rax,1),%rdi
  lea    -0x144(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    %rdx,%rcx
  mov    %rax,%rdx
  lea    D117(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  je     L214
L406:
  mov    -0x13c(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L145
  call   <__stack_chk_fail@plt>
L145:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D96
type_infered: string
name: disassemble_data
arguments: tag: D113
type_infered: string
name: disassemble_data
arguments: tag: D55
type_infered: string
name: disassemble_data
arguments: tag: D107
type_infered: string
name: disassemble_data
arguments: tag: D120
type_infered: string
name: disassemble_data
arguments: tag: D117
type_infered: string

tool: D96: %d-%d%n

tool: D113: %d%n

tool: D55: %g%n

tool: D107: %8s%n

tool: D120: %c

tool: D117: %15s%n

assistant: ```c
int parse_constraints_line(const char *line, char command, int *i, int *j, int *k, int *l, char *loop, char *orientation, float *e) {
  int v1, v2;
  int ret = 0;
  int range_mode = 0;
  int pos = 0;
  int max_entries = 5;
  int entries_seen = 0;
  int pp;
  float energy;
  char buf[256], buf2[10], *c, tmp_loop;
  switch (command) {
  case 'A':
  case 'F':
  case 'P':
    max_entries = 5;
    break;
  case 'C':
  case 'E':
    max_entries = 4;
    break;
  case '#':
  case ';':
  case '%':
  case '/':
  case ' ':
    ret = 2;
    break;
  default:
    ret = 1;
    break;
  }
  *loop = (char)((char)0x01 | (char)0x02 | (char)0x04 | (char)0x08 | (char)0x10 | (char)0x20);
  tmp_loop = (char)0;
  while (!ret && (entries_seen < max_entries) && (sscanf(line + pos, "%15s%n", &buf[0], &pp) == 1)) {
    pos += pp;
    switch (entries_seen) {
    case 0:
      if (sscanf(buf, "%d-%d%n", &v1, &v2, &pp) == 2) {
        if (pp == strlen(buf)) {
          *i = v1;
          *j = v2;
          range_mode = 1;
          --max_entries;
          break;
        }
      } else if (sscanf(buf, "%d%n", &v1, &pp) == 1) {
        if (pp == strlen(buf)) {
          *i = v1;
          break;
        }
      }
      ret = 1;
      break;
    case 1:
      if (sscanf(buf, "%d-%d%n", &v1, &v2, &pp) == 2) {
        if (pp == strlen(buf)) {
          *k = v1;
          *l = v2;
          if (!range_mode)
            --max_entries;
          range_mode = 1;
          break;
        }
      } else if (range_mode) {
        if (sscanf(buf, "%d%n", &v1, &pp) == 1) {
          if (pp == strlen(buf)) {
            *l = v1;
            break;
          }
        }
      } else if (sscanf(buf, "%d%n", &v1, &pp) == 1) {
        if (pp == strlen(buf)) {
          *j = v1;
          break;
        }
      }
      ret = 1;
      break;
    case 2:
      if (!range_mode) {
        if (sscanf(buf, "%d%n", &v1, &pp) == 1) {
          if (pp == strlen(buf)) {
            *k = v1;
            break;
          }
        }
        ret = 1;
        break;
      } else {
        --max_entries;
      }
    case 3:
      if (command == 'E') {
        if (sscanf(buf, "%g%n", &energy, &pp) == 1) {
          if (pp == strlen(buf)) {
            *e = energy;
            break;
          }
        }
      } else {
        if (sscanf(buf, "%8s%n", &buf2[0], &pp) == 1) {
          buf2[8] = '\0';
          if (pp == strlen(buf)) {
            for (c = &(buf2[0]); (*c != '\0') && (!ret); c++) {
              switch (*c) {
              case 'E':
                tmp_loop |= (char)0x01;
                break;
              case 'H':
                tmp_loop |= (char)0x02;
                break;
              case 'I':
                tmp_loop |= (char)0x04;
                break;
              case 'i':
                tmp_loop |= (char)0x08;
                break;
              case 'M':
                tmp_loop |= (char)0x10;
                break;
              case 'm':
                tmp_loop |= (char)0x20;
                break;
              case 'A':
                tmp_loop |= (char)((char)0x01 | (char)0x02 | (char)0x04 | (char)0x08 | (char)0x10 | (char)0x20);
                break;
              case 'U':
              case 'D':
                *orientation = *c;
                break;
              default:
                ret = 1;
              }
            }
            if (tmp_loop)
              *loop = tmp_loop;
            break;
          }
        }
      }
      ret = 1;
      break;
    case 4:
      if (!(sscanf(buf, "%c", orientation) == 1)) {
        ret = 1;
      }
      break;
    }
    ++entries_seen;
  }
  return ret;
}
```