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

```asm
<mod_ssi_parse_ssi_stmt_offlen>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%r13
  mov    %rsi,%r14
  mov    %edx,%r15d
  movl   $0x5,(%rdi)
  lea    0x5(%rsi),%rax
  mov    %rax,%rbx
  mov    $0x5,%r12d
  sub    %eax,%r12d
L120:
  lea    (%r12,%rbx,1),%ebp
  mov    %rbx,0x8(%rsp)
  movsbl (%rbx),%edi
  call   <light_isalpha@plt>
  add    $0x1,%rbx
  test   %rax,%rax
  jne    L120
  mov    %ebp,%eax
  sub    0x0(%r13),%eax
  mov    %eax,0x4(%r13)
  je     L290
  lea    0x3(%rbp),%edx
  mov    $0x2,%eax
  cmp    %r15d,%edx
  je     L53
  mov    0x8(%rsp),%rax
  movsbl (%rax),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L141
  movslq %ebp,%rax
  lea    0x1(%r14,%rax,1),%rbx
L104:
  mov    %ebp,%r12d
  add    $0x1,%ebp
  movsbl (%rbx),%edi
  call   <isspace@plt>
  add    $0x1,%rbx
  test   %rax,%rax
  jne    L104
  add    $0x4,%r12d
  cmp    %r15d,%r12d
  je     L61
  mov    %ebp,0x8(%r13)
  movslq %ebp,%rax
  add    %r14,%rax
  mov    %rax,%rbx
  sub    %eax,%ebp
L156:
  lea    0x0(%rbp,%rbx,1),%r12d
  mov    %rbx,0x8(%rsp)
  movsbl (%rbx),%edi
  call   <light_isalpha@plt>
  add    $0x1,%rbx
  test   %rax,%rax
  jne    L156
  mov    %r12d,%eax
  sub    0x8(%r13),%eax
  mov    %eax,0xc(%r13)
  je     L194
  add    $0x1,%r12d
  mov    0x8(%rsp),%rax
  cmpb   $0x3d,(%rax)
  jne    L107
  mov    %r12d,0x10(%r13)
  mov    %r15d,%esi
  sub    %r12d,%esi
  sub    $0x3,%esi
  movslq %r12d,%rdi
  add    %r14,%rdi
  call   <mod_ssi_parse_ssi_stmt_value@plt>
  mov    %eax,%ebx
  mov    %eax,0x14(%r13)
  test   %eax,%eax
  je     L318
  add    %r12d,%ebx
  lea    0x3(%rbx),%edx
  mov    $0x6,%eax
  cmp    %r15d,%edx
  je     L53
  movslq %ebx,%rbp
  movsbl (%r14,%rbp,1),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L119
  lea    0x1(%r14,%rbp,1),%rbp
L97:
  mov    %ebx,%r12d
  add    $0x1,%ebx
  movsbl 0x0(%rbp),%edi
  call   <isspace@plt>
  add    $0x1,%rbp
  test   %rax,%rax
  jne    L97
  add    $0x4,%r12d
  cmp    %r15d,%r12d
  je     L6
  mov    %ebx,0x18(%r13)
  movslq %ebx,%rax
  add    %r14,%rax
  mov    %rax,%rbp
  sub    %eax,%ebx
L88:
  lea    (%rbx,%rbp,1),%r12d
  mov    %rbp,0x8(%rsp)
  movsbl 0x0(%rbp),%edi
  call   <light_isalpha@plt>
  add    $0x1,%rbp
  test   %rax,%rax
  jne    L88
  mov    %r12d,%eax
  sub    0x18(%r13),%eax
  mov    %eax,0x1c(%r13)
  je     L22
  add    $0x1,%r12d
  mov    0x8(%rsp),%rax
  cmpb   $0x3d,(%rax)
  jne    L143
  mov    %r12d,0x20(%r13)
  mov    %r15d,%esi
  sub    %r12d,%esi
  sub    $0x3,%esi
  movslq %r12d,%rdi
  add    %r14,%rdi
  call   <mod_ssi_parse_ssi_stmt_value@plt>
  mov    %eax,0x24(%r13)
  test   %eax,%eax
  je     L8
  lea    (%rax,%r12,1),%ebx
  lea    0x3(%rbx),%edx
  mov    $0xa,%eax
  cmp    %r15d,%edx
  je     L53
  movslq %ebx,%rbx
  movsbl (%r14,%rbx,1),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L159
L256:
  mov    %ebx,%ebp
  movsbl 0x1(%r14,%rbx,1),%edi
  call   <isspace@plt>
  add    $0x1,%rbx
  test   %rax,%rax
  jne    L256
  add    $0x4,%ebp
  cmp    %r15d,%ebp
  mov    $0xffffffff,%eax
  mov    $0xa,%edx
  cmove  %edx,%eax
L53:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L290:
  mov    $0xffffffff,%eax
  jmp    L53
L141:
  mov    $0xffffffff,%eax
  jmp    L53
L61:
  mov    $0x2,%eax
  jmp    L53
L194:
  mov    $0xffffffff,%eax
  jmp    L53
L107:
  mov    $0xffffffff,%eax
  jmp    L53
L318:
  mov    $0xffffffff,%eax
  jmp    L53
L119:
  mov    $0xffffffff,%eax
  jmp    L53
L6:
  mov    $0x6,%eax
  jmp    L53
L22:
  mov    $0xffffffff,%eax
  jmp    L53
L143:
  mov    $0xffffffff,%eax
  jmp    L53
L8:
  mov    $0xffffffff,%eax
  jmp    L53
L159:
  mov    $0xffffffff,%eax
  jmp    L53
```

assistant: ```c
int mod_ssi_parse_ssi_stmt_offlen(int o[10], const char *const s, const int len) {
  int n = 5;
  o[0] = n;
  for (; light_isalpha(s[n]); ++n)
    ;
  o[1] = n - o[0];
  if (0 == o[1])
    return -1;
  if (n + 3 == len)
    return 2;
  if (!isspace(s[n]))
    return -1;
  do {
    ++n;
  } while (isspace(s[n]));
  if (n + 3 == len)
    return 2;
  o[2] = n;
  for (; light_isalpha(s[n]); ++n)
    ;
  o[3] = n - o[2];
  if (0 == o[3] || s[n++] != '=')
    return -1;
  o[4] = n;
  o[5] = mod_ssi_parse_ssi_stmt_value(s + n, len - n - 3);
  if (0 == o[5])
    return -1;
  n += o[5];
  if (n + 3 == len)
    return 6;
  if (!isspace(s[n]))
    return -1;
  do {
    ++n;
  } while (isspace(s[n]));
  if (n + 3 == len)
    return 6;
  o[6] = n;
  for (; light_isalpha(s[n]); ++n)
    ;
  o[7] = n - o[6];
  if (0 == o[7] || s[n++] != '=')
    return -1;
  o[8] = n;
  o[9] = mod_ssi_parse_ssi_stmt_value(s + n, len - n - 3);
  if (0 == o[9])
    return -1;
  n += o[9];
  if (n + 3 == len)
    return 10;
  if (!isspace(s[n]))
    return -1;
  do {
    ++n;
  } while (isspace(s[n]));
  if (n + 3 == len)
    return 10;
  return -1;
}
```