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

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x7(%rsp),%rsi
  lea    D82(%rip),%rdi
  call   <scanf@plt>
  cmpb   $0x61,0x7(%rsp)
  je     L170
L203:
  cmpb   $0x62,0x7(%rsp)
  je     L342
L127:
  cmpb   $0x63,0x7(%rsp)
  je     L303
L9:
  cmpb   $0x64,0x7(%rsp)
  je     L191
L446:
  cmpb   $0x65,0x7(%rsp)
  je     L72
L329:
  cmpb   $0x66,0x7(%rsp)
  je     L101
L516:
  cmpb   $0x67,0x7(%rsp)
  je     L387
L373:
  cmpb   $0x68,0x7(%rsp)
  je     L456
L18:
  cmpb   $0x69,0x7(%rsp)
  je     L322
L271:
  cmpb   $0x6a,0x7(%rsp)
  je     L310
L110:
  cmpb   $0x6b,0x7(%rsp)
  je     L502
L436:
  cmpb   $0x6c,0x7(%rsp)
  je     L476
L321:
  cmpb   $0x6d,0x7(%rsp)
  je     L319
L381:
  cmpb   $0x6e,0x7(%rsp)
  je     L42
L136:
  cmpb   $0x6f,0x7(%rsp)
  je     L505
L511:
  cmpb   $0x70,0x7(%rsp)
  je     L113
L438:
  cmpb   $0x71,0x7(%rsp)
  je     L354
L285:
  cmpb   $0x72,0x7(%rsp)
  je     L105
L151:
  cmpb   $0x73,0x7(%rsp)
  je     L0
L423:
  cmpb   $0x74,0x7(%rsp)
  je     L449
L529:
  cmpb   $0x75,0x7(%rsp)
  je     L159
L175:
  cmpb   $0x76,0x7(%rsp)
  je     L268
L279:
  cmpb   $0x77,0x7(%rsp)
  je     L360
L14:
  cmpb   $0x78,0x7(%rsp)
  je     L52
L167:
  cmpb   $0x79,0x7(%rsp)
  je     L276
L95:
  cmpb   $0x7a,0x7(%rsp)
  je     L115
L326:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L109
  mov    $0x0,%eax
  add    $0x18,%rsp
  ret
L170:
  lea    D225(%rip),%rdi
  call   <printf@plt>
  jmp    L203
L342:
  lea    D96(%rip),%rdi
  call   <printf@plt>
  jmp    L127
L303:
  lea    D139(%rip),%rdi
  call   <printf@plt>
  jmp    L9
L191:
  lea    D18(%rip),%rdi
  call   <printf@plt>
  jmp    L446
L72:
  lea    D102(%rip),%rdi
  call   <printf@plt>
  jmp    L329
L101:
  lea    D7(%rip),%rdi
  call   <printf@plt>
  jmp    L516
L387:
  lea    D229(%rip),%rdi
  call   <printf@plt>
  jmp    L373
L456:
  lea    D213(%rip),%rdi
  call   <printf@plt>
  jmp    L18
L322:
  lea    D144(%rip),%rdi
  call   <printf@plt>
  jmp    L271
L310:
  lea    D210(%rip),%rdi
  call   <printf@plt>
  jmp    L110
L502:
  lea    D166(%rip),%rdi
  call   <printf@plt>
  jmp    L436
L476:
  lea    D178(%rip),%rdi
  call   <printf@plt>
  jmp    L321
L319:
  lea    D241(%rip),%rdi
  call   <printf@plt>
  jmp    L381
L42:
  lea    D47(%rip),%rdi
  call   <printf@plt>
  jmp    L136
L505:
  lea    D112(%rip),%rdi
  call   <printf@plt>
  jmp    L511
L113:
  lea    D204(%rip),%rdi
  call   <printf@plt>
  jmp    L438
L354:
  lea    D16(%rip),%rdi
  call   <printf@plt>
  jmp    L285
L105:
  lea    D172(%rip),%rdi
  call   <printf@plt>
  jmp    L151
L0:
  lea    D55(%rip),%rdi
  call   <printf@plt>
  jmp    L423
L449:
  lea    D60(%rip),%rdi
  call   <printf@plt>
  jmp    L529
L159:
  lea    D232(%rip),%rdi
  call   <printf@plt>
  jmp    L175
L268:
  lea    D107(%rip),%rdi
  call   <printf@plt>
  jmp    L279
L360:
  lea    D106(%rip),%rdi
  call   <printf@plt>
  jmp    L14
L52:
  lea    D205(%rip),%rdi
  call   <printf@plt>
  jmp    L167
L276:
  lea    D156(%rip),%rdi
  call   <printf@plt>
  jmp    L95
L115:
  lea    D148(%rip),%rdi
  call   <printf@plt>
  jmp    L326
L109:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D82
type_infered: string
name: parse_data
arguments: data_tag: D225
type_infered: string
name: parse_data
arguments: data_tag: D96
type_infered: string
name: parse_data
arguments: data_tag: D139
type_infered: string
name: parse_data
arguments: data_tag: D18
type_infered: string
name: parse_data
arguments: data_tag: D102
type_infered: string
name: parse_data
arguments: data_tag: D7
type_infered: string
name: parse_data
arguments: data_tag: D229
type_infered: string
name: parse_data
arguments: data_tag: D213
type_infered: string
name: parse_data
arguments: data_tag: D144
type_infered: string
name: parse_data
arguments: data_tag: D210
type_infered: string
name: parse_data
arguments: data_tag: D166
type_infered: string
name: parse_data
arguments: data_tag: D178
type_infered: string
name: parse_data
arguments: data_tag: D241
type_infered: string
name: parse_data
arguments: data_tag: D47
type_infered: string
name: parse_data
arguments: data_tag: D112
type_infered: string
name: parse_data
arguments: data_tag: D204
type_infered: string
name: parse_data
arguments: data_tag: D16
type_infered: string
name: parse_data
arguments: data_tag: D172
type_infered: string
name: parse_data
arguments: data_tag: D55
type_infered: string
name: parse_data
arguments: data_tag: D60
type_infered: string
name: parse_data
arguments: data_tag: D232
type_infered: string
name: parse_data
arguments: data_tag: D107
type_infered: string
name: parse_data
arguments: data_tag: D106
type_infered: string
name: parse_data
arguments: data_tag: D205
type_infered: string
name: parse_data
arguments: data_tag: D156
type_infered: string
name: parse_data
arguments: data_tag: D148
type_infered: string

tool: D82: %c

tool: D225: 
z

tool: D96: 
y

tool: D139: 
x

tool: D18: 
w

tool: D102: 
v

tool: D7: 
u

tool: D229: 
t

tool: D213: 
s

tool: D144: 
r

tool: D210: 
q

tool: D166: 
p

tool: D178: 
o

tool: D241: 
n

tool: D47: 
m

tool: D112: 
l

tool: D204: 
k

tool: D16: 
j

tool: D172: 
i

tool: D55: 
h

tool: D60: 
g

tool: D232: 
f

tool: D107: 
e

tool: D106: 
d

tool: D205: 
c

tool: D156: 
b

tool: D148: 
a

assistant: ```c
int main() {
  char l;
  scanf("%c", &l);
  if (l == 'a')
    printf("\nz");
  if (l == 'b')
    printf("\ny");
  if (l == 'c')
    printf("\nx");
  if (l == 'd')
    printf("\nw");
  if (l == 'e')
    printf("\nv");
  if (l == 'f')
    printf("\nu");
  if (l == 'g')
    printf("\nt");
  if (l == 'h')
    printf("\ns");
  if (l == 'i')
    printf("\nr");
  if (l == 'j')
    printf("\nq");
  if (l == 'k')
    printf("\np");
  if (l == 'l')
    printf("\no");
  if (l == 'm')
    printf("\nn");
  if (l == 'n')
    printf("\nm");
  if (l == 'o')
    printf("\nl");
  if (l == 'p')
    printf("\nk");
  if (l == 'q')
    printf("\nj");
  if (l == 'r')
    printf("\ni");
  if (l == 's')
    printf("\nh");
  if (l == 't')
    printf("\ng");
  if (l == 'u')
    printf("\nf");
  if (l == 'v')
    printf("\ne");
  if (l == 'w')
    printf("\nd");
  if (l == 'x')
    printf("\nc");
  if (l == 'y')
    printf("\nb");
  if (l == 'z')
    printf("\na");
  return 0;
}
```