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

```asm
<ServerPacket>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x98,%rsp
  mov    %rdi,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  movzbl (%rdi),%eax
  test   %al,%al
  js     L149
  cmp    $0x20,%al
  ja     L142
  movabs $0x100002601,%rdx
  bt     %rax,%rdx
  jb     L3
L142:
  mov    %rsp,%rbp
  mov    %rbp,%rdx
  lea    D198(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  lea    D110(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L282
  mov    %rsp,%rdi
  lea    D0(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L260
  mov    %rsp,%rdi
  lea    D10(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L0
  mov    %rsp,%rdi
  lea    D28(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L51
  mov    %rsp,%rdi
  lea    D144(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L155
  mov    %rsp,%rdi
  lea    D145(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L338
  mov    %rsp,%rdi
  lea    D90(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L271
  mov    %rsp,%rdi
  lea    D142(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L325
  mov    %rsp,%rdi
  lea    D182(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L273
  mov    %rsp,%rdi
  lea    D165(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L211
  mov    %rsp,%rdi
  lea    D4(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L146
  mov    %rsp,%rdi
  lea    D94(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L354
  mov    %rsp,%rdi
  lea    D146(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L258
  mov    %rsp,%rdi
  lea    D119(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L196
  mov    %rsp,%rdi
  lea    D175(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L58
  mov    %rsp,%rdi
  lea    D44(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L4
  mov    %rsp,%rdi
  lea    D85(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L364
  mov    %rsp,%rdi
  lea    D113(%rip),%rsi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L374
  mov    %rbx,%rdi
  call   <ServerResetPlanets@plt>
  jmp    L207
L149:
  mov    $0x0,%eax
  call   <ServerBinaryPacket@plt>
  jmp    L207
L3:
  mov    %rdi,%rsi
  lea    D75(%rip),%rdi
  mov    $0x0,%eax
  call   <Log@plt>
L207:
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L315
  mov    $0x0,%eax
  add    $0x98,%rsp
  pop    %rbx
  pop    %rbp
  ret
L282:
  mov    %rbx,%rdi
  call   <ServerPositionShort@plt>
  jmp    L207
L260:
  mov    %rbx,%rdi
  call   <ServerPositionLong@plt>
  jmp    L207
L0:
  mov    %rbx,%rdi
  call   <ServerPing@plt>
  jmp    L207
L51:
  mov    %rbx,%rdi
  call   <ServerFire@plt>
  jmp    L207
L155:
  mov    %rbx,%rdi
  call   <ServerMHit@plt>
  jmp    L207
L338:
  mov    %rbx,%rdi
  call   <ServerMDie@plt>
  jmp    L207
L271:
  mov    %rbx,%rdi
  call   <ServerMessage@plt>
  jmp    L207
L325:
  mov    %rbx,%rdi
  call   <ServerName@plt>
  jmp    L207
L273:
  mov    %rbx,%rdi
  call   <ServerVacant@plt>
  jmp    L207
L211:
  mov    %rbx,%rdi
  call   <ServerModel@plt>
  jmp    L207
L146:
  mov    %rbx,%rdi
  call   <ServerFlag@plt>
  jmp    L207
L354:
  mov    %rbx,%rdi
  call   <ServerCrater@plt>
  jmp    L207
L258:
  mov    %rbx,%rdi
  call   <ServerCMSG@plt>
  jmp    L207
L196:
  mov    %rbx,%rdi
  call   <ServerHelo@plt>
  jmp    L207
L58:
  mov    %rbx,%rdi
  call   <ServerGbye@plt>
  jmp    L207
L4:
  mov    %rbx,%rdi
  call   <ServerWelcome@plt>
  jmp    L207
L364:
  mov    %rbx,%rdi
  call   <ServerPlanet@plt>
  jmp    L207
L374:
  mov    %rsp,%rsi
  lea    D103(%rip),%rdi
  mov    $0x0,%eax
  call   <Log@plt>
  jmp    L207
L315:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D198
type_infered: string
name: parse_data
arguments: tag: D110
type_infered: string
name: parse_data
arguments: tag: D0
type_infered: string
name: parse_data
arguments: tag: D10
type_infered: string
name: parse_data
arguments: tag: D28
type_infered: string
name: parse_data
arguments: tag: D144
type_infered: string
name: parse_data
arguments: tag: D145
type_infered: string
name: parse_data
arguments: tag: D90
type_infered: string
name: parse_data
arguments: tag: D142
type_infered: string
name: parse_data
arguments: tag: D182
type_infered: string
name: parse_data
arguments: tag: D165
type_infered: string
name: parse_data
arguments: tag: D4
type_infered: string
name: parse_data
arguments: tag: D94
type_infered: string
name: parse_data
arguments: tag: D146
type_infered: string
name: parse_data
arguments: tag: D119
type_infered: string
name: parse_data
arguments: tag: D175
type_infered: string
name: parse_data
arguments: tag: D44
type_infered: string
name: parse_data
arguments: tag: D85
type_infered: string
name: parse_data
arguments: tag: D113
type_infered: string
name: parse_data
arguments: tag: D75
type_infered: string
name: parse_data
arguments: tag: D103
type_infered: string

tool: D198: %s

tool: D110: poss

tool: D0: posl

tool: D10: ping

tool: D28: fire

tool: D144: mhit

tool: D145: mdie

tool: D90: mesg

tool: D142: name

tool: D182: vcnt

tool: D165: modl

tool: D4: flag

tool: D94: crat

tool: D146: cmsg

tool: D119: helo

tool: D175: gbye

tool: D44: welc

tool: D85: plan

tool: D113: rpln

tool: D75: ServerPacket: Insane packet: %s

tool: D103: ServerPacket: Unrecongized command: %s

assistant: ```c
ServerPacket(pkt) char *pkt;
{
  char cmd[128];
  if (0x80 & pkt[0]) {
    ServerBinaryPacket(pkt);
    return;
  }
  if ((strlen(pkt) == 0) || (pkt[0] == ' ') || (pkt[0] == '\r') || (pkt[0] == '\n') || (pkt[0] == '\t')) {
    Log("ServerPacket: Insane packet: %s", pkt);
    return;
  }
  sscanf(pkt, "%s", cmd);
  if (!strcasecmp(cmd, "poss")) {
    ServerPositionShort(pkt);
    return;
  } else if (!strcasecmp(cmd, "posl")) {
    ServerPositionLong(pkt);
    return;
  } else if (!strcasecmp(cmd, "ping")) {
    ServerPing(pkt);
    return;
  } else if (!strcasecmp(cmd, "fire")) {
    ServerFire(pkt);
    return;
  } else if (!strcasecmp(cmd, "mhit")) {
    ServerMHit(pkt);
    return;
  } else if (!strcasecmp(cmd, "mdie")) {
    ServerMDie(pkt);
    return;
  } else if (!strcasecmp(cmd, "mesg")) {
    ServerMessage(pkt);
    return;
  } else if (!strcasecmp(cmd, "name")) {
    ServerName(pkt);
    return;
  } else if (!strcasecmp(cmd, "vcnt")) {
    ServerVacant(pkt);
    return;
  } else if (!strcasecmp(cmd, "modl")) {
    ServerModel(pkt);
    return;
  } else if (!strcasecmp(cmd, "flag")) {
    ServerFlag(pkt);
    return;
  } else if (!strcasecmp(cmd, "crat")) {
    ServerCrater(pkt);
    return;
  } else if (!strcasecmp(cmd, "cmsg")) {
    ServerCMSG(pkt);
    return;
  } else if (!strcasecmp(cmd, "helo")) {
    ServerHelo(pkt);
    return;
  } else if (!strcasecmp(cmd, "gbye")) {
    ServerGbye(pkt);
    return;
  } else if (!strcasecmp(cmd, "welc")) {
    ServerWelcome(pkt);
    return;
  } else if (!strcasecmp(cmd, "plan")) {
    ServerPlanet(pkt);
    return;
  } else if (!strcasecmp(cmd, "rpln")) {
    ServerResetPlanets(pkt);
    return;
  } else {
    Log("ServerPacket: Unrecongized command: %s", cmd);
    return;
  }
}
```