
/* WARNING: Unknown calling convention */
/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */
/* WARNING: Enum "gnutls_pk_algorithm_t": Some values do not have unique names */
/* WARNING: Enum "gnutls_certificate_type_t": Some values do not have unique names */

_Bool is_urh_ready(MHD_UpgradeResponseHandle *urh)

{
  _Bool _Var1;
  MHD_EpollState MVar2;
  MHD_EpollState MVar3;
  uint uVar4;
  
  if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&
     (urh->out_buffer_used == 0)) {
    return false;
  }
  _Var1 = urh->connection->daemon->shutdown;
  if (_Var1 != false) {
    return _Var1;
  }
  MVar3 = (urh->app).celi;
  if ((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY) {
    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;
    uVar4 = urh->in_buffer_used;
  }
  else {
    uVar4 = urh->in_buffer_used;
  }
  if (uVar4 < urh->in_buffer_size) {
    return true;
  }
LAB_00017d80:
  MVar2 = (urh->mhd).celi;
  if (((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&
     (urh->out_buffer_used < urh->out_buffer_size)) {
    return true;
  }
  if (((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&
     (urh->out_buffer_used != 0)) {
    return true;
  }
  if ((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY) {
    return false;
  }
  return urh->in_buffer_used != 0;
}



bool FUN_00017d34(int *param_1)

{
  char cVar1;
  uint uVar2;
  
  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {
    return false;
  }
  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);
  if (cVar1 != '\0') {
    return (bool)cVar1;
  }
  if ((param_1[0xe] & 1U) == 0) {
    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;
    uVar2 = param_1[10];
  }
  else {
    uVar2 = param_1[10];
  }
  if (uVar2 < (uint)param_1[8]) {
    return true;
  }
LAB_00017d80:
  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {
    return true;
  }
  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {
    return true;
  }
  if ((param_1[0x11] & 2U) == 0) {
    return false;
  }
  return param_1[10] != 0;
}


lw v1,0x20(a0)
bne v1,zero,0x00017d4c
_lw a2,0x0(a0)
lw v0,0x24(a0)
beq v0,zero,0x00017de8
_nop
lw v0,0x18(a2)
lbu v0,0xe0(v0)
andi v0,v0,0xff
bne v0,zero,0x00017e00
_nop
lw a1,0x38(a0)
andi a3,a1,0x1
beq a3,zero,0x00017dc4
_nop
lw a2,0x28(a0)
sltu v1,a2,v1
bne v1,zero,0x00017de0
_nop
lw v1,0x44(a0)
andi a2,v1,0x1
beq a2,zero,0x00017da4
_nop
lw a2,0x2c(a0)
lw a3,0x24(a0)
sltu a2,a2,a3
bne a2,zero,0x00017de0
_nop
andi a1,a1,0x2
beq a1,zero,0x00017e08
_nop
lw a1,0x2c(a0)
beq a1,zero,0x00017e0c
_andi v1,v1,0x2
jr ra
_li v0,0x1
lbu a2,0xf4(a2)
beq a2,zero,0x00017d80
_nop
lw a2,0x28(a0)
sltu v1,a2,v1
beq v1,zero,0x00017d80
_nop
jr ra
_li v0,0x1
lw v0,0x28(a0)
bne v0,zero,0x00017d4c
_nop
lw v0,0x2c(a0)
bne v0,zero,0x00017d4c
_or v0,zero,zero
jr ra
_nop
andi v1,v1,0x2
beq v1,zero,0x00017e00
_nop
lw v0,0x28(a0)
jr ra
_sltu v0,zero,v0
(translation_unit "bool FUN_00017d34(int *param_1)\n\n{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}\n\n" (function_definition "bool FUN_00017d34(int *param_1)\n\n{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" primitive_type (function_declarator "FUN_00017d34(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }" if (parenthesized_expression "((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0))" ( (binary_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)" (parenthesized_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0))" ( (binary_expression "((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)" (parenthesized_expression "((param_1[8] == 0) && (param_1[9] == 0))" ( (binary_expression "(param_1[8] == 0) && (param_1[9] == 0)" (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);" (assignment_expression "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" identifier = (pointer_expression "*(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" * (cast_expression "(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 0x18) + 0xe0)" ( (binary_expression "*(int *)(*param_1 + 0x18) + 0xe0" (pointer_expression "*(int *)(*param_1 + 0x18)" * (cast_expression "(int *)(*param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (bool)cVar1;\n  }" { (return_statement "return (bool)cVar1;" return (cast_expression "(bool)cVar1" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (if_statement "if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }" if (parenthesized_expression "((param_1[0xe] & 1U) == 0)" ( (binary_expression "(param_1[0xe] & 1U) == 0" (parenthesized_expression "(param_1[0xe] & 1U)" ( (binary_expression "param_1[0xe] & 1U" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }" { (if_statement "if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;" if (parenthesized_expression "(*(char *)(*param_1 + 0xf4) == '\0')" ( (binary_expression "*(char *)(*param_1 + 0xf4) == '\0'" (pointer_expression "*(char *)(*param_1 + 0xf4)" * (cast_expression "(char *)(*param_1 + 0xf4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xf4)" ( (binary_expression "*param_1 + 0xf4" (pointer_expression "*param_1" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00017d80;" goto statement_identifier ;)) (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar2 = param_1[10];\n  }" else (compound_statement "{\n    uVar2 = param_1[10];\n  }" { (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }" if (parenthesized_expression "(uVar2 < (uint)param_1[8])" ( (binary_expression "uVar2 < (uint)param_1[8]" identifier < (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (labeled_statement "LAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" statement_identifier : (if_statement "if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" if (parenthesized_expression "(((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9]))" ( (binary_expression "((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])" (parenthesized_expression "((param_1[0x11] & 1U) != 0)" ( (binary_expression "(param_1[0x11] & 1U) != 0" (parenthesized_expression "(param_1[0x11] & 1U)" ( (binary_expression "param_1[0x11] & 1U" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)param_1[0xb] < (uint)param_1[9])" ( (binary_expression "(uint)param_1[0xb] < (uint)param_1[9]" (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) }))) (if_statement "if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }" if (parenthesized_expression "(((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0))" ( (binary_expression "((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)" (parenthesized_expression "((param_1[0xe] & 2U) != 0)" ( (binary_expression "(param_1[0xe] & 2U) != 0" (parenthesized_expression "(param_1[0xe] & 2U)" ( (binary_expression "param_1[0xe] & 2U" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }" if (parenthesized_expression "((param_1[0x11] & 2U) == 0)" ( (binary_expression "(param_1[0x11] & 2U) == 0" (parenthesized_expression "(param_1[0x11] & 2U)" ( (binary_expression "param_1[0x11] & 2U" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (return_statement "return param_1[10] != 0;" return (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */\n/* WARNING: Enum "gnutls_pk_algorithm_t": Some values do not have unique names */\n/* WARNING: Enum "gnutls_certificate_type_t": Some values do not have unique names */\n\n_Bool is_urh_ready(MHD_UpgradeResponseHandle *urh)\n\n{\n  _Bool _Var1;\n  MHD_EpollState MVar2;\n  MHD_EpollState MVar3;\n  uint uVar4;\n  \n  if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0)) {\n    return false;\n  }\n  _Var1 = urh->connection->daemon->shutdown;\n  if (_Var1 != false) {\n    return _Var1;\n  }\n  MVar3 = (urh->app).celi;\n  if ((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY) {\n    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;\n    uVar4 = urh->in_buffer_used;\n  }\n  else {\n    uVar4 = urh->in_buffer_used;\n  }\n  if (uVar4 < urh->in_buffer_size) {\n    return true;\n  }\nLAB_00017d80:\n  MVar2 = (urh->mhd).celi;\n  if (((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size)) {\n    return true;\n  }\n  if (((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0)) {\n    return true;\n  }\n  if ((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY) {\n    return false;\n  }\n  return urh->in_buffer_used != 0;\n}\n\n" comment comment comment comment (function_definition "_Bool is_urh_ready(MHD_UpgradeResponseHandle *urh)\n\n{\n  _Bool _Var1;\n  MHD_EpollState MVar2;\n  MHD_EpollState MVar3;\n  uint uVar4;\n  \n  if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0)) {\n    return false;\n  }\n  _Var1 = urh->connection->daemon->shutdown;\n  if (_Var1 != false) {\n    return _Var1;\n  }\n  MVar3 = (urh->app).celi;\n  if ((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY) {\n    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;\n    uVar4 = urh->in_buffer_used;\n  }\n  else {\n    uVar4 = urh->in_buffer_used;\n  }\n  if (uVar4 < urh->in_buffer_size) {\n    return true;\n  }\nLAB_00017d80:\n  MVar2 = (urh->mhd).celi;\n  if (((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size)) {\n    return true;\n  }\n  if (((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0)) {\n    return true;\n  }\n  if ((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY) {\n    return false;\n  }\n  return urh->in_buffer_used != 0;\n}" type_identifier (function_declarator "is_urh_ready(MHD_UpgradeResponseHandle *urh)" identifier (parameter_list "(MHD_UpgradeResponseHandle *urh)" ( (parameter_declaration "MHD_UpgradeResponseHandle *urh" type_identifier (pointer_declarator "*urh" * identifier)) ))) (compound_statement "{\n  _Bool _Var1;\n  MHD_EpollState MVar2;\n  MHD_EpollState MVar3;\n  uint uVar4;\n  \n  if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0)) {\n    return false;\n  }\n  _Var1 = urh->connection->daemon->shutdown;\n  if (_Var1 != false) {\n    return _Var1;\n  }\n  MVar3 = (urh->app).celi;\n  if ((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY) {\n    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;\n    uVar4 = urh->in_buffer_used;\n  }\n  else {\n    uVar4 = urh->in_buffer_used;\n  }\n  if (uVar4 < urh->in_buffer_size) {\n    return true;\n  }\nLAB_00017d80:\n  MVar2 = (urh->mhd).celi;\n  if (((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size)) {\n    return true;\n  }\n  if (((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0)) {\n    return true;\n  }\n  if ((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY) {\n    return false;\n  }\n  return urh->in_buffer_used != 0;\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "MHD_EpollState MVar2;" type_identifier identifier ;) (declaration "MHD_EpollState MVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0)) {\n    return false;\n  }" if (parenthesized_expression "((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0))" ( (binary_expression "(((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&\n     (urh->out_buffer_used == 0)" (parenthesized_expression "(((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0))" ( (binary_expression "((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)" (parenthesized_expression "((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0))" ( (binary_expression "(urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)" (parenthesized_expression "(urh->in_buffer_size == 0)" ( (binary_expression "urh->in_buffer_size == 0" (field_expression "urh->in_buffer_size" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(urh->out_buffer_size == 0)" ( (binary_expression "urh->out_buffer_size == 0" (field_expression "urh->out_buffer_size" identifier -> field_identifier) == number_literal) ))) )) && (parenthesized_expression "(urh->in_buffer_used == 0)" ( (binary_expression "urh->in_buffer_used == 0" (field_expression "urh->in_buffer_used" identifier -> field_identifier) == number_literal) ))) )) && (parenthesized_expression "(urh->out_buffer_used == 0)" ( (binary_expression "urh->out_buffer_used == 0" (field_expression "urh->out_buffer_used" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "_Var1 = urh->connection->daemon->shutdown;" (assignment_expression "_Var1 = urh->connection->daemon->shutdown" identifier = (field_expression "urh->connection->daemon->shutdown" (field_expression "urh->connection->daemon" (field_expression "urh->connection" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (if_statement "if (_Var1 != false) {\n    return _Var1;\n  }" if (parenthesized_expression "(_Var1 != false)" ( (binary_expression "_Var1 != false" identifier != false) )) (compound_statement "{\n    return _Var1;\n  }" { (return_statement "return _Var1;" return identifier ;) })) (expression_statement "MVar3 = (urh->app).celi;" (assignment_expression "MVar3 = (urh->app).celi" identifier = (field_expression "(urh->app).celi" (parenthesized_expression "(urh->app)" ( (field_expression "urh->app" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY) {\n    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;\n    uVar4 = urh->in_buffer_used;\n  }\n  else {\n    uVar4 = urh->in_buffer_used;\n  }" if (parenthesized_expression "((MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY)" ( (binary_expression "(MVar3 & MHD_EPOLL_STATE_READ_READY) == MHD_EPOLL_STATE_UNREADY" (parenthesized_expression "(MVar3 & MHD_EPOLL_STATE_READ_READY)" ( (binary_expression "MVar3 & MHD_EPOLL_STATE_READ_READY" identifier & identifier) )) == identifier) )) (compound_statement "{\n    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;\n    uVar4 = urh->in_buffer_used;\n  }" { (if_statement "if (urh->connection->tls_read_ready == false) goto LAB_00017d80;" if (parenthesized_expression "(urh->connection->tls_read_ready == false)" ( (binary_expression "urh->connection->tls_read_ready == false" (field_expression "urh->connection->tls_read_ready" (field_expression "urh->connection" identifier -> field_identifier) -> field_identifier) == false) )) (goto_statement "goto LAB_00017d80;" goto statement_identifier ;)) (expression_statement "uVar4 = urh->in_buffer_used;" (assignment_expression "uVar4 = urh->in_buffer_used" identifier = (field_expression "urh->in_buffer_used" identifier -> field_identifier)) ;) }) (else_clause "else {\n    uVar4 = urh->in_buffer_used;\n  }" else (compound_statement "{\n    uVar4 = urh->in_buffer_used;\n  }" { (expression_statement "uVar4 = urh->in_buffer_used;" (assignment_expression "uVar4 = urh->in_buffer_used" identifier = (field_expression "urh->in_buffer_used" identifier -> field_identifier)) ;) }))) (if_statement "if (uVar4 < urh->in_buffer_size) {\n    return true;\n  }" if (parenthesized_expression "(uVar4 < urh->in_buffer_size)" ( (binary_expression "uVar4 < urh->in_buffer_size" identifier < (field_expression "urh->in_buffer_size" identifier -> field_identifier)) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (labeled_statement "LAB_00017d80:\n  MVar2 = (urh->mhd).celi;" statement_identifier : (expression_statement "MVar2 = (urh->mhd).celi;" (assignment_expression "MVar2 = (urh->mhd).celi" identifier = (field_expression "(urh->mhd).celi" (parenthesized_expression "(urh->mhd)" ( (field_expression "urh->mhd" identifier -> field_identifier) )) . field_identifier)) ;)) (if_statement "if (((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size)) {\n    return true;\n  }" if (parenthesized_expression "(((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size))" ( (binary_expression "((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used < urh->out_buffer_size)" (parenthesized_expression "((MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY)" ( (binary_expression "(MVar2 & MHD_EPOLL_STATE_READ_READY) != MHD_EPOLL_STATE_UNREADY" (parenthesized_expression "(MVar2 & MHD_EPOLL_STATE_READ_READY)" ( (binary_expression "MVar2 & MHD_EPOLL_STATE_READ_READY" identifier & identifier) )) != identifier) )) && (parenthesized_expression "(urh->out_buffer_used < urh->out_buffer_size)" ( (binary_expression "urh->out_buffer_used < urh->out_buffer_size" (field_expression "urh->out_buffer_used" identifier -> field_identifier) < (field_expression "urh->out_buffer_size" identifier -> field_identifier)) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0)) {\n    return true;\n  }" if (parenthesized_expression "(((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0))" ( (binary_expression "((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY) &&\n     (urh->out_buffer_used != 0)" (parenthesized_expression "((MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY)" ( (binary_expression "(MVar3 & MHD_EPOLL_STATE_WRITE_READY) != MHD_EPOLL_STATE_UNREADY" (parenthesized_expression "(MVar3 & MHD_EPOLL_STATE_WRITE_READY)" ( (binary_expression "MVar3 & MHD_EPOLL_STATE_WRITE_READY" identifier & identifier) )) != identifier) )) && (parenthesized_expression "(urh->out_buffer_used != 0)" ( (binary_expression "urh->out_buffer_used != 0" (field_expression "urh->out_buffer_used" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY) {\n    return false;\n  }" if (parenthesized_expression "((MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY)" ( (binary_expression "(MVar2 & MHD_EPOLL_STATE_WRITE_READY) == MHD_EPOLL_STATE_UNREADY" (parenthesized_expression "(MVar2 & MHD_EPOLL_STATE_WRITE_READY)" ( (binary_expression "MVar2 & MHD_EPOLL_STATE_WRITE_READY" identifier & identifier) )) == identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (return_statement "return urh->in_buffer_used != 0;" return (binary_expression "urh->in_buffer_used != 0" (field_expression "urh->in_buffer_used" identifier -> field_identifier) != number_literal) ;) })))
(translation_unit "bool FUN_00017d34(int *param_1)\n\n{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}\n\n" (function_definition "bool FUN_00017d34(int *param_1)\n\n{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" primitive_type (function_declarator "FUN_00017d34(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (if_statement "if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }" if (parenthesized_expression "((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0))" ( (binary_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)" (parenthesized_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0))" ( (binary_expression "((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)" (parenthesized_expression "((param_1[8] == 0) && (param_1[9] == 0))" ( (binary_expression "(param_1[8] == 0) && (param_1[9] == 0)" (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);" (assignment_expression "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" identifier = (pointer_expression "*(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" * (cast_expression "(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 0x18) + 0xe0)" ( (binary_expression "*(int *)(*param_1 + 0x18) + 0xe0" (pointer_expression "*(int *)(*param_1 + 0x18)" * (cast_expression "(int *)(*param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (bool)cVar1;\n  }" { (return_statement "return (bool)cVar1;" return (cast_expression "(bool)cVar1" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (if_statement "if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }" if (parenthesized_expression "((param_1[0xe] & 1U) == 0)" ( (binary_expression "(param_1[0xe] & 1U) == 0" (parenthesized_expression "(param_1[0xe] & 1U)" ( (binary_expression "param_1[0xe] & 1U" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }" { (if_statement "if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;" if (parenthesized_expression "(*(char *)(*param_1 + 0xf4) == '\0')" ( (binary_expression "*(char *)(*param_1 + 0xf4) == '\0'" (pointer_expression "*(char *)(*param_1 + 0xf4)" * (cast_expression "(char *)(*param_1 + 0xf4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xf4)" ( (binary_expression "*param_1 + 0xf4" (pointer_expression "*param_1" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00017d80;" goto statement_identifier ;)) (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar2 = param_1[10];\n  }" else (compound_statement "{\n    uVar2 = param_1[10];\n  }" { (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }" if (parenthesized_expression "(uVar2 < (uint)param_1[8])" ( (binary_expression "uVar2 < (uint)param_1[8]" identifier < (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (labeled_statement "LAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" statement_identifier : (if_statement "if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" if (parenthesized_expression "(((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9]))" ( (binary_expression "((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])" (parenthesized_expression "((param_1[0x11] & 1U) != 0)" ( (binary_expression "(param_1[0x11] & 1U) != 0" (parenthesized_expression "(param_1[0x11] & 1U)" ( (binary_expression "param_1[0x11] & 1U" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)param_1[0xb] < (uint)param_1[9])" ( (binary_expression "(uint)param_1[0xb] < (uint)param_1[9]" (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) }))) (if_statement "if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }" if (parenthesized_expression "(((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0))" ( (binary_expression "((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)" (parenthesized_expression "((param_1[0xe] & 2U) != 0)" ( (binary_expression "(param_1[0xe] & 2U) != 0" (parenthesized_expression "(param_1[0xe] & 2U)" ( (binary_expression "param_1[0xe] & 2U" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }" if (parenthesized_expression "((param_1[0x11] & 2U) == 0)" ( (binary_expression "(param_1[0x11] & 2U) == 0" (parenthesized_expression "(param_1[0x11] & 2U)" ( (binary_expression "param_1[0x11] & 2U" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (return_statement "return param_1[10] != 0;" return (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (return_statement return BOOL ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (return_statement return BOOL ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ;) })))
(function_definition "bool FUN_00017d34(int *param_1)\n\n{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" (primitive_type "bool") (function_declarator "FUN_00017d34(int *param_1)" (identifier "FUN_00017d34") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char cVar1;\n  uint uVar2;\n  \n  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }\n  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);\n  if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }\n  if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }\n  if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }\nLAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }\n  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }\n  if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }\n  return param_1[10] != 0;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (if_statement "if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {\n    return false;\n  }" (if "if") (parenthesized_expression "((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0))" (( "(") (binary_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)" (parenthesized_expression "(((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0))" (( "(") (binary_expression "((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)" (parenthesized_expression "((param_1[8] == 0) && (param_1[9] == 0))" (( "(") (binary_expression "(param_1[8] == 0) && (param_1[9] == 0)" (parenthesized_expression "(param_1[8] == 0)" (( "(") (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[9] == 0)" (( "(") (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);" (assignment_expression "cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" (* "*") (cast_expression "(char *)(*(int *)(*param_1 + 0x18) + 0xe0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_1 + 0x18) + 0xe0)" (( "(") (binary_expression "*(int *)(*param_1 + 0x18) + 0xe0" (pointer_expression "*(int *)(*param_1 + 0x18)" (* "*") (cast_expression "(int *)(*param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "0xe0")) () ")"))))) (; ";")) (if_statement "if (cVar1 != '\0') {\n    return (bool)cVar1;\n  }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return (bool)cVar1;\n  }" ({ "{") (return_statement "return (bool)cVar1;" (return "return") (cast_expression "(bool)cVar1" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar1")) (; ";")) (} "}"))) (if_statement "if ((param_1[0xe] & 1U) == 0) {\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }\n  else {\n    uVar2 = param_1[10];\n  }" (if "if") (parenthesized_expression "((param_1[0xe] & 1U) == 0)" (( "(") (binary_expression "(param_1[0xe] & 1U) == 0" (parenthesized_expression "(param_1[0xe] & 1U)" (( "(") (binary_expression "param_1[0xe] & 1U" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (& "&") (number_literal "1U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;\n    uVar2 = param_1[10];\n  }" ({ "{") (if_statement "if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;" (if "if") (parenthesized_expression "(*(char *)(*param_1 + 0xf4) == '\0')" (( "(") (binary_expression "*(char *)(*param_1 + 0xf4) == '\0'" (pointer_expression "*(char *)(*param_1 + 0xf4)" (* "*") (cast_expression "(char *)(*param_1 + 0xf4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xf4)" (( "(") (binary_expression "*param_1 + 0xf4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xf4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00017d80;" (goto "goto") (statement_identifier "LAB_00017d80") (; ";"))) (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" (identifier "uVar2") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = param_1[10];\n  }" (else "else") (compound_statement "{\n    uVar2 = param_1[10];\n  }" ({ "{") (expression_statement "uVar2 = param_1[10];" (assignment_expression "uVar2 = param_1[10]" (identifier "uVar2") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")))) (if_statement "if (uVar2 < (uint)param_1[8]) {\n    return true;\n  }" (if "if") (parenthesized_expression "(uVar2 < (uint)param_1[8])" (( "(") (binary_expression "uVar2 < (uint)param_1[8]" (identifier "uVar2") (< "<") (cast_expression "(uint)param_1[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (labeled_statement "LAB_00017d80:\n  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" (statement_identifier "LAB_00017d80") (: ":") (if_statement "if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {\n    return true;\n  }" (if "if") (parenthesized_expression "(((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9]))" (( "(") (binary_expression "((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])" (parenthesized_expression "((param_1[0x11] & 1U) != 0)" (( "(") (binary_expression "(param_1[0x11] & 1U) != 0" (parenthesized_expression "(param_1[0x11] & 1U)" (( "(") (binary_expression "param_1[0x11] & 1U" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (& "&") (number_literal "1U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)param_1[0xb] < (uint)param_1[9])" (( "(") (binary_expression "(uint)param_1[0xb] < (uint)param_1[9]" (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (< "<") (cast_expression "(uint)param_1[9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) () ")"))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}")))) (if_statement "if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {\n    return true;\n  }" (if "if") (parenthesized_expression "(((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0))" (( "(") (binary_expression "((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)" (parenthesized_expression "((param_1[0xe] & 2U) != 0)" (( "(") (binary_expression "(param_1[0xe] & 2U) != 0" (parenthesized_expression "(param_1[0xe] & 2U)" (( "(") (binary_expression "param_1[0xe] & 2U" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (& "&") (number_literal "2U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[0xb] != 0)" (( "(") (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if ((param_1[0x11] & 2U) == 0) {\n    return false;\n  }" (if "if") (parenthesized_expression "((param_1[0x11] & 2U) == 0)" (( "(") (binary_expression "(param_1[0x11] & 2U) == 0" (parenthesized_expression "(param_1[0x11] & 2U)" (( "(") (binary_expression "param_1[0x11] & 2U" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (& "&") (number_literal "2U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (return_statement "return param_1[10] != 0;" (return "return") (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention */
/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */
/* WARNING: Enum "gnutls_pk_algorithm_t": Some values do not have unique names */
/* WARNING: Enum "gnutls_certificate_type_t": Some values do not have unique names */

type_1 function_1(type_2 *urh)

{
  type_1 var_1;
  type_3 var_6;
  type_3 var_2;
  type_4 var_5;
  
  if ((((urh->in_buffer_size == 0) && (urh->out_buffer_size == 0)) && (urh->in_buffer_used == 0)) &&
     (urh->out_buffer_used == 0)) {
    return false;
  }
  var_1 = urh->connection->daemon->shutdown;
  if (var_1 != false) {
    return var_1;
  }
  var_2 = (urh->app).celi;
  if ((var_2 & var_3) == var_4) {
    if (urh->connection->tls_read_ready == false) goto LAB_00017d80;
    var_5 = urh->in_buffer_used;
  }
  else {
    var_5 = urh->in_buffer_used;
  }
  if (var_5 < urh->in_buffer_size) {
    return true;
  }
LAB_00017d80:
  var_6 = (urh->mhd).celi;
  if (((var_6 & var_3) != var_4) &&
     (urh->out_buffer_used < urh->out_buffer_size)) {
    return true;
  }
  if (((var_2 & var_7) != var_4) &&
     (urh->out_buffer_used != 0)) {
    return true;
  }
  if ((var_6 & var_7) == var_4) {
    return false;
  }
  return urh->in_buffer_used != 0;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (return_statement (true)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (compound_statement (return_statement (true))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement (true)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (return_statement (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))

bool MASKED(int *param_1)

{
  char cVar1;
  uint uVar2;
  
  if ((((param_1[8] == 0) && (param_1[9] == 0)) && (param_1[10] == 0)) && (param_1[0xb] == 0)) {
    return false;
  }
  cVar1 = *(char *)(*(int *)(*param_1 + 0x18) + 0xe0);
  if (cVar1 != '\0') {
    return (bool)cVar1;
  }
  if ((param_1[0xe] & 1U) == 0) {
    if (*(char *)(*param_1 + 0xf4) == '\0') goto LAB_00017d80;
    uVar2 = param_1[10];
  }
  else {
    uVar2 = param_1[10];
  }
  if (uVar2 < (uint)param_1[8]) {
    return true;
  }
LAB_00017d80:
  if (((param_1[0x11] & 1U) != 0) && ((uint)param_1[0xb] < (uint)param_1[9])) {
    return true;
  }
  if (((param_1[0xe] & 2U) != 0) && (param_1[0xb] != 0)) {
    return true;
  }
  if ((param_1[0x11] & 2U) == 0) {
    return false;
  }
  return param_1[10] != 0;
}

