#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 */
char *_and_(char *, char *);
char *cond(char *, char *, char *);
char *contains(char *, char *);
char *format_string(char *);
int /*<<< orphan*/ free(char *);
int strlen(char *);
char *upper(char *);
char *where(char *);
char *filter_task(char *id, char *name, char *state, char *est_start,
                  char *est_end, char *start, char *end, char *prior,
                  char *type, char *est_time, char *time) {
  char *f_state = NULL;
  char *u_state = NULL;
  if (strlen(state) > 0) {
    f_state = format_string(state);
    u_state = upper(f_state);
  }
  char *f_est_start = NULL;
  if (strlen(est_start) > 0)
    f_est_start = format_string(est_start);
  char *f_est_end = NULL;
  if (strlen(est_end) > 0)
    f_est_end = format_string(est_end);
  char *f_start = NULL;
  if (strlen(start) > 0)
    f_start = format_string(start);
  char *f_end = NULL;
  if (strlen(end) > 0)
    f_end = format_string(end);
  char *u_prior = NULL;
  char *f_prior = NULL;
  if (strlen(prior) > 0) {
    f_prior = format_string(prior);
    u_prior = upper(f_prior);
  }
  char *u_type = NULL;
  char *f_type = NULL;
  if (strlen(type) > 0) {
    f_type = format_string(type);
    u_type = upper(f_type);
  }
  char *where_part = NULL;
  if ((strlen(id) > 0 || strlen(name) > 0 || strlen(state) > 0 ||
       strlen(est_start) > 0 || strlen(est_end) > 0 || strlen(start) > 0 ||
       strlen(end) > 0 || strlen(prior) > 0 || strlen(type) > 0 ||
       strlen(est_time) > 0 || strlen(time) > 0)) {
    if (strlen(id) > 0) {
      if (where_part == NULL)
        where_part = cond("ID", "=", id);
      else
        where_part = _and_(where_part, cond("ID", "=", id));
    }
    if (u_state != NULL) {
      if (where_part == NULL)
        where_part = cond("ESTADO_TAREA", "=", u_state);
      else
        where_part = _and_(where_part, cond("ESTADO_TAREA", "=", u_state));
    }
    if (name != NULL) {
      if (where_part == NULL)
        where_part = contains("NOMBRE_TAREA", name);
      else
        where_part = _and_(where_part, contains("NOMBRE_TAREA", name));
    }
    if (f_est_start != NULL) {
      if (where_part == NULL)
        where_part = cond("FECHA_INICIO_ESTIMADA", "=", f_est_start);
      else
        where_part =
            _and_(where_part, cond("FECHA_INICIO_ESTIMADA", "=", f_est_start));
    }
    if (f_est_end != NULL) {
      if (where_part == NULL)
        where_part = cond("FECHA_FINAL_ESTIMADA", "=", f_est_end);
      else
        where_part =
            _and_(where_part, cond("FECHA_FINAL_ESTIMADA", "=", f_est_end));
    }
    if (f_start != NULL) {
      if (where_part == NULL)
        where_part = cond("FECHA_INICIO_REAL", "=", f_start);
      else
        where_part = _and_(where_part, cond("FECHA_INICIO_REAL", "=", f_start));
    }
    if (f_end != NULL) {
      if (where_part == NULL)
        where_part = cond("FECHA_FINAL_REAL", "=", f_end);
      else
        where_part = _and_(where_part, cond("FECHA_FINAL_REAL", "=", f_end));
    }
    if (u_prior != NULL) {
      if (where_part == NULL)
        where_part = cond("PRIORIDAD_TAREA", "=", u_prior);
      else
        where_part = _and_(where_part, cond("PRIORIDAD_TAREA", "=", u_prior));
    }
    if (u_type != NULL) {
      if (where_part == NULL)
        where_part = cond("TIPO_TAREA", "=", u_type);
      else
        where_part = _and_(where_part, cond("TIPO_TAREA", "=", u_type));
    }
    if (strlen(est_time) > 1) {
      if (where_part == NULL)
        where_part = cond("TIEMPO_ESTIMADO", "=", est_time);
      else
        where_part = _and_(where_part, cond("TIEMPO_ESTIMADO", "=", est_time));
    }
    if (strlen(time) > 1) {
      if (where_part == NULL)
        where_part = cond("TIEMPO_REAL", "=", time);
      else
        where_part = _and_(where_part, cond("TIEMPO_REAL", "=", time));
    }
  }
  char *where_final = NULL;
  if (where_part != NULL)
    where_final = where(where_part);
  if (u_state != NULL)
    free(u_state);
  if (u_prior != NULL)
    free(u_prior);
  if (u_type != NULL)
    free(u_type);
  if (f_prior != NULL)
    free(f_prior);
  if (f_state != NULL)
    free(f_state);
  if (f_type != NULL)
    free(f_type);
  if (f_est_start != NULL)
    free(f_est_start);
  if (f_est_end != NULL)
    free(f_est_end);
  if (f_start != NULL)
    free(f_start);
  if (f_end != NULL)
    free(f_end);
  return where_final;
}


x86 assembly (clang, -O0):
<filter_task>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    11f3 <filter_task+0x73>
mov    -0x18(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
call   1090 <upper@plt>
mov    %rax,-0x40(%rbp)
movq   $0x0,-0x48(%rbp)
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    121a <filter_task+0x9a>
mov    -0x20(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x48(%rbp)
movq   $0x0,-0x50(%rbp)
mov    -0x28(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    1241 <filter_task+0xc1>
mov    -0x28(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x50(%rbp)
movq   $0x0,-0x58(%rbp)
mov    -0x30(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    1268 <filter_task+0xe8>
mov    -0x30(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x58(%rbp)
movq   $0x0,-0x60(%rbp)
mov    0x10(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    128f <filter_task+0x10f>
mov    0x10(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x60(%rbp)
movq   $0x0,-0x68(%rbp)
movq   $0x0,-0x70(%rbp)
mov    0x18(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    12cb <filter_task+0x14b>
mov    0x18(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rdi
call   1090 <upper@plt>
mov    %rax,-0x68(%rbp)
movq   $0x0,-0x78(%rbp)
movq   $0x0,-0x80(%rbp)
mov    0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    1307 <filter_task+0x187>
mov    0x20(%rbp),%rdi
call   1080 <format_string@plt>
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rdi
call   1090 <upper@plt>
mov    %rax,-0x78(%rbp)
movq   $0x0,-0x88(%rbp)
mov    -0x8(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    -0x10(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    -0x28(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    -0x30(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    0x10(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    0x18(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    0x28(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jg     13d8 <filter_task+0x258>
mov    0x30(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    1938 <filter_task+0x7b8>
mov    -0x8(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%eax
jle    145b <filter_task+0x2db>
cmpq   $0x0,-0x88(%rbp)
jne    141b <filter_task+0x29b>
mov    -0x8(%rbp),%rdx
lea    0xbfd(%rip),%rdi
lea    0xbf9(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    1456 <filter_task+0x2d6>
mov    -0x88(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x8(%rbp),%rdx
lea    0xbcc(%rip),%rdi
lea    0xbc8(%rip),%rsi
call   1050 <cond@plt>
mov    -0x98(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    145b <filter_task+0x2db>
cmpq   $0x0,-0x40(%rbp)
je     14d7 <filter_task+0x357>
cmpq   $0x0,-0x88(%rbp)
jne    1497 <filter_task+0x317>
mov    -0x40(%rbp),%rdx
lea    0xb86(%rip),%rdi
lea    0xb7d(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    14d2 <filter_task+0x352>
mov    -0x88(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0x40(%rbp),%rdx
lea    0xb55(%rip),%rdi
lea    0xb4c(%rip),%rsi
call   1050 <cond@plt>
mov    -0xa0(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    14d7 <filter_task+0x357>
cmpq   $0x0,-0x10(%rbp)
je     1545 <filter_task+0x3c5>
cmpq   $0x0,-0x88(%rbp)
jne    150c <filter_task+0x38c>
mov    -0x10(%rbp),%rsi
lea    0xb17(%rip),%rdi
call   1060 <contains@plt>
mov    %rax,-0x88(%rbp)
jmp    1540 <filter_task+0x3c0>
mov    -0x88(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0x10(%rbp),%rsi
lea    0xaed(%rip),%rdi
call   1060 <contains@plt>
mov    -0xa8(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    1545 <filter_task+0x3c5>
cmpq   $0x0,-0x48(%rbp)
je     15c1 <filter_task+0x441>
cmpq   $0x0,-0x88(%rbp)
jne    1581 <filter_task+0x401>
mov    -0x48(%rbp),%rdx
lea    0xab6(%rip),%rdi
lea    0xa93(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    15bc <filter_task+0x43c>
mov    -0x88(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x48(%rbp),%rdx
lea    0xa85(%rip),%rdi
lea    0xa62(%rip),%rsi
call   1050 <cond@plt>
mov    -0xb0(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    15c1 <filter_task+0x441>
cmpq   $0x0,-0x50(%rbp)
je     163d <filter_task+0x4bd>
cmpq   $0x0,-0x88(%rbp)
jne    15fd <filter_task+0x47d>
mov    -0x50(%rbp),%rdx
lea    0xa50(%rip),%rdi
lea    0xa17(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    1638 <filter_task+0x4b8>
mov    -0x88(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x50(%rbp),%rdx
lea    0xa1f(%rip),%rdi
lea    0x9e6(%rip),%rsi
call   1050 <cond@plt>
mov    -0xb8(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    163d <filter_task+0x4bd>
cmpq   $0x0,-0x58(%rbp)
je     16b9 <filter_task+0x539>
cmpq   $0x0,-0x88(%rbp)
jne    1679 <filter_task+0x4f9>
mov    -0x58(%rbp),%rdx
lea    0x9e9(%rip),%rdi
lea    0x99b(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    16b4 <filter_task+0x534>
mov    -0x88(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0x58(%rbp),%rdx
lea    0x9b8(%rip),%rdi
lea    0x96a(%rip),%rsi
call   1050 <cond@plt>
mov    -0xc0(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    16b9 <filter_task+0x539>
cmpq   $0x0,-0x60(%rbp)
je     1735 <filter_task+0x5b5>
cmpq   $0x0,-0x88(%rbp)
jne    16f5 <filter_task+0x575>
mov    -0x60(%rbp),%rdx
lea    0x97f(%rip),%rdi
lea    0x91f(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    1730 <filter_task+0x5b0>
mov    -0x88(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0x60(%rbp),%rdx
lea    0x94e(%rip),%rdi
lea    0x8ee(%rip),%rsi
call   1050 <cond@plt>
mov    -0xc8(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    1735 <filter_task+0x5b5>
cmpq   $0x0,-0x68(%rbp)
je     17b1 <filter_task+0x631>
cmpq   $0x0,-0x88(%rbp)
jne    1771 <filter_task+0x5f1>
mov    -0x68(%rbp),%rdx
lea    0x914(%rip),%rdi
lea    0x8a3(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    17ac <filter_task+0x62c>
mov    -0x88(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x68(%rbp),%rdx
lea    0x8e3(%rip),%rdi
lea    0x872(%rip),%rsi
call   1050 <cond@plt>
mov    -0xd0(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    17b1 <filter_task+0x631>
cmpq   $0x0,-0x78(%rbp)
je     182d <filter_task+0x6ad>
cmpq   $0x0,-0x88(%rbp)
jne    17ed <filter_task+0x66d>
mov    -0x78(%rbp),%rdx
lea    0x8a8(%rip),%rdi
lea    0x827(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    1828 <filter_task+0x6a8>
mov    -0x88(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0x78(%rbp),%rdx
lea    0x877(%rip),%rdi
lea    0x7f6(%rip),%rsi
call   1050 <cond@plt>
mov    -0xd8(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    182d <filter_task+0x6ad>
mov    0x28(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
jle    18b0 <filter_task+0x730>
cmpq   $0x0,-0x88(%rbp)
jne    1870 <filter_task+0x6f0>
mov    0x28(%rbp),%rdx
lea    0x830(%rip),%rdi
lea    0x7a4(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    18ab <filter_task+0x72b>
mov    -0x88(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    0x28(%rbp),%rdx
lea    0x7ff(%rip),%rdi
lea    0x773(%rip),%rsi
call   1050 <cond@plt>
mov    -0xe0(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    18b0 <filter_task+0x730>
mov    0x30(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
jle    1933 <filter_task+0x7b3>
cmpq   $0x0,-0x88(%rbp)
jne    18f3 <filter_task+0x773>
mov    0x30(%rbp),%rdx
lea    0x7bd(%rip),%rdi
lea    0x721(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,-0x88(%rbp)
jmp    192e <filter_task+0x7ae>
mov    -0x88(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    0x30(%rbp),%rdx
lea    0x78c(%rip),%rdi
lea    0x6f0(%rip),%rsi
call   1050 <cond@plt>
mov    -0xe8(%rbp),%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
mov    %rax,-0x88(%rbp)
jmp    1933 <filter_task+0x7b3>
jmp    1938 <filter_task+0x7b8>
movq   $0x0,-0x90(%rbp)
cmpq   $0x0,-0x88(%rbp)
je     1964 <filter_task+0x7e4>
mov    -0x88(%rbp),%rdi
call   1070 <where@plt>
mov    %rax,-0x90(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     1978 <filter_task+0x7f8>
mov    -0x40(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x68(%rbp)
je     198c <filter_task+0x80c>
mov    -0x68(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x78(%rbp)
je     19a0 <filter_task+0x820>
mov    -0x78(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x70(%rbp)
je     19b4 <filter_task+0x834>
mov    -0x70(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x38(%rbp)
je     19c8 <filter_task+0x848>
mov    -0x38(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x80(%rbp)
je     19dc <filter_task+0x85c>
mov    -0x80(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x48(%rbp)
je     19f0 <filter_task+0x870>
mov    -0x48(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x50(%rbp)
je     1a04 <filter_task+0x884>
mov    -0x50(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x58(%rbp)
je     1a18 <filter_task+0x898>
mov    -0x58(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x60(%rbp)
je     1a2c <filter_task+0x8ac>
mov    -0x60(%rbp),%rdi
call   1030 <free@plt>
mov    -0x90(%rbp),%rax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<filter_task>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r9,%r12
mov    %r8,%rbx
mov    %rcx,%rbp
mov    %rdx,%r15
mov    %rsi,0x20(%rsp)
mov    %rdi,%r14
mov    %rdx,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    11c5 <filter_task+0x45>
mov    %r15,%rdi
call   1080 <format_string@plt>
mov    %rax,0x18(%rsp)
mov    %rax,%rdi
call   1090 <upper@plt>
jmp    11ce <filter_task+0x4e>
xor    %eax,%eax
mov    %rax,0x18(%rsp)
xor    %eax,%eax
mov    %rax,0x40(%rsp)
mov    %rbp,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    11e9 <filter_task+0x69>
mov    %rbp,%rdi
call   1080 <format_string@plt>
jmp    11eb <filter_task+0x6b>
xor    %eax,%eax
mov    %rax,0x38(%rsp)
mov    %rbx,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    1206 <filter_task+0x86>
mov    %rbx,%rdi
call   1080 <format_string@plt>
jmp    1208 <filter_task+0x88>
xor    %eax,%eax
mov    %rax,0x30(%rsp)
mov    %r12,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
mov    %r12,0x60(%rsp)
mov    %rbx,0x68(%rsp)
mov    %rbp,0x70(%rsp)
jle    1235 <filter_task+0xb5>
mov    %r12,%rdi
call   1080 <format_string@plt>
mov    %rax,%rbp
jmp    1237 <filter_task+0xb7>
xor    %ebp,%ebp
mov    0xb8(%rsp),%r12
mov    0xb0(%rsp),%r13
mov    %r13,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
mov    %rbp,0x50(%rsp)
jle    1262 <filter_task+0xe2>
mov    %r13,%rdi
call   1080 <format_string@plt>
jmp    1264 <filter_task+0xe4>
xor    %eax,%eax
mov    %rax,0x48(%rsp)
mov    0xc0(%rsp),%r13
mov    %r12,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    1299 <filter_task+0x119>
mov    %r12,%rdi
call   1080 <format_string@plt>
mov    %rax,0x10(%rsp)
mov    %rax,%rdi
call   1090 <upper@plt>
mov    %rax,0x8(%rsp)
jmp    12a7 <filter_task+0x127>
xor    %eax,%eax
mov    %rax,0x8(%rsp)
xor    %eax,%eax
mov    %rax,0x10(%rsp)
mov    %r13,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    12cf <filter_task+0x14f>
mov    %r13,%rdi
call   1080 <format_string@plt>
mov    %rax,0x58(%rsp)
mov    %rax,%rdi
call   1090 <upper@plt>
mov    %rax,0x28(%rsp)
jmp    12dd <filter_task+0x15d>
xor    %eax,%eax
mov    %rax,0x28(%rsp)
xor    %eax,%eax
mov    %rax,0x58(%rsp)
mov    %r14,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0x20(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    %r15,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0x70(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0x68(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0x60(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0xb0(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    %r12,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    %r13,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0xc8(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jg     1384 <filter_task+0x204>
mov    0xd0(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    17e5 <filter_task+0x665>
mov    %r14,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    13f4 <filter_task+0x274>
lea    0xc69(%rip),%rdi
lea    0xc65(%rip),%rsi
mov    %r14,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
mov    0x40(%rsp),%rdx
test   %rdx,%rdx
mov    0x38(%rsp),%r14
mov    0x30(%rsp),%r15
mov    0x50(%rsp),%r12
mov    0xc8(%rsp),%rbp
je     1432 <filter_task+0x2b2>
test   %r13,%r13
mov    0x28(%rsp),%rbx
je     141a <filter_task+0x29a>
lea    0xc2a(%rip),%rdi
lea    0xc21(%rip),%rsi
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    142d <filter_task+0x2ad>
mov    0x40(%rsp),%rdx
test   %rdx,%rdx
mov    0x38(%rsp),%r14
mov    0x30(%rsp),%r15
mov    0x50(%rsp),%r12
mov    0x28(%rsp),%rbx
mov    0xc8(%rsp),%rbp
je     145f <filter_task+0x2df>
lea    0xbe4(%rip),%rdi
lea    0xbdb(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,%r13
jmp    1437 <filter_task+0x2b7>
mov    0x28(%rsp),%rbx
mov    0x20(%rsp),%rsi
test   %rsi,%rsi
je     1478 <filter_task+0x2f8>
test   %r13,%r13
je     1469 <filter_task+0x2e9>
lea    0xbc5(%rip),%rdi
call   1060 <contains@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    1475 <filter_task+0x2f5>
mov    0x20(%rsp),%rsi
test   %rsi,%rsi
je     14a5 <filter_task+0x325>
lea    0xba2(%rip),%rdi
call   1060 <contains@plt>
mov    %rax,%r13
test   %r14,%r14
je     14c3 <filter_task+0x343>
test   %r13,%r13
je     14aa <filter_task+0x32a>
lea    0xb96(%rip),%rdi
lea    0xb73(%rip),%rsi
mov    %r14,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    14c0 <filter_task+0x340>
test   %r14,%r14
je     14f0 <filter_task+0x370>
lea    0xb6e(%rip),%rdi
lea    0xb4b(%rip),%rsi
mov    %r14,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
test   %r15,%r15
je     150e <filter_task+0x38e>
test   %r13,%r13
je     14f5 <filter_task+0x375>
lea    0xb61(%rip),%rdi
lea    0xb28(%rip),%rsi
mov    %r15,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    150b <filter_task+0x38b>
test   %r15,%r15
je     153b <filter_task+0x3bb>
lea    0xb39(%rip),%rdi
lea    0xb00(%rip),%rsi
mov    %r15,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
test   %r12,%r12
je     1559 <filter_task+0x3d9>
test   %r13,%r13
je     1540 <filter_task+0x3c0>
lea    0xb2b(%rip),%rdi
lea    0xadd(%rip),%rsi
mov    %r12,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    1556 <filter_task+0x3d6>
test   %r12,%r12
je     1588 <filter_task+0x408>
lea    0xb03(%rip),%rdi
lea    0xab5(%rip),%rsi
mov    %r12,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
mov    0x48(%rsp),%rdx
test   %rdx,%rdx
je     15a8 <filter_task+0x428>
test   %r13,%r13
je     1592 <filter_task+0x412>
lea    0xaed(%rip),%rdi
lea    0xa8d(%rip),%rsi
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    15a5 <filter_task+0x425>
mov    0x48(%rsp),%rdx
test   %rdx,%rdx
je     15d7 <filter_task+0x457>
lea    0xac3(%rip),%rdi
lea    0xa63(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,%r13
mov    0x8(%rsp),%rdx
test   %rdx,%rdx
je     15f7 <filter_task+0x477>
test   %r13,%r13
je     15e1 <filter_task+0x461>
lea    0xaaf(%rip),%rdi
lea    0xa3e(%rip),%rsi
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    15f4 <filter_task+0x474>
mov    0x8(%rsp),%rdx
test   %rdx,%rdx
je     1624 <filter_task+0x4a4>
lea    0xa85(%rip),%rdi
lea    0xa14(%rip),%rsi
call   1050 <cond@plt>
mov    %rax,%r13
test   %rbx,%rbx
je     1642 <filter_task+0x4c2>
test   %r13,%r13
je     1629 <filter_task+0x4a9>
lea    0xa75(%rip),%rdi
lea    0x9f4(%rip),%rsi
mov    %rbx,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    163f <filter_task+0x4bf>
test   %rbx,%rbx
je     167f <filter_task+0x4ff>
lea    0xa4d(%rip),%rdi
lea    0x9cc(%rip),%rsi
mov    %rbx,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
mov    0xd0(%rsp),%rbx
mov    %rbp,%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
jle    16ad <filter_task+0x52d>
test   %r13,%r13
je     1694 <filter_task+0x514>
lea    0xa25(%rip),%rdi
lea    0x999(%rip),%rsi
mov    %rbp,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    16aa <filter_task+0x52a>
mov    %rbp,%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
mov    0xd0(%rsp),%rbx
jle    16e2 <filter_task+0x562>
lea    0x9ed(%rip),%rdi
lea    0x961(%rip),%rsi
mov    %rbp,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
mov    %rbx,%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
jle    170c <filter_task+0x58c>
test   %r13,%r13
je     16f3 <filter_task+0x573>
lea    0x9d2(%rip),%rdi
lea    0x936(%rip),%rsi
mov    %rbx,%rdx
call   1050 <cond@plt>
mov    %r13,%rdi
mov    %rax,%rsi
call   10a0 <_and_@plt>
jmp    1709 <filter_task+0x589>
mov    %rbx,%rdi
call   1040 <strlen@plt>
cmp    $0x1,%eax
jle    17d1 <filter_task+0x651>
lea    0x99e(%rip),%rdi
lea    0x902(%rip),%rsi
mov    %rbx,%rdx
call   1050 <cond@plt>
mov    %rax,%r13
test   %r13,%r13
je     171e <filter_task+0x59e>
mov    %r13,%rdi
call   1070 <where@plt>
mov    %rax,%r13
jmp    1721 <filter_task+0x5a1>
xor    %r13d,%r13d
mov    0x18(%rsp),%rbp
mov    0x10(%rsp),%rbx
mov    0x8(%rsp),%rax
mov    0x40(%rsp),%rdi
test   %rdi,%rdi
je     1744 <filter_task+0x5c4>
call   1030 <free@plt>
mov    0x8(%rsp),%rax
test   %rax,%rax
je     1751 <filter_task+0x5d1>
mov    %rax,%rdi
call   1030 <free@plt>
mov    0x28(%rsp),%rdi
test   %rdi,%rdi
je     1760 <filter_task+0x5e0>
call   1030 <free@plt>
test   %rbx,%rbx
je     176d <filter_task+0x5ed>
mov    %rbx,%rdi
call   1030 <free@plt>
test   %rbp,%rbp
je     177a <filter_task+0x5fa>
mov    %rbp,%rdi
call   1030 <free@plt>
mov    0x58(%rsp),%rdi
test   %rdi,%rdi
je     1789 <filter_task+0x609>
call   1030 <free@plt>
test   %r14,%r14
je     1796 <filter_task+0x616>
mov    %r14,%rdi
call   1030 <free@plt>
test   %r15,%r15
je     17a3 <filter_task+0x623>
mov    %r15,%rdi
call   1030 <free@plt>
test   %r12,%r12
je     17b0 <filter_task+0x630>
mov    %r12,%rdi
call   1030 <free@plt>
mov    0x48(%rsp),%rdi
test   %rdi,%rdi
je     17bf <filter_task+0x63f>
call   1030 <free@plt>
mov    %r13,%rax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %r13d,%r13d
mov    0x18(%rsp),%rbp
mov    0x10(%rsp),%rbx
test   %rbx,%rbx
jne    1765 <filter_task+0x5e5>
jmp    176d <filter_task+0x5ed>
xor    %r13d,%r13d
mov    0x18(%rsp),%rbp
mov    0x38(%rsp),%r14
mov    0x30(%rsp),%r15
mov    0x50(%rsp),%r12
jmp    1726 <filter_task+0x5a6>

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

LLVM IR (-O2):
@.str = [3 x i8] c"ID\00"
@.str.1 = [2 x i8] c"=\00"
@.str.2 = [13 x i8] c"ESTADO_TAREA\00"
@.str.3 = [13 x i8] c"NOMBRE_TAREA\00"
@.str.4 = [22 x i8] c"FECHA_INICIO_ESTIMADA\00"
@.str.5 = [21 x i8] c"FECHA_FINAL_ESTIMADA\00"
@.str.6 = [18 x i8] c"FECHA_INICIO_REAL\00"
@.str.7 = [17 x i8] c"FECHA_FINAL_REAL\00"
@.str.8 = [16 x i8] c"PRIORIDAD_TAREA\00"
@.str.9 = [11 x i8] c"TIPO_TAREA\00"
@.str.10 = [16 x i8] c"TIEMPO_ESTIMADO\00"
@.str.11 = [12 x i8] c"TIEMPO_REAL\00"
define i8* @filter_task(i8* %0, i8* %1, i8* %2, i8* %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8, i8* %9, i8* %10) {
%12 = tail call i32 @strlen(i8* %2)
%13 = icmp sgt i32 %12, 0
br i1 %13, label %14, label %17
14: ; preds = %11
%15 = tail call i8* @format_string(i8* %2)
%16 = tail call i8* @upper(i8* %15)
br label %17
17: ; preds = %14, %11
%18 = phi i8* [ %15, %14 ], [ null, %11 ]
%19 = phi i8* [ %16, %14 ], [ null, %11 ]
%20 = tail call i32 @strlen(i8* %3)
%21 = icmp sgt i32 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %17
%23 = tail call i8* @format_string(i8* %3)
br label %24
24: ; preds = %22, %17
%25 = phi i8* [ %23, %22 ], [ null, %17 ]
%26 = tail call i32 @strlen(i8* %4)
%27 = icmp sgt i32 %26, 0
br i1 %27, label %28, label %30
28: ; preds = %24
%29 = tail call i8* @format_string(i8* %4)
br label %30
30: ; preds = %28, %24
%31 = phi i8* [ %29, %28 ], [ null, %24 ]
%32 = tail call i32 @strlen(i8* %5)
%33 = icmp sgt i32 %32, 0
br i1 %33, label %34, label %36
34: ; preds = %30
%35 = tail call i8* @format_string(i8* %5)
br label %36
36: ; preds = %34, %30
%37 = phi i8* [ %35, %34 ], [ null, %30 ]
%38 = tail call i32 @strlen(i8* %6)
%39 = icmp sgt i32 %38, 0
br i1 %39, label %40, label %42
40: ; preds = %36
%41 = tail call i8* @format_string(i8* %6)
br label %42
42: ; preds = %40, %36
%43 = phi i8* [ %41, %40 ], [ null, %36 ]
%44 = tail call i32 @strlen(i8* %7)
%45 = icmp sgt i32 %44, 0
br i1 %45, label %46, label %49
46: ; preds = %42
%47 = tail call i8* @format_string(i8* %7)
%48 = tail call i8* @upper(i8* %47)
br label %49
49: ; preds = %46, %42
%50 = phi i8* [ %48, %46 ], [ null, %42 ]
%51 = phi i8* [ %47, %46 ], [ null, %42 ]
%52 = tail call i32 @strlen(i8* %8)
%53 = icmp sgt i32 %52, 0
br i1 %53, label %54, label %57
54: ; preds = %49
%55 = tail call i8* @format_string(i8* %8)
%56 = tail call i8* @upper(i8* %55)
br label %57
57: ; preds = %54, %49
%58 = phi i8* [ %56, %54 ], [ null, %49 ]
%59 = phi i8* [ %55, %54 ], [ null, %49 ]
%60 = tail call i32 @strlen(i8* %0)
%61 = icmp sgt i32 %60, 0
br i1 %61, label %92, label %62
62: ; preds = %57
%63 = tail call i32 @strlen(i8* %1)
%64 = icmp sgt i32 %63, 0
br i1 %64, label %92, label %65
65: ; preds = %62
%66 = tail call i32 @strlen(i8* %2)
%67 = icmp sgt i32 %66, 0
br i1 %67, label %92, label %68
68: ; preds = %65
%69 = tail call i32 @strlen(i8* %3)
%70 = icmp sgt i32 %69, 0
br i1 %70, label %92, label %71
71: ; preds = %68
%72 = tail call i32 @strlen(i8* %4)
%73 = icmp sgt i32 %72, 0
br i1 %73, label %92, label %74
74: ; preds = %71
%75 = tail call i32 @strlen(i8* %5)
%76 = icmp sgt i32 %75, 0
br i1 %76, label %92, label %77
77: ; preds = %74
%78 = tail call i32 @strlen(i8* %6)
%79 = icmp sgt i32 %78, 0
br i1 %79, label %92, label %80
80: ; preds = %77
%81 = tail call i32 @strlen(i8* %7)
%82 = icmp sgt i32 %81, 0
br i1 %82, label %92, label %83
83: ; preds = %80
%84 = tail call i32 @strlen(i8* %8)
%85 = icmp sgt i32 %84, 0
br i1 %85, label %92, label %86
86: ; preds = %83
%87 = tail call i32 @strlen(i8* %9)
%88 = icmp sgt i32 %87, 0
br i1 %88, label %92, label %89
89: ; preds = %86
%90 = tail call i32 @strlen(i8* %10)
%91 = icmp sgt i32 %90, 0
br i1 %91, label %92, label %224
92: ; preds = %89, %86, %83, %80, %77, %74, %71, %68, %65, %62, %57
%93 = tail call i32 @strlen(i8* %0)
%94 = icmp sgt i32 %93, 0
br i1 %94, label %95, label %98
95: ; preds = %92
%96 = tail call i8* @cond(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %0)
%97 = icmp eq i8* %19, null
br i1 %97, label %107, label %100
98: ; preds = %92
%99 = icmp eq i8* %19, null
br i1 %99, label %110, label %102
100: ; preds = %95
%101 = icmp eq i8* %96, null
br i1 %101, label %102, label %104
102: ; preds = %98, %100
%103 = tail call i8* @cond(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %19)
br label %107
104: ; preds = %100
%105 = tail call i8* @cond(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %19)
%106 = tail call i8* @_and_(i8* %96, i8* %105)
br label %107
107: ; preds = %102, %104, %95
%108 = phi i8* [ %103, %102 ], [ %106, %104 ], [ %96, %95 ]
%109 = icmp eq i8* %1, null
br i1 %109, label %119, label %112
110: ; preds = %98
%111 = icmp eq i8* %1, null
br i1 %111, label %122, label %114
112: ; preds = %107
%113 = icmp eq i8* %108, null
br i1 %113, label %114, label %116
114: ; preds = %110, %112
%115 = tail call i8* @contains(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i8* %1)
br label %119
116: ; preds = %112
%117 = tail call i8* @contains(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i8* %1)
%118 = tail call i8* @_and_(i8* %108, i8* %117)
br label %119
119: ; preds = %114, %116, %107
%120 = phi i8* [ %115, %114 ], [ %118, %116 ], [ %108, %107 ]
%121 = icmp eq i8* %25, null
br i1 %121, label %131, label %124
122: ; preds = %110
%123 = icmp eq i8* %25, null
br i1 %123, label %134, label %126
124: ; preds = %119
%125 = icmp eq i8* %120, null
br i1 %125, label %126, label %128
126: ; preds = %122, %124
%127 = tail call i8* @cond(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %25)
br label %131
128: ; preds = %124
%129 = tail call i8* @cond(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %25)
%130 = tail call i8* @_and_(i8* %120, i8* %129)
br label %131
131: ; preds = %126, %128, %119
%132 = phi i8* [ %127, %126 ], [ %130, %128 ], [ %120, %119 ]
%133 = icmp eq i8* %31, null
br i1 %133, label %143, label %136
134: ; preds = %122
%135 = icmp eq i8* %31, null
br i1 %135, label %146, label %138
136: ; preds = %131
%137 = icmp eq i8* %132, null
br i1 %137, label %138, label %140
138: ; preds = %134, %136
%139 = tail call i8* @cond(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %31)
br label %143
140: ; preds = %136
%141 = tail call i8* @cond(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %31)
%142 = tail call i8* @_and_(i8* %132, i8* %141)
br label %143
143: ; preds = %138, %140, %131
%144 = phi i8* [ %139, %138 ], [ %142, %140 ], [ %132, %131 ]
%145 = icmp eq i8* %37, null
br i1 %145, label %155, label %148
146: ; preds = %134
%147 = icmp eq i8* %37, null
br i1 %147, label %158, label %150
148: ; preds = %143
%149 = icmp eq i8* %144, null
br i1 %149, label %150, label %152
150: ; preds = %146, %148
%151 = tail call i8* @cond(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %37)
br label %155
152: ; preds = %148
%153 = tail call i8* @cond(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %37)
%154 = tail call i8* @_and_(i8* %144, i8* %153)
br label %155
155: ; preds = %150, %152, %143
%156 = phi i8* [ %151, %150 ], [ %154, %152 ], [ %144, %143 ]
%157 = icmp eq i8* %43, null
br i1 %157, label %167, label %160
158: ; preds = %146
%159 = icmp eq i8* %43, null
br i1 %159, label %170, label %162
160: ; preds = %155
%161 = icmp eq i8* %156, null
br i1 %161, label %162, label %164
162: ; preds = %158, %160
%163 = tail call i8* @cond(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %43)
br label %167
164: ; preds = %160
%165 = tail call i8* @cond(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %43)
%166 = tail call i8* @_and_(i8* %156, i8* %165)
br label %167
167: ; preds = %162, %164, %155
%168 = phi i8* [ %163, %162 ], [ %166, %164 ], [ %156, %155 ]
%169 = icmp eq i8* %50, null
br i1 %169, label %179, label %172
170: ; preds = %158
%171 = icmp eq i8* %50, null
br i1 %171, label %182, label %174
172: ; preds = %167
%173 = icmp eq i8* %168, null
br i1 %173, label %174, label %176
174: ; preds = %170, %172
%175 = tail call i8* @cond(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %50)
br label %179
176: ; preds = %172
%177 = tail call i8* @cond(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %50)
%178 = tail call i8* @_and_(i8* %168, i8* %177)
br label %179
179: ; preds = %174, %176, %167
%180 = phi i8* [ %175, %174 ], [ %178, %176 ], [ %168, %167 ]
%181 = icmp eq i8* %58, null
br i1 %181, label %191, label %184
182: ; preds = %170
%183 = icmp eq i8* %58, null
br i1 %183, label %195, label %186
184: ; preds = %179
%185 = icmp eq i8* %180, null
br i1 %185, label %186, label %188
186: ; preds = %182, %184
%187 = tail call i8* @cond(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %58)
br label %191
188: ; preds = %184
%189 = tail call i8* @cond(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %58)
%190 = tail call i8* @_and_(i8* %180, i8* %189)
br label %191
191: ; preds = %186, %188, %179
%192 = phi i8* [ %187, %186 ], [ %190, %188 ], [ %180, %179 ]
%193 = tail call i32 @strlen(i8* %9)
%194 = icmp sgt i32 %193, 1
br i1 %194, label %198, label %205
195: ; preds = %182
%196 = tail call i32 @strlen(i8* %9)
%197 = icmp sgt i32 %196, 1
br i1 %197, label %200, label %209
198: ; preds = %191
%199 = icmp eq i8* %192, null
br i1 %199, label %200, label %202
200: ; preds = %195, %198
%201 = tail call i8* @cond(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %9)
br label %205
202: ; preds = %198
%203 = tail call i8* @cond(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %9)
%204 = tail call i8* @_and_(i8* %192, i8* %203)
br label %205
205: ; preds = %200, %202, %191
%206 = phi i8* [ %201, %200 ], [ %204, %202 ], [ %192, %191 ]
%207 = tail call i32 @strlen(i8* %10)
%208 = icmp sgt i32 %207, 1
br i1 %208, label %212, label %219
209: ; preds = %195
%210 = tail call i32 @strlen(i8* %10)
%211 = icmp sgt i32 %210, 1
br i1 %211, label %214, label %237
212: ; preds = %205
%213 = icmp eq i8* %206, null
br i1 %213, label %214, label %216
214: ; preds = %209, %212
%215 = tail call i8* @cond(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %10)
br label %219
216: ; preds = %212
%217 = tail call i8* @cond(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* %10)
%218 = tail call i8* @_and_(i8* %206, i8* %217)
br label %219
219: ; preds = %205, %216, %214
%220 = phi i8* [ %215, %214 ], [ %218, %216 ], [ %206, %205 ]
%221 = icmp eq i8* %220, null
br i1 %221, label %224, label %222
222: ; preds = %219
%223 = tail call i8* @where(i8* %220)
br label %224
224: ; preds = %89, %222, %219
%225 = phi i8* [ %223, %222 ], [ null, %219 ], [ null, %89 ]
%226 = icmp eq i8* %19, null
br i1 %226, label %229, label %227
227: ; preds = %224
%228 = tail call i32 @free(i8* %19)
br label %229
229: ; preds = %227, %224
%230 = icmp eq i8* %50, null
br i1 %230, label %233, label %231
231: ; preds = %229
%232 = tail call i32 @free(i8* %50)
br label %233
233: ; preds = %231, %229
%234 = icmp eq i8* %58, null
br i1 %234, label %237, label %235
235: ; preds = %233
%236 = tail call i32 @free(i8* %58)
br label %237
237: ; preds = %209, %235, %233
%238 = phi i8* [ %225, %235 ], [ %225, %233 ], [ null, %209 ]
%239 = icmp eq i8* %51, null
br i1 %239, label %242, label %240
240: ; preds = %237
%241 = tail call i32 @free(i8* %51)
br label %242
242: ; preds = %240, %237
%243 = icmp eq i8* %18, null
br i1 %243, label %246, label %244
244: ; preds = %242
%245 = tail call i32 @free(i8* %18)
br label %246
246: ; preds = %244, %242
%247 = icmp eq i8* %59, null
br i1 %247, label %250, label %248
248: ; preds = %246
%249 = tail call i32 @free(i8* %59)
br label %250
250: ; preds = %248, %246
%251 = icmp eq i8* %25, null
br i1 %251, label %254, label %252
252: ; preds = %250
%253 = tail call i32 @free(i8* %25)
br label %254
254: ; preds = %252, %250
%255 = icmp eq i8* %31, null
br i1 %255, label %258, label %256
256: ; preds = %254
%257 = tail call i32 @free(i8* %31)
br label %258
258: ; preds = %256, %254
%259 = icmp eq i8* %37, null
br i1 %259, label %262, label %260
260: ; preds = %258
%261 = tail call i32 @free(i8* %37)
br label %262
262: ; preds = %260, %258
%263 = icmp eq i8* %43, null
br i1 %263, label %266, label %264
264: ; preds = %262
%265 = tail call i32 @free(i8* %43)
br label %266
266: ; preds = %264, %262
ret i8* %238
}