user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movzbl -0x9(%rbp),%eax
  cmp    $0x61,%al
  jne    L102
  lea    D225(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L102:
  movzbl -0x9(%rbp),%eax
  cmp    $0x62,%al
  jne    L258
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L258:
  movzbl -0x9(%rbp),%eax
  cmp    $0x63,%al
  jne    L72
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L72:
  movzbl -0x9(%rbp),%eax
  cmp    $0x64,%al
  jne    L45
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L45:
  movzbl -0x9(%rbp),%eax
  cmp    $0x65,%al
  jne    L189
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L189:
  movzbl -0x9(%rbp),%eax
  cmp    $0x66,%al
  jne    L74
  lea    D226(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L74:
  movzbl -0x9(%rbp),%eax
  cmp    $0x67,%al
  jne    L15
  lea    D204(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L15:
  movzbl -0x9(%rbp),%eax
  cmp    $0x68,%al
  jne    L177
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L177:
  movzbl -0x9(%rbp),%eax
  cmp    $0x69,%al
  jne    L33
  lea    D239(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L33:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6a,%al
  jne    L255
  lea    D182(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L255:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6b,%al
  jne    L38
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L38:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6c,%al
  jne    L181
  lea    D264(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L181:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6d,%al
  jne    L211
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L211:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6e,%al
  jne    L138
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L138:
  movzbl -0x9(%rbp),%eax
  cmp    $0x6f,%al
  jne    L126
  lea    D156(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L126:
  movzbl -0x9(%rbp),%eax
  cmp    $0x70,%al
  jne    L265
  lea    D266(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L265:
  movzbl -0x9(%rbp),%eax
  cmp    $0x71,%al
  jne    L205
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L205:
  movzbl -0x9(%rbp),%eax
  cmp    $0x72,%al
  jne    L223
  lea    D138(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L223:
  movzbl -0x9(%rbp),%eax
  cmp    $0x73,%al
  jne    L66
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L66:
  movzbl -0x9(%rbp),%eax
  cmp    $0x74,%al
  jne    L222
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L222:
  movzbl -0x9(%rbp),%eax
  cmp    $0x75,%al
  jne    L244
  lea    D230(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L244:
  movzbl -0x9(%rbp),%eax
  cmp    $0x76,%al
  jne    L148
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L148:
  movzbl -0x9(%rbp),%eax
  cmp    $0x77,%al
  jne    L180
  lea    D241(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L180:
  movzbl -0x9(%rbp),%eax
  cmp    $0x78,%al
  jne    L224
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L224:
  movzbl -0x9(%rbp),%eax
  cmp    $0x79,%al
  jne    L118
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L118:
  movzbl -0x9(%rbp),%eax
  cmp    $0x7a,%al
  jne    L164
  lea    D151(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L164:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L269
  call   <__stack_chk_fail@plt>
L269:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D80
type_guessed: string
name: unpack_data
arguments: data_label: D225
type_guessed: string
name: unpack_data
arguments: data_label: D18
type_guessed: string
name: unpack_data
arguments: data_label: D98
type_guessed: string
name: unpack_data
arguments: data_label: D69
type_guessed: string
name: unpack_data
arguments: data_label: D32
type_guessed: string
name: unpack_data
arguments: data_label: D226
type_guessed: string
name: unpack_data
arguments: data_label: D204
type_guessed: string
name: unpack_data
arguments: data_label: D100
type_guessed: string
name: unpack_data
arguments: data_label: D239
type_guessed: string
name: unpack_data
arguments: data_label: D182
type_guessed: string
name: unpack_data
arguments: data_label: D82
type_guessed: string
name: unpack_data
arguments: data_label: D264
type_guessed: string
name: unpack_data
arguments: data_label: D39
type_guessed: string
name: unpack_data
arguments: data_label: D68
type_guessed: string
name: unpack_data
arguments: data_label: D156
type_guessed: string
name: unpack_data
arguments: data_label: D266
type_guessed: string
name: unpack_data
arguments: data_label: D41
type_guessed: string
name: unpack_data
arguments: data_label: D138
type_guessed: string
name: unpack_data
arguments: data_label: D187
type_guessed: string
name: unpack_data
arguments: data_label: D48
type_guessed: string
name: unpack_data
arguments: data_label: D230
type_guessed: string
name: unpack_data
arguments: data_label: D57
type_guessed: string
name: unpack_data
arguments: data_label: D241
type_guessed: string
name: unpack_data
arguments: data_label: D46
type_guessed: string
name: unpack_data
arguments: data_label: D0
type_guessed: string
name: unpack_data
arguments: data_label: D151
type_guessed: string

tool: D80: %s

tool: D225: 
z

tool: D18: 
y

tool: D98: 
x

tool: D69: 
w

tool: D32: 
v

tool: D226: 
u

tool: D204: 
t

tool: D100: 
s

tool: D239: 
r

tool: D182: 
q

tool: D82: 
p

tool: D264: 
o

tool: D39: 
n

tool: D68: 
m

tool: D156: 
l

tool: D266: 
k

tool: D41: 
j

tool: D138: 
i

tool: D187: 
h

tool: D48: 
g

tool: D230: 
f

tool: D57: 
e

tool: D241: 
d

tool: D46: 
c

tool: D0: 
b

tool: D151: 
a

assistant: ```c
int main() {
  char k;
  scanf("%s", &k);
  if (k == 97)
    printf("\nz");
  if (k == 98)
    printf("\ny");
  if (k == 99)
    printf("\nx");
  if (k == 100)
    printf("\nw");
  if (k == 101)
    printf("\nv");
  if (k == 102)
    printf("\nu");
  if (k == 103)
    printf("\nt");
  if (k == 104)
    printf("\ns");
  if (k == 105)
    printf("\nr");
  if (k == 106)
    printf("\nq");
  if (k == 107)
    printf("\np");
  if (k == 108)
    printf("\no");
  if (k == 109)
    printf("\nn");
  if (k == 110)
    printf("\nm");
  if (k == 111)
    printf("\nl");
  if (k == 112)
    printf("\nk");
  if (k == 113)
    printf("\nj");
  if (k == 114)
    printf("\ni");
  if (k == 115)
    printf("\nh");
  if (k == 116)
    printf("\ng");
  if (k == 117)
    printf("\nf");
  if (k == 118)
    printf("\ne");
  if (k == 119)
    printf("\nd");
  if (k == 120)
    printf("\nc");
  if (k == 121)
    printf("\nb");
  if (k == 122)
    printf("\na");
  return 0;
}
```