user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<rewrite_i386_reg>:
  endbr64
  push   %rbp
  cmpb   $0x28,(%rdi)
  mov    %rdi,%rbp
  je     L81
  mov    $0x3,%edx
  lea    D353(%rip),%rsi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L204
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D132(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   0x0(%rax,%rax,1)
L204:
  mov    $0x3,%edx
  lea    D72(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L140
  mov    $0x3,%edx
  lea    D130(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L113
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D359(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L81:
  pop    %rbp
  jmp    10d0 <skipParens@plt>
  xchg   %ax,%ax
L140:
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D304(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L113:
  mov    $0x3,%edx
  lea    D368(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L98
  mov    $0x3,%edx
  lea    D227(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L136
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D488(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L98:
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D198(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L136:
  mov    $0x3,%edx
  lea    D239(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L189
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D90(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L189:
  mov    $0x3,%edx
  lea    D339(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L32
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D475(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L32:
  mov    $0x3,%edx
  lea    D272(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L216
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D33(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L216:
  mov    $0x2,%edx
  lea    D342(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L107
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D28(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L107:
  mov    $0x2,%edx
  lea    D270(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L1
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D230(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L1:
  mov    $0x2,%edx
  lea    D277(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L171
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D376(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L171:
  mov    $0x2,%edx
  lea    D8(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L210
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D112(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L210:
  mov    $0x2,%edx
  lea    D250(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L41
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D486(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L41:
  mov    $0x2,%edx
  lea    D479(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L137
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D308(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L137:
  mov    $0x2,%edx
  lea    D366(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L152
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D386(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L152:
  mov    $0x2,%edx
  lea    D405(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L130
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D336(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L130:
  mov    $0x2,%edx
  lea    D466(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L111
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D208(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L111:
  mov    $0x2,%edx
  lea    D107(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L173
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D482(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L173:
  mov    $0x2,%edx
  lea    D148(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L58
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D485(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L58:
  mov    $0x2,%edx
  lea    D244(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L248
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D450(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L248:
  mov    $0x2,%edx
  lea    D156(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L37
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D267(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L37:
  mov    $0x2,%edx
  lea    D109(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L185
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D200(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L185:
  mov    $0x2,%edx
  lea    D111(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L117
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D70(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L117:
  mov    $0x2,%edx
  lea    D263(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L80
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D379(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L80:
  mov    %rbp,%rsi
  lea    D410(%rip),%rdi
  call   <error@plt>
  mov    %rbp,%rax
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D353
datatype: string
name: disassemble_data
arguments: label: D132
datatype: string
name: disassemble_data
arguments: label: D72
datatype: string
name: disassemble_data
arguments: label: D130
datatype: string
name: disassemble_data
arguments: label: D359
datatype: string
name: disassemble_data
arguments: label: D304
datatype: string
name: disassemble_data
arguments: label: D368
datatype: string
name: disassemble_data
arguments: label: D227
datatype: string
name: disassemble_data
arguments: label: D488
datatype: string
name: disassemble_data
arguments: label: D198
datatype: string
name: disassemble_data
arguments: label: D239
datatype: string
name: disassemble_data
arguments: label: D90
datatype: string
name: disassemble_data
arguments: label: D339
datatype: string
name: disassemble_data
arguments: label: D475
datatype: string
name: disassemble_data
arguments: label: D272
datatype: string
name: disassemble_data
arguments: label: D33
datatype: string
name: disassemble_data
arguments: label: D342
datatype: string
name: disassemble_data
arguments: label: D28
datatype: string
name: disassemble_data
arguments: label: D270
datatype: string
name: disassemble_data
arguments: label: D230
datatype: string
name: disassemble_data
arguments: label: D277
datatype: string
name: disassemble_data
arguments: label: D376
datatype: string
name: disassemble_data
arguments: label: D8
datatype: string
name: disassemble_data
arguments: label: D112
datatype: string
name: disassemble_data
arguments: label: D250
datatype: string
name: disassemble_data
arguments: label: D486
datatype: string
name: disassemble_data
arguments: label: D479
datatype: string
name: disassemble_data
arguments: label: D308
datatype: string
name: disassemble_data
arguments: label: D366
datatype: string
name: disassemble_data
arguments: label: D386
datatype: string
name: disassemble_data
arguments: label: D405
datatype: string
name: disassemble_data
arguments: label: D336
datatype: string
name: disassemble_data
arguments: label: D466
datatype: string
name: disassemble_data
arguments: label: D208
datatype: string
name: disassemble_data
arguments: label: D107
datatype: string
name: disassemble_data
arguments: label: D482
datatype: string
name: disassemble_data
arguments: label: D148
datatype: string
name: disassemble_data
arguments: label: D485
datatype: string
name: disassemble_data
arguments: label: D244
datatype: string
name: disassemble_data
arguments: label: D450
datatype: string
name: disassemble_data
arguments: label: D156
datatype: string
name: disassemble_data
arguments: label: D267
datatype: string
name: disassemble_data
arguments: label: D109
datatype: string
name: disassemble_data
arguments: label: D200
datatype: string
name: disassemble_data
arguments: label: D111
datatype: string
name: disassemble_data
arguments: label: D70
datatype: string
name: disassemble_data
arguments: label: D263
datatype: string
name: disassemble_data
arguments: label: D379
datatype: string
name: disassemble_data
arguments: label: D410
datatype: string

tool: D353: eax

tool: D132: _EAX

tool: D72: ecx

tool: D130: edx

tool: D359: _EDX

tool: D304: _ECX

tool: D368: ebx

tool: D227: esp

tool: D488: _ESP

tool: D198: _EBX

tool: D239: ebp

tool: D90: _EBP

tool: D339: esi

tool: D475: _ESI

tool: D272: edi

tool: D33: _EDI

tool: D342: al

tool: D28: _AL

tool: D270: cl

tool: D230: _CL

tool: D277: dl

tool: D376: _DL

tool: D8: bl

tool: D112: _BL

tool: D250: ah

tool: D486: _AH

tool: D479: ch

tool: D308: _CH

tool: D366: dh

tool: D386: _DH

tool: D405: bh

tool: D336: _BH

tool: D466: ax

tool: D208: _AX

tool: D107: cx

tool: D482: _CX

tool: D148: dx

tool: D485: _DX

tool: D244: bx

tool: D450: _BX

tool: D156: sp

tool: D267: _SP

tool: D109: bp

tool: D200: _BP

tool: D111: si

tool: D70: _SI

tool: D263: di

tool: D379: _DI

tool: D410: unknown register name: %s

assistant: ```c
char *rewrite_i386_reg(char *arg) {
  if (*arg == '(')
    return skipParens(arg);
  if (!strncmp(arg, "eax", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_EAX");
  } else if (!strncmp(arg, "ecx", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_ECX");
  } else if (!strncmp(arg, "edx", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_EDX");
  } else if (!strncmp(arg, "ebx", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_EBX");
  } else if (!strncmp(arg, "esp", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_ESP");
  } else if (!strncmp(arg, "ebp", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_EBP");
  } else if (!strncmp(arg, "esi", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_ESI");
  } else if (!strncmp(arg, "edi", 3)) {
    delete (arg, 3);
    arg = insert(arg, "_EDI");
  } else if (!strncmp(arg, "al", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_AL");
  } else if (!strncmp(arg, "cl", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_CL");
  } else if (!strncmp(arg, "dl", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_DL");
  } else if (!strncmp(arg, "bl", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_BL");
  } else if (!strncmp(arg, "ah", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_AH");
  } else if (!strncmp(arg, "ch", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_CH");
  } else if (!strncmp(arg, "dh", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_DH");
  } else if (!strncmp(arg, "bh", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_BH");
  } else if (!strncmp(arg, "ax", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_AX");
  } else if (!strncmp(arg, "cx", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_CX");
  } else if (!strncmp(arg, "dx", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_DX");
  } else if (!strncmp(arg, "bx", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_BX");
  } else if (!strncmp(arg, "sp", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_SP");
  } else if (!strncmp(arg, "bp", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_BP");
  } else if (!strncmp(arg, "si", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_SI");
  } else if (!strncmp(arg, "di", 2)) {
    delete (arg, 2);
    arg = insert(arg, "_DI");
  } else
    error("unknown register name: %s", arg);
  return arg;
}
```