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

```asm
<olsame_>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x20(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L120
  mov    -0x4(%rbp),%eax
  jmp    L210
L120:
  movl   $0x5a,D189(%rip)
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,D377(%rip)
  mov    -0x20(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,D169(%rip)
  mov    D189(%rip),%eax
  cmp    $0x5a,%eax
  je     L121
  mov    D189(%rip),%eax
  cmp    $0x7a,%eax
  jne    L299
L121:
  mov    D377(%rip),%eax
  cmp    $0x60,%eax
  jle    L117
  mov    D377(%rip),%eax
  cmp    $0x7a,%eax
  jg     L117
  mov    D377(%rip),%eax
  sub    $0x20,%eax
  mov    %eax,D261(%rip)
L117:
  mov    D169(%rip),%eax
  cmp    $0x60,%eax
  jle    L241
  mov    D169(%rip),%eax
  cmp    $0x7a,%eax
  jg     L241
  mov    D169(%rip),%eax
  sub    $0x20,%eax
  mov    %eax,D261(%rip)
  jmp    L241
L299:
  mov    D189(%rip),%eax
  cmp    $0xe9,%eax
  je     L178
  mov    D189(%rip),%eax
  cmp    $0xa9,%eax
  jne    L229
L178:
  mov    D261(%rip),%eax
  cmp    $0x80,%eax
  jle    L171
  mov    D261(%rip),%eax
  cmp    $0x89,%eax
  jle    L128
L171:
  mov    D261(%rip),%eax
  cmp    $0x90,%eax
  jle    L49
  mov    D261(%rip),%eax
  cmp    $0x99,%eax
  jle    L128
L49:
  mov    D261(%rip),%eax
  cmp    $0xa1,%eax
  jle    L149
  mov    D261(%rip),%eax
  cmp    $0xa9,%eax
  jg     L149
L128:
  mov    D261(%rip),%eax
  add    $0x40,%eax
  mov    %eax,D261(%rip)
L149:
  mov    D261(%rip),%eax
  cmp    $0x80,%eax
  jle    L139
  mov    D261(%rip),%eax
  cmp    $0x89,%eax
  jle    L262
L139:
  mov    D261(%rip),%eax
  cmp    $0x90,%eax
  jle    L169
  mov    D261(%rip),%eax
  cmp    $0x99,%eax
  jle    L262
L169:
  mov    D261(%rip),%eax
  cmp    $0xa1,%eax
  jle    L93
  mov    D261(%rip),%eax
  cmp    $0xa9,%eax
  jg     L93
L262:
  mov    D261(%rip),%eax
  add    $0x40,%eax
  mov    %eax,D261(%rip)
  jmp    L93
L229:
  mov    D189(%rip),%eax
  cmp    $0xda,%eax
  je     L266
  mov    D189(%rip),%eax
  cmp    $0xfa,%eax
  jne    L39
L266:
  mov    D261(%rip),%eax
  cmp    $0xe0,%eax
  jle    L102
  mov    D261(%rip),%eax
  cmp    $0xfa,%eax
  jg     L102
  mov    D261(%rip),%eax
  sub    $0x20,%eax
  mov    %eax,D261(%rip)
L102:
  mov    D261(%rip),%eax
  cmp    $0xe0,%eax
  jle    L39
  mov    D261(%rip),%eax
  cmp    $0xfa,%eax
  jg     L39
  mov    D261(%rip),%eax
  sub    $0x20,%eax
  mov    %eax,D261(%rip)
  jmp    L39
L241:
  nop
  jmp    L39
L93:
  nop
L39:
  mov    D261(%rip),%edx
  mov    D261(%rip),%eax
  cmp    %eax,%edx
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
L210:
  pop    %rbp
  ret
```

assistant: ```c
int olsame_(char *ca, char *cb) {
  int ret_val;
  static int inta, intb, zcode;
  ret_val = *(unsigned char *)ca == *(unsigned char *)cb;
  if (ret_val) {
    return ret_val;
  }
  zcode = 'Z';
  inta = *(unsigned char *)ca;
  intb = *(unsigned char *)cb;
  if (zcode == 90 || zcode == 122) {
    if (inta >= 97 && inta <= 122) {
      inta += -32;
    }
    if (intb >= 97 && intb <= 122) {
      intb += -32;
    }
  } else if (zcode == 233 || zcode == 169) {
    if (inta >= 129 && inta <= 137 || inta >= 145 && inta <= 153 || inta >= 162 && inta <= 169) {
      inta += 64;
    }
    if (intb >= 129 && intb <= 137 || intb >= 145 && intb <= 153 || intb >= 162 && intb <= 169) {
      intb += 64;
    }
  } else if (zcode == 218 || zcode == 250) {
    if (inta >= 225 && inta <= 250) {
      inta += -32;
    }
    if (intb >= 225 && intb <= 250) {
      intb += -32;
    }
  }
  ret_val = inta == intb;
  return ret_val;
}
```