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

```asm
<rewrite_i386_reg>:
  endbr64
  push   %rbp
  cmpb   $0x28,(%rdi)
  mov    %rdi,%rbp
  je     L156
  mov    $0x3,%edx
  lea    D217(%rip),%rsi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L0
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D3(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   0x0(%rax,%rax,1)
L0:
  mov    $0x3,%edx
  lea    D88(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L87
  mov    $0x3,%edx
  lea    D294(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L165
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D438(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L156:
  pop    %rbp
  jmp    10d0 <skipParens@plt>
  xchg   %ax,%ax
L87:
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D302(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L165:
  mov    $0x3,%edx
  lea    D209(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L121
  mov    $0x3,%edx
  lea    D269(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L14
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D133(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L121:
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D372(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L14:
  mov    $0x3,%edx
  lea    D342(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L17
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D311(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
  nopl   (%rax)
L17:
  mov    $0x3,%edx
  lea    D300(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L192
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D313(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L192:
  mov    $0x3,%edx
  lea    D11(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L168
  mov    %rbp,%rdi
  mov    $0x3,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D361(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L168:
  mov    $0x2,%edx
  lea    D370(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L180
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D426(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L180:
  mov    $0x2,%edx
  lea    D90(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L71
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D367(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L71:
  mov    $0x2,%edx
  lea    D476(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L224
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D443(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L224:
  mov    $0x2,%edx
  lea    D304(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L79
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D320(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L79:
  mov    $0x2,%edx
  lea    D273(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L182
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D351(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L182:
  mov    $0x2,%edx
  lea    D266(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L225
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D314(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L225:
  mov    $0x2,%edx
  lea    D254(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L68
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D359(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L68:
  mov    $0x2,%edx
  lea    D174(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L241
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D188(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L241:
  mov    $0x2,%edx
  lea    D157(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L70
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D28(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L70:
  mov    $0x2,%edx
  lea    D421(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L54
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D220(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L54:
  mov    $0x2,%edx
  lea    D425(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L86
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D388(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L86:
  mov    $0x2,%edx
  lea    D255(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L45
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D44(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L45:
  mov    $0x2,%edx
  lea    D329(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L119
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D417(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L119:
  mov    $0x2,%edx
  lea    D371(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L31
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D144(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L31:
  mov    $0x2,%edx
  lea    D63(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L93
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D364(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L93:
  mov    $0x2,%edx
  lea    D242(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L15
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <delete@plt>
  mov    %rbp,%rdi
  lea    D461(%rip),%rsi
  pop    %rbp
  jmp    10b0 <insert@plt>
L15:
  mov    %rbp,%rsi
  lea    D21(%rip),%rdi
  call   <error@plt>
  mov    %rbp,%rax
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: tag: D217
type_infered: string
name: parse_data
arguments: tag: D3
type_infered: string
name: parse_data
arguments: tag: D88
type_infered: string
name: parse_data
arguments: tag: D294
type_infered: string
name: parse_data
arguments: tag: D438
type_infered: string
name: parse_data
arguments: tag: D302
type_infered: string
name: parse_data
arguments: tag: D209
type_infered: string
name: parse_data
arguments: tag: D269
type_infered: string
name: parse_data
arguments: tag: D133
type_infered: string
name: parse_data
arguments: tag: D372
type_infered: string
name: parse_data
arguments: tag: D342
type_infered: string
name: parse_data
arguments: tag: D311
type_infered: string
name: parse_data
arguments: tag: D300
type_infered: string
name: parse_data
arguments: tag: D313
type_infered: string
name: parse_data
arguments: tag: D11
type_infered: string
name: parse_data
arguments: tag: D361
type_infered: string
name: parse_data
arguments: tag: D370
type_infered: string
name: parse_data
arguments: tag: D426
type_infered: string
name: parse_data
arguments: tag: D90
type_infered: string
name: parse_data
arguments: tag: D367
type_infered: string
name: parse_data
arguments: tag: D476
type_infered: string
name: parse_data
arguments: tag: D443
type_infered: string
name: parse_data
arguments: tag: D304
type_infered: string
name: parse_data
arguments: tag: D320
type_infered: string
name: parse_data
arguments: tag: D273
type_infered: string
name: parse_data
arguments: tag: D351
type_infered: string
name: parse_data
arguments: tag: D266
type_infered: string
name: parse_data
arguments: tag: D314
type_infered: string
name: parse_data
arguments: tag: D254
type_infered: string
name: parse_data
arguments: tag: D359
type_infered: string
name: parse_data
arguments: tag: D174
type_infered: string
name: parse_data
arguments: tag: D188
type_infered: string
name: parse_data
arguments: tag: D157
type_infered: string
name: parse_data
arguments: tag: D28
type_infered: string
name: parse_data
arguments: tag: D421
type_infered: string
name: parse_data
arguments: tag: D220
type_infered: string
name: parse_data
arguments: tag: D425
type_infered: string
name: parse_data
arguments: tag: D388
type_infered: string
name: parse_data
arguments: tag: D255
type_infered: string
name: parse_data
arguments: tag: D44
type_infered: string
name: parse_data
arguments: tag: D329
type_infered: string
name: parse_data
arguments: tag: D417
type_infered: string
name: parse_data
arguments: tag: D371
type_infered: string
name: parse_data
arguments: tag: D144
type_infered: string
name: parse_data
arguments: tag: D63
type_infered: string
name: parse_data
arguments: tag: D364
type_infered: string
name: parse_data
arguments: tag: D242
type_infered: string
name: parse_data
arguments: tag: D461
type_infered: string
name: parse_data
arguments: tag: D21
type_infered: string

tool: D217: eax

tool: D3: _EAX

tool: D88: ecx

tool: D294: edx

tool: D438: _EDX

tool: D302: _ECX

tool: D209: ebx

tool: D269: esp

tool: D133: _ESP

tool: D372: _EBX

tool: D342: ebp

tool: D311: _EBP

tool: D300: esi

tool: D313: _ESI

tool: D11: edi

tool: D361: _EDI

tool: D370: al

tool: D426: _AL

tool: D90: cl

tool: D367: _CL

tool: D476: dl

tool: D443: _DL

tool: D304: bl

tool: D320: _BL

tool: D273: ah

tool: D351: _AH

tool: D266: ch

tool: D314: _CH

tool: D254: dh

tool: D359: _DH

tool: D174: bh

tool: D188: _BH

tool: D157: ax

tool: D28: _AX

tool: D421: cx

tool: D220: _CX

tool: D425: dx

tool: D388: _DX

tool: D255: bx

tool: D44: _BX

tool: D329: sp

tool: D417: _SP

tool: D371: bp

tool: D144: _BP

tool: D63: si

tool: D364: _SI

tool: D242: di

tool: D461: _DI

tool: D21: 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;
}
```