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

```asm
<getIP>:
  endbr64
  movsbl (%rdi),%ecx
  xor    %eax,%eax
  mov    %rdi,%rdx
  lea    D22(%rip),%r8
  cmp    $0x2c,%cl
  sete   %al
  xor    %esi,%esi
  cmpb   $0x2c,0x1(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x2(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x3(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x4(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x5(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x6(%rdi)
  sete   %sil
  add    %esi,%eax
  xor    %esi,%esi
  cmpb   $0x2c,0x7(%rdi)
  sete   %sil
  add    %esi,%eax
  cmp    $0x3,%eax
  je     L77
L47:
  mov    %r8,%rax
  ret
  cs nopw 0x0(%rax,%rax,1)
L77:
  cmp    $0x2c,%cl
  je     L74
  mov    D22(%rip),%esi
  lea    (%rsi,%rsi,4),%esi
  lea    -0x30(%rcx,%rsi,2),%ecx
  mov    %ecx,D8(%rip)
  movsbl 0x1(%rdx),%esi
  cmp    $0x2c,%sil
  je     L128
L76:
  mov    $0x3,%ecx
  lea    D8(%rip),%r8
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
  movsbl 0x2(%rdx),%esi
  cmp    $0x2c,%sil
  je     L5
L117:
  mov    $0x3,%ecx
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
  movsbl 0x3(%rdx),%esi
  cmp    $0x2c,%sil
  je     L46
L120:
  mov    $0x3,%ecx
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
  movsbl 0x4(%rdx),%esi
  cmp    $0x2c,%sil
  je     L97
L23:
  mov    $0x3,%ecx
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
  movsbl 0x5(%rdx),%esi
  cmp    $0x2c,%sil
  je     L108
L122:
  mov    $0x3,%ecx
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
  movsbl 0x6(%rdx),%esi
  cmp    $0x2c,%sil
  je     L4
L106:
  mov    $0x3,%ecx
  sub    %eax,%ecx
  movslq %ecx,%rcx
  mov    (%r8,%rcx,4),%edi
  lea    (%rdi,%rdi,4),%edi
  lea    -0x30(%rsi,%rdi,2),%esi
  mov    %esi,(%r8,%rcx,4)
L126:
  movsbl 0x7(%rdx),%ecx
  cmp    $0x2c,%cl
  je     L47
  mov    $0x3,%edx
  sub    %eax,%edx
  movslq %edx,%rax
  mov    (%r8,%rax,4),%edx
  lea    (%rdx,%rdx,4),%edx
  lea    -0x30(%rcx,%rdx,2),%edx
  mov    %edx,(%r8,%rax,4)
  mov    %r8,%rax
  ret
  nopw   0x0(%rax,%rax,1)
L74:
  movsbl 0x1(%rdx),%esi
  mov    $0x2,%eax
  cmp    $0x2c,%sil
  jne    L76
L128:
  movsbl 0x2(%rdx),%esi
  sub    $0x1,%eax
  lea    D8(%rip),%r8
  cmp    $0x2c,%sil
  jne    L117
L5:
  movsbl 0x3(%rdx),%esi
  sub    $0x1,%eax
  cmp    $0x2c,%sil
  jne    L120
L46:
  movsbl 0x4(%rdx),%esi
  sub    $0x1,%eax
  cmp    $0x2c,%sil
  jne    L23
L97:
  movsbl 0x5(%rdx),%esi
  sub    $0x1,%eax
  cmp    $0x2c,%sil
  jne    L122
L108:
  movsbl 0x6(%rdx),%esi
  sub    $0x1,%eax
  cmp    $0x2c,%sil
  jne    L106
L4:
  sub    $0x1,%eax
  jmp    L126
```

assistant: ```c
int *getIP(char *strIP) {
  int i, j;
  int commaCount = 0;
  static int pBytes[] = {0, 0, 0, 0};
  for (i = 0; i < sizeof(strIP); i++)
    if (strIP[i] == ',') {
      commaCount++;
    }
  if (commaCount == 3)
    for (j = 0; j < sizeof(strIP); j++) {
      if (strIP[j] != ',')
        pBytes[3 - commaCount] = pBytes[3 - commaCount] * 10 + (strIP[j] - '0');
      else
        commaCount--;
    }
  return pBytes;
}
```