
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_relaxed_input_section(Output_section * this, Layout * layout,
   Output_relaxed_input_section * poris, string * name) */

void __thiscall
gold::Output_section::add_relaxed_input_section
          (Output_section *this,Layout *layout,Output_relaxed_input_section *poris,string *name)

{
  off_t *poVar1;
  _func_int_varargs *p_Var2;
  off_t oVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int extraout_EDX;
  bool bVar7;
  uint local_5c;
  uint local_58;
  undefined1 local_54 [20];
  pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value;
  Input_section inp;
  
  inp.shndx_ = 0xfffffffc;
  inp.p2align_ = 0;
  inp.section_order_index_ = 0;
  inp.u1_.data_size._0_4_ = 0;
  inp.u1_.data_size._4_4_ = 0;
  inp.u2_.poris = poris;
  if (layout->section_ordering_specified_ != false) {
    uVar4 = Layout::find_section_order_index(layout,name);
    if (uVar4 != 0) {
      this->field_0x91 = this->field_0x91 | 2;
      inp.section_order_index_ = uVar4;
    }
  }
  add_output_section_data(this,&inp);
  if (this->lookup_maps_->is_valid_ != false) {
    value.first.second = poris->shndx_;
    value.first.first = poris->relobj_;
    value.second = poris;
    std::
    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
    ::
    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>
              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);
    if (local_54[4] == '\0') {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");
    }
  }
  local_5c = (uint)(this->super_Output_data).data_size_;
  local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4);
  p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.
           _vptr_Output_data[3];
  if (p_Var2 == Output_section_data::do_addralign) {
    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;
    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.
                           addralign_ + 4);
  }
  else {
    uVar4 = (*p_Var2)(poris);
    iVar6 = extraout_EDX;
  }
  if (iVar6 != 0 || uVar4 != 0) {
    bVar7 = local_5c != 0;
    uVar5 = local_5c - 1;
    local_5c = uVar5 + uVar4 & -uVar4;
    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &
               -(iVar6 + (uint)(uVar4 != 0));
  }
  poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            data_size_;
  oVar3 = *poVar1;
  iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.
                         super_Output_data.data_size_ + 4);
  if (((this->super_Output_data).field_0x1c & 2) == 0) {
    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;
    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =
         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");
}



void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)

{
  uint *puVar1;
  undefined4 uVar2;
  code *pcVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  undefined4 extraout_EDX;
  undefined4 **ppuVar10;
  int unaff_EBP;
  longlong lVar11;
  undefined4 *puStack_70;
  undefined1 auStack_6c [12];
  int local_60;
  char local_54 [20];
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  int local_20;
  
  FUN_00074f0e();
  local_34 = 0xfffffffc;
  local_30 = 0;
  local_60 = param_3;
  local_20 = 0;
  local_2c = 0;
  local_28 = 0;
  local_24 = param_3;
  if (*(char *)(param_2 + 0x1cd) != '\0') {
    iVar9 = FUN_00279d90(param_2,param_4);
    if (iVar9 != 0) {
      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;
      local_20 = iVar9;
    }
  }
  ppuVar10 = (undefined4 **)auStack_6c;
  FUN_002ca760(param_1,&local_34);
  if (**(char **)(param_1 + 0xb0) != '\0') {
    local_3c = *(undefined4 *)(local_60 + 0x30);
    local_40 = *(undefined4 *)(local_60 + 0x2c);
    local_38 = local_60;
    puStack_70 = &local_40;
    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);
    ppuVar10 = &puStack_70;
    if (local_54[0] == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);
    }
  }
  uVar2 = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);
  iVar9 = **(int **)((int)ppuVar10 + 0xc);
  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;
  pcVar3 = *(code **)(iVar9 + 0xc);
  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {
    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);
  }
  else {
    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);
    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;
    lVar11 = (*pcVar3)();
  }
  if (lVar11 != 0) {
    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +
                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),
                              *(int *)((int)ppuVar10 + 0x10) + -1);
    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;
    *(uint *)((int)ppuVar10 + 0x14) =
         (uint)((ulonglong)lVar7 >> 0x20) &
         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));
  }
  uVar4 = *(uint *)((int)ppuVar10 + 0x10);
  iVar9 = *(int *)((int)ppuVar10 + 0x14);
  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);
  uVar5 = *puVar1;
  iVar8 = uVar4 + *puVar1;
  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
    *(int *)(param_1 + 0xc) = iVar8;
    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);
    return;
  }
  *(int *)((int)ppuVar10 + -4) = iVar8;
  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;
  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;
  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;
                    /* WARNING: Subroutine does not return */
  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;
  FUN_002446e0();
}


PUSH EBP
CALL 0x00074f0e
ADD EBP,0x31be4a
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x5c
MOV EAX,dword ptr [ESP + 0x74]
MOV EDI,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x38],0xfffffffc
MOV ESI,dword ptr [ESP + 0x70]
MOV dword ptr [ESP + 0x3c],0x0
CMP byte ptr [EAX + 0x1cd],0x0
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x48],EDI
JNZ 0x002ce318
SUB ESP,0x8
LEA EAX,[ESP + 0x40]
PUSH EAX
PUSH ESI
CALL 0x002ca760
MOV EAX,dword ptr [ESI + 0xb0]
ADD ESP,0x10
CMP byte ptr [EAX],0x0
JNZ 0x002ce2c0
MOV EAX,dword ptr [ESI + 0xc]
MOV EBX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [ESP + 0x14],EDX
LEA EDX,[EBP + 0xffa86df0]
MOV EAX,dword ptr [EAX + 0xc]
CMP EAX,EDX
JNZ 0x002ce348
MOV EAX,dword ptr [EBX + 0x24]
MOV EDX,dword ptr [EBX + 0x28]
MOV EBX,EDX
OR EBX,EAX
JNZ 0x002ce290
MOV ECX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
ADD EAX,dword ptr [ECX + 0xc]
ADC EDX,dword ptr [ECX + 0x10]
TEST byte ptr [ESI + 0x1c],0x2
JNZ 0x002ce359
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x10],EDX
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x14]
ADD ECX,-0x1
ADC EBX,-0x1
ADD ECX,EAX
ADC EBX,EDX
MOV EDI,ECX
NEG EAX
ADC EDX,0x0
AND EDI,EAX
NEG EDX
MOV dword ptr [ESP + 0x10],EDI
MOV EDI,EBX
AND EDI,EDX
MOV dword ptr [ESP + 0x14],EDI
JMP 0x002ce25c
MOV EDI,dword ptr [ESP + 0xc]
ADD EAX,0x20
MOV EDX,dword ptr [EDI + 0x30]
MOV ECX,dword ptr [EDI + 0x2c]
MOV dword ptr [ESP + 0x34],EDI
MOV dword ptr [ESP + 0x2c],ECX
LEA ECX,[ESP + 0x2c]
MOV dword ptr [ESP + 0x30],EDX
LEA EDX,[ESP + 0x18]
PUSH ECX
PUSH 0x0
PUSH EAX
PUSH EDX
CALL 0x002fbe80
ADD ESP,0xc
CMP byte ptr [ESP + 0x1c],0x0
JNZ 0x002ce22b
LEA EAX,[EBP + 0xffea9764]
PUSH EDX
MOV EBX,EBP
PUSH EAX
LEA EAX,[EBP + 0xffe6335d]
PUSH 0xc3a
PUSH EAX
CALL 0x002446e0
SUB ESP,0x8
MOV EBX,EBP
PUSH dword ptr [ESP + 0x84]
PUSH EAX
CALL 0x00279d90
ADD ESP,0x10
TEST EAX,EAX
JZ 0x002ce20b
MOV dword ptr [ESP + 0x4c],EAX
OR byte ptr [ESI + 0x91],0x2
JMP 0x002ce20b
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL EAX
ADD ESP,0x10
JMP 0x002ce256
PUSH EAX
LEA EAX,[EBP + 0xffea9b60]
MOV EBX,EBP
PUSH EAX
LEA EAX,[EBP + 0xffe6335d]
PUSH 0x231
PUSH EAX
CALL 0x002446e0
(translation_unit "void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}\n\n" (function_definition "void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" primitive_type (function_declarator "FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 **ppuVar10;" type_identifier (pointer_declarator "**ppuVar10" * (pointer_declarator "*ppuVar10" * identifier)) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "longlong lVar11;" type_identifier identifier ;) (declaration "undefined4 *puStack_70;" type_identifier (pointer_declarator "*puStack_70" * identifier) ;) (declaration "undefined1 auStack_6c [12];" type_identifier (array_declarator "auStack_6c [12]" identifier [ number_literal ]) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "char local_54 [20];" primitive_type (array_declarator "local_54 [20]" identifier [ number_literal ]) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_34 = 0xfffffffc;" (assignment_expression "local_34 = 0xfffffffc" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = param_3;" (assignment_expression "local_24 = param_3" identifier = identifier) ;) (if_statement "if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x1cd) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x1cd) != '\0'" (pointer_expression "*(char *)(param_2 + 0x1cd)" * (cast_expression "(char *)(param_2 + 0x1cd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1cd)" ( (binary_expression "param_2 + 0x1cd" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" { (expression_statement "iVar9 = FUN_00279d90(param_2,param_4);" (assignment_expression "iVar9 = FUN_00279d90(param_2,param_4)" identifier = (call_expression "FUN_00279d90(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" { (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_20 = iVar9;" (assignment_expression "local_20 = iVar9" identifier = identifier) ;) })) })) (expression_statement "ppuVar10 = (undefined4 **)auStack_6c;" (assignment_expression "ppuVar10 = (undefined4 **)auStack_6c" identifier = (cast_expression "(undefined4 **)auStack_6c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "FUN_002ca760(param_1,&local_34);" (call_expression "FUN_002ca760(param_1,&local_34)" identifier (argument_list "(param_1,&local_34)" ( identifier , (pointer_expression "&local_34" & identifier) ))) ;) (if_statement "if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xb0) != '\0')" ( (binary_expression "**(char **)(param_1 + 0xb0) != '\0'" (pointer_expression "**(char **)(param_1 + 0xb0)" * (pointer_expression "*(char **)(param_1 + 0xb0)" * (cast_expression "(char **)(param_1 + 0xb0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" { (expression_statement "local_3c = *(undefined4 *)(local_60 + 0x30);" (assignment_expression "local_3c = *(undefined4 *)(local_60 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(local_60 + 0x30)" * (cast_expression "(undefined4 *)(local_60 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 0x30)" ( (binary_expression "local_60 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined4 *)(local_60 + 0x2c);" (assignment_expression "local_40 = *(undefined4 *)(local_60 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(local_60 + 0x2c)" * (cast_expression "(undefined4 *)(local_60 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 0x2c)" ( (binary_expression "local_60 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_38 = local_60;" (assignment_expression "local_38 = local_60" identifier = identifier) ;) (expression_statement "puStack_70 = &local_40;" (assignment_expression "puStack_70 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);" (call_expression "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" identifier (argument_list "(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" ( identifier , (binary_expression "*(char **)(param_1 + 0xb0) + 0x20" (pointer_expression "*(char **)(param_1 + 0xb0)" * (cast_expression "(char **)(param_1 + 0xb0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "ppuVar10 = &puStack_70;" (assignment_expression "ppuVar10 = &puStack_70" identifier = (pointer_expression "&puStack_70" & identifier)) ;) (if_statement "if (local_54[0] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" if (parenthesized_expression "(local_54[0] == '\0')" ( (binary_expression "local_54[0] == '\0'" (subscript_expression "local_54[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" { comment (expression_statement "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);" (call_expression "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" identifier (argument_list "(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" ( (binary_expression "unaff_EBP + 0x17f1a7" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x1c55ae" identifier + number_literal) , identifier ))) ;) })) })) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x10)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = **(int **)((int)ppuVar10 + 0xc);" (assignment_expression "iVar9 = **(int **)((int)ppuVar10 + 0xc)" identifier = (pointer_expression "**(int **)((int)ppuVar10 + 0xc)" * (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" * (cast_expression "(int **)((int)ppuVar10 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x14)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar9 + 0xc);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0xc)" identifier = (pointer_expression "*(code **)(iVar9 + 0xc)" * (cast_expression "(code **)(iVar9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" if (parenthesized_expression "(pcVar3 == (code *)(unaff_EBP + -0x25d3c6))" ( (binary_expression "pcVar3 == (code *)(unaff_EBP + -0x25d3c6)" identifier == (cast_expression "(code *)(unaff_EBP + -0x25d3c6)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x25d3c6)" ( (binary_expression "unaff_EBP + -0x25d3c6" identifier + number_literal) )))) )) (compound_statement "{\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }" { (expression_statement "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);" (assignment_expression "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" identifier = (pointer_expression "*(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" * (cast_expression "(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int **)((int)ppuVar10 + 0xc) + 9)" ( (binary_expression "*(int **)((int)ppuVar10 + 0xc) + 9" (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" * (cast_expression "(int **)((int)ppuVar10 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" else (compound_statement "{\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" { (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x10)" ( (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0xc)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x14)" ( (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar11 = (*pcVar3)();" (assignment_expression "lVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" if (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" { (expression_statement "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);" (assignment_expression "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier = (binary_expression "lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier + (call_expression "CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier (argument_list "(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" ( (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" * (cast_expression "(int *)((int)ppuVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) + (call_expression "(uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)((int)ppuVar10 + 0x10) != 0)" ( (binary_expression "*(int *)((int)ppuVar10 + 0x10) != 0" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" * (cast_expression "(int *)((int)ppuVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )))) , (binary_expression "*(int *)((int)ppuVar10 + 0x10) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" * (cast_expression "(int *)((int)ppuVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;" (assignment_expression "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11" (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" * (cast_expression "(uint *)((int)ppuVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)lVar7 & -(int)lVar11" (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & (unary_expression "-(int)lVar11" - (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));" (assignment_expression "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (pointer_expression "*(uint *)((int)ppuVar10 + 0x14)" * (cast_expression "(uint *)((int)ppuVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (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) ))) & (unary_expression "-((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" - (parenthesized_expression "((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" ( (binary_expression "(int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0)" (cast_expression "(int)((ulonglong)lVar11 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar11 >> 0x20)" ( (binary_expression "(ulonglong)lVar11 >> 0x20" (cast_expression "(ulonglong)lVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (call_expression "(uint)((int)lVar11 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar11 != 0)" ( (binary_expression "(int)lVar11 != 0" (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) ))))) ;) })) (expression_statement "uVar4 = *(uint *)((int)ppuVar10 + 0x10);" (assignment_expression "uVar4 = *(uint *)((int)ppuVar10 + 0x10)" identifier = (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" * (cast_expression "(uint *)((int)ppuVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)((int)ppuVar10 + 0x14);" (assignment_expression "iVar9 = *(int *)((int)ppuVar10 + 0x14)" identifier = (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" * (cast_expression "(int *)((int)ppuVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);" (assignment_expression "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" identifier = (cast_expression "(uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0xc)" ( (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0xc" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" * (cast_expression "(int *)((int)ppuVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar5 = *puVar1;" (assignment_expression "uVar5 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar8 = uVar4 + *puVar1;" (assignment_expression "iVar8 = uVar4 + *puVar1" identifier = (binary_expression "uVar4 + *puVar1" identifier + (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);" (assignment_expression "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" identifier = (pointer_expression "*(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" * (cast_expression "(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0x10)" ( (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0x10" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" * (cast_expression "(int *)((int)ppuVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 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) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" { (expression_statement "*(int *)(param_1 + 0xc) = iVar8;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar8" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);" (assignment_expression "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,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) )))) = (binary_expression "iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5)" (binary_expression "iVar9 + iVar6" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar4,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier )))))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)ppuVar10 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar10 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar10 + -4)" * (cast_expression "(int *)((int)ppuVar10 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -4)" ( (binary_expression "(int)ppuVar10 + -4" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;" (assignment_expression "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa" (pointer_expression "*(int *)((int)ppuVar10 + -8)" * (cast_expression "(int *)((int)ppuVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -8)" ( (binary_expression "(int)ppuVar10 + -8" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EBP + 0x1c59aa" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0xc)" ( (binary_expression "(int)ppuVar10 + -0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;" (assignment_expression "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7" (pointer_expression "*(int *)((int)ppuVar10 + -0x10)" * (cast_expression "(int *)((int)ppuVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x10)" ( (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EBP + 0x17f1a7" identifier + number_literal)) ;) comment (expression_statement "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;" (assignment_expression "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374" (pointer_expression "*(undefined **)((int)ppuVar10 + -0x14)" * (cast_expression "(undefined **)((int)ppuVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + -0x14)" ( (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_002ce374" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void add_relaxed_input_section(Output_section * this, Layout * layout,\n   Output_relaxed_input_section * poris, string * name) */\n\nvoid __thiscall\ngold::Output_section::add_relaxed_input_section\n          (Output_section *this,Layout *layout,Output_relaxed_input_section *poris,string *name)\n\n{\n  off_t *poVar1;\n  _func_int_varargs *p_Var2;\n  off_t oVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int extraout_EDX;\n  bool bVar7;\n  uint local_5c;\n  uint local_58;\n  undefined1 local_54 [20];\n  pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value;\n  Input_section inp;\n  \n  inp.shndx_ = 0xfffffffc;\n  inp.p2align_ = 0;\n  inp.section_order_index_ = 0;\n  inp.u1_.data_size._0_4_ = 0;\n  inp.u1_.data_size._4_4_ = 0;\n  inp.u2_.poris = poris;\n  if (layout->section_ordering_specified_ != false) {\n    uVar4 = Layout::find_section_order_index(layout,name);\n    if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }\n  }\n  add_output_section_data(this,&inp);\n  if (this->lookup_maps_->is_valid_ != false) {\n    value.first.second = poris->shndx_;\n    value.first.first = poris->relobj_;\n    value.second = poris;\n    std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);\n    if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }\n  }\n  local_5c = (uint)(this->super_Output_data).data_size_;\n  local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4);\n  p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;\n    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);\n  }\n  else {\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }\n  if (iVar6 != 0 || uVar4 != 0) {\n    bVar7 = local_5c != 0;\n    uVar5 = local_5c - 1;\n    local_5c = uVar5 + uVar4 & -uVar4;\n    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));\n  }\n  poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_;\n  oVar3 = *poVar1;\n  iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4);\n  if (((this->super_Output_data).field_0x1c & 2) == 0) {\n    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;\n    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Output_section::add_relaxed_input_section\n          (Output_section *this,Layout *layout,Output_relaxed_input_section *poris,string *name)\n\n{\n  off_t *poVar1;\n  _func_int_varargs *p_Var2;\n  off_t oVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int extraout_EDX;\n  bool bVar7;\n  uint local_5c;\n  uint local_58;\n  undefined1 local_54 [20];\n  pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value;\n  Input_section inp;\n  \n  inp.shndx_ = 0xfffffffc;\n  inp.p2align_ = 0;\n  inp.section_order_index_ = 0;\n  inp.u1_.data_size._0_4_ = 0;\n  inp.u1_.data_size._4_4_ = 0;\n  inp.u2_.poris = poris;\n  if (layout->section_ordering_specified_ != false) {\n    uVar4 = Layout::find_section_order_index(layout,name);\n    if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }\n  }\n  add_output_section_data(this,&inp);\n  if (this->lookup_maps_->is_valid_ != false) {\n    value.first.second = poris->shndx_;\n    value.first.first = poris->relobj_;\n    value.second = poris;\n    std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);\n    if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }\n  }\n  local_5c = (uint)(this->super_Output_data).data_size_;\n  local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4);\n  p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;\n    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);\n  }\n  else {\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }\n  if (iVar6 != 0 || uVar4 != 0) {\n    bVar7 = local_5c != 0;\n    uVar5 = local_5c - 1;\n    local_5c = uVar5 + uVar4 & -uVar4;\n    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));\n  }\n  poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_;\n  oVar3 = *poVar1;\n  iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4);\n  if (((this->super_Output_data).field_0x1c & 2) == 0) {\n    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;\n    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "add_relaxed_input_section\n          (Output_section *this,Layout *layout,Output_relaxed_input_section *poris,string *name)" identifier (parameter_list "(Output_section *this,Layout *layout,Output_relaxed_input_section *poris,string *name)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Output_relaxed_input_section *poris" type_identifier (pointer_declarator "*poris" * identifier)) , (parameter_declaration "string *name" type_identifier (pointer_declarator "*name" * identifier)) ))) (compound_statement "{\n  off_t *poVar1;\n  _func_int_varargs *p_Var2;\n  off_t oVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int extraout_EDX;\n  bool bVar7;\n  uint local_5c;\n  uint local_58;\n  undefined1 local_54 [20];\n  pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value;\n  Input_section inp;\n  \n  inp.shndx_ = 0xfffffffc;\n  inp.p2align_ = 0;\n  inp.section_order_index_ = 0;\n  inp.u1_.data_size._0_4_ = 0;\n  inp.u1_.data_size._4_4_ = 0;\n  inp.u2_.poris = poris;\n  if (layout->section_ordering_specified_ != false) {\n    uVar4 = Layout::find_section_order_index(layout,name);\n    if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }\n  }\n  add_output_section_data(this,&inp);\n  if (this->lookup_maps_->is_valid_ != false) {\n    value.first.second = poris->shndx_;\n    value.first.first = poris->relobj_;\n    value.second = poris;\n    std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);\n    if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }\n  }\n  local_5c = (uint)(this->super_Output_data).data_size_;\n  local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4);\n  p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;\n    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);\n  }\n  else {\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }\n  if (iVar6 != 0 || uVar4 != 0) {\n    bVar7 = local_5c != 0;\n    uVar5 = local_5c - 1;\n    local_5c = uVar5 + uVar4 & -uVar4;\n    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));\n  }\n  poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_;\n  oVar3 = *poVar1;\n  iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4);\n  if (((this->super_Output_data).field_0x1c & 2) == 0) {\n    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;\n    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");\n}" { (declaration "off_t *poVar1;" type_identifier (pointer_declarator "*poVar1" * identifier) ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "off_t oVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "undefined1 local_54 [20];" type_identifier (array_declarator "local_54 [20]" identifier [ number_literal ]) ;) (expression_statement "pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value;" (binary_expression "pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*> value" (binary_expression "pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold" (binary_expression "pair<std::pair<const_gold::Relobj*,_unsigned_int" (binary_expression "pair<std::pair<const_gold" (binary_expression "pair<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::Output_relaxed_input_section" : : identifier) * (ERROR ">" >) identifier) ;) (declaration "Input_section inp;" type_identifier identifier ;) (expression_statement "inp.shndx_ = 0xfffffffc;" (assignment_expression "inp.shndx_ = 0xfffffffc" (field_expression "inp.shndx_" identifier . field_identifier) = number_literal) ;) (expression_statement "inp.p2align_ = 0;" (assignment_expression "inp.p2align_ = 0" (field_expression "inp.p2align_" identifier . field_identifier) = number_literal) ;) (expression_statement "inp.section_order_index_ = 0;" (assignment_expression "inp.section_order_index_ = 0" (field_expression "inp.section_order_index_" identifier . field_identifier) = number_literal) ;) (expression_statement "inp.u1_.data_size._0_4_ = 0;" (assignment_expression "inp.u1_.data_size._0_4_ = 0" (field_expression "inp.u1_.data_size._0_4_" (field_expression "inp.u1_.data_size" (field_expression "inp.u1_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "inp.u1_.data_size._4_4_ = 0;" (assignment_expression "inp.u1_.data_size._4_4_ = 0" (field_expression "inp.u1_.data_size._4_4_" (field_expression "inp.u1_.data_size" (field_expression "inp.u1_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "inp.u2_.poris = poris;" (assignment_expression "inp.u2_.poris = poris" (field_expression "inp.u2_.poris" (field_expression "inp.u2_" identifier . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (layout->section_ordering_specified_ != false) {\n    uVar4 = Layout::find_section_order_index(layout,name);\n    if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }\n  }" if (parenthesized_expression "(layout->section_ordering_specified_ != false)" ( (binary_expression "layout->section_ordering_specified_ != false" (field_expression "layout->section_ordering_specified_" identifier -> field_identifier) != false) )) (compound_statement "{\n    uVar4 = Layout::find_section_order_index(layout,name);\n    if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }\n  }" { (ERROR "uVar4 = Layout::" (assignment_expression "uVar4 = Layout" identifier = identifier) : :) (expression_statement "find_section_order_index(layout,name);" (call_expression "find_section_order_index(layout,name)" identifier (argument_list "(layout,name)" ( identifier , identifier ))) ;) (if_statement "if (uVar4 != 0) {\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      this->field_0x91 = this->field_0x91 | 2;\n      inp.section_order_index_ = uVar4;\n    }" { (expression_statement "this->field_0x91 = this->field_0x91 | 2;" (assignment_expression "this->field_0x91 = this->field_0x91 | 2" (field_expression "this->field_0x91" identifier -> field_identifier) = (binary_expression "this->field_0x91 | 2" (field_expression "this->field_0x91" identifier -> field_identifier) | number_literal)) ;) (expression_statement "inp.section_order_index_ = uVar4;" (assignment_expression "inp.section_order_index_ = uVar4" (field_expression "inp.section_order_index_" identifier . field_identifier) = identifier) ;) })) })) (expression_statement "add_output_section_data(this,&inp);" (call_expression "add_output_section_data(this,&inp)" identifier (argument_list "(this,&inp)" ( identifier , (pointer_expression "&inp" & identifier) ))) ;) (if_statement "if (this->lookup_maps_->is_valid_ != false) {\n    value.first.second = poris->shndx_;\n    value.first.first = poris->relobj_;\n    value.second = poris;\n    std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);\n    if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }\n  }" if (parenthesized_expression "(this->lookup_maps_->is_valid_ != false)" ( (binary_expression "this->lookup_maps_->is_valid_ != false" (field_expression "this->lookup_maps_->is_valid_" (field_expression "this->lookup_maps_" identifier -> field_identifier) -> field_identifier) != false) )) (compound_statement "{\n    value.first.second = poris->shndx_;\n    value.first.first = poris->relobj_;\n    value.second = poris;\n    std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);\n    if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }\n  }" { (expression_statement "value.first.second = poris->shndx_;" (assignment_expression "value.first.second = poris->shndx_" (field_expression "value.first.second" (field_expression "value.first" identifier . field_identifier) . field_identifier) = (field_expression "poris->shndx_" identifier -> field_identifier)) ;) (expression_statement "value.first.first = poris->relobj_;" (assignment_expression "value.first.first = poris->relobj_" (field_expression "value.first.first" (field_expression "value.first" identifier . field_identifier) . field_identifier) = (field_expression "poris->relobj_" identifier -> field_identifier)) ;) (expression_statement "value.second = poris;" (assignment_expression "value.second = poris" (field_expression "value.second" identifier . field_identifier) = identifier) ;) (ERROR "std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::" (comma_expression "std::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std" identifier (ERROR "::\n    _Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>" : : (binary_expression "_Hashtable<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : identifier * , identifier >) , identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_gold" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (comma_expression "Output_relaxed_input_section*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_gold" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "Output_relaxed_input_section*>_>,_std" (binary_expression "Output_relaxed_input_section*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold" identifier (ERROR "::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : identifier * , (binary_expression "_unsigned_int>_" identifier > identifier) >) , identifier) : : (comma_expression "Const_section_id_hash,_std" identifier , identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (expression_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value);" (binary_expression "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value)" identifier (ERROR "::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : (comma_expression "__detail::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>,_gold" identifier (ERROR "::_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std::pair<std::pair<const_gold::Relobj*,_unsigned_int>" : : (comma_expression "_Hashtable_traits<true,_false,_true>_>\n    ::\n    _M_emplace<std" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n    ::\n    _M_emplace<std" identifier , (binary_expression "_true>_>\n    ::\n    _M_emplace<std" (binary_expression "_true>_>\n    ::\n    _M_emplace" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : (binary_expression "pair<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : identifier * , identifier >) , identifier) : : identifier *) > (pointer_expression "&>\n              ((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value)" & (ERROR ">" >) (parenthesized_expression "((_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value)" ( (parenthesized_expression "(_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value)" ( (ERROR "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>_>,_std::__detail::_Select1st,_std::equal_to<std::pair<const_gold::Relobj*,_unsigned_int>_>,_gold::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Output_relaxed_input_section*>,_std" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int>,_std" (binary_expression "_Hashtable<std::pair<const_gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<const_gold" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::Output_relaxed_input_section*>" : : identifier * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (type_descriptor "Relobj*" type_identifier (abstract_pointer_declarator "*" *)) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier) : : (binary_expression "Output_relaxed_input_section*>_>,_std" (binary_expression "Output_relaxed_input_section*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (type_descriptor "Relobj*" type_identifier (abstract_pointer_declarator "*" *)) , (binary_expression "_unsigned_int>_>,_gold" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Const_section_id_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value" identifier , (comma_expression "_true>_>\n                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value" (binary_expression "_true>_>\n                *)local_54" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)local_54" * (ERROR ")" )) identifier)) , (comma_expression "&this->lookup_maps_->relaxed_input_sections_by_id_,0,&value" (pointer_expression "&this->lookup_maps_->relaxed_input_sections_by_id_" & (field_expression "this->lookup_maps_->relaxed_input_sections_by_id_" (field_expression "this->lookup_maps_" identifier -> field_identifier) -> field_identifier)) , (comma_expression "0,&value" number_literal , (pointer_expression "&value" & identifier)))))) )) )))) ;))) (if_statement "if (local_54[4] == '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }" if (parenthesized_expression "(local_54[4] == '\0')" ( (binary_expression "local_54[4] == '\0'" (subscript_expression "local_54[4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc3a,"add_relaxed_input_section")" identifier (argument_list "("../../gold/output.h",0xc3a,"add_relaxed_input_section")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""add_relaxed_input_section"" " string_content ") ))) ;) })) })) (expression_statement "local_5c = (uint)(this->super_Output_data).data_size_;" (assignment_expression "local_5c = (uint)(this->super_Output_data).data_size_" identifier = (field_expression "(uint)(this->super_Output_data).data_size_" (call_expression "(uint)(this->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4);" (assignment_expression "local_58 = *(uint *)((int)&(this->super_Output_data).data_size_ + 4)" identifier = (pointer_expression "*(uint *)((int)&(this->super_Output_data).data_size_ + 4)" * (cast_expression "(uint *)((int)&(this->super_Output_data).data_size_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_data).data_size_ + 4" (cast_expression "(int)&(this->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_data).data_size_" & (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3];" (assignment_expression "p_Var2 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3]" identifier = (subscript_expression "(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data[3]" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n           _vptr_Output_data" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(poris->super_Output_section_data_build)" ( (field_expression "poris->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;\n    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);\n  }\n  else {\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n    uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;\n    iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);\n  }" { (expression_statement "uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;" (assignment_expression "uVar4 = (uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_" identifier = (field_expression "(uint)(poris->super_Output_section_data_build).super_Output_section_data.addralign_" (field_expression "(uint)(poris->super_Output_section_data_build).super_Output_section_data" (call_expression "(uint)(poris->super_Output_section_data_build)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(poris->super_Output_section_data_build)" ( (field_expression "poris->super_Output_section_data_build" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (expression_statement "iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4);" (assignment_expression "iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4)" identifier = (pointer_expression "*(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4)" * (cast_expression "(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4)" ( (binary_expression "(int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_ + 4" (cast_expression "(int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_" & (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.\n                           addralign_" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(poris->super_Output_section_data_build)" ( (field_expression "poris->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }" else (compound_statement "{\n    uVar4 = (*p_Var2)(poris);\n    iVar6 = extraout_EDX;\n  }" { (expression_statement "uVar4 = (*p_Var2)(poris);" (assignment_expression "uVar4 = (*p_Var2)(poris)" identifier = (call_expression "(*p_Var2)(poris)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(poris)" ( identifier )))) ;) (expression_statement "iVar6 = extraout_EDX;" (assignment_expression "iVar6 = extraout_EDX" identifier = identifier) ;) }))) (if_statement "if (iVar6 != 0 || uVar4 != 0) {\n    bVar7 = local_5c != 0;\n    uVar5 = local_5c - 1;\n    local_5c = uVar5 + uVar4 & -uVar4;\n    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));\n  }" if (parenthesized_expression "(iVar6 != 0 || uVar4 != 0)" ( (binary_expression "iVar6 != 0 || uVar4 != 0" (binary_expression "iVar6 != 0" identifier != number_literal) || (binary_expression "uVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    bVar7 = local_5c != 0;\n    uVar5 = local_5c - 1;\n    local_5c = uVar5 + uVar4 & -uVar4;\n    local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));\n  }" { (expression_statement "bVar7 = local_5c != 0;" (assignment_expression "bVar7 = local_5c != 0" identifier = (binary_expression "local_5c != 0" identifier != number_literal)) ;) (expression_statement "uVar5 = local_5c - 1;" (assignment_expression "uVar5 = local_5c - 1" identifier = (binary_expression "local_5c - 1" identifier - number_literal)) ;) (expression_statement "local_5c = uVar5 + uVar4 & -uVar4;" (assignment_expression "local_5c = uVar5 + uVar4 & -uVar4" identifier = (binary_expression "uVar5 + uVar4 & -uVar4" (binary_expression "uVar5 + uVar4" identifier + identifier) & (unary_expression "-uVar4" - identifier))) ;) (expression_statement "local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0));" (assignment_expression "local_58 = (local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0))" identifier = (binary_expression "(local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4) &\n               -(iVar6 + (uint)(uVar4 != 0))" (binary_expression "(local_58 - 1) + (uint)bVar7 + iVar6 + (uint)CARRY4(uVar5,uVar4)" (binary_expression "(local_58 - 1) + (uint)bVar7 + iVar6" (binary_expression "(local_58 - 1) + (uint)bVar7" (parenthesized_expression "(local_58 - 1)" ( (binary_expression "local_58 - 1" identifier - number_literal) )) + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) + identifier) + (cast_expression "(uint)CARRY4(uVar5,uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))))) & (unary_expression "-(iVar6 + (uint)(uVar4 != 0))" - (parenthesized_expression "(iVar6 + (uint)(uVar4 != 0))" ( (binary_expression "iVar6 + (uint)(uVar4 != 0)" identifier + (call_expression "(uint)(uVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )))) ))))) ;) })) (expression_statement "poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_;" (assignment_expression "poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" identifier = (pointer_expression "&(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" & (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n            data_size_" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(poris->super_Output_section_data_build)" ( (field_expression "poris->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "oVar3 = *poVar1;" (assignment_expression "oVar3 = *poVar1" identifier = (pointer_expression "*poVar1" * identifier)) ;) (expression_statement "iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4);" (assignment_expression "iVar6 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4)" identifier = (pointer_expression "*(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4)" * (cast_expression "(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_ + 4" (cast_expression "(int)&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" & (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data.data_size_" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data.\n                         super_Output_data" (field_expression "(poris->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(poris->super_Output_section_data_build)" ( (field_expression "poris->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (((this->super_Output_data).field_0x1c & 2) == 0) {\n    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;\n    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);\n    return;\n  }" if (parenthesized_expression "(((this->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((this->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((this->super_Output_data).field_0x1c & 2)" ( (binary_expression "(this->super_Output_data).field_0x1c & 2" (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;\n    *(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);\n    return;\n  }" { (expression_statement "*(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1;" (assignment_expression "*(uint *)&(this->super_Output_data).data_size_ = local_5c + (int)*poVar1" (pointer_expression "*(uint *)&(this->super_Output_data).data_size_" * (cast_expression "(uint *)&(this->super_Output_data).data_size_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Output_data).data_size_" & (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = (binary_expression "local_5c + (int)*poVar1" identifier + (cast_expression "(int)*poVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*poVar1" * identifier)))) ;) (expression_statement "*(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3);" (assignment_expression "*(uint *)((int)&(this->super_Output_data).data_size_ + 4) =\n         local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3)" (pointer_expression "*(uint *)((int)&(this->super_Output_data).data_size_ + 4)" * (cast_expression "(uint *)((int)&(this->super_Output_data).data_size_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_data).data_size_ + 4" (cast_expression "(int)&(this->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_data).data_size_" & (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (binary_expression "local_58 + iVar6 + (uint)CARRY4(local_5c,(uint)oVar3)" (binary_expression "local_58 + iVar6" identifier + identifier) + (cast_expression "(uint)CARRY4(local_5c,(uint)oVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_5c,(uint)oVar3)" identifier (argument_list "(local_5c,(uint)oVar3)" ( identifier , (cast_expression "(uint)oVar3" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child");" (call_expression "do_gold_unreachable("../../gold/output.h",0x231,"set_current_data_size_for_child")" identifier (argument_list "("../../gold/output.h",0x231,"set_current_data_size_for_child")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_current_data_size_for_child"" " string_content ") ))) ;) })))
(translation_unit "void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    \n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}\n\n" (function_definition "void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    \n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" primitive_type (function_declarator "FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    \n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 **ppuVar10;" type_identifier (pointer_declarator "**ppuVar10" * (pointer_declarator "*ppuVar10" * identifier)) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "longlong lVar11;" type_identifier identifier ;) (declaration "undefined4 *puStack_70;" type_identifier (pointer_declarator "*puStack_70" * identifier) ;) (declaration "undefined1 auStack_6c [12];" type_identifier (array_declarator "auStack_6c [12]" identifier [ number_literal ]) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "char local_54 [20];" primitive_type (array_declarator "local_54 [20]" identifier [ number_literal ]) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_34 = 0xfffffffc;" (assignment_expression "local_34 = 0xfffffffc" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = param_3;" (assignment_expression "local_24 = param_3" identifier = identifier) ;) (if_statement "if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x1cd) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x1cd) != '\0'" (pointer_expression "*(char *)(param_2 + 0x1cd)" * (cast_expression "(char *)(param_2 + 0x1cd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1cd)" ( (binary_expression "param_2 + 0x1cd" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" { (expression_statement "iVar9 = FUN_00279d90(param_2,param_4);" (assignment_expression "iVar9 = FUN_00279d90(param_2,param_4)" identifier = (call_expression "FUN_00279d90(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" { (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" * (cast_expression "(byte *)(param_1 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x91)" ( (binary_expression "param_1 + 0x91" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_20 = iVar9;" (assignment_expression "local_20 = iVar9" identifier = identifier) ;) })) })) (expression_statement "ppuVar10 = (undefined4 **)auStack_6c;" (assignment_expression "ppuVar10 = (undefined4 **)auStack_6c" identifier = (cast_expression "(undefined4 **)auStack_6c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "FUN_002ca760(param_1,&local_34);" (call_expression "FUN_002ca760(param_1,&local_34)" identifier (argument_list "(param_1,&local_34)" ( identifier , (pointer_expression "&local_34" & identifier) ))) ;) (if_statement "if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xb0) != '\0')" ( (binary_expression "**(char **)(param_1 + 0xb0) != '\0'" (pointer_expression "**(char **)(param_1 + 0xb0)" * (pointer_expression "*(char **)(param_1 + 0xb0)" * (cast_expression "(char **)(param_1 + 0xb0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" { (expression_statement "local_3c = *(undefined4 *)(local_60 + 0x30);" (assignment_expression "local_3c = *(undefined4 *)(local_60 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(local_60 + 0x30)" * (cast_expression "(undefined4 *)(local_60 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 0x30)" ( (binary_expression "local_60 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined4 *)(local_60 + 0x2c);" (assignment_expression "local_40 = *(undefined4 *)(local_60 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(local_60 + 0x2c)" * (cast_expression "(undefined4 *)(local_60 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 0x2c)" ( (binary_expression "local_60 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "local_38 = local_60;" (assignment_expression "local_38 = local_60" identifier = identifier) ;) (expression_statement "puStack_70 = &local_40;" (assignment_expression "puStack_70 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);" (call_expression "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" identifier (argument_list "(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" ( identifier , (binary_expression "*(char **)(param_1 + 0xb0) + 0x20" (pointer_expression "*(char **)(param_1 + 0xb0)" * (cast_expression "(char **)(param_1 + 0xb0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "ppuVar10 = &puStack_70;" (assignment_expression "ppuVar10 = &puStack_70" identifier = (pointer_expression "&puStack_70" & identifier)) ;) (if_statement "if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" if (parenthesized_expression "(local_54[0] == '\0')" ( (binary_expression "local_54[0] == '\0'" (subscript_expression "local_54[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" { (expression_statement "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);" (call_expression "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" identifier (argument_list "(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" ( (binary_expression "unaff_EBP + 0x17f1a7" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x1c55ae" identifier + number_literal) , identifier ))) ;) })) })) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x10)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = **(int **)((int)ppuVar10 + 0xc);" (assignment_expression "iVar9 = **(int **)((int)ppuVar10 + 0xc)" identifier = (pointer_expression "**(int **)((int)ppuVar10 + 0xc)" * (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" * (cast_expression "(int **)((int)ppuVar10 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x14)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar9 + 0xc);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0xc)" identifier = (pointer_expression "*(code **)(iVar9 + 0xc)" * (cast_expression "(code **)(iVar9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" if (parenthesized_expression "(pcVar3 == (code *)(unaff_EBP + -0x25d3c6))" ( (binary_expression "pcVar3 == (code *)(unaff_EBP + -0x25d3c6)" identifier == (cast_expression "(code *)(unaff_EBP + -0x25d3c6)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + -0x25d3c6)" ( (binary_expression "unaff_EBP + -0x25d3c6" identifier + number_literal) )))) )) (compound_statement "{\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }" { (expression_statement "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);" (assignment_expression "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" identifier = (pointer_expression "*(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" * (cast_expression "(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int **)((int)ppuVar10 + 0xc) + 9)" ( (binary_expression "*(int **)((int)ppuVar10 + 0xc) + 9" (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" * (cast_expression "(int **)((int)ppuVar10 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" else (compound_statement "{\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" { (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x10)" ( (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0xc)" * (cast_expression "(undefined4 *)((int)ppuVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x14)" ( (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar11 = (*pcVar3)();" (assignment_expression "lVar11 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" if (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" { (expression_statement "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);" (assignment_expression "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier = (binary_expression "lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier + (call_expression "CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" identifier (argument_list "(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" ( (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" * (cast_expression "(int *)((int)ppuVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) + (call_expression "(uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)((int)ppuVar10 + 0x10) != 0)" ( (binary_expression "*(int *)((int)ppuVar10 + 0x10) != 0" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" * (cast_expression "(int *)((int)ppuVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )))) , (binary_expression "*(int *)((int)ppuVar10 + 0x10) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" * (cast_expression "(int *)((int)ppuVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;" (assignment_expression "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11" (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" * (cast_expression "(uint *)((int)ppuVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)lVar7 & -(int)lVar11" (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & (unary_expression "-(int)lVar11" - (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));" (assignment_expression "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (pointer_expression "*(uint *)((int)ppuVar10 + 0x14)" * (cast_expression "(uint *)((int)ppuVar10 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (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) ))) & (unary_expression "-((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" - (parenthesized_expression "((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" ( (binary_expression "(int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0)" (cast_expression "(int)((ulonglong)lVar11 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar11 >> 0x20)" ( (binary_expression "(ulonglong)lVar11 >> 0x20" (cast_expression "(ulonglong)lVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (call_expression "(uint)((int)lVar11 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)lVar11 != 0)" ( (binary_expression "(int)lVar11 != 0" (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )))) ))))) ;) })) (expression_statement "uVar4 = *(uint *)((int)ppuVar10 + 0x10);" (assignment_expression "uVar4 = *(uint *)((int)ppuVar10 + 0x10)" identifier = (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" * (cast_expression "(uint *)((int)ppuVar10 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x10)" ( (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)((int)ppuVar10 + 0x14);" (assignment_expression "iVar9 = *(int *)((int)ppuVar10 + 0x14)" identifier = (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" * (cast_expression "(int *)((int)ppuVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0x14)" ( (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);" (assignment_expression "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" identifier = (cast_expression "(uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0xc)" ( (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0xc" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" * (cast_expression "(int *)((int)ppuVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar5 = *puVar1;" (assignment_expression "uVar5 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar8 = uVar4 + *puVar1;" (assignment_expression "iVar8 = uVar4 + *puVar1" identifier = (binary_expression "uVar4 + *puVar1" identifier + (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);" (assignment_expression "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" identifier = (pointer_expression "*(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" * (cast_expression "(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0x10)" ( (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0x10" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" * (cast_expression "(int *)((int)ppuVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + 0xc)" ( (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 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) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" { (expression_statement "*(int *)(param_1 + 0xc) = iVar8;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar8" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);" (assignment_expression "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,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) )))) = (binary_expression "iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5)" (binary_expression "iVar9 + iVar6" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar4,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier )))))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)ppuVar10 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar10 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar10 + -4)" * (cast_expression "(int *)((int)ppuVar10 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -4)" ( (binary_expression "(int)ppuVar10 + -4" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;" (assignment_expression "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa" (pointer_expression "*(int *)((int)ppuVar10 + -8)" * (cast_expression "(int *)((int)ppuVar10 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -8)" ( (binary_expression "(int)ppuVar10 + -8" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EBP + 0x1c59aa" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0xc)" * (cast_expression "(undefined4 *)((int)ppuVar10 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0xc)" ( (binary_expression "(int)ppuVar10 + -0xc" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;" (assignment_expression "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7" (pointer_expression "*(int *)((int)ppuVar10 + -0x10)" * (cast_expression "(int *)((int)ppuVar10 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar10 + -0x10)" ( (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EBP + 0x17f1a7" identifier + number_literal)) ;) (expression_statement "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;" (assignment_expression "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374" (pointer_expression "*(undefined **)((int)ppuVar10 + -0x14)" * (cast_expression "(undefined **)((int)ppuVar10 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar10 + -0x14)" ( (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_002ce374" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (compound_statement { (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & (unary_expression - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )))) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) ;) (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 (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 (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    \n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" (primitive_type "void") (function_declarator "FUN_002ce1b0(int param_1,int param_2,int param_3,undefined4 param_4)" (identifier "FUN_002ce1b0") (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  longlong lVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 **ppuVar10;\n  int unaff_EBP;\n  longlong lVar11;\n  undefined4 *puStack_70;\n  undefined1 auStack_6c [12];\n  int local_60;\n  char local_54 [20];\n  undefined4 local_40;\n  undefined4 local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int local_20;\n  \n  FUN_00074f0e();\n  local_34 = 0xfffffffc;\n  local_30 = 0;\n  local_60 = param_3;\n  local_20 = 0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = param_3;\n  if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }\n  ppuVar10 = (undefined4 **)auStack_6c;\n  FUN_002ca760(param_1,&local_34);\n  if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }\n  uVar2 = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);\n  iVar9 = **(int **)((int)ppuVar10 + 0xc);\n  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;\n  pcVar3 = *(code **)(iVar9 + 0xc);\n  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }\n  if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }\n  uVar4 = *(uint *)((int)ppuVar10 + 0x10);\n  iVar9 = *(int *)((int)ppuVar10 + 0x14);\n  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);\n  uVar5 = *puVar1;\n  iVar8 = uVar4 + *puVar1;\n  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }\n  *(int *)((int)ppuVar10 + -4) = iVar8;\n  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;\n  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;\n  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;\n                    \n  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;\n  FUN_002446e0();\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "longlong lVar7;" (type_identifier "longlong") (identifier "lVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "undefined4 **ppuVar10;" (type_identifier "undefined4") (pointer_declarator "**ppuVar10" (* "*") (pointer_declarator "*ppuVar10" (* "*") (identifier "ppuVar10"))) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "longlong lVar11;" (type_identifier "longlong") (identifier "lVar11") (; ";")) (declaration "undefined4 *puStack_70;" (type_identifier "undefined4") (pointer_declarator "*puStack_70" (* "*") (identifier "puStack_70")) (; ";")) (declaration "undefined1 auStack_6c [12];" (type_identifier "undefined1") (array_declarator "auStack_6c [12]" (identifier "auStack_6c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "char local_54 [20];" (primitive_type "char") (array_declarator "local_54 [20]" (identifier "local_54") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" (identifier "FUN_00074f0e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_34 = 0xfffffffc;" (assignment_expression "local_34 = 0xfffffffc" (identifier "local_34") (= "=") (number_literal "0xfffffffc")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" (identifier "local_60") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = param_3;" (assignment_expression "local_24 = param_3" (identifier "local_24") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (*(char *)(param_2 + 0x1cd) != '\0') {\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x1cd) != '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x1cd) != '\0'" (pointer_expression "*(char *)(param_2 + 0x1cd)" (* "*") (cast_expression "(char *)(param_2 + 0x1cd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1cd)" (( "(") (binary_expression "param_2 + 0x1cd" (identifier "param_2") (+ "+") (number_literal "0x1cd")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar9 = FUN_00279d90(param_2,param_4);\n    if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }\n  }" ({ "{") (expression_statement "iVar9 = FUN_00279d90(param_2,param_4);" (assignment_expression "iVar9 = FUN_00279d90(param_2,param_4)" (identifier "iVar9") (= "=") (call_expression "FUN_00279d90(param_2,param_4)" (identifier "FUN_00279d90") (argument_list "(param_2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar9 != 0) {\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;\n      local_20 = iVar9;\n    }" ({ "{") (expression_statement "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;" (assignment_expression "*(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" (* "*") (cast_expression "(byte *)(param_1 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x91)" (( "(") (binary_expression "param_1 + 0x91" (identifier "param_1") (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x91) | 2" (pointer_expression "*(byte *)(param_1 + 0x91)" (* "*") (cast_expression "(byte *)(param_1 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x91)" (( "(") (binary_expression "param_1 + 0x91" (identifier "param_1") (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "local_20 = iVar9;" (assignment_expression "local_20 = iVar9" (identifier "local_20") (= "=") (identifier "iVar9")) (; ";")) (} "}"))) (} "}"))) (expression_statement "ppuVar10 = (undefined4 **)auStack_6c;" (assignment_expression "ppuVar10 = (undefined4 **)auStack_6c" (identifier "ppuVar10") (= "=") (cast_expression "(undefined4 **)auStack_6c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "auStack_6c"))) (; ";")) (expression_statement "FUN_002ca760(param_1,&local_34);" (call_expression "FUN_002ca760(param_1,&local_34)" (identifier "FUN_002ca760") (argument_list "(param_1,&local_34)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")"))) (; ";")) (if_statement "if (**(char **)(param_1 + 0xb0) != '\0') {\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" (if "if") (parenthesized_expression "(**(char **)(param_1 + 0xb0) != '\0')" (( "(") (binary_expression "**(char **)(param_1 + 0xb0) != '\0'" (pointer_expression "**(char **)(param_1 + 0xb0)" (* "*") (pointer_expression "*(char **)(param_1 + 0xb0)" (* "*") (cast_expression "(char **)(param_1 + 0xb0)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_3c = *(undefined4 *)(local_60 + 0x30);\n    local_40 = *(undefined4 *)(local_60 + 0x2c);\n    local_38 = local_60;\n    puStack_70 = &local_40;\n    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);\n    ppuVar10 = &puStack_70;\n    if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }\n  }" ({ "{") (expression_statement "local_3c = *(undefined4 *)(local_60 + 0x30);" (assignment_expression "local_3c = *(undefined4 *)(local_60 + 0x30)" (identifier "local_3c") (= "=") (pointer_expression "*(undefined4 *)(local_60 + 0x30)" (* "*") (cast_expression "(undefined4 *)(local_60 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_60 + 0x30)" (( "(") (binary_expression "local_60 + 0x30" (identifier "local_60") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_40 = *(undefined4 *)(local_60 + 0x2c);" (assignment_expression "local_40 = *(undefined4 *)(local_60 + 0x2c)" (identifier "local_40") (= "=") (pointer_expression "*(undefined4 *)(local_60 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(local_60 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_60 + 0x2c)" (( "(") (binary_expression "local_60 + 0x2c" (identifier "local_60") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "local_38 = local_60;" (assignment_expression "local_38 = local_60" (identifier "local_38") (= "=") (identifier "local_60")) (; ";")) (expression_statement "puStack_70 = &local_40;" (assignment_expression "puStack_70 = &local_40" (identifier "puStack_70") (= "=") (pointer_expression "&local_40" (& "&") (identifier "local_40"))) (; ";")) (expression_statement "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);" (call_expression "FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" (identifier "FUN_002fbe80") (argument_list "(local_54,*(char **)(param_1 + 0xb0) + 0x20,0)" (( "(") (identifier "local_54") (, ",") (binary_expression "*(char **)(param_1 + 0xb0) + 0x20" (pointer_expression "*(char **)(param_1 + 0xb0)" (* "*") (cast_expression "(char **)(param_1 + 0xb0)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (+ "+") (number_literal "0x20")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "ppuVar10 = &puStack_70;" (assignment_expression "ppuVar10 = &puStack_70" (identifier "ppuVar10") (= "=") (pointer_expression "&puStack_70" (& "&") (identifier "puStack_70"))) (; ";")) (if_statement "if (local_54[0] == '\0') {\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" (if "if") (parenthesized_expression "(local_54[0] == '\0')" (( "(") (binary_expression "local_54[0] == '\0'" (subscript_expression "local_54[0]" (identifier "local_54") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);\n    }" ({ "{") (expression_statement "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);" (call_expression "FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" (identifier "FUN_002446e0") (argument_list "(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX)" (( "(") (binary_expression "unaff_EBP + 0x17f1a7" (identifier "unaff_EBP") (+ "+") (number_literal "0x17f1a7")) (, ",") (number_literal "0xc3a") (, ",") (binary_expression "unaff_EBP + 0x1c55ae" (identifier "unaff_EBP") (+ "+") (number_literal "0x1c55ae")) (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x10)" (( "(") (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = **(int **)((int)ppuVar10 + 0xc);" (assignment_expression "iVar9 = **(int **)((int)ppuVar10 + 0xc)" (identifier "iVar9") (= "=") (pointer_expression "**(int **)((int)ppuVar10 + 0xc)" (* "*") (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" (* "*") (cast_expression "(int **)((int)ppuVar10 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar10 + 0xc)" (( "(") (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + 0x14) = uVar2" (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x14)" (( "(") (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar9 + 0xc);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0xc)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar9 + 0xc)" (* "*") (cast_expression "(code **)(iVar9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }\n  else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" (if "if") (parenthesized_expression "(pcVar3 == (code *)(unaff_EBP + -0x25d3c6))" (( "(") (binary_expression "pcVar3 == (code *)(unaff_EBP + -0x25d3c6)" (identifier "pcVar3") (== "==") (cast_expression "(code *)(unaff_EBP + -0x25d3c6)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + -0x25d3c6)" (( "(") (binary_expression "unaff_EBP + -0x25d3c6" (identifier "unaff_EBP") (+ "+") (number_literal "-0x25d3c6")) () ")")))) () ")")) (compound_statement "{\n    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);\n  }" ({ "{") (expression_statement "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);" (assignment_expression "lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" (identifier "lVar11") (= "=") (pointer_expression "*(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" (* "*") (cast_expression "(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int **)((int)ppuVar10 + 0xc) + 9)" (( "(") (binary_expression "*(int **)((int)ppuVar10 + 0xc) + 9" (pointer_expression "*(int **)((int)ppuVar10 + 0xc)" (* "*") (cast_expression "(int **)((int)ppuVar10 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar10 + 0xc)" (( "(") (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" (else "else") (compound_statement "{\n    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);\n    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;\n    lVar11 = (*pcVar3)();\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc)" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -0x10)" (( "(") (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)ppuVar10 + 0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0xc)" (( "(") (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -0x14)" (( "(") (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x2ce351")) (; ";")) (expression_statement "lVar11 = (*pcVar3)();" (assignment_expression "lVar11 = (*pcVar3)()" (identifier "lVar11") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar11 != 0) {\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" (if "if") (parenthesized_expression "(lVar11 != 0)" (( "(") (binary_expression "lVar11 != 0" (identifier "lVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);\n    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;\n    *(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));\n  }" ({ "{") (expression_statement "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1);" (assignment_expression "lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" (identifier "lVar7") (= "=") (binary_expression "lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" (identifier "lVar11") (+ "+") (call_expression "CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" (identifier "CONCAT44") (argument_list "(*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),\n                              *(int *)((int)ppuVar10 + 0x10) + -1)" (( "(") (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1 +\n                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (binary_expression "*(int *)((int)ppuVar10 + 0x14) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x14)" (( "(") (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(*(int *)((int)ppuVar10 + 0x10) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)((int)ppuVar10 + 0x10) != 0)" (( "(") (binary_expression "*(int *)((int)ppuVar10 + 0x10) != 0" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x10)" (( "(") (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")))) (, ",") (binary_expression "*(int *)((int)ppuVar10 + 0x10) + -1" (pointer_expression "*(int *)((int)ppuVar10 + 0x10)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x10)" (( "(") (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (expression_statement "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;" (assignment_expression "*(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11" (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" (* "*") (cast_expression "(uint *)((int)ppuVar10 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x10)" (( "(") (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "(uint)lVar7 & -(int)lVar11" (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7")) (& "&") (unary_expression "-(int)lVar11" (- "-") (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11"))))) (; ";")) (expression_statement "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));" (assignment_expression "*(uint *)((int)ppuVar10 + 0x14) =\n         (uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (pointer_expression "*(uint *)((int)ppuVar10 + 0x14)" (* "*") (cast_expression "(uint *)((int)ppuVar10 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x14)" (( "(") (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "(uint)((ulonglong)lVar7 >> 0x20) &\n         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (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")) () ")"))) (& "&") (unary_expression "-((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (- "-") (parenthesized_expression "((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0))" (( "(") (binary_expression "(int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0)" (cast_expression "(int)((ulonglong)lVar11 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar11 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar11 >> 0x20" (cast_expression "(ulonglong)lVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar11")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (call_expression "(uint)((int)lVar11 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)lVar11 != 0)" (( "(") (binary_expression "(int)lVar11 != 0" (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11")) (!= "!=") (number_literal "0")) () ")")))) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)((int)ppuVar10 + 0x10);" (assignment_expression "uVar4 = *(uint *)((int)ppuVar10 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)((int)ppuVar10 + 0x10)" (* "*") (cast_expression "(uint *)((int)ppuVar10 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x10)" (( "(") (binary_expression "(int)ppuVar10 + 0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)((int)ppuVar10 + 0x14);" (assignment_expression "iVar9 = *(int *)((int)ppuVar10 + 0x14)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((int)ppuVar10 + 0x14)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0x14)" (( "(") (binary_expression "(int)ppuVar10 + 0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);" (assignment_expression "puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0xc)" (( "(") (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0xc" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0xc)" (( "(") (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "uVar5 = *puVar1;" (assignment_expression "uVar5 = *puVar1" (identifier "uVar5") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "iVar8 = uVar4 + *puVar1;" (assignment_expression "iVar8 = uVar4 + *puVar1" (identifier "iVar8") (= "=") (binary_expression "uVar4 + *puVar1" (identifier "uVar4") (+ "+") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);" (assignment_expression "iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)ppuVar10 + 0xc) + 0x10)" (( "(") (binary_expression "*(int *)((int)ppuVar10 + 0xc) + 0x10" (pointer_expression "*(int *)((int)ppuVar10 + 0xc)" (* "*") (cast_expression "(int *)((int)ppuVar10 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + 0xc)" (( "(") (binary_expression "(int)ppuVar10 + 0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 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")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar8;\n    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);\n    return;\n  }" ({ "{") (expression_statement "*(int *)(param_1 + 0xc) = iVar8;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar8" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);" (assignment_expression "*(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,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")) () ")")))) (= "=") (binary_expression "iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5)" (binary_expression "iVar9 + iVar6" (identifier "iVar9") (+ "+") (identifier "iVar6")) (+ "+") (cast_expression "(uint)CARRY4(uVar4,uVar5)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar4,uVar5)" (identifier "CARRY4") (argument_list "(uVar4,uVar5)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") () ")")))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)((int)ppuVar10 + -4) = iVar8;" (assignment_expression "*(int *)((int)ppuVar10 + -4) = iVar8" (pointer_expression "*(int *)((int)ppuVar10 + -4)" (* "*") (cast_expression "(int *)((int)ppuVar10 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -4)" (( "(") (binary_expression "(int)ppuVar10 + -4" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;" (assignment_expression "*(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa" (pointer_expression "*(int *)((int)ppuVar10 + -8)" (* "*") (cast_expression "(int *)((int)ppuVar10 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -8)" (( "(") (binary_expression "(int)ppuVar10 + -8" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EBP + 0x1c59aa" (identifier "unaff_EBP") (+ "+") (number_literal "0x1c59aa"))) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;" (assignment_expression "*(undefined4 *)((int)ppuVar10 + -0xc) = 0x231" (pointer_expression "*(undefined4 *)((int)ppuVar10 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar10 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -0xc)" (( "(") (binary_expression "(int)ppuVar10 + -0xc" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x231")) (; ";")) (expression_statement "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;" (assignment_expression "*(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7" (pointer_expression "*(int *)((int)ppuVar10 + -0x10)" (* "*") (cast_expression "(int *)((int)ppuVar10 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar10 + -0x10)" (( "(") (binary_expression "(int)ppuVar10 + -0x10" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EBP + 0x17f1a7" (identifier "unaff_EBP") (+ "+") (number_literal "0x17f1a7"))) (; ";")) (expression_statement "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;" (assignment_expression "*(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374" (pointer_expression "*(undefined **)((int)ppuVar10 + -0x14)" (* "*") (cast_expression "(undefined **)((int)ppuVar10 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar10 + -0x14)" (( "(") (binary_expression "(int)ppuVar10 + -0x14" (cast_expression "(int)ppuVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar10")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_002ce374" (& "&") (identifier "UNK_002ce374"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_relaxed_input_section(Output_section * this, Layout * layout,
   Output_relaxed_input_section * poris, string * name) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *layout,type_3 *poris,type_4 *name)

{
  type_5 *poVar1;
  type_6 *var_15;
  type_5 oVar3;
  type_7 var_8;
  type_7 var_19;
  int var_17;
  int extraout_EDX;
  bool bVar7;
  type_7 var_18;
  type_7 var_20;
  type_8 local_54 [20];
  var_1<var_2::var_1<var_3::Relobj*,var_4>,var_5::type_3*> var_6;
  type_9 inp;
  
  inp.shndx_ = 0xfffffffc;
  inp.p2align_ = 0;
  inp.section_order_index_ = 0;
  inp.u1_.data_size._0_4_ = 0;
  inp.u1_.data_size._4_4_ = 0;
  inp.u2_.poris = poris;
  if (layout->section_ordering_specified_ != false) {
    var_8 = type_2::var_7(layout,name);
    if (var_8 != 0) {
      this->field_0x91 = this->field_0x91 | 2;
      inp.section_order_index_ = var_8;
    }
  }
  var_9(this,&inp);
  if (this->lookup_maps_->is_valid_ != false) {
    var_6.first.second = poris->shndx_;
    var_6.first.first = poris->relobj_;
    var_6.second = poris;
    var_2::
    _Hashtable<var_2::var_1<var_3::Relobj*,var_4>,_std::var_1<const_std::var_1<var_3::Relobj*,var_4>,var_5::type_3*>,_std::allocator<var_2::var_1<const_std::var_1<var_3::Relobj*,var_4>,var_5::type_3*>var_13>,_std::var_10::_Select1st,_std::equal_to<var_2::var_1<var_3::Relobj*,var_4>var_13>,var_5::Const_section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::var_10::_Prime_rehash_policy,_std::var_10::var_11<true,_false,var_12>var_13>
    ::
    _M_emplace<var_2::var_1<var_2::var_1<var_3::Relobj*,var_4>,var_5::type_3*>&>
              ((_Hashtable<var_2::var_1<var_3::Relobj*,var_4>,_std::var_1<const_std::var_1<var_3::Relobj*,var_4>,var_5::type_3*>,_std::allocator<var_2::var_1<const_std::var_1<var_3::Relobj*,var_4>,var_5::type_3*>var_13>,_std::var_10::_Select1st,_std::equal_to<var_2::var_1<var_3::Relobj*,var_4>var_13>,var_5::Const_section_id_hash,_std::var_10::_Mod_range_hashing,_std::var_10::_Default_ranged_hash,_std::var_10::_Prime_rehash_policy,_std::var_10::var_11<true,_false,var_12>var_13>
                *)local_54,&this->lookup_maps_->relaxed_input_sections_by_id_,0,&var_6);
    if (local_54[4] == '\0') {
                    /* WARNING: Subroutine does not return */
      var_14("../../gold/output.h",0xc3a,"add_relaxed_input_section");
    }
  }
  var_18 = (type_7)(this->super_Output_data).data_size_;
  var_20 = *(type_7 *)((int)&(this->super_Output_data).data_size_ + 4);
  var_15 = (poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.
           _vptr_Output_data[3];
  if (var_15 == var_16::do_addralign) {
    var_8 = (type_7)(poris->super_Output_section_data_build).super_Output_section_data.addralign_;
    var_17 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.
                           addralign_ + 4);
  }
  else {
    var_8 = (*var_15)(poris);
    var_17 = extraout_EDX;
  }
  if (var_17 != 0 || var_8 != 0) {
    bVar7 = var_18 != 0;
    var_19 = var_18 - 1;
    var_18 = var_19 + var_8 & -var_8;
    var_20 = (var_20 - 1) + (type_7)bVar7 + var_17 + (type_7)var_21(var_19,var_8) &
               -(var_17 + (type_7)(var_8 != 0));
  }
  poVar1 = &(poris->super_Output_section_data_build).super_Output_section_data.super_Output_data.
            data_size_;
  oVar3 = *poVar1;
  var_17 = *(int *)((int)&(poris->super_Output_section_data_build).super_Output_section_data.
                         super_Output_data.data_size_ + 4);
  if (((this->super_Output_data).field_0x1c & 2) == 0) {
    *(type_7 *)&(this->super_Output_data).data_size_ = var_18 + (int)*poVar1;
    *(type_7 *)((int)&(this->super_Output_data).data_size_ + 4) =
         var_20 + var_17 + (type_7)var_21(var_18,(type_7)oVar3);
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_14("../../gold/output.h",0x231,"set_current_data_size_for_child");
}


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

void MASKED(int param_1,int param_2,int param_3,undefined4 param_4)

{
  uint *puVar1;
  undefined4 uVar2;
  code *pcVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  undefined4 extraout_EDX;
  undefined4 **ppuVar10;
  int unaff_EBP;
  longlong lVar11;
  undefined4 *puStack_70;
  undefined1 auStack_6c [12];
  int local_60;
  char local_54 [20];
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  int local_20;
  
  FUN_00074f0e();
  local_34 = 0xfffffffc;
  local_30 = 0;
  local_60 = param_3;
  local_20 = 0;
  local_2c = 0;
  local_28 = 0;
  local_24 = param_3;
  if (*(char *)(param_2 + 0x1cd) != '\0') {
    iVar9 = FUN_00279d90(param_2,param_4);
    if (iVar9 != 0) {
      *(byte *)(param_1 + 0x91) = *(byte *)(param_1 + 0x91) | 2;
      local_20 = iVar9;
    }
  }
  ppuVar10 = (undefined4 **)auStack_6c;
  FUN_002ca760(param_1,&local_34);
  if (**(char **)(param_1 + 0xb0) != '\0') {
    local_3c = *(undefined4 *)(local_60 + 0x30);
    local_40 = *(undefined4 *)(local_60 + 0x2c);
    local_38 = local_60;
    puStack_70 = &local_40;
    FUN_002fbe80(local_54,*(char **)(param_1 + 0xb0) + 0x20,0);
    ppuVar10 = &puStack_70;
    if (local_54[0] == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(unaff_EBP + 0x17f1a7,0xc3a,unaff_EBP + 0x1c55ae,extraout_EDX);
    }
  }
  uVar2 = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)((int)ppuVar10 + 0x10) = *(undefined4 *)(param_1 + 0xc);
  iVar9 = **(int **)((int)ppuVar10 + 0xc);
  *(undefined4 *)((int)ppuVar10 + 0x14) = uVar2;
  pcVar3 = *(code **)(iVar9 + 0xc);
  if (pcVar3 == (code *)(unaff_EBP + -0x25d3c6)) {
    lVar11 = *(longlong *)(*(int **)((int)ppuVar10 + 0xc) + 9);
  }
  else {
    *(undefined4 *)((int)ppuVar10 + -0x10) = *(undefined4 *)((int)ppuVar10 + 0xc);
    *(undefined4 *)((int)ppuVar10 + -0x14) = 0x2ce351;
    lVar11 = (*pcVar3)();
  }
  if (lVar11 != 0) {
    lVar7 = lVar11 + CONCAT44(*(int *)((int)ppuVar10 + 0x14) + -1 +
                              (uint)(*(int *)((int)ppuVar10 + 0x10) != 0),
                              *(int *)((int)ppuVar10 + 0x10) + -1);
    *(uint *)((int)ppuVar10 + 0x10) = (uint)lVar7 & -(int)lVar11;
    *(uint *)((int)ppuVar10 + 0x14) =
         (uint)((ulonglong)lVar7 >> 0x20) &
         -((int)((ulonglong)lVar11 >> 0x20) + (uint)((int)lVar11 != 0));
  }
  uVar4 = *(uint *)((int)ppuVar10 + 0x10);
  iVar9 = *(int *)((int)ppuVar10 + 0x14);
  puVar1 = (uint *)(*(int *)((int)ppuVar10 + 0xc) + 0xc);
  uVar5 = *puVar1;
  iVar8 = uVar4 + *puVar1;
  iVar6 = *(int *)(*(int *)((int)ppuVar10 + 0xc) + 0x10);
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
    *(int *)(param_1 + 0xc) = iVar8;
    *(uint *)(param_1 + 0x10) = iVar9 + iVar6 + (uint)CARRY4(uVar4,uVar5);
    return;
  }
  *(int *)((int)ppuVar10 + -4) = iVar8;
  *(int *)((int)ppuVar10 + -8) = unaff_EBP + 0x1c59aa;
  *(undefined4 *)((int)ppuVar10 + -0xc) = 0x231;
  *(int *)((int)ppuVar10 + -0x10) = unaff_EBP + 0x17f1a7;
                    /* WARNING: Subroutine does not return */
  *(undefined **)((int)ppuVar10 + -0x14) = &UNK_002ce374;
  FUN_002446e0();
}

