user: 下面的汇编指令对应的C源代码是什么:

```asm
<ServerPacket>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %rdi,-0x98(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L78
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerBinaryPacket@plt>
  jmp    L29
L78:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L117
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L117
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xd,%al
  je     L117
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L117
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x9,%al
  jne    L278
L117:
  mov    -0x98(%rbp),%rax
  mov    %rax,%rsi
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <Log@plt>
  jmp    L29
L278:
  lea    -0x90(%rbp),%rdx
  mov    -0x98(%rbp),%rax
  lea    D79(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  lea    -0x90(%rbp),%rax
  lea    D30(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L28
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerPositionShort@plt>
  jmp    L29
L28:
  lea    -0x90(%rbp),%rax
  lea    D144(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L38
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerPositionLong@plt>
  jmp    L29
L38:
  lea    -0x90(%rbp),%rax
  lea    D178(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L317
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerPing@plt>
  jmp    L29
L317:
  lea    -0x90(%rbp),%rax
  lea    D109(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L164
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerFire@plt>
  jmp    L29
L164:
  lea    -0x90(%rbp),%rax
  lea    D113(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L325
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerMHit@plt>
  jmp    L29
L325:
  lea    -0x90(%rbp),%rax
  lea    D187(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L236
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerMDie@plt>
  jmp    L29
L236:
  lea    -0x90(%rbp),%rax
  lea    D27(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L291
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerMessage@plt>
  jmp    L29
L291:
  lea    -0x90(%rbp),%rax
  lea    D72(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L183
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerName@plt>
  jmp    L29
L183:
  lea    -0x90(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L30
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerVacant@plt>
  jmp    L29
L30:
  lea    -0x90(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L1
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerModel@plt>
  jmp    L29
L1:
  lea    -0x90(%rbp),%rax
  lea    D62(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L120
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerFlag@plt>
  jmp    L29
L120:
  lea    -0x90(%rbp),%rax
  lea    D58(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L280
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerCrater@plt>
  jmp    L29
L280:
  lea    -0x90(%rbp),%rax
  lea    D2(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L11
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerCMSG@plt>
  jmp    L29
L11:
  lea    -0x90(%rbp),%rax
  lea    D156(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L443
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerHelo@plt>
  jmp    L29
L443:
  lea    -0x90(%rbp),%rax
  lea    D49(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L175
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerGbye@plt>
  jmp    L29
L175:
  lea    -0x90(%rbp),%rax
  lea    D29(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L41
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerWelcome@plt>
  jmp    L29
L41:
  lea    -0x90(%rbp),%rax
  lea    D65(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L171
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerPlanet@plt>
  jmp    L29
L171:
  lea    -0x90(%rbp),%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L191
  mov    -0x98(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ServerResetPlanets@plt>
  jmp    L29
L191:
  lea    -0x90(%rbp),%rax
  mov    %rax,%rsi
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <Log@plt>
  nop
L29:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L330
  call   <__stack_chk_fail@plt>
L330:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D71
type_guessed: string
name: unpack_data
arguments: tag: D79
type_guessed: string
name: unpack_data
arguments: tag: D30
type_guessed: string
name: unpack_data
arguments: tag: D144
type_guessed: string
name: unpack_data
arguments: tag: D178
type_guessed: string
name: unpack_data
arguments: tag: D109
type_guessed: string
name: unpack_data
arguments: tag: D113
type_guessed: string
name: unpack_data
arguments: tag: D187
type_guessed: string
name: unpack_data
arguments: tag: D27
type_guessed: string
name: unpack_data
arguments: tag: D72
type_guessed: string
name: unpack_data
arguments: tag: D40
type_guessed: string
name: unpack_data
arguments: tag: D39
type_guessed: string
name: unpack_data
arguments: tag: D62
type_guessed: string
name: unpack_data
arguments: tag: D58
type_guessed: string
name: unpack_data
arguments: tag: D2
type_guessed: string
name: unpack_data
arguments: tag: D156
type_guessed: string
name: unpack_data
arguments: tag: D49
type_guessed: string
name: unpack_data
arguments: tag: D29
type_guessed: string
name: unpack_data
arguments: tag: D65
type_guessed: string
name: unpack_data
arguments: tag: D94
type_guessed: string
name: unpack_data
arguments: tag: D9
type_guessed: string

tool: D71: ServerPacket: Insane packet: %s

tool: D79: %s

tool: D30: poss

tool: D144: posl

tool: D178: ping

tool: D109: fire

tool: D113: mhit

tool: D187: mdie

tool: D27: mesg

tool: D72: name

tool: D40: vcnt

tool: D39: modl

tool: D62: flag

tool: D58: crat

tool: D2: cmsg

tool: D156: helo

tool: D49: gbye

tool: D29: welc

tool: D65: plan

tool: D94: rpln

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