user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<ILibToLower>:
  endbr64
  mov    %rdi,%rcx
  test   %esi,%esi
  jle    L183
  lea    0x1(%rdi),%rdi
  mov    %rdx,%rax
  sub    %rdi,%rax
  cmp    $0xe,%rax
  jbe    L79
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L79
  mov    %esi,%edi
  movdqa D17(%rip),%xmm6
  xor    %eax,%eax
  pxor   %xmm3,%xmm3
  shr    $0x4,%edi
  movdqa D1(%rip),%xmm5
  movdqa D26(%rip),%xmm4
  shl    $0x4,%rdi
  cs nopw 0x0(%rax,%rax,1)
L120:
  movdqu (%rcx,%rax,1),%xmm2
  movdqa %xmm2,%xmm0
  movdqa %xmm2,%xmm1
  paddb  %xmm6,%xmm0
  paddb  %xmm4,%xmm1
  psubusb %xmm5,%xmm0
  pcmpeqb %xmm3,%xmm0
  pand   %xmm0,%xmm1
  pandn  %xmm2,%xmm0
  por    %xmm1,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rdi,%rax
  jne    L120
  mov    %esi,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%sil
  je     L183
  mov    %eax,%r8d
  movzbl (%rcx,%r8,1),%edi
  lea    -0x41(%rdi),%r10d
  lea    0x20(%rdi),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%edi
  mov    %dil,(%rdx,%r8,1)
  lea    0x1(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x2(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x3(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x4(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x5(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x6(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x7(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x8(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0x9(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0xa(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0xb(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0xc(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  mov    %r8b,(%rdx,%rdi,1)
  lea    0xd(%rax),%edi
  cmp    %edi,%esi
  jle    L183
  movslq %edi,%rdi
  movzbl (%rcx,%rdi,1),%r8d
  lea    -0x41(%r8),%r10d
  lea    0x20(%r8),%r9d
  cmp    $0x1a,%r10b
  cmovb  %r9d,%r8d
  add    $0xe,%eax
  mov    %r8b,(%rdx,%rdi,1)
  cmp    %eax,%esi
  jle    L183
  cltq
  movzbl (%rcx,%rax,1),%ecx
  lea    -0x41(%rcx),%edi
  lea    0x20(%rcx),%esi
  cmp    $0x1a,%dil
  cmovb  %esi,%ecx
  mov    %cl,(%rdx,%rax,1)
  ret
  nopw   0x0(%rax,%rax,1)
L19:
  mov    %dil,(%rdx,%rax,1)
  add    $0x1,%rax
  cmp    %rax,%rsi
  jne    L81
L183:
  ret
  cs nopw 0x0(%rax,%rax,1)
L79:
  mov    %esi,%esi
  xor    %eax,%eax
L81:
  movzbl (%rcx,%rax,1),%edi
  lea    -0x41(%rdi),%r8d
  cmp    $0x19,%r8b
  ja     L19
  add    $0x20,%edi
  mov    %dil,(%rdx,%rax,1)
  add    $0x1,%rax
  cmp    %rsi,%rax
  jne    L81
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D17
datatype: byte[16]
name: unpack_data
arguments: data_tag: D1
datatype: byte[16]
name: unpack_data
arguments: data_tag: D26
datatype: byte[16]

tool: {"D17": [0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf]}

tool: {"D1": [0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19]}

tool: {"D26": [0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20]}

assistant: ```c
void ILibToLower(const char *in, int inLength, char *out) {
  int i;
  for (i = 0; i < inLength; ++i) {
    if (in[i] >= 65 && in[i] <= 90) {
      out[i] = in[i] + 32;
    } else {
      out[i] = in[i];
    }
  }
}
```