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

```asm
<find_tag_var_start>:
  endbr64
  test   %rdi,%rdi
  je     L181
  mov    %rsi,%r10
  test   %rsi,%rsi
  je     L181
  movzbl (%rdi),%eax
  mov    %rdi,%r9
  test   %eax,%eax
  je     L181
  xor    %r8d,%r8d
L234:
  cmp    $0x20,%eax
  ja     L176
  add    $0x1,%r8d
  movslq %r8d,%rax
  movzbl (%r9,%rax,1),%eax
  test   %eax,%eax
  jne    L234
L181:
  mov    $0xffffffff,%eax
  ret
  nopl   0x0(%rax)
L176:
  push   %rbx
L239:
  movzbl (%r10),%eax
  movslq %r8d,%r11
  add    %r9,%r11
  movzbl (%r11),%ecx
  mov    %eax,%esi
  test   %eax,%eax
  je     L199
  mov    $0x1,%edx
  jmp    L46
L41:
  lea    -0x41(%rax),%edi
  lea    0x20(%rax),%esi
  cmp    $0x1a,%edi
  lea    -0x41(%rcx),%edi
  cmovb  %esi,%eax
  lea    0x20(%rcx),%esi
  cmp    $0x1a,%edi
  movslq %edx,%rdi
  cmovae %ecx,%esi
  movzbl (%r11,%rdx,1),%ecx
  cmp    %esi,%eax
  jne    L141
  movzbl (%r10,%rdx,1),%eax
  add    $0x1,%rdx
  mov    %eax,%esi
  test   %eax,%eax
  je     L169
L46:
  lea    -0x1(%rdx),%ebx
  test   %ecx,%ecx
  jne    L41
L219:
  mov    $0xffffffff,%r8d
L146:
  mov    %r8d,%eax
  pop    %rbx
  ret
L214:
  mov    %edi,%ebx
  nopw   0x0(%rax,%rax,1)
L141:
  lea    0x1(%rbx,%r8,1),%eax
  cltq
  movzbl (%r9,%rax,1),%edx
  test   %edx,%edx
  jne    L80
  jmp    L219
  nopw   0x0(%rax,%rax,1)
L97:
  movzbl 0x1(%r9,%rax,1),%edx
  add    $0x1,%rax
  test   %edx,%edx
  je     L219
L80:
  mov    %eax,%r8d
  cmp    $0xa,%edx
  jne    L97
  movslq %r8d,%rax
  movzbl (%r9,%rax,1),%eax
  test   %eax,%eax
  je     L219
L197:
  cmp    $0x20,%eax
  ja     L239
  add    $0x1,%r8d
  movslq %r8d,%rax
  movzbl (%r9,%rax,1),%eax
  test   %eax,%eax
  jne    L197
  jmp    L219
L199:
  xor    %edi,%edi
  nopw   0x0(%rax,%rax,1)
L169:
  test   %sil,%sil
  jne    L214
  lea    (%r8,%rdi,1),%eax
  cltq
  movzbl (%r9,%rax,1),%eax
  test   %eax,%eax
  je     L219
L103:
  mov    %edi,%ebx
  cmp    $0x3d,%eax
  je     L146
  cmp    $0xa,%eax
  je     L141
  cmp    $0x20,%eax
  ja     L141
  movzbl 0x1(%r11,%rdi,1),%eax
  add    $0x1,%rdi
  test   %eax,%eax
  jne    L103
  jmp    L219
```

assistant: ```c
int find_tag_var_start(const char *tagbuffer, const char *varname) {
  int i, j;
  if (!tagbuffer || !varname)
    return -1;
  for (i = 0;;) {
    for (;; i++) {
      unsigned u = ((unsigned)(tagbuffer[i])) & 0xFF;
      if (!u)
        return -1;
      if (u <= 0x20)
        continue;
      break;
    }
    for (j = 0;; j++) {
      unsigned ucmp = ((unsigned)(varname[j])) & 0xFF;
      unsigned u = ((unsigned)(tagbuffer[i + j])) & 0xFF;
      if (!ucmp)
        break;
      if (!u)
        return -1;
      if (ucmp >= 'A' && ucmp <= 'Z') {
        ucmp -= 'A';
        ucmp += 'a';
      }
      if (u >= 'A' && u <= 'Z') {
        u -= 'A';
        u += 'a';
      }
      if (u != ucmp)
        break;
    }
    if (!varname[j]) {
      for (;; j++) {
        unsigned u = ((unsigned)(tagbuffer[i + j])) & 0xFF;
        if (!u)
          return -1;
        if (u == '=')
          return i;
        if (u == 0x0A)
          break;
        if (u <= 0x20)
          continue;
        break;
      }
    }
    i += j + 1;
    for (;; i++) {
      unsigned u = ((unsigned)(tagbuffer[i])) & 0xFF;
      if (!u)
        return -1;
      if (u == 0x0A)
        break;
    }
  }
  return -1;
}
```