
/* DWARF original prototype: void write(Output_reloc<9,_true,_64,_true> * this, uchar * pov) */

ssize_t __thiscall
gold::Output_reloc<9,_true,_64,_true>::write
          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)

{
  uint uVar1;
  uint uVar2;
  Elf_Addr EVar3;
  ulong uVar4;
  undefined4 in_register_00000034;
  
  EVar3 = get_address(this);
  *(ulong *)CONCAT44(in_register_00000034,__fd) =
       EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |
       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |
       (EVar3 & 0xff00) << 0x28 | EVar3 << 0x38;
  uVar2 = get_symbol_index(this);
  uVar1 = *(uint *)&this->field_0x1c;
  uVar4 = (ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |
          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |
          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |
          ((ulong)uVar1 & 0xff00) << 0x28 | CONCAT44(uVar2,uVar1) << 0x38;
  ((ulong *)CONCAT44(in_register_00000034,__fd))[1] = uVar4;
  return uVar4;
}



void FUN_0022bc40(long param_1,ulong *param_2)

{
  ulong uVar1;
  long lVar2;
  ulong uVar3;
  
  uVar1 = FUN_0022ba90();
  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |
             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |
             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;
  lVar2 = FUN_00205f60(param_1);
  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);
  uVar1 = (lVar2 << 0x20) + uVar3;
  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18
               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |
               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;
  return;
}


PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
SUB RSP,0x8
CALL 0x0022ba90
MOV RDI,RBP
BSWAP RAX
MOV qword ptr [RBX],RAX
CALL 0x00205f60
MOV EDX,dword ptr [RBP + 0x1c]
SHL RAX,0x20
AND EDX,0xfffffff
ADD RAX,RDX
BSWAP RAX
MOV qword ptr [RBX + 0x8],RAX
ADD RSP,0x8
POP RBX
POP RBP
RET
(translation_unit "void FUN_0022bc40(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}\n\n" (function_definition "void FUN_0022bc40(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" primitive_type (function_declarator "FUN_0022bc40(long param_1,ulong *param_2)" identifier (parameter_list "(long param_1,ulong *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = FUN_0022ba90();" (assignment_expression "uVar1 = FUN_0022ba90()" identifier = (call_expression "FUN_0022ba90()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;" (assignment_expression "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" ( (binary_expression "uVar1 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" ( (binary_expression "uVar1 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" ( (binary_expression "uVar1 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" ( (binary_expression "uVar1 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x38" identifier << number_literal))) ;) (expression_statement "lVar2 = FUN_00205f60(param_1);" (assignment_expression "lVar2 = FUN_00205f60(param_1)" identifier = (call_expression "FUN_00205f60(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);" (assignment_expression "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" identifier = (call_expression "(ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x1c) & 0xfffffff)" ( (binary_expression "*(uint *)(param_1 + 0x1c) & 0xfffffff" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )))) ;) (expression_statement "uVar1 = (lVar2 << 0x20) + uVar3;" (assignment_expression "uVar1 = (lVar2 << 0x20) + uVar3" identifier = (binary_expression "(lVar2 << 0x20) + uVar3" (parenthesized_expression "(lVar2 << 0x20)" ( (binary_expression "lVar2 << 0x20" identifier << number_literal) )) + identifier)) ;) (expression_statement "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;" (assignment_expression "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" ( (binary_expression "uVar1 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" ( (binary_expression "uVar1 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" ( (binary_expression "uVar1 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" ( (binary_expression "uVar1 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x38" identifier << number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void write(Output_reloc<9,_true,_64,_true> * this, uchar * pov) */\n\nssize_t __thiscall\ngold::Output_reloc<9,_true,_64,_true>::write\n          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)\n\n{\n  uint uVar1;\n  uint uVar2;\n  Elf_Addr EVar3;\n  ulong uVar4;\n  undefined4 in_register_00000034;\n  \n  EVar3 = get_address(this);\n  *(ulong *)CONCAT44(in_register_00000034,__fd) =\n       EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |\n       (EVar3 & 0xff00) << 0x28 | EVar3 << 0x38;\n  uVar2 = get_symbol_index(this);\n  uVar1 = *(uint *)&this->field_0x1c;\n  uVar4 = (ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |\n          ((ulong)uVar1 & 0xff00) << 0x28 | CONCAT44(uVar2,uVar1) << 0x38;\n  ((ulong *)CONCAT44(in_register_00000034,__fd))[1] = uVar4;\n  return uVar4;\n}\n\n" comment (declaration "ssize_t __thiscall\ngold::Output_reloc<9,_true,_64,_true>::write\n          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_true>::write\n          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)\n\n{\n  uint" identifier > : : (function_declarator "write\n          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)" identifier (parameter_list "(Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "int __fd" primitive_type identifier) , (parameter_declaration "void *__buf" primitive_type (pointer_declarator "*__buf" * identifier)) , (parameter_declaration "size_t __n" primitive_type identifier) ))) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "Elf_Addr EVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined4 in_register_00000034;" type_identifier identifier ;) (expression_statement "EVar3 = get_address(this);" (assignment_expression "EVar3 = get_address(this)" identifier = (call_expression "get_address(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "*(ulong *)CONCAT44(in_register_00000034,__fd) =\n       EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |\n       (EVar3 & 0xff00) << 0x28 | EVar3 << 0x38;" (assignment_expression "*(ulong *)CONCAT44(in_register_00000034,__fd) =\n       EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |\n       (EVar3 & 0xff00) << 0x28 | EVar3 << 0x38" (pointer_expression "*(ulong *)CONCAT44(in_register_00000034,__fd)" * (cast_expression "(ulong *)CONCAT44(in_register_00000034,__fd)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(in_register_00000034,__fd)" identifier (argument_list "(in_register_00000034,__fd)" ( identifier , identifier ))))) = (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |\n       (EVar3 & 0xff00) << 0x28 | EVar3 << 0x38" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18 |\n       (EVar3 & 0xff00) << 0x28" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8 | (EVar3 & 0xff0000) << 0x18" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8 | (EVar3 & 0xff000000) << 8" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18 |\n       (EVar3 & 0xff00000000) >> 8" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28 | (EVar3 & 0xff0000000000) >> 0x18" (binary_expression "EVar3 >> 0x38 | (EVar3 & 0xff000000000000) >> 0x28" (binary_expression "EVar3 >> 0x38" identifier >> number_literal) | (binary_expression "(EVar3 & 0xff000000000000) >> 0x28" (parenthesized_expression "(EVar3 & 0xff000000000000)" ( (binary_expression "EVar3 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(EVar3 & 0xff0000000000) >> 0x18" (parenthesized_expression "(EVar3 & 0xff0000000000)" ( (binary_expression "EVar3 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(EVar3 & 0xff00000000) >> 8" (parenthesized_expression "(EVar3 & 0xff00000000)" ( (binary_expression "EVar3 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(EVar3 & 0xff000000) << 8" (parenthesized_expression "(EVar3 & 0xff000000)" ( (binary_expression "EVar3 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(EVar3 & 0xff0000) << 0x18" (parenthesized_expression "(EVar3 & 0xff0000)" ( (binary_expression "EVar3 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(EVar3 & 0xff00) << 0x28" (parenthesized_expression "(EVar3 & 0xff00)" ( (binary_expression "EVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "EVar3 << 0x38" identifier << number_literal))) ;) (expression_statement "uVar2 = get_symbol_index(this);" (assignment_expression "uVar2 = get_symbol_index(this)" identifier = (call_expression "get_symbol_index(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "uVar1 = *(uint *)&this->field_0x1c;" (assignment_expression "uVar1 = *(uint *)&this->field_0x1c" identifier = (pointer_expression "*(uint *)&this->field_0x1c" * (cast_expression "(uint *)&this->field_0x1c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x1c" & (field_expression "this->field_0x1c" identifier -> field_identifier))))) ;) (expression_statement "uVar4 = (ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |\n          ((ulong)uVar1 & 0xff00) << 0x28 | CONCAT44(uVar2,uVar1) << 0x38;" (assignment_expression "uVar4 = (ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |\n          ((ulong)uVar1 & 0xff00) << 0x28 | CONCAT44(uVar2,uVar1) << 0x38" identifier = (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |\n          ((ulong)uVar1 & 0xff00) << 0x28 | CONCAT44(uVar2,uVar1) << 0x38" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18 |\n          ((ulong)uVar1 & 0xff00) << 0x28" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8 | ((ulong)uVar1 & 0xff0000) << 0x18" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8 |\n          ((ulong)uVar1 & 0xf000000) << 8" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18 | (((ulong)uVar2 & 0xff) << 0x20) >> 8" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28 |\n          (((ulong)uVar2 & 0xff00) << 0x20) >> 0x18" (binary_expression "(ulong)(uVar2 >> 0x18) | (((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28" (call_expression "(ulong)(uVar2 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 >> 0x18)" ( (binary_expression "uVar2 >> 0x18" identifier >> number_literal) ))) | (binary_expression "(((ulong)uVar2 & 0xff0000) << 0x20) >> 0x28" (parenthesized_expression "(((ulong)uVar2 & 0xff0000) << 0x20)" ( (binary_expression "((ulong)uVar2 & 0xff0000) << 0x20" (parenthesized_expression "((ulong)uVar2 & 0xff0000)" ( (binary_expression "(ulong)uVar2 & 0xff0000" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal) )) >> number_literal)) | (binary_expression "(((ulong)uVar2 & 0xff00) << 0x20) >> 0x18" (parenthesized_expression "(((ulong)uVar2 & 0xff00) << 0x20)" ( (binary_expression "((ulong)uVar2 & 0xff00) << 0x20" (parenthesized_expression "((ulong)uVar2 & 0xff00)" ( (binary_expression "(ulong)uVar2 & 0xff00" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal) )) >> number_literal)) | (binary_expression "(((ulong)uVar2 & 0xff) << 0x20) >> 8" (parenthesized_expression "(((ulong)uVar2 & 0xff) << 0x20)" ( (binary_expression "((ulong)uVar2 & 0xff) << 0x20" (parenthesized_expression "((ulong)uVar2 & 0xff)" ( (binary_expression "(ulong)uVar2 & 0xff" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal) )) >> number_literal)) | (binary_expression "((ulong)uVar1 & 0xf000000) << 8" (parenthesized_expression "((ulong)uVar1 & 0xf000000)" ( (binary_expression "(ulong)uVar1 & 0xf000000" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "((ulong)uVar1 & 0xff0000) << 0x18" (parenthesized_expression "((ulong)uVar1 & 0xff0000)" ( (binary_expression "(ulong)uVar1 & 0xff0000" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "((ulong)uVar1 & 0xff00) << 0x28" (parenthesized_expression "((ulong)uVar1 & 0xff00)" ( (binary_expression "(ulong)uVar1 & 0xff00" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "CONCAT44(uVar2,uVar1) << 0x38" (call_expression "CONCAT44(uVar2,uVar1)" identifier (argument_list "(uVar2,uVar1)" ( identifier , identifier ))) << number_literal))) ;) (expression_statement "((ulong *)CONCAT44(in_register_00000034,__fd))[1] = uVar4;" (assignment_expression "((ulong *)CONCAT44(in_register_00000034,__fd))[1] = uVar4" (subscript_expression "((ulong *)CONCAT44(in_register_00000034,__fd))[1]" (parenthesized_expression "((ulong *)CONCAT44(in_register_00000034,__fd))" ( (cast_expression "(ulong *)CONCAT44(in_register_00000034,__fd)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(in_register_00000034,__fd)" identifier (argument_list "(in_register_00000034,__fd)" ( identifier , identifier )))) )) [ number_literal ]) = identifier) ;) (return_statement "return uVar4;" return identifier ;) (ERROR "}" }))
(translation_unit "void FUN_0022bc40(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}\n\n" (function_definition "void FUN_0022bc40(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" primitive_type (function_declarator "FUN_0022bc40(long param_1,ulong *param_2)" identifier (parameter_list "(long param_1,ulong *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = FUN_0022ba90();" (assignment_expression "uVar1 = FUN_0022ba90()" identifier = (call_expression "FUN_0022ba90()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;" (assignment_expression "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" ( (binary_expression "uVar1 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" ( (binary_expression "uVar1 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" ( (binary_expression "uVar1 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" ( (binary_expression "uVar1 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x38" identifier << number_literal))) ;) (expression_statement "lVar2 = FUN_00205f60(param_1);" (assignment_expression "lVar2 = FUN_00205f60(param_1)" identifier = (call_expression "FUN_00205f60(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);" (assignment_expression "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" identifier = (call_expression "(ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x1c) & 0xfffffff)" ( (binary_expression "*(uint *)(param_1 + 0x1c) & 0xfffffff" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )))) ;) (expression_statement "uVar1 = (lVar2 << 0x20) + uVar3;" (assignment_expression "uVar1 = (lVar2 << 0x20) + uVar3" identifier = (binary_expression "(lVar2 << 0x20) + uVar3" (parenthesized_expression "(lVar2 << 0x20)" ( (binary_expression "lVar2 << 0x20" identifier << number_literal) )) + identifier)) ;) (expression_statement "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;" (assignment_expression "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" ( (binary_expression "uVar1 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" ( (binary_expression "uVar1 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" ( (binary_expression "uVar1 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" ( (binary_expression "uVar1 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x38" identifier << number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (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)) | (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)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (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)) | (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)) | (binary_expression IDENT << LIT))) ;) (return_statement return ;) })))
(function_definition "void FUN_0022bc40(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0022bc40(long param_1,ulong *param_2)" (identifier "FUN_0022bc40") (parameter_list "(long param_1,ulong *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  ulong uVar3;\n  \n  uVar1 = FUN_0022ba90();\n  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;\n  lVar2 = FUN_00205f60(param_1);\n  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);\n  uVar1 = (lVar2 << 0x20) + uVar3;\n  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;\n  return;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (expression_statement "uVar1 = FUN_0022ba90();" (assignment_expression "uVar1 = FUN_0022ba90()" (identifier "uVar1") (= "=") (call_expression "FUN_0022ba90()" (identifier "FUN_0022ba90") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;" (assignment_expression "*param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |\n             (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |\n             (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" (identifier "uVar1") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" (( "(") (binary_expression "uVar1 & 0xff000000000000" (identifier "uVar1") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" (( "(") (binary_expression "uVar1 & 0xff0000000000" (identifier "uVar1") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" (( "(") (binary_expression "uVar1 & 0xff00000000" (identifier "uVar1") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" (( "(") (binary_expression "uVar1 & 0xff000000" (identifier "uVar1") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar1 << 0x38" (identifier "uVar1") (<< "<<") (number_literal "0x38")))) (; ";")) (expression_statement "lVar2 = FUN_00205f60(param_1);" (assignment_expression "lVar2 = FUN_00205f60(param_1)" (identifier "lVar2") (= "=") (call_expression "FUN_00205f60(param_1)" (identifier "FUN_00205f60") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);" (assignment_expression "uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" (identifier "uVar3") (= "=") (call_expression "(ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(uint *)(param_1 + 0x1c) & 0xfffffff)" (( "(") (binary_expression "*(uint *)(param_1 + 0x1c) & 0xfffffff" (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "0xfffffff")) () ")")))) (; ";")) (expression_statement "uVar1 = (lVar2 << 0x20) + uVar3;" (assignment_expression "uVar1 = (lVar2 << 0x20) + uVar3" (identifier "uVar1") (= "=") (binary_expression "(lVar2 << 0x20) + uVar3" (parenthesized_expression "(lVar2 << 0x20)" (( "(") (binary_expression "lVar2 << 0x20" (identifier "lVar2") (<< "<<") (number_literal "0x20")) () ")")) (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;" (assignment_expression "param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |\n               (uVar1 & 0xff0000) << 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18\n               | (uVar1 & 0xff00000000) >> 8" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18" (binary_expression "uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28" (binary_expression "uVar1 >> 0x38" (identifier "uVar1") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar1 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar1 & 0xff000000000000)" (( "(") (binary_expression "uVar1 & 0xff000000000000" (identifier "uVar1") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar1 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar1 & 0xff0000000000)" (( "(") (binary_expression "uVar1 & 0xff0000000000" (identifier "uVar1") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar1 & 0xff00000000) >> 8" (parenthesized_expression "(uVar1 & 0xff00000000)" (( "(") (binary_expression "uVar1 & 0xff00000000" (identifier "uVar1") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff000000) << 8" (parenthesized_expression "(uVar1 & 0xff000000)" (( "(") (binary_expression "uVar1 & 0xff000000" (identifier "uVar1") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff0000) << 0x18" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 0x28" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar3 << 0x38" (identifier "uVar3") (<< "<<") (number_literal "0x38")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void write(Output_reloc<9,_true,_64,_true> * this, uchar * pov) */

ssize_t __thiscall
gold::Output_reloc<9,_true,_64,_true>::write
          (Output_reloc<9,_true,_64,_true> *this,int __fd,void *__buf,size_t __n)

{
  type_1 uVar1;
  type_1 var_5;
  type_2 var_3;
  type_3 uVar4;
  type_4 in_register_00000034;
  
  var_3 = var_1(this);
  *(type_3 *)var_2(in_register_00000034,__fd) =
       var_3 >> 0x38 | (var_3 & 0xff000000000000) >> 0x28 | (var_3 & 0xff0000000000) >> 0x18 |
       (var_3 & 0xff00000000) >> 8 | (var_3 & 0xff000000) << 8 | (var_3 & 0xff0000) << 0x18 |
       (var_3 & 0xff00) << 0x28 | var_3 << 0x38;
  var_5 = var_4(this);
  uVar1 = *(type_1 *)&this->field_0x1c;
  uVar4 = (type_3)(var_5 >> 0x18) | (((type_3)var_5 & 0xff0000) << 0x20) >> 0x28 |
          (((type_3)var_5 & 0xff00) << 0x20) >> 0x18 | (((type_3)var_5 & 0xff) << 0x20) >> 8 |
          ((type_3)uVar1 & 0xf000000) << 8 | ((type_3)uVar1 & 0xff0000) << 0x18 |
          ((type_3)uVar1 & 0xff00) << 0x28 | var_2(var_5,uVar1) << 0x38;
  ((type_3 *)var_2(in_register_00000034,__fd))[1] = uVar4;
  return uVar4;
}


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

void MASKED(long param_1,ulong *param_2)

{
  ulong uVar1;
  long lVar2;
  ulong uVar3;
  
  uVar1 = FUN_0022ba90();
  *param_2 = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18 |
             (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 | (uVar1 & 0xff0000) << 0x18 |
             (uVar1 & 0xff00) << 0x28 | uVar1 << 0x38;
  lVar2 = FUN_00205f60(param_1);
  uVar3 = (ulong)(*(uint *)(param_1 + 0x1c) & 0xfffffff);
  uVar1 = (lVar2 << 0x20) + uVar3;
  param_2[1] = uVar1 >> 0x38 | (uVar1 & 0xff000000000000) >> 0x28 | (uVar1 & 0xff0000000000) >> 0x18
               | (uVar1 & 0xff00000000) >> 8 | (uVar1 & 0xff000000) << 8 |
               (uVar1 & 0xff0000) << 0x18 | (uVar1 & 0xff00) << 0x28 | uVar3 << 0x38;
  return;
}

