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

```asm
<test_collapsed>:
  endbr64
  push   %r14
  mov    $0x32,%ecx
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x330,%rsp
  movdqa D246(%rip),%xmm1
  movdqa D39(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x328(%rsp)
  xor    %eax,%eax
  mov    %rsp,%r14
  mov    $0xffffffffffffffff,%rax
  lea    0x190(%rsp),%rbp
  mov    %r14,%rdi
  lea    0x320(%rsp),%rdx
  rep stos %rax,%es:(%rdi)
  movaps %xmm1,0x10(%rsp)
  mov    $0x32,%ecx
  mov    %rbp,%rdi
  rep stos %rax,%es:(%rdi)
  movdqa D146(%rip),%xmm1
  movaps %xmm0,(%rsp)
  mov    %rbp,%rax
  movaps %xmm1,0x20(%rsp)
  movdqa D24(%rip),%xmm1
  movaps %xmm1,0x30(%rsp)
  movdqa D249(%rip),%xmm1
  movaps %xmm1,0x40(%rsp)
  movdqa D75(%rip),%xmm1
  movaps %xmm1,0x50(%rsp)
  movdqa D73(%rip),%xmm1
  movaps %xmm1,0x60(%rsp)
  movdqa D87(%rip),%xmm1
  movaps %xmm1,0x70(%rsp)
  movdqa D134(%rip),%xmm1
  movaps %xmm1,0x80(%rsp)
  movdqa D135(%rip),%xmm1
  movaps %xmm1,0x90(%rsp)
  movdqa D55(%rip),%xmm1
  movaps %xmm1,0xa0(%rsp)
  movdqa D270(%rip),%xmm1
  movdqa D190(%rip),%xmm2
  movaps %xmm1,0xb0(%rsp)
  movdqa D103(%rip),%xmm1
  movaps %xmm1,0xc0(%rsp)
  movdqa D13(%rip),%xmm1
  movaps %xmm1,0xd0(%rsp)
  movdqa D260(%rip),%xmm1
  movaps %xmm1,0xe0(%rsp)
  movdqa D6(%rip),%xmm1
  movaps %xmm1,0xf0(%rsp)
  movdqa D233(%rip),%xmm1
  movaps %xmm1,0x100(%rsp)
  movdqa D68(%rip),%xmm1
  movaps %xmm1,0x110(%rsp)
  movdqa D269(%rip),%xmm1
  movaps %xmm1,0x120(%rsp)
  movdqa D56(%rip),%xmm1
  movaps %xmm1,0x130(%rsp)
  movdqa D30(%rip),%xmm1
  movaps %xmm1,0x140(%rsp)
  movdqa D5(%rip),%xmm1
  movaps %xmm1,0x150(%rsp)
  movdqa D52(%rip),%xmm1
  movaps %xmm1,0x160(%rsp)
  movdqa D41(%rip),%xmm1
  movaps %xmm1,0x170(%rsp)
  movdqa D176(%rip),%xmm1
  movaps %xmm1,0x180(%rsp)
  nopl   0x0(%rax,%rax,1)
L49:
  movdqa %xmm0,%xmm1
  add    $0x10,%rax
  paddd  %xmm2,%xmm0
  movaps %xmm1,-0x10(%rax)
  cmp    %rax,%rdx
  jne    L49
  xor    %ebx,%ebx
  xor    %r12d,%r12d
  lea    D117(%rip),%r13
  jmp    L44
  nopl   0x0(%rax,%rax,1)
L33:
  add    $0x1,%rbx
  cmp    $0x64,%rbx
  je     L5
L44:
  mov    (%r14,%rbx,4),%edx
  mov    0x0(%rbp,%rbx,4),%ecx
  mov    %ebx,%esi
  cmp    %ecx,%edx
  je     L41
  add    $0x1,%r12d
  mov    %r13,%rdi
  xor    %eax,%eax
  mov    %r12d,%r8d
  call   <printf@plt>
L41:
  cmp    $0xb,%r12d
  jne    L33
  lea    D49(%rip),%rdi
  call   <puts@plt>
L5:
  mov    0x328(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L50
  add    $0x330,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L50:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D246
datatype: byte[16]
name: disassemble_data
arguments: data_label: D39
datatype: byte[16]
name: disassemble_data
arguments: data_label: D146
datatype: byte[16]
name: disassemble_data
arguments: data_label: D24
datatype: byte[16]
name: disassemble_data
arguments: data_label: D249
datatype: byte[16]
name: disassemble_data
arguments: data_label: D75
datatype: byte[16]
name: disassemble_data
arguments: data_label: D73
datatype: byte[16]
name: disassemble_data
arguments: data_label: D87
datatype: byte[16]
name: disassemble_data
arguments: data_label: D134
datatype: byte[16]
name: disassemble_data
arguments: data_label: D135
datatype: byte[16]
name: disassemble_data
arguments: data_label: D55
datatype: byte[16]
name: disassemble_data
arguments: data_label: D270
datatype: byte[16]
name: disassemble_data
arguments: data_label: D190
datatype: byte[16]
name: disassemble_data
arguments: data_label: D103
datatype: byte[16]
name: disassemble_data
arguments: data_label: D13
datatype: byte[16]
name: disassemble_data
arguments: data_label: D260
datatype: byte[16]
name: disassemble_data
arguments: data_label: D6
datatype: byte[16]
name: disassemble_data
arguments: data_label: D233
datatype: byte[16]
name: disassemble_data
arguments: data_label: D68
datatype: byte[16]
name: disassemble_data
arguments: data_label: D269
datatype: byte[16]
name: disassemble_data
arguments: data_label: D56
datatype: byte[16]
name: disassemble_data
arguments: data_label: D30
datatype: byte[16]
name: disassemble_data
arguments: data_label: D5
datatype: byte[16]
name: disassemble_data
arguments: data_label: D52
datatype: byte[16]
name: disassemble_data
arguments: data_label: D41
datatype: byte[16]
name: disassemble_data
arguments: data_label: D176
datatype: byte[16]
name: disassemble_data
arguments: data_label: D117
datatype: string
name: disassemble_data
arguments: data_label: D49
datatype: string

tool: {"D246": [0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

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

tool: {"D146": [0x08,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x0b,0x00,0x00,0x00]}

tool: {"D24": [0x0c,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0f,0x00,0x00,0x00]}

tool: {"D249": [0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x13,0x00,0x00,0x00]}

tool: {"D75": [0x14,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x17,0x00,0x00,0x00]}

tool: {"D73": [0x18,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x1b,0x00,0x00,0x00]}

tool: {"D87": [0x1c,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00]}

tool: {"D134": [0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x23,0x00,0x00,0x00]}

tool: {"D135": [0x24,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x27,0x00,0x00,0x00]}

tool: {"D55": [0x28,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x2b,0x00,0x00,0x00]}

tool: {"D270": [0x2c,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x2e,0x00,0x00,0x00,0x2f,0x00,0x00,0x00]}

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

tool: {"D103": [0x30,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x33,0x00,0x00,0x00]}

tool: {"D13": [0x34,0x00,0x00,0x00,0x35,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x37,0x00,0x00,0x00]}

tool: {"D260": [0x38,0x00,0x00,0x00,0x39,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x3b,0x00,0x00,0x00]}

tool: {"D6": [0x3c,0x00,0x00,0x00,0x3d,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x3f,0x00,0x00,0x00]}

tool: {"D233": [0x40,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x43,0x00,0x00,0x00]}

tool: {"D68": [0x44,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x47,0x00,0x00,0x00]}

tool: {"D269": [0x48,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x4a,0x00,0x00,0x00,0x4b,0x00,0x00,0x00]}

tool: {"D56": [0x4c,0x00,0x00,0x00,0x4d,0x00,0x00,0x00,0x4e,0x00,0x00,0x00,0x4f,0x00,0x00,0x00]}

tool: {"D30": [0x50,0x00,0x00,0x00,0x51,0x00,0x00,0x00,0x52,0x00,0x00,0x00,0x53,0x00,0x00,0x00]}

tool: {"D5": [0x54,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x57,0x00,0x00,0x00]}

tool: {"D52": [0x58,0x00,0x00,0x00,0x59,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x5b,0x00,0x00,0x00]}

tool: {"D41": [0x5c,0x00,0x00,0x00,0x5d,0x00,0x00,0x00,0x5e,0x00,0x00,0x00,0x5f,0x00,0x00,0x00]}

tool: {"D176": [0x60,0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x62,0x00,0x00,0x00,0x63,0x00,0x00,0x00]}

tool: D117: %d: a %d != %d (error %d)


tool: D49: abort

assistant: ```c
int test_collapsed() {
  int a[100], aa[100];
  int i, error = 0;
  for (i = 0; i < 100; i++)
    aa[i] = a[i] = -1;
#pragma omp target data map(tofrom : a [0:100])
  {
#pragma omp target parallel for simd collapse(2)
    for (int k = 0; k < 100 / 4; k++)
      for (int l = 0; l < 4; l++)
        a[k * 4 + l] = k * 4 + l;
  }
  for (i = 0; i < 100; i++)
    aa[i] = i;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i])
      printf("%d: a %d != %d (error %d)\n", i, a[i], aa[i], ++error);
    if (error > 10) {
      printf("abort\n");
      return error;
    }
  }
  return error;
}
```