
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: void init_base_undefined(Symbol * this, char * name, char * version,
   STT type, STB binding, STV visibility, uchar nonvis) */

void __thiscall
gold::Symbol::init_base_undefined
          (Symbol *this,char *name,char *version,STT type,STB binding,STV visibility,uchar nonvis)

{
  ulong uVar1;
  
  this->version_ = version;
  this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4);
  this->name_ = name;
  this->field_0x39 = (byte)visibility & 3 | nonvis << 2;
  this->symtab_index_ = 0;
  this->dynsym_index_ = 0xffffffff;
  uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4);
  this->plt_offset_ = 0xffffffff;
  (this->got_offsets_).got_type_ = 0xffffffff;
  *(undefined8 *)&(this->got_offsets_).got_offset_ = 0;
  *(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =
       uVar1 & 0x200ffff00000000 | 0x4084000000000000;
  this->field_0x3c = this->field_0x3c & 0xe0;
  return;
}



void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5
                 ,byte param_6,char param_7)

{
  param_1[1] = param_3;
  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);
  *param_1 = param_2;
  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;
  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;
  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;
  *(undefined8 *)((long)param_1 + 0x2c) = 0;
  *(ulong *)((long)param_1 + 0x34) =
       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;
  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;
  return;
}


MOVZX EAX,byte ptr [RSP + 0x8]
SHL R8D,0x4
AND ECX,0xf
AND R9D,0x3
OR ECX,R8D
MOV qword ptr [RDI + 0x8],RDX
MOV RDX,0x4084000000000000
SHL EAX,0x2
MOV byte ptr [RDI + 0x38],CL
OR R9D,EAX
MOV qword ptr [RDI],RSI
MOV RAX,-0x100000000
MOV byte ptr [RDI + 0x39],R9B
MOV qword ptr [RDI + 0x1c],RAX
MOV RAX,0x200ffff00000000
AND RAX,qword ptr [RDI + 0x34]
OR RAX,RDX
MOV qword ptr [RDI + 0x24],-0x1
MOV qword ptr [RDI + 0x2c],0x0
MOV qword ptr [RDI + 0x34],RAX
AND byte ptr [RDI + 0x3c],0xe0
RET
(translation_unit "void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)\n\n{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}\n\n" (function_definition "void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)\n\n{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" primitive_type (function_declarator "FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "byte param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "byte param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" { (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);" (assignment_expression "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4)" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = (binary_expression "param_4 & 0xf | (byte)(param_5 << 4)" (binary_expression "param_4 & 0xf" identifier & number_literal) | (call_expression "(byte)(param_5 << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_5 << 4)" ( (binary_expression "param_5 << 4" identifier << number_literal) ))))) ;) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;" (assignment_expression "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2" (pointer_expression "*(byte *)((long)param_1 + 0x39)" * (cast_expression "(byte *)((long)param_1 + 0x39)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x39)" ( (binary_expression "(long)param_1 + 0x39" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "param_6 & 3 | param_7 << 2" (binary_expression "param_6 & 3" identifier & number_literal) | (binary_expression "param_7 << 2" identifier << number_literal))) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined8 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff" (pointer_expression "*(undefined8 *)((long)param_1 + 0x24)" * (cast_expression "(undefined8 *)((long)param_1 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x24)" ( (binary_expression "(long)param_1 + 0x24" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x2c) = 0;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x2c) = 0" (pointer_expression "*(undefined8 *)((long)param_1 + 0x2c)" * (cast_expression "(undefined8 *)((long)param_1 + 0x2c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x2c)" ( (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;" (assignment_expression "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" * (cast_expression "(ulong *)((long)param_1 + 0x34)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" * (cast_expression "(ulong *)((long)param_1 + 0x34)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "STT": Some values do not have unique names */\n/* WARNING: Enum "STB": Some values do not have unique names */\n/* DWARF original prototype: void init_base_undefined(Symbol * this, char * name, char * version,\n   STT type, STB binding, STV visibility, uchar nonvis) */\n\nvoid __thiscall\ngold::Symbol::init_base_undefined\n          (Symbol *this,char *name,char *version,STT type,STB binding,STV visibility,uchar nonvis)\n\n{\n  ulong uVar1;\n  \n  this->version_ = version;\n  this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4);\n  this->name_ = name;\n  this->field_0x39 = (byte)visibility & 3 | nonvis << 2;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0xffffffff;\n  uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4);\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  *(undefined8 *)&(this->got_offsets_).got_offset_ = 0;\n  *(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =\n       uVar1 & 0x200ffff00000000 | 0x4084000000000000;\n  this->field_0x3c = this->field_0x3c & 0xe0;\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Symbol::init_base_undefined\n          (Symbol *this,char *name,char *version,STT type,STB binding,STV visibility,uchar nonvis)\n\n{\n  ulong uVar1;\n  \n  this->version_ = version;\n  this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4);\n  this->name_ = name;\n  this->field_0x39 = (byte)visibility & 3 | nonvis << 2;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0xffffffff;\n  uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4);\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  *(undefined8 *)&(this->got_offsets_).got_offset_ = 0;\n  *(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =\n       uVar1 & 0x200ffff00000000 | 0x4084000000000000;\n  this->field_0x3c = this->field_0x3c & 0xe0;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol::" identifier : : identifier : :) (function_declarator "init_base_undefined\n          (Symbol *this,char *name,char *version,STT type,STB binding,STV visibility,uchar nonvis)" identifier (parameter_list "(Symbol *this,char *name,char *version,STT type,STB binding,STV visibility,uchar nonvis)" ( (parameter_declaration "Symbol *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "char *version" primitive_type (pointer_declarator "*version" * identifier)) , (parameter_declaration "STT type" type_identifier identifier) , (parameter_declaration "STB binding" type_identifier identifier) , (parameter_declaration "STV visibility" type_identifier identifier) , (parameter_declaration "uchar nonvis" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  \n  this->version_ = version;\n  this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4);\n  this->name_ = name;\n  this->field_0x39 = (byte)visibility & 3 | nonvis << 2;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0xffffffff;\n  uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4);\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  *(undefined8 *)&(this->got_offsets_).got_offset_ = 0;\n  *(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =\n       uVar1 & 0x200ffff00000000 | 0x4084000000000000;\n  this->field_0x3c = this->field_0x3c & 0xe0;\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (expression_statement "this->version_ = version;" (assignment_expression "this->version_ = version" (field_expression "this->version_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4);" (assignment_expression "this->field_0x38 = (byte)type & 0xf | (byte)(binding << 4)" (field_expression "this->field_0x38" identifier -> field_identifier) = (binary_expression "(byte)type & 0xf | (byte)(binding << 4)" (binary_expression "(byte)type & 0xf" (cast_expression "(byte)type" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | (call_expression "(byte)(binding << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(binding << 4)" ( (binary_expression "binding << 4" identifier << number_literal) ))))) ;) (expression_statement "this->name_ = name;" (assignment_expression "this->name_ = name" (field_expression "this->name_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->field_0x39 = (byte)visibility & 3 | nonvis << 2;" (assignment_expression "this->field_0x39 = (byte)visibility & 3 | nonvis << 2" (field_expression "this->field_0x39" identifier -> field_identifier) = (binary_expression "(byte)visibility & 3 | nonvis << 2" (binary_expression "(byte)visibility & 3" (cast_expression "(byte)visibility" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | (binary_expression "nonvis << 2" identifier << number_literal))) ;) (expression_statement "this->symtab_index_ = 0;" (assignment_expression "this->symtab_index_ = 0" (field_expression "this->symtab_index_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->dynsym_index_ = 0xffffffff;" (assignment_expression "this->dynsym_index_ = 0xffffffff" (field_expression "this->dynsym_index_" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4);" (assignment_expression "uVar1 = *(ulong *)((long)&(this->got_offsets_).got_next_ + 4)" identifier = (pointer_expression "*(ulong *)((long)&(this->got_offsets_).got_next_ + 4)" * (cast_expression "(ulong *)((long)&(this->got_offsets_).got_next_ + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(this->got_offsets_).got_next_ + 4)" ( (binary_expression "(long)&(this->got_offsets_).got_next_ + 4" (cast_expression "(long)&(this->got_offsets_).got_next_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(this->got_offsets_).got_next_" & (field_expression "(this->got_offsets_).got_next_" (parenthesized_expression "(this->got_offsets_)" ( (field_expression "this->got_offsets_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "this->plt_offset_ = 0xffffffff;" (assignment_expression "this->plt_offset_ = 0xffffffff" (field_expression "this->plt_offset_" identifier -> field_identifier) = number_literal) ;) (expression_statement "(this->got_offsets_).got_type_ = 0xffffffff;" (assignment_expression "(this->got_offsets_).got_type_ = 0xffffffff" (field_expression "(this->got_offsets_).got_type_" (parenthesized_expression "(this->got_offsets_)" ( (field_expression "this->got_offsets_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "*(undefined8 *)&(this->got_offsets_).got_offset_ = 0;" (assignment_expression "*(undefined8 *)&(this->got_offsets_).got_offset_ = 0" (pointer_expression "*(undefined8 *)&(this->got_offsets_).got_offset_" * (cast_expression "(undefined8 *)&(this->got_offsets_).got_offset_" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->got_offsets_).got_offset_" & (field_expression "(this->got_offsets_).got_offset_" (parenthesized_expression "(this->got_offsets_)" ( (field_expression "this->got_offsets_" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =\n       uVar1 & 0x200ffff00000000 | 0x4084000000000000;" (assignment_expression "*(ulong *)((long)&(this->got_offsets_).got_next_ + 4) =\n       uVar1 & 0x200ffff00000000 | 0x4084000000000000" (pointer_expression "*(ulong *)((long)&(this->got_offsets_).got_next_ + 4)" * (cast_expression "(ulong *)((long)&(this->got_offsets_).got_next_ + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(this->got_offsets_).got_next_ + 4)" ( (binary_expression "(long)&(this->got_offsets_).got_next_ + 4" (cast_expression "(long)&(this->got_offsets_).got_next_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(this->got_offsets_).got_next_" & (field_expression "(this->got_offsets_).got_next_" (parenthesized_expression "(this->got_offsets_)" ( (field_expression "this->got_offsets_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (binary_expression "uVar1 & 0x200ffff00000000 | 0x4084000000000000" (binary_expression "uVar1 & 0x200ffff00000000" identifier & number_literal) | number_literal)) ;) (expression_statement "this->field_0x3c = this->field_0x3c & 0xe0;" (assignment_expression "this->field_0x3c = this->field_0x3c & 0xe0" (field_expression "this->field_0x3c" identifier -> field_identifier) = (binary_expression "this->field_0x3c & 0xe0" (field_expression "this->field_0x3c" identifier -> field_identifier) & number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)\n\n{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}\n\n" (function_definition "void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)\n\n{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" primitive_type (function_declarator "FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "byte param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "byte param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" { (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);" (assignment_expression "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4)" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = (binary_expression "param_4 & 0xf | (byte)(param_5 << 4)" (binary_expression "param_4 & 0xf" identifier & number_literal) | (call_expression "(byte)(param_5 << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_5 << 4)" ( (binary_expression "param_5 << 4" identifier << number_literal) ))))) ;) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;" (assignment_expression "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2" (pointer_expression "*(byte *)((long)param_1 + 0x39)" * (cast_expression "(byte *)((long)param_1 + 0x39)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x39)" ( (binary_expression "(long)param_1 + 0x39" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "param_6 & 3 | param_7 << 2" (binary_expression "param_6 & 3" identifier & number_literal) | (binary_expression "param_7 << 2" identifier << number_literal))) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined8 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff" (pointer_expression "*(undefined8 *)((long)param_1 + 0x24)" * (cast_expression "(undefined8 *)((long)param_1 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x24)" ( (binary_expression "(long)param_1 + 0x24" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)param_1 + 0x2c) = 0;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x2c) = 0" (pointer_expression "*(undefined8 *)((long)param_1 + 0x2c)" * (cast_expression "(undefined8 *)((long)param_1 + 0x2c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x2c)" ( (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;" (assignment_expression "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" * (cast_expression "(ulong *)((long)param_1 + 0x34)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" * (cast_expression "(ulong *)((long)param_1 + 0x34)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (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) ))) (compound_statement { (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) )))) = (binary_expression (binary_expression IDENT & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)\n\n{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002dd670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" (identifier "FUN_002dd670") (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5\n                 ,byte param_6,char param_7)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "byte param_4" (type_identifier "byte") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "byte param_6" (type_identifier "byte") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) () ")"))) (compound_statement "{\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);\n  *param_1 = param_2;\n  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;\n  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;\n  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;\n  *(undefined8 *)((long)param_1 + 0x2c) = 0;\n  *(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;\n  return;\n}" ({ "{") (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);" (assignment_expression "*(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4)" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "param_4 & 0xf | (byte)(param_5 << 4)" (binary_expression "param_4 & 0xf" (identifier "param_4") (& "&") (number_literal "0xf")) (| "|") (call_expression "(byte)(param_5 << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_5 << 4)" (( "(") (binary_expression "param_5 << 4" (identifier "param_5") (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;" (assignment_expression "*(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2" (pointer_expression "*(byte *)((long)param_1 + 0x39)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x39)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x39)" (( "(") (binary_expression "(long)param_1 + 0x39" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x39")) () ")")))) (= "=") (binary_expression "param_6 & 3 | param_7 << 2" (binary_expression "param_6 & 3" (identifier "param_6") (& "&") (number_literal "3")) (| "|") (binary_expression "param_7 << 2" (identifier "param_7") (<< "<<") (number_literal "2")))) (; ";")) (expression_statement "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000" (pointer_expression "*(undefined8 *)((long)param_1 + 0x1c)" (* "*") (cast_expression "(undefined8 *)((long)param_1 + 0x1c)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1c)" (( "(") (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0xffffffff00000000")) (; ";")) (expression_statement "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff" (pointer_expression "*(undefined8 *)((long)param_1 + 0x24)" (* "*") (cast_expression "(undefined8 *)((long)param_1 + 0x24)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x24)" (( "(") (binary_expression "(long)param_1 + 0x24" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "*(undefined8 *)((long)param_1 + 0x2c) = 0;" (assignment_expression "*(undefined8 *)((long)param_1 + 0x2c) = 0" (pointer_expression "*(undefined8 *)((long)param_1 + 0x2c)" (* "*") (cast_expression "(undefined8 *)((long)param_1 + 0x2c)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x2c)" (( "(") (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;" (assignment_expression "*(ulong *)((long)param_1 + 0x34) =\n       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" (* "*") (cast_expression "(ulong *)((long)param_1 + 0x34)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x34)" (( "(") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")")))) (= "=") (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000" (binary_expression "*(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000" (pointer_expression "*(ulong *)((long)param_1 + 0x34)" (* "*") (cast_expression "(ulong *)((long)param_1 + 0x34)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x34)" (( "(") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "0x200ffff00000000")) (| "|") (number_literal "0x4084000000000000"))) (; ";")) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xe0" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: void init_base_undefined(Symbol * this, char * name, char * version,
   STT type, STB binding, STV visibility, uchar nonvis) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,char *name,char *version,type_2 type,type_3 var_1,type_4 visibility,type_5 var_2)

{
  type_6 var_3;
  
  this->version_ = version;
  this->field_0x38 = (type_7)type & 0xf | (type_7)(var_1 << 4);
  this->name_ = name;
  this->field_0x39 = (type_7)visibility & 3 | var_2 << 2;
  this->symtab_index_ = 0;
  this->dynsym_index_ = 0xffffffff;
  var_3 = *(type_6 *)((long)&(this->got_offsets_).got_next_ + 4);
  this->plt_offset_ = 0xffffffff;
  (this->got_offsets_).got_type_ = 0xffffffff;
  *(type_8 *)&(this->got_offsets_).got_offset_ = 0;
  *(type_6 *)((long)&(this->got_offsets_).got_next_ + 4) =
       var_3 & 0x200ffff00000000 | 0x4084000000000000;
  this->field_0x3c = this->field_0x3c & 0xe0;
  return;
}


(translation_unit (function_definition type: (primitive_type) 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: (type_identifier) 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)))) body: (compound_statement (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: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) (return_statement))))

void MASKED(undefined8 *param_1,undefined8 param_2,undefined8 param_3,byte param_4,int param_5
                 ,byte param_6,char param_7)

{
  param_1[1] = param_3;
  *(byte *)(param_1 + 7) = param_4 & 0xf | (byte)(param_5 << 4);
  *param_1 = param_2;
  *(byte *)((long)param_1 + 0x39) = param_6 & 3 | param_7 << 2;
  *(undefined8 *)((long)param_1 + 0x1c) = 0xffffffff00000000;
  *(undefined8 *)((long)param_1 + 0x24) = 0xffffffffffffffff;
  *(undefined8 *)((long)param_1 + 0x2c) = 0;
  *(ulong *)((long)param_1 + 0x34) =
       *(ulong *)((long)param_1 + 0x34) & 0x200ffff00000000 | 0x4084000000000000;
  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0xe0;
  return;
}

