user: What is the c source code of the assembly code below?

```asm
<ServerPacket>:
  endbr64
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x98,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  movzbl (%rdi),%eax
  test   %al,%al
  js     L148
  cmp    $0x20,%al
  ja     L55
  movabs $0x100002601,%rdx
  bt     %rax,%rdx
  jb     L347
L55:
  mov    %rsp,%r12
  lea    D198(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  mov    %r12,%rdx
  call   <sscanf@plt>
  lea    D156(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L407
  lea    D121(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L54
  lea    D203(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L348
  lea    D161(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L151
  lea    D13(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L52
  lea    D169(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L336
  lea    D56(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L81
  lea    D132(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L170
  lea    D171(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L352
  lea    D178(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L211
  lea    D176(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L325
  lea    D3(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L166
  lea    D95(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L264
  lea    D62(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L222
  lea    D20(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L30
  lea    D99(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L220
  lea    D39(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L341
  lea    D63(%rip),%rsi
  mov    %r12,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L104
  mov    %rbp,%rdi
  call   <ServerResetPlanets@plt>
  jmp    L246
  cs nopw 0x0(%rax,%rax,1)
L347:
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L238
  add    $0x98,%rsp
  mov    %rdi,%rsi
  xor    %eax,%eax
  pop    %rbp
  lea    D143(%rip),%rdi
  pop    %r12
  jmp    12a0 <Log@plt>
  nopw   0x0(%rax,%rax,1)
L407:
  mov    %rbp,%rdi
  call   <ServerPositionShort@plt>
L246:
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L238
  add    $0x98,%rsp
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L148:
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L238
  add    $0x98,%rsp
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  jmp    1300 <ServerBinaryPacket@plt>
L54:
  mov    %rbp,%rdi
  call   <ServerPositionLong@plt>
  jmp    L246
  nopw   0x0(%rax,%rax,1)
L348:
  mov    %rbp,%rdi
  call   <ServerPing@plt>
  jmp    L246
  nopw   0x0(%rax,%rax,1)
L151:
  mov    %rbp,%rdi
  call   <ServerFire@plt>
  jmp    L246
  nopw   0x0(%rax,%rax,1)
L52:
  mov    %rbp,%rdi
  call   <ServerMHit@plt>
  jmp    L246
  nopl   (%rax)
L325:
  mov    %rbp,%rdi
  call   <ServerFlag@plt>
  jmp    L246
  nopl   (%rax)
L336:
  mov    %rbp,%rdi
  call   <ServerMDie@plt>
  jmp    L246
  nopl   (%rax)
L81:
  mov    %rbp,%rdi
  call   <ServerMessage@plt>
  jmp    L246
  nopl   (%rax)
L170:
  mov    %rbp,%rdi
  call   <ServerName@plt>
  jmp    L246
  nopl   (%rax)
L352:
  mov    %rbp,%rdi
  call   <ServerVacant@plt>
  jmp    L246
  nopl   (%rax)
L211:
  mov    %rbp,%rdi
  call   <ServerModel@plt>
  jmp    L246
L166:
  mov    %rbp,%rdi
  call   <ServerCrater@plt>
  jmp    L246
L264:
  mov    %rbp,%rdi
  call   <ServerCMSG@plt>
  jmp    L246
L222:
  mov    %rbp,%rdi
  call   <ServerHelo@plt>
  jmp    L246
L104:
  mov    %r12,%rsi
  lea    D205(%rip),%rdi
  xor    %eax,%eax
  call   <Log@plt>
  jmp    L246
L30:
  mov    %rbp,%rdi
  call   <ServerGbye@plt>
  jmp    L246
L220:
  mov    %rbp,%rdi
  call   <ServerWelcome@plt>
  jmp    L246
L341:
  mov    %rbp,%rdi
  call   <ServerPlanet@plt>
  jmp    L246
L238:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D198
datatype: string
name: parse_data
arguments: data_label: D156
datatype: string
name: parse_data
arguments: data_label: D121
datatype: string
name: parse_data
arguments: data_label: D203
datatype: string
name: parse_data
arguments: data_label: D161
datatype: string
name: parse_data
arguments: data_label: D13
datatype: string
name: parse_data
arguments: data_label: D169
datatype: string
name: parse_data
arguments: data_label: D56
datatype: string
name: parse_data
arguments: data_label: D132
datatype: string
name: parse_data
arguments: data_label: D171
datatype: string
name: parse_data
arguments: data_label: D178
datatype: string
name: parse_data
arguments: data_label: D176
datatype: string
name: parse_data
arguments: data_label: D3
datatype: string
name: parse_data
arguments: data_label: D95
datatype: string
name: parse_data
arguments: data_label: D62
datatype: string
name: parse_data
arguments: data_label: D20
datatype: string
name: parse_data
arguments: data_label: D99
datatype: string
name: parse_data
arguments: data_label: D39
datatype: string
name: parse_data
arguments: data_label: D63
datatype: string
name: parse_data
arguments: data_label: D143
datatype: string
name: parse_data
arguments: data_label: D205
datatype: string

tool: D198: %s

tool: D156: poss

tool: D121: posl

tool: D203: ping

tool: D161: fire

tool: D13: mhit

tool: D169: mdie

tool: D56: mesg

tool: D132: name

tool: D171: vcnt

tool: D178: modl

tool: D176: flag

tool: D3: crat

tool: D95: cmsg

tool: D62: helo

tool: D20: gbye

tool: D99: welc

tool: D39: plan

tool: D63: rpln

tool: D143: ServerPacket: Insane packet: %s

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