
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

_Bool __regparm3
hsts_new_entry_internal
          (hsts_store_t store,char *host,int port,time_t created,time_t max_age,
          _Bool include_subdomains,_Bool check_validity,_Bool check_expired,_Bool check_duplicates)

{
  _Bool _Var1;
  undefined4 *key;
  time_t *__ptr;
  char *pcVar2;
  int iVar3;
  hash_table *ht;
  
  key = (undefined4 *)xmalloc(8);
  __ptr = (time_t *)xcalloc(1,0xc);
  pcVar2 = xstrdup_lower(host);
  *key = pcVar2;
  if (port == 0x1bb) {
    port = 0;
  }
  key[1] = port;
  *__ptr = created;
  __ptr[1] = max_age;
  *(_Bool *)(__ptr + 2) = include_subdomains;
  if (check_validity) {
    _Var1 = is_valid_ip_address(host);
    if (_Var1) goto LAB_0002c5c0;
    max_age = __ptr[1];
  }
  if (-1 < max_age) {
    ht = store->table;
    if (check_expired) {
      iVar3 = hash_table_contains(ht,key);
      if (iVar3 != 0) goto LAB_0002c5c0;
      ht = store->table;
    }
    hash_table_put(ht,key,__ptr);
    return true;
  }
LAB_0002c5c0:
  free((void *)*key);
  free(key);
  free(__ptr);
  return false;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3
FUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,
            undefined1 param_6,char param_7,char param_8)

{
  char cVar1;
  undefined4 *__ptr;
  undefined4 *__ptr_00;
  undefined4 uVar2;
  int iVar3;
  
  __ptr = (undefined4 *)FUN_00062e50(8);
  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);
  uVar2 = FUN_0004f740(param_2);
  *__ptr = uVar2;
  if (param_3 == 0x1bb) {
    param_3 = 0;
  }
  __ptr[1] = param_3;
  *__ptr_00 = param_4;
  __ptr_00[1] = param_5;
  *(undefined1 *)(__ptr_00 + 2) = param_6;
  if (param_7 != '\0') {
    cVar1 = FUN_0002c120(param_2);
    if (cVar1 != '\0') goto LAB_0002c5c0;
    param_5 = __ptr_00[1];
  }
  if (-1 < param_5) {
    uVar2 = *param_1;
    if (param_8 != '\0') {
      iVar3 = FUN_0002a9e0(uVar2,__ptr);
      if (iVar3 != 0) goto LAB_0002c5c0;
      uVar2 = *param_1;
    }
    FUN_0002aa50(uVar2,__ptr,__ptr_00);
    return 1;
  }
LAB_0002c5c0:
  free((void *)*__ptr);
  free(__ptr);
  free(__ptr_00);
  return 0;
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
CALL 0x000190b0
ADD EBX,0x826d5
SUB ESP,0x38
MOV ESI,dword ptr [ESP + 0x5c]
MOV EDX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x20],ECX
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
PUSH 0x8
CALL 0x00062e50
POP EDX
POP ECX
PUSH 0xc
PUSH 0x1
MOV EBP,EAX
CALL 0x00062f90
MOV dword ptr [ESP],EDI
MOV ESI,EAX
CALL 0x0004f740
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x14]
MOV dword ptr [EBP],EAX
MOV EAX,0x0
CMP ECX,0x1bb
CMOVZ ECX,EAX
MOV EAX,dword ptr [ESP + 0x40]
CMP byte ptr [ESP + 0x10],0x0
MOV dword ptr [EBP + 0x4],ECX
MOV ECX,dword ptr [ESP + 0x44]
MOV dword ptr [ESI],EAX
MOVZX EAX,byte ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x4],ECX
MOV byte ptr [ESI + 0x8],AL
JNZ 0x0002c5f0
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JS 0x0002c5c0
MOV EDI,dword ptr [ESP + 0x18]
CMP byte ptr [ESP + 0x1c],0x0
MOV EAX,dword ptr [EDI]
JZ 0x0002c5a1
SUB ESP,0x8
PUSH EBP
PUSH EAX
CALL 0x0002a9e0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002c5c0
MOV EAX,dword ptr [EDI]
SUB ESP,0x4
PUSH ESI
PUSH EBP
PUSH EAX
CALL 0x0002aa50
ADD ESP,0x10
MOV EAX,0x1
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [EBP]
CALL 0x00016670
MOV dword ptr [ESP],EBP
CALL 0x00016670
MOV dword ptr [ESP],ESI
CALL 0x00016670
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH EDI
CALL 0x0002c120
ADD ESP,0x10
TEST AL,AL
JNZ 0x0002c5c0
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x44],EAX
JMP 0x0002c579
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3\nFUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)\n\n{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}\n\n" comment (function_definition "undefined4 __regparm3\nFUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)\n\n{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined1 param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) , (parameter_declaration "char param_8" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 *__ptr_00;" type_identifier (pointer_declarator "*__ptr_00" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "__ptr = (undefined4 *)FUN_00062e50(8);" (assignment_expression "__ptr = (undefined4 *)FUN_00062e50(8)" identifier = (cast_expression "(undefined4 *)FUN_00062e50(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00062e50(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);" (assignment_expression "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc)" identifier = (cast_expression "(undefined4 *)FUN_00062f90(1,0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00062f90(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "uVar2 = FUN_0004f740(param_2);" (assignment_expression "uVar2 = FUN_0004f740(param_2)" identifier = (call_expression "FUN_0004f740(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*__ptr = uVar2;" (assignment_expression "*__ptr = uVar2" (pointer_expression "*__ptr" * identifier) = identifier) ;) (if_statement "if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }" if (parenthesized_expression "(param_3 == 0x1bb)" ( (binary_expression "param_3 == 0x1bb" identifier == number_literal) )) (compound_statement "{\n    param_3 = 0;\n  }" { (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) })) (expression_statement "__ptr[1] = param_3;" (assignment_expression "__ptr[1] = param_3" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__ptr_00 = param_4;" (assignment_expression "*__ptr_00 = param_4" (pointer_expression "*__ptr_00" * identifier) = identifier) ;) (expression_statement "__ptr_00[1] = param_5;" (assignment_expression "__ptr_00[1] = param_5" (subscript_expression "__ptr_00[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(__ptr_00 + 2) = param_6;" (assignment_expression "*(undefined1 *)(__ptr_00 + 2) = param_6" (pointer_expression "*(undefined1 *)(__ptr_00 + 2)" * (cast_expression "(undefined1 *)(__ptr_00 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr_00 + 2)" ( (binary_expression "__ptr_00 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" { (expression_statement "cVar1 = FUN_0002c120(param_2);" (assignment_expression "cVar1 = FUN_0002c120(param_2)" identifier = (call_expression "FUN_0002c120(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (cVar1 != '\0') goto LAB_0002c5c0;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "param_5 = __ptr_00[1];" (assignment_expression "param_5 = __ptr_00[1]" identifier = (subscript_expression "__ptr_00[1]" identifier [ number_literal ])) ;) })) (if_statement "if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" if (parenthesized_expression "(-1 < param_5)" ( (binary_expression "-1 < param_5" number_literal < identifier) )) (compound_statement "{\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" { (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" if (parenthesized_expression "(param_8 != '\0')" ( (binary_expression "param_8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" { (expression_statement "iVar3 = FUN_0002a9e0(uVar2,__ptr);" (assignment_expression "iVar3 = FUN_0002a9e0(uVar2,__ptr)" identifier = (call_expression "FUN_0002a9e0(uVar2,__ptr)" identifier (argument_list "(uVar2,__ptr)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) goto LAB_0002c5c0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "FUN_0002aa50(uVar2,__ptr,__ptr_00);" (call_expression "FUN_0002aa50(uVar2,__ptr,__ptr_00)" identifier (argument_list "(uVar2,__ptr,__ptr_00)" ( identifier , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_0002c5c0:\n  free((void *)*__ptr);" statement_identifier : (expression_statement "free((void *)*__ptr);" (call_expression "free((void *)*__ptr)" identifier (argument_list "((void *)*__ptr)" ( (cast_expression "(void *)*__ptr" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__ptr" * identifier)) ))) ;)) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" identifier (argument_list "(__ptr_00)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\n_Bool __regparm3\nhsts_new_entry_internal\n          (hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n          _Bool include_subdomains,_Bool check_validity,_Bool check_expired,_Bool check_duplicates)\n\n{\n  _Bool _Var1;\n  undefined4 *key;\n  time_t *__ptr;\n  char *pcVar2;\n  int iVar3;\n  hash_table *ht;\n  \n  key = (undefined4 *)xmalloc(8);\n  __ptr = (time_t *)xcalloc(1,0xc);\n  pcVar2 = xstrdup_lower(host);\n  *key = pcVar2;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  key[1] = port;\n  *__ptr = created;\n  __ptr[1] = max_age;\n  *(_Bool *)(__ptr + 2) = include_subdomains;\n  if (check_validity) {\n    _Var1 = is_valid_ip_address(host);\n    if (_Var1) goto LAB_0002c5c0;\n    max_age = __ptr[1];\n  }\n  if (-1 < max_age) {\n    ht = store->table;\n    if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }\n    hash_table_put(ht,key,__ptr);\n    return true;\n  }\nLAB_0002c5c0:\n  free((void *)*key);\n  free(key);\n  free(__ptr);\n  return false;\n}\n\n" comment (function_definition "_Bool __regparm3\nhsts_new_entry_internal\n          (hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n          _Bool include_subdomains,_Bool check_validity,_Bool check_expired,_Bool check_duplicates)\n\n{\n  _Bool _Var1;\n  undefined4 *key;\n  time_t *__ptr;\n  char *pcVar2;\n  int iVar3;\n  hash_table *ht;\n  \n  key = (undefined4 *)xmalloc(8);\n  __ptr = (time_t *)xcalloc(1,0xc);\n  pcVar2 = xstrdup_lower(host);\n  *key = pcVar2;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  key[1] = port;\n  *__ptr = created;\n  __ptr[1] = max_age;\n  *(_Bool *)(__ptr + 2) = include_subdomains;\n  if (check_validity) {\n    _Var1 = is_valid_ip_address(host);\n    if (_Var1) goto LAB_0002c5c0;\n    max_age = __ptr[1];\n  }\n  if (-1 < max_age) {\n    ht = store->table;\n    if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }\n    hash_table_put(ht,key,__ptr);\n    return true;\n  }\nLAB_0002c5c0:\n  free((void *)*key);\n  free(key);\n  free(__ptr);\n  return false;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "hsts_new_entry_internal\n          (hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n          _Bool include_subdomains,_Bool check_validity,_Bool check_expired,_Bool check_duplicates)" identifier (parameter_list "(hsts_store_t store,char *host,int port,time_t created,time_t max_age,\n          _Bool include_subdomains,_Bool check_validity,_Bool check_expired,_Bool check_duplicates)" ( (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) , (parameter_declaration "_Bool check_validity" type_identifier identifier) , (parameter_declaration "_Bool check_expired" type_identifier identifier) , (parameter_declaration "_Bool check_duplicates" type_identifier identifier) ))) (compound_statement "{\n  _Bool _Var1;\n  undefined4 *key;\n  time_t *__ptr;\n  char *pcVar2;\n  int iVar3;\n  hash_table *ht;\n  \n  key = (undefined4 *)xmalloc(8);\n  __ptr = (time_t *)xcalloc(1,0xc);\n  pcVar2 = xstrdup_lower(host);\n  *key = pcVar2;\n  if (port == 0x1bb) {\n    port = 0;\n  }\n  key[1] = port;\n  *__ptr = created;\n  __ptr[1] = max_age;\n  *(_Bool *)(__ptr + 2) = include_subdomains;\n  if (check_validity) {\n    _Var1 = is_valid_ip_address(host);\n    if (_Var1) goto LAB_0002c5c0;\n    max_age = __ptr[1];\n  }\n  if (-1 < max_age) {\n    ht = store->table;\n    if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }\n    hash_table_put(ht,key,__ptr);\n    return true;\n  }\nLAB_0002c5c0:\n  free((void *)*key);\n  free(key);\n  free(__ptr);\n  return false;\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "undefined4 *key;" type_identifier (pointer_declarator "*key" * identifier) ;) (declaration "time_t *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "hash_table *ht;" type_identifier (pointer_declarator "*ht" * identifier) ;) (expression_statement "key = (undefined4 *)xmalloc(8);" (assignment_expression "key = (undefined4 *)xmalloc(8)" identifier = (cast_expression "(undefined4 *)xmalloc(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "__ptr = (time_t *)xcalloc(1,0xc);" (assignment_expression "__ptr = (time_t *)xcalloc(1,0xc)" identifier = (cast_expression "(time_t *)xcalloc(1,0xc)" ( (type_descriptor "time_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "pcVar2 = xstrdup_lower(host);" (assignment_expression "pcVar2 = xstrdup_lower(host)" identifier = (call_expression "xstrdup_lower(host)" identifier (argument_list "(host)" ( identifier )))) ;) (expression_statement "*key = pcVar2;" (assignment_expression "*key = pcVar2" (pointer_expression "*key" * identifier) = identifier) ;) (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 "key[1] = port;" (assignment_expression "key[1] = port" (subscript_expression "key[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__ptr = created;" (assignment_expression "*__ptr = created" (pointer_expression "*__ptr" * identifier) = identifier) ;) (expression_statement "__ptr[1] = max_age;" (assignment_expression "__ptr[1] = max_age" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(_Bool *)(__ptr + 2) = include_subdomains;" (assignment_expression "*(_Bool *)(__ptr + 2) = include_subdomains" (pointer_expression "*(_Bool *)(__ptr + 2)" * (cast_expression "(_Bool *)(__ptr + 2)" ( (type_descriptor "_Bool *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 2)" ( (binary_expression "__ptr + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (check_validity) {\n    _Var1 = is_valid_ip_address(host);\n    if (_Var1) goto LAB_0002c5c0;\n    max_age = __ptr[1];\n  }" if (parenthesized_expression "(check_validity)" ( identifier )) (compound_statement "{\n    _Var1 = is_valid_ip_address(host);\n    if (_Var1) goto LAB_0002c5c0;\n    max_age = __ptr[1];\n  }" { (expression_statement "_Var1 = is_valid_ip_address(host);" (assignment_expression "_Var1 = is_valid_ip_address(host)" identifier = (call_expression "is_valid_ip_address(host)" identifier (argument_list "(host)" ( identifier )))) ;) (if_statement "if (_Var1) goto LAB_0002c5c0;" if (parenthesized_expression "(_Var1)" ( identifier )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "max_age = __ptr[1];" (assignment_expression "max_age = __ptr[1]" identifier = (subscript_expression "__ptr[1]" identifier [ number_literal ])) ;) })) (if_statement "if (-1 < max_age) {\n    ht = store->table;\n    if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }\n    hash_table_put(ht,key,__ptr);\n    return true;\n  }" if (parenthesized_expression "(-1 < max_age)" ( (binary_expression "-1 < max_age" number_literal < identifier) )) (compound_statement "{\n    ht = store->table;\n    if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }\n    hash_table_put(ht,key,__ptr);\n    return true;\n  }" { (expression_statement "ht = store->table;" (assignment_expression "ht = store->table" identifier = (field_expression "store->table" identifier -> field_identifier)) ;) (if_statement "if (check_expired) {\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }" if (parenthesized_expression "(check_expired)" ( identifier )) (compound_statement "{\n      iVar3 = hash_table_contains(ht,key);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      ht = store->table;\n    }" { (expression_statement "iVar3 = hash_table_contains(ht,key);" (assignment_expression "iVar3 = hash_table_contains(ht,key)" identifier = (call_expression "hash_table_contains(ht,key)" identifier (argument_list "(ht,key)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) goto LAB_0002c5c0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "ht = store->table;" (assignment_expression "ht = store->table" identifier = (field_expression "store->table" identifier -> field_identifier)) ;) })) (expression_statement "hash_table_put(ht,key,__ptr);" (call_expression "hash_table_put(ht,key,__ptr)" identifier (argument_list "(ht,key,__ptr)" ( identifier , identifier , identifier ))) ;) (return_statement "return true;" return true ;) })) (labeled_statement "LAB_0002c5c0:\n  free((void *)*key);" statement_identifier : (expression_statement "free((void *)*key);" (call_expression "free((void *)*key)" identifier (argument_list "((void *)*key)" ( (cast_expression "(void *)*key" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*key" * identifier)) ))) ;)) (expression_statement "free(key);" (call_expression "free(key)" identifier (argument_list "(key)" ( identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return false;" return false ;) })))
(translation_unit "undefined4 __regparm3\nFUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)\n\n{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}\n\n" (function_definition "undefined4 __regparm3\nFUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)\n\n{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined1 param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) , (parameter_declaration "char param_8" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 *__ptr_00;" type_identifier (pointer_declarator "*__ptr_00" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "__ptr = (undefined4 *)FUN_00062e50(8);" (assignment_expression "__ptr = (undefined4 *)FUN_00062e50(8)" identifier = (cast_expression "(undefined4 *)FUN_00062e50(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00062e50(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);" (assignment_expression "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc)" identifier = (cast_expression "(undefined4 *)FUN_00062f90(1,0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00062f90(1,0xc)" identifier (argument_list "(1,0xc)" ( number_literal , number_literal ))))) ;) (expression_statement "uVar2 = FUN_0004f740(param_2);" (assignment_expression "uVar2 = FUN_0004f740(param_2)" identifier = (call_expression "FUN_0004f740(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*__ptr = uVar2;" (assignment_expression "*__ptr = uVar2" (pointer_expression "*__ptr" * identifier) = identifier) ;) (if_statement "if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }" if (parenthesized_expression "(param_3 == 0x1bb)" ( (binary_expression "param_3 == 0x1bb" identifier == number_literal) )) (compound_statement "{\n    param_3 = 0;\n  }" { (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) })) (expression_statement "__ptr[1] = param_3;" (assignment_expression "__ptr[1] = param_3" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__ptr_00 = param_4;" (assignment_expression "*__ptr_00 = param_4" (pointer_expression "*__ptr_00" * identifier) = identifier) ;) (expression_statement "__ptr_00[1] = param_5;" (assignment_expression "__ptr_00[1] = param_5" (subscript_expression "__ptr_00[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(__ptr_00 + 2) = param_6;" (assignment_expression "*(undefined1 *)(__ptr_00 + 2) = param_6" (pointer_expression "*(undefined1 *)(__ptr_00 + 2)" * (cast_expression "(undefined1 *)(__ptr_00 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr_00 + 2)" ( (binary_expression "__ptr_00 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" { (expression_statement "cVar1 = FUN_0002c120(param_2);" (assignment_expression "cVar1 = FUN_0002c120(param_2)" identifier = (call_expression "FUN_0002c120(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (cVar1 != '\0') goto LAB_0002c5c0;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "param_5 = __ptr_00[1];" (assignment_expression "param_5 = __ptr_00[1]" identifier = (subscript_expression "__ptr_00[1]" identifier [ number_literal ])) ;) })) (if_statement "if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" if (parenthesized_expression "(-1 < param_5)" ( (binary_expression "-1 < param_5" number_literal < identifier) )) (compound_statement "{\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" { (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" if (parenthesized_expression "(param_8 != '\0')" ( (binary_expression "param_8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" { (expression_statement "iVar3 = FUN_0002a9e0(uVar2,__ptr);" (assignment_expression "iVar3 = FUN_0002a9e0(uVar2,__ptr)" identifier = (call_expression "FUN_0002a9e0(uVar2,__ptr)" identifier (argument_list "(uVar2,__ptr)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) goto LAB_0002c5c0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002c5c0;" goto statement_identifier ;)) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "FUN_0002aa50(uVar2,__ptr,__ptr_00);" (call_expression "FUN_0002aa50(uVar2,__ptr,__ptr_00)" identifier (argument_list "(uVar2,__ptr,__ptr_00)" ( identifier , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (labeled_statement "LAB_0002c5c0:\n  free((void *)*__ptr);" statement_identifier : (expression_statement "free((void *)*__ptr);" (call_expression "free((void *)*__ptr)" identifier (argument_list "((void *)*__ptr)" ( (cast_expression "(void *)*__ptr" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__ptr" * identifier)) ))) ;)) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" identifier (argument_list "(__ptr_00)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 __regparm3\nFUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)\n\n{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0002c4f0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" (identifier "FUN_0002c4f0") (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,\n            undefined1 param_6,char param_7,char param_8)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "undefined1 param_6" (type_identifier "undefined1") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) (, ",") (parameter_declaration "char param_8" (primitive_type "char") (identifier "param_8")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 *__ptr;\n  undefined4 *__ptr_00;\n  undefined4 uVar2;\n  int iVar3;\n  \n  __ptr = (undefined4 *)FUN_00062e50(8);\n  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);\n  uVar2 = FUN_0004f740(param_2);\n  *__ptr = uVar2;\n  if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }\n  __ptr[1] = param_3;\n  *__ptr_00 = param_4;\n  __ptr_00[1] = param_5;\n  *(undefined1 *)(__ptr_00 + 2) = param_6;\n  if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }\n  if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }\nLAB_0002c5c0:\n  free((void *)*__ptr);\n  free(__ptr);\n  free(__ptr_00);\n  return 0;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 *__ptr;" (type_identifier "undefined4") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined4 *__ptr_00;" (type_identifier "undefined4") (pointer_declarator "*__ptr_00" (* "*") (identifier "__ptr_00")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "__ptr = (undefined4 *)FUN_00062e50(8);" (assignment_expression "__ptr = (undefined4 *)FUN_00062e50(8)" (identifier "__ptr") (= "=") (cast_expression "(undefined4 *)FUN_00062e50(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00062e50(8)" (identifier "FUN_00062e50") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (expression_statement "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);" (assignment_expression "__ptr_00 = (undefined4 *)FUN_00062f90(1,0xc)" (identifier "__ptr_00") (= "=") (cast_expression "(undefined4 *)FUN_00062f90(1,0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00062f90(1,0xc)" (identifier "FUN_00062f90") (argument_list "(1,0xc)" (( "(") (number_literal "1") (, ",") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "uVar2 = FUN_0004f740(param_2);" (assignment_expression "uVar2 = FUN_0004f740(param_2)" (identifier "uVar2") (= "=") (call_expression "FUN_0004f740(param_2)" (identifier "FUN_0004f740") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*__ptr = uVar2;" (assignment_expression "*__ptr = uVar2" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (param_3 == 0x1bb) {\n    param_3 = 0;\n  }" (if "if") (parenthesized_expression "(param_3 == 0x1bb)" (( "(") (binary_expression "param_3 == 0x1bb" (identifier "param_3") (== "==") (number_literal "0x1bb")) () ")")) (compound_statement "{\n    param_3 = 0;\n  }" ({ "{") (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" (identifier "param_3") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "__ptr[1] = param_3;" (assignment_expression "__ptr[1] = param_3" (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*__ptr_00 = param_4;" (assignment_expression "*__ptr_00 = param_4" (pointer_expression "*__ptr_00" (* "*") (identifier "__ptr_00")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "__ptr_00[1] = param_5;" (assignment_expression "__ptr_00[1] = param_5" (subscript_expression "__ptr_00[1]" (identifier "__ptr_00") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined1 *)(__ptr_00 + 2) = param_6;" (assignment_expression "*(undefined1 *)(__ptr_00 + 2) = param_6" (pointer_expression "*(undefined1 *)(__ptr_00 + 2)" (* "*") (cast_expression "(undefined1 *)(__ptr_00 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr_00 + 2)" (( "(") (binary_expression "__ptr_00 + 2" (identifier "__ptr_00") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_7 != '\0') {\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" (if "if") (parenthesized_expression "(param_7 != '\0')" (( "(") (binary_expression "param_7 != '\0'" (identifier "param_7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    cVar1 = FUN_0002c120(param_2);\n    if (cVar1 != '\0') goto LAB_0002c5c0;\n    param_5 = __ptr_00[1];\n  }" ({ "{") (expression_statement "cVar1 = FUN_0002c120(param_2);" (assignment_expression "cVar1 = FUN_0002c120(param_2)" (identifier "cVar1") (= "=") (call_expression "FUN_0002c120(param_2)" (identifier "FUN_0002c120") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') goto LAB_0002c5c0;" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002c5c0;" (goto "goto") (statement_identifier "LAB_0002c5c0") (; ";"))) (expression_statement "param_5 = __ptr_00[1];" (assignment_expression "param_5 = __ptr_00[1]" (identifier "param_5") (= "=") (subscript_expression "__ptr_00[1]" (identifier "__ptr_00") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (if_statement "if (-1 < param_5) {\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" (if "if") (parenthesized_expression "(-1 < param_5)" (( "(") (binary_expression "-1 < param_5" (number_literal "-1") (< "<") (identifier "param_5")) () ")")) (compound_statement "{\n    uVar2 = *param_1;\n    if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }\n    FUN_0002aa50(uVar2,__ptr,__ptr_00);\n    return 1;\n  }" ({ "{") (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (param_8 != '\0') {\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" (if "if") (parenthesized_expression "(param_8 != '\0')" (( "(") (binary_expression "param_8 != '\0'" (identifier "param_8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar3 = FUN_0002a9e0(uVar2,__ptr);\n      if (iVar3 != 0) goto LAB_0002c5c0;\n      uVar2 = *param_1;\n    }" ({ "{") (expression_statement "iVar3 = FUN_0002a9e0(uVar2,__ptr);" (assignment_expression "iVar3 = FUN_0002a9e0(uVar2,__ptr)" (identifier "iVar3") (= "=") (call_expression "FUN_0002a9e0(uVar2,__ptr)" (identifier "FUN_0002a9e0") (argument_list "(uVar2,__ptr)" (( "(") (identifier "uVar2") (, ",") (identifier "__ptr") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_0002c5c0;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002c5c0;" (goto "goto") (statement_identifier "LAB_0002c5c0") (; ";"))) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "FUN_0002aa50(uVar2,__ptr,__ptr_00);" (call_expression "FUN_0002aa50(uVar2,__ptr,__ptr_00)" (identifier "FUN_0002aa50") (argument_list "(uVar2,__ptr,__ptr_00)" (( "(") (identifier "uVar2") (, ",") (identifier "__ptr") (, ",") (identifier "__ptr_00") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (labeled_statement "LAB_0002c5c0:\n  free((void *)*__ptr);" (statement_identifier "LAB_0002c5c0") (: ":") (expression_statement "free((void *)*__ptr);" (call_expression "free((void *)*__ptr)" (identifier "free") (argument_list "((void *)*__ptr)" (( "(") (cast_expression "(void *)*__ptr" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*__ptr" (* "*") (identifier "__ptr"))) () ")"))) (; ";"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" (identifier "free") (argument_list "(__ptr_00)" (( "(") (identifier "__ptr_00") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 __regparm3
function_1
          (type_2 store,char *host,int var_4,type_3 created,type_3 var_7,
          type_1 include_subdomains,type_1 check_validity,type_1 check_expired,type_1 check_duplicates)

{
  type_1 _Var1;
  type_4 *key;
  type_3 *var_5;
  char *pcVar2;
  int var_9;
  type_5 *ht;
  
  key = (type_4 *)var_1(8);
  var_5 = (type_3 *)var_2(1,0xc);
  pcVar2 = var_3(host);
  *key = pcVar2;
  if (var_4 == 0x1bb) {
    var_4 = 0;
  }
  key[1] = var_4;
  *var_5 = created;
  var_5[1] = var_7;
  *(type_1 *)(var_5 + 2) = include_subdomains;
  if (check_validity) {
    _Var1 = var_6(host);
    if (_Var1) goto LAB_0002c5c0;
    var_7 = var_5[1];
  }
  if (-1 < var_7) {
    ht = store->table;
    if (check_expired) {
      var_9 = var_8(ht,key);
      if (var_9 != 0) goto LAB_0002c5c0;
      ht = store->table;
    }
    var_10(ht,key,var_5);
    return true;
  }
LAB_0002c5c0:
  var_11((void *)*key);
  var_11(key);
  var_11(var_5);
  return false;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3
MASKED(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,
            undefined1 param_6,char param_7,char param_8)

{
  char cVar1;
  undefined4 *__ptr;
  undefined4 *__ptr_00;
  undefined4 uVar2;
  int iVar3;
  
  __ptr = (undefined4 *)FUN_00062e50(8);
  __ptr_00 = (undefined4 *)FUN_00062f90(1,0xc);
  uVar2 = FUN_0004f740(param_2);
  *__ptr = uVar2;
  if (param_3 == 0x1bb) {
    param_3 = 0;
  }
  __ptr[1] = param_3;
  *__ptr_00 = param_4;
  __ptr_00[1] = param_5;
  *(undefined1 *)(__ptr_00 + 2) = param_6;
  if (param_7 != '\0') {
    cVar1 = FUN_0002c120(param_2);
    if (cVar1 != '\0') goto LAB_0002c5c0;
    param_5 = __ptr_00[1];
  }
  if (-1 < param_5) {
    uVar2 = *param_1;
    if (param_8 != '\0') {
      iVar3 = FUN_0002a9e0(uVar2,__ptr);
      if (iVar3 != 0) goto LAB_0002c5c0;
      uVar2 = *param_1;
    }
    FUN_0002aa50(uVar2,__ptr,__ptr_00);
    return 1;
  }
LAB_0002c5c0:
  free((void *)*__ptr);
  free(__ptr);
  free(__ptr_00);
  return 0;
}

