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

```asm
<stringcmp$link93>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  call   <strlen@plt>
  mov    %r12,%rdi
  mov    %rax,%r14
  call   <strlen@plt>
  cmp    %eax,%r14d
  jne    11b9 <stringcmp$link93+0x79>
  lea    -0x1(%r14),%r13d
  xor    %ebx,%ebx
  test   %r14d,%r14d
  jg     118c <stringcmp$link93+0x4c>
  pop    %rbx
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   (%rax)
  lea    0x1(%rbx),%rax
  cmp    %r13,%rbx
  je     1172 <stringcmp$link93+0x32>
  mov    %rax,%rbx
  xor    %eax,%eax
  call   <__ctype_toupper_loc@plt>
  movsbq 0x0(%rbp,%rbx,1),%rdx
  cltq
  mov    (%rax),%rax
  mov    (%rax,%rdx,4),%r14d
  xor    %eax,%eax
  call   <__ctype_toupper_loc@plt>
  movsbq (%r12,%rbx,1),%rdx
  cltq
  mov    (%rax),%rax
  cmp    %r14d,(%rax,%rdx,4)
  je     1180 <stringcmp$link93+0x40>
  pop    %rbx
  mov    $0x1,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

assistant: ```c
signed int stringcmp$link93(char *a$link91, char *b$link92) {
  signed int i$link94;
  signed int s$link96;
  signed int l$link97;
  unsigned long int return_value_strlen$1$link244;
  return_value_strlen$1$link244 = strlen(a$link91);
  s$link96 = (signed int)return_value_strlen$1$link244;
  unsigned long int return_value_strlen$2$link246;
  return_value_strlen$2$link246 = strlen(b$link92);
  l$link97 = (signed int)return_value_strlen$2$link246;
  if (!(s$link96 == l$link97))
    return 1;
  i$link94 = 0;
  signed int tmp_statement_expression$3$link247;
  signed int tmp_if_expr$5$link249;
  const signed int **return_value___ctype_toupper_loc$6$link250;
  signed int tmp_statement_expression$7;
  signed int tmp_if_expr$9;
  const signed int **return_value___ctype_toupper_loc$10;
  while (!(i$link94 >= s$link96)) {
    signed int __res$link99;
    if ((_Bool)0) {
      if ((_Bool)0) {
        signed int __c$link102 = (signed int)a$link91[(signed long int)i$link94];
        if (!(__c$link102 < -128)) {
          if (__c$link102 > 255)
            goto __CPROVER_DUMP_L3;
        } else {
        __CPROVER_DUMP_L3:;
          tmp_if_expr$5$link249 = __c$link102;
          goto __CPROVER_DUMP_L5;
        }
        const signed int **return_value___ctype_toupper_loc$4$link248;
        return_value___ctype_toupper_loc$4$link248 = __ctype_toupper_loc();
        tmp_if_expr$5$link249 = (*return_value___ctype_toupper_loc$4$link248)[(signed long int)__c$link102];
      __CPROVER_DUMP_L5:;
        __res$link99 = tmp_if_expr$5$link249;
      } else
        __res$link99 = toupper((signed int)a$link91[(signed long int)i$link94]);
    } else {
      return_value___ctype_toupper_loc$6$link250 = __ctype_toupper_loc();
      __res$link99 = (*return_value___ctype_toupper_loc$6$link250)[(signed long int)(signed int)a$link91[(signed long int)i$link94]];
    }
    tmp_statement_expression$3$link247 = __res$link99;
    signed int __res;
    if ((_Bool)0) {
      if ((_Bool)0) {
        signed int __c = (signed int)b$link92[(signed long int)i$link94];
        if (!(__c < -128)) {
          if (__c > 255)
            goto __CPROVER_DUMP_L10;
        } else {
        __CPROVER_DUMP_L10:;
          tmp_if_expr$9 = __c;
          goto __CPROVER_DUMP_L12;
        }
        const signed int **return_value___ctype_toupper_loc$8;
        return_value___ctype_toupper_loc$8 = __ctype_toupper_loc();
        tmp_if_expr$9 = (*return_value___ctype_toupper_loc$8)[(signed long int)__c];
      __CPROVER_DUMP_L12:;
        __res = tmp_if_expr$9;
      } else
        __res = toupper((signed int)b$link92[(signed long int)i$link94]);
    } else {
      return_value___ctype_toupper_loc$10 = __ctype_toupper_loc();
      __res = (*return_value___ctype_toupper_loc$10)[(signed long int)(signed int)b$link92[(signed long int)i$link94]];
    }
    tmp_statement_expression$7 = __res;
    if (!(tmp_statement_expression$3$link247 == tmp_statement_expression$7))
      return 1;
    i$link94 = i$link94 + 1;
  }
  return 0;
}
```