#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
void imprime(int f1, int c1, float s[f1][c1]) {
  int i = 0;
  for (i = 0; i < 179; i++) {
    printf("-");
  }
  printf("\n");
  printf("%-9s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| "
         "%-11s| %-11s| %-11s| %-11s|\n",
         "Vendedor", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
         "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre",
         "Total");
  for (i = 0; i < 179; i++) {
    printf("-");
  }
  printf("\n");
  float totales_mes[12] = {0};
  for (i = 0; i < 200; i++) {
    int j = 0;
    float total_vendedor = 0;
    for (j = 0; j < 12; j++) {
      total_vendedor = total_vendedor + s[i][j];
      totales_mes[j] = totales_mes[j] + s[i][j];
    }
    printf("%9d| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| "
           "%11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f|\n",
           i + 1, s[i][0], s[i][1], s[i][2], s[i][3], s[i][4], s[i][5], s[i][6],
           s[i][7], s[i][8], s[i][9], s[i][10], s[i][11], total_vendedor);
  }
  for (i = 0; i < 179; i++) {
    printf("-");
  }
  printf("\n");
  printf("%-9s|", "Totales");
  for (i = 0; i < 12; i++) {
    printf(" %11.2f|", totales_mes[i]);
  }
  printf("\n");
  for (i = 0; i < 166; i++) {
    printf("-");
  }
  printf("\n");
}


x86 assembly (clang, -O0):
<imprime>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
mov    %edi,-0x2c(%rbp)
mov    %esi,-0x30(%rbp)
mov    %rdx,-0x38(%rbp)
mov    -0x30(%rbp),%eax
mov    %rax,-0x80(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x3c(%rbp)
cmpl   $0xb3,-0x3c(%rbp)
jge    117c <imprime+0x5c>
lea    0xe99(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1153 <imprime+0x33>
lea    0xfb5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe71(%rip),%rdi
lea    0xecc(%rip),%rsi
lea    0xece(%rip),%rdx
lea    0xecd(%rip),%rcx
lea    0xece(%rip),%r8
lea    0xecd(%rip),%r9
lea    0xecc(%rip),%rax
mov    %rax,-0x90(%rbp)
lea    0xec3(%rip),%r13
lea    0xec2(%rip),%r12
lea    0xec1(%rip),%r15
lea    0xec1(%rip),%r14
lea    0xec5(%rip),%rbx
lea    0xec6(%rip),%r11
lea    0xec9(%rip),%r10
lea    0xecc(%rip),%rax
mov    %rax,-0x88(%rbp)
mov    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x88(%rbp),%rax
mov    %r13,0x8(%rsp)
mov    %r12,0x10(%rsp)
mov    %r15,0x18(%rsp)
mov    %r14,0x20(%rsp)
mov    %rbx,0x28(%rsp)
mov    %r11,0x30(%rsp)
mov    %r10,0x38(%rsp)
mov    %rax,0x40(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xb3,-0x3c(%rbp)
jge    1272 <imprime+0x152>
lea    0xda3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1249 <imprime+0x129>
lea    0xebf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0x70(%rbp),%rdi
xor    %esi,%esi
mov    $0x30,%edx
call   1040 <memset@plt>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xc8,-0x3c(%rbp)
jge    148e <imprime+0x36e>
movl   $0x0,-0x74(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movl   $0x0,-0x74(%rbp)
cmpl   $0xc,-0x74(%rbp)
jge    132c <imprime+0x20c>
mov    -0x80(%rbp),%rdx
movss  -0x78(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x74(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x78(%rbp)
movslq -0x74(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x74(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movslq -0x74(%rbp),%rax
movss  %xmm0,-0x70(%rbp,%rax,4)
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    12ba <imprime+0x19a>
mov    -0x80(%rbp),%rdx
mov    -0x3c(%rbp),%esi
add    $0x1,%esi
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x4(%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x8(%rax,%rcx,4),%xmm2
cvtss2sd %xmm2,%xmm2
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0xc(%rax,%rcx,4),%xmm3
cvtss2sd %xmm3,%xmm3
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x10(%rax,%rcx,4),%xmm4
cvtss2sd %xmm4,%xmm4
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x14(%rax,%rcx,4),%xmm5
cvtss2sd %xmm5,%xmm5
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x18(%rax,%rcx,4),%xmm6
cvtss2sd %xmm6,%xmm6
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x1c(%rax,%rcx,4),%xmm7
cvtss2sd %xmm7,%xmm7
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x20(%rax,%rcx,4),%xmm8
cvtss2sd %xmm8,%xmm12
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x24(%rax,%rcx,4),%xmm8
cvtss2sd %xmm8,%xmm11
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x28(%rax,%rcx,4),%xmm8
cvtss2sd %xmm8,%xmm10
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
imul   %rdx,%rcx
movss  0x2c(%rax,%rcx,4),%xmm8
cvtss2sd %xmm8,%xmm9
movss  -0x78(%rbp),%xmm8
cvtss2sd %xmm8,%xmm8
lea    0xc75(%rip),%rdi
movsd  %xmm12,(%rsp)
movsd  %xmm11,0x8(%rsp)
movsd  %xmm10,0x10(%rsp)
movsd  %xmm9,0x18(%rsp)
movsd  %xmm8,0x20(%rsp)
mov    $0x8,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1297 <imprime+0x177>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xb3,-0x3c(%rbp)
jge    14be <imprime+0x39e>
lea    0xb57(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1495 <imprime+0x375>
lea    0xc73(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc67(%rip),%rdi
lea    0xc66(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xc,-0x3c(%rbp)
jge    151c <imprime+0x3fc>
movslq -0x3c(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc41(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    14e8 <imprime+0x3c8>
lea    0xc15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xa6,-0x3c(%rbp)
jge    155a <imprime+0x43a>
lea    0xabb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1531 <imprime+0x411>
lea    0xbd7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<imprime>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rdx,%rbx
mov    %esi,%r14d
mov    $0xb3,%ebp
nopl   0x0(%rax)
mov    $0x2d,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebp
jne    1140 <imprime+0x20>
mov    $0xa,%edi
call   1030 <putchar@plt>
sub    $0x8,%rsp
lea    0xf64(%rip),%rbp
lea    0xf53(%rip),%r15
lea    0xf42(%rip),%r12
lea    0xf33(%rip),%r13
lea    0xf21(%rip),%r10
lea    0xf13(%rip),%r11
lea    0xe76(%rip),%rdi
lea    0xed1(%rip),%rsi
lea    0xed3(%rip),%rdx
lea    0xed2(%rip),%rcx
lea    0xed3(%rip),%r8
lea    0xed2(%rip),%r9
xor    %eax,%eax
push   %rbp
push   %r15
push   %r12
push   %r13
push   %r10
push   %r11
lea    0xecf(%rip),%rbp
push   %rbp
lea    0xec1(%rip),%rbp
push   %rbp
lea    0xeb4(%rip),%rbp
push   %rbp
call   1040 <printf@plt>
add    $0x50,%rsp
mov    $0xb3,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x2d,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebp
jne    11f0 <imprime+0xd0>
mov    %r14d,%r15d
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x2c,%rbx
shl    $0x2,%r15
xorps  %xmm6,%xmm6
mov    $0xffffffffffffff38,%rbp
lea    0xea9(%rip),%r14
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
xorps  %xmm14,%xmm14
xorps  %xmm5,%xmm5
cs nopw 0x0(%rax,%rax,1)
nop
movups -0x2c(%rbx),%xmm4
movups -0x1c(%rbx),%xmm3
movaps %xmm4,%xmm15
movaps %xmm4,%xmm9
addps  %xmm4,%xmm6
movaps %xmm6,0x10(%rsp)
xorps  %xmm6,%xmm6
cvtss2sd %xmm4,%xmm6
movsd  %xmm6,0x40(%rsp)
movaps %xmm4,%xmm8
addss  0xd8e(%rip),%xmm8
shufps $0x55,%xmm4,%xmm4
addss  %xmm4,%xmm8
movhlps %xmm15,%xmm15
addss  %xmm15,%xmm8
shufps $0xff,%xmm9,%xmm9
addss  %xmm9,%xmm8
addss  %xmm3,%xmm8
movaps %xmm3,%xmm6
movaps %xmm3,%xmm7
addps  %xmm3,%xmm5
movaps %xmm5,0x20(%rsp)
xorps  %xmm5,%xmm5
cvtss2sd %xmm3,%xmm5
movsd  %xmm5,0x38(%rsp)
movaps %xmm3,%xmm5
shufps $0x55,%xmm3,%xmm5
addss  %xmm5,%xmm8
unpckhpd %xmm3,%xmm6
addss  %xmm6,%xmm8
shufps $0xff,%xmm3,%xmm7
addss  %xmm7,%xmm8
movss  -0xc(%rbx),%xmm10
addss  %xmm10,%xmm8
addss  %xmm10,%xmm0
movss  %xmm0,(%rsp)
movss  -0x8(%rbx),%xmm11
addss  %xmm11,%xmm8
addss  %xmm11,%xmm1
movss  %xmm1,0x4(%rsp)
movss  -0x4(%rbx),%xmm12
addss  %xmm12,%xmm8
addss  %xmm12,%xmm2
movss  %xmm2,0x8(%rsp)
movss  (%rbx),%xmm13
addss  %xmm13,%xmm8
addss  %xmm13,%xmm14
movss  %xmm14,0xc(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm15,%xmm2
xorps  %xmm3,%xmm3
cvtss2sd %xmm9,%xmm3
cvtss2sd %xmm5,%xmm5
cvtss2sd %xmm6,%xmm6
cvtss2sd %xmm7,%xmm7
xorps  %xmm9,%xmm9
cvtss2sd %xmm10,%xmm9
xorps  %xmm10,%xmm10
cvtss2sd %xmm11,%xmm10
xorps  %xmm11,%xmm11
cvtss2sd %xmm12,%xmm11
xorps  %xmm12,%xmm12
cvtss2sd %xmm13,%xmm12
cvtss2sd %xmm8,%xmm8
lea    0xc9(%rbp),%esi
sub    $0x30,%rsp
movsd  %xmm12,0x18(%rsp)
movsd  %xmm11,0x10(%rsp)
movsd  %xmm10,0x8(%rsp)
movsd  %xmm9,(%rsp)
movsd  %xmm8,0x20(%rsp)
mov    %r14,%rdi
movsd  0x70(%rsp),%xmm0
movsd  0x68(%rsp),%xmm4
mov    $0x8,%al
call   1040 <printf@plt>
movaps 0x40(%rsp),%xmm6
movaps 0x50(%rsp),%xmm5
movss  0x30(%rsp),%xmm0
movss  0x34(%rsp),%xmm1
movss  0x38(%rsp),%xmm2
movss  0x3c(%rsp),%xmm14
add    $0x30,%rsp
add    %r15,%rbx
inc    %rbp
jne    1240 <imprime+0x120>
mov    $0xb3,%ebx
nopl   0x0(%rax)
mov    $0x2d,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    13f0 <imprime+0x2d0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd2c(%rip),%rdi
lea    0xd2b(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
movaps 0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd1c(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x10(%rsp),%xmm0
shufps $0x55,%xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x10(%rsp),%xmm0
movhlps %xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x10(%rsp),%xmm0
shufps $0xff,%xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x20(%rsp),%xmm0
shufps $0x55,%xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x20(%rsp),%xmm0
movhlps %xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x20(%rsp),%xmm0
shufps $0xff,%xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa6,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x2d,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1540 <imprime+0x420>
mov    $0xa,%edi
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <putchar@plt>

LLVM IR (-O0):
@.str = [2 x i8] c"-\00"
@.str.1 = [2 x i8] c"\0A\00"
@.str.2 = [98 x i8] c"%-9s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s|\0A\00"
@.str.3 = [9 x i8] c"Vendedor\00"
@.str.4 = [6 x i8] c"Enero\00"
@.str.5 = [8 x i8] c"Febrero\00"
@.str.6 = [6 x i8] c"Marzo\00"
@.str.7 = [6 x i8] c"Abril\00"
@.str.8 = [5 x i8] c"Mayo\00"
@.str.9 = [6 x i8] c"Junio\00"
@.str.10 = [6 x i8] c"Julio\00"
@.str.11 = [7 x i8] c"Agosto\00"
@.str.12 = [11 x i8] c"Septiembre\00"
@.str.13 = [8 x i8] c"Octubre\00"
@.str.14 = [10 x i8] c"Noviembre\00"
@.str.15 = [10 x i8] c"Diciembre\00"
@.str.16 = [6 x i8] c"Total\00"
@.str.17 = [110 x i8] c"%9d| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f|\0A\00"
@.str.18 = [6 x i8] c"%-9s|\00"
@.str.19 = [8 x i8] c"Totales\00"
@.str.20 = [9 x i8] c" %11.2f|\00"
define void @imprime(i32 %0, i32 %1, float* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca float*
%7 = alloca i32
%8 = alloca [12 x float]
%9 = alloca i32
%10 = alloca float
store i32 %0, i32* %4
store i32 %1, i32* %5
store float* %2, float** %6
%11 = load i32, i32* %4
%12 = zext i32 %11 to i64
%13 = load i32, i32* %5
%14 = zext i32 %13 to i64
store i32 0, i32* %7
store i32 0, i32* %7
br label %15
15: ; preds = %20, %3
%16 = load i32, i32* %7
%17 = icmp slt i32 %16, 179
br i1 %17, label %18, label %23
18: ; preds = %15
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %20
20: ; preds = %18
%21 = load i32, i32* %7
%22 = add nsw i32 %21, 1
store i32 %22, i32* %7
br label %15
23: ; preds = %15
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
store i32 0, i32* %7
br label %26
26: ; preds = %31, %23
%27 = load i32, i32* %7
%28 = icmp slt i32 %27, 179
br i1 %28, label %29, label %34
29: ; preds = %26
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %31
31: ; preds = %29
%32 = load i32, i32* %7
%33 = add nsw i32 %32, 1
store i32 %33, i32* %7
br label %26
34: ; preds = %26
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%36 = bitcast [12 x float]* %8 to i8*
store i32 0, i32* %7
br label %37
37: ; preds = %178, %34
%38 = load i32, i32* %7
%39 = icmp slt i32 %38, 200
br i1 %39, label %40, label %181
40: ; preds = %37
store i32 0, i32* %9
store float 0.000000e+00, float* %10
store i32 0, i32* %9
br label %41
41: ; preds = %73, %40
%42 = load i32, i32* %9
%43 = icmp slt i32 %42, 12
br i1 %43, label %44, label %76
44: ; preds = %41
%45 = load float, float* %10
%46 = load float*, float** %6
%47 = load i32, i32* %7
%48 = sext i32 %47 to i64
%49 = mul nsw i64 %48, %14
%50 = getelementptr inbounds float, float* %46, i64 %49
%51 = load i32, i32* %9
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds float, float* %50, i64 %52
%54 = load float, float* %53
%55 = fadd float %45, %54
store float %55, float* %10
%56 = load i32, i32* %9
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [12 x float], [12 x float]* %8, i64 0, i64 %57
%59 = load float, float* %58
%60 = load float*, float** %6
%61 = load i32, i32* %7
%62 = sext i32 %61 to i64
%63 = mul nsw i64 %62, %14
%64 = getelementptr inbounds float, float* %60, i64 %63
%65 = load i32, i32* %9
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds float, float* %64, i64 %66
%68 = load float, float* %67
%69 = fadd float %59, %68
%70 = load i32, i32* %9
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [12 x float], [12 x float]* %8, i64 0, i64 %71
store float %69, float* %72
br label %73
73: ; preds = %44
%74 = load i32, i32* %9
%75 = add nsw i32 %74, 1
store i32 %75, i32* %9
br label %41
76: ; preds = %41
%77 = load i32, i32* %7
%78 = add nsw i32 %77, 1
%79 = load float*, float** %6
%80 = load i32, i32* %7
%81 = sext i32 %80 to i64
%82 = mul nsw i64 %81, %14
%83 = getelementptr inbounds float, float* %79, i64 %82
%84 = getelementptr inbounds float, float* %83, i64 0
%85 = load float, float* %84
%86 = fpext float %85 to double
%87 = load float*, float** %6
%88 = load i32, i32* %7
%89 = sext i32 %88 to i64
%90 = mul nsw i64 %89, %14
%91 = getelementptr inbounds float, float* %87, i64 %90
%92 = getelementptr inbounds float, float* %91, i64 1
%93 = load float, float* %92
%94 = fpext float %93 to double
%95 = load float*, float** %6
%96 = load i32, i32* %7
%97 = sext i32 %96 to i64
%98 = mul nsw i64 %97, %14
%99 = getelementptr inbounds float, float* %95, i64 %98
%100 = getelementptr inbounds float, float* %99, i64 2
%101 = load float, float* %100
%102 = fpext float %101 to double
%103 = load float*, float** %6
%104 = load i32, i32* %7
%105 = sext i32 %104 to i64
%106 = mul nsw i64 %105, %14
%107 = getelementptr inbounds float, float* %103, i64 %106
%108 = getelementptr inbounds float, float* %107, i64 3
%109 = load float, float* %108
%110 = fpext float %109 to double
%111 = load float*, float** %6
%112 = load i32, i32* %7
%113 = sext i32 %112 to i64
%114 = mul nsw i64 %113, %14
%115 = getelementptr inbounds float, float* %111, i64 %114
%116 = getelementptr inbounds float, float* %115, i64 4
%117 = load float, float* %116
%118 = fpext float %117 to double
%119 = load float*, float** %6
%120 = load i32, i32* %7
%121 = sext i32 %120 to i64
%122 = mul nsw i64 %121, %14
%123 = getelementptr inbounds float, float* %119, i64 %122
%124 = getelementptr inbounds float, float* %123, i64 5
%125 = load float, float* %124
%126 = fpext float %125 to double
%127 = load float*, float** %6
%128 = load i32, i32* %7
%129 = sext i32 %128 to i64
%130 = mul nsw i64 %129, %14
%131 = getelementptr inbounds float, float* %127, i64 %130
%132 = getelementptr inbounds float, float* %131, i64 6
%133 = load float, float* %132
%134 = fpext float %133 to double
%135 = load float*, float** %6
%136 = load i32, i32* %7
%137 = sext i32 %136 to i64
%138 = mul nsw i64 %137, %14
%139 = getelementptr inbounds float, float* %135, i64 %138
%140 = getelementptr inbounds float, float* %139, i64 7
%141 = load float, float* %140
%142 = fpext float %141 to double
%143 = load float*, float** %6
%144 = load i32, i32* %7
%145 = sext i32 %144 to i64
%146 = mul nsw i64 %145, %14
%147 = getelementptr inbounds float, float* %143, i64 %146
%148 = getelementptr inbounds float, float* %147, i64 8
%149 = load float, float* %148
%150 = fpext float %149 to double
%151 = load float*, float** %6
%152 = load i32, i32* %7
%153 = sext i32 %152 to i64
%154 = mul nsw i64 %153, %14
%155 = getelementptr inbounds float, float* %151, i64 %154
%156 = getelementptr inbounds float, float* %155, i64 9
%157 = load float, float* %156
%158 = fpext float %157 to double
%159 = load float*, float** %6
%160 = load i32, i32* %7
%161 = sext i32 %160 to i64
%162 = mul nsw i64 %161, %14
%163 = getelementptr inbounds float, float* %159, i64 %162
%164 = getelementptr inbounds float, float* %163, i64 10
%165 = load float, float* %164
%166 = fpext float %165 to double
%167 = load float*, float** %6
%168 = load i32, i32* %7
%169 = sext i32 %168 to i64
%170 = mul nsw i64 %169, %14
%171 = getelementptr inbounds float, float* %167, i64 %170
%172 = getelementptr inbounds float, float* %171, i64 11
%173 = load float, float* %172
%174 = fpext float %173 to double
%175 = load float, float* %10
%176 = fpext float %175 to double
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.17, i64 0, i64 0), i32 %78, double %86, double %94, double %102, double %110, double %118, double %126, double %134, double %142, double %150, double %158, double %166, double %174, double %176)
br label %178
178: ; preds = %76
%179 = load i32, i32* %7
%180 = add nsw i32 %179, 1
store i32 %180, i32* %7
br label %37
181: ; preds = %37
store i32 0, i32* %7
br label %182
182: ; preds = %187, %181
%183 = load i32, i32* %7
%184 = icmp slt i32 %183, 179
br i1 %184, label %185, label %190
185: ; preds = %182
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %187
187: ; preds = %185
%188 = load i32, i32* %7
%189 = add nsw i32 %188, 1
store i32 %189, i32* %7
br label %182
190: ; preds = %182
%191 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0))
store i32 0, i32* %7
br label %193
193: ; preds = %203, %190
%194 = load i32, i32* %7
%195 = icmp slt i32 %194, 12
br i1 %195, label %196, label %206
196: ; preds = %193
%197 = load i32, i32* %7
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [12 x float], [12 x float]* %8, i64 0, i64 %198
%200 = load float, float* %199
%201 = fpext float %200 to double
%202 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %201)
br label %203
203: ; preds = %196
%204 = load i32, i32* %7
%205 = add nsw i32 %204, 1
store i32 %205, i32* %7
br label %193
206: ; preds = %193
%207 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %7
br label %208
208: ; preds = %213, %206
%209 = load i32, i32* %7
%210 = icmp slt i32 %209, 166
br i1 %210, label %211, label %216
211: ; preds = %208
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %213
213: ; preds = %211
%214 = load i32, i32* %7
%215 = add nsw i32 %214, 1
store i32 %215, i32* %7
br label %208
216: ; preds = %208
%217 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.2 = [98 x i8] c"%-9s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s| %-11s|\0A\00"
@.str.3 = [9 x i8] c"Vendedor\00"
@.str.4 = [6 x i8] c"Enero\00"
@.str.5 = [8 x i8] c"Febrero\00"
@.str.6 = [6 x i8] c"Marzo\00"
@.str.7 = [6 x i8] c"Abril\00"
@.str.8 = [5 x i8] c"Mayo\00"
@.str.9 = [6 x i8] c"Junio\00"
@.str.10 = [6 x i8] c"Julio\00"
@.str.11 = [7 x i8] c"Agosto\00"
@.str.12 = [11 x i8] c"Septiembre\00"
@.str.13 = [8 x i8] c"Octubre\00"
@.str.14 = [10 x i8] c"Noviembre\00"
@.str.15 = [10 x i8] c"Diciembre\00"
@.str.16 = [6 x i8] c"Total\00"
@.str.17 = [110 x i8] c"%9d| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f| %11.2f|\0A\00"
@.str.18 = [6 x i8] c"%-9s|\00"
@.str.19 = [8 x i8] c"Totales\00"
@.str.20 = [9 x i8] c" %11.2f|\00"
define void @imprime(i32 %0, i32 %1, float* nocapture %2) {
br label %4
4: ; preds = %3, %4
%5 = phi i32 [ 0, %3 ], [ %7, %4 ]
%6 = tail call i32 @putchar(i32 45)
%7 = add nuw nsw i32 %5, 1
%8 = icmp eq i32 %7, 179
br i1 %8, label %9, label %4
9: ; preds = %4
%10 = tail call i32 @putchar(i32 10)
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([98 x i8], [98 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
br label %12
12: ; preds = %9, %12
%13 = phi i32 [ 0, %9 ], [ %15, %12 ]
%14 = tail call i32 @putchar(i32 45)
%15 = add nuw nsw i32 %13, 1
%16 = icmp eq i32 %15, 179
br i1 %16, label %17, label %12
17: ; preds = %12
%18 = zext i32 %1 to i64
%19 = tail call i32 @putchar(i32 10)
br label %20
20: ; preds = %17, %20
%21 = phi float [ 0.000000e+00, %17 ], [ %51, %20 ]
%22 = phi float [ 0.000000e+00, %17 ], [ %55, %20 ]
%23 = phi float [ 0.000000e+00, %17 ], [ %59, %20 ]
%24 = phi float [ 0.000000e+00, %17 ], [ %63, %20 ]
%25 = phi i64 [ 0, %17 ], [ %64, %20 ]
%26 = phi <8 x float> [ zeroinitializer, %17 ], [ %47, %20 ]
%27 = mul nuw nsw i64 %25, %18
%28 = getelementptr inbounds float, float* %2, i64 %27
%29 = bitcast float* %28 to <8 x float>*
%30 = load <8 x float>, <8 x float>* %29
%31 = extractelement <8 x float> %30, i64 0
%32 = fadd float %31, 0.000000e+00
%33 = extractelement <8 x float> %30, i64 1
%34 = fadd float %32, %33
%35 = extractelement <8 x float> %30, i64 2
%36 = fadd float %34, %35
%37 = extractelement <8 x float> %30, i64 3
%38 = fadd float %36, %37
%39 = extractelement <8 x float> %30, i64 4
%40 = fadd float %38, %39
%41 = extractelement <8 x float> %30, i64 5
%42 = fadd float %40, %41
%43 = extractelement <8 x float> %30, i64 6
%44 = fadd float %42, %43
%45 = extractelement <8 x float> %30, i64 7
%46 = fadd float %44, %45
%47 = fadd <8 x float> %30, %26
%48 = getelementptr inbounds float, float* %28, i64 8
%49 = load float, float* %48
%50 = fadd float %46, %49
%51 = fadd float %49, %21
%52 = getelementptr inbounds float, float* %28, i64 9
%53 = load float, float* %52
%54 = fadd float %50, %53
%55 = fadd float %53, %22
%56 = getelementptr inbounds float, float* %28, i64 10
%57 = load float, float* %56
%58 = fadd float %54, %57
%59 = fadd float %57, %23
%60 = getelementptr inbounds float, float* %28, i64 11
%61 = load float, float* %60
%62 = fadd float %58, %61
%63 = fadd float %61, %24
%64 = add nuw nsw i64 %25, 1
%65 = fpext float %31 to double
%66 = fpext float %33 to double
%67 = fpext float %35 to double
%68 = fpext float %37 to double
%69 = fpext float %39 to double
%70 = fpext float %41 to double
%71 = fpext float %43 to double
%72 = fpext float %45 to double
%73 = fpext float %49 to double
%74 = fpext float %53 to double
%75 = fpext float %57 to double
%76 = fpext float %61 to double
%77 = fpext float %62 to double
%78 = trunc i64 %64 to i32
%79 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([110 x i8], [110 x i8]* @.str.17, i64 0, i64 0), i32 %78, double %65, double %66, double %67, double %68, double %69, double %70, double %71, double %72, double %73, double %74, double %75, double %76, double %77)
%80 = icmp eq i64 %64, 200
br i1 %80, label %81, label %20
81: ; preds = %20, %81
%82 = phi i32 [ %84, %81 ], [ 0, %20 ]
%83 = tail call i32 @putchar(i32 45)
%84 = add nuw nsw i32 %82, 1
%85 = icmp eq i32 %84, 179
br i1 %85, label %86, label %81
86: ; preds = %81
%87 = tail call i32 @putchar(i32 10)
%88 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0))
%89 = extractelement <8 x float> %47, i64 0
%90 = fpext float %89 to double
%91 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %90)
%92 = extractelement <8 x float> %47, i64 1
%93 = fpext float %92 to double
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %93)
%95 = extractelement <8 x float> %47, i64 2
%96 = fpext float %95 to double
%97 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %96)
%98 = extractelement <8 x float> %47, i64 3
%99 = fpext float %98 to double
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %99)
%101 = extractelement <8 x float> %47, i64 4
%102 = fpext float %101 to double
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %102)
%104 = extractelement <8 x float> %47, i64 5
%105 = fpext float %104 to double
%106 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %105)
%107 = extractelement <8 x float> %47, i64 6
%108 = fpext float %107 to double
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %108)
%110 = extractelement <8 x float> %47, i64 7
%111 = fpext float %110 to double
%112 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %111)
%113 = fpext float %51 to double
%114 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %113)
%115 = fpext float %55 to double
%116 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %115)
%117 = fpext float %59 to double
%118 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %117)
%119 = fpext float %63 to double
%120 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), double %119)
%121 = tail call i32 @putchar(i32 10)
br label %122
122: ; preds = %86, %122
%123 = phi i32 [ 0, %86 ], [ %125, %122 ]
%124 = tail call i32 @putchar(i32 45)
%125 = add nuw nsw i32 %123, 1
%126 = icmp eq i32 %125, 166
br i1 %126, label %127, label %122
127: ; preds = %122
%128 = tail call i32 @putchar(i32 10)
ret void
}