user: 这段汇编代码用C语言表示是什么样的?

```asm
<pdb_command>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x360,%rsp
  mov    %rdi,-0x358(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x358(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0x180(%rbp),%rax
  mov    %rax,%rdi
  call   <help_scanner@plt>
  lea    -0x1c0(%rbp),%rdi
  lea    -0x200(%rbp),%rsi
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D121(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x4,-0x344(%rbp)
  jne    L328
  lea    -0x1c0(%rbp),%rcx
  lea    -0x200(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <times_equals@plt>
  mov    $0x1,%eax
  jmp    L278
L328:
  lea    -0x1c0(%rbp),%rdi
  lea    -0x200(%rbp),%rsi
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D123(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x4,-0x344(%rbp)
  jne    L89
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L301
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L301:
  lea    -0x1c0(%rbp),%rcx
  lea    -0x200(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <plus_equals@plt>
  mov    $0x1,%eax
  jmp    L278
L89:
  lea    -0x1c0(%rbp),%rdi
  lea    -0x200(%rbp),%rsi
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D101(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x4,-0x344(%rbp)
  jne    L293
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L273
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L273:
  lea    -0x1c0(%rbp),%rcx
  lea    -0x200(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <minus_equals@plt>
  mov    $0x1,%eax
  jmp    L278
L293:
  lea    -0x1c0(%rbp),%rsi
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rsi,%r8
  lea    D23(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x3,-0x344(%rbp)
  jne    L295
  lea    -0x1c0(%rbp),%rdx
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <field_assignment@plt>
  mov    $0x1,%eax
  jmp    L278
L295:
  lea    -0x280(%rbp),%rsi
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rsi,%r8
  lea    D55(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x3,-0x344(%rbp)
  jne    L252
  lea    -0x300(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L212
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L212:
  lea    -0x280(%rbp),%rdx
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <handle_intersection@plt>
  mov    $0x1,%eax
  jmp    L278
L252:
  lea    -0x280(%rbp),%rsi
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rsi,%r8
  lea    D133(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x3,-0x344(%rbp)
  jne    L21
  lea    -0x300(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L124
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L124:
  lea    -0x280(%rbp),%rdx
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <handle_union@plt>
  mov    $0x1,%eax
  jmp    L278
L21:
  lea    -0x280(%rbp),%rsi
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rsi,%r8
  lea    D144(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x3,-0x344(%rbp)
  jne    L190
  lea    -0x300(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L185
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L185:
  lea    -0x280(%rbp),%rdx
  lea    -0x2c0(%rbp),%rcx
  lea    -0x300(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <handle_subtraction@plt>
  mov    $0x1,%eax
  jmp    L278
L190:
  lea    -0x1c0(%rbp),%rdi
  lea    -0x200(%rbp),%rsi
  lea    -0x240(%rbp),%rcx
  lea    -0x340(%rbp),%rdx
  lea    -0x180(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D71(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %eax,-0x344(%rbp)
  cmpl   $0x4,-0x344(%rbp)
  jne    L269
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L66
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L66:
  lea    -0x1c0(%rbp),%rcx
  lea    -0x200(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <assignment@plt>
  mov    $0x1,%eax
  jmp    L278
L269:
  cmpl   $0x2,-0x344(%rbp)
  jne    L42
  lea    -0x300(%rbp),%rax
  mov    %rax,%rdi
  call   <protected_set@plt>
  test   %rax,%rax
  je     L157
  lea    -0x110(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <set_error1@plt>
  mov    $0x0,%eax
  jmp    L278
L157:
  lea    -0x2c0(%rbp),%rdx
  lea    -0x300(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <simple_set_copy@plt>
  mov    $0x1,%eax
  jmp    L278
L42:
  mov    $0x0,%eax
L278:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L318
  call   <__stack_chk_fail@plt>
L318:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D121
type_infered: string
name: parse_data
arguments: label: D123
type_infered: string
name: parse_data
arguments: label: D107
type_infered: string
name: parse_data
arguments: label: D101
type_infered: string
name: parse_data
arguments: label: D23
type_infered: string
name: parse_data
arguments: label: D55
type_infered: string
name: parse_data
arguments: label: D133
type_infered: string
name: parse_data
arguments: label: D144
type_infered: string
name: parse_data
arguments: label: D71
type_infered: string

tool: D121: %s *= %s %s %s

tool: D123: %s += %s %s %s

tool: D107: pdb_command: user not allowed to modify protected set

tool: D101: %s -= %s %s %s

tool: D23: %s %s = %s

tool: D55: %s = %s * %s

tool: D133: %s = %s + %s

tool: D144: %s = %s - %s

tool: D71: %s = %s %s %s

assistant: ```c
int pdb_command(char command_line[255]) {
  int nw;
  char command__line[100];
  char setname[64], setname1[64];
  char setname2[64], setname3[64];
  char field[64], operator[64];
  char value[64];
  char message[255];
  strcpy(command__line, command_line);
  help_scanner(command__line);
  nw = sscanf(command__line, "%s *= %s %s %s", setname, field, operator, value);
  if (nw == 4) {
    times_equals(setname, field, operator, value);
    return (1);
  }
  nw = sscanf(command__line, "%s += %s %s %s", setname, field, operator, value);
  if (nw == 4) {
    if (protected_set(setname)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    plus_equals(setname, field, operator, value);
    return (1);
  }
  nw = sscanf(command__line, "%s -= %s %s %s", setname, field, operator, value);
  if (nw == 4) {
    if (protected_set(setname)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    minus_equals(setname, field, operator, value);
    return (1);
  }
  nw = sscanf(command__line, "%s %s = %s", setname, field, value);
  if (nw == 3) {
    field_assignment(setname, field, value);
    return (1);
  }
  nw = sscanf(command__line, "%s = %s * %s", setname1, setname2, setname3);
  if (nw == 3) {
    if (protected_set(setname1)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    handle_intersection(setname1, setname2, setname3);
    return (1);
  }
  nw = sscanf(command__line, "%s = %s + %s", setname1, setname2, setname3);
  if (nw == 3) {
    if (protected_set(setname1)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    handle_union(setname1, setname2, setname3);
    return (1);
  }
  nw = sscanf(command__line, "%s = %s - %s", setname1, setname2, setname3);
  if (nw == 3) {
    if (protected_set(setname1)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    handle_subtraction(setname1, setname2, setname3);
    return (1);
  }
  nw = sscanf(command__line, "%s = %s %s %s", setname, field, operator, value);
  if (nw == 4) {
    if (protected_set(setname)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    assignment(setname, field, operator, value);
    return (1);
  } else if (nw == 2) {
    if (protected_set(setname1)) {
      sprintf(message, "pdb_command: user not allowed to modify protected set");
      set_error1(message);
      return (0);
    }
    simple_set_copy(setname1, setname2);
    return (1);
  }
  return (0);
}
```