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

void __thiscall
gold::Symbol::init_base_output_data
          (Symbol *this,char *name,char *version,Output_data *od,STT type,STB binding,STV visibility
          ,uchar nonvis,bool offset_is_from_end,bool is_predefined)

{
  byte bVar1;
  uint uVar2;
  
  uVar2 = *(uint *)&this->field_0x28;
  this->name_ = name;
  bVar1 = this->field_0x2c;
  this->version_ = version;
  (this->u1_).output_data = od;
  this->symtab_index_ = 0;
  this->dynsym_index_ = 0;
  (this->u2_).offset_is_from_end = offset_is_from_end;
  this->plt_offset_ = 0xffffffff;
  (this->got_offsets_).got_type_ = 0xffffffff;
  (this->got_offsets_).got_offset_ = 0;
  (this->got_offsets_).got_next_ = (Got_offset_list *)0x0;
  this->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5);
  *(STV *)&this->field_0x28 =
       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |
       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10;
  *(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102;
  return;
}



void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10
                 )

{
  uint uVar1;
  
  uVar1 = param_1[10];
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = param_4;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 3) = param_9;
  param_1[6] = 0xffffffff;
  param_1[7] = 0xffffffff;
  param_1[8] = 0;
  param_1[9] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);
  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |
                (param_8 & 0x3f) << 0x10;
  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;
  return;
}


lw v0,0x28(a0)
li t0,-0x1
lw v1,0x10(sp)
lw t1,0x14(sp)
sw a1,0x0(a0)
ins v0,v1,0x1c,0x4
lw a1,0x18(sp)
lbu v1,0x2c(a0)
ins v0,t1,0x18,0x4
sw a2,0x4(a0)
sw a3,0x8(a0)
ins v0,a1,0x16,0x2
lbu a1,0x23(sp)
andi v1,v1,0x27
sw zero,0x10(a0)
sw zero,0x14(a0)
sb a1,0xc(a0)
lbu a1,0x27(sp)
sw t0,0x18(a0)
sw t0,0x1c(a0)
ins v1,a1,0x5,0x1
lbu a1,0x1f(sp)
sw zero,0x20(a0)
sw zero,0x24(a0)
ins v0,a1,0x10,0x6
sb v1,0x2c(a0)
andi a1,v0,0x40
sw v0,0x28(a0)
ori v0,a1,0x2102
jr ra
_sh v0,0x2a(a0)
(translation_unit "void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )\n\n{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}\n\n" (function_definition "void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )\n\n{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" primitive_type (function_declarator "FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" ( (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 "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "byte param_8" type_identifier identifier) , (parameter_declaration "undefined1 param_9" type_identifier identifier) , (parameter_declaration "byte param_10" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = param_1[10];" (assignment_expression "uVar1 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (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 "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 "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = param_9;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_9" (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[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 "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) & 7 | (byte)((param_10 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5)" (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) & 7 | (byte)((param_10 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 7" (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) | (call_expression "(byte)((param_10 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((param_10 & 1) << 5)" ( (binary_expression "(param_10 & 1) << 5" (parenthesized_expression "(param_10 & 1)" ( (binary_expression "param_10 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;" (assignment_expression "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c" (binary_expression "uVar1 & 0xffff" identifier & number_literal) | (binary_expression "param_5 << 0x1c" identifier << number_literal)) | (binary_expression "(param_6 & 0xf) << 0x18" (parenthesized_expression "(param_6 & 0xf)" ( (binary_expression "param_6 & 0xf" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_7 & 3) << 0x16" (parenthesized_expression "(param_7 & 3)" ( (binary_expression "param_7 & 3" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_8 & 0x3f) << 0x10" (parenthesized_expression "(param_8 & 0x3f)" ( (binary_expression "param_8 & 0x3f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102" (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)uVar1 & 0x40 | 0x2102" (binary_expression "(ushort)uVar1 & 0x40" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "STB": Some values do not have unique names */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* DWARF original prototype: void init_base_output_data(Symbol * this, char * name, char * version,\n   Output_data * od, STT type, STB binding, STV visibility, uchar nonvis, bool offset_is_from_end,\n   bool is_predefined) */\n\nvoid __thiscall\ngold::Symbol::init_base_output_data\n          (Symbol *this,char *name,char *version,Output_data *od,STT type,STB binding,STV visibility\n          ,uchar nonvis,bool offset_is_from_end,bool is_predefined)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  uVar2 = *(uint *)&this->field_0x28;\n  this->name_ = name;\n  bVar1 = this->field_0x2c;\n  this->version_ = version;\n  (this->u1_).output_data = od;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0;\n  (this->u2_).offset_is_from_end = offset_is_from_end;\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  (this->got_offsets_).got_offset_ = 0;\n  (this->got_offsets_).got_next_ = (Got_offset_list *)0x0;\n  this->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5);\n  *(STV *)&this->field_0x28 =\n       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10;\n  *(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102;\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Symbol::init_base_output_data\n          (Symbol *this,char *name,char *version,Output_data *od,STT type,STB binding,STV visibility\n          ,uchar nonvis,bool offset_is_from_end,bool is_predefined)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  uVar2 = *(uint *)&this->field_0x28;\n  this->name_ = name;\n  bVar1 = this->field_0x2c;\n  this->version_ = version;\n  (this->u1_).output_data = od;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0;\n  (this->u2_).offset_is_from_end = offset_is_from_end;\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  (this->got_offsets_).got_offset_ = 0;\n  (this->got_offsets_).got_next_ = (Got_offset_list *)0x0;\n  this->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5);\n  *(STV *)&this->field_0x28 =\n       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10;\n  *(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol::" identifier : : identifier : :) (function_declarator "init_base_output_data\n          (Symbol *this,char *name,char *version,Output_data *od,STT type,STB binding,STV visibility\n          ,uchar nonvis,bool offset_is_from_end,bool is_predefined)" identifier (parameter_list "(Symbol *this,char *name,char *version,Output_data *od,STT type,STB binding,STV visibility\n          ,uchar nonvis,bool offset_is_from_end,bool is_predefined)" ( (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 "Output_data *od" type_identifier (pointer_declarator "*od" * 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  byte bVar1;\n  uint uVar2;\n  \n  uVar2 = *(uint *)&this->field_0x28;\n  this->name_ = name;\n  bVar1 = this->field_0x2c;\n  this->version_ = version;\n  (this->u1_).output_data = od;\n  this->symtab_index_ = 0;\n  this->dynsym_index_ = 0;\n  (this->u2_).offset_is_from_end = offset_is_from_end;\n  this->plt_offset_ = 0xffffffff;\n  (this->got_offsets_).got_type_ = 0xffffffff;\n  (this->got_offsets_).got_offset_ = 0;\n  (this->got_offsets_).got_next_ = (Got_offset_list *)0x0;\n  this->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5);\n  *(STV *)&this->field_0x28 =\n       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10;\n  *(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102;\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = *(uint *)&this->field_0x28;" (assignment_expression "uVar2 = *(uint *)&this->field_0x28" identifier = (pointer_expression "*(uint *)&this->field_0x28" * (cast_expression "(uint *)&this->field_0x28" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x28" & (field_expression "this->field_0x28" identifier -> field_identifier))))) ;) (expression_statement "this->name_ = name;" (assignment_expression "this->name_ = name" (field_expression "this->name_" identifier -> field_identifier) = identifier) ;) (expression_statement "bVar1 = this->field_0x2c;" (assignment_expression "bVar1 = this->field_0x2c" identifier = (field_expression "this->field_0x2c" identifier -> field_identifier)) ;) (expression_statement "this->version_ = version;" (assignment_expression "this->version_ = version" (field_expression "this->version_" identifier -> field_identifier) = identifier) ;) (expression_statement "(this->u1_).output_data = od;" (assignment_expression "(this->u1_).output_data = od" (field_expression "(this->u1_).output_data" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (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_ = 0;" (assignment_expression "this->dynsym_index_ = 0" (field_expression "this->dynsym_index_" identifier -> field_identifier) = number_literal) ;) (expression_statement "(this->u2_).offset_is_from_end = offset_is_from_end;" (assignment_expression "(this->u2_).offset_is_from_end = offset_is_from_end" (field_expression "(this->u2_).offset_is_from_end" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (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 "(this->got_offsets_).got_offset_ = 0;" (assignment_expression "(this->got_offsets_).got_offset_ = 0" (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 "(this->got_offsets_).got_next_ = (Got_offset_list *)0x0;" (assignment_expression "(this->got_offsets_).got_next_ = (Got_offset_list *)0x0" (field_expression "(this->got_offsets_).got_next_" (parenthesized_expression "(this->got_offsets_)" ( (field_expression "this->got_offsets_" 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->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5);" (assignment_expression "this->field_0x2c = bVar1 & 7 | (byte)((is_predefined & 1) << 5)" (field_expression "this->field_0x2c" identifier -> field_identifier) = (binary_expression "bVar1 & 7 | (byte)((is_predefined & 1) << 5)" (binary_expression "bVar1 & 7" identifier & number_literal) | (call_expression "(byte)((is_predefined & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((is_predefined & 1) << 5)" ( (binary_expression "(is_predefined & 1) << 5" (parenthesized_expression "(is_predefined & 1)" ( (binary_expression "is_predefined & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "*(STV *)&this->field_0x28 =\n       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10;" (assignment_expression "*(STV *)&this->field_0x28 =\n       uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10" (pointer_expression "*(STV *)&this->field_0x28" * (cast_expression "(STV *)&this->field_0x28" ( (type_descriptor "STV *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x28" & (field_expression "this->field_0x28" identifier -> field_identifier)))) = (binary_expression "uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16 | (nonvis & 0x3f) << 0x10" (binary_expression "uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18 |\n       (visibility & STV_PROTECTED) << 0x16" (binary_expression "uVar2 & 0xffff | type << 0x1c | (binding & STB_HIPROC) << 0x18" (binary_expression "uVar2 & 0xffff | type << 0x1c" (binary_expression "uVar2 & 0xffff" identifier & number_literal) | (binary_expression "type << 0x1c" identifier << number_literal)) | (binary_expression "(binding & STB_HIPROC) << 0x18" (parenthesized_expression "(binding & STB_HIPROC)" ( (binary_expression "binding & STB_HIPROC" identifier & identifier) )) << number_literal)) | (binary_expression "(visibility & STV_PROTECTED) << 0x16" (parenthesized_expression "(visibility & STV_PROTECTED)" ( (binary_expression "visibility & STV_PROTECTED" identifier & identifier) )) << number_literal)) | (binary_expression "(nonvis & 0x3f) << 0x10" (parenthesized_expression "(nonvis & 0x3f)" ( (binary_expression "nonvis & 0x3f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "*(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102;" (assignment_expression "*(ushort *)&this->field_0x2a = (ushort)uVar2 & 0x40 | 0x2102" (pointer_expression "*(ushort *)&this->field_0x2a" * (cast_expression "(ushort *)&this->field_0x2a" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x2a" & (field_expression "this->field_0x2a" identifier -> field_identifier)))) = (binary_expression "(ushort)uVar2 & 0x40 | 0x2102" (binary_expression "(ushort)uVar2 & 0x40" (cast_expression "(ushort)uVar2" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )\n\n{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}\n\n" (function_definition "void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )\n\n{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" primitive_type (function_declarator "FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" ( (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 "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "byte param_8" type_identifier identifier) , (parameter_declaration "undefined1 param_9" type_identifier identifier) , (parameter_declaration "byte param_10" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = param_1[10];" (assignment_expression "uVar1 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (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 "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 "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = param_9;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_9" (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[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 "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) & 7 | (byte)((param_10 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5)" (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) & 7 | (byte)((param_10 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 7" (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) | (call_expression "(byte)((param_10 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((param_10 & 1) << 5)" ( (binary_expression "(param_10 & 1) << 5" (parenthesized_expression "(param_10 & 1)" ( (binary_expression "param_10 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;" (assignment_expression "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c" (binary_expression "uVar1 & 0xffff" identifier & number_literal) | (binary_expression "param_5 << 0x1c" identifier << number_literal)) | (binary_expression "(param_6 & 0xf) << 0x18" (parenthesized_expression "(param_6 & 0xf)" ( (binary_expression "param_6 & 0xf" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_7 & 3) << 0x16" (parenthesized_expression "(param_7 & 3)" ( (binary_expression "param_7 & 3" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_8 & 0x3f) << 0x10" (parenthesized_expression "(param_8 & 0x3f)" ( (binary_expression "param_8 & 0x3f" identifier & number_literal) )) << number_literal))) ;) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102" (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)uVar1 & 0x40 | 0x2102" (binary_expression "(ushort)uVar1 & 0x40" (cast_expression "(ushort)uVar1" ( (type_descriptor "ushort" type_identifier) ) 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) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = 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 ]) = 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) )))) = 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 (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) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) | LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )\n\n{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b5ac0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" (identifier "FUN_002b5ac0") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10\n                 )" (( "(") (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 "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "byte param_8" (type_identifier "byte") (identifier "param_8")) (, ",") (parameter_declaration "undefined1 param_9" (type_identifier "undefined1") (identifier "param_9")) (, ",") (parameter_declaration "byte param_10" (type_identifier "byte") (identifier "param_10")) () ")"))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_1[10];\n  *param_1 = param_2;\n  param_1[1] = param_3;\n  param_1[2] = param_4;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  *(undefined1 *)(param_1 + 3) = param_9;\n  param_1[6] = 0xffffffff;\n  param_1[7] = 0xffffffff;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);\n  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;\n  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (expression_statement "uVar1 = param_1[10];" (assignment_expression "uVar1 = param_1[10]" (identifier "uVar1") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (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 "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 "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 "*(undefined1 *)(param_1 + 3) = param_9;" (assignment_expression "*(undefined1 *)(param_1 + 3) = param_9" (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_9")) (; ";")) (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 "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) & 7 | (byte)((param_10 & 1) << 5);" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5)" (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) & 7 | (byte)((param_10 & 1) << 5)" (binary_expression "*(byte *)(param_1 + 0xb) & 7" (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 "7")) (| "|") (call_expression "(byte)((param_10 & 1) << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((param_10 & 1) << 5)" (( "(") (binary_expression "(param_10 & 1) << 5" (parenthesized_expression "(param_10 & 1)" (( "(") (binary_expression "param_10 & 1" (identifier "param_10") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10;" (assignment_expression "param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |\n                (param_8 & 0x3f) << 0x10" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18" (binary_expression "uVar1 & 0xffff | param_5 << 0x1c" (binary_expression "uVar1 & 0xffff" (identifier "uVar1") (& "&") (number_literal "0xffff")) (| "|") (binary_expression "param_5 << 0x1c" (identifier "param_5") (<< "<<") (number_literal "0x1c"))) (| "|") (binary_expression "(param_6 & 0xf) << 0x18" (parenthesized_expression "(param_6 & 0xf)" (( "(") (binary_expression "param_6 & 0xf" (identifier "param_6") (& "&") (number_literal "0xf")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(param_7 & 3) << 0x16" (parenthesized_expression "(param_7 & 3)" (( "(") (binary_expression "param_7 & 3" (identifier "param_7") (& "&") (number_literal "3")) () ")")) (<< "<<") (number_literal "0x16"))) (| "|") (binary_expression "(param_8 & 0x3f) << 0x10" (parenthesized_expression "(param_8 & 0x3f)" (( "(") (binary_expression "param_8 & 0x3f" (identifier "param_8") (& "&") (number_literal "0x3f")) () ")")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;" (assignment_expression "*(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102" (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)uVar1 & 0x40 | 0x2102" (binary_expression "(ushort)uVar1 & 0x40" (cast_expression "(ushort)uVar1" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar1")) (& "&") (number_literal "0x40")) (| "|") (number_literal "0x2102"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __thiscall
gold::type_1::function_1
          (type_1 *this,char *name,char *version,type_2 *od,type_3 var_4,type_4 var_5,type_5 var_7
          ,type_6 var_9,bool offset_is_from_end,bool var_2)

{
  type_7 var_1;
  type_8 var_3;
  
  var_3 = *(type_8 *)&this->field_0x28;
  this->name_ = name;
  var_1 = this->field_0x2c;
  this->version_ = version;
  (this->u1_).output_data = od;
  this->symtab_index_ = 0;
  this->dynsym_index_ = 0;
  (this->u2_).offset_is_from_end = offset_is_from_end;
  this->plt_offset_ = 0xffffffff;
  (this->got_offsets_).got_type_ = 0xffffffff;
  (this->got_offsets_).got_offset_ = 0;
  (this->got_offsets_).got_next_ = (type_9 *)0x0;
  this->field_0x2c = var_1 & 7 | (type_7)((var_2 & 1) << 5);
  *(type_5 *)&this->field_0x28 =
       var_3 & 0xffff | var_4 << 0x1c | (var_5 & var_6) << 0x18 |
       (var_7 & var_8) << 0x16 | (var_9 & 0x3f) << 0x10;
  *(type_10 *)&this->field_0x2a = (type_10)var_3 & 0x40 | 0x2102;
  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: (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)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (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: (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: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (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: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal)))) (return_statement))))

void MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,uint param_6,uint param_7,byte param_8,undefined1 param_9,byte param_10
                 )

{
  uint uVar1;
  
  uVar1 = param_1[10];
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = param_4;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 3) = param_9;
  param_1[6] = 0xffffffff;
  param_1[7] = 0xffffffff;
  param_1[8] = 0;
  param_1[9] = 0;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 7 | (byte)((param_10 & 1) << 5);
  param_1[10] = uVar1 & 0xffff | param_5 << 0x1c | (param_6 & 0xf) << 0x18 | (param_7 & 3) << 0x16 |
                (param_8 & 0x3f) << 0x10;
  *(ushort *)((int)param_1 + 0x2a) = (ushort)uVar1 & 0x40 | 0x2102;
  return;
}

