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

```asm
<str_case_blind_compare_sub_>:
  endbr64
  mov    %rsi,%r9
  push   %rbp
  mov    %rdx,%rsi
  push   %rbx
  mov    (%r9),%ebx
  mov    (%rcx),%r11d
  movl   $0x0,(%r8)
  cmp    %r11d,%ebx
  jl     L173
  movslq %r11d,%rbp
  xor    %ecx,%ecx
  test   %r11d,%r11d
  jle    L128
  nopl   0x0(%rax)
L139:
  movzbl (%rdi,%rcx,1),%edx
  movzbl (%rsi,%rcx,1),%eax
  cmp    %al,%dl
  je     L124
  lea    -0x61(%rdx),%r10d
  mov    %edx,%r9d
  and    $0xffffffdf,%r9d
  cmp    $0x1a,%r10b
  lea    -0x61(%rax),%r10d
  cmovb  %r9d,%edx
  mov    %eax,%r9d
  and    $0xffffffdf,%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%eax
  cmp    %al,%dl
  jl     L9
  jg     L97
L124:
  add    $0x1,%rcx
  cmp    %rbp,%rcx
  jne    L139
L128:
  cmp    %r11d,%ebx
  jle    L110
  movslq %r11d,%rdx
  sub    %r11d,%ebx
  lea    (%rdi,%rdx,1),%rax
  lea    -0x1(%rbx),%ecx
  lea    0x1(%rdi,%rdx,1),%rdx
  add    %rcx,%rdx
  jmp    L151
  nopl   0x0(%rax)
L168:
  add    $0x1,%rax
  cmp    %rdx,%rax
  je     L110
L151:
  cmpb   $0x20,(%rax)
  je     L168
L97:
  movl   $0x1,(%r8)
L110:
  pop    %rbx
  pop    %rbp
  ret
L173:
  movslq %ebx,%rbp
  xor    %ecx,%ecx
  test   %ebx,%ebx
  jle    L114
  nopl   0x0(%rax)
L113:
  movzbl (%rdi,%rcx,1),%edx
  movzbl (%rsi,%rcx,1),%eax
  cmp    %al,%dl
  je     L149
  lea    -0x61(%rdx),%r10d
  mov    %edx,%r9d
  and    $0xffffffdf,%r9d
  cmp    $0x1a,%r10b
  lea    -0x61(%rax),%r10d
  cmovb  %r9d,%edx
  mov    %eax,%r9d
  and    $0xffffffdf,%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%eax
  cmp    %al,%dl
  jl     L9
  jg     L97
L149:
  add    $0x1,%rcx
  cmp    %rcx,%rbp
  jne    L113
L114:
  sub    $0x1,%r11d
  lea    (%rsi,%rbp,1),%rax
  lea    0x1(%rsi,%rbp,1),%rdx
  sub    %ebx,%r11d
  add    %r11,%rdx
  cmpb   $0x20,(%rax)
  jne    L9
  nopl   0x0(%rax)
L67:
  add    $0x1,%rax
  cmp    %rax,%rdx
  je     L110
  cmpb   $0x20,(%rax)
  je     L67
L9:
  pop    %rbx
  pop    %rbp
  movl   $0xffffffff,(%r8)
  ret
```

assistant: ```c
void str_case_blind_compare_sub_(char *test_name, int *len_test, char *model_name, int *len_model, int *result) {
  int i, ltest = *len_test, lmod = *len_model;
  char c1, c2;
  *result = 0;
  if (ltest < lmod) {
    for (i = 0; i < ltest; i++) {
      c1 = test_name[i];
      c2 = model_name[i];
      if (c1 != c2) {
        if (c1 >= 'a' && c1 <= 'z') {
          c1 &= 0xDF;
        }
        if (c2 >= 'a' && c2 <= 'z') {
          c2 &= 0xDF;
        }
        if (c1 < c2) {
          *result = -1;
          return;
        } else if (c1 > c2) {
          *result = 1;
          return;
        }
      }
    }
    for (i = ltest; i < lmod; i++) {
      if (model_name[i] != ' ') {
        *result = -1;
        return;
      }
    }
  } else {
    for (i = 0; i < lmod; i++) {
      c1 = test_name[i];
      c2 = model_name[i];
      if (c1 != c2) {
        if (c1 >= 'a' && c1 <= 'z') {
          c1 &= 0xDF;
        }
        if (c2 >= 'a' && c2 <= 'z') {
          c2 &= 0xDF;
        }
        if (c1 < c2) {
          *result = -1;
          return;
        } else if (c1 > c2) {
          *result = 1;
          return;
        }
      }
    }
    for (i = lmod; i < ltest; i++) {
      if (test_name[i] != ' ') {
        *result = 1;
        return;
      }
    }
  }
  return;
}
```