user: Translate the below assembly code into C programming language:

```asm
<init>:
  endbr64
  lea    0x1(%rdi),%eax
  pxor   %xmm8,%xmm8
  push   %r15
  cvtsi2sd %eax,%xmm8
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %edi,%ebp
  mulsd  %xmm0,%xmm8
  push   %rbx
  test   %ecx,%ecx
  jle    L118
  lea    -0x1(%rdx),%eax
  mov    %edx,%ebx
  xor    %r11d,%r11d
  mov    %r8d,%r10d
  mov    %eax,-0x1c(%rsp)
  mov    %edx,%eax
  and    $0xfffffffc,%ebx
  movapd %xmm8,%xmm2
  shr    $0x2,%eax
  test   %edx,%edx
  movdqa D3(%rip),%xmm7
  mov    %edx,%edi
  cmovns %edx,%r11d
  lea    -0x1(%rax),%r14d
  mov    %ecx,%r12d
  xor    %r9d,%r9d
  add    $0x1,%r14
  movdqa D10(%rip),%xmm6
  unpcklpd %xmm2,%xmm2
  sub    %r11d,%r10d
  movslq %r11d,%rax
  shl    $0x5,%r14
  mov    %rax,-0x18(%rsp)
  mov    %r10d,%eax
  shr    %eax
  lea    -0x1(%rax),%r13d
  mov    %r10d,%eax
  and    $0xfffffffe,%eax
  add    $0x1,%r13
  mov    %eax,-0x10(%rsp)
  add    %r11d,%eax
  shl    $0x4,%r13
  mov    %eax,-0xc(%rsp)
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L0:
  test   %edi,%edi
  jle    L77
  cmpl   $0x2,-0x1c(%rsp)
  jbe    L98
  movslq %eax,%rdx
  movd   %eax,%xmm5
  movdqa D26(%rip),%xmm1
  lea    (%rsi,%rdx,8),%rdx
  pshufd $0x0,%xmm5,%xmm5
  lea    (%r14,%rdx,1),%rcx
  nopw   0x0(%rax,%rax,1)
L76:
  movdqa %xmm1,%xmm0
  movapd %xmm2,%xmm3
  paddd  %xmm7,%xmm1
  add    $0x20,%rdx
  paddd  %xmm5,%xmm0
  paddd  %xmm6,%xmm0
  cvtdq2pd %xmm0,%xmm4
  divpd  %xmm4,%xmm3
  pshufd $0xee,%xmm0,%xmm0
  cvtdq2pd %xmm0,%xmm0
  movups %xmm3,-0x20(%rdx)
  movapd %xmm2,%xmm3
  divpd  %xmm0,%xmm3
  movups %xmm3,-0x10(%rdx)
  cmp    %rcx,%rdx
  jne    L76
  mov    %ebx,%edx
  cmp    %ebx,%edi
  je     L77
L119:
  lea    (%rax,%rdx,1),%ecx
  pxor   %xmm1,%xmm1
  movapd %xmm8,%xmm0
  movslq %ecx,%r15
  add    $0x1,%ecx
  cvtsi2sd %ecx,%xmm1
  lea    0x1(%rdx),%ecx
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%r15,8)
  cmp    %ecx,%edi
  jle    L77
  add    %eax,%ecx
  pxor   %xmm1,%xmm1
  movapd %xmm8,%xmm0
  add    $0x2,%edx
  movslq %ecx,%r15
  add    $0x1,%ecx
  cvtsi2sd %ecx,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%r15,8)
  cmp    %edx,%edi
  jle    L77
  add    %eax,%edx
  pxor   %xmm1,%xmm1
  movapd %xmm8,%xmm0
  movslq %edx,%rcx
  add    $0x1,%edx
  cvtsi2sd %edx,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rcx,8)
L77:
  cmp    %r11d,%r8d
  jle    L8
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebp,%xmm0
  cmp    $0x1,%r10d
  je     L30
  movslq %eax,%rdx
  add    -0x18(%rsp),%rdx
  movapd %xmm0,%xmm1
  lea    (%rsi,%rdx,8),%rdx
  unpcklpd %xmm1,%xmm1
  lea    0x0(%r13,%rdx,1),%rcx
  nopl   0x0(%rax,%rax,1)
L86:
  movups %xmm1,(%rdx)
  add    $0x10,%rdx
  cmp    %rdx,%rcx
  jne    L86
  cmp    %r10d,-0x10(%rsp)
  je     L8
  mov    -0xc(%rsp),%edx
L88:
  add    %eax,%edx
  movslq %edx,%rdx
  movsd  %xmm0,(%rsi,%rdx,8)
L8:
  add    $0x1,%r9d
  add    %r8d,%eax
  cmp    %r9d,%r12d
  jne    L0
L118:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L30:
  mov    %r11d,%edx
  jmp    L88
L98:
  xor    %edx,%edx
  jmp    L119
```

tool_calls: name: read_data
arguments: tag: D3
type_guessed: byte[16]
name: read_data
arguments: tag: D10
type_guessed: byte[16]
name: read_data
arguments: tag: D26
type_guessed: byte[16]

tool: {"D3": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

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

tool: {"D26": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

assistant: ```c
void init(int seed, double *dst, int nrows, int ncols, int ld, double scale) {
  const double seed1 = scale * (seed + 1);
  int i;
  for (i = 0; i < ncols; ++i) {
    int j = 0;
    for (; j < nrows; ++j) {
      const int k = i * ld + j;
      dst[k] = (double)(seed1 / (k + 1));
    }
    for (; j < ld; ++j) {
      const int k = i * ld + j;
      dst[k] = (double)seed;
    }
  }
}
```