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

```asm
<modify>:
  endbr64
  sub    $0x48,%rsp
  mov    (%rdi),%r8d
  pcmpeqd %xmm0,%xmm0
  mov    %rdi,%rdx
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  movl   $0xffffffff,0x10(%rsp)
  movl   $0xffffffff,0x30(%rsp)
  movaps %xmm0,(%rsp)
  movaps %xmm0,0x20(%rsp)
  test   %r8d,%r8d
  jne    L171
  movl   $0x0,(%rsp)
  mov    $0x1,%eax
  movl   $0x0,0x20(%rsp)
L171:
  mov    0x4(%rdx),%edi
  test   %edi,%edi
  jne    L133
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x1,(%rsp,%rcx,4)
  movl   $0x0,0x20(%rsp,%rcx,4)
L133:
  mov    0x8(%rdx),%esi
  test   %esi,%esi
  jne    L229
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x2,(%rsp,%rcx,4)
  movl   $0x0,0x20(%rsp,%rcx,4)
L229:
  mov    0xc(%rdx),%ecx
  test   %ecx,%ecx
  jne    L215
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x3,(%rsp,%rcx,4)
  movl   $0x0,0x20(%rsp,%rcx,4)
L215:
  mov    0x10(%rdx),%r11d
  test   %r11d,%r11d
  jne    L59
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x4,(%rsp,%rcx,4)
  movl   $0x0,0x20(%rsp,%rcx,4)
L59:
  mov    0x14(%rdx),%r10d
  test   %r10d,%r10d
  jne    L25
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x0,(%rsp,%rcx,4)
  movl   $0x1,0x20(%rsp,%rcx,4)
L25:
  mov    0x18(%rdx),%r9d
  test   %r9d,%r9d
  jne    L188
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x1,(%rsp,%rcx,4)
  movl   $0x1,0x20(%rsp,%rcx,4)
L188:
  mov    0x1c(%rdx),%r8d
  test   %r8d,%r8d
  jne    L21
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x2,(%rsp,%rcx,4)
  movl   $0x1,0x20(%rsp,%rcx,4)
L21:
  mov    0x20(%rdx),%edi
  test   %edi,%edi
  jne    L200
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x3,(%rsp,%rcx,4)
  movl   $0x1,0x20(%rsp,%rcx,4)
L200:
  mov    0x24(%rdx),%esi
  test   %esi,%esi
  jne    L74
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x4,(%rsp,%rcx,4)
  movl   $0x1,0x20(%rsp,%rcx,4)
L74:
  mov    0x28(%rdx),%ecx
  test   %ecx,%ecx
  jne    L159
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x0,(%rsp,%rcx,4)
  movl   $0x2,0x20(%rsp,%rcx,4)
L159:
  mov    0x2c(%rdx),%r11d
  test   %r11d,%r11d
  jne    L275
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x1,(%rsp,%rcx,4)
  movl   $0x2,0x20(%rsp,%rcx,4)
L275:
  mov    0x30(%rdx),%r10d
  test   %r10d,%r10d
  jne    L348
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x2,(%rsp,%rcx,4)
  movl   $0x2,0x20(%rsp,%rcx,4)
L348:
  mov    0x34(%rdx),%r9d
  test   %r9d,%r9d
  jne    L257
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x3,(%rsp,%rcx,4)
  movl   $0x2,0x20(%rsp,%rcx,4)
L257:
  mov    0x38(%rdx),%r8d
  test   %r8d,%r8d
  jne    L146
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x4,(%rsp,%rcx,4)
  movl   $0x2,0x20(%rsp,%rcx,4)
L146:
  mov    0x3c(%rdx),%edi
  test   %edi,%edi
  jne    L274
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x0,(%rsp,%rcx,4)
  movl   $0x3,0x20(%rsp,%rcx,4)
L274:
  mov    0x40(%rdx),%esi
  test   %esi,%esi
  jne    L278
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x1,(%rsp,%rcx,4)
  movl   $0x3,0x20(%rsp,%rcx,4)
L278:
  mov    0x44(%rdx),%ecx
  test   %ecx,%ecx
  jne    L235
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x2,(%rsp,%rcx,4)
  movl   $0x3,0x20(%rsp,%rcx,4)
L235:
  mov    0x48(%rdx),%r11d
  test   %r11d,%r11d
  jne    L127
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x3,(%rsp,%rcx,4)
  movl   $0x3,0x20(%rsp,%rcx,4)
L127:
  mov    0x4c(%rdx),%r10d
  test   %r10d,%r10d
  jne    L255
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x4,(%rsp,%rcx,4)
  movl   $0x3,0x20(%rsp,%rcx,4)
L255:
  mov    0x50(%rdx),%r9d
  test   %r9d,%r9d
  jne    L203
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x0,(%rsp,%rcx,4)
  movl   $0x4,0x20(%rsp,%rcx,4)
L203:
  mov    0x54(%rdx),%r8d
  test   %r8d,%r8d
  jne    L246
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x1,(%rsp,%rcx,4)
  movl   $0x4,0x20(%rsp,%rcx,4)
L246:
  mov    0x58(%rdx),%edi
  test   %edi,%edi
  jne    L8
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x2,(%rsp,%rcx,4)
  movl   $0x4,0x20(%rsp,%rcx,4)
L8:
  mov    0x5c(%rdx),%esi
  test   %esi,%esi
  jne    L204
  movslq %eax,%rcx
  add    $0x1,%eax
  movl   $0x3,(%rsp,%rcx,4)
  movl   $0x4,0x20(%rsp,%rcx,4)
L204:
  mov    0x60(%rdx),%ecx
  test   %ecx,%ecx
  jne    L145
  cltq
  movl   $0x4,(%rsp,%rax,4)
  movl   $0x4,0x20(%rsp,%rax,4)
L145:
  movslq (%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L349
  lea    (%rax,%rax,4),%rax
  pxor   %xmm0,%xmm0
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,0x10(%rax)
  movups %xmm0,(%rax)
  movslq 0x4(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L349
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,0x10(%rax)
  movups %xmm0,(%rax)
  movslq 0x8(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L349
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,0x10(%rax)
  movups %xmm0,(%rax)
  movslq 0xc(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L349
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,0x10(%rax)
  movups %xmm0,(%rax)
  movslq 0x10(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L349
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,0x10(%rax)
  movups %xmm0,(%rax)
L349:
  movslq 0x20(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L109
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,(%rax)
  movl   $0x0,0x14(%rax)
  movl   $0x0,0x28(%rax)
  movl   $0x0,0x3c(%rax)
  movl   $0x0,0x50(%rax)
  movslq 0x24(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L109
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,(%rax)
  movl   $0x0,0x14(%rax)
  movl   $0x0,0x28(%rax)
  movl   $0x0,0x3c(%rax)
  movl   $0x0,0x50(%rax)
  movslq 0x28(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L109
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,(%rax)
  movl   $0x0,0x14(%rax)
  movl   $0x0,0x28(%rax)
  movl   $0x0,0x3c(%rax)
  movl   $0x0,0x50(%rax)
  movslq 0x2c(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L109
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,(%rax)
  movl   $0x0,0x14(%rax)
  movl   $0x0,0x28(%rax)
  movl   $0x0,0x3c(%rax)
  movl   $0x0,0x50(%rax)
  movslq 0x30(%rsp),%rax
  cmp    $0xffffffff,%eax
  je     L109
  lea    (%rdx,%rax,4),%rax
  movl   $0x0,(%rax)
  movl   $0x0,0x14(%rax)
  movl   $0x0,0x28(%rax)
  movl   $0x0,0x3c(%rax)
  movl   $0x0,0x50(%rax)
L109:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L242
  add    $0x48,%rsp
  ret
L242:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void modify(int arr[5][5]) {
  int index = 0;
  int rows[5];
  int cols[5];
  for (int i = 0; i < 5; i++)
    rows[i] = -1;
  for (int i = 0; i < 5; i++)
    cols[i] = -1;
  for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
      if (arr[i][j] == 0) {
        rows[index] = j;
        cols[index] = i;
        index++;
      }
    }
  }
  for (int i = 0; i < 5; i++) {
    if (rows[i] != -1) {
      for (int j = 0; j < 5; j++)
        arr[rows[i]][j] = 0;
    } else
      break;
  }
  for (int i = 0; i < 5; i++) {
    if (cols[i] != -1) {
      for (int j = 0; j < 5; j++)
        arr[j][cols[i]] = 0;
    } else
      break;
  }
}
```