
_Bool hsts_store_merge(hsts_store_t store,char *host,int port,time_t created,time_t max_age,
                      _Bool include_subdomains)

{
  _Bool _Var1;
  hsts_kh_info *phVar2;
  int in_GS_OFFSET;
  hsts_kh_match match_type;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  match_type = NO_MATCH;
  _Var1 = false;
  if (port == 0x1bb) {
    port = 0;
  }
  phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0);
  if (phVar2 == (hsts_kh_info *)0x0) {
    _Var1 = hsts_new_entry_internal
                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);
  }
  else {
    _Var1 = false;
    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {
      phVar2->created = created;
      phVar2->max_age = max_age;
      phVar2->include_subdomains = include_subdomains;
      _Var1 = true;
    }
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return _Var1;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



undefined4 FUN_0002c610(void)

{
  int *piVar1;
  undefined4 uVar2;
  int in_GS_OFFSET;
  int in_stack_00000010;
  int in_stack_00000014;
  undefined1 in_stack_00000018;
  int local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = 0;
  piVar1 = (int *)FUN_0002c3b0(&local_24,0);
  if (piVar1 == (int *)0x0) {
    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);
  }
  else {
    uVar2 = 0;
    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {
      *piVar1 = in_stack_00000010;
      piVar1[1] = in_stack_00000014;
      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;
      uVar2 = 1;
    }
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007ad20();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x24
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x14],EAX
XOR EAX,EAX
MOV EBX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x10],0x0
MOV EDI,dword ptr [ESP + 0x3c]
MOV EBP,dword ptr [ESP + 0x4c]
PUSH 0x0
CMP EBX,0x1bb
MOV EDX,EDI
CMOVZ EBX,EAX
LEA EAX,[ESP + 0x14]
PUSH EAX
MOV EAX,ESI
MOV ECX,EBX
CALL 0x0002c3b0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002c6a0
MOV EDX,EAX
XOR EAX,EAX
CMP dword ptr [ESP + 0x8],0x2
JZ 0x0002c680
MOV ECX,dword ptr [ESP + 0xc]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0002c6c5
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x3c]
CMP dword ptr [EDX],ECX
JGE 0x0002c668
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [EDX],ECX
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,EBP
MOV byte ptr [EDX + 0x8],AL
MOV EAX,0x1
JMP 0x0002c668
MOV EAX,EBP
SUB ESP,0xc
MOV ECX,EBX
MOV EDX,EDI
MOVZX EBP,AL
PUSH 0x1
MOV EAX,ESI
PUSH 0x1
PUSH EBP
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x58]
CALL 0x0002c4f0
ADD ESP,0x20
JMP 0x0002c668
CALL 0x0007ad20
(translation_unit "undefined4 FUN_0002c610(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007ad20();\n}\n\n" (function_definition "undefined4 FUN_0002c610(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007ad20();\n}" type_identifier (function_declarator "FUN_0002c610(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0007ad20();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int in_stack_00000010;" primitive_type identifier ;) (declaration "int in_stack_00000014;" primitive_type identifier ;) (declaration "undefined1 in_stack_00000018;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "piVar1 = (int *)FUN_0002c3b0(&local_24,0);" (assignment_expression "piVar1 = (int *)FUN_0002c3b0(&local_24,0)" identifier = (cast_expression "(int *)FUN_0002c3b0(&local_24,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002c3b0(&local_24,0)" identifier (argument_list "(&local_24,0)" ( (pointer_expression "&local_24" & identifier) , number_literal ))))) ;) (if_statement "if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }" { (expression_statement "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);" (assignment_expression "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" identifier = (call_expression "FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" identifier (argument_list "(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;) }) (else_clause "else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" else (compound_statement "{\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" if (parenthesized_expression "((local_24 == 2) && (*piVar1 < in_stack_00000010))" ( (binary_expression "(local_24 == 2) && (*piVar1 < in_stack_00000010)" (parenthesized_expression "(local_24 == 2)" ( (binary_expression "local_24 == 2" identifier == number_literal) )) && (parenthesized_expression "(*piVar1 < in_stack_00000010)" ( (binary_expression "*piVar1 < in_stack_00000010" (pointer_expression "*piVar1" * identifier) < identifier) ))) )) (compound_statement "{\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" { (expression_statement "*piVar1 = in_stack_00000010;" (assignment_expression "*piVar1 = in_stack_00000010" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "piVar1[1] = in_stack_00000014;" (assignment_expression "piVar1[1] = in_stack_00000014" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(piVar1 + 2) = in_stack_00000018;" (assignment_expression "*(undefined1 *)(piVar1 + 2) = in_stack_00000018" (pointer_expression "*(undefined1 *)(piVar1 + 2)" * (cast_expression "(undefined1 *)(piVar1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) })) }))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) comment (expression_statement "FUN_0007ad20();" (call_expression "FUN_0007ad20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "_Bool hsts_store_merge(hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n                      _Bool include_subdomains)\n\n{\n  _Bool _Var1;\n  hsts_kh_info *phVar2;\n  int in_GS_OFFSET;\n  hsts_kh_match match_type;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  match_type = NO_MATCH;\n  _Var1 = false;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0);\n  if (phVar2 == (hsts_kh_info *)0x0) {\n    _Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);\n  }\n  else {\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" (function_definition "_Bool hsts_store_merge(hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n                      _Bool include_subdomains)\n\n{\n  _Bool _Var1;\n  hsts_kh_info *phVar2;\n  int in_GS_OFFSET;\n  hsts_kh_match match_type;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  match_type = NO_MATCH;\n  _Var1 = false;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0);\n  if (phVar2 == (hsts_kh_info *)0x0) {\n    _Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);\n  }\n  else {\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (function_declarator "hsts_store_merge(hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n                      _Bool include_subdomains)" identifier (parameter_list "(hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n                      _Bool include_subdomains)" ( (parameter_declaration "hsts_store_t store" type_identifier identifier) , (parameter_declaration "char *host" primitive_type (pointer_declarator "*host" * identifier)) , (parameter_declaration "int port" primitive_type identifier) , (parameter_declaration "time_t created" type_identifier identifier) , (parameter_declaration "time_t max_age" type_identifier identifier) , (parameter_declaration "_Bool include_subdomains" type_identifier identifier) ))) (compound_statement "{\n  _Bool _Var1;\n  hsts_kh_info *phVar2;\n  int in_GS_OFFSET;\n  hsts_kh_match match_type;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  match_type = NO_MATCH;\n  _Var1 = false;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0);\n  if (phVar2 == (hsts_kh_info *)0x0) {\n    _Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);\n  }\n  else {\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "hsts_kh_info *phVar2;" type_identifier (pointer_declarator "*phVar2" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "hsts_kh_match match_type;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "match_type = NO_MATCH;" (assignment_expression "match_type = NO_MATCH" identifier = identifier) ;) (expression_statement "_Var1 = false;" (assignment_expression "_Var1 = false" identifier = false) ;) (if_statement "if (port == 0x1bb) {\n    port = 0;\n  }" if (parenthesized_expression "(port == 0x1bb)" ( (binary_expression "port == 0x1bb" identifier == number_literal) )) (compound_statement "{\n    port = 0;\n  }" { (expression_statement "port = 0;" (assignment_expression "port = 0" identifier = number_literal) ;) })) (expression_statement "phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0);" (assignment_expression "phVar2 = hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0)" identifier = (call_expression "hsts_find_entry(store,host,port,&match_type,(hsts_kh *)0x0)" identifier (argument_list "(store,host,port,&match_type,(hsts_kh *)0x0)" ( identifier , identifier , identifier , (pointer_expression "&match_type" & identifier) , (cast_expression "(hsts_kh *)0x0" ( (type_descriptor "hsts_kh *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (phVar2 == (hsts_kh_info *)0x0) {\n    _Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);\n  }\n  else {\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }" if (parenthesized_expression "(phVar2 == (hsts_kh_info *)0x0)" ( (binary_expression "phVar2 == (hsts_kh_info *)0x0" identifier == (cast_expression "(hsts_kh_info *)0x0" ( (type_descriptor "hsts_kh_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    _Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);\n  }" { (expression_statement "_Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1);" (assignment_expression "_Var1 = hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1)" identifier = (call_expression "hsts_new_entry_internal\n                      (store,host,port,created,max_age,include_subdomains,true,true,_Var1)" identifier (argument_list "(store,host,port,created,max_age,include_subdomains,true,true,_Var1)" ( identifier , identifier , identifier , identifier , identifier , identifier , true , true , identifier )))) ;) }) (else_clause "else {\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }" else (compound_statement "{\n    _Var1 = false;\n    if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }\n  }" { (expression_statement "_Var1 = false;" (assignment_expression "_Var1 = false" identifier = false) ;) (if_statement "if ((match_type == CONGRUENT_MATCH) && (phVar2->created < created)) {\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }" if (parenthesized_expression "((match_type == CONGRUENT_MATCH) && (phVar2->created < created))" ( (binary_expression "(match_type == CONGRUENT_MATCH) && (phVar2->created < created)" (parenthesized_expression "(match_type == CONGRUENT_MATCH)" ( (binary_expression "match_type == CONGRUENT_MATCH" identifier == identifier) )) && (parenthesized_expression "(phVar2->created < created)" ( (binary_expression "phVar2->created < created" (field_expression "phVar2->created" identifier -> field_identifier) < identifier) ))) )) (compound_statement "{\n      phVar2->created = created;\n      phVar2->max_age = max_age;\n      phVar2->include_subdomains = include_subdomains;\n      _Var1 = true;\n    }" { (expression_statement "phVar2->created = created;" (assignment_expression "phVar2->created = created" (field_expression "phVar2->created" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar2->max_age = max_age;" (assignment_expression "phVar2->max_age = max_age" (field_expression "phVar2->max_age" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar2->include_subdomains = include_subdomains;" (assignment_expression "phVar2->include_subdomains = include_subdomains" (field_expression "phVar2->include_subdomains" identifier -> field_identifier) = identifier) ;) (expression_statement "_Var1 = true;" (assignment_expression "_Var1 = true" identifier = true) ;) })) }))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return _Var1;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return _Var1;\n  }" { (return_statement "return _Var1;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_0002c610(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    \n  FUN_0007ad20();\n}\n\n" (function_definition "undefined4 FUN_0002c610(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    \n  FUN_0007ad20();\n}" type_identifier (function_declarator "FUN_0002c610(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    \n  FUN_0007ad20();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int in_stack_00000010;" primitive_type identifier ;) (declaration "int in_stack_00000014;" primitive_type identifier ;) (declaration "undefined1 in_stack_00000018;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "piVar1 = (int *)FUN_0002c3b0(&local_24,0);" (assignment_expression "piVar1 = (int *)FUN_0002c3b0(&local_24,0)" identifier = (cast_expression "(int *)FUN_0002c3b0(&local_24,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002c3b0(&local_24,0)" identifier (argument_list "(&local_24,0)" ( (pointer_expression "&local_24" & identifier) , number_literal ))))) ;) (if_statement "if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }" { (expression_statement "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);" (assignment_expression "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" identifier = (call_expression "FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" identifier (argument_list "(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" ( identifier , identifier , identifier , number_literal , number_literal )))) ;) }) (else_clause "else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" else (compound_statement "{\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" if (parenthesized_expression "((local_24 == 2) && (*piVar1 < in_stack_00000010))" ( (binary_expression "(local_24 == 2) && (*piVar1 < in_stack_00000010)" (parenthesized_expression "(local_24 == 2)" ( (binary_expression "local_24 == 2" identifier == number_literal) )) && (parenthesized_expression "(*piVar1 < in_stack_00000010)" ( (binary_expression "*piVar1 < in_stack_00000010" (pointer_expression "*piVar1" * identifier) < identifier) ))) )) (compound_statement "{\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" { (expression_statement "*piVar1 = in_stack_00000010;" (assignment_expression "*piVar1 = in_stack_00000010" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "piVar1[1] = in_stack_00000014;" (assignment_expression "piVar1[1] = in_stack_00000014" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(piVar1 + 2) = in_stack_00000018;" (assignment_expression "*(undefined1 *)(piVar1 + 2) = in_stack_00000018" (pointer_expression "*(undefined1 *)(piVar1 + 2)" * (cast_expression "(undefined1 *)(piVar1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + 2)" ( (binary_expression "piVar1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) })) }))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "FUN_0007ad20();" (call_expression "FUN_0007ad20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_0002c610(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    \n  FUN_0007ad20();\n}" (type_identifier "undefined4") (function_declarator "FUN_0002c610(void)" (identifier "FUN_0002c610") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  int in_GS_OFFSET;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined1 in_stack_00000018;\n  int local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = 0;\n  piVar1 = (int *)FUN_0002c3b0(&local_24,0);\n  if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }\n                    \n  FUN_0007ad20();\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int in_stack_00000010;" (primitive_type "int") (identifier "in_stack_00000010") (; ";")) (declaration "int in_stack_00000014;" (primitive_type "int") (identifier "in_stack_00000014") (; ";")) (declaration "undefined1 in_stack_00000018;" (type_identifier "undefined1") (identifier "in_stack_00000018") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1 = (int *)FUN_0002c3b0(&local_24,0);" (assignment_expression "piVar1 = (int *)FUN_0002c3b0(&local_24,0)" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_0002c3b0(&local_24,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002c3b0(&local_24,0)" (identifier "FUN_0002c3b0") (argument_list "(&local_24,0)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (piVar1 == (int *)0x0) {\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }\n  else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" (if "if") (parenthesized_expression "(piVar1 == (int *)0x0)" (( "(") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);\n  }" ({ "{") (expression_statement "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);" (assignment_expression "uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" (identifier "uVar2") (= "=") (call_expression "FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" (identifier "FUN_0002c4f0") (argument_list "(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1)" (( "(") (identifier "in_stack_00000010") (, ",") (identifier "in_stack_00000014") (, ",") (identifier "in_stack_00000018") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" (else "else") (compound_statement "{\n    uVar2 = 0;\n    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" (if "if") (parenthesized_expression "((local_24 == 2) && (*piVar1 < in_stack_00000010))" (( "(") (binary_expression "(local_24 == 2) && (*piVar1 < in_stack_00000010)" (parenthesized_expression "(local_24 == 2)" (( "(") (binary_expression "local_24 == 2" (identifier "local_24") (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(*piVar1 < in_stack_00000010)" (( "(") (binary_expression "*piVar1 < in_stack_00000010" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (< "<") (identifier "in_stack_00000010")) () ")"))) () ")")) (compound_statement "{\n      *piVar1 = in_stack_00000010;\n      piVar1[1] = in_stack_00000014;\n      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;\n      uVar2 = 1;\n    }" ({ "{") (expression_statement "*piVar1 = in_stack_00000010;" (assignment_expression "*piVar1 = in_stack_00000010" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "piVar1[1] = in_stack_00000014;" (assignment_expression "piVar1[1] = in_stack_00000014" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "in_stack_00000014")) (; ";")) (expression_statement "*(undefined1 *)(piVar1 + 2) = in_stack_00000018;" (assignment_expression "*(undefined1 *)(piVar1 + 2) = in_stack_00000018" (pointer_expression "*(undefined1 *)(piVar1 + 2)" (* "*") (cast_expression "(undefined1 *)(piVar1 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + 2)" (( "(") (binary_expression "piVar1 + 2" (identifier "piVar1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "in_stack_00000018")) (; ";")) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "FUN_0007ad20();" (call_expression "FUN_0007ad20()" (identifier "FUN_0007ad20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

type_1 function_1(type_2 store,char *host,int var_2,type_3 var_8,type_3 max_age,
                      type_1 include_subdomains)

{
  type_1 _Var1;
  type_4 *var_4;
  int var_1;
  type_5 var_6;
  int var_9;
  
  var_9 = *(int *)(var_1 + 0x14);
  var_6 = NO_MATCH;
  _Var1 = false;
  if (var_2 == 0x1bb) {
    var_2 = 0;
  }
  var_4 = var_3(store,host,var_2,&var_6,(type_6 *)0x0);
  if (var_4 == (type_4 *)0x0) {
    _Var1 = var_5
                      (store,host,var_2,var_8,max_age,include_subdomains,true,true,_Var1);
  }
  else {
    _Var1 = false;
    if ((var_6 == var_7) && (var_4->var_8 < var_8)) {
      var_4->var_8 = var_8;
      var_4->max_age = max_age;
      var_4->include_subdomains = include_subdomains;
      _Var1 = true;
    }
  }
  if (var_9 == *(int *)(var_1 + 0x14)) {
    return _Var1;
  }
                    /* WARNING: Subroutine does not return */
  var_10();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_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: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

undefined4 MASKED(void)

{
  int *piVar1;
  undefined4 uVar2;
  int in_GS_OFFSET;
  int in_stack_00000010;
  int in_stack_00000014;
  undefined1 in_stack_00000018;
  int local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = 0;
  piVar1 = (int *)FUN_0002c3b0(&local_24,0);
  if (piVar1 == (int *)0x0) {
    uVar2 = FUN_0002c4f0(in_stack_00000010,in_stack_00000014,in_stack_00000018,1,1);
  }
  else {
    uVar2 = 0;
    if ((local_24 == 2) && (*piVar1 < in_stack_00000010)) {
      *piVar1 = in_stack_00000010;
      piVar1[1] = in_stack_00000014;
      *(undefined1 *)(piVar1 + 2) = in_stack_00000018;
      uVar2 = 1;
    }
  }
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0007ad20();
}

