user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<norelop>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D162(%rip),%rsi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L62
L60:
  pop    %rbx
  ret
L62:
  lea    D113(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D216(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D166(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D95(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D159(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D10(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D154(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  cmpb   $0x49,0x2(%rbx)
  je     L152
L34:
  lea    D152(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D155(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D114(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D53(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D8(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  jmp    L60
L152:
  lea    D121(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D96(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D15(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D125(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D24(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D11(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D115(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  jne    L60
  lea    D210(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <streq@plt>
  test   %eax,%eax
  je     L34
  mov    $0x1,%eax
  jmp    L60
```

tool_calls: name: parse_data
arguments: tag: D162
type: string
name: parse_data
arguments: tag: D113
type: string
name: parse_data
arguments: tag: D216
type: string
name: parse_data
arguments: tag: D166
type: string
name: parse_data
arguments: tag: D95
type: string
name: parse_data
arguments: tag: D159
type: string
name: parse_data
arguments: tag: D10
type: string
name: parse_data
arguments: tag: D154
type: string
name: parse_data
arguments: tag: D84
type: string
name: parse_data
arguments: tag: D152
type: string
name: parse_data
arguments: tag: D155
type: string
name: parse_data
arguments: tag: D114
type: string
name: parse_data
arguments: tag: D53
type: string
name: parse_data
arguments: tag: D8
type: string
name: parse_data
arguments: tag: D121
type: string
name: parse_data
arguments: tag: D96
type: string
name: parse_data
arguments: tag: D15
type: string
name: parse_data
arguments: tag: D125
type: string
name: parse_data
arguments: tag: D24
type: string
name: parse_data
arguments: tag: D11
type: string
name: parse_data
arguments: tag: D115
type: string
name: parse_data
arguments: tag: D210
type: string

tool: D162: MOV

tool: D113: INR

tool: D216: DCR

tool: D166: INX

tool: D95: DCX

tool: D159: DAD

tool: D10: MVI

tool: D154: DB

tool: D84: DS

tool: D152: ORG

tool: D155: TITLE

tool: D114: PAGE

tool: D53: EJECT

tool: D8: MACRO

tool: D121: CPI

tool: D96: ORI

tool: D15: ANI

tool: D125: ADI

tool: D24: SUI

tool: D11: SBI

tool: D115: XRI

tool: D210: ACI

assistant: ```c
norelop(op) char *op;
{
  if (streq(op, "MOV"))
    return 1;
  if (streq(op, "INR"))
    return 1;
  if (streq(op, "DCR"))
    return 1;
  if (streq(op, "INX"))
    return 1;
  if (streq(op, "DCX"))
    return 1;
  if (streq(op, "DAD"))
    return 1;
  if (streq(op, "MVI"))
    return 1;
  if (streq(op, "DB"))
    return 1;
  if (streq(op, "DS"))
    return 1;
  if (op[2] == 'I') {
    if (streq(op, "CPI"))
      return 1;
    if (streq(op, "ORI"))
      return 1;
    if (streq(op, "ANI"))
      return 1;
    if (streq(op, "ADI"))
      return 1;
    if (streq(op, "SUI"))
      return 1;
    if (streq(op, "SBI"))
      return 1;
    if (streq(op, "XRI"))
      return 1;
    if (streq(op, "ACI"))
      return 1;
  }
  if (streq(op, "ORG"))
    return 1;
  if (streq(op, "TITLE"))
    return 1;
  if (streq(op, "PAGE"))
    return 1;
  if (streq(op, "EJECT"))
    return 1;
  if (streq(op, "MACRO"))
    return 1;
  return 0;
}
```