
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* DWARF original prototype: void set_final_data_size(AArch64_input_section<64,_true> * this) */

void __thiscall
anon_unknown.dwarf_109b185::AArch64_input_section<64,_true>::set_final_data_size
          (AArch64_input_section<64,_true> *this)

{
  off_t *poVar1;
  byte bVar2;
  _func_int_varargs **pp_Var3;
  int extraout_EDX;
  uint uVar4;
  uint uVar5;
  bool bVar6;
  The_stub_table *local_38;
  uint local_2c;
  uint local_28;
  uint local_24;
  int local_20;
  
  uVar5 = 0;
  uVar4 = this->original_size_;
  local_38 = this->stub_table_;
  if ((local_38 == (The_stub_table *)0x0) || (this != local_38->owner_)) goto LAB_001e09a7;
  pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;
  if (((local_38->super_Output_data).field_0x1c & 2) == 0) {
    (*pp_Var3[0xe])(local_38);
    if (((local_38->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");
    }
    local_38 = this->stub_table_;
    pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;
  }
  local_2c = 0xfffffffc;
  local_28 = 0xffffffff;
  local_24 = 4;
  local_20 = 0;
  if (pp_Var3[3] == Stub_table<64,_false>::do_addralign) {
LAB_001e0a2e:
    bVar6 = uVar4 != 0;
    uVar5 = uVar4 - 1;
    uVar4 = local_2c & uVar5 + local_24;
    uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24);
  }
  else {
    local_24 = (*pp_Var3[3])(local_38);
    if (extraout_EDX != 0 || local_24 != 0) {
      local_2c = -local_24;
      local_38 = this->stub_table_;
      local_28 = -(extraout_EDX + (uint)(local_24 != 0));
      local_20 = extraout_EDX;
      goto LAB_001e0a2e;
    }
    local_38 = this->stub_table_;
  }
  if (((local_38->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
  }
  poVar1 = &(local_38->super_Output_data).data_size_;
  bVar6 = CARRY4(uVar4,(uint)*poVar1);
  uVar4 = uVar4 + (int)*poVar1;
  uVar5 = uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4) + (uint)bVar6;
LAB_001e09a7:
  bVar2 = (this->super_Output_relaxed_input_section).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x1c;
  if (((bVar2 & 2) == 0) && ((bVar2 & 8) == 0)) {
    *(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.
              super_Output_section_data.super_Output_data.data_size_ = uVar4;
    *(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.
                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5;
    (this->super_Output_relaxed_input_section).super_Output_section_data_build.
    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void FUN_001e0970(int param_1)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  bool bVar6;
  longlong lVar7;
  int *local_38;
  uint local_2c;
  uint local_28;
  
  uVar5 = 0;
  uVar4 = *(uint *)(param_1 + 0x3c);
  local_38 = *(int **)(param_1 + 0x34);
  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;
  iVar2 = *local_38;
  if ((*(byte *)(local_38 + 7) & 2) == 0) {
    (**(code **)(iVar2 + 0x38))(local_38);
    if ((*(byte *)(local_38 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);
    }
    local_38 = *(int **)(param_1 + 0x34);
    iVar2 = *local_38;
  }
  local_2c = 0xfffffffc;
  local_28 = 0xffffffff;
  lVar7 = 4;
  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {
LAB_001e0a2e:
    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);
    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);
    uVar4 = local_2c & (uint)lVar7;
    uVar5 = local_28 & uVar3;
  }
  else {
    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);
    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);
    if (lVar7 != 0) {
      local_2c = -(int)lVar7;
      local_38 = *(int **)(param_1 + 0x34);
      local_28 = -(uVar3 + ((int)lVar7 != 0));
      goto LAB_001e0a2e;
    }
    local_38 = *(int **)(param_1 + 0x34);
  }
  if ((*(byte *)(local_38 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);
  }
  bVar6 = CARRY4(uVar4,local_38[3]);
  uVar4 = uVar4 + local_38[3];
  uVar5 = uVar5 + local_38[4] + (uint)bVar6;
LAB_001e09a7:
  bVar1 = *(byte *)(param_1 + 0x1c);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(uint *)(param_1 + 0xc) = uVar4;
    *(uint *)(param_1 + 0x10) = uVar5;
    *(byte *)(param_1 + 0x1c) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);
}


CALL 0x00074f06
ADD ECX,0x40968b
PUSH EBP
XOR EDX,EDX
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0xc],EDX
MOV EAX,dword ptr [EBX + 0x3c]
MOV dword ptr [ESP + 0x8],EAX
MOV ESI,EAX
MOV EAX,dword ptr [EBX + 0x34]
MOV dword ptr [ESP + 0x4],EAX
TEST EAX,EAX
JZ 0x001e09a7
CMP EBX,dword ptr [EAX + 0x20]
JZ 0x001e09d0
MOVZX EAX,byte ptr [EBX + 0x1c]
TEST AL,0x2
JNZ 0x001e0ac0
TEST AL,0x8
JNZ 0x001e0ac0
OR EAX,0x2
MOV dword ptr [EBX + 0xc],ESI
MOV dword ptr [EBX + 0x10],EDI
MOV byte ptr [EBX + 0x1c],AL
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,EAX
MOV EAX,dword ptr [EAX]
MOV EBP,EDX
TEST byte ptr [EDX + 0x1c],0x2
JNZ 0x001e0a01
MOV dword ptr [ESP + 0x4],ECX
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EAX + 0x38]
MOV ECX,dword ptr [ESP + 0x14]
ADD ESP,0x10
TEST byte ptr [EBP + 0x1c],0x2
JZ 0x001e0af6
MOV EAX,dword ptr [EBX + 0x34]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0xc]
LEA EDX,[ECX + 0xffbe7390]
MOV dword ptr [ESP + 0x10],0xfffffffc
MOV dword ptr [ESP + 0x14],0xffffffff
MOV dword ptr [ESP + 0x18],0x4
MOV dword ptr [ESP + 0x1c],0x0
CMP EAX,EDX
JNZ 0x001e0a70
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV EBP,dword ptr [ESP + 0x10]
ADD EAX,-0x1
ADC EDX,-0x1
ADD EAX,dword ptr [ESP + 0x18]
ADC EDX,dword ptr [ESP + 0x1c]
AND EBP,EAX
MOV ESI,EBP
MOV EBP,dword ptr [ESP + 0x14]
AND EBP,EDX
MOV EDI,EBP
MOV EAX,dword ptr [ESP + 0x4]
TEST byte ptr [EAX + 0x1c],0x2
JZ 0x001e0adb
MOV EAX,dword ptr [ESP + 0x4]
ADD ESI,dword ptr [EAX + 0xc]
ADC EDI,dword ptr [EAX + 0x10]
JMP 0x001e09a7
MOV dword ptr [ESP + 0x10],ECX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL EAX
MOV EBP,EAX
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,EDX
MOV dword ptr [ESP + 0x2c],EDX
ADD ESP,0x10
OR EAX,EBP
MOV ECX,dword ptr [ESP + 0x10]
JNZ 0x001e0a9d
MOV EAX,dword ptr [EBX + 0x34]
MOV dword ptr [ESP + 0x4],EAX
JMP 0x001e0a54
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x1c]
NEG EAX
ADC EDX,0x0
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBX + 0x34]
NEG EDX
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x4],EAX
JMP 0x001e0a2e
PUSH EAX
LEA EAX,[ECX + 0xffe95acc]
MOV EBX,ECX
PUSH EAX
LEA EAX,[ECX + 0xffe6335d]
PUSH 0x218
PUSH EAX
CALL 0x002446e0
LEA EAX,[ECX + 0xffe95a88]
PUSH EDX
MOV EBX,ECX
PUSH EAX
LEA EAX,[ECX + 0xffe6335d]
PUSH 0xcf
PUSH EAX
CALL 0x002446e0
LEA EAX,[ECX + 0xffe952e8]
PUSH EBX
MOV EBX,ECX
PUSH EAX
LEA EAX,[ECX + 0xffe6335d]
PUSH 0x163
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nvoid FUN_001e0970(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}\n\n" comment (function_definition "void FUN_001e0970(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" primitive_type (function_declarator "FUN_001e0970(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x3c);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x3c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x3c)" * (cast_expression "(uint *)(param_1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;" if (parenthesized_expression "((local_38 == (int *)0x0) || (param_1 != local_38[8]))" ( (binary_expression "(local_38 == (int *)0x0) || (param_1 != local_38[8])" (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_1 != local_38[8])" ( (binary_expression "param_1 != local_38[8]" identifier != (subscript_expression "local_38[8]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_001e09a7;" goto statement_identifier ;)) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" { (expression_statement "(**(code **)(iVar2 + 0x38))(local_38);" (call_expression "(**(code **)(iVar2 + 0x38))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0x38))" ( (pointer_expression "**(code **)(iVar2 + 0x38)" * (pointer_expression "*(code **)(iVar2 + 0x38)" * (cast_expression "(code **)(iVar2 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) ))))) )) (argument_list "(local_38)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" { comment (expression_statement "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);" (call_expression "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1)" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size",param_1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (expression_statement "local_2c = 0xfffffffc;" (assignment_expression "local_2c = 0xfffffffc" identifier = number_literal) ;) (expression_statement "local_28 = 0xffffffff;" (assignment_expression "local_28 = 0xffffffff" identifier = number_literal) ;) (expression_statement "lVar7 = 4;" (assignment_expression "lVar7 = 4" identifier = number_literal) ;) (if_statement "if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" if (parenthesized_expression "(*(code **)(iVar2 + 0xc) == FUN_001d1390)" ( (binary_expression "*(code **)(iVar2 + 0xc) == FUN_001d1390" (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }" { (labeled_statement "LAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" statement_identifier : (expression_statement "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" (assignment_expression "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier = (binary_expression "lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier + (call_expression "CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier (argument_list "((uVar4 != 0) - 1,uVar4 - 1)" ( (binary_expression "(uVar4 != 0) - 1" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) - number_literal) , (binary_expression "uVar4 - 1" identifier - number_literal) ))))) ;)) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = local_2c & (uint)lVar7;" (assignment_expression "uVar4 = local_2c & (uint)lVar7" identifier = (binary_expression "local_2c & (uint)lVar7" identifier & (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar5 = local_28 & uVar3;" (assignment_expression "uVar5 = local_28 & uVar3" identifier = (binary_expression "local_28 & uVar3" identifier & identifier)) ;) }) (else_clause "else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" else (compound_statement "{\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" { (expression_statement "lVar7 = (**(code **)(iVar2 + 0xc))(local_38);" (assignment_expression "lVar7 = (**(code **)(iVar2 + 0xc))(local_38)" identifier = (call_expression "(**(code **)(iVar2 + 0xc))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0xc))" ( (pointer_expression "**(code **)(iVar2 + 0xc)" * (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) )) (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" { (expression_statement "local_2c = -(int)lVar7;" (assignment_expression "local_2c = -(int)lVar7" identifier = (unary_expression "-(int)lVar7" - (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_28 = -(uVar3 + ((int)lVar7 != 0));" (assignment_expression "local_28 = -(uVar3 + ((int)lVar7 != 0))" identifier = (unary_expression "-(uVar3 + ((int)lVar7 != 0))" - (parenthesized_expression "(uVar3 + ((int)lVar7 != 0))" ( (binary_expression "uVar3 + ((int)lVar7 != 0)" identifier + (parenthesized_expression "((int)lVar7 != 0)" ( (binary_expression "(int)lVar7 != 0" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) ))) )))) ;) (goto_statement "goto LAB_001e0a2e;" goto statement_identifier ;) })) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) }))) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",uVar3)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "bVar6 = CARRY4(uVar4,local_38[3]);" (assignment_expression "bVar6 = CARRY4(uVar4,local_38[3])" identifier = (call_expression "CARRY4(uVar4,local_38[3])" identifier (argument_list "(uVar4,local_38[3])" ( identifier , (subscript_expression "local_38[3]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar4 = uVar4 + local_38[3];" (assignment_expression "uVar4 = uVar4 + local_38[3]" identifier = (binary_expression "uVar4 + local_38[3]" identifier + (subscript_expression "local_38[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = uVar5 + local_38[4] + (uint)bVar6;" (assignment_expression "uVar5 = uVar5 + local_38[4] + (uint)bVar6" identifier = (binary_expression "uVar5 + local_38[4] + (uint)bVar6" (binary_expression "uVar5 + local_38[4]" identifier + (subscript_expression "local_38[4]" identifier [ number_literal ])) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;)) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x10) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x10) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);" (call_expression "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1)" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size",bVar1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n/* DWARF original prototype: void set_final_data_size(AArch64_input_section<64,_true> * this) */\n\nvoid __thiscall\nanon_unknown.dwarf_109b185::AArch64_input_section<64,_true>::set_final_data_size\n          (AArch64_input_section<64,_true> *this)\n\n{\n  off_t *poVar1;\n  byte bVar2;\n  _func_int_varargs **pp_Var3;\n  int extraout_EDX;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  The_stub_table *local_38;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  \n  uVar5 = 0;\n  uVar4 = this->original_size_;\n  local_38 = this->stub_table_;\n  if ((local_38 == (The_stub_table *)0x0) || (this != local_38->owner_)) goto LAB_001e09a7;\n  pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;\n  if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n    (*pp_Var3[0xe])(local_38);\n    if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n    }\n    local_38 = this->stub_table_;\n    pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  local_24 = 4;\n  local_20 = 0;\n  if (pp_Var3[3] == Stub_table<64,_false>::do_addralign) {\nLAB_001e0a2e:\n    bVar6 = uVar4 != 0;\n    uVar5 = uVar4 - 1;\n    uVar4 = local_2c & uVar5 + local_24;\n    uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24);\n  }\n  else {\n    local_24 = (*pp_Var3[3])(local_38);\n    if (extraout_EDX != 0 || local_24 != 0) {\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }\n    local_38 = this->stub_table_;\n  }\n  if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  poVar1 = &(local_38->super_Output_data).data_size_;\n  bVar6 = CARRY4(uVar4,(uint)*poVar1);\n  uVar4 = uVar4 + (int)*poVar1;\n  uVar5 = uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4) + (uint)bVar6;\nLAB_001e09a7:\n  bVar2 = (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x1c;\n  if (((bVar2 & 2) == 0) && ((bVar2 & 8) == 0)) {\n    *(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_ = uVar4;\n    *(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5;\n    (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}\n\n" comment comment (declaration "void __thiscall\nanon_unknown.dwarf_109b185::AArch64_input_section<64,_true>::set_final_data_size\n          (AArch64_input_section<64,_true> *this)\n\n{\n  off_t *poVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_109b185::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::set_final_data_size\n          (AArch64_input_section<64,_true> *this)\n\n{\n  off_t" identifier > : : (function_declarator "set_final_data_size\n          (AArch64_input_section<64,_true> *this)" identifier (parameter_list "(AArch64_input_section<64,_true> *this)" ( (parameter_declaration "AArch64_input_section" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) ))) { identifier) (pointer_declarator "*poVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "_func_int_varargs **pp_Var3;" type_identifier (pointer_declarator "**pp_Var3" * (pointer_declarator "*pp_Var3" * identifier)) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "The_stub_table *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = this->original_size_;" (assignment_expression "uVar4 = this->original_size_" identifier = (field_expression "this->original_size_" identifier -> field_identifier)) ;) (expression_statement "local_38 = this->stub_table_;" (assignment_expression "local_38 = this->stub_table_" identifier = (field_expression "this->stub_table_" identifier -> field_identifier)) ;) (if_statement "if ((local_38 == (The_stub_table *)0x0) || (this != local_38->owner_)) goto LAB_001e09a7;" if (parenthesized_expression "((local_38 == (The_stub_table *)0x0) || (this != local_38->owner_))" ( (binary_expression "(local_38 == (The_stub_table *)0x0) || (this != local_38->owner_)" (parenthesized_expression "(local_38 == (The_stub_table *)0x0)" ( (binary_expression "local_38 == (The_stub_table *)0x0" identifier == (cast_expression "(The_stub_table *)0x0" ( (type_descriptor "The_stub_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(this != local_38->owner_)" ( (binary_expression "this != local_38->owner_" identifier != (field_expression "local_38->owner_" identifier -> field_identifier)) ))) )) (goto_statement "goto LAB_001e09a7;" goto statement_identifier ;)) (expression_statement "pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var3 = (local_38->super_Output_data)._vptr_Output_data" identifier = (field_expression "(local_38->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n    (*pp_Var3[0xe])(local_38);\n    if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n    }\n    local_38 = this->stub_table_;\n    pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;\n  }" if (parenthesized_expression "(((local_38->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_38->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_38->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_38->super_Output_data).field_0x1c & 2" (field_expression "(local_38->super_Output_data).field_0x1c" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    (*pp_Var3[0xe])(local_38);\n    if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n    }\n    local_38 = this->stub_table_;\n    pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;\n  }" { (expression_statement "(*pp_Var3[0xe])(local_38);" (call_expression "(*pp_Var3[0xe])(local_38)" (parenthesized_expression "(*pp_Var3[0xe])" ( (pointer_expression "*pp_Var3[0xe]" * (subscript_expression "pp_Var3[0xe]" identifier [ number_literal ])) )) (argument_list "(local_38)" ( identifier ))) ;) (if_statement "if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n    }" if (parenthesized_expression "(((local_38->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_38->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_38->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_38->super_Output_data).field_0x1c & 2" (field_expression "(local_38->super_Output_data).field_0x1c" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");\n    }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x163,"finalize_data_size")" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") ))) ;)) })) (expression_statement "local_38 = this->stub_table_;" (assignment_expression "local_38 = this->stub_table_" identifier = (field_expression "this->stub_table_" identifier -> field_identifier)) ;) (expression_statement "pp_Var3 = (local_38->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var3 = (local_38->super_Output_data)._vptr_Output_data" identifier = (field_expression "(local_38->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "local_2c = 0xfffffffc;" (assignment_expression "local_2c = 0xfffffffc" identifier = number_literal) ;) (expression_statement "local_28 = 0xffffffff;" (assignment_expression "local_28 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_24 = 4;" (assignment_expression "local_24 = 4" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (if_statement "if (pp_Var3[3] == Stub_table<64,_false>::do_addralign) {\nLAB_001e0a2e:\n    bVar6 = uVar4 != 0;\n    uVar5 = uVar4 - 1;\n    uVar4 = local_2c & uVar5 + local_24;\n    uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24);\n  }\n  else {\n    local_24 = (*pp_Var3[3])(local_38);\n    if (extraout_EDX != 0 || local_24 != 0) {\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }\n    local_38 = this->stub_table_;\n  }" if (parenthesized_expression "(pp_Var3[3] == Stub_table<64,_false>::do_addralign)" ( (comma_expression "pp_Var3[3] == Stub_table<64,_false>::do_addralign" (binary_expression "pp_Var3[3] == Stub_table<64" (subscript_expression "pp_Var3[3]" identifier [ number_literal ]) == (binary_expression "Stub_table<64" identifier < number_literal)) , (binary_expression "_false>::do_addralign" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\nLAB_001e0a2e:\n    bVar6 = uVar4 != 0;\n    uVar5 = uVar4 - 1;\n    uVar4 = local_2c & uVar5 + local_24;\n    uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24);\n  }" { (labeled_statement "LAB_001e0a2e:\n    bVar6 = uVar4 != 0;" statement_identifier : (expression_statement "bVar6 = uVar4 != 0;" (assignment_expression "bVar6 = uVar4 != 0" identifier = (binary_expression "uVar4 != 0" identifier != number_literal)) ;)) (expression_statement "uVar5 = uVar4 - 1;" (assignment_expression "uVar5 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "uVar4 = local_2c & uVar5 + local_24;" (assignment_expression "uVar4 = local_2c & uVar5 + local_24" identifier = (binary_expression "local_2c & uVar5 + local_24" identifier & (binary_expression "uVar5 + local_24" identifier + identifier))) ;) (expression_statement "uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24);" (assignment_expression "uVar5 = local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24)" identifier = (binary_expression "local_28 & (bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24)" identifier & (binary_expression "(bVar6 - 1) + local_20 + (uint)CARRY4(uVar5,local_24)" (binary_expression "(bVar6 - 1) + local_20" (parenthesized_expression "(bVar6 - 1)" ( (binary_expression "bVar6 - 1" identifier - number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar5,local_24)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,local_24)" identifier (argument_list "(uVar5,local_24)" ( identifier , identifier ))))))) ;) }) (else_clause "else {\n    local_24 = (*pp_Var3[3])(local_38);\n    if (extraout_EDX != 0 || local_24 != 0) {\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }\n    local_38 = this->stub_table_;\n  }" else (compound_statement "{\n    local_24 = (*pp_Var3[3])(local_38);\n    if (extraout_EDX != 0 || local_24 != 0) {\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }\n    local_38 = this->stub_table_;\n  }" { (expression_statement "local_24 = (*pp_Var3[3])(local_38);" (assignment_expression "local_24 = (*pp_Var3[3])(local_38)" identifier = (call_expression "(*pp_Var3[3])(local_38)" (parenthesized_expression "(*pp_Var3[3])" ( (pointer_expression "*pp_Var3[3]" * (subscript_expression "pp_Var3[3]" identifier [ number_literal ])) )) (argument_list "(local_38)" ( identifier )))) ;) (if_statement "if (extraout_EDX != 0 || local_24 != 0) {\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }" if (parenthesized_expression "(extraout_EDX != 0 || local_24 != 0)" ( (binary_expression "extraout_EDX != 0 || local_24 != 0" (binary_expression "extraout_EDX != 0" identifier != number_literal) || (binary_expression "local_24 != 0" identifier != number_literal)) )) (compound_statement "{\n      local_2c = -local_24;\n      local_38 = this->stub_table_;\n      local_28 = -(extraout_EDX + (uint)(local_24 != 0));\n      local_20 = extraout_EDX;\n      goto LAB_001e0a2e;\n    }" { (expression_statement "local_2c = -local_24;" (assignment_expression "local_2c = -local_24" identifier = (unary_expression "-local_24" - identifier)) ;) (expression_statement "local_38 = this->stub_table_;" (assignment_expression "local_38 = this->stub_table_" identifier = (field_expression "this->stub_table_" identifier -> field_identifier)) ;) (expression_statement "local_28 = -(extraout_EDX + (uint)(local_24 != 0));" (assignment_expression "local_28 = -(extraout_EDX + (uint)(local_24 != 0))" identifier = (unary_expression "-(extraout_EDX + (uint)(local_24 != 0))" - (parenthesized_expression "(extraout_EDX + (uint)(local_24 != 0))" ( (binary_expression "extraout_EDX + (uint)(local_24 != 0)" identifier + (call_expression "(uint)(local_24 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )))) )))) ;) (expression_statement "local_20 = extraout_EDX;" (assignment_expression "local_20 = extraout_EDX" identifier = identifier) ;) (goto_statement "goto LAB_001e0a2e;" goto statement_identifier ;) })) (expression_statement "local_38 = this->stub_table_;" (assignment_expression "local_38 = this->stub_table_" identifier = (field_expression "this->stub_table_" identifier -> field_identifier)) ;) }))) (if_statement "if (((local_38->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "(((local_38->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_38->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_38->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_38->super_Output_data).field_0x1c & 2" (field_expression "(local_38->super_Output_data).field_0x1c" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })) (expression_statement "poVar1 = &(local_38->super_Output_data).data_size_;" (assignment_expression "poVar1 = &(local_38->super_Output_data).data_size_" identifier = (pointer_expression "&(local_38->super_Output_data).data_size_" & (field_expression "(local_38->super_Output_data).data_size_" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "bVar6 = CARRY4(uVar4,(uint)*poVar1);" (assignment_expression "bVar6 = CARRY4(uVar4,(uint)*poVar1)" identifier = (call_expression "CARRY4(uVar4,(uint)*poVar1)" identifier (argument_list "(uVar4,(uint)*poVar1)" ( identifier , (binary_expression "(uint)*poVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))) ;) (expression_statement "uVar4 = uVar4 + (int)*poVar1;" (assignment_expression "uVar4 = uVar4 + (int)*poVar1" identifier = (binary_expression "uVar4 + (int)*poVar1" identifier + (cast_expression "(int)*poVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*poVar1" * identifier)))) ;) (expression_statement "uVar5 = uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4) + (uint)bVar6;" (assignment_expression "uVar5 = uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4) + (uint)bVar6" identifier = (binary_expression "uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4) + (uint)bVar6" (binary_expression "uVar5 + *(int *)((int)&(local_38->super_Output_data).data_size_ + 4)" identifier + (pointer_expression "*(int *)((int)&(local_38->super_Output_data).data_size_ + 4)" * (cast_expression "(int *)((int)&(local_38->super_Output_data).data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(local_38->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(local_38->super_Output_data).data_size_ + 4" (cast_expression "(int)&(local_38->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(local_38->super_Output_data).data_size_" & (field_expression "(local_38->super_Output_data).data_size_" (parenthesized_expression "(local_38->super_Output_data)" ( (field_expression "local_38->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_001e09a7:\n  bVar2 = (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x1c;" statement_identifier : (expression_statement "bVar2 = (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x1c;" (assignment_expression "bVar2 = (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x1c" identifier = (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data.field_0x1c" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n          super_Output_section_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_relaxed_input_section)" ( (field_expression "this->super_Output_relaxed_input_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;)) (if_statement "if (((bVar2 & 2) == 0) && ((bVar2 & 8) == 0)) {\n    *(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_ = uVar4;\n    *(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5;\n    (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar2 & 2) == 0) && ((bVar2 & 8) == 0))" ( (binary_expression "((bVar2 & 2) == 0) && ((bVar2 & 8) == 0)" (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar2 & 8) == 0)" ( (binary_expression "(bVar2 & 8) == 0" (parenthesized_expression "(bVar2 & 8)" ( (binary_expression "bVar2 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_ = uVar4;\n    *(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5;\n    (this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2;\n    return;\n  }" { (expression_statement "*(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_ = uVar4;" (assignment_expression "*(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_ = uVar4" (pointer_expression "*(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_" * (cast_expression "(uint *)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_" & (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data.data_size_" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n              super_Output_section_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_relaxed_input_section)" ( (field_expression "this->super_Output_relaxed_input_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5;" (assignment_expression "*(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4) = uVar5" (pointer_expression "*(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4)" * (cast_expression "(uint *)((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_ + 4" (cast_expression "(int)&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_" & (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data.data_size_" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n                    super_Output_section_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_relaxed_input_section)" ( (field_expression "this->super_Output_relaxed_input_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2;" (assignment_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c = bVar2 | 2" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data.field_0x1c" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build.\n    super_Output_section_data" (field_expression "(this->super_Output_relaxed_input_section).super_Output_section_data_build" (parenthesized_expression "(this->super_Output_relaxed_input_section)" ( (field_expression "this->super_Output_relaxed_input_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "bVar2 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;)) (ERROR "}" }))
(translation_unit "void FUN_001e0970(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}\n\n" (function_definition "void FUN_001e0970(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" primitive_type (function_declarator "FUN_001e0970(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x3c);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x3c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x3c)" * (cast_expression "(uint *)(param_1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;" if (parenthesized_expression "((local_38 == (int *)0x0) || (param_1 != local_38[8]))" ( (binary_expression "(local_38 == (int *)0x0) || (param_1 != local_38[8])" (parenthesized_expression "(local_38 == (int *)0x0)" ( (binary_expression "local_38 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_1 != local_38[8])" ( (binary_expression "param_1 != local_38[8]" identifier != (subscript_expression "local_38[8]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_001e09a7;" goto statement_identifier ;)) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" { (expression_statement "(**(code **)(iVar2 + 0x38))(local_38);" (call_expression "(**(code **)(iVar2 + 0x38))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0x38))" ( (pointer_expression "**(code **)(iVar2 + 0x38)" * (pointer_expression "*(code **)(iVar2 + 0x38)" * (cast_expression "(code **)(iVar2 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) ))))) )) (argument_list "(local_38)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" { (expression_statement "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);" (call_expression "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1)" identifier (argument_list "("../../gold/output.h",0x163,"finalize_data_size",param_1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""finalize_data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (expression_statement "local_2c = 0xfffffffc;" (assignment_expression "local_2c = 0xfffffffc" identifier = number_literal) ;) (expression_statement "local_28 = 0xffffffff;" (assignment_expression "local_28 = 0xffffffff" identifier = number_literal) ;) (expression_statement "lVar7 = 4;" (assignment_expression "lVar7 = 4" identifier = number_literal) ;) (if_statement "if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" if (parenthesized_expression "(*(code **)(iVar2 + 0xc) == FUN_001d1390)" ( (binary_expression "*(code **)(iVar2 + 0xc) == FUN_001d1390" (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }" { (labeled_statement "LAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" statement_identifier : (expression_statement "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" (assignment_expression "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier = (binary_expression "lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier + (call_expression "CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" identifier (argument_list "((uVar4 != 0) - 1,uVar4 - 1)" ( (binary_expression "(uVar4 != 0) - 1" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) - number_literal) , (binary_expression "uVar4 - 1" identifier - number_literal) ))))) ;)) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = local_2c & (uint)lVar7;" (assignment_expression "uVar4 = local_2c & (uint)lVar7" identifier = (binary_expression "local_2c & (uint)lVar7" identifier & (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar5 = local_28 & uVar3;" (assignment_expression "uVar5 = local_28 & uVar3" identifier = (binary_expression "local_28 & uVar3" identifier & identifier)) ;) }) (else_clause "else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" else (compound_statement "{\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" { (expression_statement "lVar7 = (**(code **)(iVar2 + 0xc))(local_38);" (assignment_expression "lVar7 = (**(code **)(iVar2 + 0xc))(local_38)" identifier = (call_expression "(**(code **)(iVar2 + 0xc))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0xc))" ( (pointer_expression "**(code **)(iVar2 + 0xc)" * (pointer_expression "*(code **)(iVar2 + 0xc)" * (cast_expression "(code **)(iVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) )) (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" { (expression_statement "local_2c = -(int)lVar7;" (assignment_expression "local_2c = -(int)lVar7" identifier = (unary_expression "-(int)lVar7" - (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_28 = -(uVar3 + ((int)lVar7 != 0));" (assignment_expression "local_28 = -(uVar3 + ((int)lVar7 != 0))" identifier = (unary_expression "-(uVar3 + ((int)lVar7 != 0))" - (parenthesized_expression "(uVar3 + ((int)lVar7 != 0))" ( (binary_expression "uVar3 + ((int)lVar7 != 0)" identifier + (parenthesized_expression "((int)lVar7 != 0)" ( (binary_expression "(int)lVar7 != 0" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) ))) )))) ;) (goto_statement "goto LAB_001e0a2e;" goto statement_identifier ;) })) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" identifier = (pointer_expression "*(int **)(param_1 + 0x34)" * (cast_expression "(int **)(param_1 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) }))) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" if (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" ( (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" * (cast_expression "(byte *)(local_38 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 7)" ( (binary_expression "local_38 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" { (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",uVar3)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "bVar6 = CARRY4(uVar4,local_38[3]);" (assignment_expression "bVar6 = CARRY4(uVar4,local_38[3])" identifier = (call_expression "CARRY4(uVar4,local_38[3])" identifier (argument_list "(uVar4,local_38[3])" ( identifier , (subscript_expression "local_38[3]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar4 = uVar4 + local_38[3];" (assignment_expression "uVar4 = uVar4 + local_38[3]" identifier = (binary_expression "uVar4 + local_38[3]" identifier + (subscript_expression "local_38[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = uVar5 + local_38[4] + (uint)bVar6;" (assignment_expression "uVar5 = uVar5 + local_38[4] + (uint)bVar6" identifier = (binary_expression "uVar5 + local_38[4] + (uint)bVar6" (binary_expression "uVar5 + local_38[4]" identifier + (subscript_expression "local_38[4]" identifier [ number_literal ])) + (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "LAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;)) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x10) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x10) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);" (call_expression "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1)" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size",bVar1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT != (subscript_expression IDENT [ LIT ])) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) - LIT) , (binary_expression IDENT - LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) ))) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_001e0970(int param_1)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" (primitive_type "void") (function_declarator "FUN_001e0970(int param_1)" (identifier "FUN_001e0970") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  bool bVar6;\n  longlong lVar7;\n  int *local_38;\n  uint local_2c;\n  uint local_28;\n  \n  uVar5 = 0;\n  uVar4 = *(uint *)(param_1 + 0x3c);\n  local_38 = *(int **)(param_1 + 0x34);\n  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;\n  iVar2 = *local_38;\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }\n  local_2c = 0xfffffffc;\n  local_28 = 0xffffffff;\n  lVar7 = 4;\n  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }\n  if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }\n  bVar6 = CARRY4(uVar4,local_38[3]);\n  uVar4 = uVar4 + local_38[3];\n  uVar5 = uVar5 + local_38[4] + (uint)bVar6;\nLAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "longlong lVar7;" (type_identifier "longlong") (identifier "lVar7") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 0x3c);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x3c)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0x3c)" (* "*") (cast_expression "(uint *)(param_1 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" (identifier "local_38") (= "=") (pointer_expression "*(int **)(param_1 + 0x34)" (* "*") (cast_expression "(int **)(param_1 + 0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;" (if "if") (parenthesized_expression "((local_38 == (int *)0x0) || (param_1 != local_38[8]))" (( "(") (binary_expression "(local_38 == (int *)0x0) || (param_1 != local_38[8])" (parenthesized_expression "(local_38 == (int *)0x0)" (( "(") (binary_expression "local_38 == (int *)0x0" (identifier "local_38") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(param_1 != local_38[8])" (( "(") (binary_expression "param_1 != local_38[8]" (identifier "param_1") (!= "!=") (subscript_expression "local_38[8]" (identifier "local_38") ([ "[") (number_literal "8") (] "]"))) () ")"))) () ")")) (goto_statement "goto LAB_001e09a7;" (goto "goto") (statement_identifier "LAB_001e09a7") (; ";"))) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" (identifier "iVar2") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" (if "if") (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" (* "*") (cast_expression "(byte *)(local_38 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 7)" (( "(") (binary_expression "local_38 + 7" (identifier "local_38") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(iVar2 + 0x38))(local_38);\n    if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n    iVar2 = *local_38;\n  }" ({ "{") (expression_statement "(**(code **)(iVar2 + 0x38))(local_38);" (call_expression "(**(code **)(iVar2 + 0x38))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0x38))" (( "(") (pointer_expression "**(code **)(iVar2 + 0x38)" (* "*") (pointer_expression "*(code **)(iVar2 + 0x38)" (* "*") (cast_expression "(code **)(iVar2 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x38)" (( "(") (binary_expression "iVar2 + 0x38" (identifier "iVar2") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" (if "if") (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" (* "*") (cast_expression "(byte *)(local_38 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 7)" (( "(") (binary_expression "local_38 + 7" (identifier "local_38") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);\n    }" ({ "{") (expression_statement "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);" (call_expression "FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0x163,"finalize_data_size",param_1)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x163") (, ",") (string_literal ""finalize_data_size"" (" """) (string_content "finalize_data_size") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" (identifier "local_38") (= "=") (pointer_expression "*(int **)(param_1 + 0x34)" (* "*") (cast_expression "(int **)(param_1 + 0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar2 = *local_38;" (assignment_expression "iVar2 = *local_38" (identifier "iVar2") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (} "}"))) (expression_statement "local_2c = 0xfffffffc;" (assignment_expression "local_2c = 0xfffffffc" (identifier "local_2c") (= "=") (number_literal "0xfffffffc")) (; ";")) (expression_statement "local_28 = 0xffffffff;" (assignment_expression "local_28 = 0xffffffff" (identifier "local_28") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "lVar7 = 4;" (assignment_expression "lVar7 = 4" (identifier "lVar7") (= "=") (number_literal "4")) (; ";")) (if_statement "if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }\n  else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" (if "if") (parenthesized_expression "(*(code **)(iVar2 + 0xc) == FUN_001d1390)" (( "(") (binary_expression "*(code **)(iVar2 + 0xc) == FUN_001d1390" (pointer_expression "*(code **)(iVar2 + 0xc)" (* "*") (cast_expression "(code **)(iVar2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "FUN_001d1390")) () ")")) (compound_statement "{\nLAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    uVar4 = local_2c & (uint)lVar7;\n    uVar5 = local_28 & uVar3;\n  }" ({ "{") (labeled_statement "LAB_001e0a2e:\n    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" (statement_identifier "LAB_001e0a2e") (: ":") (expression_statement "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);" (assignment_expression "lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" (identifier "lVar7") (= "=") (binary_expression "lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" (identifier "lVar7") (+ "+") (call_expression "CONCAT44((uVar4 != 0) - 1,uVar4 - 1)" (identifier "CONCAT44") (argument_list "((uVar4 != 0) - 1,uVar4 - 1)" (( "(") (binary_expression "(uVar4 != 0) - 1" (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (- "-") (number_literal "1")) (, ",") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1")) () ")"))))) (; ";"))) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" (identifier "uVar3") (= "=") (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar4 = local_2c & (uint)lVar7;" (assignment_expression "uVar4 = local_2c & (uint)lVar7" (identifier "uVar4") (= "=") (binary_expression "local_2c & (uint)lVar7" (identifier "local_2c") (& "&") (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7")))) (; ";")) (expression_statement "uVar5 = local_28 & uVar3;" (assignment_expression "uVar5 = local_28 & uVar3" (identifier "uVar5") (= "=") (binary_expression "local_28 & uVar3" (identifier "local_28") (& "&") (identifier "uVar3"))) (; ";")) (} "}")) (else_clause "else {\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" (else "else") (compound_statement "{\n    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);\n    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);\n    if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }\n    local_38 = *(int **)(param_1 + 0x34);\n  }" ({ "{") (expression_statement "lVar7 = (**(code **)(iVar2 + 0xc))(local_38);" (assignment_expression "lVar7 = (**(code **)(iVar2 + 0xc))(local_38)" (identifier "lVar7") (= "=") (call_expression "(**(code **)(iVar2 + 0xc))(local_38)" (parenthesized_expression "(**(code **)(iVar2 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar2 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar2 + 0xc)" (* "*") (cast_expression "(code **)(iVar2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(local_38)" (( "(") (identifier "local_38") () ")")))) (; ";")) (expression_statement "uVar3 = (uint)((ulonglong)lVar7 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar7 >> 0x20)" (identifier "uVar3") (= "=") (call_expression "(uint)((ulonglong)lVar7 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (lVar7 != 0) {\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" (if "if") (parenthesized_expression "(lVar7 != 0)" (( "(") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_2c = -(int)lVar7;\n      local_38 = *(int **)(param_1 + 0x34);\n      local_28 = -(uVar3 + ((int)lVar7 != 0));\n      goto LAB_001e0a2e;\n    }" ({ "{") (expression_statement "local_2c = -(int)lVar7;" (assignment_expression "local_2c = -(int)lVar7" (identifier "local_2c") (= "=") (unary_expression "-(int)lVar7" (- "-") (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")))) (; ";")) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" (identifier "local_38") (= "=") (pointer_expression "*(int **)(param_1 + 0x34)" (* "*") (cast_expression "(int **)(param_1 + 0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_28 = -(uVar3 + ((int)lVar7 != 0));" (assignment_expression "local_28 = -(uVar3 + ((int)lVar7 != 0))" (identifier "local_28") (= "=") (unary_expression "-(uVar3 + ((int)lVar7 != 0))" (- "-") (parenthesized_expression "(uVar3 + ((int)lVar7 != 0))" (( "(") (binary_expression "uVar3 + ((int)lVar7 != 0)" (identifier "uVar3") (+ "+") (parenthesized_expression "((int)lVar7 != 0)" (( "(") (binary_expression "(int)lVar7 != 0" (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")) (!= "!=") (number_literal "0")) () ")"))) () ")")))) (; ";")) (goto_statement "goto LAB_001e0a2e;" (goto "goto") (statement_identifier "LAB_001e0a2e") (; ";")) (} "}"))) (expression_statement "local_38 = *(int **)(param_1 + 0x34);" (assignment_expression "local_38 = *(int **)(param_1 + 0x34)" (identifier "local_38") (= "=") (pointer_expression "*(int **)(param_1 + 0x34)" (* "*") (cast_expression "(int **)(param_1 + 0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((*(byte *)(local_38 + 7) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" (if "if") (parenthesized_expression "((*(byte *)(local_38 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_38 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_38 + 7) & 2" (pointer_expression "*(byte *)(local_38 + 7)" (* "*") (cast_expression "(byte *)(local_38 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 7)" (( "(") (binary_expression "local_38 + 7" (identifier "local_38") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0xcf,"data_size",uVar3)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) (, ",") (identifier "uVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar6 = CARRY4(uVar4,local_38[3]);" (assignment_expression "bVar6 = CARRY4(uVar4,local_38[3])" (identifier "bVar6") (= "=") (call_expression "CARRY4(uVar4,local_38[3])" (identifier "CARRY4") (argument_list "(uVar4,local_38[3])" (( "(") (identifier "uVar4") (, ",") (subscript_expression "local_38[3]" (identifier "local_38") ([ "[") (number_literal "3") (] "]")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 + local_38[3];" (assignment_expression "uVar4 = uVar4 + local_38[3]" (identifier "uVar4") (= "=") (binary_expression "uVar4 + local_38[3]" (identifier "uVar4") (+ "+") (subscript_expression "local_38[3]" (identifier "local_38") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar5 = uVar5 + local_38[4] + (uint)bVar6;" (assignment_expression "uVar5 = uVar5 + local_38[4] + (uint)bVar6" (identifier "uVar5") (= "=") (binary_expression "uVar5 + local_38[4] + (uint)bVar6" (binary_expression "uVar5 + local_38[4]" (identifier "uVar5") (+ "+") (subscript_expression "local_38[4]" (identifier "local_38") ([ "[") (number_literal "4") (] "]"))) (+ "+") (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6")))) (; ";")) (labeled_statement "LAB_001e09a7:\n  bVar1 = *(byte *)(param_1 + 0x1c);" (statement_identifier "LAB_001e09a7") (: ":") (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";"))) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" (if "if") (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" (( "(") (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 & 8) == 0)" (( "(") (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" (( "(") (binary_expression "bVar1 & 8" (identifier "bVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(uint *)(param_1 + 0xc) = uVar4;\n    *(uint *)(param_1 + 0x10) = uVar5;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" ({ "{") (expression_statement "*(uint *)(param_1 + 0xc) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar4" (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x10) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x10) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "bVar1 | 2" (identifier "bVar1") (| "|") (number_literal "2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);" (call_expression "FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0x218,"set_data_size",bVar1)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x218") (, ",") (string_literal ""set_data_size"" (" """) (string_content "set_data_size") (" """)) (, ",") (identifier "bVar1") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* DWARF original prototype: void set_final_data_size(AArch64_input_section<64,_true> * this) */

void __thiscall
anon_unknown.dwarf_109b185::AArch64_input_section<64,_true>::set_final_data_size
          (AArch64_input_section<64,_true> *var_2)

{
  off_t *var_16;
  type_1 var_17;
  type_2 **pp_Var3;
  int var_15;
  type_3 var_7;
  type_3 var_9;
  bool var_12;
  type_4 *var_1;
  type_3 var_8;
  type_3 var_11;
  type_3 var_10;
  int var_13;
  
  var_9 = 0;
  var_7 = var_2->original_size_;
  var_1 = var_2->stub_table_;
  if ((var_1 == (type_4 *)0x0) || (var_2 != var_1->owner_)) goto LAB_001e09a7;
  pp_Var3 = (var_1->super_Output_data)._vptr_Output_data;
  if (((var_1->super_Output_data).field_0x1c & 2) == 0) {
    (*pp_Var3[0xe])(var_1);
    if (((var_1->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      gold::var_3("../../gold/output.h",0x163,"finalize_data_size");
    }
    var_1 = var_2->stub_table_;
    pp_Var3 = (var_1->super_Output_data)._vptr_Output_data;
  }
  var_8 = 0xfffffffc;
  var_11 = 0xffffffff;
  var_10 = 4;
  var_13 = 0;
  if (pp_Var3[3] == var_4<64,var_5>::var_6) {
LAB_001e0a2e:
    var_12 = var_7 != 0;
    var_9 = var_7 - 1;
    var_7 = var_8 & var_9 + var_10;
    var_9 = var_11 & (var_12 - 1) + var_13 + (type_3)var_14(var_9,var_10);
  }
  else {
    var_10 = (*pp_Var3[3])(var_1);
    if (var_15 != 0 || var_10 != 0) {
      var_8 = -var_10;
      var_1 = var_2->stub_table_;
      var_11 = -(var_15 + (type_3)(var_10 != 0));
      var_13 = var_15;
      goto LAB_001e0a2e;
    }
    var_1 = var_2->stub_table_;
  }
  if (((var_1->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::var_3("../../gold/output.h",0xcf,"data_size");
  }
  var_16 = &(var_1->super_Output_data).data_size_;
  var_12 = var_14(var_7,(type_3)*var_16);
  var_7 = var_7 + (int)*var_16;
  var_9 = var_9 + *(int *)((int)&(var_1->super_Output_data).data_size_ + 4) + (type_3)var_12;
LAB_001e09a7:
  var_17 = (var_2->super_Output_relaxed_input_section).super_Output_section_data_build.
          super_Output_section_data.super_Output_data.field_0x1c;
  if (((var_17 & 2) == 0) && ((var_17 & 8) == 0)) {
    *(type_3 *)&(var_2->super_Output_relaxed_input_section).super_Output_section_data_build.
              super_Output_section_data.super_Output_data.data_size_ = var_7;
    *(type_3 *)((int)&(var_2->super_Output_relaxed_input_section).super_Output_section_data_build.
                    super_Output_section_data.super_Output_data.data_size_ + 4) = var_9;
    (var_2->super_Output_relaxed_input_section).super_Output_section_data_build.
    super_Output_section_data.super_Output_data.field_0x1c = var_17 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::var_3("../../gold/output.h",0x218,"set_data_size");
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (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: (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: (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: (identifier) right: (number_literal)))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))))

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void MASKED(int param_1)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  bool bVar6;
  longlong lVar7;
  int *local_38;
  uint local_2c;
  uint local_28;
  
  uVar5 = 0;
  uVar4 = *(uint *)(param_1 + 0x3c);
  local_38 = *(int **)(param_1 + 0x34);
  if ((local_38 == (int *)0x0) || (param_1 != local_38[8])) goto LAB_001e09a7;
  iVar2 = *local_38;
  if ((*(byte *)(local_38 + 7) & 2) == 0) {
    (**(code **)(iVar2 + 0x38))(local_38);
    if ((*(byte *)(local_38 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/output.h",0x163,"finalize_data_size",param_1);
    }
    local_38 = *(int **)(param_1 + 0x34);
    iVar2 = *local_38;
  }
  local_2c = 0xfffffffc;
  local_28 = 0xffffffff;
  lVar7 = 4;
  if (*(code **)(iVar2 + 0xc) == FUN_001d1390) {
LAB_001e0a2e:
    lVar7 = lVar7 + CONCAT44((uVar4 != 0) - 1,uVar4 - 1);
    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);
    uVar4 = local_2c & (uint)lVar7;
    uVar5 = local_28 & uVar3;
  }
  else {
    lVar7 = (**(code **)(iVar2 + 0xc))(local_38);
    uVar3 = (uint)((ulonglong)lVar7 >> 0x20);
    if (lVar7 != 0) {
      local_2c = -(int)lVar7;
      local_38 = *(int **)(param_1 + 0x34);
      local_28 = -(uVar3 + ((int)lVar7 != 0));
      goto LAB_001e0a2e;
    }
    local_38 = *(int **)(param_1 + 0x34);
  }
  if ((*(byte *)(local_38 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xcf,"data_size",uVar3);
  }
  bVar6 = CARRY4(uVar4,local_38[3]);
  uVar4 = uVar4 + local_38[3];
  uVar5 = uVar5 + local_38[4] + (uint)bVar6;
LAB_001e09a7:
  bVar1 = *(byte *)(param_1 + 0x1c);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(uint *)(param_1 + 0xc) = uVar4;
    *(uint *)(param_1 + 0x10) = uVar5;
    *(byte *)(param_1 + 0x1c) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/output.h",0x218,"set_data_size",bVar1);
}

