#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 */
float atoi(char *);
int /*<<< orphan*/ snprintf(char *, int, char *, float);
int /*<<< orphan*/ sprintf(char *, char *, float);
int /*<<< orphan*/ strcpy(char *, char *);
void gera_dados(int s, char **tabela, char **matriz_resultado) {
  switch (s) {
  case 0:
    tabela[0] = matriz_resultado[0];
    if (atoi(matriz_resultado[2]) >= atoi(matriz_resultado[3])) {
      if (atoi(matriz_resultado[2]) == atoi(matriz_resultado[3])) {
        snprintf(tabela[1], 3, "%d", 1);
        snprintf(tabela[5], 3, "%d", 0);
      } else {
        snprintf(tabela[1], 3, "%d", 2);
        snprintf(tabela[5], 3, "%d", 1);
      }
    } else {
      snprintf(tabela[1], 3, "%d", 0);
      snprintf(tabela[5], 3, "%d", 0);
    }
    strcpy(tabela[2], matriz_resultado[2]);
    strcpy(tabela[3], matriz_resultado[3]);
    snprintf(tabela[4], 3, "%d", atoi(tabela[2]) - atoi(tabela[3]));
    sprintf(tabela[6], "%.2f", ((float)atoi(tabela[2])) / atoi(tabela[3]));
    break;
  case 1:
    tabela[0] = matriz_resultado[1];
    if (atoi(matriz_resultado[3]) >= atoi(matriz_resultado[2])) {
      if (atoi(matriz_resultado[3]) == atoi(matriz_resultado[2])) {
        snprintf(tabela[1], 3, "%d", 1);
        snprintf(tabela[5], 3, "%d", 0);
      } else {
        snprintf(tabela[1], 3, "%d", 2);
        snprintf(tabela[5], 3, "%d", 1);
      }
    } else {
      snprintf(tabela[1], 3, "%d", 0);
      snprintf(tabela[5], 3, "%d", 0);
    }
    strcpy(tabela[2], matriz_resultado[3]);
    strcpy(tabela[3], matriz_resultado[2]);
    sprintf(tabela[4], "%.f", (float)atoi(tabela[2]) - atoi(tabela[3]));
    sprintf(tabela[6], "%.2f", ((float)atoi(tabela[2])) / atoi(tabela[3]));
    break;
  case 2:
    tabela[0] = matriz_resultado[0];
    if (atoi(matriz_resultado[2]) >= (atoi(matriz_resultado[3]))) {
      if (atoi(matriz_resultado[2]) == atoi(matriz_resultado[3])) {
        snprintf(tabela[1], 3, "%d", atoi(tabela[1] + 1));
      } else {
        snprintf(tabela[1], 3, "%d", atoi(tabela[1]) + 2);
        snprintf(tabela[5], 3, "%d", atoi(tabela[5]) + 1);
      }
    }
    snprintf(tabela[2], 3, "%d", atoi(tabela[2]) + atoi(matriz_resultado[2]));
    snprintf(tabela[3], 3, "%d", atoi(tabela[3]) + atoi(matriz_resultado[3]));
    snprintf(tabela[4], 3, "%d", atoi(tabela[2]) - atoi(tabela[3]));
    sprintf(tabela[6], "%.2f", ((float)atoi(tabela[2])) / atoi(tabela[3]));
    break;
  default:
    tabela[0] = matriz_resultado[1];
    if (atoi(matriz_resultado[3]) >= atoi(matriz_resultado[2])) {
      if (atoi(matriz_resultado[3]) == atoi(matriz_resultado[2])) {
        snprintf(tabela[1], 3, "%d", atoi(tabela[1]) + 1);
      } else {
        snprintf(tabela[1], 3, "%d", atoi(tabela[1]) + 2);
        snprintf(tabela[5], 3, "%d", atoi(tabela[5]) + 1);
      }
    }
    snprintf(tabela[2], 3, "%d", atoi(tabela[2]) + atoi(matriz_resultado[3]));
    snprintf(tabela[3], 3, "%d", atoi(tabela[3]) + atoi(matriz_resultado[2]));
    sprintf(tabela[4], "%.f", (float)atoi(tabela[2]) - atoi(tabela[3]));
    sprintf(tabela[6], "%.2f", ((float)atoi(tabela[2])) / atoi(tabela[3]));
  }
}


x86 assembly (clang, -O0):
<gera_dados>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0x1c(%rbp)
test   %eax,%eax
je     118b <gera_dados+0x4b>
jmp    1169 <gera_dados+0x29>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
je     1382 <gera_dados+0x242>
jmp    117a <gera_dados+0x3a>
mov    -0x1c(%rbp),%eax
sub    $0x2,%eax
je     1575 <gera_dados+0x435>
jmp    17ff <gera_dados+0x6bf>
mov    -0x18(%rbp),%rax
mov    (%rax),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x20(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1288 <gera_dados+0x148>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x24(%rbp)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x24(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jne    1241 <gera_dados+0x101>
jp     1241 <gera_dados+0x101>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xdf5(%rip),%rdx
movss  0xde5(%rip),%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xdd4(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
jmp    1283 <gera_dados+0x143>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xdb3(%rip),%rdx
movss  0xda7(%rip),%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xd92(%rip),%rdx
movss  0xd82(%rip),%xmm0
call   1040 <snprintf@plt>
jmp    12c0 <gera_dados+0x180>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xd6c(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xd50(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rsi
call   1030 <strcpy@plt>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rsi
call   1030 <strcpy@plt>
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x34(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x40(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x34(%rbp),%xmm0
subss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0xcd7(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x30(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x28(%rbp),%xmm0
divss  %xmm1,%xmm0
lea    0xc93(%rip),%rsi
call   1060 <sprintf@plt>
jmp    1aa0 <gera_dados+0x960>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x44(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1480 <gera_dados+0x340>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x48(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jne    1439 <gera_dados+0x2f9>
jp     1439 <gera_dados+0x2f9>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xbfd(%rip),%rdx
movss  0xbed(%rip),%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xbdc(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
jmp    147b <gera_dados+0x33b>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xbbb(%rip),%rdx
movss  0xbaf(%rip),%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xb9a(%rip),%rdx
movss  0xb8a(%rip),%xmm0
call   1040 <snprintf@plt>
jmp    14b8 <gera_dados+0x378>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x3,%esi
lea    0xb74(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
mov    $0x3,%esi
lea    0xb58(%rip),%rdx
xorps  %xmm0,%xmm0
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rsi
call   1030 <strcpy@plt>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rsi
call   1030 <strcpy@plt>
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
mov    %rax,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x5c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x68(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x5c(%rbp),%xmm0
subss  %xmm1,%xmm0
lea    0xaec(%rip),%rsi
call   1060 <sprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x4c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x58(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x4c(%rbp),%xmm0
divss  %xmm1,%xmm0
lea    0xaa0(%rip),%rsi
call   1060 <sprintf@plt>
jmp    1aa0 <gera_dados+0x960>
mov    -0x18(%rbp),%rax
mov    (%rax),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x6c(%rbp)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x6c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     169f <gera_dados+0x55f>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0x70(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jne    1620 <gera_dados+0x4e0>
jp     1620 <gera_dados+0x4e0>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
add    $0x1,%rdi
call   1050 <atoi@plt>
mov    -0x78(%rbp),%rdi
mov    $0x3,%esi
lea    0x9f2(%rip),%rdx
call   1040 <snprintf@plt>
jmp    169a <gera_dados+0x55a>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x88(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x88(%rbp),%rdi
movss  0x9b9(%rip),%xmm1
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x9ad(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
mov    %rax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x80(%rbp),%rdi
movss  0x97b(%rip),%xmm1
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x973(%rip),%rdx
call   1040 <snprintf@plt>
jmp    169f <gera_dados+0x55f>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0xc8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xbc(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xc8(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0xbc(%rbp),%xmm0
ff
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x916(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xac(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xb8(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0xac(%rbp),%xmm0
ff
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x8be(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
mov    %rax,-0xa8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xa8(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x866(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x98(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x98(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x8c(%rbp),%xmm0
ff
divss  %xmm1,%xmm0
lea    0x816(%rip),%rsi
call   1060 <sprintf@plt>
jmp    1aa0 <gera_dados+0x960>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xcc(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0xcc(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jb     194a <gera_dados+0x80a>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xd0(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movaps %xmm0,%xmm1
movss  -0xd0(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jne    18c5 <gera_dados+0x785>
jp     18c5 <gera_dados+0x785>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0xd8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xd8(%rbp),%rdi
movss  0x755(%rip),%xmm1
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x74d(%rip),%rdx
call   1040 <snprintf@plt>
jmp    1945 <gera_dados+0x805>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0xe8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xe8(%rbp),%rdi
movss  0x714(%rip),%xmm1
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x708(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
mov    %rax,-0xe0(%rbp)
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xe0(%rbp),%rdi
movss  0x6d0(%rip),%xmm1
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x6c8(%rip),%rdx
call   1040 <snprintf@plt>
jmp    194a <gera_dados+0x80a>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x128(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x11c(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x128(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x11c(%rbp),%xmm0
ff
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x66b(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0x118(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0x10c(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x118(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0x10c(%rbp),%xmm0
ff
addss  %xmm1,%xmm0
mov    $0x3,%esi
lea    0x613(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
mov    %rax,-0x108(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xfc(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0x108(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0xfc(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
lea    0x5c8(%rip),%rsi
call   1060 <sprintf@plt>
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0xf8(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <atoi@plt>
movss  %xmm0,-0xec(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1050 <atoi@plt>
mov    -0xf8(%rbp),%rdi
movaps %xmm0,%xmm1
movss  -0xec(%rbp),%xmm0
ff
divss  %xmm1,%xmm0
lea    0x570(%rip),%rsi
call   1060 <sprintf@plt>
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gera_dados>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
mov    %rdx,%r14
mov    %rsi,%r13
cmp    $0x2,%edi
je     11aa <gera_dados+0x6a>
cmp    $0x1,%edi
je     1205 <gera_dados+0xc5>
test   %edi,%edi
jne    1247 <gera_dados+0x107>
mov    (%r14),%rax
mov    %rax,0x0(%r13)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jae    1345 <gera_dados+0x205>
mov    0x8(%r13),%rdi
lea    0xe66(%rip),%rdx
xorps  %xmm0,%xmm0
jmp    1364 <gera_dados+0x224>
mov    (%r14),%rax
mov    %rax,0x0(%r13)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jb     13f2 <gera_dados+0x2b2>
mov    0x8(%r13),%r15
jne    13a7 <gera_dados+0x267>
jp     13a7 <gera_dados+0x267>
lea    0x1(%r15),%rdi
call   1050 <atoi@plt>
lea    0xe10(%rip),%rdx
mov    %r15,%rdi
mov    $0x3,%esi
jmp    13ed <gera_dados+0x2ad>
mov    0x8(%r14),%rax
mov    %rax,0x0(%r13)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jae    1376 <gera_dados+0x236>
mov    0x8(%r13),%rdi
lea    0xdc9(%rip),%rdx
xorps  %xmm0,%xmm0
jmp    1395 <gera_dados+0x255>
mov    0x8(%r14),%rax
mov    %rax,0x0(%r13)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jb     12d7 <gera_dados+0x197>
mov    0x8(%r13),%r15
mov    %r15,%rdi
movss  %xmm0,0xc(%rsp)
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
ucomiss 0xc(%rsp),%xmm1
jne    1293 <gera_dados+0x153>
jnp    12bb <gera_dados+0x17b>
addss  0xd65(%rip),%xmm0
lea    0xd66(%rip),%rdx
mov    %r15,%rdi
mov    $0x3,%esi
call   1040 <snprintf@plt>
mov    0x28(%r13),%r15
mov    %r15,%rdi
call   1050 <atoi@plt>
addss  0xd41(%rip),%xmm0
lea    0xd3e(%rip),%rdx
mov    %r15,%rdi
mov    $0x3,%esi
call   1040 <snprintf@plt>
mov    0x10(%r13),%r15
mov    %r15,%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
addss  0x8(%rsp),%xmm0
lea    0xd09(%rip),%r12
mov    %r15,%rdi
mov    $0x3,%esi
mov    %r12,%rdx
call   1040 <snprintf@plt>
mov    0x18(%r13),%r15
mov    %r15,%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
addss  0x8(%rsp),%xmm0
mov    %r15,%rdi
mov    $0x3,%esi
mov    %r12,%rdx
call   1040 <snprintf@plt>
jmp    1530 <gera_dados+0x3f0>
mov    0x8(%r13),%rdi
lea    0xcb8(%rip),%rdx
jne    145d <gera_dados+0x31d>
jp     145d <gera_dados+0x31d>
movss  0xca0(%rip),%xmm0
mov    $0x3,%esi
call   1040 <snprintf@plt>
xorps  %xmm0,%xmm0
jmp    1477 <gera_dados+0x337>
mov    0x8(%r13),%rdi
lea    0xc87(%rip),%rdx
jne    14e7 <gera_dados+0x3a7>
jp     14e7 <gera_dados+0x3a7>
movss  0xc6f(%rip),%xmm0
mov    $0x3,%esi
call   1040 <snprintf@plt>
xorps  %xmm0,%xmm0
jmp    1501 <gera_dados+0x3c1>
mov    %r15,%rdi
call   1050 <atoi@plt>
addss  0xc49(%rip),%xmm0
lea    0xc4a(%rip),%r12
mov    %r15,%rdi
mov    $0x3,%esi
mov    %r12,%rdx
call   1040 <snprintf@plt>
mov    0x28(%r13),%r15
mov    %r15,%rdi
call   1050 <atoi@plt>
addss  0xc22(%rip),%xmm0
mov    %r15,%rdi
mov    $0x3,%esi
mov    %r12,%rdx
call   1040 <snprintf@plt>
mov    0x10(%r13),%r12
mov    %r12,%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x10(%r14),%rdi
call   1050 <atoi@plt>
addss  0x8(%rsp),%xmm0
lea    0xbee(%rip),%r15
mov    %r12,%rdi
mov    $0x3,%esi
mov    %r15,%rdx
call   1040 <snprintf@plt>
mov    0x18(%r13),%r12
mov    %r12,%rdi
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r14),%rdi
call   1050 <atoi@plt>
addss  0x8(%rsp),%xmm0
mov    %r12,%rdi
mov    $0x3,%esi
mov    %r15,%rdx
call   1040 <snprintf@plt>
jmp    14a9 <gera_dados+0x369>
movss  0xb9b(%rip),%xmm0
mov    $0x3,%esi
call   1040 <snprintf@plt>
movss  0xb8d(%rip),%xmm0
mov    0x28(%r13),%rdi
lea    0xb86(%rip),%r15
mov    $0x3,%esi
mov    %r15,%rdx
call   1040 <snprintf@plt>
mov    0x10(%r13),%rdi
mov    0x10(%r14),%rsi
call   1030 <strcpy@plt>
mov    0x18(%r13),%rdi
mov    0x18(%r14),%rsi
call   1030 <strcpy@plt>
mov    0x10(%r13),%rdi
mov    0x20(%r13),%r14
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r13),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
subss  %xmm0,%xmm1
mov    %r14,%rdi
mov    $0x3,%esi
mov    %r15,%rdx
movaps %xmm1,%xmm0
call   1040 <snprintf@plt>
jmp    1568 <gera_dados+0x428>
movss  0xb11(%rip),%xmm0
mov    $0x3,%esi
call   1040 <snprintf@plt>
movss  0xb03(%rip),%xmm0
mov    0x28(%r13),%rdi
lea    0xafc(%rip),%rdx
mov    $0x3,%esi
call   1040 <snprintf@plt>
mov    0x10(%r13),%rdi
mov    0x18(%r14),%rsi
call   1030 <strcpy@plt>
mov    0x18(%r13),%rdi
mov    0x10(%r14),%rsi
call   1030 <strcpy@plt>
mov    0x10(%r13),%rdi
mov    0x20(%r13),%r14
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r13),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
subss  %xmm0,%xmm1
lea    0xab3(%rip),%rsi
mov    %r14,%rdi
movaps %xmm1,%xmm0
call   1060 <sprintf@plt>
mov    0x10(%r13),%rdi
mov    0x30(%r13),%rbx
call   1050 <atoi@plt>
movss  %xmm0,0x8(%rsp)
mov    0x18(%r13),%rdi
call   1050 <atoi@plt>
movss  0x8(%rsp),%xmm1
divss  %xmm0,%xmm1
lea    0xa76(%rip),%rsi
mov    %rbx,%rdi
movaps %xmm1,%xmm0
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
jmp    1060 <sprintf@plt>

LLVM IR (-O0):
@.str = [3 x i8] c"%d\00"
@.str.1 = [5 x i8] c"%.2f\00"
@.str.2 = [4 x i8] c"%.f\00"
define void @gera_dados(i32 %0, i8** %1, i8** %2) {
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8**
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i8** %2, i8*** %6
%7 = load i32, i32* %4
switch i32 %7, label %304 [
i32 0, label %8
i32 1, label %102
i32 2, label %196
]
8: ; preds = %3
%9 = load i8**, i8*** %6
%10 = getelementptr inbounds i8*, i8** %9, i64 0
%11 = load i8*, i8** %10
%12 = load i8**, i8*** %5
%13 = getelementptr inbounds i8*, i8** %12, i64 0
store i8* %11, i8** %13
%14 = load i8**, i8*** %6
%15 = getelementptr inbounds i8*, i8** %14, i64 2
%16 = load i8*, i8** %15
%17 = call float @atoi(i8* %16)
%18 = load i8**, i8*** %6
%19 = getelementptr inbounds i8*, i8** %18, i64 3
%20 = load i8*, i8** %19
%21 = call float @atoi(i8* %20)
%22 = fcmp oge float %17, %21
br i1 %22, label %23, label %52
23: ; preds = %8
%24 = load i8**, i8*** %6
%25 = getelementptr inbounds i8*, i8** %24, i64 2
%26 = load i8*, i8** %25
%27 = call float @atoi(i8* %26)
%28 = load i8**, i8*** %6
%29 = getelementptr inbounds i8*, i8** %28, i64 3
%30 = load i8*, i8** %29
%31 = call float @atoi(i8* %30)
%32 = fcmp oeq float %27, %31
br i1 %32, label %33, label %42
33: ; preds = %23
%34 = load i8**, i8*** %5
%35 = getelementptr inbounds i8*, i8** %34, i64 1
%36 = load i8*, i8** %35
%37 = call i32 @snprintf(i8* %36, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
%38 = load i8**, i8*** %5
%39 = getelementptr inbounds i8*, i8** %38, i64 5
%40 = load i8*, i8** %39
%41 = call i32 @snprintf(i8* %40, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %51
42: ; preds = %23
%43 = load i8**, i8*** %5
%44 = getelementptr inbounds i8*, i8** %43, i64 1
%45 = load i8*, i8** %44
%46 = call i32 @snprintf(i8* %45, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 2.000000e+00)
%47 = load i8**, i8*** %5
%48 = getelementptr inbounds i8*, i8** %47, i64 5
%49 = load i8*, i8** %48
%50 = call i32 @snprintf(i8* %49, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
br label %51
51: ; preds = %42, %33
br label %61
52: ; preds = %8
%53 = load i8**, i8*** %5
%54 = getelementptr inbounds i8*, i8** %53, i64 1
%55 = load i8*, i8** %54
%56 = call i32 @snprintf(i8* %55, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
%57 = load i8**, i8*** %5
%58 = getelementptr inbounds i8*, i8** %57, i64 5
%59 = load i8*, i8** %58
%60 = call i32 @snprintf(i8* %59, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %61
61: ; preds = %52, %51
%62 = load i8**, i8*** %5
%63 = getelementptr inbounds i8*, i8** %62, i64 2
%64 = load i8*, i8** %63
%65 = load i8**, i8*** %6
%66 = getelementptr inbounds i8*, i8** %65, i64 2
%67 = load i8*, i8** %66
%68 = call i32 @strcpy(i8* %64, i8* %67)
%69 = load i8**, i8*** %5
%70 = getelementptr inbounds i8*, i8** %69, i64 3
%71 = load i8*, i8** %70
%72 = load i8**, i8*** %6
%73 = getelementptr inbounds i8*, i8** %72, i64 3
%74 = load i8*, i8** %73
%75 = call i32 @strcpy(i8* %71, i8* %74)
%76 = load i8**, i8*** %5
%77 = getelementptr inbounds i8*, i8** %76, i64 4
%78 = load i8*, i8** %77
%79 = load i8**, i8*** %5
%80 = getelementptr inbounds i8*, i8** %79, i64 2
%81 = load i8*, i8** %80
%82 = call float @atoi(i8* %81)
%83 = load i8**, i8*** %5
%84 = getelementptr inbounds i8*, i8** %83, i64 3
%85 = load i8*, i8** %84
%86 = call float @atoi(i8* %85)
%87 = fsub float %82, %86
%88 = call i32 @snprintf(i8* %78, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %87)
%89 = load i8**, i8*** %5
%90 = getelementptr inbounds i8*, i8** %89, i64 6
%91 = load i8*, i8** %90
%92 = load i8**, i8*** %5
%93 = getelementptr inbounds i8*, i8** %92, i64 2
%94 = load i8*, i8** %93
%95 = call float @atoi(i8* %94)
%96 = load i8**, i8*** %5
%97 = getelementptr inbounds i8*, i8** %96, i64 3
%98 = load i8*, i8** %97
%99 = call float @atoi(i8* %98)
%100 = fdiv float %95, %99
%101 = call i32 @sprintf(i8* %91, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float %100)
br label %412
102: ; preds = %3
%103 = load i8**, i8*** %6
%104 = getelementptr inbounds i8*, i8** %103, i64 1
%105 = load i8*, i8** %104
%106 = load i8**, i8*** %5
%107 = getelementptr inbounds i8*, i8** %106, i64 0
store i8* %105, i8** %107
%108 = load i8**, i8*** %6
%109 = getelementptr inbounds i8*, i8** %108, i64 3
%110 = load i8*, i8** %109
%111 = call float @atoi(i8* %110)
%112 = load i8**, i8*** %6
%113 = getelementptr inbounds i8*, i8** %112, i64 2
%114 = load i8*, i8** %113
%115 = call float @atoi(i8* %114)
%116 = fcmp oge float %111, %115
br i1 %116, label %117, label %146
117: ; preds = %102
%118 = load i8**, i8*** %6
%119 = getelementptr inbounds i8*, i8** %118, i64 3
%120 = load i8*, i8** %119
%121 = call float @atoi(i8* %120)
%122 = load i8**, i8*** %6
%123 = getelementptr inbounds i8*, i8** %122, i64 2
%124 = load i8*, i8** %123
%125 = call float @atoi(i8* %124)
%126 = fcmp oeq float %121, %125
br i1 %126, label %127, label %136
127: ; preds = %117
%128 = load i8**, i8*** %5
%129 = getelementptr inbounds i8*, i8** %128, i64 1
%130 = load i8*, i8** %129
%131 = call i32 @snprintf(i8* %130, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
%132 = load i8**, i8*** %5
%133 = getelementptr inbounds i8*, i8** %132, i64 5
%134 = load i8*, i8** %133
%135 = call i32 @snprintf(i8* %134, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %145
136: ; preds = %117
%137 = load i8**, i8*** %5
%138 = getelementptr inbounds i8*, i8** %137, i64 1
%139 = load i8*, i8** %138
%140 = call i32 @snprintf(i8* %139, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 2.000000e+00)
%141 = load i8**, i8*** %5
%142 = getelementptr inbounds i8*, i8** %141, i64 5
%143 = load i8*, i8** %142
%144 = call i32 @snprintf(i8* %143, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
br label %145
145: ; preds = %136, %127
br label %155
146: ; preds = %102
%147 = load i8**, i8*** %5
%148 = getelementptr inbounds i8*, i8** %147, i64 1
%149 = load i8*, i8** %148
%150 = call i32 @snprintf(i8* %149, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
%151 = load i8**, i8*** %5
%152 = getelementptr inbounds i8*, i8** %151, i64 5
%153 = load i8*, i8** %152
%154 = call i32 @snprintf(i8* %153, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %155
155: ; preds = %146, %145
%156 = load i8**, i8*** %5
%157 = getelementptr inbounds i8*, i8** %156, i64 2
%158 = load i8*, i8** %157
%159 = load i8**, i8*** %6
%160 = getelementptr inbounds i8*, i8** %159, i64 3
%161 = load i8*, i8** %160
%162 = call i32 @strcpy(i8* %158, i8* %161)
%163 = load i8**, i8*** %5
%164 = getelementptr inbounds i8*, i8** %163, i64 3
%165 = load i8*, i8** %164
%166 = load i8**, i8*** %6
%167 = getelementptr inbounds i8*, i8** %166, i64 2
%168 = load i8*, i8** %167
%169 = call i32 @strcpy(i8* %165, i8* %168)
%170 = load i8**, i8*** %5
%171 = getelementptr inbounds i8*, i8** %170, i64 4
%172 = load i8*, i8** %171
%173 = load i8**, i8*** %5
%174 = getelementptr inbounds i8*, i8** %173, i64 2
%175 = load i8*, i8** %174
%176 = call float @atoi(i8* %175)
%177 = load i8**, i8*** %5
%178 = getelementptr inbounds i8*, i8** %177, i64 3
%179 = load i8*, i8** %178
%180 = call float @atoi(i8* %179)
%181 = fsub float %176, %180
%182 = call i32 @sprintf(i8* %172, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), float %181)
%183 = load i8**, i8*** %5
%184 = getelementptr inbounds i8*, i8** %183, i64 6
%185 = load i8*, i8** %184
%186 = load i8**, i8*** %5
%187 = getelementptr inbounds i8*, i8** %186, i64 2
%188 = load i8*, i8** %187
%189 = call float @atoi(i8* %188)
%190 = load i8**, i8*** %5
%191 = getelementptr inbounds i8*, i8** %190, i64 3
%192 = load i8*, i8** %191
%193 = call float @atoi(i8* %192)
%194 = fdiv float %189, %193
%195 = call i32 @sprintf(i8* %185, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float %194)
br label %412
196: ; preds = %3
%197 = load i8**, i8*** %6
%198 = getelementptr inbounds i8*, i8** %197, i64 0
%199 = load i8*, i8** %198
%200 = load i8**, i8*** %5
%201 = getelementptr inbounds i8*, i8** %200, i64 0
store i8* %199, i8** %201
%202 = load i8**, i8*** %6
%203 = getelementptr inbounds i8*, i8** %202, i64 2
%204 = load i8*, i8** %203
%205 = call float @atoi(i8* %204)
%206 = load i8**, i8*** %6
%207 = getelementptr inbounds i8*, i8** %206, i64 3
%208 = load i8*, i8** %207
%209 = call float @atoi(i8* %208)
%210 = fcmp oge float %205, %209
br i1 %210, label %211, label %251
211: ; preds = %196
%212 = load i8**, i8*** %6
%213 = getelementptr inbounds i8*, i8** %212, i64 2
%214 = load i8*, i8** %213
%215 = call float @atoi(i8* %214)
%216 = load i8**, i8*** %6
%217 = getelementptr inbounds i8*, i8** %216, i64 3
%218 = load i8*, i8** %217
%219 = call float @atoi(i8* %218)
%220 = fcmp oeq float %215, %219
br i1 %220, label %221, label %231
221: ; preds = %211
%222 = load i8**, i8*** %5
%223 = getelementptr inbounds i8*, i8** %222, i64 1
%224 = load i8*, i8** %223
%225 = load i8**, i8*** %5
%226 = getelementptr inbounds i8*, i8** %225, i64 1
%227 = load i8*, i8** %226
%228 = getelementptr inbounds i8, i8* %227, i64 1
%229 = call float @atoi(i8* %228)
%230 = call i32 @snprintf(i8* %224, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %229)
br label %250
231: ; preds = %211
%232 = load i8**, i8*** %5
%233 = getelementptr inbounds i8*, i8** %232, i64 1
%234 = load i8*, i8** %233
%235 = load i8**, i8*** %5
%236 = getelementptr inbounds i8*, i8** %235, i64 1
%237 = load i8*, i8** %236
%238 = call float @atoi(i8* %237)
%239 = fadd float %238, 2.000000e+00
%240 = call i32 @snprintf(i8* %234, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %239)
%241 = load i8**, i8*** %5
%242 = getelementptr inbounds i8*, i8** %241, i64 5
%243 = load i8*, i8** %242
%244 = load i8**, i8*** %5
%245 = getelementptr inbounds i8*, i8** %244, i64 5
%246 = load i8*, i8** %245
%247 = call float @atoi(i8* %246)
%248 = fadd float %247, 1.000000e+00
%249 = call i32 @snprintf(i8* %243, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %248)
br label %250
250: ; preds = %231, %221
br label %251
251: ; preds = %250, %196
%252 = load i8**, i8*** %5
%253 = getelementptr inbounds i8*, i8** %252, i64 2
%254 = load i8*, i8** %253
%255 = load i8**, i8*** %5
%256 = getelementptr inbounds i8*, i8** %255, i64 2
%257 = load i8*, i8** %256
%258 = call float @atoi(i8* %257)
%259 = load i8**, i8*** %6
%260 = getelementptr inbounds i8*, i8** %259, i64 2
%261 = load i8*, i8** %260
%262 = call float @atoi(i8* %261)
%263 = fadd float %258, %262
%264 = call i32 @snprintf(i8* %254, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %263)
%265 = load i8**, i8*** %5
%266 = getelementptr inbounds i8*, i8** %265, i64 3
%267 = load i8*, i8** %266
%268 = load i8**, i8*** %5
%269 = getelementptr inbounds i8*, i8** %268, i64 3
%270 = load i8*, i8** %269
%271 = call float @atoi(i8* %270)
%272 = load i8**, i8*** %6
%273 = getelementptr inbounds i8*, i8** %272, i64 3
%274 = load i8*, i8** %273
%275 = call float @atoi(i8* %274)
%276 = fadd float %271, %275
%277 = call i32 @snprintf(i8* %267, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %276)
%278 = load i8**, i8*** %5
%279 = getelementptr inbounds i8*, i8** %278, i64 4
%280 = load i8*, i8** %279
%281 = load i8**, i8*** %5
%282 = getelementptr inbounds i8*, i8** %281, i64 2
%283 = load i8*, i8** %282
%284 = call float @atoi(i8* %283)
%285 = load i8**, i8*** %5
%286 = getelementptr inbounds i8*, i8** %285, i64 3
%287 = load i8*, i8** %286
%288 = call float @atoi(i8* %287)
%289 = fsub float %284, %288
%290 = call i32 @snprintf(i8* %280, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %289)
%291 = load i8**, i8*** %5
%292 = getelementptr inbounds i8*, i8** %291, i64 6
%293 = load i8*, i8** %292
%294 = load i8**, i8*** %5
%295 = getelementptr inbounds i8*, i8** %294, i64 2
%296 = load i8*, i8** %295
%297 = call float @atoi(i8* %296)
%298 = load i8**, i8*** %5
%299 = getelementptr inbounds i8*, i8** %298, i64 3
%300 = load i8*, i8** %299
%301 = call float @atoi(i8* %300)
%302 = fdiv float %297, %301
%303 = call i32 @sprintf(i8* %293, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float %302)
br label %412
304: ; preds = %3
%305 = load i8**, i8*** %6
%306 = getelementptr inbounds i8*, i8** %305, i64 1
%307 = load i8*, i8** %306
%308 = load i8**, i8*** %5
%309 = getelementptr inbounds i8*, i8** %308, i64 0
store i8* %307, i8** %309
%310 = load i8**, i8*** %6
%311 = getelementptr inbounds i8*, i8** %310, i64 3
%312 = load i8*, i8** %311
%313 = call float @atoi(i8* %312)
%314 = load i8**, i8*** %6
%315 = getelementptr inbounds i8*, i8** %314, i64 2
%316 = load i8*, i8** %315
%317 = call float @atoi(i8* %316)
%318 = fcmp oge float %313, %317
br i1 %318, label %319, label %359
319: ; preds = %304
%320 = load i8**, i8*** %6
%321 = getelementptr inbounds i8*, i8** %320, i64 3
%322 = load i8*, i8** %321
%323 = call float @atoi(i8* %322)
%324 = load i8**, i8*** %6
%325 = getelementptr inbounds i8*, i8** %324, i64 2
%326 = load i8*, i8** %325
%327 = call float @atoi(i8* %326)
%328 = fcmp oeq float %323, %327
br i1 %328, label %329, label %339
329: ; preds = %319
%330 = load i8**, i8*** %5
%331 = getelementptr inbounds i8*, i8** %330, i64 1
%332 = load i8*, i8** %331
%333 = load i8**, i8*** %5
%334 = getelementptr inbounds i8*, i8** %333, i64 1
%335 = load i8*, i8** %334
%336 = call float @atoi(i8* %335)
%337 = fadd float %336, 1.000000e+00
%338 = call i32 @snprintf(i8* %332, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %337)
br label %358
339: ; preds = %319
%340 = load i8**, i8*** %5
%341 = getelementptr inbounds i8*, i8** %340, i64 1
%342 = load i8*, i8** %341
%343 = load i8**, i8*** %5
%344 = getelementptr inbounds i8*, i8** %343, i64 1
%345 = load i8*, i8** %344
%346 = call float @atoi(i8* %345)
%347 = fadd float %346, 2.000000e+00
%348 = call i32 @snprintf(i8* %342, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %347)
%349 = load i8**, i8*** %5
%350 = getelementptr inbounds i8*, i8** %349, i64 5
%351 = load i8*, i8** %350
%352 = load i8**, i8*** %5
%353 = getelementptr inbounds i8*, i8** %352, i64 5
%354 = load i8*, i8** %353
%355 = call float @atoi(i8* %354)
%356 = fadd float %355, 1.000000e+00
%357 = call i32 @snprintf(i8* %351, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %356)
br label %358
358: ; preds = %339, %329
br label %359
359: ; preds = %358, %304
%360 = load i8**, i8*** %5
%361 = getelementptr inbounds i8*, i8** %360, i64 2
%362 = load i8*, i8** %361
%363 = load i8**, i8*** %5
%364 = getelementptr inbounds i8*, i8** %363, i64 2
%365 = load i8*, i8** %364
%366 = call float @atoi(i8* %365)
%367 = load i8**, i8*** %6
%368 = getelementptr inbounds i8*, i8** %367, i64 3
%369 = load i8*, i8** %368
%370 = call float @atoi(i8* %369)
%371 = fadd float %366, %370
%372 = call i32 @snprintf(i8* %362, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %371)
%373 = load i8**, i8*** %5
%374 = getelementptr inbounds i8*, i8** %373, i64 3
%375 = load i8*, i8** %374
%376 = load i8**, i8*** %5
%377 = getelementptr inbounds i8*, i8** %376, i64 3
%378 = load i8*, i8** %377
%379 = call float @atoi(i8* %378)
%380 = load i8**, i8*** %6
%381 = getelementptr inbounds i8*, i8** %380, i64 2
%382 = load i8*, i8** %381
%383 = call float @atoi(i8* %382)
%384 = fadd float %379, %383
%385 = call i32 @snprintf(i8* %375, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %384)
%386 = load i8**, i8*** %5
%387 = getelementptr inbounds i8*, i8** %386, i64 4
%388 = load i8*, i8** %387
%389 = load i8**, i8*** %5
%390 = getelementptr inbounds i8*, i8** %389, i64 2
%391 = load i8*, i8** %390
%392 = call float @atoi(i8* %391)
%393 = load i8**, i8*** %5
%394 = getelementptr inbounds i8*, i8** %393, i64 3
%395 = load i8*, i8** %394
%396 = call float @atoi(i8* %395)
%397 = fsub float %392, %396
%398 = call i32 @sprintf(i8* %388, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), float %397)
%399 = load i8**, i8*** %5
%400 = getelementptr inbounds i8*, i8** %399, i64 6
%401 = load i8*, i8** %400
%402 = load i8**, i8*** %5
%403 = getelementptr inbounds i8*, i8** %402, i64 2
%404 = load i8*, i8** %403
%405 = call float @atoi(i8* %404)
%406 = load i8**, i8*** %5
%407 = getelementptr inbounds i8*, i8** %406, i64 3
%408 = load i8*, i8** %407
%409 = call float @atoi(i8* %408)
%410 = fdiv float %405, %409
%411 = call i32 @sprintf(i8* %401, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float %410)
br label %412
412: ; preds = %359, %251, %155, %61
ret void
}

LLVM IR (-O2):
@.str = [3 x i8] c"%d\00"
@.str.1 = [5 x i8] c"%.2f\00"
@.str.2 = [4 x i8] c"%.f\00"
define void @gera_dados(i32 %0, i8** %1, i8** nocapture %2) {
switch i32 %0, label %138 [
i32 0, label %4
i32 1, label %46
i32 2, label %89
]
4: ; preds = %3
%5 = load i8*, i8** %2
store i8* %5, i8** %1
%6 = getelementptr inbounds i8*, i8** %2, i64 2
%7 = load i8*, i8** %6
%8 = tail call float @atoi(i8* %7)
%9 = getelementptr inbounds i8*, i8** %2, i64 3
%10 = load i8*, i8** %9
%11 = tail call float @atoi(i8* %10)
%12 = fcmp ult float %8, %11
br i1 %12, label %21, label %13
13: ; preds = %4
%14 = fcmp oeq float %8, %11
%15 = getelementptr inbounds i8*, i8** %1, i64 1
%16 = load i8*, i8** %15
br i1 %14, label %17, label %19
17: ; preds = %13
%18 = tail call i32 @snprintf(i8* %16, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
br label %25
19: ; preds = %13
%20 = tail call i32 @snprintf(i8* %16, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 2.000000e+00)
br label %25
21: ; preds = %4
%22 = getelementptr inbounds i8*, i8** %1, i64 1
%23 = load i8*, i8** %22
%24 = tail call i32 @snprintf(i8* %23, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %25
25: ; preds = %17, %19, %21
%26 = phi float [ 0.000000e+00, %17 ], [ 1.000000e+00, %19 ], [ 0.000000e+00, %21 ]
%27 = getelementptr inbounds i8*, i8** %1, i64 5
%28 = load i8*, i8** %27
%29 = tail call i32 @snprintf(i8* %28, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %26)
%30 = getelementptr inbounds i8*, i8** %1, i64 2
%31 = load i8*, i8** %30
%32 = load i8*, i8** %6
%33 = tail call i32 @strcpy(i8* %31, i8* %32)
%34 = getelementptr inbounds i8*, i8** %1, i64 3
%35 = load i8*, i8** %34
%36 = load i8*, i8** %9
%37 = tail call i32 @strcpy(i8* %35, i8* %36)
%38 = getelementptr inbounds i8*, i8** %1, i64 4
%39 = load i8*, i8** %38
%40 = load i8*, i8** %30
%41 = tail call float @atoi(i8* %40)
%42 = load i8*, i8** %34
%43 = tail call float @atoi(i8* %42)
%44 = fsub float %41, %43
%45 = tail call i32 @snprintf(i8* %39, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %44)
br label %187
46: ; preds = %3
%47 = getelementptr inbounds i8*, i8** %2, i64 1
%48 = load i8*, i8** %47
store i8* %48, i8** %1
%49 = getelementptr inbounds i8*, i8** %2, i64 3
%50 = load i8*, i8** %49
%51 = tail call float @atoi(i8* %50)
%52 = getelementptr inbounds i8*, i8** %2, i64 2
%53 = load i8*, i8** %52
%54 = tail call float @atoi(i8* %53)
%55 = fcmp ult float %51, %54
br i1 %55, label %64, label %56
56: ; preds = %46
%57 = fcmp oeq float %51, %54
%58 = getelementptr inbounds i8*, i8** %1, i64 1
%59 = load i8*, i8** %58
br i1 %57, label %60, label %62
60: ; preds = %56
%61 = tail call i32 @snprintf(i8* %59, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 1.000000e+00)
br label %68
62: ; preds = %56
%63 = tail call i32 @snprintf(i8* %59, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 2.000000e+00)
br label %68
64: ; preds = %46
%65 = getelementptr inbounds i8*, i8** %1, i64 1
%66 = load i8*, i8** %65
%67 = tail call i32 @snprintf(i8* %66, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float 0.000000e+00)
br label %68
68: ; preds = %60, %62, %64
%69 = phi float [ 0.000000e+00, %60 ], [ 1.000000e+00, %62 ], [ 0.000000e+00, %64 ]
%70 = getelementptr inbounds i8*, i8** %1, i64 5
%71 = load i8*, i8** %70
%72 = tail call i32 @snprintf(i8* %71, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %69)
%73 = getelementptr inbounds i8*, i8** %1, i64 2
%74 = load i8*, i8** %73
%75 = load i8*, i8** %49
%76 = tail call i32 @strcpy(i8* %74, i8* %75)
%77 = getelementptr inbounds i8*, i8** %1, i64 3
%78 = load i8*, i8** %77
%79 = load i8*, i8** %52
%80 = tail call i32 @strcpy(i8* %78, i8* %79)
%81 = getelementptr inbounds i8*, i8** %1, i64 4
%82 = load i8*, i8** %81
%83 = load i8*, i8** %73
%84 = tail call float @atoi(i8* %83)
%85 = load i8*, i8** %77
%86 = tail call float @atoi(i8* %85)
%87 = fsub float %84, %86
%88 = tail call i32 @sprintf(i8* dereferenceable(1) %82, i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), float %87)
br label %187
89: ; preds = %3
%90 = load i8*, i8** %2
store i8* %90, i8** %1
%91 = getelementptr inbounds i8*, i8** %2, i64 2
%92 = load i8*, i8** %91
%93 = tail call float @atoi(i8* %92)
%94 = getelementptr inbounds i8*, i8** %2, i64 3
%95 = load i8*, i8** %94
%96 = tail call float @atoi(i8* %95)
%97 = fcmp ult float %93, %96
br i1 %97, label %115, label %98
98: ; preds = %89
%99 = fcmp oeq float %93, %96
%100 = getelementptr inbounds i8*, i8** %1, i64 1
%101 = load i8*, i8** %100
br i1 %99, label %102, label %106
102: ; preds = %98
%103 = getelementptr inbounds i8, i8* %101, i64 1
%104 = tail call float @atoi(i8* %103)
%105 = tail call i32 @snprintf(i8* %101, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %104)
br label %115
106: ; preds = %98
%107 = tail call float @atoi(i8* %101)
%108 = fadd float %107, 2.000000e+00
%109 = tail call i32 @snprintf(i8* %101, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %108)
%110 = getelementptr inbounds i8*, i8** %1, i64 5
%111 = load i8*, i8** %110
%112 = tail call float @atoi(i8* %111)
%113 = fadd float %112, 1.000000e+00
%114 = tail call i32 @snprintf(i8* %111, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %113)
br label %115
115: ; preds = %102, %106, %89
%116 = getelementptr inbounds i8*, i8** %1, i64 2
%117 = load i8*, i8** %116
%118 = tail call float @atoi(i8* %117)
%119 = load i8*, i8** %91
%120 = tail call float @atoi(i8* %119)
%121 = fadd float %118, %120
%122 = tail call i32 @snprintf(i8* %117, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %121)
%123 = getelementptr inbounds i8*, i8** %1, i64 3
%124 = load i8*, i8** %123
%125 = tail call float @atoi(i8* %124)
%126 = load i8*, i8** %94
%127 = tail call float @atoi(i8* %126)
%128 = fadd float %125, %127
%129 = tail call i32 @snprintf(i8* %124, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %128)
%130 = getelementptr inbounds i8*, i8** %1, i64 4
%131 = load i8*, i8** %130
%132 = load i8*, i8** %116
%133 = tail call float @atoi(i8* %132)
%134 = load i8*, i8** %123
%135 = tail call float @atoi(i8* %134)
%136 = fsub float %133, %135
%137 = tail call i32 @snprintf(i8* %131, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %136)
br label %187
138: ; preds = %3
%139 = getelementptr inbounds i8*, i8** %2, i64 1
%140 = load i8*, i8** %139
store i8* %140, i8** %1
%141 = getelementptr inbounds i8*, i8** %2, i64 3
%142 = load i8*, i8** %141
%143 = tail call float @atoi(i8* %142)
%144 = getelementptr inbounds i8*, i8** %2, i64 2
%145 = load i8*, i8** %144
%146 = tail call float @atoi(i8* %145)
%147 = fcmp ult float %143, %146
br i1 %147, label %164, label %148
148: ; preds = %138
%149 = fcmp oeq float %143, %146
%150 = getelementptr inbounds i8*, i8** %1, i64 1
%151 = load i8*, i8** %150
%152 = tail call float @atoi(i8* %151)
br i1 %149, label %159, label %153
153: ; preds = %148
%154 = fadd float %152, 2.000000e+00
%155 = tail call i32 @snprintf(i8* %151, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %154)
%156 = getelementptr inbounds i8*, i8** %1, i64 5
%157 = load i8*, i8** %156
%158 = tail call float @atoi(i8* %157)
br label %159
159: ; preds = %148, %153
%160 = phi float [ %158, %153 ], [ %152, %148 ]
%161 = phi i8* [ %157, %153 ], [ %151, %148 ]
%162 = fadd float %160, 1.000000e+00
%163 = tail call i32 @snprintf(i8* %161, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %162)
br label %164
164: ; preds = %159, %138
%165 = getelementptr inbounds i8*, i8** %1, i64 2
%166 = load i8*, i8** %165
%167 = tail call float @atoi(i8* %166)
%168 = load i8*, i8** %141
%169 = tail call float @atoi(i8* %168)
%170 = fadd float %167, %169
%171 = tail call i32 @snprintf(i8* %166, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %170)
%172 = getelementptr inbounds i8*, i8** %1, i64 3
%173 = load i8*, i8** %172
%174 = tail call float @atoi(i8* %173)
%175 = load i8*, i8** %144
%176 = tail call float @atoi(i8* %175)
%177 = fadd float %174, %176
%178 = tail call i32 @snprintf(i8* %173, i32 3, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float %177)
%179 = getelementptr inbounds i8*, i8** %1, i64 4
%180 = load i8*, i8** %179
%181 = load i8*, i8** %165
%182 = tail call float @atoi(i8* %181)
%183 = load i8*, i8** %172
%184 = tail call float @atoi(i8* %183)
%185 = fsub float %182, %184
%186 = tail call i32 @sprintf(i8* dereferenceable(1) %180, i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), float %185)
br label %187
187: ; preds = %164, %115, %68, %25
%188 = phi i8** [ %165, %164 ], [ %116, %115 ], [ %73, %68 ], [ %30, %25 ]
%189 = phi i8** [ %172, %164 ], [ %123, %115 ], [ %77, %68 ], [ %34, %25 ]
%190 = getelementptr inbounds i8*, i8** %1, i64 6
%191 = load i8*, i8** %190
%192 = load i8*, i8** %188
%193 = tail call float @atoi(i8* %192)
%194 = load i8*, i8** %189
%195 = tail call float @atoi(i8* %194)
%196 = fdiv float %193, %195
%197 = tail call i32 @sprintf(i8* dereferenceable(1) %191, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float %196)
ret void
}