#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ inicializa_polinomio(float *);
scalar_t__ malloc(int);
scalar_t__ pow(float, int);
int /*<<< orphan*/ printf(char *, ...);
void subtrai(float **polinomio1, float **polinomio2, float *x, FILE **saida) {
  int i = 0, cont = 0;
  float *polinomio = NULL;
  float subtracao = 0;
  polinomio = (float *)malloc(10 * sizeof(float));
  inicializa_polinomio(polinomio);
  for (i = 0; i < 10; i++) {
    *(polinomio + i) = *(*polinomio1 + i) - *(*polinomio2 + i);
  }
  printf("Subtracao P-Q=");
  fprintf(*saida, "Subtracao P-Q=");
  for (i = 1; i < 10; i++) {
    if (*(polinomio + i) != 0.0) {
      if (cont == 0) {
        printf("%.2fx%d", *(polinomio + i), i);
        fprintf(*saida, "%.2fx%d", *(polinomio + i), i);
        cont = 1;
      } else {
        printf("%+.2fx%d", *(polinomio + i), i);
        fprintf(*saida, "%+.2fx%d", *(polinomio + i), i);
      }
    }
  }
  if (*(polinomio + 0) != 0.0) {
    if (cont == 0) {
      printf("%.2f", *(polinomio + 0));
      fprintf(*saida, "%.2f", *(polinomio + 0));
    } else {
      printf("%+.2f", *(polinomio + 0));
      fprintf(*saida, "%+.2f", *(polinomio + 0));
    }
  } else {
    printf("0");
    fprintf(*saida, "0");
  }
  printf("\n");
  fprintf(*saida, "\n");
  for (i = 0; i < 10; i++) {
    if (*(polinomio + i) != 0.0) {
      subtracao += pow(*(polinomio + i) * *x, i);
    }
  }
  printf("Subtracao(2.3)=%.2f\n", subtracao);
  fprintf(*saida, "Subtracao(2.3)=%.2f\n", subtracao);
}


x86 assembly (clang, -O0):
<subtrai>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
mov    $0x28,%edi
call   1060 <malloc@plt>
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rdi
call   1030 <inicializa_polinomio@plt>
movl   $0x0,-0x24(%rbp)
cmpl   $0xa,-0x24(%rbp)
jge    11e9 <subtrai+0x99>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x24(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11a4 <subtrai+0x54>
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
lea    0xdfb(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
movl   $0x1,-0x24(%rbp)
cmpl   $0xa,-0x24(%rbp)
jge    130a <subtrai+0x1ba>
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1246 <subtrai+0xf6>
jp     1246 <subtrai+0xf6>
jmp    12f7 <subtrai+0x1a7>
cmpl   $0x0,-0x28(%rbp)
jne    12a7 <subtrai+0x157>
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x24(%rbp),%esi
lea    0xda4(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x24(%rbp),%edx
lea    0xd7b(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
movl   $0x1,-0x28(%rbp)
jmp    12f2 <subtrai+0x1a2>
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x24(%rbp),%esi
lea    0xd55(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x24(%rbp),%edx
lea    0xd2c(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
jmp    12f7 <subtrai+0x1a7>
jmp    12fc <subtrai+0x1ac>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1213 <subtrai+0xc3>
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    132e <subtrai+0x1de>
jp     132e <subtrai+0x1de>
jmp    13b8 <subtrai+0x268>
cmpl   $0x0,-0x28(%rbp)
jne    1378 <subtrai+0x228>
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xcd5(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xcb4(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
jmp    13b3 <subtrai+0x263>
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc9a(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc79(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
jmp    13db <subtrai+0x28b>
lea    0xc6c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
lea    0xc57(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
lea    0xc5e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
lea    0xc49(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
movl   $0x0,-0x24(%rbp)
cmpl   $0xa,-0x24(%rbp)
jge    1477 <subtrai+0x327>
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1438 <subtrai+0x2e8>
jp     1438 <subtrai+0x2e8>
jmp    1464 <subtrai+0x314>
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
mulss  (%rax),%xmm0
mov    -0x24(%rbp),%edi
call   1070 <pow@plt>
cvtsi2ss %rax,%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    1469 <subtrai+0x319>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1405 <subtrai+0x2b5>
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xba6(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%rdi
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb88(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<subtrai>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rcx,%r15
mov    %rdx,%r14
mov    %rsi,%r12
mov    %rdi,%rbx
mov    $0x28,%edi
call   1080 <malloc@plt>
mov    %rax,%r13
mov    %rax,%rdi
call   1030 <inicializa_polinomio@plt>
mov    (%rbx),%rcx
mov    (%r12),%rax
movss  (%rcx),%xmm0
subss  (%rax),%xmm0
movss  %xmm0,0x0(%r13)
movss  0x4(%rcx),%xmm0
subss  0x4(%rax),%xmm0
movss  %xmm0,0x4(%r13)
movss  0x8(%rcx),%xmm0
subss  0x8(%rax),%xmm0
movss  %xmm0,0x8(%r13)
movss  0xc(%rcx),%xmm0
subss  0xc(%rax),%xmm0
movss  %xmm0,0xc(%r13)
movss  0x10(%rcx),%xmm0
subss  0x10(%rax),%xmm0
movss  %xmm0,0x10(%r13)
movss  0x14(%rcx),%xmm0
subss  0x14(%rax),%xmm0
movss  %xmm0,0x14(%r13)
movss  0x18(%rcx),%xmm0
subss  0x18(%rax),%xmm0
movss  %xmm0,0x18(%r13)
movss  0x1c(%rcx),%xmm0
subss  0x1c(%rax),%xmm0
movss  %xmm0,0x1c(%r13)
movss  0x20(%rcx),%xmm0
subss  0x20(%rax),%xmm0
movss  %xmm0,0x20(%r13)
movss  0x24(%rcx),%xmm0
subss  0x24(%rax),%xmm0
movss  %xmm0,0x24(%r13)
lea    0xda8(%rip),%rbx
xor    %ebp,%ebp
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    (%r15),%rcx
mov    $0xe,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
call   10a0 <fwrite@plt>
movss  0x4(%r13),%xmm2
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm2
jne    1289 <subtrai+0x109>
jnp    12d4 <subtrai+0x154>
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
lea    0xd78(%rip),%rbx
mov    $0x1,%ebp
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x1,%al
movss  %xmm2,(%rsp)
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x4(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
xorps  %xmm1,%xmm1
movss  (%rsp),%xmm2
movss  0x8(%r13),%xmm0
ucomiss %xmm1,%xmm0
jne    12e1 <subtrai+0x161>
jnp    1331 <subtrai+0x1b1>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm2
cvtss2sd %xmm0,%xmm0
lea    0xd25(%rip),%rax
lea    0xd16(%rip),%rbx
cmovne %rax,%rbx
cmovp  %rax,%rbx
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x8(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x2,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
mov    $0x1,%ebp
movss  0xc(%r13),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1341 <subtrai+0x1c1>
jnp    138c <subtrai+0x20c>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xcc1(%rip),%rax
lea    0xcc2(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0xc(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x3,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
xorps  %xmm1,%xmm1
mov    $0x1,%ebp
movss  0x10(%r13),%xmm0
ucomiss %xmm1,%xmm0
jne    1399 <subtrai+0x219>
jnp    13e1 <subtrai+0x261>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xc69(%rip),%rax
lea    0xc6a(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x10(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x4,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
mov    $0x1,%ebp
movss  0x14(%r13),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    13f1 <subtrai+0x271>
jnp    143c <subtrai+0x2bc>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xc11(%rip),%rax
lea    0xc12(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x14(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x5,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
xorps  %xmm1,%xmm1
mov    $0x1,%ebp
movss  0x18(%r13),%xmm0
ucomiss %xmm1,%xmm0
jne    1449 <subtrai+0x2c9>
jnp    1491 <subtrai+0x311>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xbb9(%rip),%rax
lea    0xbba(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x18(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x6,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
mov    $0x1,%ebp
movss  0x1c(%r13),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    14a1 <subtrai+0x321>
jnp    14ec <subtrai+0x36c>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xb61(%rip),%rax
lea    0xb62(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x1c(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x7,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
xorps  %xmm1,%xmm1
mov    $0x1,%ebp
movss  0x20(%r13),%xmm0
ucomiss %xmm1,%xmm0
jne    14f9 <subtrai+0x379>
jnp    1541 <subtrai+0x3c1>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xb09(%rip),%rax
lea    0xb0a(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x20(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x8,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
mov    $0x1,%ebp
movss  0x24(%r13),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1551 <subtrai+0x3d1>
jnp    159c <subtrai+0x41c>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
lea    0xab1(%rip),%rax
lea    0xab2(%rip),%rbx
cmove  %rax,%rbx
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x24(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x9,%edx
mov    $0x1,%al
call   1070 <fprintf@plt>
xorps  %xmm1,%xmm1
mov    $0x1,%ebp
movss  0x0(%r13),%xmm0
ucomiss %xmm1,%xmm0
jne    15a9 <subtrai+0x429>
jnp    15ba <subtrai+0x43a>
cvtss2sd %xmm0,%xmm0
test   %ebp,%ebp
je     15d3 <subtrai+0x453>
lea    0xa6d(%rip),%rbx
jmp    15da <subtrai+0x45a>
mov    $0x30,%edi
call   1040 <putchar@plt>
mov    (%r15),%rsi
mov    $0x30,%edi
call   1060 <fputc@plt>
jmp    15fb <subtrai+0x47b>
lea    0xa46(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
movss  0x0(%r13),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rsi
mov    $0x1,%al
call   1070 <fprintf@plt>
mov    $0xa,%edi
call   1040 <putchar@plt>
mov    (%r15),%rsi
mov    $0xa,%edi
call   1060 <fputc@plt>
movss  0x0(%r13),%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
xorps  %xmm1,%xmm1
jne    1625 <subtrai+0x4a5>
jnp    163c <subtrai+0x4bc>
mulss  (%r14),%xmm0
xor    %edi,%edi
call   1090 <pow@plt>
xorps  %xmm2,%xmm2
xorps  %xmm1,%xmm1
cvtsi2ss %rax,%xmm1
movss  0x4(%r13),%xmm0
ucomiss %xmm2,%xmm0
jne    1649 <subtrai+0x4c9>
jnp    166e <subtrai+0x4ee>
mulss  (%r14),%xmm0
mov    $0x1,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x8(%r13),%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jne    167e <subtrai+0x4fe>
jnp    16a6 <subtrai+0x526>
mulss  (%r14),%xmm0
mov    $0x2,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
xorps  %xmm2,%xmm2
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0xc(%r13),%xmm0
ucomiss %xmm2,%xmm0
jne    16b3 <subtrai+0x533>
jnp    16d8 <subtrai+0x558>
mulss  (%r14),%xmm0
mov    $0x3,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x10(%r13),%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jne    16e8 <subtrai+0x568>
jnp    1710 <subtrai+0x590>
mulss  (%r14),%xmm0
mov    $0x4,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
xorps  %xmm2,%xmm2
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x14(%r13),%xmm0
ucomiss %xmm2,%xmm0
jne    171d <subtrai+0x59d>
jnp    1742 <subtrai+0x5c2>
mulss  (%r14),%xmm0
mov    $0x5,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x18(%r13),%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jne    1752 <subtrai+0x5d2>
jnp    177a <subtrai+0x5fa>
mulss  (%r14),%xmm0
mov    $0x6,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
xorps  %xmm2,%xmm2
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x1c(%r13),%xmm0
ucomiss %xmm2,%xmm0
jne    1787 <subtrai+0x607>
jnp    17ac <subtrai+0x62c>
mulss  (%r14),%xmm0
mov    $0x7,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x20(%r13),%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jne    17bc <subtrai+0x63c>
jnp    17e4 <subtrai+0x664>
mulss  (%r14),%xmm0
mov    $0x8,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
xorps  %xmm2,%xmm2
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
movss  0x24(%r13),%xmm0
ucomiss %xmm2,%xmm0
jne    17f1 <subtrai+0x671>
jnp    1816 <subtrai+0x696>
mulss  (%r14),%xmm0
mov    $0x9,%edi
movss  %xmm1,(%rsp)
call   1090 <pow@plt>
movss  (%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
addss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
movsd  %xmm0,(%rsp)
lea    0x802(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1050 <printf@plt>
mov    (%r15),%rdi
mov    %rbx,%rsi
movsd  (%rsp),%xmm0
mov    $0x1,%al
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1070 <fprintf@plt>

LLVM IR (-O0):
@.str = [15 x i8] c"Subtracao P-Q=\00"
@.str.1 = [8 x i8] c"%.2fx%d\00"
@.str.2 = [9 x i8] c"%+.2fx%d\00"
@.str.3 = [5 x i8] c"%.2f\00"
@.str.4 = [6 x i8] c"%+.2f\00"
@.str.5 = [2 x i8] c"0\00"
@.str.6 = [2 x i8] c"\0A\00"
@.str.7 = [21 x i8] c"Subtracao(2.3)=%.2f\0A\00"
define void @subtrai(float** %0, float** %1, float* %2, i32** %3) {
%5 = alloca float**
%6 = alloca float**
%7 = alloca float*
%8 = alloca i32**
%9 = alloca i32
%10 = alloca i32
%11 = alloca float*
%12 = alloca float
store float** %0, float*** %5
store float** %1, float*** %6
store float* %2, float** %7
store i32** %3, i32*** %8
store i32 0, i32* %9
store i32 0, i32* %10
store float* null, float** %11
store float 0.000000e+00, float* %12
%13 = call i64 @malloc(i32 40)
%14 = inttoptr i64 %13 to float*
store float* %14, float** %11
%15 = load float*, float** %11
%16 = call i32 @inicializa_polinomio(float* %15)
store i32 0, i32* %9
br label %17
17: ; preds = %38, %4
%18 = load i32, i32* %9
%19 = icmp slt i32 %18, 10
br i1 %19, label %20, label %41
20: ; preds = %17
%21 = load float**, float*** %5
%22 = load float*, float** %21
%23 = load i32, i32* %9
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds float, float* %22, i64 %24
%26 = load float, float* %25
%27 = load float**, float*** %6
%28 = load float*, float** %27
%29 = load i32, i32* %9
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds float, float* %28, i64 %30
%32 = load float, float* %31
%33 = fsub float %26, %32
%34 = load float*, float** %11
%35 = load i32, i32* %9
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds float, float* %34, i64 %36
store float %33, float* %37
br label %38
38: ; preds = %20
%39 = load i32, i32* %9
%40 = add nsw i32 %39, 1
store i32 %40, i32* %9
br label %17
41: ; preds = %17
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0))
%43 = load i32**, i32*** %8
%44 = load i32*, i32** %43
%45 = call i32 (i32*, i8*, ...) @fprintf(i32* %44, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0))
store i32 1, i32* %9
br label %46
46: ; preds = %100, %41
%47 = load i32, i32* %9
%48 = icmp slt i32 %47, 10
br i1 %48, label %49, label %103
49: ; preds = %46
%50 = load float*, float** %11
%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 = fpext float %54 to double
%56 = fcmp une double %55, 0.000000e+00
br i1 %56, label %57, label %99
57: ; preds = %49
%58 = load i32, i32* %10
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %79
60: ; preds = %57
%61 = load float*, float** %11
%62 = load i32, i32* %9
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds float, float* %61, i64 %63
%65 = load float, float* %64
%66 = fpext float %65 to double
%67 = load i32, i32* %9
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), double %66, i32 %67)
%69 = load i32**, i32*** %8
%70 = load i32*, i32** %69
%71 = load float*, float** %11
%72 = load i32, i32* %9
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds float, float* %71, i64 %73
%75 = load float, float* %74
%76 = fpext float %75 to double
%77 = load i32, i32* %9
%78 = call i32 (i32*, i8*, ...) @fprintf(i32* %70, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), double %76, i32 %77)
store i32 1, i32* %10
br label %98
79: ; preds = %57
%80 = load float*, float** %11
%81 = load i32, i32* %9
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds float, float* %80, i64 %82
%84 = load float, float* %83
%85 = fpext float %84 to double
%86 = load i32, i32* %9
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), double %85, i32 %86)
%88 = load i32**, i32*** %8
%89 = load i32*, i32** %88
%90 = load float*, float** %11
%91 = load i32, i32* %9
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds float, float* %90, i64 %92
%94 = load float, float* %93
%95 = fpext float %94 to double
%96 = load i32, i32* %9
%97 = call i32 (i32*, i8*, ...) @fprintf(i32* %89, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), double %95, i32 %96)
br label %98
98: ; preds = %79, %60
br label %99
99: ; preds = %98, %49
br label %100
100: ; preds = %99
%101 = load i32, i32* %9
%102 = add nsw i32 %101, 1
store i32 %102, i32* %9
br label %46
103: ; preds = %46
%104 = load float*, float** %11
%105 = getelementptr inbounds float, float* %104, i64 0
%106 = load float, float* %105
%107 = fpext float %106 to double
%108 = fcmp une double %107, 0.000000e+00
br i1 %108, label %109, label %139
109: ; preds = %103
%110 = load i32, i32* %10
%111 = icmp eq i32 %110, 0
br i1 %111, label %112, label %125
112: ; preds = %109
%113 = load float*, float** %11
%114 = getelementptr inbounds float, float* %113, i64 0
%115 = load float, float* %114
%116 = fpext float %115 to double
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), double %116)
%118 = load i32**, i32*** %8
%119 = load i32*, i32** %118
%120 = load float*, float** %11
%121 = getelementptr inbounds float, float* %120, i64 0
%122 = load float, float* %121
%123 = fpext float %122 to double
%124 = call i32 (i32*, i8*, ...) @fprintf(i32* %119, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), double %123)
br label %138
125: ; preds = %109
%126 = load float*, float** %11
%127 = getelementptr inbounds float, float* %126, i64 0
%128 = load float, float* %127
%129 = fpext float %128 to double
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %129)
%131 = load i32**, i32*** %8
%132 = load i32*, i32** %131
%133 = load float*, float** %11
%134 = getelementptr inbounds float, float* %133, i64 0
%135 = load float, float* %134
%136 = fpext float %135 to double
%137 = call i32 (i32*, i8*, ...) @fprintf(i32* %132, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %136)
br label %138
138: ; preds = %125, %112
br label %144
139: ; preds = %103
%140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
%141 = load i32**, i32*** %8
%142 = load i32*, i32** %141
%143 = call i32 (i32*, i8*, ...) @fprintf(i32* %142, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %144
144: ; preds = %139, %138
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%146 = load i32**, i32*** %8
%147 = load i32*, i32** %146
%148 = call i32 (i32*, i8*, ...) @fprintf(i32* %147, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %9
br label %149
149: ; preds = %175, %144
%150 = load i32, i32* %9
%151 = icmp slt i32 %150, 10
br i1 %151, label %152, label %178
152: ; preds = %149
%153 = load float*, float** %11
%154 = load i32, i32* %9
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds float, float* %153, i64 %155
%157 = load float, float* %156
%158 = fpext float %157 to double
%159 = fcmp une double %158, 0.000000e+00
br i1 %159, label %160, label %174
160: ; preds = %152
%161 = load float*, float** %11
%162 = load i32, i32* %9
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds float, float* %161, i64 %163
%165 = load float, float* %164
%166 = load float*, float** %7
%167 = load float, float* %166
%168 = fmul float %165, %167
%169 = load i32, i32* %9
%170 = call i64 @pow(float %168, i32 %169)
%171 = sitofp i64 %170 to float
%172 = load float, float* %12
%173 = fadd float %172, %171
store float %173, float* %12
br label %174
174: ; preds = %160, %152
br label %175
175: ; preds = %174
%176 = load i32, i32* %9
%177 = add nsw i32 %176, 1
store i32 %177, i32* %9
br label %149
178: ; preds = %149
%179 = load float, float* %12
%180 = fpext float %179 to double
%181 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.7, i64 0, i64 0), double %180)
%182 = load i32**, i32*** %8
%183 = load i32*, i32** %182
%184 = load float, float* %12
%185 = fpext float %184 to double
%186 = call i32 (i32*, i8*, ...) @fprintf(i32* %183, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.7, i64 0, i64 0), double %185)
ret void
}

LLVM IR (-O2):
@.str = [15 x i8] c"Subtracao P-Q=\00"
@.str.1 = [8 x i8] c"%.2fx%d\00"
@.str.2 = [9 x i8] c"%+.2fx%d\00"
@.str.3 = [5 x i8] c"%.2f\00"
@.str.4 = [6 x i8] c"%+.2f\00"
@.str.7 = [21 x i8] c"Subtracao(2.3)=%.2f\0A\00"
define void @subtrai(float** nocapture %0, float** nocapture %1, float* nocapture %2, i32** nocapture %3) {
%5 = tail call i64 @malloc(i32 40)
%6 = inttoptr i64 %5 to float*
%7 = tail call i32 @inicializa_polinomio(float* %6)
%8 = load float*, float** %0
%9 = load float*, float** %1
%10 = load float, float* %8
%11 = load float, float* %9
%12 = fsub float %10, %11
store float %12, float* %6
%13 = getelementptr inbounds float, float* %8, i64 1
%14 = load float, float* %13
%15 = getelementptr inbounds float, float* %9, i64 1
%16 = load float, float* %15
%17 = fsub float %14, %16
%18 = getelementptr inbounds float, float* %6, i64 1
store float %17, float* %18
%19 = getelementptr inbounds float, float* %8, i64 2
%20 = load float, float* %19
%21 = getelementptr inbounds float, float* %9, i64 2
%22 = load float, float* %21
%23 = fsub float %20, %22
%24 = getelementptr inbounds float, float* %6, i64 2
store float %23, float* %24
%25 = getelementptr inbounds float, float* %8, i64 3
%26 = load float, float* %25
%27 = getelementptr inbounds float, float* %9, i64 3
%28 = load float, float* %27
%29 = fsub float %26, %28
%30 = getelementptr inbounds float, float* %6, i64 3
store float %29, float* %30
%31 = getelementptr inbounds float, float* %8, i64 4
%32 = load float, float* %31
%33 = getelementptr inbounds float, float* %9, i64 4
%34 = load float, float* %33
%35 = fsub float %32, %34
%36 = getelementptr inbounds float, float* %6, i64 4
store float %35, float* %36
%37 = getelementptr inbounds float, float* %8, i64 5
%38 = load float, float* %37
%39 = getelementptr inbounds float, float* %9, i64 5
%40 = load float, float* %39
%41 = fsub float %38, %40
%42 = getelementptr inbounds float, float* %6, i64 5
store float %41, float* %42
%43 = getelementptr inbounds float, float* %8, i64 6
%44 = load float, float* %43
%45 = getelementptr inbounds float, float* %9, i64 6
%46 = load float, float* %45
%47 = fsub float %44, %46
%48 = getelementptr inbounds float, float* %6, i64 6
store float %47, float* %48
%49 = getelementptr inbounds float, float* %8, i64 7
%50 = load float, float* %49
%51 = getelementptr inbounds float, float* %9, i64 7
%52 = load float, float* %51
%53 = fsub float %50, %52
%54 = getelementptr inbounds float, float* %6, i64 7
store float %53, float* %54
%55 = getelementptr inbounds float, float* %8, i64 8
%56 = load float, float* %55
%57 = getelementptr inbounds float, float* %9, i64 8
%58 = load float, float* %57
%59 = fsub float %56, %58
%60 = getelementptr inbounds float, float* %6, i64 8
store float %59, float* %60
%61 = getelementptr inbounds float, float* %8, i64 9
%62 = load float, float* %61
%63 = getelementptr inbounds float, float* %9, i64 9
%64 = load float, float* %63
%65 = fsub float %62, %64
%66 = getelementptr inbounds float, float* %6, i64 9
store float %65, float* %66
%67 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0))
%68 = load i32*, i32** %3
%69 = tail call i64 @fwrite(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i64 14, i64 1, i32* %68)
%70 = getelementptr inbounds float, float* %6, i64 1
%71 = load float, float* %70
%72 = fcmp une float %71, 0.000000e+00
br i1 %72, label %73, label %80
73: ; preds = %4
%74 = fpext float %71 to double
%75 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), double %74, i32 1)
%76 = load i32*, i32** %3
%77 = load float, float* %70
%78 = fpext float %77 to double
%79 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %76, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), double %78, i32 1)
br label %80
80: ; preds = %73, %4
%81 = phi i32 [ 0, %4 ], [ 1, %73 ]
%82 = getelementptr inbounds float, float* %6, i64 2
%83 = load float, float* %82
%84 = fcmp une float %83, 0.000000e+00
br i1 %84, label %85, label %93
85: ; preds = %80
%86 = fpext float %83 to double
%87 = select i1 %72, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0)
%88 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %87, double %86, i32 2)
%89 = load i32*, i32** %3
%90 = load float, float* %82
%91 = fpext float %90 to double
%92 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %89, i8* %87, double %91, i32 2)
br label %93
93: ; preds = %85, %80
%94 = phi i32 [ %81, %80 ], [ 1, %85 ]
%95 = getelementptr inbounds float, float* %6, i64 3
%96 = load float, float* %95
%97 = fcmp une float %96, 0.000000e+00
br i1 %97, label %98, label %107
98: ; preds = %93
%99 = fpext float %96 to double
%100 = icmp eq i32 %94, 0
%101 = select i1 %100, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%102 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %101, double %99, i32 3)
%103 = load i32*, i32** %3
%104 = load float, float* %95
%105 = fpext float %104 to double
%106 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %103, i8* %101, double %105, i32 3)
br label %107
107: ; preds = %98, %93
%108 = phi i32 [ %94, %93 ], [ 1, %98 ]
%109 = getelementptr inbounds float, float* %6, i64 4
%110 = load float, float* %109
%111 = fcmp une float %110, 0.000000e+00
br i1 %111, label %112, label %121
112: ; preds = %107
%113 = fpext float %110 to double
%114 = icmp eq i32 %108, 0
%115 = select i1 %114, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%116 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %115, double %113, i32 4)
%117 = load i32*, i32** %3
%118 = load float, float* %109
%119 = fpext float %118 to double
%120 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %117, i8* %115, double %119, i32 4)
br label %121
121: ; preds = %112, %107
%122 = phi i32 [ %108, %107 ], [ 1, %112 ]
%123 = getelementptr inbounds float, float* %6, i64 5
%124 = load float, float* %123
%125 = fcmp une float %124, 0.000000e+00
br i1 %125, label %126, label %135
126: ; preds = %121
%127 = fpext float %124 to double
%128 = icmp eq i32 %122, 0
%129 = select i1 %128, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%130 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %129, double %127, i32 5)
%131 = load i32*, i32** %3
%132 = load float, float* %123
%133 = fpext float %132 to double
%134 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %131, i8* %129, double %133, i32 5)
br label %135
135: ; preds = %126, %121
%136 = phi i32 [ %122, %121 ], [ 1, %126 ]
%137 = getelementptr inbounds float, float* %6, i64 6
%138 = load float, float* %137
%139 = fcmp une float %138, 0.000000e+00
br i1 %139, label %140, label %149
140: ; preds = %135
%141 = fpext float %138 to double
%142 = icmp eq i32 %136, 0
%143 = select i1 %142, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%144 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %143, double %141, i32 6)
%145 = load i32*, i32** %3
%146 = load float, float* %137
%147 = fpext float %146 to double
%148 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %145, i8* %143, double %147, i32 6)
br label %149
149: ; preds = %140, %135
%150 = phi i32 [ %136, %135 ], [ 1, %140 ]
%151 = getelementptr inbounds float, float* %6, i64 7
%152 = load float, float* %151
%153 = fcmp une float %152, 0.000000e+00
br i1 %153, label %154, label %163
154: ; preds = %149
%155 = fpext float %152 to double
%156 = icmp eq i32 %150, 0
%157 = select i1 %156, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%158 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %157, double %155, i32 7)
%159 = load i32*, i32** %3
%160 = load float, float* %151
%161 = fpext float %160 to double
%162 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %159, i8* %157, double %161, i32 7)
br label %163
163: ; preds = %154, %149
%164 = phi i32 [ %150, %149 ], [ 1, %154 ]
%165 = getelementptr inbounds float, float* %6, i64 8
%166 = load float, float* %165
%167 = fcmp une float %166, 0.000000e+00
br i1 %167, label %168, label %177
168: ; preds = %163
%169 = fpext float %166 to double
%170 = icmp eq i32 %164, 0
%171 = select i1 %170, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%172 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %171, double %169, i32 8)
%173 = load i32*, i32** %3
%174 = load float, float* %165
%175 = fpext float %174 to double
%176 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %173, i8* %171, double %175, i32 8)
br label %177
177: ; preds = %168, %163
%178 = phi i32 [ %164, %163 ], [ 1, %168 ]
%179 = getelementptr inbounds float, float* %6, i64 9
%180 = load float, float* %179
%181 = fcmp une float %180, 0.000000e+00
br i1 %181, label %182, label %191
182: ; preds = %177
%183 = fpext float %180 to double
%184 = icmp eq i32 %178, 0
%185 = select i1 %184, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0)
%186 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) %185, double %183, i32 9)
%187 = load i32*, i32** %3
%188 = load float, float* %179
%189 = fpext float %188 to double
%190 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %187, i8* %185, double %189, i32 9)
br label %191
191: ; preds = %182, %177
%192 = phi i32 [ %178, %177 ], [ 1, %182 ]
%193 = load float, float* %6
%194 = fpext float %193 to double
%195 = fcmp une float %193, 0.000000e+00
br i1 %195, label %196, label %210
196: ; preds = %191
%197 = icmp eq i32 %192, 0
br i1 %197, label %198, label %204
198: ; preds = %196
%199 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), double %194)
%200 = load i32*, i32** %3
%201 = load float, float* %6
%202 = fpext float %201 to double
%203 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %200, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), double %202)
br label %214
204: ; preds = %196
%205 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %194)
%206 = load i32*, i32** %3
%207 = load float, float* %6
%208 = fpext float %207 to double
%209 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %206, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %208)
br label %214
210: ; preds = %191
%211 = tail call i32 @putchar(i32 48)
%212 = load i32*, i32** %3
%213 = tail call i32 @fputc(i32 48, i32* %212)
br label %214
214: ; preds = %198, %204, %210
%215 = tail call i32 @putchar(i32 10)
%216 = load i32*, i32** %3
%217 = tail call i32 @fputc(i32 10, i32* %216)
%218 = load float, float* %6
%219 = fcmp une float %218, 0.000000e+00
br i1 %219, label %220, label %225
220: ; preds = %214
%221 = load float, float* %2
%222 = fmul float %218, %221
%223 = tail call i64 @pow(float %222, i32 0)
%224 = sitofp i64 %223 to float
br label %225
225: ; preds = %214, %220
%226 = phi float [ %224, %220 ], [ 0.000000e+00, %214 ]
%227 = load float, float* %18
%228 = fcmp une float %227, 0.000000e+00
br i1 %228, label %229, label %235
229: ; preds = %225
%230 = load float, float* %2
%231 = fmul float %227, %230
%232 = tail call i64 @pow(float %231, i32 1)
%233 = sitofp i64 %232 to float
%234 = fadd float %226, %233
br label %235
235: ; preds = %229, %225
%236 = phi float [ %234, %229 ], [ %226, %225 ]
%237 = load float, float* %24
%238 = fcmp une float %237, 0.000000e+00
br i1 %238, label %239, label %245
239: ; preds = %235
%240 = load float, float* %2
%241 = fmul float %237, %240
%242 = tail call i64 @pow(float %241, i32 2)
%243 = sitofp i64 %242 to float
%244 = fadd float %236, %243
br label %245
245: ; preds = %239, %235
%246 = phi float [ %244, %239 ], [ %236, %235 ]
%247 = load float, float* %30
%248 = fcmp une float %247, 0.000000e+00
br i1 %248, label %249, label %255
249: ; preds = %245
%250 = load float, float* %2
%251 = fmul float %247, %250
%252 = tail call i64 @pow(float %251, i32 3)
%253 = sitofp i64 %252 to float
%254 = fadd float %246, %253
br label %255
255: ; preds = %249, %245
%256 = phi float [ %254, %249 ], [ %246, %245 ]
%257 = load float, float* %36
%258 = fcmp une float %257, 0.000000e+00
br i1 %258, label %259, label %265
259: ; preds = %255
%260 = load float, float* %2
%261 = fmul float %257, %260
%262 = tail call i64 @pow(float %261, i32 4)
%263 = sitofp i64 %262 to float
%264 = fadd float %256, %263
br label %265
265: ; preds = %259, %255
%266 = phi float [ %264, %259 ], [ %256, %255 ]
%267 = load float, float* %42
%268 = fcmp une float %267, 0.000000e+00
br i1 %268, label %269, label %275
269: ; preds = %265
%270 = load float, float* %2
%271 = fmul float %267, %270
%272 = tail call i64 @pow(float %271, i32 5)
%273 = sitofp i64 %272 to float
%274 = fadd float %266, %273
br label %275
275: ; preds = %269, %265
%276 = phi float [ %274, %269 ], [ %266, %265 ]
%277 = load float, float* %48
%278 = fcmp une float %277, 0.000000e+00
br i1 %278, label %279, label %285
279: ; preds = %275
%280 = load float, float* %2
%281 = fmul float %277, %280
%282 = tail call i64 @pow(float %281, i32 6)
%283 = sitofp i64 %282 to float
%284 = fadd float %276, %283
br label %285
285: ; preds = %279, %275
%286 = phi float [ %284, %279 ], [ %276, %275 ]
%287 = load float, float* %54
%288 = fcmp une float %287, 0.000000e+00
br i1 %288, label %289, label %295
289: ; preds = %285
%290 = load float, float* %2
%291 = fmul float %287, %290
%292 = tail call i64 @pow(float %291, i32 7)
%293 = sitofp i64 %292 to float
%294 = fadd float %286, %293
br label %295
295: ; preds = %289, %285
%296 = phi float [ %294, %289 ], [ %286, %285 ]
%297 = load float, float* %60
%298 = fcmp une float %297, 0.000000e+00
br i1 %298, label %299, label %305
299: ; preds = %295
%300 = load float, float* %2
%301 = fmul float %297, %300
%302 = tail call i64 @pow(float %301, i32 8)
%303 = sitofp i64 %302 to float
%304 = fadd float %296, %303
br label %305
305: ; preds = %299, %295
%306 = phi float [ %304, %299 ], [ %296, %295 ]
%307 = load float, float* %66
%308 = fcmp une float %307, 0.000000e+00
br i1 %308, label %309, label %315
309: ; preds = %305
%310 = load float, float* %2
%311 = fmul float %307, %310
%312 = tail call i64 @pow(float %311, i32 9)
%313 = sitofp i64 %312 to float
%314 = fadd float %306, %313
br label %315
315: ; preds = %309, %305
%316 = phi float [ %314, %309 ], [ %306, %305 ]
%317 = fpext float %316 to double
%318 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.7, i64 0, i64 0), double %317)
%319 = load i32*, i32** %3
%320 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %319, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.7, i64 0, i64 0), double %317)
ret void
}