user: Demonstrate the C code that generates the assembly output below:

```asm
<PackShape>:
  endbr64
  push   %rbp
  lea    D255(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcmp@plt>
  movsd  D212(%rip),%xmm0
  test   %rax,%rax
  jne    L98
L107:
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L98:
  lea    D7(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D119(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D198(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D150(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D41(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D204(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D113(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D170(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D127(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D21(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D190(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D110(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D154(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D16(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D1(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D122(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D162(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  movsd  D3(%rip),%xmm0
  test   %rax,%rax
  je     L107
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L109
  lea    D54(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L23
L109:
  movsd  D50(%rip),%xmm0
  pop    %rbp
  ret
L23:
  mov    %rbp,%rdi
  call   <atoi@plt>
  pop    %rbp
  addsd  D219(%rip),%xmm0
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D255
type_guessed: string
name: disassemble_data
arguments: tag: D212
type_guessed: f64
name: disassemble_data
arguments: tag: D7
type_guessed: string
name: disassemble_data
arguments: tag: D119
type_guessed: f64
name: disassemble_data
arguments: tag: D198
type_guessed: string
name: disassemble_data
arguments: tag: D150
type_guessed: f64
name: disassemble_data
arguments: tag: D0
type_guessed: string
name: disassemble_data
arguments: tag: D41
type_guessed: f64
name: disassemble_data
arguments: tag: D204
type_guessed: string
name: disassemble_data
arguments: tag: D113
type_guessed: f64
name: disassemble_data
arguments: tag: D170
type_guessed: string
name: disassemble_data
arguments: tag: D127
type_guessed: f64
name: disassemble_data
arguments: tag: D21
type_guessed: string
name: disassemble_data
arguments: tag: D190
type_guessed: f64
name: disassemble_data
arguments: tag: D110
type_guessed: string
name: disassemble_data
arguments: tag: D154
type_guessed: f64
name: disassemble_data
arguments: tag: D185
type_guessed: string
name: disassemble_data
arguments: tag: D16
type_guessed: f64
name: disassemble_data
arguments: tag: D1
type_guessed: string
name: disassemble_data
arguments: tag: D122
type_guessed: f64
name: disassemble_data
arguments: tag: D162
type_guessed: string
name: disassemble_data
arguments: tag: D3
type_guessed: f64
name: disassemble_data
arguments: tag: D44
type_guessed: string
name: disassemble_data
arguments: tag: D54
type_guessed: string
name: disassemble_data
arguments: tag: D50
type_guessed: f64
name: disassemble_data
arguments: tag: D219
type_guessed: f64

tool: D255: box

tool: D212: 101

tool: D7: sphere

tool: D119: 102

tool: D198: cylinder

tool: D150: 103

tool: D0: cone

tool: D41: 104

tool: D204: pipe

tool: D113: 105

tool: D170: beam

tool: D127: 106

tool: D21: wirebox

tool: D190: 107

tool: D110: gearwheel

tool: D154: 108

tool: D185: vector

tool: D16: 109

tool: D1: pipecylinder

tool: D122: 110

tool: D162: spring

tool: D3: 111

tool: D44: tire

tool: D54: tyre

tool: D50: 112

tool: D219: 200

assistant: ```c
double PackShape(char *shapename) {
  if (strcmp(shapename, "box") == 0)
    return 101.0;
  else if (strcmp(shapename, "sphere") == 0)
    return 102.0;
  else if (strcmp(shapename, "cylinder") == 0)
    return 103.0;
  else if (strcmp(shapename, "cone") == 0)
    return 104.0;
  else if (strcmp(shapename, "pipe") == 0)
    return 105.0;
  else if (strcmp(shapename, "beam") == 0)
    return 106.0;
  else if (strcmp(shapename, "wirebox") == 0)
    return 107.0;
  else if (strcmp(shapename, "gearwheel") == 0)
    return 108.0;
  else if (strcmp(shapename, "vector") == 0)
    return 109.0;
  else if (strcmp(shapename, "pipecylinder") == 0)
    return 110.0;
  else if (strcmp(shapename, "spring") == 0)
    return 111.0;
  else if (strcmp(shapename, "tire") == 0 || strcmp(shapename, "tyre") == 0)
    return 112.0;
  else {
    return 200.0 + atoi(shapename);
  }
}
```