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

```asm
<get_event_desc>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x98,%rsp
  mov    %rsi,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  movq   $0x0,(%rsp)
  movq   $0x0,0x8(%rsp)
  movq   $0x0,0x10(%rsp)
  movq   $0x0,0x18(%rsp)
  movq   $0x0,0x20(%rsp)
  movq   $0x0,0x28(%rsp)
  movq   $0x0,0x30(%rsp)
  movq   $0x0,0x38(%rsp)
  movq   $0x0,0x40(%rsp)
  movq   $0x0,0x48(%rsp)
  movq   $0x0,0x50(%rsp)
  movq   $0x0,0x58(%rsp)
  movq   $0x0,0x60(%rsp)
  movq   $0x0,0x68(%rsp)
  movq   $0x0,0x70(%rsp)
  movq   $0x0,0x78(%rsp)
  cmp    $0x400,%edi
  je     L422
  jg     L411
  cmp    $0x20,%edi
  jg     L417
  test   %edi,%edi
  jle    L184
  cmp    $0x20,%edi
  ja     L184
  mov    %edi,%eax
  lea    D13(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L417:
  cmp    $0x100,%edi
  je     L174
  jle    L342
  cmp    $0x200,%edi
  jne    L184
  movabs $0x73617720656c6966,%rax
  movabs $0x646574656c656420,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
L342:
  cmp    $0x40,%edi
  je     L120
  cmp    $0x80,%edi
  jne    L184
  movabs $0x73617720656c6966,%rax
  movabs $0x74206465766f6d20,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movl   $0x59206f,0x10(%rsp)
  jmp    L3
L411:
  cmp    $0x40000004,%edi
  je     L212
  jle    L298
  cmp    $0x40000100,%edi
  je     L200
  jle    L415
  cmp    $0x40000200,%edi
  jne    L184
  movabs $0x2073617720726964,%rax
  movabs $0x646574656c6564,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  jmp    L3
L298:
  cmp    $0x4000,%edi
  je     L344
  jle    L52
  cmp    $0x8000,%edi
  jne    L184
  movabs $0x73617720656c6966,%rax
  movabs $0x6465726f6e676920,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
L52:
  cmp    $0x800,%edi
  je     L379
  cmp    $0x2000,%edi
  jne    L184
  movabs $0x20676e696b636162,%rax
  movabs $0x7520736177207366,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x6465746e756f6d6e,%rax
  mov    %rax,0x10(%rsp)
  movb   $0x0,0x18(%rsp)
  jmp    L3
L415:
  cmp    $0x40000010,%edi
  je     L251
  cmp    $0x40000020,%edi
  jne    L184
  movabs $0x6563636120726964,%rax
  mov    %rax,(%rsp)
  movl   $0x28207373,0x8(%rsp)
  movw   $0x2932,0xc(%rsp)
  movb   $0x0,0xe(%rsp)
  jmp    L3
  movabs $0x73617720656c6966,%rax
  movabs $0x6573736563636120,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movw   $0x64,0x10(%rsp)
L3:
  mov    %rsp,%rbp
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <memcpy@plt>
  mov    0x88(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L366
  add    $0x98,%rsp
  pop    %rbx
  pop    %rbp
  ret
  movabs $0x73617720656c6966,%rax
  movabs $0x65696669646f6d20,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movw   $0x64,0x10(%rsp)
  jmp    L3
  movabs $0x617461646174656d,%rax
  movabs $0x6465676e61686320,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
  movabs $0x6c62616574697277,%rax
  movabs $0x7720656c69662065,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x65736f6c63207361,%rax
  mov    %rax,0x10(%rsp)
  movw   $0x64,0x18(%rsp)
  jmp    L3
  movabs $0x6165746972776e75,%rax
  movabs $0x656c696620656c62,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x6f6c632073617720,%rax
  mov    %rax,0x10(%rsp)
  movl   $0x646573,0x18(%rsp)
  jmp    L3
  movabs $0x73617720656c6966,%rax
  movabs $0x64656e65706f20,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  jmp    L3
L120:
  movabs $0x73617720656c6966,%rax
  movabs $0x66206465766f6d20,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movl   $0x206d6f72,0x10(%rsp)
  movw   $0x58,0x14(%rsp)
  jmp    L3
L174:
  movabs $0x73617720656c6966,%rax
  movabs $0x6465746165726320,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
L422:
  movabs $0x73617720666c6573,%rax
  movabs $0x646574656c656420,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
L379:
  movabs $0x73617720666c6573,%rax
  mov    %rax,(%rsp)
  movl   $0x766f6d20,0x8(%rsp)
  movw   $0x6465,0xc(%rsp)
  movb   $0x0,0xe(%rsp)
  jmp    L3
L344:
  movabs $0x757120746e657665,%rax
  movabs $0x65766f2064657565,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x6465776f6c6672,%rax
  mov    %rax,0x10(%rsp)
  jmp    L3
L200:
  movabs $0x2073617720726964,%rax
  movabs $0x64657461657263,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  jmp    L3
L212:
  movabs $0x617461646174656d,%rax
  movabs $0x6465676e61686320,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movb   $0x0,0x10(%rsp)
  jmp    L3
L251:
  movabs $0x6563636120726964,%rax
  mov    %rax,(%rsp)
  movl   $0x28207373,0x8(%rsp)
  movw   $0x2931,0xc(%rsp)
  movb   $0x0,0xe(%rsp)
  jmp    L3
L184:
  mov    %rsp,%rax
  mov    %edi,%edx
  lea    D15(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L3
L366:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: tag: D15
datatype: string

tool: D15: UNKNOWN: %x

assistant: ```c
char *get_event_desc(int event, char *ptr) {
  char desc[128] = {0};
  switch (event) {
  case 0x00000001:
    sprintf(desc, "file was accessed");
    break;
  case 0x00000002:
    sprintf(desc, "file was modified");
    break;
  case 0x00000004:
    sprintf(desc, "metadata changed");
    break;
  case 0x00000008:
    sprintf(desc, "writeable file was closed");
    break;
  case 0x00000010:
    sprintf(desc, "unwriteable file was closed");
    break;
  case 0x00000020:
    sprintf(desc, "file was opened");
    break;
  case 0x00000040:
    sprintf(desc, "file was moved from X");
    break;
  case 0x00000080:
    sprintf(desc, "file was moved to Y");
    break;
  case 0x00000100:
    sprintf(desc, "file was created");
    break;
  case 0x00000200:
    sprintf(desc, "file was deleted");
    break;
  case 0x00000400:
    sprintf(desc, "self was deleted");
    break;
  case 0x00000800:
    sprintf(desc, "self was moved");
    break;
  case 0x00002000:
    sprintf(desc, "backing fs was unmounted");
    break;
  case 0x00004000:
    sprintf(desc, "event queued overflowed");
    break;
  case 0x00008000:
    sprintf(desc, "file was ignored");
    break;
  case 0x40000100:
    sprintf(desc, "dir was created");
    break;
  case 0x40000004:
    sprintf(desc, "metadata changed");
    break;
  case 0x40000010:
    sprintf(desc, "dir access (1)");
    break;
  case 0x40000020:
    sprintf(desc, "dir access (2)");
    break;
  case 0x40000200:
    sprintf(desc, "dir was deleted");
    break;
  default:
    sprintf(desc, "UNKNOWN: %x", event);
  }
  return memcpy(ptr, desc, strlen(desc));
}
```