void CondIni(double *masas, double *posX, double *posY, double *posZ,
             double *velX, double *velY, double *velZ, double matriz[10][8]) {
  for (int i = 0; i < 10; i++) {
    masas[i] = matriz[i][1] * 5.029081E-31;
    posX[i * 10000 + 0] = matriz[i][2];
    posY[i * 10000 + 0] = matriz[i][3];
    posZ[i * 10000 + 0] = matriz[i][4];
    velX[i * 10000 + 0] = matriz[i][5] * 0.2108;
    velY[i * 10000 + 0] = matriz[i][6] * 0.2108;
    velZ[i * 10000 + 0] = matriz[i][7] * 0.2108;
  }
}


x86 assembly (clang, -O0):
<CondIni>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0xa,-0x34(%rbp)
jge    1280 <CondIni+0x180>
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0xebc(%rip),%xmm0
mulsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0x18(%rax),%xmm0
mov    -0x18(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0xe0d(%rip),%xmm0
mulsd  0x28(%rax),%xmm0
mov    -0x28(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0xddb(%rip),%xmm0
mulsd  0x30(%rax),%xmm0
mov    -0x30(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movsd  0xda9(%rip),%xmm0
mulsd  0x38(%rax),%xmm0
mov    0x10(%rbp),%rax
imul   $0x2710,-0x34(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    112b <CondIni+0x2b>
pop    %rbp
ret

x86 assembly (clang, -O2):
<CondIni>:
push   %rbx
mov    0x18(%rsp),%r11
mov    0x10(%rsp),%r10
xor    %eax,%eax
movsd  0xeeb(%rip),%xmm0
movsd  0xeeb(%rip),%xmm1
xor    %ebx,%ebx
nop
movsd  0x8(%r11,%rax,8),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi,%rax,1)
movsd  0x10(%r11,%rax,8),%xmm2
movsd  %xmm2,(%rsi,%rbx,1)
movsd  0x18(%r11,%rax,8),%xmm2
movsd  %xmm2,(%rdx,%rbx,1)
movsd  0x20(%r11,%rax,8),%xmm2
movsd  %xmm2,(%rcx,%rbx,1)
movsd  0x28(%r11,%rax,8),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%r8,%rbx,1)
movsd  0x30(%r11,%rax,8),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%r9,%rbx,1)
movsd  0x38(%r11,%rax,8),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%r10,%rbx,1)
add    $0x13880,%rbx
add    $0x8,%rax
cmp    $0xc3500,%rbx
jne    1120 <CondIni+0x20>
pop    %rbx
ret

LLVM IR (-O0):
define void @CondIni(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6, [8 x double]* %7) {
%9 = alloca double*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca [8 x double]*
%17 = alloca i32
store double* %0, double** %9
store double* %1, double** %10
store double* %2, double** %11
store double* %3, double** %12
store double* %4, double** %13
store double* %5, double** %14
store double* %6, double** %15
store [8 x double]* %7, [8 x double]** %16
store i32 0, i32* %17
br label %18
18: ; preds = %108, %8
%19 = load i32, i32* %17
%20 = icmp slt i32 %19, 10
br i1 %20, label %21, label %111
21: ; preds = %18
%22 = load [8 x double]*, [8 x double]** %16
%23 = load i32, i32* %17
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [8 x double], [8 x double]* %22, i64 %24
%26 = getelementptr inbounds [8 x double], [8 x double]* %25, i64 0, i64 1
%27 = load double, double* %26
%28 = fmul double %27, 0x39A4667F0D393251
%29 = load double*, double** %9
%30 = load i32, i32* %17
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds double, double* %29, i64 %31
store double %28, double* %32
%33 = load [8 x double]*, [8 x double]** %16
%34 = load i32, i32* %17
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [8 x double], [8 x double]* %33, i64 %35
%37 = getelementptr inbounds [8 x double], [8 x double]* %36, i64 0, i64 2
%38 = load double, double* %37
%39 = load double*, double** %10
%40 = load i32, i32* %17
%41 = mul nsw i32 %40, 10000
%42 = add nsw i32 %41, 0
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds double, double* %39, i64 %43
store double %38, double* %44
%45 = load [8 x double]*, [8 x double]** %16
%46 = load i32, i32* %17
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [8 x double], [8 x double]* %45, i64 %47
%49 = getelementptr inbounds [8 x double], [8 x double]* %48, i64 0, i64 3
%50 = load double, double* %49
%51 = load double*, double** %11
%52 = load i32, i32* %17
%53 = mul nsw i32 %52, 10000
%54 = add nsw i32 %53, 0
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds double, double* %51, i64 %55
store double %50, double* %56
%57 = load [8 x double]*, [8 x double]** %16
%58 = load i32, i32* %17
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [8 x double], [8 x double]* %57, i64 %59
%61 = getelementptr inbounds [8 x double], [8 x double]* %60, i64 0, i64 4
%62 = load double, double* %61
%63 = load double*, double** %12
%64 = load i32, i32* %17
%65 = mul nsw i32 %64, 10000
%66 = add nsw i32 %65, 0
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds double, double* %63, i64 %67
store double %62, double* %68
%69 = load [8 x double]*, [8 x double]** %16
%70 = load i32, i32* %17
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [8 x double], [8 x double]* %69, i64 %71
%73 = getelementptr inbounds [8 x double], [8 x double]* %72, i64 0, i64 5
%74 = load double, double* %73
%75 = fmul double %74, 2.108000e-01
%76 = load double*, double** %13
%77 = load i32, i32* %17
%78 = mul nsw i32 %77, 10000
%79 = add nsw i32 %78, 0
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds double, double* %76, i64 %80
store double %75, double* %81
%82 = load [8 x double]*, [8 x double]** %16
%83 = load i32, i32* %17
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds [8 x double], [8 x double]* %82, i64 %84
%86 = getelementptr inbounds [8 x double], [8 x double]* %85, i64 0, i64 6
%87 = load double, double* %86
%88 = fmul double %87, 2.108000e-01
%89 = load double*, double** %14
%90 = load i32, i32* %17
%91 = mul nsw i32 %90, 10000
%92 = add nsw i32 %91, 0
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %89, i64 %93
store double %88, double* %94
%95 = load [8 x double]*, [8 x double]** %16
%96 = load i32, i32* %17
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [8 x double], [8 x double]* %95, i64 %97
%99 = getelementptr inbounds [8 x double], [8 x double]* %98, i64 0, i64 7
%100 = load double, double* %99
%101 = fmul double %100, 2.108000e-01
%102 = load double*, double** %15
%103 = load i32, i32* %17
%104 = mul nsw i32 %103, 10000
%105 = add nsw i32 %104, 0
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds double, double* %102, i64 %106
store double %101, double* %107
br label %108
108: ; preds = %21
%109 = load i32, i32* %17
%110 = add nsw i32 %109, 1
store i32 %110, i32* %17
br label %18
111: ; preds = %18
ret void
}

LLVM IR (-O2):
define void @CondIni(double* nocapture writeonly %0, double* nocapture writeonly %1, double* nocapture writeonly %2, double* nocapture writeonly %3, double* nocapture writeonly %4, double* nocapture writeonly %5, double* nocapture writeonly %6, [8 x double]* nocapture %7) {
br label %10
9: ; preds = %10
ret void
10: ; preds = %8, %10
%11 = phi i64 [ 0, %8 ], [ %38, %10 ]
%12 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 1
%13 = load double, double* %12
%14 = fmul double %13, 0x39A4667F0D393251
%15 = getelementptr inbounds double, double* %0, i64 %11
store double %14, double* %15
%16 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 2
%17 = load double, double* %16
%18 = mul nuw nsw i64 %11, 10000
%19 = getelementptr inbounds double, double* %1, i64 %18
store double %17, double* %19
%20 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 3
%21 = load double, double* %20
%22 = getelementptr inbounds double, double* %2, i64 %18
store double %21, double* %22
%23 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 4
%24 = load double, double* %23
%25 = getelementptr inbounds double, double* %3, i64 %18
store double %24, double* %25
%26 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 5
%27 = load double, double* %26
%28 = fmul double %27, 2.108000e-01
%29 = getelementptr inbounds double, double* %4, i64 %18
store double %28, double* %29
%30 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 6
%31 = load double, double* %30
%32 = fmul double %31, 2.108000e-01
%33 = getelementptr inbounds double, double* %5, i64 %18
store double %32, double* %33
%34 = getelementptr inbounds [8 x double], [8 x double]* %7, i64 %11, i64 7
%35 = load double, double* %34
%36 = fmul double %35, 2.108000e-01
%37 = getelementptr inbounds double, double* %6, i64 %18
store double %36, double* %37
%38 = add nuw nsw i64 %11, 1
%39 = icmp eq i64 %38, 10
br i1 %39, label %9, label %10
}