
/* DWARF original prototype: bool can_add_to_stub_group(Stub_control * this, Output_section * o,
   Input_section * i, bool has14) */

bool __thiscall
anon_unknown.dwarf_6462d4::Stub_control::can_add_to_stub_group
          (Stub_control *this,Output_section *o,Input_section *i,bool has14)

{
  char cVar1;
  _func_int_varargs **pp_Var2;
  _func_int_varargs *p_Var3;
  pointer pcVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  Input_section *pIVar9;
  byte bVar10;
  Relobj *pRVar11;
  uint uVar12;
  undefined *puVar13;
  char *format;
  Input_section *this_00;
  undefined4 *puVar14;
  Stub_control **ppSVar15;
  int iVar16;
  int unaff_EDI;
  bool bVar17;
  undefined8 uVar18;
  undefined4 auStack_a8 [2];
  Stub_control *pSStack_90;
  undefined1 auStack_8c [4];
  undefined4 local_88;
  pointer local_84;
  int local_80;
  uint local_7c;
  undefined4 local_78;
  Relobj *local_74;
  Relobj *local_70;
  undefined8 local_6c;
  Stub_control *local_64;
  Input_section *local_60;
  undefined8 local_5c;
  uint local_54;
  undefined4 local_50;
  undefined8 local_4c;
  int local_44;
  uint *local_40;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  uVar18 = __x86_get_pc_thunk_di();
  local_44 = (int)((ulonglong)uVar18 >> 0x20);
  local_40 = (uint *)uVar18;
  local_64 = this;
  bVar10 = *(byte *)(local_44 + 0x1c) & 1;
  local_60 = this_00;
  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {
    if (bVar10 == 0) goto LAB_000ad952;
    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;
    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);
    pSStack_90 = *(Stub_control **)(local_44 + 8);
    lVar6 = *(longlong *)(local_44 + 4);
    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;
    if ((bVar10 & 1) == 0) {
      local_5c._4_4_ = pSStack_90;
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);
    }
    local_4c = *(longlong *)(local_44 + 0xc);
  }
  else {
    if (bVar10 == 0) {
LAB_000ad952:
      pSStack_90 = this;
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));
    }
    local_50 = *(undefined4 *)(local_44 + 8);
    local_54 = *(undefined4 *)(local_44 + 4);
    pRVar11 = gold::Output_section::Input_section::relobj(this_00);
    local_4c = CONCAT44(local_4c._4_4_,pRVar11);
    uVar12 = gold::Output_section::Input_section::shndx(this_00);
    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);
    local_5c = local_5c + CONCAT44(local_50,local_54);
    local_4c = gold::Output_section::Input_section::data_size(this_00);
    uVar18 = CONCAT44(local_44,local_40);
    local_7c = local_7c & 0xffffff00;
    lVar6 = local_5c;
  }
  pIVar9 = local_60;
  local_44 = (int)((ulonglong)uVar18 >> 0x20);
  local_40 = (uint *)uVar18;
  local_6c = lVar6 + local_4c;
  local_54 = *local_40;
  if ((char)local_64 != '\0') {
    local_54 = local_54 >> 10;
    local_40[3] = local_54;
  }
  ppSVar15 = (Stub_control **)auStack_8c;
  local_5c = lVar6;
  lVar6 = local_6c;
  if ((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&
     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {
    local_70 = gold::Output_section::Input_section::relobj(local_60);
    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);
    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);
    local_70 = (Relobj *)local_34[0];
                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */
    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);
    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;
    format = (char *)gettext(unaff_EDI + 0x3b9089);
    gold::gold_warning(format,local_84,local_70);
    uVar18 = CONCAT44(local_44,local_40);
    ppSVar15 = &pSStack_90;
    lVar6 = local_6c;
    if (local_34[0] != local_2c) {
      operator_delete(local_34[0]);
      uVar18 = CONCAT44(local_44,local_40);
      ppSVar15 = &pSStack_90;
      lVar6 = local_6c;
    }
  }
  pIVar9 = local_60;
  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);
  local_6c._0_4_ = (uint)lVar6;
  local_44 = (int)((ulonglong)uVar18 >> 0x20);
  local_40 = (uint *)uVar18;
  local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e);
  puVar14 = *(undefined4 **)local_70;
  iVar16 = *(int *)((int)local_40 + 8);
  lVar7 = local_5c;
  if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {
    local_88 = *puVar14;
    local_84 = (pointer)(int *)local_4c;
    local_80 = local_4c._4_4_;
    if (iVar16 != 0) {
      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));
      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));
    }
    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;
    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;
    local_6c = lVar6;
    local_74 = gold::Output_section::Input_section::relobj
                         (*(Input_section **)((int)ppSVar15 + -0x10));
    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;
    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;
    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));
    pp_Var2 = (local_74->super_Object)._vptr_Object;
    *(uint *)((int)ppSVar15 + -8) = uVar12;
    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;
    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;
    p_Var3 = pp_Var2[0x10];
    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;
    (*p_Var3)();
    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;
    local_74 = (Relobj *)local_34[0];
                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */
    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;
    pRVar11 = gold::Output_section::Input_section::relobj
                        (*(Input_section **)((int)ppSVar15 + -0x14));
    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;
    *(int *)((int)ppSVar15 + -0x14) = local_80;
    puVar13 = &UNK_003b9056 + unaff_EDI;
    if ((char)local_64 == '\0') {
      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);
    }
    *(pointer *)((int)ppSVar15 + -0x18) = local_84;
    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;
    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;
    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;
    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;
    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;
    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;
    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;
    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;
    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));
    lVar7 = local_5c;
    lVar6 = local_6c;
    if (local_34[0] != local_2c) {
      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];
      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;
      operator_delete(*(void **)((int)ppSVar15 + -0x14));
      lVar7 = local_5c;
      lVar6 = local_6c;
    }
    uVar18 = CONCAT44(local_44,local_40);
    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);
    iVar16 = *(int *)((int)local_40 + 8);
  }
  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);
  local_6c._0_4_ = (uint)lVar6;
  local_44 = (int)((ulonglong)uVar18 >> 0x20);
  local_40 = (uint *)uVar18;
  local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20);
  local_5c._0_4_ = (undefined4)lVar7;
  if (iVar16 == 0) {
    *(Input_section **)((int)local_40 + 0x18) = local_60;
    *(undefined4 *)((int)local_40 + 8) = 1;
    *(int *)((int)local_40 + 0x1c) = local_44;
    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;
    *(uint *)((int)local_40 + 0xc) = local_54;
    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;
    return true;
  }
  cVar1 = *(char *)((int)local_40 + 6);
  local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1);
  local_5c = lVar7;
  local_6c = lVar6;
  if ((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {
    if (iVar16 != 2) {
      if (iVar16 != 1) {
        *(uint **)((int)ppSVar15 + -4) = local_40;
        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;
        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;
        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;
        gold::do_gold_unreachable
                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),
                   *(char **)((int)ppSVar15 + -8));
      }
      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {
LAB_000ad908:
        *(Input_section **)((int)local_40 + 0x18) = local_60;
        *(int *)((int)local_40 + 0x1c) = local_44;
        return true;
      }
      local_84 = *(pointer *)((int)local_40 + 0x10);
      local_80 = *(int *)((int)local_40 + 0x14);
      lVar8 = *(longlong *)((int)local_40 + 0x10);
      local_7c = *(uint *)((int)local_40 + 0xc);
      lVar6 = lVar6 - lVar8;
      iVar16 = (int)((ulonglong)lVar6 >> 0x20);
      local_78 = 0;
      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;
      bVar17 = local_7c < (int *)local_4c;
      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);
      puVar14 = *(undefined4 **)local_70;
      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);
      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;
      if ((bVar10 != 0) &&
         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),
         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {
        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {
          local_4c = CONCAT71(local_4c._1_7_,bVar10);
          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;
          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;
          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;
          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));
          bVar10 = (byte)local_4c;
        }
        *(undefined4 *)((int)local_40 + 8) = 2;
        *(longlong *)((int)local_40 + 0x10) = local_5c;
        return (bool)bVar10;
      }
      goto LAB_000ad6cc;
    }
    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));
    if (iVar16 == 0 &&
        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=
        (uint)-iVar16) {
      return true;
    }
  }
  puVar14 = *(undefined4 **)local_70;
  local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);
LAB_000ad6cc:
  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {
    uVar5 = *puVar14;
    puVar13 = &UNK_003b905d + unaff_EDI;
    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {
      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);
    }
    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;
    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;
    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;
    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));
  }
  *(uint *)((int)local_40 + 0xc) = local_54;
  *(undefined4 *)((int)local_40 + 8) = 1;
  *(longlong *)((int)local_40 + 0x10) = local_5c;
  return false;
}



uint FUN_000ad4a0(uint param_1)

{
  longlong *plVar1;
  char cVar2;
  code *pcVar3;
  uint uVar4;
  longlong lVar5;
  longlong lVar6;
  byte bVar7;
  undefined4 uVar8;
  int iVar9;
  undefined *puVar10;
  uint uVar11;
  uint extraout_ECX;
  undefined4 *puVar12;
  uint *puVar13;
  int unaff_EDI;
  bool bVar14;
  bool bVar15;
  undefined8 uVar16;
  longlong lVar17;
  undefined4 auStackY_a8 [2];
  uint uStack_90;
  undefined1 auStack_8c [4];
  undefined4 local_88;
  undefined8 local_84;
  uint local_7c;
  undefined4 local_78;
  int *local_74;
  byte *local_70;
  undefined8 local_6c;
  uint local_64;
  uint local_60;
  undefined8 local_5c;
  uint local_54;
  undefined4 local_50;
  undefined8 local_4c;
  int local_44;
  uint *local_40;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  uVar16 = FUN_00074f0a();
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_64 = param_1;
  bVar7 = *(byte *)(local_44 + 0x1c) & 1;
  local_60 = extraout_ECX;
  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {
    if (bVar7 == 0) goto LAB_000ad952;
    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;
    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);
    uStack_90 = *(uint *)(local_44 + 8);
    lVar5 = *(longlong *)(local_44 + 4);
    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;
    if ((bVar7 & 1) == 0) {
      local_5c._4_4_ = uStack_90;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);
    }
    lVar17 = *(longlong *)(local_44 + 0xc);
  }
  else {
    if (bVar7 == 0) {
LAB_000ad952:
      uStack_90 = param_1;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);
    }
    local_50 = *(undefined4 *)(local_44 + 8);
    local_54 = *(undefined4 *)(local_44 + 4);
    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);
    uVar8 = FUN_002c61a0(extraout_ECX);
    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);
    local_5c = local_5c + CONCAT44(local_50,local_54);
    lVar17 = FUN_002c60d0(extraout_ECX);
    uVar16 = CONCAT44(local_44,local_40);
    local_7c = local_7c & 0xffffff00;
    lVar5 = local_5c;
  }
  uVar11 = local_60;
  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);
  local_4c._0_4_ = (int *)lVar17;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_6c = lVar17 + lVar5;
  local_54 = *local_40;
  if ((char)local_64 != '\0') {
    local_54 = local_54 >> 10;
    local_40[3] = local_54;
  }
  bVar14 = local_54 < (int *)local_4c;
  bVar15 = local_4c._4_4_ != 0;
  uVar4 = -local_4c._4_4_;
  puVar13 = (uint *)auStack_8c;
  local_5c = lVar5;
  lVar5 = local_6c;
  local_4c = lVar17;
  if ((bVar15 || uVar4 < bVar14) &&
     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {
    local_70 = (byte *)FUN_002c6110(local_60);
    uVar8 = FUN_002c61a0(uVar11);
    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);
    local_70 = local_34[0];
                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */
    iVar9 = FUN_002c6110(uVar11);
    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);
    uVar8 = gettext(unaff_EDI + 0x3b9089);
    FUN_0023b840(uVar8,(undefined4)local_84,local_70);
    uVar16 = CONCAT44(local_44,local_40);
    puVar13 = &uStack_90;
    lVar5 = local_6c;
    if (local_34[0] != local_2c) {
      FUN_003ae080(local_34[0]);
      uVar16 = CONCAT44(local_44,local_40);
      puVar13 = &uStack_90;
      lVar5 = local_6c;
    }
  }
  uVar11 = local_60;
  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);
  local_6c._0_4_ = (uint)lVar5;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;
  puVar12 = *(undefined4 **)local_70;
  iVar9 = *(int *)((int)local_40 + 8);
  lVar17 = local_5c;
  lVar6 = local_4c;
  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);
  if ((puVar12[2] != 0) &&
     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0
     )) {
    local_88 = *puVar12;
    local_84 = local_4c;
    if (iVar9 != 0) {
      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),
                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));
    }
    *(uint *)((int)puVar13 + -0x10) = local_60;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;
    local_6c = lVar5;
    local_74 = (int *)FUN_002c6110();
    *(uint *)((int)puVar13 + -0x10) = uVar11;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;
    uVar8 = FUN_002c61a0();
    iVar9 = *local_74;
    *(undefined4 *)((int)puVar13 + -8) = uVar8;
    *(int **)((int)puVar13 + -0xc) = local_74;
    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;
    pcVar3 = *(code **)(iVar9 + 0x40);
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;
    (*pcVar3)();
    *(uint *)((int)puVar13 + -0x14) = uVar11;
    local_74 = (int *)local_34[0];
                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */
    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;
    iVar9 = FUN_002c6110();
    uVar8 = *(undefined4 *)(iVar9 + 4);
    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;
    puVar10 = &UNK_003b9056 + unaff_EDI;
    if ((char)local_64 == '\0') {
      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);
    }
    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;
    *(longlong *)((int)puVar13 + -0x20) = local_4c;
    *(int **)((int)puVar13 + -0x24) = local_74;
    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;
    *(undefined **)((int)puVar13 + -0x2c) = puVar10;
    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;
    *(undefined4 *)((int)puVar13 + -0x34) = local_88;
    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;
    FUN_0023b750();
    lVar5 = local_6c;
    lVar17 = local_5c;
    lVar6 = local_4c;
    if (local_34[0] != local_2c) {
      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];
      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;
      FUN_003ae080();
      lVar5 = local_6c;
      lVar17 = local_5c;
      lVar6 = local_4c;
    }
    uVar16 = CONCAT44(local_44,local_40);
    puVar13 = (uint *)((int)puVar13 + -4);
    iVar9 = *(int *)((int)local_40 + 8);
  }
  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);
  local_4c._0_4_ = (int *)lVar6;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);
  local_5c._0_4_ = (undefined4)lVar17;
  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);
  local_6c._0_4_ = (uint)lVar5;
  if (iVar9 == 0) {
    *(uint *)((int)local_40 + 0x18) = local_60;
    *(undefined4 *)((int)local_40 + 8) = 1;
    *(int *)((int)local_40 + 0x1c) = local_44;
    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;
    *(uint *)((int)local_40 + 0xc) = local_54;
    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;
    return 1;
  }
  cVar2 = *(char *)((int)local_40 + 6);
  local_64 = CONCAT31(local_64._1_3_,cVar2);
  local_5c = lVar17;
  local_6c = lVar5;
  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {
    if (iVar9 != 2) {
      if (iVar9 != 1) {
        *(uint **)((int)puVar13 + -4) = local_40;
        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;
        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;
        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;
        local_4c = lVar6;
        FUN_002446e0();
      }
      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {
LAB_000ad908:
        *(uint *)((int)local_40 + 0x18) = local_60;
        *(int *)((int)local_40 + 0x1c) = local_44;
        return 1;
      }
      plVar1 = (longlong *)((int)local_40 + 0x10);
      local_84._0_4_ = *(undefined4 *)plVar1;
      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);
      local_7c = *(uint *)((int)local_40 + 0xc);
      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);
      local_78 = 0;
      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)
      goto LAB_000ad908;
      bVar14 = local_7c < (int *)local_4c;
      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;
      puVar12 = *(undefined4 **)local_70;
      local_4c._0_4_ = (int *)puVar12[2];
      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;
      uVar11 = (uint)bVar7;
      lVar5 = *plVar1;
      if ((bVar7 != 0) &&
         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,
         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {
        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {
          uVar11 = (uint)(int *)local_4c >> 8;
          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);
          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;
          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;
          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;
          FUN_0023b750();
          uVar11 = (uint)(int *)local_4c & 0xff;
        }
        *(undefined4 *)((int)local_40 + 8) = 2;
        *(longlong *)((int)local_40 + 0x10) = local_5c;
        return uVar11;
      }
      goto LAB_000ad6cc;
    }
    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));
    if (iVar9 == 0 &&
        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=
        (uint)-iVar9) {
      return 1;
    }
  }
  puVar12 = *(undefined4 **)local_70;
  local_4c._0_4_ = (int *)puVar12[2];
  lVar5 = local_84;
LAB_000ad6cc:
  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {
    uVar8 = *puVar12;
    puVar10 = &UNK_003b905d + unaff_EDI;
    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {
      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);
    }
    *(undefined **)((int)puVar13 + -0xc) = puVar10;
    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;
    local_84 = lVar5;
    FUN_0023b750();
  }
  *(uint *)((int)local_40 + 0xc) = local_54;
  *(undefined4 *)((int)local_40 + 8) = 1;
  *(longlong *)((int)local_40 + 0x10) = local_5c;
  return 0;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x53cb57
PUSH ESI
PUSH EBX
SUB ESP,0x7c
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,EDX
MOV ESI,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x1c]
MOV dword ptr [EBP + -0x40],EDX
MOV EDX,dword ptr [EDX + 0x5c]
MOV dword ptr [EBP + -0x5c],ECX
MOV ECX,EAX
MOV dword ptr [EBP + -0x60],ESI
AND ECX,0x1
CMP EDX,0x6
JZ 0x000ad540
CMP EDX,0xd
JZ 0x000ad540
TEST CL,CL
JZ 0x000ad952
MOV ESI,dword ptr [EBP + -0x5c]
MOV EAX,dword ptr [EBP + -0x40]
SUB ESP,0xc
MOV EBX,EDI
MOV EDX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
PUSH ESI
MOV dword ptr [EBP + -0x4c],EDX
MOV dword ptr [EBP + -0x50],EAX
CALL 0x002c6110
MOV dword ptr [ESP],ESI
MOV dword ptr [EBP + -0x48],EAX
CALL 0x002c61a0
MOV EBX,dword ptr [EBP + -0x48]
POP EDX
POP ECX
MOV EDX,dword ptr [EBX]
PUSH EAX
PUSH EBX
MOV EBX,EDI
CALL dword ptr [EDX + 0x68]
ADD EAX,dword ptr [EBP + -0x50]
ADC EDX,dword ptr [EBP + -0x4c]
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [ESP],ESI
MOV dword ptr [EBP + -0x54],EDX
CALL 0x002c60d0
ADD ESP,0x10
MOV byte ptr [EBP + -0x78],0x0
MOV dword ptr [EBP + -0x48],EAX
MOV dword ptr [EBP + -0x44],EDX
JMP 0x000ad574
TEST CL,CL
JZ 0x000ad952
MOV ESI,dword ptr [EBP + -0x40]
SHR AL,0x1
AND EAX,0x1
MOV ECX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x8]
MOV byte ptr [EBP + -0x78],AL
MOV dword ptr [EBP + -0x58],ECX
MOV dword ptr [EBP + -0x54],EBX
JZ 0x000ad96d
MOV EAX,dword ptr [EBP + -0x40]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x44],EDX
MOV dword ptr [EBP + -0x48],EAX
MOV ESI,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x48]
ADD EAX,dword ptr [EBP + -0x58]
MOV EDX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [ESI]
ADC EDX,dword ptr [EBP + -0x54]
CMP byte ptr [EBP + -0x60],0x0
MOV dword ptr [EBP + -0x64],EDX
MOV dword ptr [EBP + -0x50],EAX
JZ 0x000ad59d
SHR EAX,0xa
MOV dword ptr [EBP + -0x50],EAX
MOV dword ptr [ESI + 0xc],EAX
MOV EAX,dword ptr [EBP + -0x50]
MOV ECX,dword ptr [EBP + -0x48]
MOV EDX,0x0
MOV EBX,dword ptr [EBP + -0x44]
CMP EAX,ECX
MOV EAX,EDX
SBB EAX,EBX
JC 0x000ad720
LEA EAX,[EDI + 0x7c8]
MOV ECX,dword ptr [EBP + -0x3c]
MOV EDX,dword ptr [EAX]
MOV dword ptr [EBP + -0x6c],EAX
MOV EAX,dword ptr [ECX + 0x8]
MOV ECX,dword ptr [EDX + 0x8]
TEST ECX,ECX
JZ 0x000ad69b
TEST byte ptr [EDX + 0x14],0x40
JZ 0x000ad69b
MOV ESI,dword ptr [EDX]
MOV ECX,dword ptr [EBP + -0x48]
MOV EBX,dword ptr [EBP + -0x44]
MOV dword ptr [EBP + 0xffffff7c],ESI
MOV dword ptr [EBP + -0x80],ECX
MOV dword ptr [EBP + -0x7c],EBX
TEST EAX,EAX
JZ 0x000ad60a
MOV ECX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x68]
MOV EDX,dword ptr [EBP + -0x64]
SUB EAX,dword ptr [ECX + 0x10]
SBB EDX,dword ptr [ECX + 0x14]
MOV dword ptr [EBP + -0x80],EAX
MOV dword ptr [EBP + -0x7c],EDX
MOV ESI,dword ptr [EBP + -0x5c]
SUB ESP,0xc
MOV EBX,EDI
PUSH ESI
CALL 0x002c6110
MOV dword ptr [ESP],ESI
MOV dword ptr [EBP + -0x70],EAX
CALL 0x002c61a0
MOV EBX,dword ptr [EBP + -0x70]
ADD ESP,0xc
LEA ECX,[EBP + -0x30]
MOV EDX,dword ptr [EBX]
PUSH EAX
PUSH EBX
MOV EBX,EDI
PUSH ECX
CALL dword ptr [EDX + 0x40]
MOV EAX,dword ptr [EBP + -0x30]
PUSH ESI
MOV dword ptr [EBP + -0x70],EAX
CALL 0x002c6110
MOV EDX,dword ptr [EAX + 0x4]
LEA ECX,[EDI + 0xffeb3b16]
LEA EAX,[EDI + 0xffe7c4ff]
POP ESI
CMP byte ptr [EBP + -0x60],0x0
PUSH dword ptr [EBP + -0x7c]
CMOVZ EAX,ECX
PUSH dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + -0x44]
PUSH dword ptr [EBP + -0x48]
PUSH dword ptr [EBP + -0x70]
PUSH EDX
PUSH EAX
LEA EAX,[EDI + 0xffe7c8d4]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff7c]
CALL 0x0023b750
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x30
CMP EAX,EDX
JZ 0x000ad695
SUB ESP,0xc
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x000ad8b0
MOV EDX,dword ptr [EBP + -0x3c]
MOVZX EBX,byte ptr [EDX + 0x6]
MOV byte ptr [EBP + -0x60],BL
TEST BL,BL
JNZ 0x000ad7b0
MOV ESI,dword ptr [EBP + -0x40]
CMP dword ptr [EDX + 0x1c],ESI
JZ 0x000ad7b0
MOV EAX,dword ptr [EBP + -0x6c]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX + 0x8]
MOV dword ptr [EBP + -0x48],EAX
MOV EAX,dword ptr [EBP + -0x48]
TEST EAX,EAX
JZ 0x000ad6fa
TEST byte ptr [EDX + 0x14],0x40
JZ 0x000ad6fa
CMP byte ptr [EBP + -0x60],0x0
MOV EDX,dword ptr [EDX]
LEA EAX,[EDI + 0xffe7c506]
JZ 0x000ad8e8
SUB ESP,0x8
MOV EBX,EDI
PUSH EAX
PUSH EDX
CALL 0x0023b750
ADD ESP,0x10
MOV EDI,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x50]
MOV EDX,dword ptr [EBP + -0x54]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [EBP + -0x58]
MOV dword ptr [EDI + 0x8],0x1
MOV dword ptr [EDI + 0x14],EDX
MOV dword ptr [EDI + 0x10],EAX
XOR EAX,EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x3c]
CMP byte ptr [EAX + 0x5],0x0
JNZ 0x000ad5b7
MOV ESI,dword ptr [EBP + -0x5c]
SUB ESP,0xc
MOV EBX,EDI
PUSH ESI
CALL 0x002c6110
MOV dword ptr [ESP],ESI
MOV dword ptr [EBP + -0x6c],EAX
CALL 0x002c61a0
MOV EBX,dword ptr [EBP + -0x6c]
ADD ESP,0xc
LEA ECX,[EBP + -0x30]
MOV EDX,dword ptr [EBX]
PUSH EAX
PUSH EBX
MOV EBX,EDI
PUSH ECX
CALL dword ptr [EDX + 0x40]
MOV EAX,dword ptr [EBP + -0x30]
PUSH ESI
MOV dword ptr [EBP + -0x6c],EAX
CALL 0x002c6110
MOV EDX,dword ptr [EAX + 0x4]
LEA EAX,[EDI + 0xffe7c532]
MOV dword ptr [ESP],EAX
MOV dword ptr [EBP + -0x80],EDX
CALL 0x00039440
MOV EDX,dword ptr [EBP + -0x80]
ADD ESP,0xc
PUSH dword ptr [EBP + -0x6c]
PUSH EDX
PUSH EAX
CALL 0x0023b840
MOV EAX,dword ptr [EBP + -0x30]
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
CMP EAX,EDX
JZ 0x000ad5b7
SUB ESP,0xc
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
JMP 0x000ad5b7
CMP EAX,0x2
JZ 0x000ad928
CMP EAX,0x1
JNZ 0x000ad988
CMP byte ptr [EBP + -0x78],0x0
JZ 0x000ad7d7
MOV EDX,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x40]
CMP dword ptr [EDX + 0x1c],EAX
JZ 0x000ad908
MOV EBX,dword ptr [EBP + -0x3c]
MOV ESI,dword ptr [EBP + -0x64]
MOV EAX,dword ptr [EBX + 0x10]
MOV EDX,dword ptr [EBX + 0x14]
MOV dword ptr [EBP + -0x80],EAX
MOV EAX,dword ptr [EBX + 0xc]
MOV dword ptr [EBP + -0x7c],EDX
MOV EBX,dword ptr [EBP + -0x68]
XOR EDX,EDX
SUB EBX,dword ptr [EBP + -0x80]
SBB ESI,dword ptr [EBP + -0x7c]
MOV dword ptr [EBP + -0x78],EAX
MOV dword ptr [EBP + -0x74],EDX
MOV EAX,EBX
MOV ECX,dword ptr [EBP + -0x78]
MOV EDX,ESI
MOV EBX,dword ptr [EBP + -0x74]
CMP ECX,EAX
MOV ESI,EBX
SBB ESI,EDX
JNC 0x000ad908
MOV EAX,dword ptr [EBP + -0x3c]
MOV EDX,dword ptr [EBP + -0x48]
MOV EBX,dword ptr [EBP + -0x78]
MOV ESI,dword ptr [EBP + -0x74]
MOVZX EAX,byte ptr [EAX + 0x4]
MOV ECX,dword ptr [EBP + -0x44]
XOR EAX,0x1
CMP EBX,EDX
SBB ESI,ECX
MOV ESI,dword ptr [EBP + -0x6c]
MOV byte ptr [EBP + -0x5c],AL
SETNC AL
MOV EDX,dword ptr [ESI]
MOV ESI,dword ptr [EDX + 0x8]
MOV dword ptr [EBP + -0x48],ESI
AND AL,byte ptr [EBP + -0x5c]
JZ 0x000ad6cc
MOV ECX,dword ptr [EBP + -0x74]
MOV EBX,dword ptr [EBP + -0x58]
MOV ESI,dword ptr [EBP + -0x54]
SUB EBX,dword ptr [EBP + -0x80]
SBB ESI,dword ptr [EBP + -0x7c]
CMP dword ptr [EBP + -0x78],EBX
SBB ECX,ESI
JC 0x000ad6cc
MOV ECX,dword ptr [EBP + -0x48]
TEST ECX,ECX
JZ 0x000ad88b
TEST byte ptr [EDX + 0x14],0x40
JZ 0x000ad88b
SUB ESP,0x8
LEA ECX,[EDI + 0xffe7c54b]
MOV EBX,EDI
MOV byte ptr [EBP + -0x48],AL
PUSH ECX
PUSH dword ptr [EDX]
CALL 0x0023b750
MOVZX EAX,byte ptr [EBP + -0x48]
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x3c]
MOV ESI,dword ptr [EBP + -0x58]
MOV EDI,dword ptr [EBP + -0x54]
MOV dword ptr [EDX + 0x8],0x2
MOV dword ptr [EDX + 0x10],ESI
MOV dword ptr [EDX + 0x14],EDI
JMP 0x000ad718
MOV EDI,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + -0x5c]
MOV EDX,dword ptr [EBP + -0x54]
MOV dword ptr [EDI + 0x18],EAX
MOV EAX,dword ptr [EBP + -0x40]
MOV dword ptr [EDI + 0x8],0x1
MOV dword ptr [EDI + 0x1c],EAX
MOV EAX,dword ptr [EBP + -0x50]
MOV dword ptr [EDI + 0x14],EDX
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [EBP + -0x58]
MOV dword ptr [EDI + 0x10],EAX
LEA ESP,[EBP + -0xc]
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [EBP + -0x3c]
MOV ESI,dword ptr [EBP + -0x40]
CMP dword ptr [ECX + 0x1c],ESI
JZ 0x000ad6eb
LEA EAX,[EDI + 0xffe7c518]
JMP 0x000ad6eb
MOV EAX,dword ptr [EBP + -0x5c]
MOV EDX,dword ptr [EBP + -0x3c]
MOV dword ptr [EDX + 0x18],EAX
MOV EAX,dword ptr [EBP + -0x40]
MOV dword ptr [EDX + 0x1c],EAX
LEA ESP,[EBP + -0xc]
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x3c]
MOV EBX,dword ptr [EBP + -0x68]
MOV ESI,dword ptr [EBP + -0x64]
SUB EBX,dword ptr [EAX + 0x10]
SBB ESI,dword ptr [EAX + 0x14]
XOR EDX,EDX
MOV EAX,dword ptr [EAX + 0xc]
CMP EAX,EBX
MOV EAX,EDX
SBB EAX,ESI
MOV EAX,0x1
JC 0x000ad6c1
JMP 0x000ad718
LEA EAX,[EDI + 0xffe7b974]
PUSH ESI
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe6335d]
PUSH 0xc5
PUSH EAX
CALL 0x002446e0
LEA EAX,[EDI + 0xffe7ba7c]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe6335d]
PUSH 0xcf
PUSH EAX
CALL 0x002446e0
LEA EAX,[EDI + 0xffe7b340]
PUSH EDX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe7c4c8]
PUSH 0xc6b
PUSH EAX
CALL 0x002446e0
(translation_unit "uint FUN_000ad4a0(uint param_1)\n\n{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}\n\n" (function_definition "uint FUN_000ad4a0(uint param_1)\n\n{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" type_identifier (function_declarator "FUN_000ad4a0(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" { (declaration "longlong *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "longlong lVar17;" type_identifier identifier ;) (declaration "undefined4 auStackY_a8 [2];" type_identifier (array_declarator "auStackY_a8 [2]" identifier [ number_literal ]) ;) (declaration "uint uStack_90;" type_identifier identifier ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined8 local_84;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "int *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "byte *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined8 local_6c;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined8 local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "uVar16 = FUN_00074f0a();" (assignment_expression "uVar16 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) & 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) & 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) & 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "local_60 = extraout_ECX;" (assignment_expression "local_60 = extraout_ECX" identifier = identifier) ;) (if_statement "if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" if (parenthesized_expression "((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd))" ( (binary_expression "(*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)" (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 6)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 6" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 0xd)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 0xd" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }" { (if_statement "if (bVar7 == 0) goto LAB_000ad952;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000ad952;" goto statement_identifier ;)) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) >> 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) >> 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) >> 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "local_5c._0_4_ = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_5c._0_4_ = *(undefined4 *)(local_44 + 4)" (field_expression "local_5c._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "uStack_90 = *(uint *)(local_44 + 8);" (assignment_expression "uStack_90 = *(uint *)(local_44 + 8)" identifier = (pointer_expression "*(uint *)(local_44 + 8)" * (cast_expression "(uint *)(local_44 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(longlong *)(local_44 + 4);" (assignment_expression "lVar5 = *(longlong *)(local_44 + 4)" identifier = (pointer_expression "*(longlong *)(local_44 + 4)" * (cast_expression "(longlong *)(local_44 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;" (assignment_expression "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" identifier = (binary_expression "CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" (call_expression "CONCAT31(local_7c._1_3_,bVar7)" identifier (argument_list "(local_7c._1_3_,bVar7)" ( (field_expression "local_7c._1_3_" identifier . field_identifier) , identifier ))) & number_literal)) ;) (if_statement "if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" if (parenthesized_expression "((bVar7 & 1) == 0)" ( (binary_expression "(bVar7 & 1) == 0" (parenthesized_expression "(bVar7 & 1)" ( (binary_expression "bVar7 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_5c._4_4_ = uStack_90;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" { (expression_statement "local_5c._4_4_ = uStack_90;" (assignment_expression "local_5c._4_4_ = uStack_90" (field_expression "local_5c._4_4_" identifier . field_identifier) = identifier) ;) comment (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" identifier (argument_list "(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" ( (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x3b85d3" identifier + number_literal) ))) ;) })) (expression_statement "lVar17 = *(longlong *)(local_44 + 0xc);" (assignment_expression "lVar17 = *(longlong *)(local_44 + 0xc)" identifier = (pointer_expression "*(longlong *)(local_44 + 0xc)" * (cast_expression "(longlong *)(local_44 + 0xc)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0xc)" ( (binary_expression "local_44 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" else (compound_statement "{\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" { (if_statement "if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000ad952:\n      uStack_90 = param_1;\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" { (labeled_statement "LAB_000ad952:\n      uStack_90 = param_1;" statement_identifier : (expression_statement "uStack_90 = param_1;" (assignment_expression "uStack_90 = param_1" identifier = identifier) ;)) comment (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" identifier (argument_list "(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" ( (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x3b84cb" identifier + number_literal) ))) ;) })) (expression_statement "local_50 = *(undefined4 *)(local_44 + 8);" (assignment_expression "local_50 = *(undefined4 *)(local_44 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 8)" * (cast_expression "(undefined4 *)(local_44 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_54 = *(undefined4 *)(local_44 + 4)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);" (assignment_expression "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)FUN_002c6110(extraout_ECX)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier ))))) ;) (expression_statement "uVar8 = FUN_002c61a0(extraout_ECX);" (assignment_expression "uVar8 = FUN_002c61a0(extraout_ECX)" identifier = (call_expression "FUN_002c61a0(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier )))) ;) (expression_statement "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);" (assignment_expression "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" identifier = (call_expression "(**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_4c + 0x68))" ( (pointer_expression "**(code **)(*(int *)local_4c + 0x68)" * (pointer_expression "*(code **)(*(int *)local_4c + 0x68)" * (cast_expression "(code **)(*(int *)local_4c + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_4c + 0x68)" ( (binary_expression "*(int *)local_4c + 0x68" (pointer_expression "*(int *)local_4c" * (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_4c,uVar8)" ( (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "local_5c = local_5c + CONCAT44(local_50,local_54);" (assignment_expression "local_5c = local_5c + CONCAT44(local_50,local_54)" identifier = (binary_expression "local_5c + CONCAT44(local_50,local_54)" identifier + (call_expression "CONCAT44(local_50,local_54)" identifier (argument_list "(local_50,local_54)" ( identifier , identifier ))))) ;) (expression_statement "lVar17 = FUN_002c60d0(extraout_ECX);" (assignment_expression "lVar17 = FUN_002c60d0(extraout_ECX)" identifier = (call_expression "FUN_002c60d0(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier )))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "local_7c = local_7c & 0xffffff00;" (assignment_expression "local_7c = local_7c & 0xffffff00" identifier = (binary_expression "local_7c & 0xffffff00" identifier & number_literal)) ;) (expression_statement "lVar5 = local_5c;" (assignment_expression "lVar5 = local_5c" identifier = identifier) ;) }))) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" identifier = identifier) ;) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (int *)lVar17;" (assignment_expression "local_4c._0_4_ = (int *)lVar17" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)lVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_6c = lVar17 + lVar5;" (assignment_expression "local_6c = lVar17 + lVar5" identifier = (binary_expression "lVar17 + lVar5" identifier + identifier)) ;) (expression_statement "local_54 = *local_40;" (assignment_expression "local_54 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;) (if_statement "if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" { (expression_statement "local_54 = local_54 >> 10;" (assignment_expression "local_54 = local_54 >> 10" identifier = (binary_expression "local_54 >> 10" identifier >> number_literal)) ;) (expression_statement "local_40[3] = local_54;" (assignment_expression "local_40[3] = local_54" (subscript_expression "local_40[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "bVar14 = local_54 < (int *)local_4c;" (assignment_expression "bVar14 = local_54 < (int *)local_4c" identifier = (binary_expression "local_54 < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar15 = local_4c._4_4_ != 0;" (assignment_expression "bVar15 = local_4c._4_4_ != 0" identifier = (binary_expression "local_4c._4_4_ != 0" (field_expression "local_4c._4_4_" identifier . field_identifier) != number_literal)) ;) (expression_statement "uVar4 = -local_4c._4_4_;" (assignment_expression "uVar4 = -local_4c._4_4_" identifier = (unary_expression "-local_4c._4_4_" - (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "puVar13 = (uint *)auStack_8c;" (assignment_expression "puVar13 = (uint *)auStack_8c" identifier = (cast_expression "(uint *)auStack_8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_5c = lVar5;" (assignment_expression "local_5c = lVar5" identifier = identifier) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "local_4c = lVar17;" (assignment_expression "local_4c = lVar17" identifier = identifier) ;) (if_statement "if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" if (parenthesized_expression "((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'))" ( (binary_expression "(bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" (parenthesized_expression "(bVar15 || uVar4 < bVar14)" ( (binary_expression "bVar15 || uVar4 < bVar14" identifier || (binary_expression "uVar4 < bVar14" identifier < identifier)) )) && (parenthesized_expression "(puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" ( (comma_expression "puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'" (assignment_expression "puVar13 = (uint *)auStack_8c" identifier = (cast_expression "(uint *)auStack_8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(char *)((int)local_40 + 5) == '\0'" (pointer_expression "*(char *)((int)local_40 + 5)" * (cast_expression "(char *)((int)local_40 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 5)" ( (binary_expression "(int)local_40 + 5" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" { (expression_statement "local_70 = (byte *)FUN_002c6110(local_60);" (assignment_expression "local_70 = (byte *)FUN_002c6110(local_60)" identifier = (cast_expression "(byte *)FUN_002c6110(local_60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110(local_60)" identifier (argument_list "(local_60)" ( identifier ))))) ;) (expression_statement "uVar8 = FUN_002c61a0(uVar11);" (assignment_expression "uVar8 = FUN_002c61a0(uVar11)" identifier = (call_expression "FUN_002c61a0(uVar11)" identifier (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);" (call_expression "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_70 + 0x40))" ( (pointer_expression "**(code **)(*(int *)local_70 + 0x40)" * (pointer_expression "*(code **)(*(int *)local_70 + 0x40)" * (cast_expression "(code **)(*(int *)local_70 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_70 + 0x40)" ( (binary_expression "*(int *)local_70 + 0x40" (pointer_expression "*(int *)local_70" * (cast_expression "(int *)local_70" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(local_34,local_70,uVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_70 = local_34[0];" (assignment_expression "local_70 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) comment (expression_statement "iVar9 = FUN_002c6110(uVar11);" (assignment_expression "iVar9 = FUN_002c6110(uVar11)" identifier = (call_expression "FUN_002c6110(uVar11)" identifier (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "local_84._0_4_ = *(undefined4 *)(iVar9 + 4);" (assignment_expression "local_84._0_4_ = *(undefined4 *)(iVar9 + 4)" (field_expression "local_84._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = gettext(unaff_EDI + 0x3b9089);" (assignment_expression "uVar8 = gettext(unaff_EDI + 0x3b9089)" identifier = (call_expression "gettext(unaff_EDI + 0x3b9089)" identifier (argument_list "(unaff_EDI + 0x3b9089)" ( (binary_expression "unaff_EDI + 0x3b9089" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b840(uVar8,(undefined4)local_84,local_70);" (call_expression "FUN_0023b840(uVar8,(undefined4)local_84,local_70)" identifier (argument_list "(uVar8,(undefined4)local_84,local_70)" ( identifier , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) })) })) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" identifier = identifier) ;) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;" (assignment_expression "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" identifier = (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) (expression_statement "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier = (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier (argument_list "(local_84._4_4_,(undefined4)local_84)" ( (field_expression "local_84._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (if_statement "if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" if (parenthesized_expression "((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     ))" ( (binary_expression "(puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" (parenthesized_expression "(puVar12[2] != 0)" ( (binary_expression "puVar12[2] != 0" (subscript_expression "puVar12[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" ( (comma_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier = (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier (argument_list "(local_84._4_4_,(undefined4)local_84)" ( (field_expression "local_84._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) , (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" { (expression_statement "local_88 = *puVar12;" (assignment_expression "local_88 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" { (expression_statement "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));" (assignment_expression "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" identifier = (call_expression "CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" identifier (argument_list "((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) , (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) })) (expression_statement "*(uint *)((int)puVar13 + -0x10) = local_60;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = local_60" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" * (cast_expression "(uint *)((int)puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" identifier = identifier) ;) (expression_statement "local_74 = (int *)FUN_002c6110();" (assignment_expression "local_74 = (int *)FUN_002c6110()" identifier = (cast_expression "(int *)FUN_002c6110()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(uint *)((int)puVar13 + -0x10) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" * (cast_expression "(uint *)((int)puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar8 = FUN_002c61a0();" (assignment_expression "uVar8 = FUN_002c61a0()" identifier = (call_expression "FUN_002c61a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar9 = *local_74;" (assignment_expression "iVar9 = *local_74" identifier = (pointer_expression "*local_74" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -8) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -8) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -8)" * (cast_expression "(undefined4 *)((int)puVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -8)" ( (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)puVar13 + -0xc) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0xc) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0xc)" * (cast_expression "(int **)((int)puVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)((int)puVar13 + -0x10) = local_34;" (assignment_expression "*(undefined1 ***)((int)puVar13 + -0x10) = local_34" (pointer_expression "*(undefined1 ***)((int)puVar13 + -0x10)" * (cast_expression "(undefined1 ***)((int)puVar13 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar9 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0x40)" identifier = (pointer_expression "*(code **)(iVar9 + 0x40)" * (cast_expression "(code **)(iVar9 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0x40)" ( (binary_expression "iVar9 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(uint *)((int)puVar13 + -0x14) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x14) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x14)" * (cast_expression "(uint *)((int)puVar13 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_74 = (int *)local_34[0];" (assignment_expression "local_74 = (int *)local_34[0]" identifier = (cast_expression "(int *)local_34[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[0]" identifier [ number_literal ]))) ;) comment (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = *(undefined4 *)(iVar9 + 4);" (assignment_expression "uVar8 = *(undefined4 *)(iVar9 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_84._4_4_" identifier . field_identifier)) ;) (expression_statement "puVar10 = &UNK_003b9056 + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b9056 + unaff_EDI" identifier = (binary_expression "&UNK_003b9056 + unaff_EDI" (pointer_expression "&UNK_003b9056" & identifier) + identifier)) ;) (if_statement "if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" if (parenthesized_expression "((char)local_64 == '\0')" ( (binary_expression "(char)local_64 == '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" { (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3f066d);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3f066d)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3f066d)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3f066d)" ( (binary_expression "unaff_EDI + 0x3f066d" identifier + number_literal) )))) ;) })) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "*(longlong *)((int)puVar13 + -0x20) = local_4c;" (assignment_expression "*(longlong *)((int)puVar13 + -0x20) = local_4c" (pointer_expression "*(longlong *)((int)puVar13 + -0x20)" * (cast_expression "(longlong *)((int)puVar13 + -0x20)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x20)" ( (binary_expression "(int)puVar13 + -0x20" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)puVar13 + -0x24) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0x24) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0x24)" * (cast_expression "(int **)((int)puVar13 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x24)" ( (binary_expression "(int)puVar13 + -0x24" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x28) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x28) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x28)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x28)" ( (binary_expression "(int)puVar13 + -0x28" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)puVar13 + -0x2c) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0x2c) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0x2c)" * (cast_expression "(undefined **)((int)puVar13 + -0x2c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x2c)" ( (binary_expression "(int)puVar13 + -0x2c" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;" (assignment_expression "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b" (pointer_expression "*(int *)((int)puVar13 + -0x30)" * (cast_expression "(int *)((int)puVar13 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x30)" ( (binary_expression "(int)puVar13 + -0x30" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b942b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x34) = local_88;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x34) = local_88" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x34)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x34)" ( (binary_expression "(int)puVar13 + -0x34" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x38)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x38)" ( (binary_expression "(int)puVar13 + -0x38" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" { (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0];" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0]" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) })) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = (uint *)((int)puVar13 + -4);" (assignment_expression "puVar13 = (uint *)((int)puVar13 + -4)" identifier = (cast_expression "(uint *)((int)puVar13 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -4)" ( (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (int *)lVar6;" (assignment_expression "local_4c._0_4_ = (int *)lVar6" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)lVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20)" (field_expression "local_5c._4_4_" identifier . field_identifier) = (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_5c._0_4_ = (undefined4)lVar17;" (assignment_expression "local_5c._0_4_ = (undefined4)lVar17" (field_expression "local_5c._0_4_" identifier . field_identifier) = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" { (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" * (cast_expression "(uint *)((int)local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_;" (assignment_expression "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_" (pointer_expression "*(uint *)((int)local_40 + 0x14)" * (cast_expression "(uint *)((int)local_40 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_5c._4_4_" identifier . field_identifier)) ;) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;" (assignment_expression "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c" (pointer_expression "*(undefined4 *)((int)local_40 + 0x10)" * (cast_expression "(undefined4 *)((int)local_40 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined4)local_5c" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar2 = *(char *)((int)local_40 + 6);" (assignment_expression "cVar2 = *(char *)((int)local_40 + 6)" identifier = (pointer_expression "*(char *)((int)local_40 + 6)" * (cast_expression "(char *)((int)local_40 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 6)" ( (binary_expression "(int)local_40 + 6" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_64 = CONCAT31(local_64._1_3_,cVar2);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,cVar2)" identifier = (call_expression "CONCAT31(local_64._1_3_,cVar2)" identifier (argument_list "(local_64._1_3_,cVar2)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_5c = lVar17;" (assignment_expression "local_5c = lVar17" identifier = identifier) ;) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" identifier = identifier) ;) (if_statement "if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" if (parenthesized_expression "((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "(cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" { (if_statement "if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" if (parenthesized_expression "(iVar9 != 2)" ( (binary_expression "iVar9 != 2" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" { (if_statement "if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" if (parenthesized_expression "(iVar9 != 1)" ( (binary_expression "iVar9 != 1" identifier != number_literal) )) (compound_statement "{\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" { (expression_statement "*(uint **)((int)puVar13 + -4) = local_40;" (assignment_expression "*(uint **)((int)puVar13 + -4) = local_40" (pointer_expression "*(uint **)((int)puVar13 + -4)" * (cast_expression "(uint **)((int)puVar13 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -4)" ( (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;" (assignment_expression "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97" (pointer_expression "*(int *)((int)puVar13 + -8)" * (cast_expression "(int *)((int)puVar13 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -8)" ( (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b7e97" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b" (pointer_expression "*(undefined4 *)((int)puVar13 + -0xc)" * (cast_expression "(undefined4 *)((int)puVar13 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;" (assignment_expression "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI" (pointer_expression "*(undefined **)((int)puVar13 + -0x10)" * (cast_expression "(undefined **)((int)puVar13 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "&UNK_003b901f + unaff_EDI" (pointer_expression "&UNK_003b901f" & identifier) + identifier)) ;) comment (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_000ad9a3" & identifier)) ;) (expression_statement "local_4c = lVar6;" (assignment_expression "local_4c = lVar6" identifier = identifier) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" if (parenthesized_expression "(((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "((char)local_7c != '\0')" ( (binary_expression "(char)local_7c != '\0'" (cast_expression "(char)local_7c" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" { (labeled_statement "LAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;" statement_identifier : (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" * (cast_expression "(uint *)((int)local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "plVar1 = (longlong *)((int)local_40 + 0x10);" (assignment_expression "plVar1 = (longlong *)((int)local_40 + 0x10)" identifier = (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_84._0_4_ = *(undefined4 *)plVar1;" (assignment_expression "local_84._0_4_ = *(undefined4 *)plVar1" (field_expression "local_84._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)plVar1" * (cast_expression "(undefined4 *)plVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);" (assignment_expression "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14)" (field_expression "local_84._4_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)((int)local_40 + 0x14)" * (cast_expression "(undefined4 *)((int)local_40 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)((int)local_40 + 0xc);" (assignment_expression "local_7c = *(uint *)((int)local_40 + 0xc)" identifier = (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);" (assignment_expression "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" identifier = (cast_expression "(int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(lVar5 - *plVar1) >> 0x20)" ( (binary_expression "(ulonglong)(lVar5 - *plVar1) >> 0x20" (call_expression "(ulonglong)(lVar5 - *plVar1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(lVar5 - *plVar1)" ( (binary_expression "lVar5 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier)) ))) >> number_literal) )))) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;" if (parenthesized_expression "(iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)" ( (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)(lVar5 - *plVar1))" ( (binary_expression "local_7c < (uint)(lVar5 - *plVar1)" identifier < (call_expression "(uint)(lVar5 - *plVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar5 - *plVar1)" ( (binary_expression "lVar5 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier)) )))) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (goto_statement "goto LAB_000ad908;" goto statement_identifier ;)) (expression_statement "bVar14 = local_7c < (int *)local_4c;" (assignment_expression "bVar14 = local_7c < (int *)local_4c" identifier = (binary_expression "local_7c < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" identifier = (binary_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" (call_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" identifier (argument_list "(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" ( (field_expression "local_60._1_3_" identifier . field_identifier) , (pointer_expression "*(undefined1 *)((int)local_40 + 4)" * (cast_expression "(undefined1 *)((int)local_40 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 4)" ( (binary_expression "(int)local_40 + 4" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ^ number_literal)) ;) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)puVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;" (assignment_expression "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" identifier = (binary_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" (parenthesized_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_)" ( (binary_expression "local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)bVar14 <= (uint)-local_4c._4_4_" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) <= (binary_expression "(uint)-local_4c._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "local_4c._4_4_" identifier . field_identifier)))) )) & (cast_expression "(byte)local_60" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "uVar11 = (uint)bVar7;" (assignment_expression "uVar11 = (uint)bVar7" identifier = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar5 = *plVar1;" (assignment_expression "lVar5 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" if (parenthesized_expression "((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9))" ( (binary_expression "(bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" ( (comma_expression "lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar17 = lVar17 - *plVar1" identifier = (binary_expression "lVar17 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier))) , (comma_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) , (comma_expression "lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar5 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) , (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)lVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)lVar17)" ( (binary_expression "local_7c < (uint)lVar17" identifier < (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier)))))) ))) )) (compound_statement "{\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" { (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" if (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" ( (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" ( (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" { (expression_statement "uVar11 = (uint)(int *)local_4c >> 8;" (assignment_expression "uVar11 = (uint)(int *)local_4c >> 8" identifier = (binary_expression "(uint)(int *)local_4c >> 8" (cast_expression "(uint)(int *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal)) ;) (expression_statement "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);" (assignment_expression "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)CONCAT31((int3)uVar11,bVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31((int3)uVar11,bVar7)" identifier (argument_list "((int3)uVar11,bVar7)" ( (cast_expression "(int3)uVar11" ( (type_descriptor "int3" type_identifier) ) identifier) , identifier ))))) ;) (expression_statement "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;" (assignment_expression "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2" (pointer_expression "*(int *)((int)puVar13 + -0xc)" * (cast_expression "(int *)((int)puVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b90a2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar11 = (uint)(int *)local_4c & 0xff;" (assignment_expression "uVar11 = (uint)(int *)local_4c & 0xff" identifier = (binary_expression "(uint)(int *)local_4c & 0xff" (cast_expression "(uint)(int *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal)) ;) })) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 2;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 2" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return uVar11;" return identifier ;) })) (goto_statement "goto LAB_000ad6cc;" goto statement_identifier ;) })) (expression_statement "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));" (assignment_expression "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" identifier = (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))))) ;) (if_statement "if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }" if (parenthesized_expression "(iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9)" ( (binary_expression "iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (call_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)puVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "lVar5 = local_84;" (assignment_expression "lVar5 = local_84" identifier = identifier) ;) (labeled_statement "LAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" statement_identifier : (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" if (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" ( (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" ( (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" { (expression_statement "uVar8 = *puVar12;" (assignment_expression "uVar8 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar10 = &UNK_003b905d + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b905d + unaff_EDI" identifier = (binary_expression "&UNK_003b905d + unaff_EDI" (pointer_expression "&UNK_003b905d" & identifier) + identifier)) ;) (if_statement "if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" if (parenthesized_expression "((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44))" ( (binary_expression "(cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)" (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) != local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) != local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) ))) )) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" { (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3b906f);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3b906f)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3b906f)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b906f)" ( (binary_expression "unaff_EDI + 0x3b906f" identifier + number_literal) )))) ;) })) (expression_statement "*(undefined **)((int)puVar13 + -0xc) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0xc) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0xc)" * (cast_expression "(undefined **)((int)puVar13 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_84 = lVar5;" (assignment_expression "local_84 = lVar5" identifier = identifier) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bool can_add_to_stub_group(Stub_control * this, Output_section * o,\n   Input_section * i, bool has14) */\n\nbool __thiscall\nanon_unknown.dwarf_6462d4::Stub_control::can_add_to_stub_group\n          (Stub_control *this,Output_section *o,Input_section *i,bool has14)\n\n{\n  char cVar1;\n  _func_int_varargs **pp_Var2;\n  _func_int_varargs *p_Var3;\n  pointer pcVar4;\n  undefined4 uVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  Input_section *pIVar9;\n  byte bVar10;\n  Relobj *pRVar11;\n  uint uVar12;\n  undefined *puVar13;\n  char *format;\n  Input_section *this_00;\n  undefined4 *puVar14;\n  Stub_control **ppSVar15;\n  int iVar16;\n  int unaff_EDI;\n  bool bVar17;\n  undefined8 uVar18;\n  undefined4 auStack_a8 [2];\n  Stub_control *pSStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  pointer local_84;\n  int local_80;\n  uint local_7c;\n  undefined4 local_78;\n  Relobj *local_74;\n  Relobj *local_70;\n  undefined8 local_6c;\n  Stub_control *local_64;\n  Input_section *local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar18 = __x86_get_pc_thunk_di();\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_64 = this;\n  bVar10 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = this_00;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar10 == 0) goto LAB_000ad952;\n    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    pSStack_90 = *(Stub_control **)(local_44 + 8);\n    lVar6 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;\n    if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }\n    local_4c = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }\n  pIVar9 = local_60;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_6c = lVar6 + local_4c;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  ppSVar15 = (Stub_control **)auStack_8c;\n  local_5c = lVar6;\n  lVar6 = local_6c;\n  if ((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = gold::Output_section::Input_section::relobj(local_60);\n    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);\n    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);\n    local_70 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);\n    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(unaff_EDI + 0x3b9089);\n    gold::gold_warning(format,local_84,local_70);\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = &pSStack_90;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }\n  }\n  pIVar9 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e);\n  puVar14 = *(undefined4 **)local_70;\n  iVar16 = *(int *)((int)local_40 + 8);\n  lVar7 = local_5c;\n  if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    local_88 = *puVar14;\n    local_84 = (pointer)(int *)local_4c;\n    local_80 = local_4c._4_4_;\n    if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }\n    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;\n    local_6c = lVar6;\n    local_74 = gold::Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));\n    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;\n    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));\n    pp_Var2 = (local_74->super_Object)._vptr_Object;\n    *(uint *)((int)ppSVar15 + -8) = uVar12;\n    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;\n    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;\n    p_Var3 = pp_Var2[0x10];\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;\n    (*p_Var3)();\n    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;\n    local_74 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;\n    pRVar11 = gold::Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));\n    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    *(int *)((int)ppSVar15 + -0x14) = local_80;\n    puVar13 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(pointer *)((int)ppSVar15 + -0x18) = local_84;\n    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;\n    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;\n    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;\n    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;\n    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;\n    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;\n    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));\n    lVar7 = local_5c;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);\n    iVar16 = *(int *)((int)local_40 + 8);\n  }\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar7;\n  if (iVar16 == 0) {\n    *(Input_section **)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return true;\n  }\n  cVar1 = *(char *)((int)local_40 + 6);\n  local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1);\n  local_5c = lVar7;\n  local_6c = lVar6;\n  if ((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }\n  }\n  puVar14 = *(undefined4 **)local_70;\n  local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return false;\n}\n\n" comment (function_definition "bool __thiscall\nanon_unknown.dwarf_6462d4::Stub_control::can_add_to_stub_group\n          (Stub_control *this,Output_section *o,Input_section *i,bool has14)\n\n{\n  char cVar1;\n  _func_int_varargs **pp_Var2;\n  _func_int_varargs *p_Var3;\n  pointer pcVar4;\n  undefined4 uVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  Input_section *pIVar9;\n  byte bVar10;\n  Relobj *pRVar11;\n  uint uVar12;\n  undefined *puVar13;\n  char *format;\n  Input_section *this_00;\n  undefined4 *puVar14;\n  Stub_control **ppSVar15;\n  int iVar16;\n  int unaff_EDI;\n  bool bVar17;\n  undefined8 uVar18;\n  undefined4 auStack_a8 [2];\n  Stub_control *pSStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  pointer local_84;\n  int local_80;\n  uint local_7c;\n  undefined4 local_78;\n  Relobj *local_74;\n  Relobj *local_70;\n  undefined8 local_6c;\n  Stub_control *local_64;\n  Input_section *local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar18 = __x86_get_pc_thunk_di();\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_64 = this;\n  bVar10 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = this_00;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar10 == 0) goto LAB_000ad952;\n    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    pSStack_90 = *(Stub_control **)(local_44 + 8);\n    lVar6 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;\n    if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }\n    local_4c = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }\n  pIVar9 = local_60;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_6c = lVar6 + local_4c;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  ppSVar15 = (Stub_control **)auStack_8c;\n  local_5c = lVar6;\n  lVar6 = local_6c;\n  if ((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = gold::Output_section::Input_section::relobj(local_60);\n    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);\n    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);\n    local_70 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);\n    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(unaff_EDI + 0x3b9089);\n    gold::gold_warning(format,local_84,local_70);\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = &pSStack_90;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }\n  }\n  pIVar9 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e);\n  puVar14 = *(undefined4 **)local_70;\n  iVar16 = *(int *)((int)local_40 + 8);\n  lVar7 = local_5c;\n  if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    local_88 = *puVar14;\n    local_84 = (pointer)(int *)local_4c;\n    local_80 = local_4c._4_4_;\n    if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }\n    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;\n    local_6c = lVar6;\n    local_74 = gold::Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));\n    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;\n    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));\n    pp_Var2 = (local_74->super_Object)._vptr_Object;\n    *(uint *)((int)ppSVar15 + -8) = uVar12;\n    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;\n    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;\n    p_Var3 = pp_Var2[0x10];\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;\n    (*p_Var3)();\n    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;\n    local_74 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;\n    pRVar11 = gold::Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));\n    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    *(int *)((int)ppSVar15 + -0x14) = local_80;\n    puVar13 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(pointer *)((int)ppSVar15 + -0x18) = local_84;\n    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;\n    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;\n    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;\n    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;\n    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;\n    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;\n    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));\n    lVar7 = local_5c;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);\n    iVar16 = *(int *)((int)local_40 + 8);\n  }\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar7;\n  if (iVar16 == 0) {\n    *(Input_section **)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return true;\n  }\n  cVar1 = *(char *)((int)local_40 + 6);\n  local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1);\n  local_5c = lVar7;\n  local_6c = lVar6;\n  if ((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }\n  }\n  puVar14 = *(undefined4 **)local_70;\n  local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_6462d4::Stub_control::" identifier . identifier : : identifier : :) (function_declarator "can_add_to_stub_group\n          (Stub_control *this,Output_section *o,Input_section *i,bool has14)" identifier (parameter_list "(Stub_control *this,Output_section *o,Input_section *i,bool has14)" ( (parameter_declaration "Stub_control *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *o" type_identifier (pointer_declarator "*o" * identifier)) , (parameter_declaration "Input_section *i" type_identifier (pointer_declarator "*i" * identifier)) , (parameter_declaration "bool has14" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  _func_int_varargs **pp_Var2;\n  _func_int_varargs *p_Var3;\n  pointer pcVar4;\n  undefined4 uVar5;\n  longlong lVar6;\n  longlong lVar7;\n  longlong lVar8;\n  Input_section *pIVar9;\n  byte bVar10;\n  Relobj *pRVar11;\n  uint uVar12;\n  undefined *puVar13;\n  char *format;\n  Input_section *this_00;\n  undefined4 *puVar14;\n  Stub_control **ppSVar15;\n  int iVar16;\n  int unaff_EDI;\n  bool bVar17;\n  undefined8 uVar18;\n  undefined4 auStack_a8 [2];\n  Stub_control *pSStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  pointer local_84;\n  int local_80;\n  uint local_7c;\n  undefined4 local_78;\n  Relobj *local_74;\n  Relobj *local_70;\n  undefined8 local_6c;\n  Stub_control *local_64;\n  Input_section *local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar18 = __x86_get_pc_thunk_di();\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_64 = this;\n  bVar10 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = this_00;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar10 == 0) goto LAB_000ad952;\n    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    pSStack_90 = *(Stub_control **)(local_44 + 8);\n    lVar6 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;\n    if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }\n    local_4c = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }\n  pIVar9 = local_60;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_6c = lVar6 + local_4c;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  ppSVar15 = (Stub_control **)auStack_8c;\n  local_5c = lVar6;\n  lVar6 = local_6c;\n  if ((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = gold::Output_section::Input_section::relobj(local_60);\n    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);\n    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);\n    local_70 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);\n    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(unaff_EDI + 0x3b9089);\n    gold::gold_warning(format,local_84,local_70);\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = &pSStack_90;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }\n  }\n  pIVar9 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e);\n  puVar14 = *(undefined4 **)local_70;\n  iVar16 = *(int *)((int)local_40 + 8);\n  lVar7 = local_5c;\n  if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    local_88 = *puVar14;\n    local_84 = (pointer)(int *)local_4c;\n    local_80 = local_4c._4_4_;\n    if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }\n    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;\n    local_6c = lVar6;\n    local_74 = gold::Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));\n    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;\n    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));\n    pp_Var2 = (local_74->super_Object)._vptr_Object;\n    *(uint *)((int)ppSVar15 + -8) = uVar12;\n    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;\n    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;\n    p_Var3 = pp_Var2[0x10];\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;\n    (*p_Var3)();\n    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;\n    local_74 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;\n    pRVar11 = gold::Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));\n    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    *(int *)((int)ppSVar15 + -0x14) = local_80;\n    puVar13 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(pointer *)((int)ppSVar15 + -0x18) = local_84;\n    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;\n    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;\n    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;\n    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;\n    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;\n    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;\n    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));\n    lVar7 = local_5c;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);\n    iVar16 = *(int *)((int)local_40 + 8);\n  }\n  local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_6c._0_4_ = (uint)lVar6;\n  local_44 = (int)((ulonglong)uVar18 >> 0x20);\n  local_40 = (uint *)uVar18;\n  local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar7;\n  if (iVar16 == 0) {\n    *(Input_section **)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return true;\n  }\n  cVar1 = *(char *)((int)local_40 + 6);\n  local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1);\n  local_5c = lVar7;\n  local_6c = lVar6;\n  if ((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }\n  }\n  puVar14 = *(undefined4 **)local_70;\n  local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return false;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "_func_int_varargs **pp_Var2;" type_identifier (pointer_declarator "**pp_Var2" * (pointer_declarator "*pp_Var2" * identifier)) ;) (declaration "_func_int_varargs *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "longlong lVar7;" type_identifier identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (declaration "Input_section *pIVar9;" type_identifier (pointer_declarator "*pIVar9" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "Relobj *pRVar11;" type_identifier (pointer_declarator "*pRVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Input_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "Stub_control **ppSVar15;" type_identifier (pointer_declarator "**ppSVar15" * (pointer_declarator "*ppSVar15" * identifier)) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "undefined8 uVar18;" type_identifier identifier ;) (declaration "undefined4 auStack_a8 [2];" type_identifier (array_declarator "auStack_a8 [2]" identifier [ number_literal ]) ;) (declaration "Stub_control *pSStack_90;" type_identifier (pointer_declarator "*pSStack_90" * identifier) ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "pointer local_84;" type_identifier identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "Relobj *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "Relobj *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined8 local_6c;" type_identifier identifier ;) (declaration "Stub_control *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "Input_section *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined8 local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "uVar18 = __x86_get_pc_thunk_di();" (assignment_expression "uVar18 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_44 = (int)((ulonglong)uVar18 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar18 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar18 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar18;" (assignment_expression "local_40 = (uint *)uVar18" identifier = (cast_expression "(uint *)uVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_64 = this;" (assignment_expression "local_64 = this" identifier = identifier) ;) (expression_statement "bVar10 = *(byte *)(local_44 + 0x1c) & 1;" (assignment_expression "bVar10 = *(byte *)(local_44 + 0x1c) & 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) & 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "local_60 = this_00;" (assignment_expression "local_60 = this_00" identifier = identifier) ;) (if_statement "if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar10 == 0) goto LAB_000ad952;\n    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    pSStack_90 = *(Stub_control **)(local_44 + 8);\n    lVar6 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;\n    if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }\n    local_4c = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }" if (parenthesized_expression "((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd))" ( (binary_expression "(*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)" (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 6)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 6" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 0xd)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 0xd" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    if (bVar10 == 0) goto LAB_000ad952;\n    bVar10 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    pSStack_90 = *(Stub_control **)(local_44 + 8);\n    lVar6 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;\n    if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }\n    local_4c = *(longlong *)(local_44 + 0xc);\n  }" { (if_statement "if (bVar10 == 0) goto LAB_000ad952;" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000ad952;" goto statement_identifier ;)) (expression_statement "bVar10 = *(byte *)(local_44 + 0x1c) >> 1;" (assignment_expression "bVar10 = *(byte *)(local_44 + 0x1c) >> 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) >> 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "local_5c._0_4_ = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_5c._0_4_ = *(undefined4 *)(local_44 + 4)" (field_expression "local_5c._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "pSStack_90 = *(Stub_control **)(local_44 + 8);" (assignment_expression "pSStack_90 = *(Stub_control **)(local_44 + 8)" identifier = (pointer_expression "*(Stub_control **)(local_44 + 8)" * (cast_expression "(Stub_control **)(local_44 + 8)" ( (type_descriptor "Stub_control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(longlong *)(local_44 + 4);" (assignment_expression "lVar6 = *(longlong *)(local_44 + 4)" identifier = (pointer_expression "*(longlong *)(local_44 + 4)" * (cast_expression "(longlong *)(local_44 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01;" (assignment_expression "local_7c = CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01" identifier = (binary_expression "CONCAT31(local_7c._1_3_,bVar10) & 0xffffff01" (call_expression "CONCAT31(local_7c._1_3_,bVar10)" identifier (argument_list "(local_7c._1_3_,bVar10)" ( (field_expression "local_7c._1_3_" identifier . field_identifier) , identifier ))) & number_literal)) ;) (if_statement "if ((bVar10 & 1) == 0) {\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }" if (parenthesized_expression "((bVar10 & 1) == 0)" ( (binary_expression "(bVar10 & 1) == 0" (parenthesized_expression "(bVar10 & 1)" ( (binary_expression "bVar10 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_5c._4_4_ = pSStack_90;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);\n    }" { (expression_statement "local_5c._4_4_ = pSStack_90;" (assignment_expression "local_5c._4_4_ = pSStack_90" (field_expression "local_5c._4_4_" identifier . field_identifier) = identifier) ;) comment (labeled_statement "gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI);" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI)" identifier (argument_list "((char *)(unaff_EDI + 0x39feb4),0xcf,&UNK_003b85d3 + unaff_EDI)" ( (cast_expression "(char *)(unaff_EDI + 0x39feb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x39feb4)" ( (binary_expression "unaff_EDI + 0x39feb4" identifier + number_literal) ))) , number_literal , (binary_expression "&UNK_003b85d3 + unaff_EDI" (pointer_expression "&UNK_003b85d3" & identifier) + identifier) ))) ;)) })) (expression_statement "local_4c = *(longlong *)(local_44 + 0xc);" (assignment_expression "local_4c = *(longlong *)(local_44 + 0xc)" identifier = (pointer_expression "*(longlong *)(local_44 + 0xc)" * (cast_expression "(longlong *)(local_44 + 0xc)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0xc)" ( (binary_expression "local_44 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }" else (compound_statement "{\n    if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    pRVar11 = gold::Output_section::Input_section::relobj(this_00);\n    local_4c = CONCAT44(local_4c._4_4_,pRVar11);\n    uVar12 = gold::Output_section::Input_section::shndx(this_00);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    local_4c = gold::Output_section::Input_section::data_size(this_00);\n    uVar18 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar6 = local_5c;\n  }" { (if_statement "if (bVar10 == 0) {\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000ad952:\n      pSStack_90 = this;\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));\n    }" { (labeled_statement "LAB_000ad952:\n      pSStack_90 = this;" statement_identifier : (expression_statement "pSStack_90 = this;" (assignment_expression "pSStack_90 = this" identifier = identifier) ;)) comment (labeled_statement "gold::do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb))" identifier (argument_list "((char *)(unaff_EDI + 0x39feb4),0xc5,(char *)(unaff_EDI + 0x3b84cb))" ( (cast_expression "(char *)(unaff_EDI + 0x39feb4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x39feb4)" ( (binary_expression "unaff_EDI + 0x39feb4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x3b84cb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b84cb)" ( (binary_expression "unaff_EDI + 0x3b84cb" identifier + number_literal) ))) ))) ;)) })) (expression_statement "local_50 = *(undefined4 *)(local_44 + 8);" (assignment_expression "local_50 = *(undefined4 *)(local_44 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 8)" * (cast_expression "(undefined4 *)(local_44 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_54 = *(undefined4 *)(local_44 + 4)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (ERROR "pRVar11 = gold::" (assignment_expression "pRVar11 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::relobj(this_00);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::relobj(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "relobj(this_00);" (call_expression "relobj(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;))) (expression_statement "local_4c = CONCAT44(local_4c._4_4_,pRVar11);" (assignment_expression "local_4c = CONCAT44(local_4c._4_4_,pRVar11)" identifier = (call_expression "CONCAT44(local_4c._4_4_,pRVar11)" identifier (argument_list "(local_4c._4_4_,pRVar11)" ( (field_expression "local_4c._4_4_" identifier . field_identifier) , identifier )))) ;) (ERROR "uVar12 = gold::" (assignment_expression "uVar12 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::shndx(this_00);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::shndx(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "shndx(this_00);" (call_expression "shndx(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;))) (expression_statement "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12);" (assignment_expression "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12)" identifier = (call_expression "(**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar12)" (parenthesized_expression "(**(code **)(*(int *)local_4c + 0x68))" ( (pointer_expression "**(code **)(*(int *)local_4c + 0x68)" * (pointer_expression "*(code **)(*(int *)local_4c + 0x68)" * (cast_expression "(code **)(*(int *)local_4c + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_4c + 0x68)" ( (binary_expression "*(int *)local_4c + 0x68" (pointer_expression "*(int *)local_4c" * (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_4c,uVar12)" ( (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "local_5c = local_5c + CONCAT44(local_50,local_54);" (assignment_expression "local_5c = local_5c + CONCAT44(local_50,local_54)" identifier = (binary_expression "local_5c + CONCAT44(local_50,local_54)" identifier + (call_expression "CONCAT44(local_50,local_54)" identifier (argument_list "(local_50,local_54)" ( identifier , identifier ))))) ;) (ERROR "local_4c = gold::" (assignment_expression "local_4c = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::data_size(this_00);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::data_size(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "data_size(this_00);" (call_expression "data_size(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;))) (expression_statement "uVar18 = CONCAT44(local_44,local_40);" (assignment_expression "uVar18 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "local_7c = local_7c & 0xffffff00;" (assignment_expression "local_7c = local_7c & 0xffffff00" identifier = (binary_expression "local_7c & 0xffffff00" identifier & number_literal)) ;) (expression_statement "lVar6 = local_5c;" (assignment_expression "lVar6 = local_5c" identifier = identifier) ;) }))) (expression_statement "pIVar9 = local_60;" (assignment_expression "pIVar9 = local_60" identifier = identifier) ;) (expression_statement "local_44 = (int)((ulonglong)uVar18 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar18 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar18 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar18;" (assignment_expression "local_40 = (uint *)uVar18" identifier = (cast_expression "(uint *)uVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_6c = lVar6 + local_4c;" (assignment_expression "local_6c = lVar6 + local_4c" identifier = (binary_expression "lVar6 + local_4c" identifier + identifier)) ;) (expression_statement "local_54 = *local_40;" (assignment_expression "local_54 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;) (if_statement "if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" { (expression_statement "local_54 = local_54 >> 10;" (assignment_expression "local_54 = local_54 >> 10" identifier = (binary_expression "local_54 >> 10" identifier >> number_literal)) ;) (expression_statement "local_40[3] = local_54;" (assignment_expression "local_40[3] = local_54" (subscript_expression "local_40[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "ppSVar15 = (Stub_control **)auStack_8c;" (assignment_expression "ppSVar15 = (Stub_control **)auStack_8c" identifier = (cast_expression "(Stub_control **)auStack_8c" ( (type_descriptor "Stub_control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "local_5c = lVar6;" (assignment_expression "local_5c = lVar6" identifier = identifier) ;) (expression_statement "lVar6 = local_6c;" (assignment_expression "lVar6 = local_6c" identifier = identifier) ;) (if_statement "if ((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = gold::Output_section::Input_section::relobj(local_60);\n    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);\n    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);\n    local_70 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);\n    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(unaff_EDI + 0x3b9089);\n    gold::gold_warning(format,local_84,local_70);\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = &pSStack_90;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }\n  }" if (parenthesized_expression "((local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0'))" ( (binary_expression "(local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)) &&\n     (ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" (parenthesized_expression "(local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c))" ( (binary_expression "local_4c._4_4_ != 0 || (uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)" (binary_expression "local_4c._4_4_ != 0" (field_expression "local_4c._4_4_" identifier . field_identifier) != number_literal) || (binary_expression "(uint)-local_4c._4_4_ < (uint)(local_54 < (int *)local_4c)" (binary_expression "(uint)-local_4c._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "local_4c._4_4_" identifier . field_identifier)) < (call_expression "(uint)(local_54 < (int *)local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_54 < (int *)local_4c)" ( (binary_expression "local_54 < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ))))) )) && (parenthesized_expression "(ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" ( (comma_expression "ppSVar15 = (Stub_control **)auStack_8c, *(char *)((int)local_40 + 5) == '\0'" (assignment_expression "ppSVar15 = (Stub_control **)auStack_8c" identifier = (cast_expression "(Stub_control **)auStack_8c" ( (type_descriptor "Stub_control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (binary_expression "*(char *)((int)local_40 + 5) == '\0'" (pointer_expression "*(char *)((int)local_40 + 5)" * (cast_expression "(char *)((int)local_40 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 5)" ( (binary_expression "(int)local_40 + 5" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    local_70 = gold::Output_section::Input_section::relobj(local_60);\n    uVar12 = gold::Output_section::Input_section::shndx(pIVar9);\n    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);\n    local_70 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */\n    pRVar11 = gold::Output_section::Input_section::relobj(pIVar9);\n    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    format = (char *)gettext(unaff_EDI + 0x3b9089);\n    gold::gold_warning(format,local_84,local_70);\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = &pSStack_90;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }\n  }" { (ERROR "local_70 = gold::" (assignment_expression "local_70 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::relobj(local_60);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::relobj(local_60);" statement_identifier : (ERROR ":" :) (expression_statement "relobj(local_60);" (call_expression "relobj(local_60)" identifier (argument_list "(local_60)" ( identifier ))) ;))) (ERROR "uVar12 = gold::" (assignment_expression "uVar12 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::shndx(pIVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::shndx(pIVar9);" statement_identifier : (ERROR ":" :) (expression_statement "shndx(pIVar9);" (call_expression "shndx(pIVar9)" identifier (argument_list "(pIVar9)" ( identifier ))) ;))) (expression_statement "(*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);" (call_expression "(*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12)" (parenthesized_expression "(*(local_70->super_Object)._vptr_Object[0x10])" ( (pointer_expression "*(local_70->super_Object)._vptr_Object[0x10]" * (subscript_expression "(local_70->super_Object)._vptr_Object[0x10]" (field_expression "(local_70->super_Object)._vptr_Object" (parenthesized_expression "(local_70->super_Object)" ( (field_expression "local_70->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(local_34,local_70,uVar12)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_70 = (Relobj *)local_34[0];" (assignment_expression "local_70 = (Relobj *)local_34[0]" identifier = (cast_expression "(Relobj *)local_34[0]" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[0]" identifier [ number_literal ]))) ;) comment (ERROR "pRVar11 = gold::" (assignment_expression "pRVar11 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::relobj(pIVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::relobj(pIVar9);" statement_identifier : (ERROR ":" :) (expression_statement "relobj(pIVar9);" (call_expression "relobj(pIVar9)" identifier (argument_list "(pIVar9)" ( identifier ))) ;))) (expression_statement "local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;" (assignment_expression "local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(pRVar11->super_Object).name_._M_dataplus._M_p" (field_expression "(pRVar11->super_Object).name_._M_dataplus" (field_expression "(pRVar11->super_Object).name_" (parenthesized_expression "(pRVar11->super_Object)" ( (field_expression "pRVar11->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext(unaff_EDI + 0x3b9089);" (assignment_expression "format = (char *)gettext(unaff_EDI + 0x3b9089)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x3b9089)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x3b9089)" identifier (argument_list "(unaff_EDI + 0x3b9089)" ( (binary_expression "unaff_EDI + 0x3b9089" identifier + number_literal) ))))) ;) (labeled_statement "gold::gold_warning(format,local_84,local_70);" statement_identifier : (ERROR ":" :) (expression_statement "gold_warning(format,local_84,local_70);" (call_expression "gold_warning(format,local_84,local_70)" identifier (argument_list "(format,local_84,local_70)" ( identifier , identifier , identifier ))) ;)) (expression_statement "uVar18 = CONCAT44(local_44,local_40);" (assignment_expression "uVar18 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "ppSVar15 = &pSStack_90;" (assignment_expression "ppSVar15 = &pSStack_90" identifier = (pointer_expression "&pSStack_90" & identifier)) ;) (expression_statement "lVar6 = local_6c;" (assignment_expression "lVar6 = local_6c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      operator_delete(local_34[0]);\n      uVar18 = CONCAT44(local_44,local_40);\n      ppSVar15 = &pSStack_90;\n      lVar6 = local_6c;\n    }" { (expression_statement "operator_delete(local_34[0]);" (call_expression "operator_delete(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar18 = CONCAT44(local_44,local_40);" (assignment_expression "uVar18 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "ppSVar15 = &pSStack_90;" (assignment_expression "ppSVar15 = &pSStack_90" identifier = (pointer_expression "&pSStack_90" & identifier)) ;) (expression_statement "lVar6 = local_6c;" (assignment_expression "lVar6 = local_6c" identifier = identifier) ;) })) })) (expression_statement "pIVar9 = local_60;" (assignment_expression "pIVar9 = local_60" identifier = identifier) ;) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar6;" (assignment_expression "local_6c._0_4_ = (uint)lVar6" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar18 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar18 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar18 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar18;" (assignment_expression "local_40 = (uint *)uVar18" identifier = (cast_expression "(uint *)uVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e);" (assignment_expression "local_70 = (Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e)" identifier = (cast_expression "(Relobj *)(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e)" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e)" ( (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar14 = *(undefined4 **)local_70;" (assignment_expression "puVar14 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar16 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar16 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar7 = local_5c;" (assignment_expression "lVar7 = local_5c" identifier = identifier) ;) (if_statement "if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    local_88 = *puVar14;\n    local_84 = (pointer)(int *)local_4c;\n    local_80 = local_4c._4_4_;\n    if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }\n    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;\n    local_6c = lVar6;\n    local_74 = gold::Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));\n    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;\n    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));\n    pp_Var2 = (local_74->super_Object)._vptr_Object;\n    *(uint *)((int)ppSVar15 + -8) = uVar12;\n    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;\n    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;\n    p_Var3 = pp_Var2[0x10];\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;\n    (*p_Var3)();\n    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;\n    local_74 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;\n    pRVar11 = gold::Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));\n    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    *(int *)((int)ppSVar15 + -0x14) = local_80;\n    puVar13 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(pointer *)((int)ppSVar15 + -0x18) = local_84;\n    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;\n    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;\n    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;\n    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;\n    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;\n    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;\n    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));\n    lVar7 = local_5c;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);\n    iVar16 = *(int *)((int)local_40 + 8);\n  }" if (parenthesized_expression "((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0))" ( (binary_expression "(puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)" (parenthesized_expression "(puVar14[2] != 0)" ( (binary_expression "puVar14[2] != 0" (subscript_expression "puVar14[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar14 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar14 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar14 + 5) & 0x40" (pointer_expression "*(byte *)(puVar14 + 5)" * (cast_expression "(byte *)(puVar14 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 5)" ( (binary_expression "puVar14 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    local_88 = *puVar14;\n    local_84 = (pointer)(int *)local_4c;\n    local_80 = local_4c._4_4_;\n    if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }\n    *(Input_section **)((int)ppSVar15 + -0x10) = local_60;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;\n    local_6c = lVar6;\n    local_74 = gold::Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));\n    *(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;\n    uVar12 = gold::Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));\n    pp_Var2 = (local_74->super_Object)._vptr_Object;\n    *(uint *)((int)ppSVar15 + -8) = uVar12;\n    *(Relobj **)((int)ppSVar15 + -0xc) = local_74;\n    *(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;\n    p_Var3 = pp_Var2[0x10];\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;\n    (*p_Var3)();\n    *(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;\n    local_74 = (Relobj *)local_34[0];\n                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */\n    *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;\n    pRVar11 = gold::Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));\n    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;\n    *(int *)((int)ppSVar15 + -0x14) = local_80;\n    puVar13 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(pointer *)((int)ppSVar15 + -0x18) = local_84;\n    *(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;\n    *(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;\n    *(Relobj **)((int)ppSVar15 + -0x24) = local_74;\n    *(pointer *)((int)ppSVar15 + -0x28) = pcVar4;\n    *(undefined **)((int)ppSVar15 + -0x2c) = puVar13;\n    *(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)ppSVar15 + -0x34) = local_88;\n    *(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));\n    lVar7 = local_5c;\n    lVar6 = local_6c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }\n    uVar18 = CONCAT44(local_44,local_40);\n    ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);\n    iVar16 = *(int *)((int)local_40 + 8);\n  }" { (expression_statement "local_88 = *puVar14;" (assignment_expression "local_88 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "local_84 = (pointer)(int *)local_4c;" (assignment_expression "local_84 = (pointer)(int *)local_4c" identifier = (cast_expression "(pointer)(int *)local_4c" ( (type_descriptor "pointer" type_identifier) ) (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = local_4c._4_4_;" (assignment_expression "local_80 = local_4c._4_4_" identifier = (field_expression "local_4c._4_4_" identifier . field_identifier)) ;) (if_statement "if (iVar16 != 0) {\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));\n      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    }" { (expression_statement "local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10));" (assignment_expression "local_84 = (pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10))" identifier = (call_expression "(pointer)((uint)local_6c - *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) (expression_statement "local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));" (assignment_expression "local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" identifier = (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                 (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))))) ;) })) (expression_statement "*(Input_section **)((int)ppSVar15 + -0x10) = local_60;" (assignment_expression "*(Input_section **)((int)ppSVar15 + -0x10) = local_60" (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x10)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad618" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = lVar6;" (assignment_expression "local_6c = lVar6" identifier = identifier) ;) (ERROR "local_74 = gold::" (assignment_expression "local_74 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));" statement_identifier : (ERROR ":" :) (expression_statement "relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10));" (call_expression "relobj\n                         (*(Input_section **)((int)ppSVar15 + -0x10))" identifier (argument_list "(*(Input_section **)((int)ppSVar15 + -0x10))" ( (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x10)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "*(Input_section **)((int)ppSVar15 + -0x10) = pIVar9;" (assignment_expression "*(Input_section **)((int)ppSVar15 + -0x10) = pIVar9" (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x10)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad623" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (ERROR "uVar12 = gold::" (assignment_expression "uVar12 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::shndx(*(Input_section **)((int)ppSVar15 + -0x10));" statement_identifier : (ERROR ":" :) (expression_statement "shndx(*(Input_section **)((int)ppSVar15 + -0x10));" (call_expression "shndx(*(Input_section **)((int)ppSVar15 + -0x10))" identifier (argument_list "(*(Input_section **)((int)ppSVar15 + -0x10))" ( (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x10)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "pp_Var2 = (local_74->super_Object)._vptr_Object;" (assignment_expression "pp_Var2 = (local_74->super_Object)._vptr_Object" identifier = (field_expression "(local_74->super_Object)._vptr_Object" (parenthesized_expression "(local_74->super_Object)" ( (field_expression "local_74->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(uint *)((int)ppSVar15 + -8) = uVar12;" (assignment_expression "*(uint *)((int)ppSVar15 + -8) = uVar12" (pointer_expression "*(uint *)((int)ppSVar15 + -8)" * (cast_expression "(uint *)((int)ppSVar15 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -8)" ( (binary_expression "(int)ppSVar15 + -8" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Relobj **)((int)ppSVar15 + -0xc) = local_74;" (assignment_expression "*(Relobj **)((int)ppSVar15 + -0xc) = local_74" (pointer_expression "*(Relobj **)((int)ppSVar15 + -0xc)" * (cast_expression "(Relobj **)((int)ppSVar15 + -0xc)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)((int)ppSVar15 + -0x10) = local_34;" (assignment_expression "*(undefined1 ***)((int)ppSVar15 + -0x10) = local_34" (pointer_expression "*(undefined1 ***)((int)ppSVar15 + -0x10)" * (cast_expression "(undefined1 ***)((int)ppSVar15 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "p_Var3 = pp_Var2[0x10];" (assignment_expression "p_Var3 = pp_Var2[0x10]" identifier = (subscript_expression "pp_Var2[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad636" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*p_Var3)();" (call_expression "(*p_Var3)()" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(Input_section **)((int)ppSVar15 + -0x14) = pIVar9;" (assignment_expression "*(Input_section **)((int)ppSVar15 + -0x14) = pIVar9" (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x14)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x14)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_74 = (Relobj *)local_34[0];" (assignment_expression "local_74 = (Relobj *)local_34[0]" identifier = (cast_expression "(Relobj *)local_34[0]" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[0]" identifier [ number_literal ]))) ;) comment (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x18) = 0xad642" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x18)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x18)" ( (binary_expression "(int)ppSVar15 + -0x18" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (ERROR "pRVar11 = gold::" (assignment_expression "pRVar11 = gold" identifier = identifier) : :) (labeled_statement "Output_section::Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));" statement_identifier : (ERROR ":" :) (labeled_statement "Input_section::relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));" statement_identifier : (ERROR ":" :) (expression_statement "relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14));" (call_expression "relobj\n                        (*(Input_section **)((int)ppSVar15 + -0x14))" identifier (argument_list "(*(Input_section **)((int)ppSVar15 + -0x14))" ( (pointer_expression "*(Input_section **)((int)ppSVar15 + -0x14)" * (cast_expression "(Input_section **)((int)ppSVar15 + -0x14)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;" (assignment_expression "pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p" identifier = (field_expression "(pRVar11->super_Object).name_._M_dataplus._M_p" (field_expression "(pRVar11->super_Object).name_._M_dataplus" (field_expression "(pRVar11->super_Object).name_" (parenthesized_expression "(pRVar11->super_Object)" ( (field_expression "pRVar11->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "*(int *)((int)ppSVar15 + -0x14) = local_80;" (assignment_expression "*(int *)((int)ppSVar15 + -0x14) = local_80" (pointer_expression "*(int *)((int)ppSVar15 + -0x14)" * (cast_expression "(int *)((int)ppSVar15 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar13 = &UNK_003b9056 + unaff_EDI;" (assignment_expression "puVar13 = &UNK_003b9056 + unaff_EDI" identifier = (binary_expression "&UNK_003b9056 + unaff_EDI" (pointer_expression "&UNK_003b9056" & identifier) + identifier)) ;) (if_statement "if ((char)local_64 == '\0') {\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" if (parenthesized_expression "((char)local_64 == '\0')" ( (binary_expression "(char)local_64 == '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar13 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" { (expression_statement "puVar13 = (undefined *)(unaff_EDI + 0x3f066d);" (assignment_expression "puVar13 = (undefined *)(unaff_EDI + 0x3f066d)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3f066d)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3f066d)" ( (binary_expression "unaff_EDI + 0x3f066d" identifier + number_literal) )))) ;) })) (expression_statement "*(pointer *)((int)ppSVar15 + -0x18) = local_84;" (assignment_expression "*(pointer *)((int)ppSVar15 + -0x18) = local_84" (pointer_expression "*(pointer *)((int)ppSVar15 + -0x18)" * (cast_expression "(pointer *)((int)ppSVar15 + -0x18)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x18)" ( (binary_expression "(int)ppSVar15 + -0x18" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_;" (assignment_expression "*(int *)((int)ppSVar15 + -0x1c) = local_4c._4_4_" (pointer_expression "*(int *)((int)ppSVar15 + -0x1c)" * (cast_expression "(int *)((int)ppSVar15 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x1c)" ( (binary_expression "(int)ppSVar15 + -0x1c" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_4c._4_4_" identifier . field_identifier)) ;) (expression_statement "*(int **)((int)ppSVar15 + -0x20) = (int *)local_4c;" (assignment_expression "*(int **)((int)ppSVar15 + -0x20) = (int *)local_4c" (pointer_expression "*(int **)((int)ppSVar15 + -0x20)" * (cast_expression "(int **)((int)ppSVar15 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x20)" ( (binary_expression "(int)ppSVar15 + -0x20" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(Relobj **)((int)ppSVar15 + -0x24) = local_74;" (assignment_expression "*(Relobj **)((int)ppSVar15 + -0x24) = local_74" (pointer_expression "*(Relobj **)((int)ppSVar15 + -0x24)" * (cast_expression "(Relobj **)((int)ppSVar15 + -0x24)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x24)" ( (binary_expression "(int)ppSVar15 + -0x24" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(pointer *)((int)ppSVar15 + -0x28) = pcVar4;" (assignment_expression "*(pointer *)((int)ppSVar15 + -0x28) = pcVar4" (pointer_expression "*(pointer *)((int)ppSVar15 + -0x28)" * (cast_expression "(pointer *)((int)ppSVar15 + -0x28)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x28)" ( (binary_expression "(int)ppSVar15 + -0x28" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)ppSVar15 + -0x2c) = puVar13;" (assignment_expression "*(undefined **)((int)ppSVar15 + -0x2c) = puVar13" (pointer_expression "*(undefined **)((int)ppSVar15 + -0x2c)" * (cast_expression "(undefined **)((int)ppSVar15 + -0x2c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x2c)" ( (binary_expression "(int)ppSVar15 + -0x2c" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b;" (assignment_expression "*(int *)((int)ppSVar15 + -0x30) = unaff_EDI + 0x3b942b" (pointer_expression "*(int *)((int)ppSVar15 + -0x30)" * (cast_expression "(int *)((int)ppSVar15 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x30)" ( (binary_expression "(int)ppSVar15 + -0x30" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b942b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x34) = local_88;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x34) = local_88" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x34)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x34)" ( (binary_expression "(int)ppSVar15 + -0x34" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x38) = 0xad67c" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x38)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x38)" ( (binary_expression "(int)ppSVar15 + -0x38" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));" statement_identifier : (ERROR ":" :) (labeled_statement "Errors::debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));" statement_identifier : (ERROR ":" :) (expression_statement "debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));" (call_expression "debug(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30))" identifier (argument_list "(*(Errors **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30))" ( (pointer_expression "*(Errors **)((int)ppSVar15 + -0x34)" * (cast_expression "(Errors **)((int)ppSVar15 + -0x34)" ( (type_descriptor "Errors **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x34)" ( (binary_expression "(int)ppSVar15 + -0x34" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppSVar15 + -0x30)" * (cast_expression "(char **)((int)ppSVar15 + -0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x30)" ( (binary_expression "(int)ppSVar15 + -0x30" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "lVar7 = local_5c;" (assignment_expression "lVar7 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_6c;" (assignment_expression "lVar6 = local_6c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      *(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];\n      *(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;\n      operator_delete(*(void **)((int)ppSVar15 + -0x14));\n      lVar7 = local_5c;\n      lVar6 = local_6c;\n    }" { (expression_statement "*(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0];" (assignment_expression "*(undefined1 **)((int)ppSVar15 + -0x14) = local_34[0]" (pointer_expression "*(undefined1 **)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined1 **)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x18) = 0xad692" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x18)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x18)" ( (binary_expression "(int)ppSVar15 + -0x18" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)((int)ppSVar15 + -0x14));" (call_expression "operator_delete(*(void **)((int)ppSVar15 + -0x14))" identifier (argument_list "(*(void **)((int)ppSVar15 + -0x14))" ( (pointer_expression "*(void **)((int)ppSVar15 + -0x14)" * (cast_expression "(void **)((int)ppSVar15 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "lVar7 = local_5c;" (assignment_expression "lVar7 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_6c;" (assignment_expression "lVar6 = local_6c" identifier = identifier) ;) })) (expression_statement "uVar18 = CONCAT44(local_44,local_40);" (assignment_expression "uVar18 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "ppSVar15 = (Stub_control **)((int)ppSVar15 + -4);" (assignment_expression "ppSVar15 = (Stub_control **)((int)ppSVar15 + -4)" identifier = (cast_expression "(Stub_control **)((int)ppSVar15 + -4)" ( (type_descriptor "Stub_control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -4)" ( (binary_expression "(int)ppSVar15 + -4" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar16 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar16 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar6 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar6;" (assignment_expression "local_6c._0_4_ = (uint)lVar6" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar18 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar18 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar18 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar18;" (assignment_expression "local_40 = (uint *)uVar18" identifier = (cast_expression "(uint *)uVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20);" (assignment_expression "local_5c._4_4_ = (Stub_control *)((ulonglong)lVar7 >> 0x20)" (field_expression "local_5c._4_4_" identifier . field_identifier) = (cast_expression "(Stub_control *)((ulonglong)lVar7 >> 0x20)" ( (type_descriptor "Stub_control *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_5c._0_4_ = (undefined4)lVar7;" (assignment_expression "local_5c._0_4_ = (undefined4)lVar7" (field_expression "local_5c._0_4_" identifier . field_identifier) = (cast_expression "(undefined4)lVar7" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (if_statement "if (iVar16 == 0) {\n    *(Input_section **)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return true;\n  }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n    *(Input_section **)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return true;\n  }" { (expression_statement "*(Input_section **)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(Input_section **)((int)local_40 + 0x18) = local_60" (pointer_expression "*(Input_section **)((int)local_40 + 0x18)" * (cast_expression "(Input_section **)((int)local_40 + 0x18)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_;" (assignment_expression "*(Stub_control **)((int)local_40 + 0x14) = local_5c._4_4_" (pointer_expression "*(Stub_control **)((int)local_40 + 0x14)" * (cast_expression "(Stub_control **)((int)local_40 + 0x14)" ( (type_descriptor "Stub_control **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_5c._4_4_" identifier . field_identifier)) ;) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;" (assignment_expression "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c" (pointer_expression "*(undefined4 *)((int)local_40 + 0x10)" * (cast_expression "(undefined4 *)((int)local_40 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined4)local_5c" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (return_statement "return true;" return true ;) })) (expression_statement "cVar1 = *(char *)((int)local_40 + 6);" (assignment_expression "cVar1 = *(char *)((int)local_40 + 6)" identifier = (pointer_expression "*(char *)((int)local_40 + 6)" * (cast_expression "(char *)((int)local_40 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 6)" ( (binary_expression "(int)local_40 + 6" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1);" (assignment_expression "local_64 = (Stub_control *)CONCAT31(local_64._1_3_,cVar1)" identifier = (cast_expression "(Stub_control *)CONCAT31(local_64._1_3_,cVar1)" ( (type_descriptor "Stub_control *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_64._1_3_,cVar1)" identifier (argument_list "(local_64._1_3_,cVar1)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_5c = lVar7;" (assignment_expression "local_5c = lVar7" identifier = identifier) ;) (expression_statement "local_6c = lVar6;" (assignment_expression "local_6c = lVar6" identifier = identifier) ;) (if_statement "if ((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }\n  }" if (parenthesized_expression "((cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "(cVar1 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }\n  }" { (if_statement "if (iVar16 != 2) {\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }" if (parenthesized_expression "(iVar16 != 2)" ( (binary_expression "iVar16 != 2" identifier != number_literal) )) (compound_statement "{\n      if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }\n      local_84 = *(pointer *)((int)local_40 + 0x10);\n      local_80 = *(int *)((int)local_40 + 0x14);\n      lVar8 = *(longlong *)((int)local_40 + 0x10);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      lVar6 = lVar6 - lVar8;\n      iVar16 = (int)((ulonglong)lVar6 >> 0x20);\n      local_78 = 0;\n      if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;\n      bVar17 = local_7c < (int *)local_4c;\n      local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);\n      puVar14 = *(undefined4 **)local_70;\n      local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);\n      bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }\n      goto LAB_000ad6cc;\n    }" { (if_statement "if (iVar16 != 1) {\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }" if (parenthesized_expression "(iVar16 != 1)" ( (binary_expression "iVar16 != 1" identifier != number_literal) )) (compound_statement "{\n        *(uint **)((int)ppSVar15 + -4) = local_40;\n        *(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;\n        *(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;\n        *(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    /* WARNING: Subroutine does not return */\n        *(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;\n        gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));\n      }" { (expression_statement "*(uint **)((int)ppSVar15 + -4) = local_40;" (assignment_expression "*(uint **)((int)ppSVar15 + -4) = local_40" (pointer_expression "*(uint **)((int)ppSVar15 + -4)" * (cast_expression "(uint **)((int)ppSVar15 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -4)" ( (binary_expression "(int)ppSVar15 + -4" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI;" (assignment_expression "*(undefined **)((int)ppSVar15 + -8) = &UNK_003b7e97 + unaff_EDI" (pointer_expression "*(undefined **)((int)ppSVar15 + -8)" * (cast_expression "(undefined **)((int)ppSVar15 + -8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -8)" ( (binary_expression "(int)ppSVar15 + -8" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "&UNK_003b7e97 + unaff_EDI" (pointer_expression "&UNK_003b7e97" & identifier) + identifier)) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0xc) = 0xc6b" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0xc)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI;" (assignment_expression "*(undefined **)((int)ppSVar15 + -0x10) = &UNK_003b901f + unaff_EDI" (pointer_expression "*(undefined **)((int)ppSVar15 + -0x10)" * (cast_expression "(undefined **)((int)ppSVar15 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "&UNK_003b901f + unaff_EDI" (pointer_expression "&UNK_003b901f" & identifier) + identifier)) ;) comment (expression_statement "*(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;" (assignment_expression "*(undefined1 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3" (pointer_expression "*(undefined1 **)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined1 **)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_000ad9a3" & identifier)) ;) (labeled_statement "gold::do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8));" (call_expression "do_gold_unreachable\n                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8))" identifier (argument_list "(*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),\n                   *(char **)((int)ppSVar15 + -8))" ( (pointer_expression "*(char **)((int)ppSVar15 + -0x10)" * (cast_expression "(char **)((int)ppSVar15 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)ppSVar15 + -0xc)" * (cast_expression "(int *)((int)ppSVar15 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppSVar15 + -8)" * (cast_expression "(char **)((int)ppSVar15 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -8)" ( (binary_expression "(int)ppSVar15 + -8" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) })) (if_statement "if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }" if (parenthesized_expression "(((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "((char)local_7c != '\0')" ( (binary_expression "(char)local_7c != '\0'" (cast_expression "(char)local_7c" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\nLAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return true;\n      }" { (labeled_statement "LAB_000ad908:\n        *(Input_section **)((int)local_40 + 0x18) = local_60;" statement_identifier : (expression_statement "*(Input_section **)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(Input_section **)((int)local_40 + 0x18) = local_60" (pointer_expression "*(Input_section **)((int)local_40 + 0x18)" * (cast_expression "(Input_section **)((int)local_40 + 0x18)" ( (type_descriptor "Input_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return true;" return true ;) })) (expression_statement "local_84 = *(pointer *)((int)local_40 + 0x10);" (assignment_expression "local_84 = *(pointer *)((int)local_40 + 0x10)" identifier = (pointer_expression "*(pointer *)((int)local_40 + 0x10)" * (cast_expression "(pointer *)((int)local_40 + 0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_80 = *(int *)((int)local_40 + 0x14);" (assignment_expression "local_80 = *(int *)((int)local_40 + 0x14)" identifier = (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar8 = *(longlong *)((int)local_40 + 0x10);" (assignment_expression "lVar8 = *(longlong *)((int)local_40 + 0x10)" identifier = (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)((int)local_40 + 0xc);" (assignment_expression "local_7c = *(uint *)((int)local_40 + 0xc)" identifier = (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar6 = lVar6 - lVar8;" (assignment_expression "lVar6 = lVar6 - lVar8" identifier = (binary_expression "lVar6 - lVar8" identifier - identifier)) ;) (expression_statement "iVar16 = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "iVar16 = (int)((ulonglong)lVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if (iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16) goto LAB_000ad908;" if (parenthesized_expression "(iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16)" ( (binary_expression "iVar16 == 0 && (uint)(local_7c < (uint)lVar6) <= (uint)-iVar16" (binary_expression "iVar16 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)lVar6) <= (uint)-iVar16" (call_expression "(uint)(local_7c < (uint)lVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)lVar6)" ( (binary_expression "local_7c < (uint)lVar6" identifier < (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-iVar16" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (goto_statement "goto LAB_000ad908;" goto statement_identifier ;)) (expression_statement "bVar17 = local_7c < (int *)local_4c;" (assignment_expression "bVar17 = local_7c < (int *)local_4c" identifier = (binary_expression "local_7c < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1);" (assignment_expression "local_60 = (Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1)" identifier = (cast_expression "(Input_section *)(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1)" ( (type_descriptor "Input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1)" ( (binary_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" (call_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" identifier (argument_list "(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" ( (field_expression "local_60._1_3_" identifier . field_identifier) , (pointer_expression "*(undefined1 *)((int)local_40 + 4)" * (cast_expression "(undefined1 *)((int)local_40 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 4)" ( (binary_expression "(int)local_40 + 4" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ^ number_literal) )))) ;) (expression_statement "puVar14 = *(undefined4 **)local_70;" (assignment_expression "puVar14 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);" (assignment_expression "local_4c = CONCAT44(local_4c._4_4_,puVar14[2])" identifier = (call_expression "CONCAT44(local_4c._4_4_,puVar14[2])" identifier (argument_list "(local_4c._4_4_,puVar14[2])" ( (field_expression "local_4c._4_4_" identifier . field_identifier) , (subscript_expression "puVar14[2]" identifier [ number_literal ]) )))) ;) (expression_statement "bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60;" (assignment_expression "bVar10 = (local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60" identifier = (binary_expression "(local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_) & (byte)local_60" (parenthesized_expression "(local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_)" ( (binary_expression "local_4c._4_4_ == 0 && (uint)bVar17 <= (uint)-local_4c._4_4_" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)bVar17 <= (uint)-local_4c._4_4_" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) <= (binary_expression "(uint)-local_4c._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "local_4c._4_4_" identifier . field_identifier)))) )) & (cast_expression "(byte)local_60" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (if_statement "if ((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)) {\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }" if (parenthesized_expression "((bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16))" ( (binary_expression "(bVar10 != 0) &&\n         (lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)" (parenthesized_expression "(bVar10 != 0)" ( (binary_expression "bVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16)" ( (comma_expression "lVar7 = lVar7 - lVar8, iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16" (assignment_expression "lVar7 = lVar7 - lVar8" identifier = (binary_expression "lVar7 - lVar8" identifier - identifier)) , (comma_expression "iVar16 = (int)((ulonglong)lVar7 >> 0x20),\n         iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16" (assignment_expression "iVar16 = (int)((ulonglong)lVar7 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar7 >> 0x20)" ( (binary_expression "(ulonglong)lVar7 >> 0x20" (cast_expression "(ulonglong)lVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) , (binary_expression "iVar16 == 0 && (uint)(local_7c < (uint)lVar7) <= (uint)-iVar16" (binary_expression "iVar16 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)lVar7) <= (uint)-iVar16" (call_expression "(uint)(local_7c < (uint)lVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)lVar7)" ( (binary_expression "local_7c < (uint)lVar7" identifier < (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-iVar16" (parenthesized_expression "(uint)" ( identifier )) - identifier))))) ))) )) (compound_statement "{\n        if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return (bool)bVar10;\n      }" { (if_statement "if ((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }" if (parenthesized_expression "((puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0))" ( (binary_expression "(puVar14[2] != 0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)" (parenthesized_expression "(puVar14[2] != 0)" ( (binary_expression "puVar14[2] != 0" (subscript_expression "puVar14[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar14 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar14 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar14 + 5) & 0x40" (pointer_expression "*(byte *)(puVar14 + 5)" * (cast_expression "(byte *)(puVar14 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 5)" ( (binary_expression "puVar14 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          local_4c = CONCAT71(local_4c._1_7_,bVar10);\n          *(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;\n          *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;\n          gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n          bVar10 = (byte)local_4c;\n        }" { (expression_statement "local_4c = CONCAT71(local_4c._1_7_,bVar10);" (assignment_expression "local_4c = CONCAT71(local_4c._1_7_,bVar10)" identifier = (call_expression "CONCAT71(local_4c._1_7_,bVar10)" identifier (argument_list "(local_4c._1_7_,bVar10)" ( (field_expression "local_4c._1_7_" identifier . field_identifier) , identifier )))) ;) (expression_statement "*(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2;" (assignment_expression "*(int *)((int)ppSVar15 + -0xc) = unaff_EDI + 0x3b90a2" (pointer_expression "*(int *)((int)ppSVar15 + -0xc)" * (cast_expression "(int *)((int)ppSVar15 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b90a2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x10) = *puVar14" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x10)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad884" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" (call_expression "debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc))" identifier (argument_list "(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc))" ( (pointer_expression "*(Errors **)((int)ppSVar15 + -0x10)" * (cast_expression "(Errors **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Errors **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppSVar15 + -0xc)" * (cast_expression "(char **)((int)ppSVar15 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "bVar10 = (byte)local_4c;" (assignment_expression "bVar10 = (byte)local_4c" identifier = (cast_expression "(byte)local_4c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 2;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 2" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return (bool)bVar10;" return (cast_expression "(bool)bVar10" ( (type_descriptor "bool" primitive_type) ) identifier) ;) })) (goto_statement "goto LAB_000ad6cc;" goto statement_identifier ;) })) (expression_statement "iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));" (assignment_expression "iVar16 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" identifier = (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n             (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))))) ;) (if_statement "if (iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16) {\n      return true;\n    }" if (parenthesized_expression "(iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16)" ( (binary_expression "iVar16 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16" (binary_expression "iVar16 == 0" identifier == number_literal) && (binary_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar16" (call_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) <= (binary_expression "(uint)-iVar16" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) })) (expression_statement "puVar14 = *(undefined4 **)local_70;" (assignment_expression "puVar14 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c = CONCAT44(local_4c._4_4_,puVar14[2]);" (assignment_expression "local_4c = CONCAT44(local_4c._4_4_,puVar14[2])" identifier = (call_expression "CONCAT44(local_4c._4_4_,puVar14[2])" identifier (argument_list "(local_4c._4_4_,puVar14[2])" ( (field_expression "local_4c._4_4_" identifier . field_identifier) , (subscript_expression "puVar14[2]" identifier [ number_literal ]) )))) ;) (labeled_statement "LAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }" statement_identifier : (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)) {\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }" if (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0))" ( (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar14 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" ( (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar14 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar14 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar14 + 5) & 0x40" (pointer_expression "*(byte *)(puVar14 + 5)" * (cast_expression "(byte *)(puVar14 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 5)" ( (binary_expression "puVar14 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar5 = *puVar14;\n    puVar13 = &UNK_003b905d + unaff_EDI;\n    if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)ppSVar15 + -0xc) = puVar13;\n    *(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;\n    *(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;\n    gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));\n  }" { (expression_statement "uVar5 = *puVar14;" (assignment_expression "uVar5 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar13 = &UNK_003b905d + unaff_EDI;" (assignment_expression "puVar13 = &UNK_003b905d + unaff_EDI" identifier = (binary_expression "&UNK_003b905d + unaff_EDI" (pointer_expression "&UNK_003b905d" & identifier) + identifier)) ;) (if_statement "if ((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" if (parenthesized_expression "((cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44))" ( (binary_expression "(cVar1 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) != local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) != local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) ))) )) (compound_statement "{\n      puVar13 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" { (expression_statement "puVar13 = (undefined *)(unaff_EDI + 0x3b906f);" (assignment_expression "puVar13 = (undefined *)(unaff_EDI + 0x3b906f)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3b906f)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b906f)" ( (binary_expression "unaff_EDI + 0x3b906f" identifier + number_literal) )))) ;) })) (expression_statement "*(undefined **)((int)ppSVar15 + -0xc) = puVar13;" (assignment_expression "*(undefined **)((int)ppSVar15 + -0xc) = puVar13" (pointer_expression "*(undefined **)((int)ppSVar15 + -0xc)" * (cast_expression "(undefined **)((int)ppSVar15 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x10) = uVar5;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x10) = uVar5" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x10)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7;" (assignment_expression "*(undefined4 *)((int)ppSVar15 + -0x14) = 0xad6f7" (pointer_expression "*(undefined4 *)((int)ppSVar15 + -0x14)" * (cast_expression "(undefined4 *)((int)ppSVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppSVar15 + -0x14)" ( (binary_expression "(int)ppSVar15 + -0x14" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "gold::Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "Errors::debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));" (call_expression "debug(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc))" identifier (argument_list "(*(Errors **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc))" ( (pointer_expression "*(Errors **)((int)ppSVar15 + -0x10)" * (cast_expression "(Errors **)((int)ppSVar15 + -0x10)" ( (type_descriptor "Errors **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0x10)" ( (binary_expression "(int)ppSVar15 + -0x10" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)ppSVar15 + -0xc)" * (cast_expression "(char **)((int)ppSVar15 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppSVar15 + -0xc)" ( (binary_expression "(int)ppSVar15 + -0xc" (cast_expression "(int)ppSVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) }))) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return false;" return false ;) })))
(translation_unit "uint FUN_000ad4a0(uint param_1)\n\n{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}\n\n" (function_definition "uint FUN_000ad4a0(uint param_1)\n\n{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" type_identifier (function_declarator "FUN_000ad4a0(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" { (declaration "longlong *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "longlong lVar17;" type_identifier identifier ;) (declaration "undefined4 auStackY_a8 [2];" type_identifier (array_declarator "auStackY_a8 [2]" identifier [ number_literal ]) ;) (declaration "uint uStack_90;" type_identifier identifier ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined8 local_84;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "int *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "byte *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined8 local_6c;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined8 local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined8 local_4c;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "uVar16 = FUN_00074f0a();" (assignment_expression "uVar16 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) & 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) & 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) & 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "local_60 = extraout_ECX;" (assignment_expression "local_60 = extraout_ECX" identifier = identifier) ;) (if_statement "if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" if (parenthesized_expression "((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd))" ( (binary_expression "(*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)" (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 6)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 6" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 0xd)" ( (binary_expression "*(int *)(local_44 + 0x5c) == 0xd" (pointer_expression "*(int *)(local_44 + 0x5c)" * (cast_expression "(int *)(local_44 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x5c)" ( (binary_expression "local_44 + 0x5c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }" { (if_statement "if (bVar7 == 0) goto LAB_000ad952;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000ad952;" goto statement_identifier ;)) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) >> 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) >> 1" identifier = (binary_expression "*(byte *)(local_44 + 0x1c) >> 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" * (cast_expression "(byte *)(local_44 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0x1c)" ( (binary_expression "local_44 + 0x1c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "local_5c._0_4_ = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_5c._0_4_ = *(undefined4 *)(local_44 + 4)" (field_expression "local_5c._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "uStack_90 = *(uint *)(local_44 + 8);" (assignment_expression "uStack_90 = *(uint *)(local_44 + 8)" identifier = (pointer_expression "*(uint *)(local_44 + 8)" * (cast_expression "(uint *)(local_44 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(longlong *)(local_44 + 4);" (assignment_expression "lVar5 = *(longlong *)(local_44 + 4)" identifier = (pointer_expression "*(longlong *)(local_44 + 4)" * (cast_expression "(longlong *)(local_44 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;" (assignment_expression "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" identifier = (binary_expression "CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" (call_expression "CONCAT31(local_7c._1_3_,bVar7)" identifier (argument_list "(local_7c._1_3_,bVar7)" ( (field_expression "local_7c._1_3_" identifier . field_identifier) , identifier ))) & number_literal)) ;) (if_statement "if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" if (parenthesized_expression "((bVar7 & 1) == 0)" ( (binary_expression "(bVar7 & 1) == 0" (parenthesized_expression "(bVar7 & 1)" ( (binary_expression "bVar7 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" { (expression_statement "local_5c._4_4_ = uStack_90;" (assignment_expression "local_5c._4_4_ = uStack_90" (field_expression "local_5c._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" identifier (argument_list "(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" ( (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x3b85d3" identifier + number_literal) ))) ;) })) (expression_statement "lVar17 = *(longlong *)(local_44 + 0xc);" (assignment_expression "lVar17 = *(longlong *)(local_44 + 0xc)" identifier = (pointer_expression "*(longlong *)(local_44 + 0xc)" * (cast_expression "(longlong *)(local_44 + 0xc)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 0xc)" ( (binary_expression "local_44 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" else (compound_statement "{\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" { (if_statement "if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" { (labeled_statement "LAB_000ad952:\n      uStack_90 = param_1;" statement_identifier : (expression_statement "uStack_90 = param_1;" (assignment_expression "uStack_90 = param_1" identifier = identifier) ;)) (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" identifier (argument_list "(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" ( (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x3b84cb" identifier + number_literal) ))) ;) })) (expression_statement "local_50 = *(undefined4 *)(local_44 + 8);" (assignment_expression "local_50 = *(undefined4 *)(local_44 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 8)" * (cast_expression "(undefined4 *)(local_44 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 8)" ( (binary_expression "local_44 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_54 = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_54 = *(undefined4 *)(local_44 + 4)" identifier = (pointer_expression "*(undefined4 *)(local_44 + 4)" * (cast_expression "(undefined4 *)(local_44 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + 4)" ( (binary_expression "local_44 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);" (assignment_expression "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)FUN_002c6110(extraout_ECX)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier ))))) ;) (expression_statement "uVar8 = FUN_002c61a0(extraout_ECX);" (assignment_expression "uVar8 = FUN_002c61a0(extraout_ECX)" identifier = (call_expression "FUN_002c61a0(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier )))) ;) (expression_statement "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);" (assignment_expression "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" identifier = (call_expression "(**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_4c + 0x68))" ( (pointer_expression "**(code **)(*(int *)local_4c + 0x68)" * (pointer_expression "*(code **)(*(int *)local_4c + 0x68)" * (cast_expression "(code **)(*(int *)local_4c + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_4c + 0x68)" ( (binary_expression "*(int *)local_4c + 0x68" (pointer_expression "*(int *)local_4c" * (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "((int *)local_4c,uVar8)" ( (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "local_5c = local_5c + CONCAT44(local_50,local_54);" (assignment_expression "local_5c = local_5c + CONCAT44(local_50,local_54)" identifier = (binary_expression "local_5c + CONCAT44(local_50,local_54)" identifier + (call_expression "CONCAT44(local_50,local_54)" identifier (argument_list "(local_50,local_54)" ( identifier , identifier ))))) ;) (expression_statement "lVar17 = FUN_002c60d0(extraout_ECX);" (assignment_expression "lVar17 = FUN_002c60d0(extraout_ECX)" identifier = (call_expression "FUN_002c60d0(extraout_ECX)" identifier (argument_list "(extraout_ECX)" ( identifier )))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "local_7c = local_7c & 0xffffff00;" (assignment_expression "local_7c = local_7c & 0xffffff00" identifier = (binary_expression "local_7c & 0xffffff00" identifier & number_literal)) ;) (expression_statement "lVar5 = local_5c;" (assignment_expression "lVar5 = local_5c" identifier = identifier) ;) }))) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" identifier = identifier) ;) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (int *)lVar17;" (assignment_expression "local_4c._0_4_ = (int *)lVar17" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)lVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_6c = lVar17 + lVar5;" (assignment_expression "local_6c = lVar17 + lVar5" identifier = (binary_expression "lVar17 + lVar5" identifier + identifier)) ;) (expression_statement "local_54 = *local_40;" (assignment_expression "local_54 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;) (if_statement "if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" if (parenthesized_expression "((char)local_64 != '\0')" ( (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" { (expression_statement "local_54 = local_54 >> 10;" (assignment_expression "local_54 = local_54 >> 10" identifier = (binary_expression "local_54 >> 10" identifier >> number_literal)) ;) (expression_statement "local_40[3] = local_54;" (assignment_expression "local_40[3] = local_54" (subscript_expression "local_40[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "bVar14 = local_54 < (int *)local_4c;" (assignment_expression "bVar14 = local_54 < (int *)local_4c" identifier = (binary_expression "local_54 < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar15 = local_4c._4_4_ != 0;" (assignment_expression "bVar15 = local_4c._4_4_ != 0" identifier = (binary_expression "local_4c._4_4_ != 0" (field_expression "local_4c._4_4_" identifier . field_identifier) != number_literal)) ;) (expression_statement "uVar4 = -local_4c._4_4_;" (assignment_expression "uVar4 = -local_4c._4_4_" identifier = (unary_expression "-local_4c._4_4_" - (field_expression "local_4c._4_4_" identifier . field_identifier))) ;) (expression_statement "puVar13 = (uint *)auStack_8c;" (assignment_expression "puVar13 = (uint *)auStack_8c" identifier = (cast_expression "(uint *)auStack_8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_5c = lVar5;" (assignment_expression "local_5c = lVar5" identifier = identifier) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "local_4c = lVar17;" (assignment_expression "local_4c = lVar17" identifier = identifier) ;) (if_statement "if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" if (parenthesized_expression "((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'))" ( (binary_expression "(bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" (parenthesized_expression "(bVar15 || uVar4 < bVar14)" ( (binary_expression "bVar15 || uVar4 < bVar14" identifier || (binary_expression "uVar4 < bVar14" identifier < identifier)) )) && (parenthesized_expression "(puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" ( (comma_expression "puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'" (assignment_expression "puVar13 = (uint *)auStack_8c" identifier = (cast_expression "(uint *)auStack_8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(char *)((int)local_40 + 5) == '\0'" (pointer_expression "*(char *)((int)local_40 + 5)" * (cast_expression "(char *)((int)local_40 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 5)" ( (binary_expression "(int)local_40 + 5" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" { (expression_statement "local_70 = (byte *)FUN_002c6110(local_60);" (assignment_expression "local_70 = (byte *)FUN_002c6110(local_60)" identifier = (cast_expression "(byte *)FUN_002c6110(local_60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110(local_60)" identifier (argument_list "(local_60)" ( identifier ))))) ;) (expression_statement "uVar8 = FUN_002c61a0(uVar11);" (assignment_expression "uVar8 = FUN_002c61a0(uVar11)" identifier = (call_expression "FUN_002c61a0(uVar11)" identifier (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);" (call_expression "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_70 + 0x40))" ( (pointer_expression "**(code **)(*(int *)local_70 + 0x40)" * (pointer_expression "*(code **)(*(int *)local_70 + 0x40)" * (cast_expression "(code **)(*(int *)local_70 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_70 + 0x40)" ( (binary_expression "*(int *)local_70 + 0x40" (pointer_expression "*(int *)local_70" * (cast_expression "(int *)local_70" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(local_34,local_70,uVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_70 = local_34[0];" (assignment_expression "local_70 = local_34[0]" identifier = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = FUN_002c6110(uVar11);" (assignment_expression "iVar9 = FUN_002c6110(uVar11)" identifier = (call_expression "FUN_002c6110(uVar11)" identifier (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "local_84._0_4_ = *(undefined4 *)(iVar9 + 4);" (assignment_expression "local_84._0_4_ = *(undefined4 *)(iVar9 + 4)" (field_expression "local_84._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = gettext(unaff_EDI + 0x3b9089);" (assignment_expression "uVar8 = gettext(unaff_EDI + 0x3b9089)" identifier = (call_expression "gettext(unaff_EDI + 0x3b9089)" identifier (argument_list "(unaff_EDI + 0x3b9089)" ( (binary_expression "unaff_EDI + 0x3b9089" identifier + number_literal) )))) ;) (expression_statement "FUN_0023b840(uVar8,(undefined4)local_84,local_70);" (call_expression "FUN_0023b840(uVar8,(undefined4)local_84,local_70)" identifier (argument_list "(uVar8,(undefined4)local_84,local_70)" ( identifier , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) })) })) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" identifier = identifier) ;) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;" (assignment_expression "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" identifier = (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) (expression_statement "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier = (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier (argument_list "(local_84._4_4_,(undefined4)local_84)" ( (field_expression "local_84._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) (if_statement "if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" if (parenthesized_expression "((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     ))" ( (binary_expression "(puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" (parenthesized_expression "(puVar12[2] != 0)" ( (binary_expression "puVar12[2] != 0" (subscript_expression "puVar12[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" ( (comma_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier = (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" identifier (argument_list "(local_84._4_4_,(undefined4)local_84)" ( (field_expression "local_84._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) , (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" { (expression_statement "local_88 = *puVar12;" (assignment_expression "local_88 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" { (expression_statement "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));" (assignment_expression "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" identifier = (call_expression "CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" identifier (argument_list "((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) , (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) })) (expression_statement "*(uint *)((int)puVar13 + -0x10) = local_60;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = local_60" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" * (cast_expression "(uint *)((int)puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" identifier = identifier) ;) (expression_statement "local_74 = (int *)FUN_002c6110();" (assignment_expression "local_74 = (int *)FUN_002c6110()" identifier = (cast_expression "(int *)FUN_002c6110()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c6110()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(uint *)((int)puVar13 + -0x10) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" * (cast_expression "(uint *)((int)puVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar8 = FUN_002c61a0();" (assignment_expression "uVar8 = FUN_002c61a0()" identifier = (call_expression "FUN_002c61a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar9 = *local_74;" (assignment_expression "iVar9 = *local_74" identifier = (pointer_expression "*local_74" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -8) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -8) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -8)" * (cast_expression "(undefined4 *)((int)puVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -8)" ( (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)puVar13 + -0xc) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0xc) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0xc)" * (cast_expression "(int **)((int)puVar13 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 ***)((int)puVar13 + -0x10) = local_34;" (assignment_expression "*(undefined1 ***)((int)puVar13 + -0x10) = local_34" (pointer_expression "*(undefined1 ***)((int)puVar13 + -0x10)" * (cast_expression "(undefined1 ***)((int)puVar13 + -0x10)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar9 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0x40)" identifier = (pointer_expression "*(code **)(iVar9 + 0x40)" * (cast_expression "(code **)(iVar9 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 0x40)" ( (binary_expression "iVar9 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(uint *)((int)puVar13 + -0x14) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x14) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x14)" * (cast_expression "(uint *)((int)puVar13 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "local_74 = (int *)local_34[0];" (assignment_expression "local_74 = (int *)local_34[0]" identifier = (cast_expression "(int *)local_34[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_34[0]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = *(undefined4 *)(iVar9 + 4);" (assignment_expression "uVar8 = *(undefined4 *)(iVar9 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_84._4_4_" identifier . field_identifier)) ;) (expression_statement "puVar10 = &UNK_003b9056 + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b9056 + unaff_EDI" identifier = (binary_expression "&UNK_003b9056 + unaff_EDI" (pointer_expression "&UNK_003b9056" & identifier) + identifier)) ;) (if_statement "if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" if (parenthesized_expression "((char)local_64 == '\0')" ( (binary_expression "(char)local_64 == '\0'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" { (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3f066d);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3f066d)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3f066d)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3f066d)" ( (binary_expression "unaff_EDI + 0x3f066d" identifier + number_literal) )))) ;) })) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined4)local_84" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "*(longlong *)((int)puVar13 + -0x20) = local_4c;" (assignment_expression "*(longlong *)((int)puVar13 + -0x20) = local_4c" (pointer_expression "*(longlong *)((int)puVar13 + -0x20)" * (cast_expression "(longlong *)((int)puVar13 + -0x20)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x20)" ( (binary_expression "(int)puVar13 + -0x20" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)puVar13 + -0x24) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0x24) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0x24)" * (cast_expression "(int **)((int)puVar13 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x24)" ( (binary_expression "(int)puVar13 + -0x24" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x28) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x28) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x28)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x28)" ( (binary_expression "(int)puVar13 + -0x28" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)puVar13 + -0x2c) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0x2c) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0x2c)" * (cast_expression "(undefined **)((int)puVar13 + -0x2c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x2c)" ( (binary_expression "(int)puVar13 + -0x2c" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;" (assignment_expression "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b" (pointer_expression "*(int *)((int)puVar13 + -0x30)" * (cast_expression "(int *)((int)puVar13 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x30)" ( (binary_expression "(int)puVar13 + -0x30" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b942b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x34) = local_88;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x34) = local_88" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x34)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x34)" ( (binary_expression "(int)puVar13 + -0x34" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x38)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x38)" ( (binary_expression "(int)puVar13 + -0x38" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) (if_statement "if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" { (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0];" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0]" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "local_34[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x18)" ( (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" identifier = identifier) ;) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" identifier = identifier) ;) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" identifier = identifier) ;) })) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" identifier = (call_expression "CONCAT44(local_44,local_40)" identifier (argument_list "(local_44,local_40)" ( identifier , identifier )))) ;) (expression_statement "puVar13 = (uint *)((int)puVar13 + -4);" (assignment_expression "puVar13 = (uint *)((int)puVar13 + -4)" identifier = (cast_expression "(uint *)((int)puVar13 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -4)" ( (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" identifier = (pointer_expression "*(int *)((int)local_40 + 8)" * (cast_expression "(int *)((int)local_40 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20)" (field_expression "local_4c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_4c._0_4_ = (int *)lVar6;" (assignment_expression "local_4c._0_4_ = (int *)lVar6" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)lVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" identifier = (cast_expression "(uint *)uVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20)" (field_expression "local_5c._4_4_" identifier . field_identifier) = (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_5c._0_4_ = (undefined4)lVar17;" (assignment_expression "local_5c._0_4_ = (undefined4)lVar17" (field_expression "local_5c._0_4_" identifier . field_identifier) = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" identifier . field_identifier) = (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" { (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" * (cast_expression "(uint *)((int)local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_;" (assignment_expression "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_" (pointer_expression "*(uint *)((int)local_40 + 0x14)" * (cast_expression "(uint *)((int)local_40 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "local_5c._4_4_" identifier . field_identifier)) ;) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;" (assignment_expression "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c" (pointer_expression "*(undefined4 *)((int)local_40 + 0x10)" * (cast_expression "(undefined4 *)((int)local_40 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined4)local_5c" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar2 = *(char *)((int)local_40 + 6);" (assignment_expression "cVar2 = *(char *)((int)local_40 + 6)" identifier = (pointer_expression "*(char *)((int)local_40 + 6)" * (cast_expression "(char *)((int)local_40 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 6)" ( (binary_expression "(int)local_40 + 6" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_64 = CONCAT31(local_64._1_3_,cVar2);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,cVar2)" identifier = (call_expression "CONCAT31(local_64._1_3_,cVar2)" identifier (argument_list "(local_64._1_3_,cVar2)" ( (field_expression "local_64._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_5c = lVar17;" (assignment_expression "local_5c = lVar17" identifier = identifier) ;) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" identifier = identifier) ;) (if_statement "if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" if (parenthesized_expression "((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "(cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" { (if_statement "if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" if (parenthesized_expression "(iVar9 != 2)" ( (binary_expression "iVar9 != 2" identifier != number_literal) )) (compound_statement "{\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" { (if_statement "if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" if (parenthesized_expression "(iVar9 != 1)" ( (binary_expression "iVar9 != 1" identifier != number_literal) )) (compound_statement "{\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" { (expression_statement "*(uint **)((int)puVar13 + -4) = local_40;" (assignment_expression "*(uint **)((int)puVar13 + -4) = local_40" (pointer_expression "*(uint **)((int)puVar13 + -4)" * (cast_expression "(uint **)((int)puVar13 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -4)" ( (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;" (assignment_expression "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97" (pointer_expression "*(int *)((int)puVar13 + -8)" * (cast_expression "(int *)((int)puVar13 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -8)" ( (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b7e97" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b" (pointer_expression "*(undefined4 *)((int)puVar13 + -0xc)" * (cast_expression "(undefined4 *)((int)puVar13 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;" (assignment_expression "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI" (pointer_expression "*(undefined **)((int)puVar13 + -0x10)" * (cast_expression "(undefined **)((int)puVar13 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "&UNK_003b901f + unaff_EDI" (pointer_expression "&UNK_003b901f" & identifier) + identifier)) ;) (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_000ad9a3" & identifier)) ;) (expression_statement "local_4c = lVar6;" (assignment_expression "local_4c = lVar6" identifier = identifier) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" if (parenthesized_expression "(((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44))" ( (binary_expression "((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "((char)local_7c != '\0')" ( (binary_expression "(char)local_7c != '\0'" (cast_expression "(char)local_7c" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) ))) )) (compound_statement "{\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" { (labeled_statement "LAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;" statement_identifier : (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" * (cast_expression "(uint *)((int)local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x18)" ( (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "plVar1 = (longlong *)((int)local_40 + 0x10);" (assignment_expression "plVar1 = (longlong *)((int)local_40 + 0x10)" identifier = (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_84._0_4_ = *(undefined4 *)plVar1;" (assignment_expression "local_84._0_4_ = *(undefined4 *)plVar1" (field_expression "local_84._0_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)plVar1" * (cast_expression "(undefined4 *)plVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);" (assignment_expression "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14)" (field_expression "local_84._4_4_" identifier . field_identifier) = (pointer_expression "*(undefined4 *)((int)local_40 + 0x14)" * (cast_expression "(undefined4 *)((int)local_40 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_7c = *(uint *)((int)local_40 + 0xc);" (assignment_expression "local_7c = *(uint *)((int)local_40 + 0xc)" identifier = (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);" (assignment_expression "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" identifier = (cast_expression "(int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(lVar5 - *plVar1) >> 0x20)" ( (binary_expression "(ulonglong)(lVar5 - *plVar1) >> 0x20" (call_expression "(ulonglong)(lVar5 - *plVar1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(lVar5 - *plVar1)" ( (binary_expression "lVar5 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier)) ))) >> number_literal) )))) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;" if (parenthesized_expression "(iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)" ( (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)(lVar5 - *plVar1))" ( (binary_expression "local_7c < (uint)(lVar5 - *plVar1)" identifier < (call_expression "(uint)(lVar5 - *plVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(lVar5 - *plVar1)" ( (binary_expression "lVar5 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier)) )))) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (goto_statement "goto LAB_000ad908;" goto statement_identifier ;)) (expression_statement "bVar14 = local_7c < (int *)local_4c;" (assignment_expression "bVar14 = local_7c < (int *)local_4c" identifier = (binary_expression "local_7c < (int *)local_4c" identifier < (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" identifier = (binary_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" (call_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" identifier (argument_list "(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" ( (field_expression "local_60._1_3_" identifier . field_identifier) , (pointer_expression "*(undefined1 *)((int)local_40 + 4)" * (cast_expression "(undefined1 *)((int)local_40 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 4)" ( (binary_expression "(int)local_40 + 4" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ^ number_literal)) ;) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)puVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;" (assignment_expression "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" identifier = (binary_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" (parenthesized_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_)" ( (binary_expression "local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)bVar14 <= (uint)-local_4c._4_4_" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) <= (binary_expression "(uint)-local_4c._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "local_4c._4_4_" identifier . field_identifier)))) )) & (cast_expression "(byte)local_60" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "uVar11 = (uint)bVar7;" (assignment_expression "uVar11 = (uint)bVar7" identifier = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar5 = *plVar1;" (assignment_expression "lVar5 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" if (parenthesized_expression "((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9))" ( (binary_expression "(bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" ( (comma_expression "lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar17 = lVar17 - *plVar1" identifier = (binary_expression "lVar17 - *plVar1" identifier - (pointer_expression "*plVar1" * identifier))) , (comma_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) , (comma_expression "lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar5 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) , (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)lVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_7c < (uint)lVar17)" ( (binary_expression "local_7c < (uint)lVar17" identifier < (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier)))))) ))) )) (compound_statement "{\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" { (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" if (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" ( (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" ( (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" { (expression_statement "uVar11 = (uint)(int *)local_4c >> 8;" (assignment_expression "uVar11 = (uint)(int *)local_4c >> 8" identifier = (binary_expression "(uint)(int *)local_4c >> 8" (cast_expression "(uint)(int *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) >> number_literal)) ;) (expression_statement "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);" (assignment_expression "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7)" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)CONCAT31((int3)uVar11,bVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31((int3)uVar11,bVar7)" identifier (argument_list "((int3)uVar11,bVar7)" ( (cast_expression "(int3)uVar11" ( (type_descriptor "int3" type_identifier) ) identifier) , identifier ))))) ;) (expression_statement "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;" (assignment_expression "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2" (pointer_expression "*(int *)((int)puVar13 + -0xc)" * (cast_expression "(int *)((int)puVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "unaff_EDI + 0x3b90a2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar11 = (uint)(int *)local_4c & 0xff;" (assignment_expression "uVar11 = (uint)(int *)local_4c & 0xff" identifier = (binary_expression "(uint)(int *)local_4c & 0xff" (cast_expression "(uint)(int *)local_4c" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal)) ;) })) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 2;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 2" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return uVar11;" return identifier ;) })) (goto_statement "goto LAB_000ad6cc;" goto statement_identifier ;) })) (expression_statement "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));" (assignment_expression "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" identifier = (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" ( (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)local_40 + 0x14)" * (cast_expression "(int *)((int)local_40 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x14)" ( (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) - (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" ( (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))))) ;) (if_statement "if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }" if (parenthesized_expression "(iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9)" ( (binary_expression "iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (call_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" ( (binary_expression "*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*(uint *)((int)local_40 + 0x10)" * (cast_expression "(uint *)((int)local_40 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" identifier = (pointer_expression "*(undefined4 **)local_70" * (cast_expression "(undefined4 **)local_70" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" identifier . field_identifier) = (cast_expression "(int *)puVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "lVar5 = local_84;" (assignment_expression "lVar5 = local_84" identifier = identifier) ;) (labeled_statement "LAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" statement_identifier : (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" if (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" ( (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" ( (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" ( (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" ( (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" * (cast_expression "(byte *)(puVar12 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 5)" ( (binary_expression "puVar12 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" { (expression_statement "uVar8 = *puVar12;" (assignment_expression "uVar8 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar10 = &UNK_003b905d + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b905d + unaff_EDI" identifier = (binary_expression "&UNK_003b905d + unaff_EDI" (pointer_expression "&UNK_003b905d" & identifier) + identifier)) ;) (if_statement "if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" if (parenthesized_expression "((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44))" ( (binary_expression "(cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)" (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) != local_44)" ( (binary_expression "*(int *)((int)local_40 + 0x1c) != local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" * (cast_expression "(int *)((int)local_40 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x1c)" ( (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) ))) )) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" { (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3b906f);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3b906f)" identifier = (cast_expression "(undefined *)(unaff_EDI + 0x3b906f)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3b906f)" ( (binary_expression "unaff_EDI + 0x3b906f" identifier + number_literal) )))) ;) })) (expression_statement "*(undefined **)((int)puVar13 + -0xc) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0xc) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0xc)" * (cast_expression "(undefined **)((int)puVar13 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar13 + -0xc)" ( (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x10)" ( (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + -0x14)" ( (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_84 = lVar5;" (assignment_expression "local_84 = lVar5" identifier = identifier) ;) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" * (cast_expression "(uint *)((int)local_40 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0xc)" ( (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" * (cast_expression "(undefined4 *)((int)local_40 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 8)" ( (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" * (cast_expression "(longlong *)((int)local_40 + 0x10)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + 0x10)" ( (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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) ;) (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) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (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) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) != LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT || (binary_expression IDENT < IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) , (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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) < (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) - (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) )))) = 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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) )))) = IDENT) ;) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (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) ))))) ;) (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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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 IDENT = (call_expression IDENT (argument_list ( )))) ;) (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) )))) = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) = (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) )))) = IDENT) ;) (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) )))) = 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) )))) = IDENT) ;) (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) )))) = 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) )))) = 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) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (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) )))) = (subscript_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 (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (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 (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) 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 (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) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (field_expression IDENT . field_identifier)) ;) (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) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return 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 = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (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) )))) == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (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 (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) && (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) )))) == IDENT) ))) )) (compound_statement { (labeled_statement statement_identifier : (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) )))) = IDENT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (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) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - (pointer_expression * IDENT)) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - (pointer_expression * IDENT)) )))) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (field_expression IDENT . field_identifier) == LIT) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression (parenthesized_expression ( IDENT )) - (field_expression IDENT . field_identifier)))) )) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * IDENT))) , (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) , (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT)))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (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 IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , 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) )))) = (pointer_expression * 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) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) = IDENT) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (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) )))) < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT))) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (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) )))) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 * (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) )))) = 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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (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) )))) = 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) ;) (return_statement return LIT ;) })))
(function_definition "uint FUN_000ad4a0(uint param_1)\n\n{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_000ad4a0(uint param_1)" (identifier "FUN_000ad4a0") (parameter_list "(uint param_1)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) (compound_statement "{\n  longlong *plVar1;\n  char cVar2;\n  code *pcVar3;\n  uint uVar4;\n  longlong lVar5;\n  longlong lVar6;\n  byte bVar7;\n  undefined4 uVar8;\n  int iVar9;\n  undefined *puVar10;\n  uint uVar11;\n  uint extraout_ECX;\n  undefined4 *puVar12;\n  uint *puVar13;\n  int unaff_EDI;\n  bool bVar14;\n  bool bVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 auStackY_a8 [2];\n  uint uStack_90;\n  undefined1 auStack_8c [4];\n  undefined4 local_88;\n  undefined8 local_84;\n  uint local_7c;\n  undefined4 local_78;\n  int *local_74;\n  byte *local_70;\n  undefined8 local_6c;\n  uint local_64;\n  uint local_60;\n  undefined8 local_5c;\n  uint local_54;\n  undefined4 local_50;\n  undefined8 local_4c;\n  int local_44;\n  uint *local_40;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  uVar16 = FUN_00074f0a();\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_64 = param_1;\n  bVar7 = *(byte *)(local_44 + 0x1c) & 1;\n  local_60 = extraout_ECX;\n  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }\n  uVar11 = local_60;\n  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);\n  local_4c._0_4_ = (int *)lVar17;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_6c = lVar17 + lVar5;\n  local_54 = *local_40;\n  if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }\n  bVar14 = local_54 < (int *)local_4c;\n  bVar15 = local_4c._4_4_ != 0;\n  uVar4 = -local_4c._4_4_;\n  puVar13 = (uint *)auStack_8c;\n  local_5c = lVar5;\n  lVar5 = local_6c;\n  local_4c = lVar17;\n  if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }\n  uVar11 = local_60;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;\n  puVar12 = *(undefined4 **)local_70;\n  iVar9 = *(int *)((int)local_40 + 8);\n  lVar17 = local_5c;\n  lVar6 = local_4c;\n  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);\n  if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }\n  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);\n  local_4c._0_4_ = (int *)lVar6;\n  local_44 = (int)((ulonglong)uVar16 >> 0x20);\n  local_40 = (uint *)uVar16;\n  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);\n  local_5c._0_4_ = (undefined4)lVar17;\n  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);\n  local_6c._0_4_ = (uint)lVar5;\n  if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }\n  cVar2 = *(char *)((int)local_40 + 6);\n  local_64 = CONCAT31(local_64._1_3_,cVar2);\n  local_5c = lVar17;\n  local_6c = lVar5;\n  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }\n  puVar12 = *(undefined4 **)local_70;\n  local_4c._0_4_ = (int *)puVar12[2];\n  lVar5 = local_84;\nLAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }\n  *(uint *)((int)local_40 + 0xc) = local_54;\n  *(undefined4 *)((int)local_40 + 8) = 1;\n  *(longlong *)((int)local_40 + 0x10) = local_5c;\n  return 0;\n}" ({ "{") (declaration "longlong *plVar1;" (type_identifier "longlong") (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "longlong lVar6;" (type_identifier "longlong") (identifier "lVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "longlong lVar17;" (type_identifier "longlong") (identifier "lVar17") (; ";")) (declaration "undefined4 auStackY_a8 [2];" (type_identifier "undefined4") (array_declarator "auStackY_a8 [2]" (identifier "auStackY_a8") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "uint uStack_90;" (type_identifier "uint") (identifier "uStack_90") (; ";")) (declaration "undefined1 auStack_8c [4];" (type_identifier "undefined1") (array_declarator "auStack_8c [4]" (identifier "auStack_8c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "undefined8 local_84;" (type_identifier "undefined8") (identifier "local_84") (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78;" (type_identifier "undefined4") (identifier "local_78") (; ";")) (declaration "int *local_74;" (primitive_type "int") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "byte *local_70;" (type_identifier "byte") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined8 local_6c;" (type_identifier "undefined8") (identifier "local_6c") (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "undefined8 local_5c;" (type_identifier "undefined8") (identifier "local_5c") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined8 local_4c;" (type_identifier "undefined8") (identifier "local_4c") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "uint *local_40;" (type_identifier "uint") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "uVar16 = FUN_00074f0a();" (assignment_expression "uVar16 = FUN_00074f0a()" (identifier "uVar16") (= "=") (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" (identifier "local_44") (= "=") (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" (identifier "local_40") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" (identifier "local_64") (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) & 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) & 1" (identifier "bVar7") (= "=") (binary_expression "*(byte *)(local_44 + 0x1c) & 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" (* "*") (cast_expression "(byte *)(local_44 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 0x1c)" (( "(") (binary_expression "local_44 + 0x1c" (identifier "local_44") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "1"))) (; ";")) (expression_statement "local_60 = extraout_ECX;" (assignment_expression "local_60 = extraout_ECX" (identifier "local_60") (= "=") (identifier "extraout_ECX")) (; ";")) (if_statement "if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }\n  else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" (if "if") (parenthesized_expression "((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd))" (( "(") (binary_expression "(*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)" (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 6)" (( "(") (binary_expression "*(int *)(local_44 + 0x5c) == 6" (pointer_expression "*(int *)(local_44 + 0x5c)" (* "*") (cast_expression "(int *)(local_44 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 0x5c)" (( "(") (binary_expression "local_44 + 0x5c" (identifier "local_44") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (number_literal "6")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(local_44 + 0x5c) == 0xd)" (( "(") (binary_expression "*(int *)(local_44 + 0x5c) == 0xd" (pointer_expression "*(int *)(local_44 + 0x5c)" (* "*") (cast_expression "(int *)(local_44 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 0x5c)" (( "(") (binary_expression "local_44 + 0x5c" (identifier "local_44") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (number_literal "0xd")) () ")"))) () ")")) (compound_statement "{\n    if (bVar7 == 0) goto LAB_000ad952;\n    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;\n    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);\n    uStack_90 = *(uint *)(local_44 + 8);\n    lVar5 = *(longlong *)(local_44 + 4);\n    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;\n    if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }\n    lVar17 = *(longlong *)(local_44 + 0xc);\n  }" ({ "{") (if_statement "if (bVar7 == 0) goto LAB_000ad952;" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000ad952;" (goto "goto") (statement_identifier "LAB_000ad952") (; ";"))) (expression_statement "bVar7 = *(byte *)(local_44 + 0x1c) >> 1;" (assignment_expression "bVar7 = *(byte *)(local_44 + 0x1c) >> 1" (identifier "bVar7") (= "=") (binary_expression "*(byte *)(local_44 + 0x1c) >> 1" (pointer_expression "*(byte *)(local_44 + 0x1c)" (* "*") (cast_expression "(byte *)(local_44 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 0x1c)" (( "(") (binary_expression "local_44 + 0x1c" (identifier "local_44") (+ "+") (number_literal "0x1c")) () ")")))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_5c._0_4_ = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_5c._0_4_ = *(undefined4 *)(local_44 + 4)" (field_expression "local_5c._0_4_" (identifier "local_5c") (. ".") (field_identifier "_0_4_")) (= "=") (pointer_expression "*(undefined4 *)(local_44 + 4)" (* "*") (cast_expression "(undefined4 *)(local_44 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 4)" (( "(") (binary_expression "local_44 + 4" (identifier "local_44") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uStack_90 = *(uint *)(local_44 + 8);" (assignment_expression "uStack_90 = *(uint *)(local_44 + 8)" (identifier "uStack_90") (= "=") (pointer_expression "*(uint *)(local_44 + 8)" (* "*") (cast_expression "(uint *)(local_44 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 8)" (( "(") (binary_expression "local_44 + 8" (identifier "local_44") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar5 = *(longlong *)(local_44 + 4);" (assignment_expression "lVar5 = *(longlong *)(local_44 + 4)" (identifier "lVar5") (= "=") (pointer_expression "*(longlong *)(local_44 + 4)" (* "*") (cast_expression "(longlong *)(local_44 + 4)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 4)" (( "(") (binary_expression "local_44 + 4" (identifier "local_44") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;" (assignment_expression "local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" (identifier "local_7c") (= "=") (binary_expression "CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01" (call_expression "CONCAT31(local_7c._1_3_,bVar7)" (identifier "CONCAT31") (argument_list "(local_7c._1_3_,bVar7)" (( "(") (field_expression "local_7c._1_3_" (identifier "local_7c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "bVar7") () ")"))) (& "&") (number_literal "0xffffff01"))) (; ";")) (if_statement "if ((bVar7 & 1) == 0) {\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" (if "if") (parenthesized_expression "((bVar7 & 1) == 0)" (( "(") (binary_expression "(bVar7 & 1) == 0" (parenthesized_expression "(bVar7 & 1)" (( "(") (binary_expression "bVar7 & 1" (identifier "bVar7") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_5c._4_4_ = uStack_90;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);\n    }" ({ "{") (expression_statement "local_5c._4_4_ = uStack_90;" (assignment_expression "local_5c._4_4_ = uStack_90" (field_expression "local_5c._4_4_" (identifier "local_5c") (. ".") (field_identifier "_4_4_")) (= "=") (identifier "uStack_90")) (; ";")) (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" (identifier "FUN_002446e0") (argument_list "(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3)" (( "(") (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" (& "&") (identifier "UNK_0039feb4")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0xcf") (, ",") (binary_expression "unaff_EDI + 0x3b85d3" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b85d3")) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar17 = *(longlong *)(local_44 + 0xc);" (assignment_expression "lVar17 = *(longlong *)(local_44 + 0xc)" (identifier "lVar17") (= "=") (pointer_expression "*(longlong *)(local_44 + 0xc)" (* "*") (cast_expression "(longlong *)(local_44 + 0xc)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 0xc)" (( "(") (binary_expression "local_44 + 0xc" (identifier "local_44") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" (else "else") (compound_statement "{\n    if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }\n    local_50 = *(undefined4 *)(local_44 + 8);\n    local_54 = *(undefined4 *)(local_44 + 4);\n    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);\n    uVar8 = FUN_002c61a0(extraout_ECX);\n    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);\n    local_5c = local_5c + CONCAT44(local_50,local_54);\n    lVar17 = FUN_002c60d0(extraout_ECX);\n    uVar16 = CONCAT44(local_44,local_40);\n    local_7c = local_7c & 0xffffff00;\n    lVar5 = local_5c;\n  }" ({ "{") (if_statement "if (bVar7 == 0) {\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000ad952:\n      uStack_90 = param_1;\n                    \n      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);\n    }" ({ "{") (labeled_statement "LAB_000ad952:\n      uStack_90 = param_1;" (statement_identifier "LAB_000ad952") (: ":") (expression_statement "uStack_90 = param_1;" (assignment_expression "uStack_90 = param_1" (identifier "uStack_90") (= "=") (identifier "param_1")) (; ";"))) (expression_statement "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);" (call_expression "FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" (identifier "FUN_002446e0") (argument_list "(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb)" (( "(") (binary_expression "&UNK_0039feb4 + unaff_EDI" (pointer_expression "&UNK_0039feb4" (& "&") (identifier "UNK_0039feb4")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0xc5") (, ",") (binary_expression "unaff_EDI + 0x3b84cb" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b84cb")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_50 = *(undefined4 *)(local_44 + 8);" (assignment_expression "local_50 = *(undefined4 *)(local_44 + 8)" (identifier "local_50") (= "=") (pointer_expression "*(undefined4 *)(local_44 + 8)" (* "*") (cast_expression "(undefined4 *)(local_44 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 8)" (( "(") (binary_expression "local_44 + 8" (identifier "local_44") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_54 = *(undefined4 *)(local_44 + 4);" (assignment_expression "local_54 = *(undefined4 *)(local_44 + 4)" (identifier "local_54") (= "=") (pointer_expression "*(undefined4 *)(local_44 + 4)" (* "*") (cast_expression "(undefined4 *)(local_44 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + 4)" (( "(") (binary_expression "local_44 + 4" (identifier "local_44") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);" (assignment_expression "local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX)" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)FUN_002c6110(extraout_ECX)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c6110(extraout_ECX)" (identifier "FUN_002c6110") (argument_list "(extraout_ECX)" (( "(") (identifier "extraout_ECX") () ")"))))) (; ";")) (expression_statement "uVar8 = FUN_002c61a0(extraout_ECX);" (assignment_expression "uVar8 = FUN_002c61a0(extraout_ECX)" (identifier "uVar8") (= "=") (call_expression "FUN_002c61a0(extraout_ECX)" (identifier "FUN_002c61a0") (argument_list "(extraout_ECX)" (( "(") (identifier "extraout_ECX") () ")")))) (; ";")) (expression_statement "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);" (assignment_expression "local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" (identifier "local_5c") (= "=") (call_expression "(**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_4c + 0x68))" (( "(") (pointer_expression "**(code **)(*(int *)local_4c + 0x68)" (* "*") (pointer_expression "*(code **)(*(int *)local_4c + 0x68)" (* "*") (cast_expression "(code **)(*(int *)local_4c + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_4c + 0x68)" (( "(") (binary_expression "*(int *)local_4c + 0x68" (pointer_expression "*(int *)local_4c" (* "*") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c"))) (+ "+") (number_literal "0x68")) () ")"))))) () ")")) (argument_list "((int *)local_4c,uVar8)" (( "(") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")) (, ",") (identifier "uVar8") () ")")))) (; ";")) (expression_statement "local_5c = local_5c + CONCAT44(local_50,local_54);" (assignment_expression "local_5c = local_5c + CONCAT44(local_50,local_54)" (identifier "local_5c") (= "=") (binary_expression "local_5c + CONCAT44(local_50,local_54)" (identifier "local_5c") (+ "+") (call_expression "CONCAT44(local_50,local_54)" (identifier "CONCAT44") (argument_list "(local_50,local_54)" (( "(") (identifier "local_50") (, ",") (identifier "local_54") () ")"))))) (; ";")) (expression_statement "lVar17 = FUN_002c60d0(extraout_ECX);" (assignment_expression "lVar17 = FUN_002c60d0(extraout_ECX)" (identifier "lVar17") (= "=") (call_expression "FUN_002c60d0(extraout_ECX)" (identifier "FUN_002c60d0") (argument_list "(extraout_ECX)" (( "(") (identifier "extraout_ECX") () ")")))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_44,local_40)" (identifier "CONCAT44") (argument_list "(local_44,local_40)" (( "(") (identifier "local_44") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "local_7c = local_7c & 0xffffff00;" (assignment_expression "local_7c = local_7c & 0xffffff00" (identifier "local_7c") (= "=") (binary_expression "local_7c & 0xffffff00" (identifier "local_7c") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "lVar5 = local_5c;" (assignment_expression "lVar5 = local_5c" (identifier "lVar5") (= "=") (identifier "local_5c")) (; ";")) (} "}")))) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" (identifier "uVar11") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20)" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)lVar17;" (assignment_expression "local_4c._0_4_ = (int *)lVar17" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)lVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "lVar17"))) (; ";")) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" (identifier "local_44") (= "=") (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" (identifier "local_40") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "local_6c = lVar17 + lVar5;" (assignment_expression "local_6c = lVar17 + lVar5" (identifier "local_6c") (= "=") (binary_expression "lVar17 + lVar5" (identifier "lVar17") (+ "+") (identifier "lVar5"))) (; ";")) (expression_statement "local_54 = *local_40;" (assignment_expression "local_54 = *local_40" (identifier "local_54") (= "=") (pointer_expression "*local_40" (* "*") (identifier "local_40"))) (; ";")) (if_statement "if ((char)local_64 != '\0') {\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" (if "if") (parenthesized_expression "((char)local_64 != '\0')" (( "(") (binary_expression "(char)local_64 != '\0'" (cast_expression "(char)local_64" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_64")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_54 = local_54 >> 10;\n    local_40[3] = local_54;\n  }" ({ "{") (expression_statement "local_54 = local_54 >> 10;" (assignment_expression "local_54 = local_54 >> 10" (identifier "local_54") (= "=") (binary_expression "local_54 >> 10" (identifier "local_54") (>> ">>") (number_literal "10"))) (; ";")) (expression_statement "local_40[3] = local_54;" (assignment_expression "local_40[3] = local_54" (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_54")) (; ";")) (} "}"))) (expression_statement "bVar14 = local_54 < (int *)local_4c;" (assignment_expression "bVar14 = local_54 < (int *)local_4c" (identifier "bVar14") (= "=") (binary_expression "local_54 < (int *)local_4c" (identifier "local_54") (< "<") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")))) (; ";")) (expression_statement "bVar15 = local_4c._4_4_ != 0;" (assignment_expression "bVar15 = local_4c._4_4_ != 0" (identifier "bVar15") (= "=") (binary_expression "local_4c._4_4_ != 0" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "uVar4 = -local_4c._4_4_;" (assignment_expression "uVar4 = -local_4c._4_4_" (identifier "uVar4") (= "=") (unary_expression "-local_4c._4_4_" (- "-") (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")))) (; ";")) (expression_statement "puVar13 = (uint *)auStack_8c;" (assignment_expression "puVar13 = (uint *)auStack_8c" (identifier "puVar13") (= "=") (cast_expression "(uint *)auStack_8c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_8c"))) (; ";")) (expression_statement "local_5c = lVar5;" (assignment_expression "local_5c = lVar5" (identifier "local_5c") (= "=") (identifier "lVar5")) (; ";")) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" (identifier "lVar5") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "local_4c = lVar17;" (assignment_expression "local_4c = lVar17" (identifier "local_4c") (= "=") (identifier "lVar17")) (; ";")) (if_statement "if ((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" (if "if") (parenthesized_expression "((bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'))" (( "(") (binary_expression "(bVar15 || uVar4 < bVar14) &&\n     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" (parenthesized_expression "(bVar15 || uVar4 < bVar14)" (( "(") (binary_expression "bVar15 || uVar4 < bVar14" (identifier "bVar15") (|| "||") (binary_expression "uVar4 < bVar14" (identifier "uVar4") (< "<") (identifier "bVar14"))) () ")")) (&& "&&") (parenthesized_expression "(puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')" (( "(") (comma_expression "puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0'" (assignment_expression "puVar13 = (uint *)auStack_8c" (identifier "puVar13") (= "=") (cast_expression "(uint *)auStack_8c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_8c"))) (, ",") (binary_expression "*(char *)((int)local_40 + 5) == '\0'" (pointer_expression "*(char *)((int)local_40 + 5)" (* "*") (cast_expression "(char *)((int)local_40 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 5)" (( "(") (binary_expression "(int)local_40 + 5" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n    local_70 = (byte *)FUN_002c6110(local_60);\n    uVar8 = FUN_002c61a0(uVar11);\n    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);\n    local_70 = local_34[0];\n                    \n    iVar9 = FUN_002c6110(uVar11);\n    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);\n    uVar8 = gettext(unaff_EDI + 0x3b9089);\n    FUN_0023b840(uVar8,(undefined4)local_84,local_70);\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = &uStack_90;\n    lVar5 = local_6c;\n    if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }\n  }" ({ "{") (expression_statement "local_70 = (byte *)FUN_002c6110(local_60);" (assignment_expression "local_70 = (byte *)FUN_002c6110(local_60)" (identifier "local_70") (= "=") (cast_expression "(byte *)FUN_002c6110(local_60)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c6110(local_60)" (identifier "FUN_002c6110") (argument_list "(local_60)" (( "(") (identifier "local_60") () ")"))))) (; ";")) (expression_statement "uVar8 = FUN_002c61a0(uVar11);" (assignment_expression "uVar8 = FUN_002c61a0(uVar11)" (identifier "uVar8") (= "=") (call_expression "FUN_002c61a0(uVar11)" (identifier "FUN_002c61a0") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);" (call_expression "(**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8)" (parenthesized_expression "(**(code **)(*(int *)local_70 + 0x40))" (( "(") (pointer_expression "**(code **)(*(int *)local_70 + 0x40)" (* "*") (pointer_expression "*(code **)(*(int *)local_70 + 0x40)" (* "*") (cast_expression "(code **)(*(int *)local_70 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_70 + 0x40)" (( "(") (binary_expression "*(int *)local_70 + 0x40" (pointer_expression "*(int *)local_70" (* "*") (cast_expression "(int *)local_70" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_70"))) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(local_34,local_70,uVar8)" (( "(") (identifier "local_34") (, ",") (identifier "local_70") (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "local_70 = local_34[0];" (assignment_expression "local_70 = local_34[0]" (identifier "local_70") (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "iVar9 = FUN_002c6110(uVar11);" (assignment_expression "iVar9 = FUN_002c6110(uVar11)" (identifier "iVar9") (= "=") (call_expression "FUN_002c6110(uVar11)" (identifier "FUN_002c6110") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "local_84._0_4_ = *(undefined4 *)(iVar9 + 4);" (assignment_expression "local_84._0_4_ = *(undefined4 *)(iVar9 + 4)" (field_expression "local_84._0_4_" (identifier "local_84") (. ".") (field_identifier "_0_4_")) (= "=") (pointer_expression "*(undefined4 *)(iVar9 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar8 = gettext(unaff_EDI + 0x3b9089);" (assignment_expression "uVar8 = gettext(unaff_EDI + 0x3b9089)" (identifier "uVar8") (= "=") (call_expression "gettext(unaff_EDI + 0x3b9089)" (identifier "gettext") (argument_list "(unaff_EDI + 0x3b9089)" (( "(") (binary_expression "unaff_EDI + 0x3b9089" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b9089")) () ")")))) (; ";")) (expression_statement "FUN_0023b840(uVar8,(undefined4)local_84,local_70);" (call_expression "FUN_0023b840(uVar8,(undefined4)local_84,local_70)" (identifier "FUN_0023b840") (argument_list "(uVar8,(undefined4)local_84,local_70)" (( "(") (identifier "uVar8") (, ",") (cast_expression "(undefined4)local_84" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_84")) (, ",") (identifier "local_70") () ")"))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_44,local_40)" (identifier "CONCAT44") (argument_list "(local_44,local_40)" (( "(") (identifier "local_44") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" (identifier "puVar13") (= "=") (pointer_expression "&uStack_90" (& "&") (identifier "uStack_90"))) (; ";")) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" (identifier "lVar5") (= "=") (identifier "local_6c")) (; ";")) (if_statement "if (local_34[0] != local_2c) {\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" (if "if") (parenthesized_expression "(local_34[0] != local_2c)" (( "(") (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n      FUN_003ae080(local_34[0]);\n      uVar16 = CONCAT44(local_44,local_40);\n      puVar13 = &uStack_90;\n      lVar5 = local_6c;\n    }" ({ "{") (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" (identifier "FUN_003ae080") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_44,local_40)" (identifier "CONCAT44") (argument_list "(local_44,local_40)" (( "(") (identifier "local_44") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "puVar13 = &uStack_90;" (assignment_expression "puVar13 = &uStack_90" (identifier "puVar13") (= "=") (pointer_expression "&uStack_90" (& "&") (identifier "uStack_90"))) (; ";")) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" (identifier "lVar5") (= "=") (identifier "local_6c")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar11 = local_60;" (assignment_expression "uVar11 = local_60" (identifier "uVar11") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" (identifier "local_6c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" (identifier "local_6c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(uint)lVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar5"))) (; ";")) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" (identifier "local_44") (= "=") (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" (identifier "local_40") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;" (assignment_expression "local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" (identifier "local_70") (= "=") (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e" (binary_expression "BYTE_ARRAY_0053d2b1 + unaff_EDI" (identifier "BYTE_ARRAY_0053d2b1") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x6e"))) (; ";")) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" (identifier "puVar12") (= "=") (pointer_expression "*(undefined4 **)local_70" (* "*") (cast_expression "(undefined4 **)local_70" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_70")))) (; ";")) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((int)local_40 + 8)" (* "*") (cast_expression "(int *)((int)local_40 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 8)" (( "(") (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" (identifier "lVar17") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" (identifier "lVar6") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" (identifier "local_84") (= "=") (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" (identifier "CONCAT44") (argument_list "(local_84._4_4_,(undefined4)local_84)" (( "(") (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(undefined4)local_84" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_84")) () ")")))) (; ";")) (if_statement "if ((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )) {\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" (if "if") (parenthesized_expression "((puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     ))" (( "(") (binary_expression "(puVar12[2] != 0) &&\n     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" (parenthesized_expression "(puVar12[2] != 0)" (( "(") (binary_expression "puVar12[2] != 0" (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0\n     )" (( "(") (comma_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0" (assignment_expression "local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84)" (identifier "local_84") (= "=") (call_expression "CONCAT44(local_84._4_4_,(undefined4)local_84)" (identifier "CONCAT44") (argument_list "(local_84._4_4_,(undefined4)local_84)" (( "(") (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(undefined4)local_84" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_84")) () ")")))) (, ",") (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" (( "(") (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" (* "*") (cast_expression "(byte *)(puVar12 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 5)" (( "(") (binary_expression "puVar12 + 5" (identifier "puVar12") (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    local_88 = *puVar12;\n    local_84 = local_4c;\n    if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }\n    *(uint *)((int)puVar13 + -0x10) = local_60;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;\n    local_6c = lVar5;\n    local_74 = (int *)FUN_002c6110();\n    *(uint *)((int)puVar13 + -0x10) = uVar11;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;\n    uVar8 = FUN_002c61a0();\n    iVar9 = *local_74;\n    *(undefined4 *)((int)puVar13 + -8) = uVar8;\n    *(int **)((int)puVar13 + -0xc) = local_74;\n    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;\n    pcVar3 = *(code **)(iVar9 + 0x40);\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;\n    (*pcVar3)();\n    *(uint *)((int)puVar13 + -0x14) = uVar11;\n    local_74 = (int *)local_34[0];\n                    \n    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;\n    iVar9 = FUN_002c6110();\n    uVar8 = *(undefined4 *)(iVar9 + 4);\n    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;\n    puVar10 = &UNK_003b9056 + unaff_EDI;\n    if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }\n    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;\n    *(longlong *)((int)puVar13 + -0x20) = local_4c;\n    *(int **)((int)puVar13 + -0x24) = local_74;\n    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;\n    *(undefined **)((int)puVar13 + -0x2c) = puVar10;\n    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;\n    *(undefined4 *)((int)puVar13 + -0x34) = local_88;\n    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;\n    FUN_0023b750();\n    lVar5 = local_6c;\n    lVar17 = local_5c;\n    lVar6 = local_4c;\n    if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }\n    uVar16 = CONCAT44(local_44,local_40);\n    puVar13 = (uint *)((int)puVar13 + -4);\n    iVar9 = *(int *)((int)local_40 + 8);\n  }" ({ "{") (expression_statement "local_88 = *puVar12;" (assignment_expression "local_88 = *puVar12" (identifier "local_88") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" (identifier "local_84") (= "=") (identifier "local_4c")) (; ";")) (if_statement "if (iVar9 != 0) {\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));\n    }" ({ "{") (expression_statement "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));" (assignment_expression "local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (identifier "local_84") (= "=") (call_expression "CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (identifier "CONCAT44") (argument_list "((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),\n                          (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (( "(") (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" (( "(") (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" (identifier "local_6c") (. ".") (field_identifier "_4_4_")) (- "-") (pointer_expression "*(int *)((int)local_40 + 0x14)" (* "*") (cast_expression "(int *)((int)local_40 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x14)" (( "(") (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (- "-") (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (( "(") (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_6c")) (< "<") (pointer_expression "*(uint *)((int)local_40 + 0x10)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (, ",") (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_6c")) (- "-") (pointer_expression "*(uint *)((int)local_40 + 0x10)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(uint *)((int)puVar13 + -0x10) = local_60;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = local_60" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" (* "*") (cast_expression "(uint *)((int)puVar13 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad618" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xad618")) (; ";")) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" (identifier "local_6c") (= "=") (identifier "lVar5")) (; ";")) (expression_statement "local_74 = (int *)FUN_002c6110();" (assignment_expression "local_74 = (int *)FUN_002c6110()" (identifier "local_74") (= "=") (cast_expression "(int *)FUN_002c6110()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c6110()" (identifier "FUN_002c6110") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(uint *)((int)puVar13 + -0x10) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x10) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x10)" (* "*") (cast_expression "(uint *)((int)puVar13 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad623" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xad623")) (; ";")) (expression_statement "uVar8 = FUN_002c61a0();" (assignment_expression "uVar8 = FUN_002c61a0()" (identifier "uVar8") (= "=") (call_expression "FUN_002c61a0()" (identifier "FUN_002c61a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar9 = *local_74;" (assignment_expression "iVar9 = *local_74" (identifier "iVar9") (= "=") (pointer_expression "*local_74" (* "*") (identifier "local_74"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -8) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -8) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -8)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -8)" (( "(") (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(int **)((int)puVar13 + -0xc) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0xc) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0xc)" (* "*") (cast_expression "(int **)((int)puVar13 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0xc)" (( "(") (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_74")) (; ";")) (expression_statement "*(undefined1 ***)((int)puVar13 + -0x10) = local_34;" (assignment_expression "*(undefined1 ***)((int)puVar13 + -0x10) = local_34" (pointer_expression "*(undefined1 ***)((int)puVar13 + -0x10)" (* "*") (cast_expression "(undefined1 ***)((int)puVar13 + -0x10)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar9 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar9 + 0x40)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar9 + 0x40)" (* "*") (cast_expression "(code **)(iVar9 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 0x40)" (( "(") (binary_expression "iVar9 + 0x40" (identifier "iVar9") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad636" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xad636")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(uint *)((int)puVar13 + -0x14) = uVar11;" (assignment_expression "*(uint *)((int)puVar13 + -0x14) = uVar11" (pointer_expression "*(uint *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(uint *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "local_74 = (int *)local_34[0];" (assignment_expression "local_74 = (int *)local_34[0]" (identifier "local_74") (= "=") (cast_expression "(int *)local_34[0]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad642" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x18)" (( "(") (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0xad642")) (; ";")) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" (identifier "iVar9") (= "=") (call_expression "FUN_002c6110()" (identifier "FUN_002c6110") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar8 = *(undefined4 *)(iVar9 + 4);" (assignment_expression "uVar8 = *(undefined4 *)(iVar9 + 4)" (identifier "uVar8") (= "=") (pointer_expression "*(undefined4 *)(iVar9 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_"))) (; ";")) (expression_statement "puVar10 = &UNK_003b9056 + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b9056 + unaff_EDI" (identifier "puVar10") (= "=") (binary_expression "&UNK_003b9056 + unaff_EDI" (pointer_expression "&UNK_003b9056" (& "&") (identifier "UNK_003b9056")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if ((char)local_64 == '\0') {\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" (if "if") (parenthesized_expression "((char)local_64 == '\0')" (( "(") (binary_expression "(char)local_64 == '\0'" (cast_expression "(char)local_64" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_64")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);\n    }" ({ "{") (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3f066d);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3f066d)" (identifier "puVar10") (= "=") (cast_expression "(undefined *)(unaff_EDI + 0x3f066d)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x3f066d)" (( "(") (binary_expression "unaff_EDI + 0x3f066d" (identifier "unaff_EDI") (+ "+") (number_literal "0x3f066d")) () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x18)" (( "(") (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (cast_expression "(undefined4)local_84" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_84"))) (; ";")) (expression_statement "*(longlong *)((int)puVar13 + -0x20) = local_4c;" (assignment_expression "*(longlong *)((int)puVar13 + -0x20) = local_4c" (pointer_expression "*(longlong *)((int)puVar13 + -0x20)" (* "*") (cast_expression "(longlong *)((int)puVar13 + -0x20)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x20)" (( "(") (binary_expression "(int)puVar13 + -0x20" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "*(int **)((int)puVar13 + -0x24) = local_74;" (assignment_expression "*(int **)((int)puVar13 + -0x24) = local_74" (pointer_expression "*(int **)((int)puVar13 + -0x24)" (* "*") (cast_expression "(int **)((int)puVar13 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0x24)" (( "(") (binary_expression "(int)puVar13 + -0x24" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "local_74")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x28) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x28) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x28)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x28)" (( "(") (binary_expression "(int)puVar13 + -0x28" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined **)((int)puVar13 + -0x2c) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0x2c) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0x2c)" (* "*") (cast_expression "(undefined **)((int)puVar13 + -0x2c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0x2c)" (( "(") (binary_expression "(int)puVar13 + -0x2c" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;" (assignment_expression "*(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b" (pointer_expression "*(int *)((int)puVar13 + -0x30)" (* "*") (cast_expression "(int *)((int)puVar13 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x30)" (( "(") (binary_expression "(int)puVar13 + -0x30" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x3b942b" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b942b"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x34) = local_88;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x34) = local_88" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x34)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x34)" (( "(") (binary_expression "(int)puVar13 + -0x34" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "local_88")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x38) = 0xad67c" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x38)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x38)" (( "(") (binary_expression "(int)puVar13 + -0x38" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (number_literal "0xad67c")) (; ";")) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" (identifier "FUN_0023b750") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" (identifier "lVar5") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" (identifier "lVar17") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" (identifier "lVar6") (= "=") (identifier "local_4c")) (; ";")) (if_statement "if (local_34[0] != local_2c) {\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" (if "if") (parenthesized_expression "(local_34[0] != local_2c)" (( "(") (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];\n      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;\n      FUN_003ae080();\n      lVar5 = local_6c;\n      lVar17 = local_5c;\n      lVar6 = local_4c;\n    }" ({ "{") (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0];" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = local_34[0]" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x18) = 0xad692" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x18)" (( "(") (binary_expression "(int)puVar13 + -0x18" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0xad692")) (; ";")) (expression_statement "FUN_003ae080();" (call_expression "FUN_003ae080()" (identifier "FUN_003ae080") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar5 = local_6c;" (assignment_expression "lVar5 = local_6c" (identifier "lVar5") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "lVar17 = local_5c;" (assignment_expression "lVar17 = local_5c" (identifier "lVar17") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "lVar6 = local_4c;" (assignment_expression "lVar6 = local_4c" (identifier "lVar6") (= "=") (identifier "local_4c")) (; ";")) (} "}"))) (expression_statement "uVar16 = CONCAT44(local_44,local_40);" (assignment_expression "uVar16 = CONCAT44(local_44,local_40)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(local_44,local_40)" (identifier "CONCAT44") (argument_list "(local_44,local_40)" (( "(") (identifier "local_44") (, ",") (identifier "local_40") () ")")))) (; ";")) (expression_statement "puVar13 = (uint *)((int)puVar13 + -4);" (assignment_expression "puVar13 = (uint *)((int)puVar13 + -4)" (identifier "puVar13") (= "=") (cast_expression "(uint *)((int)puVar13 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -4)" (( "(") (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "iVar9 = *(int *)((int)local_40 + 8);" (assignment_expression "iVar9 = *(int *)((int)local_40 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((int)local_40 + 8)" (* "*") (cast_expression "(int *)((int)local_40 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 8)" (( "(") (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);" (assignment_expression "local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20)" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar6")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)lVar6;" (assignment_expression "local_4c._0_4_ = (int *)lVar6" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)lVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "lVar6"))) (; ";")) (expression_statement "local_44 = (int)((ulonglong)uVar16 >> 0x20);" (assignment_expression "local_44 = (int)((ulonglong)uVar16 >> 0x20)" (identifier "local_44") (= "=") (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_40 = (uint *)uVar16;" (assignment_expression "local_40 = (uint *)uVar16" (identifier "local_40") (= "=") (cast_expression "(uint *)uVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);" (assignment_expression "local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20)" (field_expression "local_5c._4_4_" (identifier "local_5c") (. ".") (field_identifier "_4_4_")) (= "=") (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_5c._0_4_ = (undefined4)lVar17;" (assignment_expression "local_5c._0_4_ = (undefined4)lVar17" (field_expression "local_5c._0_4_" (identifier "local_5c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(undefined4)lVar17" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar17"))) (; ";")) (expression_statement "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20)" (field_expression "local_6c._4_4_" (identifier "local_6c") (. ".") (field_identifier "_4_4_")) (= "=") (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_6c._0_4_ = (uint)lVar5;" (assignment_expression "local_6c._0_4_ = (uint)lVar5" (field_expression "local_6c._0_4_" (identifier "local_6c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(uint)lVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar5"))) (; ";")) (if_statement "if (iVar9 == 0) {\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(uint *)((int)local_40 + 0x18) = local_60;\n    *(undefined4 *)((int)local_40 + 8) = 1;\n    *(int *)((int)local_40 + 0x1c) = local_44;\n    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;\n    *(uint *)((int)local_40 + 0xc) = local_54;\n    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;\n    return 1;\n  }" ({ "{") (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x18)" (( "(") (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 8)" (( "(") (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" (* "*") (cast_expression "(int *)((int)local_40 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x1c)" (( "(") (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_;" (assignment_expression "*(uint *)((int)local_40 + 0x14) = local_5c._4_4_" (pointer_expression "*(uint *)((int)local_40 + 0x14)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x14)" (( "(") (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (field_expression "local_5c._4_4_" (identifier "local_5c") (. ".") (field_identifier "_4_4_"))) (; ";")) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" (* "*") (cast_expression "(uint *)((int)local_40 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0xc)" (( "(") (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;" (assignment_expression "*(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c" (pointer_expression "*(undefined4 *)((int)local_40 + 0x10)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (cast_expression "(undefined4)local_5c" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_5c"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "cVar2 = *(char *)((int)local_40 + 6);" (assignment_expression "cVar2 = *(char *)((int)local_40 + 6)" (identifier "cVar2") (= "=") (pointer_expression "*(char *)((int)local_40 + 6)" (* "*") (cast_expression "(char *)((int)local_40 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 6)" (( "(") (binary_expression "(int)local_40 + 6" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "local_64 = CONCAT31(local_64._1_3_,cVar2);" (assignment_expression "local_64 = CONCAT31(local_64._1_3_,cVar2)" (identifier "local_64") (= "=") (call_expression "CONCAT31(local_64._1_3_,cVar2)" (identifier "CONCAT31") (argument_list "(local_64._1_3_,cVar2)" (( "(") (field_expression "local_64._1_3_" (identifier "local_64") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "cVar2") () ")")))) (; ";")) (expression_statement "local_5c = lVar17;" (assignment_expression "local_5c = lVar17" (identifier "local_5c") (= "=") (identifier "lVar17")) (; ";")) (expression_statement "local_6c = lVar5;" (assignment_expression "local_6c = lVar5" (identifier "local_6c") (= "=") (identifier "lVar5")) (; ";")) (if_statement "if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44))" (( "(") (binary_expression "(cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" (( "(") (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" (* "*") (cast_expression "(int *)((int)local_40 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x1c)" (( "(") (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (identifier "local_44")) () ")"))) () ")")) (compound_statement "{\n    if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }\n    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));\n    if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (iVar9 != 2) {\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" (if "if") (parenthesized_expression "(iVar9 != 2)" (( "(") (binary_expression "iVar9 != 2" (identifier "iVar9") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }\n      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }\n      plVar1 = (longlong *)((int)local_40 + 0x10);\n      local_84._0_4_ = *(undefined4 *)plVar1;\n      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);\n      local_7c = *(uint *)((int)local_40 + 0xc);\n      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);\n      local_78 = 0;\n      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;\n      bVar14 = local_7c < (int *)local_4c;\n      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;\n      puVar12 = *(undefined4 **)local_70;\n      local_4c._0_4_ = (int *)puVar12[2];\n      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;\n      uVar11 = (uint)bVar7;\n      lVar5 = *plVar1;\n      if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }\n      goto LAB_000ad6cc;\n    }" ({ "{") (if_statement "if (iVar9 != 1) {\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" (if "if") (parenthesized_expression "(iVar9 != 1)" (( "(") (binary_expression "iVar9 != 1" (identifier "iVar9") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        *(uint **)((int)puVar13 + -4) = local_40;\n        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;\n        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;\n        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;\n                    \n        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;\n        local_4c = lVar6;\n        FUN_002446e0();\n      }" ({ "{") (expression_statement "*(uint **)((int)puVar13 + -4) = local_40;" (assignment_expression "*(uint **)((int)puVar13 + -4) = local_40" (pointer_expression "*(uint **)((int)puVar13 + -4)" (* "*") (cast_expression "(uint **)((int)puVar13 + -4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -4)" (( "(") (binary_expression "(int)puVar13 + -4" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;" (assignment_expression "*(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97" (pointer_expression "*(int *)((int)puVar13 + -8)" (* "*") (cast_expression "(int *)((int)puVar13 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -8)" (( "(") (binary_expression "(int)puVar13 + -8" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x3b7e97" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b7e97"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0xc) = 0xc6b" (pointer_expression "*(undefined4 *)((int)puVar13 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0xc)" (( "(") (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0xc6b")) (; ";")) (expression_statement "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;" (assignment_expression "*(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI" (pointer_expression "*(undefined **)((int)puVar13 + -0x10)" (* "*") (cast_expression "(undefined **)((int)puVar13 + -0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "&UNK_003b901f + unaff_EDI" (pointer_expression "&UNK_003b901f" (& "&") (identifier "UNK_003b901f")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;" (assignment_expression "*(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3" (pointer_expression "*(undefined1 **)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined1 **)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&LAB_000ad9a3" (& "&") (identifier "LAB_000ad9a3"))) (; ";")) (expression_statement "local_4c = lVar6;" (assignment_expression "local_4c = lVar6" (identifier "local_4c") (= "=") (identifier "lVar6")) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" (if "if") (parenthesized_expression "(((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44))" (( "(") (binary_expression "((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)" (parenthesized_expression "((char)local_7c != '\0')" (( "(") (binary_expression "(char)local_7c != '\0'" (cast_expression "(char)local_7c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_7c")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) == local_44)" (( "(") (binary_expression "*(int *)((int)local_40 + 0x1c) == local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" (* "*") (cast_expression "(int *)((int)local_40 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x1c)" (( "(") (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (identifier "local_44")) () ")"))) () ")")) (compound_statement "{\nLAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;\n        *(int *)((int)local_40 + 0x1c) = local_44;\n        return 1;\n      }" ({ "{") (labeled_statement "LAB_000ad908:\n        *(uint *)((int)local_40 + 0x18) = local_60;" (statement_identifier "LAB_000ad908") (: ":") (expression_statement "*(uint *)((int)local_40 + 0x18) = local_60;" (assignment_expression "*(uint *)((int)local_40 + 0x18) = local_60" (pointer_expression "*(uint *)((int)local_40 + 0x18)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x18)" (( "(") (binary_expression "(int)local_40 + 0x18" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "local_60")) (; ";"))) (expression_statement "*(int *)((int)local_40 + 0x1c) = local_44;" (assignment_expression "*(int *)((int)local_40 + 0x1c) = local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" (* "*") (cast_expression "(int *)((int)local_40 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x1c)" (( "(") (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "plVar1 = (longlong *)((int)local_40 + 0x10);" (assignment_expression "plVar1 = (longlong *)((int)local_40 + 0x10)" (identifier "plVar1") (= "=") (cast_expression "(longlong *)((int)local_40 + 0x10)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_84._0_4_ = *(undefined4 *)plVar1;" (assignment_expression "local_84._0_4_ = *(undefined4 *)plVar1" (field_expression "local_84._0_4_" (identifier "local_84") (. ".") (field_identifier "_0_4_")) (= "=") (pointer_expression "*(undefined4 *)plVar1" (* "*") (cast_expression "(undefined4 *)plVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "plVar1")))) (; ";")) (expression_statement "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);" (assignment_expression "local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14)" (field_expression "local_84._4_4_" (identifier "local_84") (. ".") (field_identifier "_4_4_")) (= "=") (pointer_expression "*(undefined4 *)((int)local_40 + 0x14)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x14)" (( "(") (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_7c = *(uint *)((int)local_40 + 0xc);" (assignment_expression "local_7c = *(uint *)((int)local_40 + 0xc)" (identifier "local_7c") (= "=") (pointer_expression "*(uint *)((int)local_40 + 0xc)" (* "*") (cast_expression "(uint *)((int)local_40 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0xc)" (( "(") (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);" (assignment_expression "iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" (identifier "iVar9") (= "=") (cast_expression "(int)((ulonglong)(lVar5 - *plVar1) >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)(lVar5 - *plVar1) >> 0x20)" (( "(") (binary_expression "(ulonglong)(lVar5 - *plVar1) >> 0x20" (call_expression "(ulonglong)(lVar5 - *plVar1)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(lVar5 - *plVar1)" (( "(") (binary_expression "lVar5 - *plVar1" (identifier "lVar5") (- "-") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) () ")"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)\n      goto LAB_000ad908;" (if "if") (parenthesized_expression "(iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)" (( "(") (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)(lVar5 - *plVar1))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_7c < (uint)(lVar5 - *plVar1))" (( "(") (binary_expression "local_7c < (uint)(lVar5 - *plVar1)" (identifier "local_7c") (< "<") (call_expression "(uint)(lVar5 - *plVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(lVar5 - *plVar1)" (( "(") (binary_expression "lVar5 - *plVar1" (identifier "lVar5") (- "-") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) () ")")))) () ")"))) (<= "<=") (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar9")))) () ")")) (goto_statement "goto LAB_000ad908;" (goto "goto") (statement_identifier "LAB_000ad908") (; ";"))) (expression_statement "bVar14 = local_7c < (int *)local_4c;" (assignment_expression "bVar14 = local_7c < (int *)local_4c" (identifier "bVar14") (= "=") (binary_expression "local_7c < (int *)local_4c" (identifier "local_7c") (< "<") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")))) (; ";")) (expression_statement "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" (identifier "local_60") (= "=") (binary_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1" (call_expression "CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" (identifier "CONCAT31") (argument_list "(local_60._1_3_,*(undefined1 *)((int)local_40 + 4))" (( "(") (field_expression "local_60._1_3_" (identifier "local_60") (. ".") (field_identifier "_1_3_")) (, ",") (pointer_expression "*(undefined1 *)((int)local_40 + 4)" (* "*") (cast_expression "(undefined1 *)((int)local_40 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 4)" (( "(") (binary_expression "(int)local_40 + 4" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "4")) () ")")))) () ")"))) (^ "^") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" (identifier "puVar12") (= "=") (pointer_expression "*(undefined4 **)local_70" (* "*") (cast_expression "(undefined4 **)local_70" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_70")))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)puVar12[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;" (assignment_expression "bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" (identifier "bVar7") (= "=") (binary_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60" (parenthesized_expression "(local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_)" (( "(") (binary_expression "local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_" (binary_expression "local_4c._4_4_ == 0" (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)bVar14 <= (uint)-local_4c._4_4_" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (<= "<=") (binary_expression "(uint)-local_4c._4_4_" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (field_expression "local_4c._4_4_" (identifier "local_4c") (. ".") (field_identifier "_4_4_"))))) () ")")) (& "&") (cast_expression "(byte)local_60" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_60")))) (; ";")) (expression_statement "uVar11 = (uint)bVar7;" (assignment_expression "uVar11 = (uint)bVar7" (identifier "uVar11") (= "=") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7"))) (; ";")) (expression_statement "lVar5 = *plVar1;" (assignment_expression "lVar5 = *plVar1" (identifier "lVar5") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (if_statement "if ((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" (if "if") (parenthesized_expression "((bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9))" (( "(") (binary_expression "(bVar7 != 0) &&\n         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)" (( "(") (comma_expression "lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar17 = lVar17 - *plVar1" (identifier "lVar17") (= "=") (binary_expression "lVar17 - *plVar1" (identifier "lVar17") (- "-") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) (, ",") (comma_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "iVar9 = (int)((ulonglong)lVar17 >> 0x20)" (identifier "iVar9") (= "=") (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (, ",") (comma_expression "lVar5 = *plVar1,\n         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (assignment_expression "lVar5 = *plVar1" (identifier "lVar5") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (, ",") (binary_expression "iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(local_7c < (uint)lVar17) <= (uint)-iVar9" (call_expression "(uint)(local_7c < (uint)lVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_7c < (uint)lVar17)" (( "(") (binary_expression "local_7c < (uint)lVar17" (identifier "local_7c") (< "<") (cast_expression "(uint)lVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar17"))) () ")"))) (<= "<=") (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar9"))))))) () ")"))) () ")")) (compound_statement "{\n        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }\n        *(undefined4 *)((int)local_40 + 8) = 2;\n        *(longlong *)((int)local_40 + 0x10) = local_5c;\n        return uVar11;\n      }" ({ "{") (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" (if "if") (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" (( "(") (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" (( "(") (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" (( "(") (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" (* "*") (cast_expression "(byte *)(puVar12 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 5)" (( "(") (binary_expression "puVar12 + 5" (identifier "puVar12") (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          uVar11 = (uint)(int *)local_4c >> 8;\n          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);\n          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;\n          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;\n          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;\n          FUN_0023b750();\n          uVar11 = (uint)(int *)local_4c & 0xff;\n        }" ({ "{") (expression_statement "uVar11 = (uint)(int *)local_4c >> 8;" (assignment_expression "uVar11 = (uint)(int *)local_4c >> 8" (identifier "uVar11") (= "=") (binary_expression "(uint)(int *)local_4c >> 8" (cast_expression "(uint)(int *)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c"))) (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);" (assignment_expression "local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7)" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)CONCAT31((int3)uVar11,bVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT31((int3)uVar11,bVar7)" (identifier "CONCAT31") (argument_list "((int3)uVar11,bVar7)" (( "(") (cast_expression "(int3)uVar11" (( "(") (type_descriptor "int3" (type_identifier "int3")) () ")") (identifier "uVar11")) (, ",") (identifier "bVar7") () ")"))))) (; ";")) (expression_statement "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;" (assignment_expression "*(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2" (pointer_expression "*(int *)((int)puVar13 + -0xc)" (* "*") (cast_expression "(int *)((int)puVar13 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0xc)" (( "(") (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EDI + 0x3b90a2" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b90a2"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = *puVar12" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad884" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xad884")) (; ";")) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" (identifier "FUN_0023b750") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar11 = (uint)(int *)local_4c & 0xff;" (assignment_expression "uVar11 = (uint)(int *)local_4c & 0xff" (identifier "uVar11") (= "=") (binary_expression "(uint)(int *)local_4c & 0xff" (cast_expression "(uint)(int *)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c"))) (& "&") (number_literal "0xff"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 2;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 2" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 8)" (( "(") (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" (* "*") (cast_expression "(longlong *)((int)local_40 + 0x10)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}"))) (goto_statement "goto LAB_000ad6cc;" (goto "goto") (statement_identifier "LAB_000ad6cc") (; ";")) (} "}"))) (expression_statement "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));" (assignment_expression "iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (identifier "iVar9") (= "=") (binary_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -\n            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(local_6c._4_4_ - *(int *)((int)local_40 + 0x14))" (( "(") (binary_expression "local_6c._4_4_ - *(int *)((int)local_40 + 0x14)" (field_expression "local_6c._4_4_" (identifier "local_6c") (. ".") (field_identifier "_4_4_")) (- "-") (pointer_expression "*(int *)((int)local_40 + 0x14)" (* "*") (cast_expression "(int *)((int)local_40 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x14)" (( "(") (binary_expression "(int)local_40 + 0x14" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (- "-") (call_expression "(uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)local_6c < *(uint *)((int)local_40 + 0x10))" (( "(") (binary_expression "(uint)local_6c < *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_6c")) (< "<") (pointer_expression "*(uint *)((int)local_40 + 0x10)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")"))))) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9)" (( "(") (binary_expression "iVar9 == 0 &&\n        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=\n        (uint)-iVar9" (call_expression "(uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10))" (( "(") (binary_expression "*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)" (pointer_expression "*(uint *)((int)local_40 + 0xc)" (* "*") (cast_expression "(uint *)((int)local_40 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0xc)" (( "(") (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0xc")) () ")")))) (< "<") (binary_expression "(uint)local_6c - *(uint *)((int)local_40 + 0x10)" (cast_expression "(uint)local_6c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_6c")) (- "-") (pointer_expression "*(uint *)((int)local_40 + 0x10)" (* "*") (cast_expression "(uint *)((int)local_40 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")")))))) () ")"))) (<= "<=") (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar9")))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar12 = *(undefined4 **)local_70;" (assignment_expression "puVar12 = *(undefined4 **)local_70" (identifier "puVar12") (= "=") (pointer_expression "*(undefined4 **)local_70" (* "*") (cast_expression "(undefined4 **)local_70" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_70")))) (; ";")) (expression_statement "local_4c._0_4_ = (int *)puVar12[2];" (assignment_expression "local_4c._0_4_ = (int *)puVar12[2]" (field_expression "local_4c._0_4_" (identifier "local_4c") (. ".") (field_identifier "_0_4_")) (= "=") (cast_expression "(int *)puVar12[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "lVar5 = local_84;" (assignment_expression "lVar5 = local_84" (identifier "lVar5") (= "=") (identifier "local_84")) (; ";")) (labeled_statement "LAB_000ad6cc:\n  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" (statement_identifier "LAB_000ad6cc") (: ":") (if_statement "if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" (if "if") (parenthesized_expression "(((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0))" (( "(") (binary_expression "((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)" (parenthesized_expression "((int *)local_4c != (int *)0x0)" (( "(") (binary_expression "(int *)local_4c != (int *)0x0" (cast_expression "(int *)local_4c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_4c")) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar12 + 5) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(puVar12 + 5) & 0x40) != 0" (parenthesized_expression "(*(byte *)(puVar12 + 5) & 0x40)" (( "(") (binary_expression "*(byte *)(puVar12 + 5) & 0x40" (pointer_expression "*(byte *)(puVar12 + 5)" (* "*") (cast_expression "(byte *)(puVar12 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 5)" (( "(") (binary_expression "puVar12 + 5" (identifier "puVar12") (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar8 = *puVar12;\n    puVar10 = &UNK_003b905d + unaff_EDI;\n    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }\n    *(undefined **)((int)puVar13 + -0xc) = puVar10;\n    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;\n    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;\n    local_84 = lVar5;\n    FUN_0023b750();\n  }" ({ "{") (expression_statement "uVar8 = *puVar12;" (assignment_expression "uVar8 = *puVar12" (identifier "uVar8") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "puVar10 = &UNK_003b905d + unaff_EDI;" (assignment_expression "puVar10 = &UNK_003b905d + unaff_EDI" (identifier "puVar10") (= "=") (binary_expression "&UNK_003b905d + unaff_EDI" (pointer_expression "&UNK_003b905d" (& "&") (identifier "UNK_003b905d")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" (if "if") (parenthesized_expression "((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44))" (( "(") (binary_expression "(cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)" (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)((int)local_40 + 0x1c) != local_44)" (( "(") (binary_expression "*(int *)((int)local_40 + 0x1c) != local_44" (pointer_expression "*(int *)((int)local_40 + 0x1c)" (* "*") (cast_expression "(int *)((int)local_40 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x1c)" (( "(") (binary_expression "(int)local_40 + 0x1c" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (identifier "local_44")) () ")"))) () ")")) (compound_statement "{\n      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);\n    }" ({ "{") (expression_statement "puVar10 = (undefined *)(unaff_EDI + 0x3b906f);" (assignment_expression "puVar10 = (undefined *)(unaff_EDI + 0x3b906f)" (identifier "puVar10") (= "=") (cast_expression "(undefined *)(unaff_EDI + 0x3b906f)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x3b906f)" (( "(") (binary_expression "unaff_EDI + 0x3b906f" (identifier "unaff_EDI") (+ "+") (number_literal "0x3b906f")) () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined **)((int)puVar13 + -0xc) = puVar10;" (assignment_expression "*(undefined **)((int)puVar13 + -0xc) = puVar10" (pointer_expression "*(undefined **)((int)puVar13 + -0xc)" (* "*") (cast_expression "(undefined **)((int)puVar13 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar13 + -0xc)" (( "(") (binary_expression "(int)puVar13 + -0xc" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x10)" (( "(") (binary_expression "(int)puVar13 + -0x10" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;" (assignment_expression "*(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7" (pointer_expression "*(undefined4 *)((int)puVar13 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar13 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + -0x14)" (( "(") (binary_expression "(int)puVar13 + -0x14" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xad6f7")) (; ";")) (expression_statement "local_84 = lVar5;" (assignment_expression "local_84 = lVar5" (identifier "local_84") (= "=") (identifier "lVar5")) (; ";")) (expression_statement "FUN_0023b750();" (call_expression "FUN_0023b750()" (identifier "FUN_0023b750") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*(uint *)((int)local_40 + 0xc) = local_54;" (assignment_expression "*(uint *)((int)local_40 + 0xc) = local_54" (pointer_expression "*(uint *)((int)local_40 + 0xc)" (* "*") (cast_expression "(uint *)((int)local_40 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0xc)" (( "(") (binary_expression "(int)local_40 + 0xc" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(undefined4 *)((int)local_40 + 8) = 1;" (assignment_expression "*(undefined4 *)((int)local_40 + 8) = 1" (pointer_expression "*(undefined4 *)((int)local_40 + 8)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 8)" (( "(") (binary_expression "(int)local_40 + 8" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(longlong *)((int)local_40 + 0x10) = local_5c;" (assignment_expression "*(longlong *)((int)local_40 + 0x10) = local_5c" (pointer_expression "*(longlong *)((int)local_40 + 0x10)" (* "*") (cast_expression "(longlong *)((int)local_40 + 0x10)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + 0x10)" (( "(") (binary_expression "(int)local_40 + 0x10" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* DWARF original prototype: bool can_add_to_stub_group(Stub_control * this, Output_section * o,
   Input_section * i, bool has14) */

bool __thiscall
anon_unknown.dwarf_6462d4::type_1::function_1
          (type_1 *this,type_2 *o,type_3 *i,bool has14)

{
  char var_24;
  type_4 **pp_Var2;
  type_4 *p_Var3;
  type_5 pcVar4;
  type_6 uVar5;
  type_7 var_13;
  type_7 var_26;
  type_7 var_25;
  type_3 *pIVar9;
  type_8 var_3;
  type_9 *pRVar11;
  type_10 uVar12;
  type_11 *puVar13;
  char *format;
  type_3 *this_00;
  type_6 *var_21;
  type_1 **ppSVar15;
  int var_22;
  int var_6;
  bool bVar17;
  type_12 uVar18;
  type_6 auStack_a8 [2];
  type_1 *pSStack_90;
  type_13 auStack_8c [4];
  type_6 local_88;
  type_5 local_84;
  int local_80;
  type_10 var_12;
  type_6 local_78;
  type_9 *local_74;
  type_9 *local_70;
  type_12 local_6c;
  type_1 *local_64;
  type_3 *local_60;
  type_12 var_10;
  type_10 var_15;
  type_6 local_50;
  type_12 var_14;
  int var_2;
  type_10 *local_40;
  type_13 *local_34 [2];
  type_13 var_18 [28];
  
  uVar18 = var_1();
  var_2 = (int)((type_14)uVar18 >> 0x20);
  local_40 = (type_10 *)uVar18;
  local_64 = this;
  var_3 = *(type_8 *)(var_2 + 0x1c) & 1;
  local_60 = this_00;
  if ((*(int *)(var_2 + 0x5c) == 6) || (*(int *)(var_2 + 0x5c) == 0xd)) {
    if (var_3 == 0) goto LAB_000ad952;
    var_3 = *(type_8 *)(var_2 + 0x1c) >> 1;
    var_10._0_4_ = *(type_6 *)(var_2 + 4);
    pSStack_90 = *(type_1 **)(var_2 + 8);
    var_13 = *(type_7 *)(var_2 + 4);
    var_12 = var_4(var_12._1_3_,var_3) & 0xffffff01;
    if ((var_3 & 1) == 0) {
      var_10._4_4_ = pSStack_90;
                    /* WARNING: Subroutine does not return */
      gold::var_5((char *)(var_6 + 0x39feb4),0xcf,&UNK_003b85d3 + var_6);
    }
    var_14 = *(type_7 *)(var_2 + 0xc);
  }
  else {
    if (var_3 == 0) {
LAB_000ad952:
      pSStack_90 = this;
                    /* WARNING: Subroutine does not return */
      gold::var_5((char *)(var_6 + 0x39feb4),0xc5,(char *)(var_6 + 0x3b84cb));
    }
    local_50 = *(type_6 *)(var_2 + 8);
    var_15 = *(type_6 *)(var_2 + 4);
    pRVar11 = gold::Output_section::Input_section::var_7(this_00);
    var_14 = var_8(var_14._4_4_,pRVar11);
    uVar12 = gold::Output_section::Input_section::var_9(this_00);
    var_10 = (**(type_15 **)(*(int *)var_14 + 0x68))((int *)var_14,uVar12);
    var_10 = var_10 + var_8(local_50,var_15);
    var_14 = gold::Output_section::Input_section::var_11(this_00);
    uVar18 = var_8(var_2,local_40);
    var_12 = var_12 & 0xffffff00;
    var_13 = var_10;
  }
  pIVar9 = local_60;
  var_2 = (int)((type_14)uVar18 >> 0x20);
  local_40 = (type_10 *)uVar18;
  local_6c = var_13 + var_14;
  var_15 = *local_40;
  if ((char)local_64 != '\0') {
    var_15 = var_15 >> 10;
    local_40[3] = var_15;
  }
  ppSVar15 = (type_1 **)auStack_8c;
  var_10 = var_13;
  var_13 = local_6c;
  if ((var_14._4_4_ != 0 || (type_10)-var_14._4_4_ < (type_10)(var_15 < (int *)var_14)) &&
     (ppSVar15 = (type_1 **)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {
    local_70 = gold::Output_section::Input_section::var_7(local_60);
    uVar12 = gold::Output_section::Input_section::var_9(pIVar9);
    (*(local_70->super_Object)._vptr_Object[0x10])(local_34,local_70,uVar12);
    local_70 = (type_9 *)local_34[0];
                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */
    pRVar11 = gold::Output_section::Input_section::var_7(pIVar9);
    local_84 = (pRVar11->super_Object).name_._M_dataplus._M_p;
    format = (char *)var_16(var_6 + 0x3b9089);
    gold::var_17(format,local_84,local_70);
    uVar18 = var_8(var_2,local_40);
    ppSVar15 = &pSStack_90;
    var_13 = local_6c;
    if (local_34[0] != var_18) {
      var_19(local_34[0]);
      uVar18 = var_8(var_2,local_40);
      ppSVar15 = &pSStack_90;
      var_13 = local_6c;
    }
  }
  pIVar9 = local_60;
  local_6c._4_4_ = (int)((type_14)var_13 >> 0x20);
  local_6c._0_4_ = (type_10)var_13;
  var_2 = (int)((type_14)uVar18 >> 0x20);
  local_40 = (type_10 *)uVar18;
  local_70 = (type_9 *)(var_20 + var_6 + 0x6e);
  var_21 = *(type_6 **)local_70;
  var_22 = *(int *)((int)local_40 + 8);
  var_26 = var_10;
  if ((var_21[2] != 0) && ((*(type_8 *)(var_21 + 5) & 0x40) != 0)) {
    local_88 = *var_21;
    local_84 = (type_5)(int *)var_14;
    local_80 = var_14._4_4_;
    if (var_22 != 0) {
      local_84 = (type_5)((type_10)local_6c - *(type_10 *)((int)local_40 + 0x10));
      local_80 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
                 (type_10)((type_10)local_6c < *(type_10 *)((int)local_40 + 0x10));
    }
    *(type_3 **)((int)ppSVar15 + -0x10) = local_60;
    *(type_6 *)((int)ppSVar15 + -0x14) = 0xad618;
    local_6c = var_13;
    local_74 = gold::Output_section::Input_section::var_7
                         (*(type_3 **)((int)ppSVar15 + -0x10));
    *(type_3 **)((int)ppSVar15 + -0x10) = pIVar9;
    *(type_6 *)((int)ppSVar15 + -0x14) = 0xad623;
    uVar12 = gold::Output_section::Input_section::var_9(*(type_3 **)((int)ppSVar15 + -0x10));
    pp_Var2 = (local_74->super_Object)._vptr_Object;
    *(type_10 *)((int)ppSVar15 + -8) = uVar12;
    *(type_9 **)((int)ppSVar15 + -0xc) = local_74;
    *(type_13 ***)((int)ppSVar15 + -0x10) = local_34;
    p_Var3 = pp_Var2[0x10];
    *(type_6 *)((int)ppSVar15 + -0x14) = 0xad636;
    (*p_Var3)();
    *(type_3 **)((int)ppSVar15 + -0x14) = pIVar9;
    local_74 = (type_9 *)local_34[0];
                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */
    *(type_6 *)((int)ppSVar15 + -0x18) = 0xad642;
    pRVar11 = gold::Output_section::Input_section::var_7
                        (*(type_3 **)((int)ppSVar15 + -0x14));
    pcVar4 = (pRVar11->super_Object).name_._M_dataplus._M_p;
    *(int *)((int)ppSVar15 + -0x14) = local_80;
    puVar13 = &UNK_003b9056 + var_6;
    if ((char)local_64 == '\0') {
      puVar13 = (type_11 *)(var_6 + 0x3f066d);
    }
    *(type_5 *)((int)ppSVar15 + -0x18) = local_84;
    *(int *)((int)ppSVar15 + -0x1c) = var_14._4_4_;
    *(int **)((int)ppSVar15 + -0x20) = (int *)var_14;
    *(type_9 **)((int)ppSVar15 + -0x24) = local_74;
    *(type_5 *)((int)ppSVar15 + -0x28) = pcVar4;
    *(type_11 **)((int)ppSVar15 + -0x2c) = puVar13;
    *(int *)((int)ppSVar15 + -0x30) = var_6 + 0x3b942b;
    *(type_6 *)((int)ppSVar15 + -0x34) = local_88;
    *(type_6 *)((int)ppSVar15 + -0x38) = 0xad67c;
    gold::Errors::var_23(*(type_16 **)((int)ppSVar15 + -0x34),*(char **)((int)ppSVar15 + -0x30));
    var_26 = var_10;
    var_13 = local_6c;
    if (local_34[0] != var_18) {
      *(type_13 **)((int)ppSVar15 + -0x14) = local_34[0];
      *(type_6 *)((int)ppSVar15 + -0x18) = 0xad692;
      var_19(*(void **)((int)ppSVar15 + -0x14));
      var_26 = var_10;
      var_13 = local_6c;
    }
    uVar18 = var_8(var_2,local_40);
    ppSVar15 = (type_1 **)((int)ppSVar15 + -4);
    var_22 = *(int *)((int)local_40 + 8);
  }
  local_6c._4_4_ = (int)((type_14)var_13 >> 0x20);
  local_6c._0_4_ = (type_10)var_13;
  var_2 = (int)((type_14)uVar18 >> 0x20);
  local_40 = (type_10 *)uVar18;
  var_10._4_4_ = (type_1 *)((type_14)var_26 >> 0x20);
  var_10._0_4_ = (type_6)var_26;
  if (var_22 == 0) {
    *(type_3 **)((int)local_40 + 0x18) = local_60;
    *(type_6 *)((int)local_40 + 8) = 1;
    *(int *)((int)local_40 + 0x1c) = var_2;
    *(type_1 **)((int)local_40 + 0x14) = var_10._4_4_;
    *(type_10 *)((int)local_40 + 0xc) = var_15;
    *(type_6 *)((int)local_40 + 0x10) = (type_6)var_10;
    return true;
  }
  var_24 = *(char *)((int)local_40 + 6);
  local_64 = (type_1 *)var_4(local_64._1_3_,var_24);
  var_10 = var_26;
  local_6c = var_13;
  if ((var_24 != '\0') || (*(int *)((int)local_40 + 0x1c) == var_2)) {
    if (var_22 != 2) {
      if (var_22 != 1) {
        *(type_10 **)((int)ppSVar15 + -4) = local_40;
        *(type_11 **)((int)ppSVar15 + -8) = &UNK_003b7e97 + var_6;
        *(type_6 *)((int)ppSVar15 + -0xc) = 0xc6b;
        *(type_11 **)((int)ppSVar15 + -0x10) = &UNK_003b901f + var_6;
                    /* WARNING: Subroutine does not return */
        *(type_13 **)((int)ppSVar15 + -0x14) = &LAB_000ad9a3;
        gold::var_5
                  (*(char **)((int)ppSVar15 + -0x10),*(int *)((int)ppSVar15 + -0xc),
                   *(char **)((int)ppSVar15 + -8));
      }
      if (((char)var_12 != '\0') && (*(int *)((int)local_40 + 0x1c) == var_2)) {
LAB_000ad908:
        *(type_3 **)((int)local_40 + 0x18) = local_60;
        *(int *)((int)local_40 + 0x1c) = var_2;
        return true;
      }
      local_84 = *(type_5 *)((int)local_40 + 0x10);
      local_80 = *(int *)((int)local_40 + 0x14);
      var_25 = *(type_7 *)((int)local_40 + 0x10);
      var_12 = *(type_10 *)((int)local_40 + 0xc);
      var_13 = var_13 - var_25;
      var_22 = (int)((type_14)var_13 >> 0x20);
      local_78 = 0;
      if (var_22 == 0 && (type_10)(var_12 < (type_10)var_13) <= (type_10)-var_22) goto LAB_000ad908;
      bVar17 = var_12 < (int *)var_14;
      local_60 = (type_3 *)(var_4(local_60._1_3_,*(type_13 *)((int)local_40 + 4)) ^ 1);
      var_21 = *(type_6 **)local_70;
      var_14 = var_8(var_14._4_4_,var_21[2]);
      var_3 = (var_14._4_4_ == 0 && (type_10)bVar17 <= (type_10)-var_14._4_4_) & (type_8)local_60;
      if ((var_3 != 0) &&
         (var_26 = var_26 - var_25, var_22 = (int)((type_14)var_26 >> 0x20),
         var_22 == 0 && (type_10)(var_12 < (type_10)var_26) <= (type_10)-var_22)) {
        if ((var_21[2] != 0) && ((*(type_8 *)(var_21 + 5) & 0x40) != 0)) {
          var_14 = var_27(var_14._1_7_,var_3);
          *(int *)((int)ppSVar15 + -0xc) = var_6 + 0x3b90a2;
          *(type_6 *)((int)ppSVar15 + -0x10) = *var_21;
          *(type_6 *)((int)ppSVar15 + -0x14) = 0xad884;
          gold::Errors::var_23(*(type_16 **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));
          var_3 = (type_8)var_14;
        }
        *(type_6 *)((int)local_40 + 8) = 2;
        *(type_7 *)((int)local_40 + 0x10) = var_10;
        return (bool)var_3;
      }
      goto LAB_000ad6cc;
    }
    var_22 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
             (type_10)((type_10)local_6c < *(type_10 *)((int)local_40 + 0x10));
    if (var_22 == 0 &&
        (type_10)(*(type_10 *)((int)local_40 + 0xc) < (type_10)local_6c - *(type_10 *)((int)local_40 + 0x10)) <=
        (type_10)-var_22) {
      return true;
    }
  }
  var_21 = *(type_6 **)local_70;
  var_14 = var_8(var_14._4_4_,var_21[2]);
LAB_000ad6cc:
  if (((int *)var_14 != (int *)0x0) && ((*(type_8 *)(var_21 + 5) & 0x40) != 0)) {
    uVar5 = *var_21;
    puVar13 = &UNK_003b905d + var_6;
    if ((var_24 == '\0') && (*(int *)((int)local_40 + 0x1c) != var_2)) {
      puVar13 = (type_11 *)(var_6 + 0x3b906f);
    }
    *(type_11 **)((int)ppSVar15 + -0xc) = puVar13;
    *(type_6 *)((int)ppSVar15 + -0x10) = uVar5;
    *(type_6 *)((int)ppSVar15 + -0x14) = 0xad6f7;
    gold::Errors::var_23(*(type_16 **)((int)ppSVar15 + -0x10),*(char **)((int)ppSVar15 + -0xc));
  }
  *(type_10 *)((int)local_40 + 0xc) = var_15;
  *(type_6 *)((int)local_40 + 8) = 1;
  *(type_7 *)((int)local_40 + 0x10) = var_10;
  return false;
}


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

uint MASKED(uint param_1)

{
  longlong *plVar1;
  char cVar2;
  code *pcVar3;
  uint uVar4;
  longlong lVar5;
  longlong lVar6;
  byte bVar7;
  undefined4 uVar8;
  int iVar9;
  undefined *puVar10;
  uint uVar11;
  uint extraout_ECX;
  undefined4 *puVar12;
  uint *puVar13;
  int unaff_EDI;
  bool bVar14;
  bool bVar15;
  undefined8 uVar16;
  longlong lVar17;
  undefined4 auStackY_a8 [2];
  uint uStack_90;
  undefined1 auStack_8c [4];
  undefined4 local_88;
  undefined8 local_84;
  uint local_7c;
  undefined4 local_78;
  int *local_74;
  byte *local_70;
  undefined8 local_6c;
  uint local_64;
  uint local_60;
  undefined8 local_5c;
  uint local_54;
  undefined4 local_50;
  undefined8 local_4c;
  int local_44;
  uint *local_40;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  uVar16 = FUN_00074f0a();
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_64 = param_1;
  bVar7 = *(byte *)(local_44 + 0x1c) & 1;
  local_60 = extraout_ECX;
  if ((*(int *)(local_44 + 0x5c) == 6) || (*(int *)(local_44 + 0x5c) == 0xd)) {
    if (bVar7 == 0) goto LAB_000ad952;
    bVar7 = *(byte *)(local_44 + 0x1c) >> 1;
    local_5c._0_4_ = *(undefined4 *)(local_44 + 4);
    uStack_90 = *(uint *)(local_44 + 8);
    lVar5 = *(longlong *)(local_44 + 4);
    local_7c = CONCAT31(local_7c._1_3_,bVar7) & 0xffffff01;
    if ((bVar7 & 1) == 0) {
      local_5c._4_4_ = uStack_90;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xcf,unaff_EDI + 0x3b85d3);
    }
    lVar17 = *(longlong *)(local_44 + 0xc);
  }
  else {
    if (bVar7 == 0) {
LAB_000ad952:
      uStack_90 = param_1;
                    /* WARNING: Subroutine does not return */
      FUN_002446e0(&UNK_0039feb4 + unaff_EDI,0xc5,unaff_EDI + 0x3b84cb);
    }
    local_50 = *(undefined4 *)(local_44 + 8);
    local_54 = *(undefined4 *)(local_44 + 4);
    local_4c._0_4_ = (int *)FUN_002c6110(extraout_ECX);
    uVar8 = FUN_002c61a0(extraout_ECX);
    local_5c = (**(code **)(*(int *)local_4c + 0x68))((int *)local_4c,uVar8);
    local_5c = local_5c + CONCAT44(local_50,local_54);
    lVar17 = FUN_002c60d0(extraout_ECX);
    uVar16 = CONCAT44(local_44,local_40);
    local_7c = local_7c & 0xffffff00;
    lVar5 = local_5c;
  }
  uVar11 = local_60;
  local_4c._4_4_ = (int)((ulonglong)lVar17 >> 0x20);
  local_4c._0_4_ = (int *)lVar17;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_6c = lVar17 + lVar5;
  local_54 = *local_40;
  if ((char)local_64 != '\0') {
    local_54 = local_54 >> 10;
    local_40[3] = local_54;
  }
  bVar14 = local_54 < (int *)local_4c;
  bVar15 = local_4c._4_4_ != 0;
  uVar4 = -local_4c._4_4_;
  puVar13 = (uint *)auStack_8c;
  local_5c = lVar5;
  lVar5 = local_6c;
  local_4c = lVar17;
  if ((bVar15 || uVar4 < bVar14) &&
     (puVar13 = (uint *)auStack_8c, *(char *)((int)local_40 + 5) == '\0')) {
    local_70 = (byte *)FUN_002c6110(local_60);
    uVar8 = FUN_002c61a0(uVar11);
    (**(code **)(*(int *)local_70 + 0x40))(local_34,local_70,uVar8);
    local_70 = local_34[0];
                    /* try { // try from 000ad760 to 000ad788 has its CatchHandler @ 000ad9aa */
    iVar9 = FUN_002c6110(uVar11);
    local_84._0_4_ = *(undefined4 *)(iVar9 + 4);
    uVar8 = gettext(unaff_EDI + 0x3b9089);
    FUN_0023b840(uVar8,(undefined4)local_84,local_70);
    uVar16 = CONCAT44(local_44,local_40);
    puVar13 = &uStack_90;
    lVar5 = local_6c;
    if (local_34[0] != local_2c) {
      FUN_003ae080(local_34[0]);
      uVar16 = CONCAT44(local_44,local_40);
      puVar13 = &uStack_90;
      lVar5 = local_6c;
    }
  }
  uVar11 = local_60;
  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);
  local_6c._0_4_ = (uint)lVar5;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_70 = BYTE_ARRAY_0053d2b1 + unaff_EDI + 0x6e;
  puVar12 = *(undefined4 **)local_70;
  iVar9 = *(int *)((int)local_40 + 8);
  lVar17 = local_5c;
  lVar6 = local_4c;
  local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84);
  if ((puVar12[2] != 0) &&
     (local_84 = CONCAT44(local_84._4_4_,(undefined4)local_84), (*(byte *)(puVar12 + 5) & 0x40) != 0
     )) {
    local_88 = *puVar12;
    local_84 = local_4c;
    if (iVar9 != 0) {
      local_84 = CONCAT44((local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
                          (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10)),
                          (uint)local_6c - *(uint *)((int)local_40 + 0x10));
    }
    *(uint *)((int)puVar13 + -0x10) = local_60;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad618;
    local_6c = lVar5;
    local_74 = (int *)FUN_002c6110();
    *(uint *)((int)puVar13 + -0x10) = uVar11;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad623;
    uVar8 = FUN_002c61a0();
    iVar9 = *local_74;
    *(undefined4 *)((int)puVar13 + -8) = uVar8;
    *(int **)((int)puVar13 + -0xc) = local_74;
    *(undefined1 ***)((int)puVar13 + -0x10) = local_34;
    pcVar3 = *(code **)(iVar9 + 0x40);
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad636;
    (*pcVar3)();
    *(uint *)((int)puVar13 + -0x14) = uVar11;
    local_74 = (int *)local_34[0];
                    /* try { // try from 000ad63d to 000ad67b has its CatchHandler @ 000ad9a3 */
    *(undefined4 *)((int)puVar13 + -0x18) = 0xad642;
    iVar9 = FUN_002c6110();
    uVar8 = *(undefined4 *)(iVar9 + 4);
    *(undefined4 *)((int)puVar13 + -0x14) = local_84._4_4_;
    puVar10 = &UNK_003b9056 + unaff_EDI;
    if ((char)local_64 == '\0') {
      puVar10 = (undefined *)(unaff_EDI + 0x3f066d);
    }
    *(undefined4 *)((int)puVar13 + -0x18) = (undefined4)local_84;
    *(longlong *)((int)puVar13 + -0x20) = local_4c;
    *(int **)((int)puVar13 + -0x24) = local_74;
    *(undefined4 *)((int)puVar13 + -0x28) = uVar8;
    *(undefined **)((int)puVar13 + -0x2c) = puVar10;
    *(int *)((int)puVar13 + -0x30) = unaff_EDI + 0x3b942b;
    *(undefined4 *)((int)puVar13 + -0x34) = local_88;
    *(undefined4 *)((int)puVar13 + -0x38) = 0xad67c;
    FUN_0023b750();
    lVar5 = local_6c;
    lVar17 = local_5c;
    lVar6 = local_4c;
    if (local_34[0] != local_2c) {
      *(undefined1 **)((int)puVar13 + -0x14) = local_34[0];
      *(undefined4 *)((int)puVar13 + -0x18) = 0xad692;
      FUN_003ae080();
      lVar5 = local_6c;
      lVar17 = local_5c;
      lVar6 = local_4c;
    }
    uVar16 = CONCAT44(local_44,local_40);
    puVar13 = (uint *)((int)puVar13 + -4);
    iVar9 = *(int *)((int)local_40 + 8);
  }
  local_4c._4_4_ = (int)((ulonglong)lVar6 >> 0x20);
  local_4c._0_4_ = (int *)lVar6;
  local_44 = (int)((ulonglong)uVar16 >> 0x20);
  local_40 = (uint *)uVar16;
  local_5c._4_4_ = (uint)((ulonglong)lVar17 >> 0x20);
  local_5c._0_4_ = (undefined4)lVar17;
  local_6c._4_4_ = (int)((ulonglong)lVar5 >> 0x20);
  local_6c._0_4_ = (uint)lVar5;
  if (iVar9 == 0) {
    *(uint *)((int)local_40 + 0x18) = local_60;
    *(undefined4 *)((int)local_40 + 8) = 1;
    *(int *)((int)local_40 + 0x1c) = local_44;
    *(uint *)((int)local_40 + 0x14) = local_5c._4_4_;
    *(uint *)((int)local_40 + 0xc) = local_54;
    *(undefined4 *)((int)local_40 + 0x10) = (undefined4)local_5c;
    return 1;
  }
  cVar2 = *(char *)((int)local_40 + 6);
  local_64 = CONCAT31(local_64._1_3_,cVar2);
  local_5c = lVar17;
  local_6c = lVar5;
  if ((cVar2 != '\0') || (*(int *)((int)local_40 + 0x1c) == local_44)) {
    if (iVar9 != 2) {
      if (iVar9 != 1) {
        *(uint **)((int)puVar13 + -4) = local_40;
        *(int *)((int)puVar13 + -8) = unaff_EDI + 0x3b7e97;
        *(undefined4 *)((int)puVar13 + -0xc) = 0xc6b;
        *(undefined **)((int)puVar13 + -0x10) = &UNK_003b901f + unaff_EDI;
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)((int)puVar13 + -0x14) = &LAB_000ad9a3;
        local_4c = lVar6;
        FUN_002446e0();
      }
      if (((char)local_7c != '\0') && (*(int *)((int)local_40 + 0x1c) == local_44)) {
LAB_000ad908:
        *(uint *)((int)local_40 + 0x18) = local_60;
        *(int *)((int)local_40 + 0x1c) = local_44;
        return 1;
      }
      plVar1 = (longlong *)((int)local_40 + 0x10);
      local_84._0_4_ = *(undefined4 *)plVar1;
      local_84._4_4_ = *(undefined4 *)((int)local_40 + 0x14);
      local_7c = *(uint *)((int)local_40 + 0xc);
      iVar9 = (int)((ulonglong)(lVar5 - *plVar1) >> 0x20);
      local_78 = 0;
      if (iVar9 == 0 && (uint)(local_7c < (uint)(lVar5 - *plVar1)) <= (uint)-iVar9)
      goto LAB_000ad908;
      bVar14 = local_7c < (int *)local_4c;
      local_60 = CONCAT31(local_60._1_3_,*(undefined1 *)((int)local_40 + 4)) ^ 1;
      puVar12 = *(undefined4 **)local_70;
      local_4c._0_4_ = (int *)puVar12[2];
      bVar7 = (local_4c._4_4_ == 0 && (uint)bVar14 <= (uint)-local_4c._4_4_) & (byte)local_60;
      uVar11 = (uint)bVar7;
      lVar5 = *plVar1;
      if ((bVar7 != 0) &&
         (lVar17 = lVar17 - *plVar1, iVar9 = (int)((ulonglong)lVar17 >> 0x20), lVar5 = *plVar1,
         iVar9 == 0 && (uint)(local_7c < (uint)lVar17) <= (uint)-iVar9)) {
        if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {
          uVar11 = (uint)(int *)local_4c >> 8;
          local_4c._0_4_ = (int *)CONCAT31((int3)uVar11,bVar7);
          *(int *)((int)puVar13 + -0xc) = unaff_EDI + 0x3b90a2;
          *(undefined4 *)((int)puVar13 + -0x10) = *puVar12;
          *(undefined4 *)((int)puVar13 + -0x14) = 0xad884;
          FUN_0023b750();
          uVar11 = (uint)(int *)local_4c & 0xff;
        }
        *(undefined4 *)((int)local_40 + 8) = 2;
        *(longlong *)((int)local_40 + 0x10) = local_5c;
        return uVar11;
      }
      goto LAB_000ad6cc;
    }
    iVar9 = (local_6c._4_4_ - *(int *)((int)local_40 + 0x14)) -
            (uint)((uint)local_6c < *(uint *)((int)local_40 + 0x10));
    if (iVar9 == 0 &&
        (uint)(*(uint *)((int)local_40 + 0xc) < (uint)local_6c - *(uint *)((int)local_40 + 0x10)) <=
        (uint)-iVar9) {
      return 1;
    }
  }
  puVar12 = *(undefined4 **)local_70;
  local_4c._0_4_ = (int *)puVar12[2];
  lVar5 = local_84;
LAB_000ad6cc:
  if (((int *)local_4c != (int *)0x0) && ((*(byte *)(puVar12 + 5) & 0x40) != 0)) {
    uVar8 = *puVar12;
    puVar10 = &UNK_003b905d + unaff_EDI;
    if ((cVar2 == '\0') && (*(int *)((int)local_40 + 0x1c) != local_44)) {
      puVar10 = (undefined *)(unaff_EDI + 0x3b906f);
    }
    *(undefined **)((int)puVar13 + -0xc) = puVar10;
    *(undefined4 *)((int)puVar13 + -0x10) = uVar8;
    *(undefined4 *)((int)puVar13 + -0x14) = 0xad6f7;
    local_84 = lVar5;
    FUN_0023b750();
  }
  *(uint *)((int)local_40 + 0xc) = local_54;
  *(undefined4 *)((int)local_40 + 8) = 1;
  *(longlong *)((int)local_40 + 0x10) = local_5c;
  return 0;
}

