user: What would the C source look like for the assembly code provided here:

```asm
<stringcmp$link93>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %eax,-0x24(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %eax,-0x28(%rbp)
  mov    -0x24(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  je     118d <stringcmp$link93+0x54>
  mov    $0x1,%eax
  jmp    1237 <stringcmp$link93+0xfe>
  movl   $0x0,-0x34(%rbp)
  jmp    1226 <stringcmp$link93+0xed>
  mov    $0x0,%eax
  call   <__ctype_toupper_loc@plt>
  cltq
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x48(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbq %al,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  mov    $0x0,%eax
  call   <__ctype_toupper_loc@plt>
  cltq
  mov    %rax,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x50(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbq %al,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x2c(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  je     1222 <stringcmp$link93+0xe9>
  mov    $0x1,%eax
  jmp    1237 <stringcmp$link93+0xfe>
  addl   $0x1,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     1199 <stringcmp$link93+0x60>
  mov    $0x0,%eax
  leave
  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;
}
```