
void * hash_replace(hash_control *table,char *key,void *value)

{
  hash_entry ***plist;
  hash_entry *phVar1;
  void *pvVar2;
  
  plist = (hash_entry ***)strlen(key);
  phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0
                      );
  if (phVar1 == (hash_entry *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    pvVar2 = phVar1->data;
    phVar1->data = value;
  }
  return pvVar2;
}



undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)

{
  size_t sVar1;
  long lVar2;
  undefined8 uVar3;
  
  sVar1 = strlen(param_2);
  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(undefined8 *)(lVar2 + 0x18);
    *(undefined8 *)(lVar2 + 0x18) = param_3;
  }
  return uVar3;
}


PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
MOV RDI,RSI
CALL 0x001071e0
XOR R9D,R9D
XOR R8D,R8D
LEA RSI,[RBX + 0x8]
MOV RCX,RAX
MOV RDX,RBP
MOV RDI,RBX
CALL 0x00115aa0
TEST RAX,RAX
JZ 0x00115f48
MOV RDX,RAX
MOV RAX,qword ptr [RAX + 0x18]
MOV qword ptr [RDX + 0x18],R12
POP RBX
POP RBP
POP R12
RET
XOR EAX,EAX
JMP 0x00115f3d
(translation_unit "undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)\n\n{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)\n\n{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_00115f00(long param_1,char *param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,char *param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "sVar1 = strlen(param_2);" (assignment_expression "sVar1 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);" (assignment_expression "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" identifier = (call_expression "FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" identifier (argument_list "(param_1,param_1 + 8,param_2,sVar1,0,0)" ( identifier , (binary_expression "param_1 + 8" identifier + number_literal) , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = 0;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" else (compound_statement "{\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x18);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = param_3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = param_3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "void * hash_replace(hash_control *table,char *key,void *value)\n\n{\n  hash_entry ***plist;\n  hash_entry *phVar1;\n  void *pvVar2;\n  \n  plist = (hash_entry ***)strlen(key);\n  phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      );\n  if (phVar1 == (hash_entry *)0x0) {\n    pvVar2 = (void *)0x0;\n  }\n  else {\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }\n  return pvVar2;\n}\n\n" (function_definition "void * hash_replace(hash_control *table,char *key,void *value)\n\n{\n  hash_entry ***plist;\n  hash_entry *phVar1;\n  void *pvVar2;\n  \n  plist = (hash_entry ***)strlen(key);\n  phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      );\n  if (phVar1 == (hash_entry *)0x0) {\n    pvVar2 = (void *)0x0;\n  }\n  else {\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }\n  return pvVar2;\n}" primitive_type (pointer_declarator "* hash_replace(hash_control *table,char *key,void *value)" * (function_declarator "hash_replace(hash_control *table,char *key,void *value)" identifier (parameter_list "(hash_control *table,char *key,void *value)" ( (parameter_declaration "hash_control *table" type_identifier (pointer_declarator "*table" * identifier)) , (parameter_declaration "char *key" primitive_type (pointer_declarator "*key" * identifier)) , (parameter_declaration "void *value" primitive_type (pointer_declarator "*value" * identifier)) )))) (compound_statement "{\n  hash_entry ***plist;\n  hash_entry *phVar1;\n  void *pvVar2;\n  \n  plist = (hash_entry ***)strlen(key);\n  phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      );\n  if (phVar1 == (hash_entry *)0x0) {\n    pvVar2 = (void *)0x0;\n  }\n  else {\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }\n  return pvVar2;\n}" { (declaration "hash_entry ***plist;" type_identifier (pointer_declarator "***plist" * (pointer_declarator "**plist" * (pointer_declarator "*plist" * identifier))) ;) (declaration "hash_entry *phVar1;" type_identifier (pointer_declarator "*phVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (expression_statement "plist = (hash_entry ***)strlen(key);" (assignment_expression "plist = (hash_entry ***)strlen(key)" identifier = (cast_expression "(hash_entry ***)strlen(key)" ( (type_descriptor "hash_entry ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (call_expression "strlen(key)" identifier (argument_list "(key)" ( identifier ))))) ;) (expression_statement "phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      );" (assignment_expression "phVar1 = hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      )" identifier = (call_expression "hash_lookup(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      )" identifier (argument_list "(table,(char *)&table->size,(size_t)key,plist,(ulong *)0x0,(hash_control *)0x0\n                      )" ( identifier , (cast_expression "(char *)&table->size" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&table->size" & (field_expression "table->size" identifier -> field_identifier))) , (cast_expression "(size_t)key" ( (type_descriptor "size_t" primitive_type) ) identifier) , identifier , (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(hash_control *)0x0" ( (type_descriptor "hash_control *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (phVar1 == (hash_entry *)0x0) {\n    pvVar2 = (void *)0x0;\n  }\n  else {\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }" if (parenthesized_expression "(phVar1 == (hash_entry *)0x0)" ( (binary_expression "phVar1 == (hash_entry *)0x0" identifier == (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pvVar2 = (void *)0x0;\n  }" { (expression_statement "pvVar2 = (void *)0x0;" (assignment_expression "pvVar2 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }" else (compound_statement "{\n    pvVar2 = phVar1->data;\n    phVar1->data = value;\n  }" { (expression_statement "pvVar2 = phVar1->data;" (assignment_expression "pvVar2 = phVar1->data" identifier = (field_expression "phVar1->data" identifier -> field_identifier)) ;) (expression_statement "phVar1->data = value;" (assignment_expression "phVar1->data = value" (field_expression "phVar1->data" identifier -> field_identifier) = identifier) ;) }))) (return_statement "return pvVar2;" return identifier ;) })))
(translation_unit "undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)\n\n{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)\n\n{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_00115f00(long param_1,char *param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,char *param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "sVar1 = strlen(param_2);" (assignment_expression "sVar1 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);" (assignment_expression "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" identifier = (call_expression "FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" identifier (argument_list "(param_1,param_1 + 8,param_2,sVar1,0,0)" ( identifier , (binary_expression "param_1 + 8" identifier + number_literal) , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = 0;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" else (compound_statement "{\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x18);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = param_3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = param_3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" * (cast_expression "(undefined8 *)(lVar2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) }))) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_00115f00(long param_1,char *param_2,undefined8 param_3)\n\n{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" (type_identifier "undefined8") (function_declarator "FUN_00115f00(long param_1,char *param_2,undefined8 param_3)" (identifier "FUN_00115f00") (parameter_list "(long param_1,char *param_2,undefined8 param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  size_t sVar1;\n  long lVar2;\n  undefined8 uVar3;\n  \n  sVar1 = strlen(param_2);\n  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);\n  if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }\n  return uVar3;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (expression_statement "sVar1 = strlen(param_2);" (assignment_expression "sVar1 = strlen(param_2)" (identifier "sVar1") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);" (assignment_expression "lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" (identifier "lVar2") (= "=") (call_expression "FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0)" (identifier "FUN_00115aa0") (argument_list "(param_1,param_1 + 8,param_2,sVar1,0,0)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (identifier "param_2") (, ",") (identifier "sVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (lVar2 == 0) {\n    uVar3 = 0;\n  }\n  else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = 0;\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" (else "else") (compound_statement "{\n    uVar3 = *(undefined8 *)(lVar2 + 0x18);\n    *(undefined8 *)(lVar2 + 0x18) = param_3;\n  }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(lVar2 + 0x18);" (assignment_expression "uVar3 = *(undefined8 *)(lVar2 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar2 + 0x18) = param_3;" (assignment_expression "*(undefined8 *)(lVar2 + 0x18) = param_3" (pointer_expression "*(undefined8 *)(lVar2 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (} "}")))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

void * function_1(type_1 *table,char *key,void *value)

{
  type_2 ***plist;
  type_2 *var_3;
  void *pvVar2;
  
  plist = (type_2 ***)var_1(key);
  var_3 = var_2(table,(char *)&table->size,(size_t)key,plist,(type_3 *)0x0,(type_1 *)0x0
                      );
  if (var_3 == (type_2 *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    pvVar2 = var_3->data;
    var_3->data = value;
  }
  return pvVar2;
}


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

undefined8 MASKED(long param_1,char *param_2,undefined8 param_3)

{
  size_t sVar1;
  long lVar2;
  undefined8 uVar3;
  
  sVar1 = strlen(param_2);
  lVar2 = FUN_00115aa0(param_1,param_1 + 8,param_2,sVar1,0,0);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(undefined8 *)(lVar2 + 0x18);
    *(undefined8 *)(lVar2 + 0x18) = param_3;
  }
  return uVar3;
}

