user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<material_flags_name>:
  endbr64
  push   %rbp
  lea    D31(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D31(%rip)
  jne    L45
  test   $0x2,%bl
  jne    L236
L199:
  test   $0x4,%bl
  jne    L197
L235:
  test   $0x8,%bl
  jne    L135
L239:
  test   $0x10,%bl
  jne    L272
L50:
  test   $0x20,%bl
  jne    L208
L256:
  test   $0x40,%bl
  jne    L61
L38:
  test   $0x80,%bl
  jne    L237
L217:
  test   $0x1,%bh
  jne    L230
L126:
  test   $0x2,%bh
  jne    L143
L245:
  test   $0x4,%bh
  jne    L194
L113:
  test   $0x8,%bh
  jne    L39
L207:
  test   $0x10,%bh
  jne    L151
L31:
  and    $0x20,%bh
  jne    L226
L136:
  cmpb   $0x0,D31(%rip)
  lea    D160(%rip),%rax
  lea    D137(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L45:
  lea    D129(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  je     L199
L236:
  lea    D118(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L235
L197:
  lea    D2(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L239
L135:
  lea    D45(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L50
L272:
  lea    D109(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L256
L208:
  lea    D187(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L38
L61:
  lea    D115(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L217
L237:
  lea    D33(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L126
L230:
  lea    D105(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L245
L143:
  lea    D110(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L113
L194:
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L207
L39:
  lea    D39(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L31
L151:
  lea    D134(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  and    $0x20,%bh
  je     L136
L226:
  lea    D64(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  jmp    L136
```

tool_calls: name: unpack_data
arguments: label: D137
type: string
name: unpack_data
arguments: label: D129
type: string
name: unpack_data
arguments: label: D118
type: string
name: unpack_data
arguments: label: D2
type: string
name: unpack_data
arguments: label: D45
type: string
name: unpack_data
arguments: label: D109
type: string
name: unpack_data
arguments: label: D187
type: string
name: unpack_data
arguments: label: D115
type: string
name: unpack_data
arguments: label: D33
type: string
name: unpack_data
arguments: label: D105
type: string
name: unpack_data
arguments: label: D110
type: string
name: unpack_data
arguments: label: D169
type: string
name: unpack_data
arguments: label: D39
type: string
name: unpack_data
arguments: label: D134
type: string
name: unpack_data
arguments: label: D64
type: string

tool: D137: none

tool: D129:  legend

tool: D118:  metal

tool: D2:  mineral

tool: D45:  organic

tool: D109:  gemstone

tool: D187:  wood

tool: D115:  precious

tool: D33:  semi_prec

tool: D105:  brittle

tool: D110:  flammable

tool: D169:  element

tool: D39:  spark

tool: D134:  powder

tool: D64:  liquid

assistant: ```c
char *material_flags_name(int matl_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (matl_flags & 1)
    strcat(buf, " legend");
  if (matl_flags & 2)
    strcat(buf, " metal");
  if (matl_flags & 4)
    strcat(buf, " mineral");
  if (matl_flags & 8)
    strcat(buf, " organic");
  if (matl_flags & 16)
    strcat(buf, " gemstone");
  if (matl_flags & 32)
    strcat(buf, " wood");
  if (matl_flags & 64)
    strcat(buf, " precious");
  if (matl_flags & 128)
    strcat(buf, " semi_prec");
  if (matl_flags & 256)
    strcat(buf, " brittle");
  if (matl_flags & 512)
    strcat(buf, " flammable");
  if (matl_flags & 1024)
    strcat(buf, " element");
  if (matl_flags & 2048)
    strcat(buf, " spark");
  if (matl_flags & 4096)
    strcat(buf, " powder");
  if (matl_flags & 8192)
    strcat(buf, " liquid");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```