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

```asm
<condExpr>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%r12
  mov    %rsi,%rbx
  mov    %edx,%ebp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%rsi
  mov    %edx,%r8d
  mov    %rbx,%rcx
  mov    $0x4,%edx
  call   <sisRead@plt>
  mov    $0x1,%r13d
  test   %rax,%rax
  je     L272
L318:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L49
  mov    %r13d,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L272:
  mov    0x4(%rsp),%edi
  call   <sis32toh@plt>
  mov    %eax,0x4(%rsp)
  cmp    $0xe,%eax
  ja     L197
  mov    %eax,%eax
  lea    D33(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D153(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D66(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D112(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D81(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D126(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D34(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D52(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    $0x1,%r13d
  test   %eax,%eax
  jne    L318
  lea    D10(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  lea    D113(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    %eax,%r13d
  test   %eax,%eax
  je     L270
  mov    $0x1,%r13d
  jmp    L318
L270:
  lea    D38(%rip),%rdi
  call   <printf@plt>
  jmp    L318
  lea    D61(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    %eax,%r13d
  test   %eax,%eax
  je     L182
  mov    $0x1,%r13d
  jmp    L318
L182:
  lea    D38(%rip),%rdi
  call   <printf@plt>
  jmp    L318
  lea    D99(%rip),%rdi
  call   <printf@plt>
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condExpr>
  mov    %eax,%r13d
  test   %eax,%eax
  je     L1
  mov    $0x1,%r13d
  jmp    L318
L1:
  lea    D38(%rip),%rdi
  call   <printf@plt>
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condString@plt>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condAttribute@plt>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
  mov    %ebp,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <condNumber@plt>
  test   %eax,%eax
  setne  %r13b
  movzbl %r13b,%r13d
  jmp    L318
L197:
  mov    %eax,%ecx
  lea    D88(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <snprintf@plt>
  mov    $0x1,%r13d
  jmp    L318
L49:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D153
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D66
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D112
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D81
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D126
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D34
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D52
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D10
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D113
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D38
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D61
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D99
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D88
type_guessed: string

tool: D153:  == 

tool: D66:  != 

tool: D112:  > 

tool: D81:  < 

tool: D126:  >= 

tool: D34:  <= 

tool: D52:  AND 

tool: D10:  OR 

tool: D113: EXISTS(

tool: D38: )

tool: D61: DEVCAP(

tool: D99: NOT(

tool: D88: Unknown conditional type %04x

assistant: ```c
int condExpr(FILE *fp, char *err, int errlen) {
  unsigned int condtype;
  if (sisRead(fp, &condtype, 4, err, errlen))
    return 1;
  condtype = sis32toh(condtype);
  switch (condtype) {
  case 0x00:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" == ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x01:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" != ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x02:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" > ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x03:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" < ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x04:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" >= ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x05:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" <= ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x06:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" AND ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x07:
    if (condExpr(fp, err, errlen))
      return 1;
    printf(" OR ");
    if (condExpr(fp, err, errlen))
      return 1;
    break;
  case 0x08:
  case 0x09:
    printf("EXISTS(");
    if (condExpr(fp, err, errlen))
      return 1;
    printf(")");
    break;
  case 0x0a:
    printf("DEVCAP(");
    if (condExpr(fp, err, errlen))
      return 1;
    printf(")");
    break;
  case 0x0b:
    printf("NOT(");
    if (condExpr(fp, err, errlen))
      return 1;
    printf(")");
    break;
  case 0x0c:
    if (condString(fp, err, errlen))
      return 1;
    break;
  case 0x0d:
    if (condAttribute(fp, err, errlen))
      return 1;
    break;
  case 0x0e:
    if (condNumber(fp, err, errlen))
      return 1;
    break;
  default:
    snprintf(err, errlen, "Unknown conditional type %04x", condtype);
    return 1;
    break;
  }
  return 0;
}
```