
/* DWARF original prototype: char * add(Stringpool_template<char> * this, char * s, bool copy, Key *
   pkey) */

char * __thiscall
gold::Stringpool_template<char>::add(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)

{
  size_t length;
  char *pcVar1;
  
  length = strlen(s);
  pcVar1 = add_with_length(this,s,length,copy,pkey);
  return pcVar1;
}



void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)

{
  size_t sVar1;
  
  sVar1 = strlen(param_2);
  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);
  return;
}


PUSH R13
MOV R13,RCX
PUSH R12
MOV R12,RDI
MOV RDI,RSI
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV EBX,EDX
SUB RSP,0x8
CALL 0x00150490
ADD RSP,0x8
MOVZX ECX,BL
MOV R8,R13
POP RBX
MOV RSI,RBP
MOV RDI,R12
POP RBP
MOV RDX,RAX
POP R12
POP R13
JMP 0x002dac00
(translation_unit "void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}\n\n" (function_definition "void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" primitive_type (function_declarator "FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" identifier (parameter_list "(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type 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 "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);" (call_expression "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4)" identifier (argument_list "(param_1,param_2,sVar1,param_3,param_4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: char * add(Stringpool_template<char> * this, char * s, bool copy, Key *\n   pkey) */\n\nchar * __thiscall\ngold::Stringpool_template<char>::add(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)\n\n{\n  size_t length;\n  char *pcVar1;\n  \n  length = strlen(s);\n  pcVar1 = add_with_length(this,s,length,copy,pkey);\n  return pcVar1;\n}\n\n" comment (declaration "char * __thiscall" primitive_type (pointer_declarator "* __thiscall" * identifier) ;) (labeled_statement "gold::Stringpool_template<char>::add(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)" statement_identifier (ERROR "::Stringpool_template<char>:" : : (binary_expression "Stringpool_template<char" identifier < identifier) > :) : (expression_statement "add(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)" (call_expression "add(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)" identifier (argument_list "(Stringpool_template<char> *this,char *s,bool copy,Key *pkey)" ( (binary_expression "Stringpool_template<char> *this" (binary_expression "Stringpool_template<char" identifier < identifier) > (pointer_expression "*this" * identifier)) , (binary_expression "char *s" identifier * identifier) , identifier (ERROR "copy" identifier) , (binary_expression "Key *pkey" identifier * identifier) ))) ;)) (compound_statement "{\n  size_t length;\n  char *pcVar1;\n  \n  length = strlen(s);\n  pcVar1 = add_with_length(this,s,length,copy,pkey);\n  return pcVar1;\n}" { (declaration "size_t length;" primitive_type identifier ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (expression_statement "length = strlen(s);" (assignment_expression "length = strlen(s)" identifier = (call_expression "strlen(s)" identifier (argument_list "(s)" ( identifier )))) ;) (expression_statement "pcVar1 = add_with_length(this,s,length,copy,pkey);" (assignment_expression "pcVar1 = add_with_length(this,s,length,copy,pkey)" identifier = (call_expression "add_with_length(this,s,length,copy,pkey)" identifier (argument_list "(this,s,length,copy,pkey)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return pcVar1;" return identifier ;) }))
(translation_unit "void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}\n\n" (function_definition "void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" primitive_type (function_declarator "FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" identifier (parameter_list "(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type 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 "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);" (call_expression "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4)" identifier (argument_list "(param_1,param_2,sVar1,param_3,param_4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)\n\n{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002dad90(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" (identifier "FUN_002dad90") (parameter_list "(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined1 param_3" (type_identifier "undefined1") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  size_t sVar1;\n  \n  sVar1 = strlen(param_2);\n  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);\n  return;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (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 "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);" (call_expression "FUN_002dac00(param_1,param_2,sVar1,param_3,param_4)" (identifier "FUN_002dac00") (argument_list "(param_1,param_2,sVar1,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "sVar1") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: char * add(Stringpool_template<char> * this, char * s, bool copy, Key *
   pkey) */

char * __thiscall
gold::var_2<var_3>::var_1(var_2<var_3> *this,var_3 *var_4,bool copy,var_5 *var_6)

{
  size_t length;
  char *pcVar1;
  
  length = var_7(var_4);
  pcVar1 = var_8(this,var_4,length,copy,var_6);
  return pcVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (return_statement))))

void MASKED(undefined8 param_1,char *param_2,undefined1 param_3,undefined8 param_4)

{
  size_t sVar1;
  
  sVar1 = strlen(param_2);
  FUN_002dac00(param_1,param_2,sVar1,param_3,param_4);
  return;
}

