user: What is the c source code of the assembly code below?

```asm
<find_index>:
  endbr64
  push   %r13
  lea    D171(%rip),%rdx
  lea    D183(%rip),%rcx
  push   %r12
  movq   %rdx,%xmm0
  lea    D140(%rip),%rdx
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0xa8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x98(%rsp)
  lea    D118(%rip),%rax
  mov    %rsp,%r13
  movq   %rax,%xmm1
  lea    D62(%rip),%rax
  punpcklqdq %xmm1,%xmm0
  movq   %rax,%xmm2
  lea    D72(%rip),%rax
  movaps %xmm0,(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm3
  lea    D135(%rip),%rcx
  punpcklqdq %xmm2,%xmm0
  lea    D113(%rip),%rax
  movaps %xmm0,0x10(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm4
  lea    D115(%rip),%rdx
  punpcklqdq %xmm3,%xmm0
  lea    D78(%rip),%rax
  movaps %xmm0,0x20(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm5
  lea    D38(%rip),%rcx
  punpcklqdq %xmm4,%xmm0
  lea    D40(%rip),%rax
  movaps %xmm0,0x30(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm6
  lea    D19(%rip),%rdx
  punpcklqdq %xmm5,%xmm0
  lea    D176(%rip),%rax
  movaps %xmm0,0x40(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm7
  lea    D98(%rip),%rcx
  punpcklqdq %xmm6,%xmm0
  lea    D6(%rip),%rax
  movaps %xmm0,0x50(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm1
  lea    D132(%rip),%rdx
  punpcklqdq %xmm7,%xmm0
  lea    D46(%rip),%rax
  movaps %xmm0,0x60(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm2
  lea    D1(%rip),%rax
  punpcklqdq %xmm1,%xmm0
  mov    %rax,0x90(%rsp)
  movaps %xmm0,0x70(%rsp)
  movq   %rdx,%xmm0
  punpcklqdq %xmm2,%xmm0
  movaps %xmm0,0x80(%rsp)
  jmp    L7
  cs nopw 0x0(%rax,%rax,1)
L15:
  add    $0x1,%rbx
  cmp    $0x13,%rbx
  je     L28
L7:
  mov    0x0(%r13,%rbx,8),%rdi
  mov    %rbp,%rsi
  mov    %ebx,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L15
L41:
  mov    0x98(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L20
  add    $0xa8,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L28:
  mov    $0xffffffff,%r12d
  jmp    L41
L20:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_label: D171
datatype: string
name: read_data
arguments: data_label: D183
datatype: string
name: read_data
arguments: data_label: D140
datatype: string
name: read_data
arguments: data_label: D118
datatype: string
name: read_data
arguments: data_label: D62
datatype: string
name: read_data
arguments: data_label: D72
datatype: string
name: read_data
arguments: data_label: D135
datatype: string
name: read_data
arguments: data_label: D113
datatype: string
name: read_data
arguments: data_label: D115
datatype: string
name: read_data
arguments: data_label: D78
datatype: string
name: read_data
arguments: data_label: D38
datatype: string
name: read_data
arguments: data_label: D40
datatype: string
name: read_data
arguments: data_label: D19
datatype: string
name: read_data
arguments: data_label: D176
datatype: string
name: read_data
arguments: data_label: D98
datatype: string
name: read_data
arguments: data_label: D6
datatype: string
name: read_data
arguments: data_label: D132
datatype: string
name: read_data
arguments: data_label: D46
datatype: string
name: read_data
arguments: data_label: D1
datatype: string

tool: D171: pop

tool: D183: zip

tool: D140: tzec

tool: D118: no

tool: D62: zotz

tool: D72: xul

tool: D135: yoxkin

tool: D113: mol

tool: D115: chen

tool: D78: yax

tool: D38: zac

tool: D40: ceh

tool: D19: mac

tool: D176: kankin

tool: D98: muan

tool: D6: pax

tool: D132: koyab

tool: D46: cumhu

tool: D1: uayet

assistant: ```c
int find_index(const char *str) {
  char *haab_mons[19] = {"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"};
  int i = 0;
  for (; i < 19; i++)
    if (strcmp(haab_mons[i], str) == 0)
      return i;
  return -1;
}
```