user: Converte this assembly snippet into its equivalent C code:

```asm
<isPhredOffset>:
  endbr64
  mov    %rdi,%rcx
  mov    %esi,%edx
  test   %esi,%esi
  jle    L168
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L137
  pxor   %xmm9,%xmm9
  shr    $0x4,%esi
  mov    %rdi,%rax
  pxor   %xmm7,%xmm7
  movdqa D10(%rip),%xmm3
  sub    $0x1,%esi
  pxor   %xmm6,%xmm6
  movdqa D19(%rip),%xmm2
  shl    $0x4,%rsi
  movdqa D27(%rip),%xmm5
  movdqa %xmm9,%xmm4
  lea    0x10(%rdi,%rsi,1),%rsi
  psubd  %xmm3,%xmm2
  nopl   (%rax)
L172:
  movdqu (%rax),%xmm0
  movdqa %xmm7,%xmm8
  movdqa %xmm6,%xmm10
  add    $0x10,%rax
  pcmpgtb %xmm0,%xmm8
  movdqa %xmm0,%xmm1
  punpcklbw %xmm8,%xmm1
  punpckhbw %xmm8,%xmm0
  pcmpgtw %xmm1,%xmm10
  movdqa %xmm1,%xmm8
  punpcklwd %xmm10,%xmm8
  punpckhwd %xmm10,%xmm1
  paddd  %xmm5,%xmm8
  paddd  %xmm5,%xmm1
  psubd  %xmm3,%xmm8
  psubd  %xmm3,%xmm1
  pcmpgtd %xmm2,%xmm8
  pcmpgtd %xmm2,%xmm1
  pcmpeqd %xmm4,%xmm8
  pcmpeqd %xmm4,%xmm1
  psubd  %xmm8,%xmm9
  movdqa %xmm6,%xmm8
  pcmpgtw %xmm0,%xmm8
  psubd  %xmm1,%xmm9
  movdqa %xmm0,%xmm1
  punpcklwd %xmm8,%xmm1
  punpckhwd %xmm8,%xmm0
  paddd  %xmm5,%xmm1
  paddd  %xmm5,%xmm0
  psubd  %xmm3,%xmm1
  psubd  %xmm3,%xmm0
  pcmpgtd %xmm2,%xmm1
  pcmpgtd %xmm2,%xmm0
  pcmpeqd %xmm4,%xmm1
  pcmpeqd %xmm4,%xmm0
  psubd  %xmm1,%xmm9
  psubd  %xmm0,%xmm9
  cmp    %rsi,%rax
  jne    L172
  movdqa %xmm9,%xmm0
  mov    %edx,%esi
  psrldq $0x8,%xmm0
  and    $0xfffffff0,%esi
  paddd  %xmm0,%xmm9
  movdqa %xmm9,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm9
  movd   %xmm9,%eax
  test   $0xf,%dl
  je     L97
L186:
  movslq %esi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x1(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edx,%edi
  jge    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x2(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x3(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x4(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x5(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x6(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x7(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x8(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0x9(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0xa(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0xb(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0xc(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  lea    0xd(%rsi),%edi
  adc    $0x0,%eax
  cmp    %edi,%edx
  jle    L97
  movslq %edi,%rdi
  movsbl (%rcx,%rdi,1),%edi
  sub    $0x22,%edi
  cmp    $0x27,%edi
  adc    $0x0,%eax
  add    $0xe,%esi
  cmp    %esi,%edx
  jle    L97
  movslq %esi,%rsi
  movsbl (%rcx,%rsi,1),%ecx
  sub    $0x22,%ecx
  cmp    $0x27,%ecx
  adc    $0x0,%eax
L97:
  cmp    %eax,%edx
  sete   %al
  movzbl %al,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L168:
  xor    %eax,%eax
  cmp    %eax,%edx
  sete   %al
  movzbl %al,%eax
  ret
L137:
  xor    %eax,%eax
  xor    %esi,%esi
  jmp    L186
```

tool_calls: name: retrieve_data
arguments: label: D10
data_type: byte[16]
name: retrieve_data
arguments: label: D19
data_type: byte[16]
name: retrieve_data
arguments: label: D27
data_type: byte[16]

tool: {"D10": [0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80]}

tool: {"D19": [0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x26,0x00,0x00,0x00]}

tool: {"D27": [0xde,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xde,0xff,0xff,0xff]}

assistant: ```c
int isPhredOffset(char *src, int n) {
  int i, okay, s;
  okay = 0;
  for (i = 0; i < n; i++) {
    s = src[i] - 33;
    if (s < 40 && s > 0) {
      okay++;
    }
  }
  return okay == n;
}
```