
/* 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_output_data(Sized_symbol<64> * this, char * name, char *
   version, Output_data * od, Value_type value, Size_type symsize, STT type, STB binding, STV
   visibility, uchar nonvis, bool offset_is_from_end, bool is_predefined) */

void __thiscall
gold::Sized_symbol<64>::init_output_data
          (Sized_symbol<64> *this,char *name,char *version,Output_data *od,Value_type value,
          Size_type symsize,STT type,STB binding,STV visibility,uchar nonvis,bool offset_is_from_end
          ,bool is_predefined)

{
  ushort uVar1;
  
  (this->super_Symbol).name_ = name;
  (this->super_Symbol).version_ = version;
  (this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;
  (this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2;
  (this->super_Symbol).u1_.output_data = od;
  (this->super_Symbol).symtab_index_ = 0;
  (this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;
  uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a;
  (this->super_Symbol).dynsym_index_ = 0;
  (this->super_Symbol).plt_offset_ = 0xffffffff;
  (this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;
  *(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081;
  (this->super_Symbol).got_offsets_.got_offset_ = 0;
  (this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;
  (this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04';
  this->value_ = value;
  this->symsize_ = symsize;
  return;
}



void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,
                 byte param_14)

{
  *param_1 = param_2;
  param_1[1] = param_3;
  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;
  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;
  param_1[2] = param_4;
  param_1[4] = 0;
  *(undefined1 *)(param_1 + 3) = param_13;
  param_1[5] = 0;
  param_1[6] = 0xffffffff;
  param_1[7] = 0xffffffff;
  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;
  param_1[8] = 0;
  param_1[9] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';
  param_1[0xc] = param_5;
  param_1[0xd] = param_6;
  param_1[0xe] = param_7;
  param_1[0xf] = param_8;
  return;
}


MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x8]
MOVZX ECX,byte ptr [ESP + 0x28]
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [ESP + 0xc]
SHL ECX,0x4
MOV dword ptr [EAX + 0x4],EDX
MOVZX EDX,byte ptr [ESP + 0x24]
AND EDX,0xf
OR EDX,ECX
MOVZX ECX,byte ptr [ESP + 0x30]
MOV byte ptr [EAX + 0x28],DL
MOVZX EDX,byte ptr [ESP + 0x2c]
SHL ECX,0x2
AND EDX,0x3
OR EDX,ECX
MOV byte ptr [EAX + 0x29],DL
MOV EDX,dword ptr [ESP + 0x10]
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [EAX + 0x10],0x0
MOV byte ptr [EAX + 0xc],DL
MOVZX EDX,word ptr [EAX + 0x2a]
MOV dword ptr [EAX + 0x14],0x0
AND DX,0x200
MOV dword ptr [EAX + 0x18],0xffffffff
OR DX,0x4081
MOV dword ptr [EAX + 0x1c],0xffffffff
MOV word ptr [EAX + 0x2a],DX
MOVZX EDX,byte ptr [ESP + 0x38]
MOV dword ptr [EAX + 0x20],0x0
AND EDX,0x1
MOV dword ptr [EAX + 0x24],0x0
LEA ECX,[EDX*0x4 + 0x0]
MOVZX EDX,byte ptr [EAX + 0x2c]
AND EDX,0xffffffe0
OR EDX,ECX
MOV byte ptr [EAX + 0x2c],DL
MOV EDX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [EAX + 0x30],EDX
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0x34],ECX
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + 0x38],EDX
MOV dword ptr [EAX + 0x3c],ECX
RET
(translation_unit "void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)\n\n{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}\n\n" (function_definition "void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)\n\n{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" primitive_type (function_declarator "FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "byte param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "byte param_11" type_identifier identifier) , (parameter_declaration "char param_12" primitive_type identifier) , (parameter_declaration "undefined1 param_13" type_identifier identifier) , (parameter_declaration "byte param_14" type_identifier identifier) ))) (compound_statement "{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" { (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (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 + 10) = param_9 & 0xf | param_10 << 4;" (assignment_expression "*(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (binary_expression "param_9 & 0xf | param_10 << 4" (binary_expression "param_9 & 0xf" identifier & number_literal) | (binary_expression "param_10 << 4" identifier << number_literal))) ;) (expression_statement "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;" (assignment_expression "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_11 & 3 | param_12 << 2" (binary_expression "param_11 & 3" identifier & number_literal) | (binary_expression "param_12 << 2" identifier << number_literal))) ;) (expression_statement "param_1[2] = param_4;" (assignment_expression "param_1[2] = param_4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = param_13;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_13" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0xffffffff;" (assignment_expression "param_1[6] = 0xffffffff" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0xffffffff;" (assignment_expression "param_1[7] = 0xffffffff" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" * (cast_expression "(ushort *)((int)param_1 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" * (cast_expression "(ushort *)((int)param_1 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "(param_14 & 1) * '\x04'" (parenthesized_expression "(param_14 & 1)" ( (binary_expression "param_14 & 1" identifier & number_literal) )) * (char_literal "'\x04'" ' escape_sequence ')))) ;) (expression_statement "param_1[0xc] = param_5;" (assignment_expression "param_1[0xc] = param_5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = param_6;" (assignment_expression "param_1[0xd] = param_6" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xe] = param_7;" (assignment_expression "param_1[0xe] = param_7" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = param_8;" (assignment_expression "param_1[0xf] = param_8" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (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_output_data(Sized_symbol<64> * this, char * name, char *\n   version, Output_data * od, Value_type value, Size_type symsize, STT type, STB binding, STV\n   visibility, uchar nonvis, bool offset_is_from_end, bool is_predefined) */\n\nvoid __thiscall\ngold::Sized_symbol<64>::init_output_data\n          (Sized_symbol<64> *this,char *name,char *version,Output_data *od,Value_type value,\n          Size_type symsize,STT type,STB binding,STV visibility,uchar nonvis,bool offset_is_from_end\n          ,bool is_predefined)\n\n{\n  ushort uVar1;\n  \n  (this->super_Symbol).name_ = name;\n  (this->super_Symbol).version_ = version;\n  (this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;\n  (this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2;\n  (this->super_Symbol).u1_.output_data = od;\n  (this->super_Symbol).symtab_index_ = 0;\n  (this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;\n  uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a;\n  (this->super_Symbol).dynsym_index_ = 0;\n  (this->super_Symbol).plt_offset_ = 0xffffffff;\n  (this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;\n  *(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081;\n  (this->super_Symbol).got_offsets_.got_offset_ = 0;\n  (this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;\n  (this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04';\n  this->value_ = value;\n  this->symsize_ = symsize;\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Sized_symbol<64>::init_output_data\n          (Sized_symbol<64> *this,char *name,char *version,Output_data *od,Value_type value,\n          Size_type symsize,STT type,STB binding,STV visibility,uchar nonvis,bool offset_is_from_end\n          ,bool is_predefined)\n\n{\n  ushort uVar1;\n  \n  (this->super_Symbol).name_ = name;\n  (this->super_Symbol).version_ = version;\n  (this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;\n  (this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2;\n  (this->super_Symbol).u1_.output_data = od;\n  (this->super_Symbol).symtab_index_ = 0;\n  (this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;\n  uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a;\n  (this->super_Symbol).dynsym_index_ = 0;\n  (this->super_Symbol).plt_offset_ = 0xffffffff;\n  (this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;\n  *(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081;\n  (this->super_Symbol).got_offsets_.got_offset_ = 0;\n  (this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;\n  (this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04';\n  this->value_ = value;\n  this->symsize_ = symsize;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Sized_symbol<64>::" identifier : : identifier < number_literal > : :) (function_declarator "init_output_data\n          (Sized_symbol<64> *this,char *name,char *version,Output_data *od,Value_type value,\n          Size_type symsize,STT type,STB binding,STV visibility,uchar nonvis,bool offset_is_from_end\n          ,bool is_predefined)" identifier (parameter_list "(Sized_symbol<64> *this,char *name,char *version,Output_data *od,Value_type value,\n          Size_type symsize,STT type,STB binding,STV visibility,uchar nonvis,bool offset_is_from_end\n          ,bool is_predefined)" ( (parameter_declaration "Sized_symbol<64> *this" type_identifier (ERROR "<64>" < number_literal >) (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 "Output_data *od" type_identifier (pointer_declarator "*od" * identifier)) , (parameter_declaration "Value_type value" type_identifier identifier) , (parameter_declaration "Size_type symsize" type_identifier 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) , (parameter_declaration "bool offset_is_from_end" primitive_type identifier) , (parameter_declaration "bool is_predefined" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  \n  (this->super_Symbol).name_ = name;\n  (this->super_Symbol).version_ = version;\n  (this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;\n  (this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2;\n  (this->super_Symbol).u1_.output_data = od;\n  (this->super_Symbol).symtab_index_ = 0;\n  (this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;\n  uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a;\n  (this->super_Symbol).dynsym_index_ = 0;\n  (this->super_Symbol).plt_offset_ = 0xffffffff;\n  (this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;\n  *(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081;\n  (this->super_Symbol).got_offsets_.got_offset_ = 0;\n  (this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;\n  (this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04';\n  this->value_ = value;\n  this->symsize_ = symsize;\n  return;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (expression_statement "(this->super_Symbol).name_ = name;" (assignment_expression "(this->super_Symbol).name_ = name" (field_expression "(this->super_Symbol).name_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Symbol).version_ = version;" (assignment_expression "(this->super_Symbol).version_ = version" (field_expression "(this->super_Symbol).version_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;" (assignment_expression "(this->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4" (field_expression "(this->super_Symbol).field_0x28" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(undefined1)type & STT_HIPROC | (undefined1)binding << 4" (binary_expression "(undefined1)type & STT_HIPROC" (cast_expression "(undefined1)type" ( (type_descriptor "undefined1" type_identifier) ) identifier) & identifier) | (binary_expression "(undefined1)binding << 4" (cast_expression "(undefined1)binding" ( (type_descriptor "undefined1" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "(this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2;" (assignment_expression "(this->super_Symbol).field_0x29 = (undefined1)visibility & STV_PROTECTED | nonvis << 2" (field_expression "(this->super_Symbol).field_0x29" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(undefined1)visibility & STV_PROTECTED | nonvis << 2" (binary_expression "(undefined1)visibility & STV_PROTECTED" (cast_expression "(undefined1)visibility" ( (type_descriptor "undefined1" type_identifier) ) identifier) & identifier) | (binary_expression "nonvis << 2" identifier << number_literal))) ;) (expression_statement "(this->super_Symbol).u1_.output_data = od;" (assignment_expression "(this->super_Symbol).u1_.output_data = od" (field_expression "(this->super_Symbol).u1_.output_data" (field_expression "(this->super_Symbol).u1_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super_Symbol).symtab_index_ = 0;" (assignment_expression "(this->super_Symbol).symtab_index_ = 0" (field_expression "(this->super_Symbol).symtab_index_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;" (assignment_expression "(this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end" (field_expression "(this->super_Symbol).u2_.offset_is_from_end" (field_expression "(this->super_Symbol).u2_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a;" (assignment_expression "uVar1 = *(ushort *)&(this->super_Symbol).field_0x2a" identifier = (pointer_expression "*(ushort *)&(this->super_Symbol).field_0x2a" * (cast_expression "(ushort *)&(this->super_Symbol).field_0x2a" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Symbol).field_0x2a" & (field_expression "(this->super_Symbol).field_0x2a" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "(this->super_Symbol).dynsym_index_ = 0;" (assignment_expression "(this->super_Symbol).dynsym_index_ = 0" (field_expression "(this->super_Symbol).dynsym_index_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Symbol).plt_offset_ = 0xffffffff;" (assignment_expression "(this->super_Symbol).plt_offset_ = 0xffffffff" (field_expression "(this->super_Symbol).plt_offset_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;" (assignment_expression "(this->super_Symbol).got_offsets_.got_type_ = 0xffffffff" (field_expression "(this->super_Symbol).got_offsets_.got_type_" (field_expression "(this->super_Symbol).got_offsets_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "*(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081;" (assignment_expression "*(ushort *)&(this->super_Symbol).field_0x2a = uVar1 & 0x200 | 0x4081" (pointer_expression "*(ushort *)&(this->super_Symbol).field_0x2a" * (cast_expression "(ushort *)&(this->super_Symbol).field_0x2a" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Symbol).field_0x2a" & (field_expression "(this->super_Symbol).field_0x2a" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier)))) = (binary_expression "uVar1 & 0x200 | 0x4081" (binary_expression "uVar1 & 0x200" identifier & number_literal) | number_literal)) ;) (expression_statement "(this->super_Symbol).got_offsets_.got_offset_ = 0;" (assignment_expression "(this->super_Symbol).got_offsets_.got_offset_ = 0" (field_expression "(this->super_Symbol).got_offsets_.got_offset_" (field_expression "(this->super_Symbol).got_offsets_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;" (assignment_expression "(this->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0" (field_expression "(this->super_Symbol).got_offsets_.got_next_" (field_expression "(this->super_Symbol).got_offsets_" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04';" (assignment_expression "(this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04'" (field_expression "(this->super_Symbol).field_0x2c" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(this->super_Symbol).field_0x2c & 0xe0 | is_predefined * '\x04'" (binary_expression "(this->super_Symbol).field_0x2c & 0xe0" (field_expression "(this->super_Symbol).field_0x2c" (parenthesized_expression "(this->super_Symbol)" ( (field_expression "this->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "is_predefined * '\x04'" identifier * (char_literal "'\x04'" ' escape_sequence ')))) ;) (expression_statement "this->value_ = value;" (assignment_expression "this->value_ = value" (field_expression "this->value_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->symsize_ = symsize;" (assignment_expression "this->symsize_ = symsize" (field_expression "this->symsize_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)\n\n{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}\n\n" (function_definition "void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)\n\n{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" primitive_type (function_declarator "FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "byte param_9" type_identifier identifier) , (parameter_declaration "char param_10" primitive_type identifier) , (parameter_declaration "byte param_11" type_identifier identifier) , (parameter_declaration "char param_12" primitive_type identifier) , (parameter_declaration "undefined1 param_13" type_identifier identifier) , (parameter_declaration "byte param_14" type_identifier identifier) ))) (compound_statement "{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" { (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (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 + 10) = param_9 & 0xf | param_10 << 4;" (assignment_expression "*(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4" (pointer_expression "*(byte *)(param_1 + 10)" * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = (binary_expression "param_9 & 0xf | param_10 << 4" (binary_expression "param_9 & 0xf" identifier & number_literal) | (binary_expression "param_10 << 4" identifier << number_literal))) ;) (expression_statement "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;" (assignment_expression "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2" (pointer_expression "*(byte *)((int)param_1 + 0x29)" * (cast_expression "(byte *)((int)param_1 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x29)" ( (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_11 & 3 | param_12 << 2" (binary_expression "param_11 & 3" identifier & number_literal) | (binary_expression "param_12 << 2" identifier << number_literal))) ;) (expression_statement "param_1[2] = param_4;" (assignment_expression "param_1[2] = param_4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = param_13;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_13" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0xffffffff;" (assignment_expression "param_1[6] = 0xffffffff" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0xffffffff;" (assignment_expression "param_1[7] = 0xffffffff" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" * (cast_expression "(ushort *)((int)param_1 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" * (cast_expression "(ushort *)((int)param_1 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "(param_14 & 1) * '\x04'" (parenthesized_expression "(param_14 & 1)" ( (binary_expression "param_14 & 1" identifier & number_literal) )) * (char_literal "'\x04'" ' escape_sequence ')))) ;) (expression_statement "param_1[0xc] = param_5;" (assignment_expression "param_1[0xc] = param_5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = param_6;" (assignment_expression "param_1[0xd] = param_6" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xe] = param_7;" (assignment_expression "param_1[0xe] = param_7" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = param_8;" (assignment_expression "param_1[0xf] = param_8" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (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) , (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 { (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) )))) = (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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression 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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (char_literal ' escape_sequence ')))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)\n\n{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0017b220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" (identifier "FUN_0017b220") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,\n                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,\n                 byte param_14)" (( "(") (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 "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "byte param_9" (type_identifier "byte") (identifier "param_9")) (, ",") (parameter_declaration "char param_10" (primitive_type "char") (identifier "param_10")) (, ",") (parameter_declaration "byte param_11" (type_identifier "byte") (identifier "param_11")) (, ",") (parameter_declaration "char param_12" (primitive_type "char") (identifier "param_12")) (, ",") (parameter_declaration "undefined1 param_13" (type_identifier "undefined1") (identifier "param_13")) (, ",") (parameter_declaration "byte param_14" (type_identifier "byte") (identifier "param_14")) () ")"))) (compound_statement "{\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;\n  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  *(undefined1 *)(param_1 + 3) = param_13;\n  param_1[5] = 0;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';\n  param_1[0xc] = param_5;\n  param_1[0xd] = param_6;\n  param_1[0xe] = param_7;\n  param_1[0xf] = param_8;\n  return;\n}" ({ "{") (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_2")) (; ";")) (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 + 10) = param_9 & 0xf | param_10 << 4;" (assignment_expression "*(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4" (pointer_expression "*(byte *)(param_1 + 10)" (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "param_9 & 0xf | param_10 << 4" (binary_expression "param_9 & 0xf" (identifier "param_9") (& "&") (number_literal "0xf")) (| "|") (binary_expression "param_10 << 4" (identifier "param_10") (<< "<<") (number_literal "4")))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;" (assignment_expression "*(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2" (pointer_expression "*(byte *)((int)param_1 + 0x29)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x29)" (( "(") (binary_expression "(int)param_1 + 0x29" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x29")) () ")")))) (= "=") (binary_expression "param_11 & 3 | param_12 << 2" (binary_expression "param_11 & 3" (identifier "param_11") (& "&") (number_literal "3")) (| "|") (binary_expression "param_12 << 2" (identifier "param_12") (<< "<<") (number_literal "2")))) (; ";")) (expression_statement "param_1[2] = param_4;" (assignment_expression "param_1[2] = param_4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 3) = param_13;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_13" (pointer_expression "*(undefined1 *)(param_1 + 3)" (* "*") (cast_expression "(undefined1 *)(param_1 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "param_13")) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 0xffffffff;" (assignment_expression "param_1[6] = 0xffffffff" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "param_1[7] = 0xffffffff;" (assignment_expression "param_1[7] = 0xffffffff" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(ushort *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081" (binary_expression "*(ushort *)((int)param_1 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(ushort *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "0x200")) (| "|") (number_literal "0x4081"))) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04'" (binary_expression "*(byte *)(param_1 + 0xb) & 0xe0" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (binary_expression "(param_14 & 1) * '\x04'" (parenthesized_expression "(param_14 & 1)" (( "(") (binary_expression "param_14 & 1" (identifier "param_14") (& "&") (number_literal "1")) () ")")) (* "*") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))))) (; ";")) (expression_statement "param_1[0xc] = param_5;" (assignment_expression "param_1[0xc] = param_5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "param_1[0xd] = param_6;" (assignment_expression "param_1[0xd] = param_6" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "param_1[0xe] = param_7;" (assignment_expression "param_1[0xe] = param_7" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "param_7")) (; ";")) (expression_statement "param_1[0xf] = param_8;" (assignment_expression "param_1[0xf] = param_8" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "param_8")) (; ";")) (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_output_data(Sized_symbol<64> * this, char * name, char *
   version, Output_data * od, Value_type value, Size_type symsize, STT type, STB binding, STV
   visibility, uchar nonvis, bool offset_is_from_end, bool is_predefined) */

void __thiscall
gold::type_1<64>::function_1
          (type_1<64> *this,char *name,char *version,type_2 *od,type_3 value,
          type_4 symsize,type_5 type,type_6 binding,type_7 visibility,type_8 var_3,bool offset_is_from_end
          ,bool var_5)

{
  type_9 var_4;
  
  (this->super_Symbol).name_ = name;
  (this->super_Symbol).version_ = version;
  (this->super_Symbol).field_0x28 = (type_10)type & var_1 | (type_10)binding << 4;
  (this->super_Symbol).field_0x29 = (type_10)visibility & var_2 | var_3 << 2;
  (this->super_Symbol).u1_.output_data = od;
  (this->super_Symbol).symtab_index_ = 0;
  (this->super_Symbol).u2_.offset_is_from_end = offset_is_from_end;
  var_4 = *(type_9 *)&(this->super_Symbol).field_0x2a;
  (this->super_Symbol).dynsym_index_ = 0;
  (this->super_Symbol).plt_offset_ = 0xffffffff;
  (this->super_Symbol).got_offsets_.got_type_ = 0xffffffff;
  *(type_9 *)&(this->super_Symbol).field_0x2a = var_4 & 0x200 | 0x4081;
  (this->super_Symbol).got_offsets_.got_offset_ = 0;
  (this->super_Symbol).got_offsets_.got_next_ = (type_11 *)0x0;
  (this->super_Symbol).field_0x2c = (this->super_Symbol).field_0x2c & 0xe0 | var_5 * '\x04';
  this->value_ = value;
  this->symsize_ = symsize;
  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: (type_identifier) 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: (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: (type_identifier) declarator: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (primitive_type)) 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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (char_literal (escape_sequence)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

void MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                 byte param_9,char param_10,byte param_11,char param_12,undefined1 param_13,
                 byte param_14)

{
  *param_1 = param_2;
  param_1[1] = param_3;
  *(byte *)(param_1 + 10) = param_9 & 0xf | param_10 << 4;
  *(byte *)((int)param_1 + 0x29) = param_11 & 3 | param_12 << 2;
  param_1[2] = param_4;
  param_1[4] = 0;
  *(undefined1 *)(param_1 + 3) = param_13;
  param_1[5] = 0;
  param_1[6] = 0xffffffff;
  param_1[7] = 0xffffffff;
  *(ushort *)((int)param_1 + 0x2a) = *(ushort *)((int)param_1 + 0x2a) & 0x200 | 0x4081;
  param_1[8] = 0;
  param_1[9] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xe0 | (param_14 & 1) * '\x04';
  param_1[0xc] = param_5;
  param_1[0xd] = param_6;
  param_1[0xe] = param_7;
  param_1[0xf] = param_8;
  return;
}

