
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void incremental_relocs_write_reltype<9>(Sized_relobj_file<32,_false> *
   this, Relocate_info<32,_false> * relinfo, uchar * prelocs, size_t reloc_count, Output_section *
   output_section, Address output_offset, Output_file * of) */

void __thiscall
gold::Sized_relobj_file<32,_false>::incremental_relocs_write_reltype<9>
          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,
          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)

{
  byte bVar1;
  _func_int_varargs *p_Var2;
  Incremental_inputs *pIVar3;
  Output_data_space *pOVar4;
  uint uVar5;
  int iVar6;
  uchar *puVar7;
  uint *puVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  int *piVar12;
  uint *puVar13;
  section_offset_type sVar14;
  int iVar15;
  uint uVar16;
  int unaff_EDI;
  size_t sVar17;
  uint local_30;
  uint local_24;
  
  __x86_get_pc_thunk_di();
  p_Var2 = (output_section->super_Output_data)._vptr_Output_data[0xb];
  if (p_Var2 == (_func_int_varargs *)(unaff_EDI + -0x93e27)) {
    local_24 = output_section->out_shndx_;
    if (local_24 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,
                          (char *)(unaff_EDI + 0x1367ad));
    }
  }
  else {
    local_24 = (*p_Var2)(output_section);
  }
  pIVar3 = relinfo->layout->incremental_inputs_;
  if (pIVar3 == (Incremental_inputs *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9));
  }
  pOVar4 = pIVar3->relocs_section_;
  bVar1 = (pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.
          field_0x1c;
  if ((bVar1 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,
                        (char *)(unaff_EDI + 0x136909));
  }
  uVar5 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.
                super_Output_data.offset_;
  iVar15 = *(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.
                          super_Output_data.offset_ + 4);
  if ((bVar1 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,
                        (char *)(unaff_EDI + 0x1368fd));
  }
  uVar9 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.
                super_Output_data.data_size_;
  if ((iVar15 < 0) ||
     (iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),
     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,
     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,
                        (char *)(unaff_EDI + 0x1368c5));
  }
  puVar7 = of->base_;
  sVar17 = 0;
  if (reloc_count != 0) {
    do {
      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);
      uVar11 = this->local_symbol_count_;
      uVar16 = uVar9 >> 8;
      if (uVar11 <= uVar16) {
        iVar15 = *(int *)(prelocs + sVar17 * 8);
        if (output_offset == 0xffffffff) {
          sVar14 = Output_section::output_offset
                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);
          if (sVar14 == -1) {
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))
            ;
          }
          local_30 = sVar14 + iVar15;
          uVar11 = this->local_symbol_count_;
        }
        else {
          local_30 = iVar15 + output_offset;
        }
        uVar16 = uVar16 - uVar11;
        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.
                           _vptr_Object[0x1d])(this);
        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;
        if (puVar13 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));
        }
        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;
        if (puVar8 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));
        }
        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));
        }
        puVar13 = puVar13 + uVar16;
        uVar11 = *puVar13;
        *puVar13 = uVar11 + 1;
        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);
        *puVar13 = uVar9 & 0xff;
        puVar13[1] = local_24;
        puVar13[2] = local_30;
        puVar13[3] = 0;
      }
      sVar17 = sVar17 + 1;
    } while (reloc_count != sVar17);
  }
  return;
}



void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,
                 int param_7)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int unaff_EDI;
  uint local_30;
  uint local_24;
  
  FUN_00058c4a();
  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {
    local_24 = param_5[0x18];
    if (local_24 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);
    }
  }
  else {
    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);
  }
  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);
  }
  iVar1 = *(int *)(iVar1 + 0x3c);
  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);
  }
  uVar2 = *(uint *)(iVar1 + 0x14);
  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);
  }
  uVar8 = *(uint *)(iVar1 + 0xc);
  if ((*(int *)(iVar1 + 0x18) < 0) ||
     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),
     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9
     , uVar8 = iVar1 - uVar4,
     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);
  }
  iVar1 = *(int *)(param_7 + 0x10);
  iVar9 = 0;
  if (param_4 != 0) {
    do {
      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);
      uVar4 = param_1[0x2c];
      uVar10 = uVar8 >> 8;
      if (uVar4 <= uVar10) {
        iVar3 = *(int *)(param_3 + iVar9 * 8);
        if (param_6 == -1) {
          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),
                               iVar3);
          if (iVar7 == -1) {
                    /* WARNING: Subroutine does not return */
            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);
          }
          local_30 = iVar7 + iVar3;
          uVar4 = param_1[0x2c];
        }
        else {
          local_30 = iVar3 + param_6;
        }
        uVar10 = uVar10 - uVar4;
        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);
        if (param_1[0x16] == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);
        }
        iVar3 = param_1[0x17];
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);
        }
        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);
        }
        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);
        iVar7 = *piVar5;
        *piVar5 = iVar7 + 1;
        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);
        *puVar6 = uVar8 & 0xff;
        puVar6[1] = local_24;
        puVar6[2] = local_30;
        puVar6[3] = 0;
      }
      iVar9 = iVar9 + 1;
    } while (param_4 != iVar9);
  }
  return;
}


PUSH EBP
PUSH EDI
CALL 0x00058c4a
ADD EDI,0x215a49
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x50]
MOV EBP,dword ptr [ESP + 0x40]
LEA EDX,[EDI + 0xffd56790]
MOV dword ptr [ESP + 0x1c],EDI
MOV EBX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x2c]
CMP EAX,EDX
JNZ 0x00129770
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX + 0x60]
MOV dword ptr [ESP + 0x18],EAX
CMP EAX,-0x1
JZ 0x00129870
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX + 0x1d0]
TEST EAX,EAX
JZ 0x00129853
MOV EAX,dword ptr [EAX + 0x3c]
MOVZX EDX,byte ptr [EAX + 0x1c]
TEST DL,0x4
JZ 0x00129836
AND EDX,0x2
MOV ESI,dword ptr [EAX + 0x14]
MOV EDI,dword ptr [EAX + 0x18]
JZ 0x00129819
MOV ECX,dword ptr [EAX + 0xc]
TEST EDI,EDI
JS 0x001297ff
MOV EAX,ECX
XOR EDX,EDX
MOV ECX,dword ptr [EBX + 0xc]
ADD EAX,ESI
ADC EDX,EDI
CMP dword ptr [EBX + 0x8],EAX
SBB ECX,EDX
JL 0x001297ff
MOV EAX,dword ptr [EBX + 0x10]
MOV EDX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x10],ESI
XOR EDI,EDI
MOV dword ptr [ESP + 0x14],EAX
TEST EDX,EDX
JNZ 0x001296ee
JMP 0x00129760
ADD EDX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0xc],EDX
MOV EBX,ESI
SUB ESP,0xc
SUB EBX,EAX
MOV EAX,dword ptr [EBP]
PUSH EBP
CALL dword ptr [EAX + 0x74]
MOV ECX,dword ptr [EBP + 0x58]
MOV EDX,dword ptr [EAX + 0x4]
SUB EDX,dword ptr [EAX]
ADD ESP,0x10
MOV EAX,EDX
SAR EAX,0x2
TEST ECX,ECX
JZ 0x001297c3
MOV EDX,dword ptr [EBP + 0x5c]
TEST EDX,EDX
JZ 0x001297a4
CMP EBX,EAX
JNC 0x00129785
LEA ECX,[ECX + EBX*0x4]
MOV EAX,dword ptr [ECX]
LEA ESI,[EAX + 0x1]
MOV dword ptr [ECX],ESI
MOV ECX,dword ptr [ESP + 0x18]
ADD EAX,dword ptr [EDX + EBX*0x4]
MOV ESI,dword ptr [ESP + 0xc]
MOVZX EDX,byte ptr [ESP + 0x8]
SHL EAX,0x4
ADD EAX,dword ptr [ESP + 0x10]
ADD EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],ECX
MOV dword ptr [EAX + 0x8],ESI
MOV dword ptr [EAX + 0xc],0x0
ADD EDI,0x1
CMP dword ptr [ESP + 0x4c],EDI
JZ 0x00129760
MOV EAX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX + EDI*0x8 + 0x4]
MOV ESI,EAX
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EBP + 0xb0]
SHR ESI,0x8
CMP EAX,ESI
JA 0x001296e5
MOV ECX,dword ptr [ESP + 0x48]
CMP dword ptr [ESP + 0x54],-0x1
MOV EDX,dword ptr [ECX + EDI*0x8]
JNZ 0x00129670
PUSH EDX
MOV EAX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x10],EDX
PUSH dword ptr [EAX + 0x18]
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x8]
PUSH dword ptr [ESP + 0x5c]
MOV EBX,dword ptr [ESP + 0x2c]
CALL 0x000efd20
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
CMP EAX,-0x1
JZ 0x001297e2
ADD EAX,EDX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EBP + 0xb0]
JMP 0x00129678
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [ESP + 0x5c]
CALL EAX
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
JMP 0x001295f9
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d44]
PUSH EAX
LEA EAX,[EBX + 0xfff0c385]
PUSH 0x605
PUSH EAX
CALL 0x0008b620
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d44]
PUSH EAX
LEA EAX,[EBX + 0xfff0c385]
PUSH 0x604
PUSH EAX
CALL 0x0008b620
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d44]
PUSH EAX
LEA EAX,[EBX + 0xfff0c385]
PUSH 0x603
PUSH EAX
CALL 0x0008b620
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d80]
PUSH EAX
LEA EAX,[EBX + 0xfff20727]
PUSH 0x46d
PUSH EAX
CALL 0x0008b620
PUSH ECX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20e7c]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x6f
PUSH EAX
CALL 0x0008b620
PUSH EBX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20eb4]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0xcf
PUSH EAX
CALL 0x0008b620
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20ec0]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0xe3
PUSH EAX
CALL 0x0008b620
PUSH EDI
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d80]
PUSH EAX
LEA EAX,[EBX + 0xfff20727]
PUSH 0x44e
PUSH EAX
CALL 0x0008b620
PUSH EBP
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff20d64]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x1043
PUSH EAX
CALL 0x0008b620
(translation_unit "void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}\n\n" (function_definition "void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" if (parenthesized_expression "(*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27))" ( (binary_expression "*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)" (pointer_expression "*(code **)(*param_5 + 0x2c)" * (cast_expression "(code **)(*param_5 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x2c)" ( (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x93e27)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x93e27)" ( (binary_expression "unaff_EDI + -0x93e27" identifier + number_literal) )))) )) (compound_statement "{\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }" { (expression_statement "local_24 = param_5[0x18];" (assignment_expression "local_24 = param_5[0x18]" identifier = (subscript_expression "param_5[0x18]" identifier [ number_literal ])) ;) (if_statement "if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" if (parenthesized_expression "(local_24 == 0xffffffff)" ( (binary_expression "local_24 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" identifier (argument_list "(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367ad" identifier + number_literal) , identifier ))) ;) })) }) (else_clause "else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" else (compound_statement "{\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" { (expression_statement "local_24 = (**(code **)(*param_5 + 0x2c))(param_5);" (assignment_expression "local_24 = (**(code **)(*param_5 + 0x2c))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x2c))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x2c))" ( (pointer_expression "**(code **)(*param_5 + 0x2c)" * (pointer_expression "*(code **)(*param_5 + 0x2c)" * (cast_expression "(code **)(*param_5 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x2c)" ( (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0)" identifier = (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 0x1d0)" * (cast_expression "(int *)(*(int *)(param_2 + 4) + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 4) + 0x1d0)" ( (binary_expression "*(int *)(param_2 + 4) + 0x1d0" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" identifier (argument_list "(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) , (binary_expression "unaff_EDI + 0x215a49" identifier + number_literal) ))) ;) })) (expression_statement "iVar1 = *(int *)(iVar1 + 0x3c);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x3c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x3c)" * (cast_expression "(int *)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 4" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" identifier (argument_list "(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x136909" identifier + number_literal) ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" identifier (argument_list "(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1368fd" identifier + number_literal) , identifier ))) ;) })) (expression_statement "uVar8 = *(uint *)(iVar1 + 0xc);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar1 + 0xc)" * (cast_expression "(uint *)(iVar1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" if (parenthesized_expression "((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0))" ( (binary_expression "(*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" (parenthesized_expression "(*(int *)(iVar1 + 0x18) < 0)" ( (binary_expression "*(int *)(iVar1 + 0x18) < 0" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) < number_literal) )) || (parenthesized_expression "(iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" ( (comma_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" identifier = (binary_expression "*(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar8,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier )))))) , (comma_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" identifier = (call_expression "(uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_7 + 8) < uVar8 + uVar2)" ( (binary_expression "*(uint *)(param_7 + 8) < uVar8 + uVar2" (pointer_expression "*(uint *)(param_7 + 8)" * (cast_expression "(uint *)(param_7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 8)" ( (binary_expression "param_7 + 8" identifier + number_literal) )))) < (binary_expression "uVar8 + uVar2" identifier + identifier)) )))) , (comma_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9" identifier = (binary_expression "*(int *)(param_7 + 0xc) - iVar9" (pointer_expression "*(int *)(param_7 + 0xc)" * (cast_expression "(int *)(param_7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0xc)" ( (binary_expression "param_7 + 0xc" identifier + number_literal) )))) - identifier)) , (comma_expression "uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar8 = iVar1 - uVar4" identifier = (binary_expression "iVar1 - uVar4" identifier - identifier)) , (binary_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4))" ( (binary_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)" (call_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9)" identifier (argument_list "(*(int *)(param_7 + 0xc),iVar9)" ( (pointer_expression "*(int *)(param_7 + 0xc)" * (cast_expression "(int *)(param_7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0xc)" ( (binary_expression "param_7 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar1,uVar4)" identifier (argument_list "(iVar1,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" identifier (argument_list "(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1368c5" identifier + number_literal) , identifier ))) ;) })) (expression_statement "iVar1 = *(int *)(param_7 + 0x10);" (assignment_expression "iVar1 = *(int *)(param_7 + 0x10)" identifier = (pointer_expression "*(int *)(param_7 + 0x10)" * (cast_expression "(int *)(param_7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x10)" ( (binary_expression "param_7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" { (do_statement "do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);" do (compound_statement "{\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    }" { (expression_statement "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);" (assignment_expression "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8)" identifier = (pointer_expression "*(uint *)(param_3 + 4 + iVar9 * 8)" * (cast_expression "(uint *)(param_3 + 4 + iVar9 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4 + iVar9 * 8)" ( (binary_expression "param_3 + 4 + iVar9 * 8" (binary_expression "param_3 + 4" identifier + number_literal) + (binary_expression "iVar9 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" identifier = (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = uVar8 >> 8;" (assignment_expression "uVar10 = uVar8 >> 8" identifier = (binary_expression "uVar8 >> 8" identifier >> number_literal)) ;) (if_statement "if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" if (parenthesized_expression "(uVar4 <= uVar10)" ( (binary_expression "uVar4 <= uVar10" identifier <= identifier) )) (compound_statement "{\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" { (expression_statement "iVar3 = *(int *)(param_3 + iVar9 * 8);" (assignment_expression "iVar3 = *(int *)(param_3 + iVar9 * 8)" identifier = (pointer_expression "*(int *)(param_3 + iVar9 * 8)" * (cast_expression "(int *)(param_3 + iVar9 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar9 * 8)" ( (binary_expression "param_3 + iVar9 * 8" identifier + (binary_expression "iVar9 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }" if (parenthesized_expression "(param_6 == -1)" ( (binary_expression "param_6 == -1" identifier == number_literal) )) (compound_statement "{\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }" { (expression_statement "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);" (assignment_expression "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" identifier = (call_expression "FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" identifier (argument_list "(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar7 == -1) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" identifier (argument_list "(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "local_30 = iVar7 + iVar3;" (assignment_expression "local_30 = iVar7 + iVar3" identifier = (binary_expression "iVar7 + iVar3" identifier + identifier)) ;) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" identifier = (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          local_30 = iVar3 + param_6;\n        }" else (compound_statement "{\n          local_30 = iVar3 + param_6;\n        }" { (expression_statement "local_30 = iVar3 + param_6;" (assignment_expression "local_30 = iVar3 + param_6" identifier = (binary_expression "iVar3 + param_6" identifier + identifier)) ;) }))) (expression_statement "uVar10 = uVar10 - uVar4;" (assignment_expression "uVar10 = uVar10 - uVar4" identifier = (binary_expression "uVar10 - uVar4" identifier - identifier)) ;) (expression_statement "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);" (assignment_expression "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1)" identifier = (cast_expression "(int *)(**(code **)(*param_1 + 0x74))(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x74))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x74))" ( (pointer_expression "**(code **)(*param_1 + 0x74)" * (pointer_expression "*(code **)(*param_1 + 0x74)" * (cast_expression "(code **)(*param_1 + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x74)" ( (binary_expression "*param_1 + 0x74" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (param_1[0x16] == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "(param_1[0x16] == 0)" ( (binary_expression "param_1[0x16] == 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (expression_statement "iVar3 = param_1[0x17];" (assignment_expression "iVar3 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (if_statement "if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10)" ( (binary_expression "(uint)(piVar5[1] - *piVar5 >> 2) <= uVar10" (call_expression "(uint)(piVar5[1] - *piVar5 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar5[1] - *piVar5 >> 2)" ( (binary_expression "piVar5[1] - *piVar5 >> 2" (binary_expression "piVar5[1] - *piVar5" (subscript_expression "piVar5[1]" identifier [ number_literal ]) - (pointer_expression "*piVar5" * identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" { comment (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (expression_statement "piVar5 = (int *)(param_1[0x16] + uVar10 * 4);" (assignment_expression "piVar5 = (int *)(param_1[0x16] + uVar10 * 4)" identifier = (cast_expression "(int *)(param_1[0x16] + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x16] + uVar10 * 4)" ( (binary_expression "param_1[0x16] + uVar10 * 4" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = *piVar5;" (assignment_expression "iVar7 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "*piVar5 = iVar7 + 1;" (assignment_expression "*piVar5 = iVar7 + 1" (pointer_expression "*piVar5" * identifier) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);" (assignment_expression "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" identifier = (cast_expression "(uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" ( (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10" (parenthesized_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4))" ( (binary_expression "iVar7 + *(int *)(iVar3 + uVar10 * 4)" identifier + (pointer_expression "*(int *)(iVar3 + uVar10 * 4)" * (cast_expression "(int *)(iVar3 + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + uVar10 * 4)" ( (binary_expression "iVar3 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) )) * number_literal) + identifier) + identifier) )))) ;) (expression_statement "*puVar6 = uVar8 & 0xff;" (assignment_expression "*puVar6 = uVar8 & 0xff" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar8 & 0xff" identifier & number_literal)) ;) (expression_statement "puVar6[1] = local_24;" (assignment_expression "puVar6[1] = local_24" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = local_30;" (assignment_expression "puVar6[2] = local_30" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != iVar9)" ( (binary_expression "param_4 != iVar9" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void incremental_relocs_write_reltype<9>(Sized_relobj_file<32,_false> *\n   this, Relocate_info<32,_false> * relinfo, uchar * prelocs, size_t reloc_count, Output_section *\n   output_section, Address output_offset, Output_file * of) */\n\nvoid __thiscall\ngold::Sized_relobj_file<32,_false>::incremental_relocs_write_reltype<9>\n          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)\n\n{\n  byte bVar1;\n  _func_int_varargs *p_Var2;\n  Incremental_inputs *pIVar3;\n  Output_data_space *pOVar4;\n  uint uVar5;\n  int iVar6;\n  uchar *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  int *piVar12;\n  uint *puVar13;\n  section_offset_type sVar14;\n  int iVar15;\n  uint uVar16;\n  int unaff_EDI;\n  size_t sVar17;\n  uint local_30;\n  uint local_24;\n  \n  __x86_get_pc_thunk_di();\n  p_Var2 = (output_section->super_Output_data)._vptr_Output_data[0xb];\n  if (p_Var2 == (_func_int_varargs *)(unaff_EDI + -0x93e27)) {\n    local_24 = output_section->out_shndx_;\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));\n    }\n  }\n  else {\n    local_24 = (*p_Var2)(output_section);\n  }\n  pIVar3 = relinfo->layout->incremental_inputs_;\n  if (pIVar3 == (Incremental_inputs *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9));\n  }\n  pOVar4 = pIVar3->relocs_section_;\n  bVar1 = (pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n          field_0x1c;\n  if ((bVar1 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909));\n  }\n  uVar5 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.offset_;\n  iVar15 = *(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4);\n  if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd));\n  }\n  uVar9 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.data_size_;\n  if ((iVar15 < 0) ||\n     (iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5));\n  }\n  puVar7 = of->base_;\n  sVar17 = 0;\n  if (reloc_count != 0) {\n    do {\n      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);\n      uVar11 = this->local_symbol_count_;\n      uVar16 = uVar9 >> 8;\n      if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }\n      sVar17 = sVar17 + 1;\n    } while (reloc_count != sVar17);\n  }\n  return;\n}\n\n" comment comment (declaration "void __thiscall\ngold::Sized_relobj_file<32,_false>::incremental_relocs_write_reltype<9>\n          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::incremental_relocs_write_reltype<9>\n          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)\n\n{\n  byte" identifier > : : (function_declarator "incremental_relocs_write_reltype<9>\n          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)" identifier (ERROR "<9>" < number_literal >) (parameter_list "(Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,uchar *prelocs,\n          size_t reloc_count,Output_section *output_section,Address output_offset,Output_file *of)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relocate_info" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *relinfo" type_identifier (ERROR ">" >) (pointer_declarator "*relinfo" * identifier)) , (parameter_declaration "uchar *prelocs" type_identifier (pointer_declarator "*prelocs" * identifier)) , (parameter_declaration "size_t reloc_count" primitive_type identifier) , (parameter_declaration "Output_section *output_section" type_identifier (pointer_declarator "*output_section" * identifier)) , (parameter_declaration "Address output_offset" type_identifier identifier) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) { identifier) identifier ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "Incremental_inputs *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "Output_data_space *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "section_offset_type sVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "size_t sVar17;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "p_Var2 = (output_section->super_Output_data)._vptr_Output_data[0xb];" (assignment_expression "p_Var2 = (output_section->super_Output_data)._vptr_Output_data[0xb]" identifier = (subscript_expression "(output_section->super_Output_data)._vptr_Output_data[0xb]" (field_expression "(output_section->super_Output_data)._vptr_Output_data" (parenthesized_expression "(output_section->super_Output_data)" ( (field_expression "output_section->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == (_func_int_varargs *)(unaff_EDI + -0x93e27)) {\n    local_24 = output_section->out_shndx_;\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));\n    }\n  }\n  else {\n    local_24 = (*p_Var2)(output_section);\n  }" if (parenthesized_expression "(p_Var2 == (_func_int_varargs *)(unaff_EDI + -0x93e27))" ( (binary_expression "p_Var2 == (_func_int_varargs *)(unaff_EDI + -0x93e27)" identifier == (cast_expression "(_func_int_varargs *)(unaff_EDI + -0x93e27)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x93e27)" ( (binary_expression "unaff_EDI + -0x93e27" identifier + number_literal) )))) )) (compound_statement "{\n    local_24 = output_section->out_shndx_;\n    if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));\n    }\n  }" { (expression_statement "local_24 = output_section->out_shndx_;" (assignment_expression "local_24 = output_section->out_shndx_" identifier = (field_expression "output_section->out_shndx_" identifier -> field_identifier)) ;) (if_statement "if (local_24 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));\n    }" if (parenthesized_expression "(local_24 == 0xffffffff)" ( (binary_expression "local_24 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));\n    }" { comment (expression_statement "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad));" (call_expression "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad))" identifier (argument_list "((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x1043,\n                          (char *)(unaff_EDI + 0x1367ad))" ( (cast_expression "(char *)(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (ERROR "Add_symbols::" identifier : :) (binary_expression "~Add_symbols + unaff_EDI + 6" (binary_expression "~Add_symbols + unaff_EDI" (unary_expression "~Add_symbols" ~ identifier) + identifier) + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1367ad)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1367ad)" ( (binary_expression "unaff_EDI + 0x1367ad" identifier + number_literal) ))) ))) ;) })) }) (else_clause "else {\n    local_24 = (*p_Var2)(output_section);\n  }" else (compound_statement "{\n    local_24 = (*p_Var2)(output_section);\n  }" { (expression_statement "local_24 = (*p_Var2)(output_section);" (assignment_expression "local_24 = (*p_Var2)(output_section)" identifier = (call_expression "(*p_Var2)(output_section)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(output_section)" ( identifier )))) ;) }))) (expression_statement "pIVar3 = relinfo->layout->incremental_inputs_;" (assignment_expression "pIVar3 = relinfo->layout->incremental_inputs_" identifier = (field_expression "relinfo->layout->incremental_inputs_" (field_expression "relinfo->layout" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pIVar3 == (Incremental_inputs *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9));\n  }" if (parenthesized_expression "(pIVar3 == (Incremental_inputs *)0x0)" ( (binary_expression "pIVar3 == (Incremental_inputs *)0x0" identifier == (cast_expression "(Incremental_inputs *)0x0" ( (type_descriptor "Incremental_inputs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9))" identifier (argument_list "((char *)(unaff_EDI + 0x136170),0x44e,(char *)(unaff_EDI + 0x1367c9))" ( (cast_expression "(char *)(unaff_EDI + 0x136170)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x136170)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1367c9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1367c9)" ( (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) ))) ))) ;) })) (expression_statement "pOVar4 = pIVar3->relocs_section_;" (assignment_expression "pOVar4 = pIVar3->relocs_section_" identifier = (field_expression "pIVar3->relocs_section_" identifier -> field_identifier)) ;) (expression_statement "bVar1 = (pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n          field_0x1c;" (assignment_expression "bVar1 = (pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n          field_0x1c" identifier = (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n          field_0x1c" (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar4->super_Output_section_data_build)" ( (field_expression "pOVar4->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar1 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909));\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909));" (call_expression "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909))" identifier (argument_list "((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xe3,\n                        (char *)(unaff_EDI + 0x136909))" ( (cast_expression "(char *)(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (ERROR "Add_symbols::" identifier : :) (binary_expression "~Add_symbols + unaff_EDI + 6" (binary_expression "~Add_symbols + unaff_EDI" (unary_expression "~Add_symbols" ~ identifier) + identifier) + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x136909)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x136909)" ( (binary_expression "unaff_EDI + 0x136909" identifier + number_literal) ))) ))) ;) })) (expression_statement "uVar5 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.offset_;" (assignment_expression "uVar5 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.offset_" identifier = (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.offset_" (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data" (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data" (call_expression "(uint)(pOVar4->super_Output_section_data_build)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar4->super_Output_section_data_build)" ( (field_expression "pOVar4->super_Output_section_data_build" identifier -> field_identifier) ))) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "iVar15 = *(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4);" (assignment_expression "iVar15 = *(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4)" * (cast_expression "(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4)" ( (binary_expression "(int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_ + 4" (cast_expression "(int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_" & (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data.offset_" (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                          super_Output_data" (field_expression "(pOVar4->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(pOVar4->super_Output_section_data_build)" ( (field_expression "pOVar4->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd));\n  }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd));" (call_expression "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd))" identifier (argument_list "((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0xcf,\n                        (char *)(unaff_EDI + 0x1368fd))" ( (cast_expression "(char *)(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (ERROR "Add_symbols::" identifier : :) (binary_expression "~Add_symbols + unaff_EDI + 6" (binary_expression "~Add_symbols + unaff_EDI" (unary_expression "~Add_symbols" ~ identifier) + identifier) + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1368fd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1368fd)" ( (binary_expression "unaff_EDI + 0x1368fd" identifier + number_literal) ))) ))) ;) })) (expression_statement "uVar9 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.data_size_;" (assignment_expression "uVar9 = (uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.data_size_" identifier = (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data.data_size_" (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data.\n                super_Output_data" (field_expression "(uint)(pOVar4->super_Output_section_data_build).super_Output_section_data" (call_expression "(uint)(pOVar4->super_Output_section_data_build)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar4->super_Output_section_data_build)" ( (field_expression "pOVar4->super_Output_section_data_build" identifier -> field_identifier) ))) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((iVar15 < 0) ||\n     (iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5));\n  }" if (parenthesized_expression "((iVar15 < 0) ||\n     (iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0))" ( (binary_expression "(iVar15 < 0) ||\n     (iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0)" (parenthesized_expression "(iVar15 < 0)" ( (binary_expression "iVar15 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0)" ( (comma_expression "iVar6 = *(int *)((int)&of->file_size_ + 4), iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0" (assignment_expression "iVar6 = *(int *)((int)&of->file_size_ + 4)" identifier = (pointer_expression "*(int *)((int)&of->file_size_ + 4)" * (cast_expression "(int *)((int)&of->file_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&of->file_size_ + 4)" ( (binary_expression "(int)&of->file_size_ + 4" (cast_expression "(int)&of->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&of->file_size_" & (field_expression "of->file_size_" identifier -> field_identifier))) + number_literal) ))))) , (comma_expression "iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5),\n     uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0" (assignment_expression "iVar15 = iVar15 + (uint)CARRY4(uVar9,uVar5)" identifier = (binary_expression "iVar15 + (uint)CARRY4(uVar9,uVar5)" identifier + (cast_expression "(uint)CARRY4(uVar9,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar9,uVar5)" identifier (argument_list "(uVar9,uVar5)" ( identifier , identifier )))))) , (comma_expression "uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5), iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0" (assignment_expression "uVar9 = (uint)((uint)of->file_size_ < uVar9 + uVar5)" identifier = (call_expression "(uint)((uint)of->file_size_ < uVar9 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)of->file_size_ < uVar9 + uVar5)" ( (binary_expression "(uint)of->file_size_ < uVar9 + uVar5" (cast_expression "(uint)of->file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "of->file_size_" identifier -> field_identifier)) < (binary_expression "uVar9 + uVar5" identifier + identifier)) )))) , (comma_expression "iVar10 = iVar6 - iVar15,\n     (SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0" (assignment_expression "iVar10 = iVar6 - iVar15" identifier = (binary_expression "iVar6 - iVar15" identifier - identifier)) , (binary_expression "(SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)) != (int)(iVar10 - uVar9) < 0" (parenthesized_expression "(SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9))" ( (binary_expression "SBORROW4(iVar6,iVar15) != SBORROW4(iVar10,uVar9)" (call_expression "SBORROW4(iVar6,iVar15)" identifier (argument_list "(iVar6,iVar15)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar10,uVar9)" identifier (argument_list "(iVar10,uVar9)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar10 - uVar9) < 0" (cast_expression "(int)(iVar10 - uVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar10 - uVar9)" ( (binary_expression "iVar10 - uVar9" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5));" (call_expression "do_gold_unreachable((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5))" identifier (argument_list "((char *)(Add_symbols::~Add_symbols + unaff_EDI + 6),0x6f,\n                        (char *)(unaff_EDI + 0x1368c5))" ( (cast_expression "(char *)(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(Add_symbols::~Add_symbols + unaff_EDI + 6)" ( (ERROR "Add_symbols::" identifier : :) (binary_expression "~Add_symbols + unaff_EDI + 6" (binary_expression "~Add_symbols + unaff_EDI" (unary_expression "~Add_symbols" ~ identifier) + identifier) + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1368c5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1368c5)" ( (binary_expression "unaff_EDI + 0x1368c5" identifier + number_literal) ))) ))) ;) })) (expression_statement "puVar7 = of->base_;" (assignment_expression "puVar7 = of->base_" identifier = (field_expression "of->base_" identifier -> field_identifier)) ;) (expression_statement "sVar17 = 0;" (assignment_expression "sVar17 = 0" identifier = number_literal) ;) (if_statement "if (reloc_count != 0) {\n    do {\n      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);\n      uVar11 = this->local_symbol_count_;\n      uVar16 = uVar9 >> 8;\n      if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }\n      sVar17 = sVar17 + 1;\n    } while (reloc_count != sVar17);\n  }" if (parenthesized_expression "(reloc_count != 0)" ( (binary_expression "reloc_count != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);\n      uVar11 = this->local_symbol_count_;\n      uVar16 = uVar9 >> 8;\n      if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }\n      sVar17 = sVar17 + 1;\n    } while (reloc_count != sVar17);\n  }" { (do_statement "do {\n      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);\n      uVar11 = this->local_symbol_count_;\n      uVar16 = uVar9 >> 8;\n      if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }\n      sVar17 = sVar17 + 1;\n    } while (reloc_count != sVar17);" do (compound_statement "{\n      uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);\n      uVar11 = this->local_symbol_count_;\n      uVar16 = uVar9 >> 8;\n      if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }\n      sVar17 = sVar17 + 1;\n    }" { (expression_statement "uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4);" (assignment_expression "uVar9 = *(uint *)(prelocs + sVar17 * 8 + 4)" identifier = (pointer_expression "*(uint *)(prelocs + sVar17 * 8 + 4)" * (cast_expression "(uint *)(prelocs + sVar17 * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(prelocs + sVar17 * 8 + 4)" ( (binary_expression "prelocs + sVar17 * 8 + 4" (binary_expression "prelocs + sVar17 * 8" identifier + (binary_expression "sVar17 * 8" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "uVar11 = this->local_symbol_count_;" (assignment_expression "uVar11 = this->local_symbol_count_" identifier = (field_expression "this->local_symbol_count_" identifier -> field_identifier)) ;) (expression_statement "uVar16 = uVar9 >> 8;" (assignment_expression "uVar16 = uVar9 >> 8" identifier = (binary_expression "uVar9 >> 8" identifier >> number_literal)) ;) (if_statement "if (uVar11 <= uVar16) {\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }" if (parenthesized_expression "(uVar11 <= uVar16)" ( (binary_expression "uVar11 <= uVar16" identifier <= identifier) )) (compound_statement "{\n        iVar15 = *(int *)(prelocs + sVar17 * 8);\n        if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }\n        uVar16 = uVar16 - uVar11;\n        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);\n        puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;\n        if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;\n        if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }\n        if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }\n        puVar13 = puVar13 + uVar16;\n        uVar11 = *puVar13;\n        *puVar13 = uVar11 + 1;\n        puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);\n        *puVar13 = uVar9 & 0xff;\n        puVar13[1] = local_24;\n        puVar13[2] = local_30;\n        puVar13[3] = 0;\n      }" { (expression_statement "iVar15 = *(int *)(prelocs + sVar17 * 8);" (assignment_expression "iVar15 = *(int *)(prelocs + sVar17 * 8)" identifier = (pointer_expression "*(int *)(prelocs + sVar17 * 8)" * (cast_expression "(int *)(prelocs + sVar17 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(prelocs + sVar17 * 8)" ( (binary_expression "prelocs + sVar17 * 8" identifier + (binary_expression "sVar17 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (output_offset == 0xffffffff) {\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }\n        else {\n          local_30 = iVar15 + output_offset;\n        }" if (parenthesized_expression "(output_offset == 0xffffffff)" ( (binary_expression "output_offset == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          sVar14 = Output_section::output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);\n          if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }\n          local_30 = sVar14 + iVar15;\n          uVar11 = this->local_symbol_count_;\n        }" { (ERROR "sVar14 = Output_section::" (assignment_expression "sVar14 = Output_section" identifier = identifier) : :) (expression_statement "output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15);" (call_expression "output_offset\n                             (output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15)" identifier (argument_list "(output_section,(Relobj *)relinfo->object,relinfo->data_shndx,iVar15)" ( identifier , (cast_expression "(Relobj *)relinfo->object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "relinfo->object" identifier -> field_identifier)) , (field_expression "relinfo->data_shndx" identifier -> field_identifier) , identifier ))) ;) (if_statement "if (sVar14 == -1) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }" if (parenthesized_expression "(sVar14 == -1)" ( (binary_expression "sVar14 == -1" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;\n          }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))\n            ;" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))" identifier (argument_list "((char *)(unaff_EDI + 0x136170),0x46d,(char *)(unaff_EDI + 0x1367c9))" ( (cast_expression "(char *)(unaff_EDI + 0x136170)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x136170)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1367c9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1367c9)" ( (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) ))) ))) ;) })) (expression_statement "local_30 = sVar14 + iVar15;" (assignment_expression "local_30 = sVar14 + iVar15" identifier = (binary_expression "sVar14 + iVar15" identifier + identifier)) ;) (expression_statement "uVar11 = this->local_symbol_count_;" (assignment_expression "uVar11 = this->local_symbol_count_" identifier = (field_expression "this->local_symbol_count_" identifier -> field_identifier)) ;) }) (else_clause "else {\n          local_30 = iVar15 + output_offset;\n        }" else (compound_statement "{\n          local_30 = iVar15 + output_offset;\n        }" { (expression_statement "local_30 = iVar15 + output_offset;" (assignment_expression "local_30 = iVar15 + output_offset" identifier = (binary_expression "iVar15 + output_offset" identifier + identifier)) ;) }))) (expression_statement "uVar16 = uVar16 - uVar11;" (assignment_expression "uVar16 = uVar16 - uVar11" identifier = (binary_expression "uVar16 - uVar11" identifier - identifier)) ;) (expression_statement "piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this);" (assignment_expression "piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this)" identifier = (cast_expression "(int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])(this)" (parenthesized_expression "(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d])" ( (pointer_expression "*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d]" * (subscript_expression "(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object[0x1d]" (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.\n                           _vptr_Object" (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_false>)" ( (comma_expression "this->super_Sized_relobj<32,_false" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier ))))) ;) (expression_statement "puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;" (assignment_expression "puVar13 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_" identifier = (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_" (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_false>)" ( (comma_expression "this->super_Sized_relobj<32,_false" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier)) ;) (if_statement "if (puVar13 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }" if (parenthesized_expression "(puVar13 == (uint *)0x0)" ( (binary_expression "puVar13 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));\n        }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d))" identifier (argument_list "((char *)(unaff_EDI + 0x121dce),0x603,(char *)(unaff_EDI + 0x13678d))" ( (cast_expression "(char *)(unaff_EDI + 0x121dce)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x121dce)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x13678d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ))) ;) })) (expression_statement "puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;" (assignment_expression "puVar8 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_" identifier = (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_" (field_expression "(this->super_Sized_relobj<32,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_false>)" ( (comma_expression "this->super_Sized_relobj<32,_false" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier)) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));\n        }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d))" identifier (argument_list "((char *)(unaff_EDI + 0x121dce),0x604,(char *)(unaff_EDI + 0x13678d))" ( (cast_expression "(char *)(unaff_EDI + 0x121dce)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x121dce)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x13678d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ))) ;) })) (if_statement "if ((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }" if (parenthesized_expression "((uint)(piVar12[1] - *piVar12 >> 2) <= uVar16)" ( (binary_expression "(uint)(piVar12[1] - *piVar12 >> 2) <= uVar16" (call_expression "(uint)(piVar12[1] - *piVar12 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar12[1] - *piVar12 >> 2)" ( (binary_expression "piVar12[1] - *piVar12 >> 2" (binary_expression "piVar12[1] - *piVar12" (subscript_expression "piVar12[1]" identifier [ number_literal ]) - (pointer_expression "*piVar12" * identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));\n        }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d))" identifier (argument_list "((char *)(unaff_EDI + 0x121dce),0x605,(char *)(unaff_EDI + 0x13678d))" ( (cast_expression "(char *)(unaff_EDI + 0x121dce)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x121dce)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x13678d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ))) ;) })) (expression_statement "puVar13 = puVar13 + uVar16;" (assignment_expression "puVar13 = puVar13 + uVar16" identifier = (binary_expression "puVar13 + uVar16" identifier + identifier)) ;) (expression_statement "uVar11 = *puVar13;" (assignment_expression "uVar11 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "*puVar13 = uVar11 + 1;" (assignment_expression "*puVar13 = uVar11 + 1" (pointer_expression "*puVar13" * identifier) = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5);" (assignment_expression "puVar13 = (uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5)" identifier = (cast_expression "(uint *)(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5)" ( (binary_expression "puVar7 + (uVar11 + puVar8[uVar16]) * 0x10 + uVar5" (binary_expression "puVar7 + (uVar11 + puVar8[uVar16]) * 0x10" identifier + (binary_expression "(uVar11 + puVar8[uVar16]) * 0x10" (parenthesized_expression "(uVar11 + puVar8[uVar16])" ( (binary_expression "uVar11 + puVar8[uVar16]" identifier + (subscript_expression "puVar8[uVar16]" identifier [ identifier ])) )) * number_literal)) + identifier) )))) ;) (expression_statement "*puVar13 = uVar9 & 0xff;" (assignment_expression "*puVar13 = uVar9 & 0xff" (pointer_expression "*puVar13" * identifier) = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) (expression_statement "puVar13[1] = local_24;" (assignment_expression "puVar13[1] = local_24" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[2] = local_30;" (assignment_expression "puVar13[2] = local_30" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[3] = 0;" (assignment_expression "puVar13[3] = 0" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "sVar17 = sVar17 + 1;" (assignment_expression "sVar17 = sVar17 + 1" identifier = (binary_expression "sVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(reloc_count != sVar17)" ( (binary_expression "reloc_count != sVar17" identifier != identifier) )) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}\n\n" (function_definition "void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" identifier (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" if (parenthesized_expression "(*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27))" ( (binary_expression "*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)" (pointer_expression "*(code **)(*param_5 + 0x2c)" * (cast_expression "(code **)(*param_5 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x2c)" ( (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + -0x93e27)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x93e27)" ( (binary_expression "unaff_EDI + -0x93e27" identifier + number_literal) )))) )) (compound_statement "{\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }" { (expression_statement "local_24 = param_5[0x18];" (assignment_expression "local_24 = param_5[0x18]" identifier = (subscript_expression "param_5[0x18]" identifier [ number_literal ])) ;) (if_statement "if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" if (parenthesized_expression "(local_24 == 0xffffffff)" ( (binary_expression "local_24 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" identifier (argument_list "(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367ad" identifier + number_literal) , identifier ))) ;) })) }) (else_clause "else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" else (compound_statement "{\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" { (expression_statement "local_24 = (**(code **)(*param_5 + 0x2c))(param_5);" (assignment_expression "local_24 = (**(code **)(*param_5 + 0x2c))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x2c))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x2c))" ( (pointer_expression "**(code **)(*param_5 + 0x2c)" * (pointer_expression "*(code **)(*param_5 + 0x2c)" * (cast_expression "(code **)(*param_5 + 0x2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x2c)" ( (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0)" identifier = (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 0x1d0)" * (cast_expression "(int *)(*(int *)(param_2 + 4) + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 4) + 0x1d0)" ( (binary_expression "*(int *)(param_2 + 4) + 0x1d0" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" identifier (argument_list "(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) , (binary_expression "unaff_EDI + 0x215a49" identifier + number_literal) ))) ;) })) (expression_statement "iVar1 = *(int *)(iVar1 + 0x3c);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x3c)" identifier = (pointer_expression "*(int *)(iVar1 + 0x3c)" * (cast_expression "(int *)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 4" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" identifier (argument_list "(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x136909" identifier + number_literal) ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x14)" * (cast_expression "(uint *)(iVar1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" identifier (argument_list "(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1368fd" identifier + number_literal) , identifier ))) ;) })) (expression_statement "uVar8 = *(uint *)(iVar1 + 0xc);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar1 + 0xc)" * (cast_expression "(uint *)(iVar1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" if (parenthesized_expression "((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0))" ( (binary_expression "(*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" (parenthesized_expression "(*(int *)(iVar1 + 0x18) < 0)" ( (binary_expression "*(int *)(iVar1 + 0x18) < 0" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) < number_literal) )) || (parenthesized_expression "(iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" ( (comma_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" identifier = (binary_expression "*(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar8,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier )))))) , (comma_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" identifier = (call_expression "(uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_7 + 8) < uVar8 + uVar2)" ( (binary_expression "*(uint *)(param_7 + 8) < uVar8 + uVar2" (pointer_expression "*(uint *)(param_7 + 8)" * (cast_expression "(uint *)(param_7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 8)" ( (binary_expression "param_7 + 8" identifier + number_literal) )))) < (binary_expression "uVar8 + uVar2" identifier + identifier)) )))) , (comma_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9" identifier = (binary_expression "*(int *)(param_7 + 0xc) - iVar9" (pointer_expression "*(int *)(param_7 + 0xc)" * (cast_expression "(int *)(param_7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0xc)" ( (binary_expression "param_7 + 0xc" identifier + number_literal) )))) - identifier)) , (comma_expression "uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar8 = iVar1 - uVar4" identifier = (binary_expression "iVar1 - uVar4" identifier - identifier)) , (binary_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4))" ( (binary_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)" (call_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9)" identifier (argument_list "(*(int *)(param_7 + 0xc),iVar9)" ( (pointer_expression "*(int *)(param_7 + 0xc)" * (cast_expression "(int *)(param_7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0xc)" ( (binary_expression "param_7 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar1,uVar4)" identifier (argument_list "(iVar1,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)))))) ))) )) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" identifier (argument_list "(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" ( (binary_expression "unaff_EDI + 0x121da6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1368c5" identifier + number_literal) , identifier ))) ;) })) (expression_statement "iVar1 = *(int *)(param_7 + 0x10);" (assignment_expression "iVar1 = *(int *)(param_7 + 0x10)" identifier = (pointer_expression "*(int *)(param_7 + 0x10)" * (cast_expression "(int *)(param_7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x10)" ( (binary_expression "param_7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" { (do_statement "do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);" do (compound_statement "{\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    }" { (expression_statement "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);" (assignment_expression "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8)" identifier = (pointer_expression "*(uint *)(param_3 + 4 + iVar9 * 8)" * (cast_expression "(uint *)(param_3 + 4 + iVar9 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4 + iVar9 * 8)" ( (binary_expression "param_3 + 4 + iVar9 * 8" (binary_expression "param_3 + 4" identifier + number_literal) + (binary_expression "iVar9 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" identifier = (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = uVar8 >> 8;" (assignment_expression "uVar10 = uVar8 >> 8" identifier = (binary_expression "uVar8 >> 8" identifier >> number_literal)) ;) (if_statement "if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" if (parenthesized_expression "(uVar4 <= uVar10)" ( (binary_expression "uVar4 <= uVar10" identifier <= identifier) )) (compound_statement "{\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" { (expression_statement "iVar3 = *(int *)(param_3 + iVar9 * 8);" (assignment_expression "iVar3 = *(int *)(param_3 + iVar9 * 8)" identifier = (pointer_expression "*(int *)(param_3 + iVar9 * 8)" * (cast_expression "(int *)(param_3 + iVar9 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar9 * 8)" ( (binary_expression "param_3 + iVar9 * 8" identifier + (binary_expression "iVar9 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }" if (parenthesized_expression "(param_6 == -1)" ( (binary_expression "param_6 == -1" identifier == number_literal) )) (compound_statement "{\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }" { (expression_statement "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);" (assignment_expression "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" identifier = (call_expression "FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" identifier (argument_list "(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" identifier (argument_list "(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" ( (binary_expression "unaff_EDI + 0x136170" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1367c9" identifier + number_literal) , number_literal ))) ;) })) (expression_statement "local_30 = iVar7 + iVar3;" (assignment_expression "local_30 = iVar7 + iVar3" identifier = (binary_expression "iVar7 + iVar3" identifier + identifier)) ;) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" identifier = (subscript_expression "param_1[0x2c]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          local_30 = iVar3 + param_6;\n        }" else (compound_statement "{\n          local_30 = iVar3 + param_6;\n        }" { (expression_statement "local_30 = iVar3 + param_6;" (assignment_expression "local_30 = iVar3 + param_6" identifier = (binary_expression "iVar3 + param_6" identifier + identifier)) ;) }))) (expression_statement "uVar10 = uVar10 - uVar4;" (assignment_expression "uVar10 = uVar10 - uVar4" identifier = (binary_expression "uVar10 - uVar4" identifier - identifier)) ;) (expression_statement "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);" (assignment_expression "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1)" identifier = (cast_expression "(int *)(**(code **)(*param_1 + 0x74))(param_1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x74))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x74))" ( (pointer_expression "**(code **)(*param_1 + 0x74)" * (pointer_expression "*(code **)(*param_1 + 0x74)" * (cast_expression "(code **)(*param_1 + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x74)" ( (binary_expression "*param_1 + 0x74" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "(param_1[0x16] == 0)" ( (binary_expression "param_1[0x16] == 0" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (expression_statement "iVar3 = param_1[0x17];" (assignment_expression "iVar3 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (if_statement "if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" if (parenthesized_expression "((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10)" ( (binary_expression "(uint)(piVar5[1] - *piVar5 >> 2) <= uVar10" (call_expression "(uint)(piVar5[1] - *piVar5 >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar5[1] - *piVar5 >> 2)" ( (binary_expression "piVar5[1] - *piVar5 >> 2" (binary_expression "piVar5[1] - *piVar5" (subscript_expression "piVar5[1]" identifier [ number_literal ]) - (pointer_expression "*piVar5" * identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" { (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" identifier (argument_list "(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" ( (binary_expression "unaff_EDI + 0x121dce" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x13678d" identifier + number_literal) ))) ;) })) (expression_statement "piVar5 = (int *)(param_1[0x16] + uVar10 * 4);" (assignment_expression "piVar5 = (int *)(param_1[0x16] + uVar10 * 4)" identifier = (cast_expression "(int *)(param_1[0x16] + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x16] + uVar10 * 4)" ( (binary_expression "param_1[0x16] + uVar10 * 4" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = *piVar5;" (assignment_expression "iVar7 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "*piVar5 = iVar7 + 1;" (assignment_expression "*piVar5 = iVar7 + 1" (pointer_expression "*piVar5" * identifier) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);" (assignment_expression "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" identifier = (cast_expression "(uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" ( (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10" (parenthesized_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4))" ( (binary_expression "iVar7 + *(int *)(iVar3 + uVar10 * 4)" identifier + (pointer_expression "*(int *)(iVar3 + uVar10 * 4)" * (cast_expression "(int *)(iVar3 + uVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + uVar10 * 4)" ( (binary_expression "iVar3 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) )) * number_literal) + identifier) + identifier) )))) ;) (expression_statement "*puVar6 = uVar8 & 0xff;" (assignment_expression "*puVar6 = uVar8 & 0xff" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar8 & 0xff" identifier & number_literal)) ;) (expression_statement "puVar6[1] = local_24;" (assignment_expression "puVar6[1] = local_24" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = local_30;" (assignment_expression "puVar6[2] = local_30" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != iVar9)" ( (binary_expression "param_4 != iVar9" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) )) * LIT) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001295b0(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" (identifier "FUN_001295b0") (parameter_list "(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,\n                 int param_7)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  uint *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  int unaff_EDI;\n  uint local_30;\n  uint local_24;\n  \n  FUN_00058c4a();\n  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);\n  if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }\n  iVar1 = *(int *)(iVar1 + 0x3c);\n  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }\n  uVar2 = *(uint *)(iVar1 + 0x14);\n  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }\n  uVar8 = *(uint *)(iVar1 + 0xc);\n  if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }\n  iVar1 = *(int *)(param_7 + 0x10);\n  iVar9 = 0;\n  if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" (identifier "FUN_00058c4a") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }\n  else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27))" (( "(") (binary_expression "*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)" (pointer_expression "*(code **)(*param_5 + 0x2c)" (* "*") (cast_expression "(code **)(*param_5 + 0x2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x2c)" (( "(") (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + -0x93e27)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + -0x93e27)" (( "(") (binary_expression "unaff_EDI + -0x93e27" (identifier "unaff_EDI") (+ "+") (number_literal "-0x93e27")) () ")")))) () ")")) (compound_statement "{\n    local_24 = param_5[0x18];\n    if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }\n  }" ({ "{") (expression_statement "local_24 = param_5[0x18];" (assignment_expression "local_24 = param_5[0x18]" (identifier "local_24") (= "=") (subscript_expression "param_5[0x18]" (identifier "param_5") ([ "[") (number_literal "0x18") (] "]"))) (; ";")) (if_statement "if (local_24 == 0xffffffff) {\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" (if "if") (parenthesized_expression "(local_24 == 0xffffffff)" (( "(") (binary_expression "local_24 == 0xffffffff" (identifier "local_24") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                    \n      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);\n    }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1)" (( "(") (binary_expression "unaff_EDI + 0x121da6" (identifier "unaff_EDI") (+ "+") (number_literal "0x121da6")) (, ",") (number_literal "0x1043") (, ",") (binary_expression "unaff_EDI + 0x1367ad" (identifier "unaff_EDI") (+ "+") (number_literal "0x1367ad")) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" (else "else") (compound_statement "{\n    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);\n  }" ({ "{") (expression_statement "local_24 = (**(code **)(*param_5 + 0x2c))(param_5);" (assignment_expression "local_24 = (**(code **)(*param_5 + 0x2c))(param_5)" (identifier "local_24") (= "=") (call_expression "(**(code **)(*param_5 + 0x2c))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x2c))" (( "(") (pointer_expression "**(code **)(*param_5 + 0x2c)" (* "*") (pointer_expression "*(code **)(*param_5 + 0x2c)" (* "*") (cast_expression "(code **)(*param_5 + 0x2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x2c)" (( "(") (binary_expression "*param_5 + 0x2c" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 0x1d0)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 4) + 0x1d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 4) + 0x1d0)" (( "(") (binary_expression "*(int *)(param_2 + 4) + 0x1d0" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x1d0")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);\n  }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49)" (( "(") (binary_expression "unaff_EDI + 0x136170" (identifier "unaff_EDI") (+ "+") (number_literal "0x136170")) (, ",") (number_literal "0x44e") (, ",") (binary_expression "unaff_EDI + 0x1367c9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1367c9")) (, ",") (binary_expression "unaff_EDI + 0x215a49" (identifier "unaff_EDI") (+ "+") (number_literal "0x215a49")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(iVar1 + 0x3c);" (assignment_expression "iVar1 = *(int *)(iVar1 + 0x3c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + 0x3c)" (* "*") (cast_expression "(int *)(iVar1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 4)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x1c) & 4" (pointer_expression "*(byte *)(iVar1 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);\n  }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909)" (( "(") (binary_expression "unaff_EDI + 0x121da6" (identifier "unaff_EDI") (+ "+") (number_literal "0x121da6")) (, ",") (number_literal "0xe3") (, ",") (binary_expression "unaff_EDI + 0x136909" (identifier "unaff_EDI") (+ "+") (number_literal "0x136909")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(uint *)(iVar1 + 0x14);" (assignment_expression "uVar2 = *(uint *)(iVar1 + 0x14)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x14)" (* "*") (cast_expression "(uint *)(iVar1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar1 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);\n  }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7)" (( "(") (binary_expression "unaff_EDI + 0x121da6" (identifier "unaff_EDI") (+ "+") (number_literal "0x121da6")) (, ",") (number_literal "0xcf") (, ",") (binary_expression "unaff_EDI + 0x1368fd" (identifier "unaff_EDI") (+ "+") (number_literal "0x1368fd")) (, ",") (identifier "param_7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar8 = *(uint *)(iVar1 + 0xc);" (assignment_expression "uVar8 = *(uint *)(iVar1 + 0xc)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iVar1 + 0xc)" (* "*") (cast_expression "(uint *)(iVar1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" (if "if") (parenthesized_expression "((*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0))" (( "(") (binary_expression "(*(int *)(iVar1 + 0x18) < 0) ||\n     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" (parenthesized_expression "(*(int *)(iVar1 + 0x18) < 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x18) < 0" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)" (( "(") (comma_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),\n     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" (identifier "iVar9") (= "=") (binary_expression "*(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2)" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(uVar8,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar8,uVar2)" (identifier "CARRY4") (argument_list "(uVar8,uVar2)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar2") () ")")))))) (, ",") (comma_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" (identifier "uVar4") (= "=") (call_expression "(uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_7 + 8) < uVar8 + uVar2)" (( "(") (binary_expression "*(uint *)(param_7 + 8) < uVar8 + uVar2" (pointer_expression "*(uint *)(param_7 + 8)" (* "*") (cast_expression "(uint *)(param_7 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 8)" (( "(") (binary_expression "param_7 + 8" (identifier "param_7") (+ "+") (number_literal "8")) () ")")))) (< "<") (binary_expression "uVar8 + uVar2" (identifier "uVar8") (+ "+") (identifier "uVar2"))) () ")")))) (, ",") (comma_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9\n     , uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "iVar1 = *(int *)(param_7 + 0xc) - iVar9" (identifier "iVar1") (= "=") (binary_expression "*(int *)(param_7 + 0xc) - iVar9" (pointer_expression "*(int *)(param_7 + 0xc)" (* "*") (cast_expression "(int *)(param_7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0xc)" (( "(") (binary_expression "param_7 + 0xc" (identifier "param_7") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (identifier "iVar9"))) (, ",") (comma_expression "uVar8 = iVar1 - uVar4,\n     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (assignment_expression "uVar8 = iVar1 - uVar4" (identifier "uVar8") (= "=") (binary_expression "iVar1 - uVar4" (identifier "iVar1") (- "-") (identifier "uVar4"))) (, ",") (binary_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4))" (( "(") (binary_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)" (call_expression "SBORROW4(*(int *)(param_7 + 0xc),iVar9)" (identifier "SBORROW4") (argument_list "(*(int *)(param_7 + 0xc),iVar9)" (( "(") (pointer_expression "*(int *)(param_7 + 0xc)" (* "*") (cast_expression "(int *)(param_7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0xc)" (( "(") (binary_expression "param_7 + 0xc" (identifier "param_7") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar9") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar1,uVar4)" (identifier "SBORROW4") (argument_list "(iVar1,uVar4)" (( "(") (identifier "iVar1") (, ",") (identifier "uVar4") () ")")))) () ")")) (!= "!=") (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (number_literal "0"))))))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);\n  }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);" (call_expression "FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8)" (( "(") (binary_expression "unaff_EDI + 0x121da6" (identifier "unaff_EDI") (+ "+") (number_literal "0x121da6")) (, ",") (number_literal "0x6f") (, ",") (binary_expression "unaff_EDI + 0x1368c5" (identifier "unaff_EDI") (+ "+") (number_literal "0x1368c5")) (, ",") (identifier "uVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(param_7 + 0x10);" (assignment_expression "iVar1 = *(int *)(param_7 + 0x10)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_7 + 0x10)" (* "*") (cast_expression "(int *)(param_7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0x10)" (( "(") (binary_expression "param_7 + 0x10" (identifier "param_7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 != 0) {\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);\n  }" ({ "{") (do_statement "do {\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    } while (param_4 != iVar9);" (do "do") (compound_statement "{\n      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);\n      uVar4 = param_1[0x2c];\n      uVar10 = uVar8 >> 8;\n      if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }\n      iVar9 = iVar9 + 1;\n    }" ({ "{") (expression_statement "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);" (assignment_expression "uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(param_3 + 4 + iVar9 * 8)" (* "*") (cast_expression "(uint *)(param_3 + 4 + iVar9 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4 + iVar9 * 8)" (( "(") (binary_expression "param_3 + 4 + iVar9 * 8" (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar9 * 8" (identifier "iVar9") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" (identifier "uVar4") (= "=") (subscript_expression "param_1[0x2c]" (identifier "param_1") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (expression_statement "uVar10 = uVar8 >> 8;" (assignment_expression "uVar10 = uVar8 >> 8" (identifier "uVar10") (= "=") (binary_expression "uVar8 >> 8" (identifier "uVar8") (>> ">>") (number_literal "8"))) (; ";")) (if_statement "if (uVar4 <= uVar10) {\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" (if "if") (parenthesized_expression "(uVar4 <= uVar10)" (( "(") (binary_expression "uVar4 <= uVar10" (identifier "uVar4") (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n        iVar3 = *(int *)(param_3 + iVar9 * 8);\n        if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }\n        uVar10 = uVar10 - uVar4;\n        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);\n        if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }\n        iVar3 = param_1[0x17];\n        if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }\n        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }\n        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);\n        iVar7 = *piVar5;\n        *piVar5 = iVar7 + 1;\n        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);\n        *puVar6 = uVar8 & 0xff;\n        puVar6[1] = local_24;\n        puVar6[2] = local_30;\n        puVar6[3] = 0;\n      }" ({ "{") (expression_statement "iVar3 = *(int *)(param_3 + iVar9 * 8);" (assignment_expression "iVar3 = *(int *)(param_3 + iVar9 * 8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_3 + iVar9 * 8)" (* "*") (cast_expression "(int *)(param_3 + iVar9 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + iVar9 * 8)" (( "(") (binary_expression "param_3 + iVar9 * 8" (identifier "param_3") (+ "+") (binary_expression "iVar9 * 8" (identifier "iVar9") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (param_6 == -1) {\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }\n        else {\n          local_30 = iVar3 + param_6;\n        }" (if "if") (parenthesized_expression "(param_6 == -1)" (( "(") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);\n          if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }\n          local_30 = iVar7 + iVar3;\n          uVar4 = param_1[0x2c];\n        }" ({ "{") (expression_statement "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3);" (assignment_expression "iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" (identifier "iVar7") (= "=") (call_expression "FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" (identifier "FUN_000efd20") (argument_list "(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),\n                               iVar3)" (( "(") (identifier "param_5") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if (iVar7 == -1) {\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                    \n            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);\n          }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);" (call_expression "FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff)" (( "(") (binary_expression "unaff_EDI + 0x136170" (identifier "unaff_EDI") (+ "+") (number_literal "0x136170")) (, ",") (number_literal "0x46d") (, ",") (binary_expression "unaff_EDI + 0x1367c9" (identifier "unaff_EDI") (+ "+") (number_literal "0x1367c9")) (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (} "}"))) (expression_statement "local_30 = iVar7 + iVar3;" (assignment_expression "local_30 = iVar7 + iVar3" (identifier "local_30") (= "=") (binary_expression "iVar7 + iVar3" (identifier "iVar7") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = param_1[0x2c];" (assignment_expression "uVar4 = param_1[0x2c]" (identifier "uVar4") (= "=") (subscript_expression "param_1[0x2c]" (identifier "param_1") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          local_30 = iVar3 + param_6;\n        }" (else "else") (compound_statement "{\n          local_30 = iVar3 + param_6;\n        }" ({ "{") (expression_statement "local_30 = iVar3 + param_6;" (assignment_expression "local_30 = iVar3 + param_6" (identifier "local_30") (= "=") (binary_expression "iVar3 + param_6" (identifier "iVar3") (+ "+") (identifier "param_6"))) (; ";")) (} "}")))) (expression_statement "uVar10 = uVar10 - uVar4;" (assignment_expression "uVar10 = uVar10 - uVar4" (identifier "uVar10") (= "=") (binary_expression "uVar10 - uVar4" (identifier "uVar10") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);" (assignment_expression "piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1)" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(*param_1 + 0x74))(param_1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0x74))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x74))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x74)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x74)" (* "*") (cast_expression "(code **)(*param_1 + 0x74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x74)" (( "(") (binary_expression "*param_1 + 0x74" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x74")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (param_1[0x16] == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" (if "if") (parenthesized_expression "(param_1[0x16] == 0)" (( "(") (binary_expression "param_1[0x16] == 0" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);\n        }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d)" (( "(") (binary_expression "unaff_EDI + 0x121dce" (identifier "unaff_EDI") (+ "+") (number_literal "0x121dce")) (, ",") (number_literal "0x603") (, ",") (binary_expression "unaff_EDI + 0x13678d" (identifier "unaff_EDI") (+ "+") (number_literal "0x13678d")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = param_1[0x17];" (assignment_expression "iVar3 = param_1[0x17]" (identifier "iVar3") (= "=") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);\n        }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d)" (( "(") (binary_expression "unaff_EDI + 0x121dce" (identifier "unaff_EDI") (+ "+") (number_literal "0x121dce")) (, ",") (number_literal "0x604") (, ",") (binary_expression "unaff_EDI + 0x13678d" (identifier "unaff_EDI") (+ "+") (number_literal "0x13678d")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" (if "if") (parenthesized_expression "((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10)" (( "(") (binary_expression "(uint)(piVar5[1] - *piVar5 >> 2) <= uVar10" (call_expression "(uint)(piVar5[1] - *piVar5 >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar5[1] - *piVar5 >> 2)" (( "(") (binary_expression "piVar5[1] - *piVar5 >> 2" (binary_expression "piVar5[1] - *piVar5" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n                    \n          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);\n        }" ({ "{") (expression_statement "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);" (call_expression "FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" (identifier "FUN_0008b620") (argument_list "(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d)" (( "(") (binary_expression "unaff_EDI + 0x121dce" (identifier "unaff_EDI") (+ "+") (number_literal "0x121dce")) (, ",") (number_literal "0x605") (, ",") (binary_expression "unaff_EDI + 0x13678d" (identifier "unaff_EDI") (+ "+") (number_literal "0x13678d")) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)(param_1[0x16] + uVar10 * 4);" (assignment_expression "piVar5 = (int *)(param_1[0x16] + uVar10 * 4)" (identifier "piVar5") (= "=") (cast_expression "(int *)(param_1[0x16] + uVar10 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x16] + uVar10 * 4)" (( "(") (binary_expression "param_1[0x16] + uVar10 * 4" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar7 = *piVar5;" (assignment_expression "iVar7 = *piVar5" (identifier "iVar7") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "*piVar5 = iVar7 + 1;" (assignment_expression "*piVar5 = iVar7 + 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);" (assignment_expression "puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" (identifier "puVar6") (= "=") (cast_expression "(uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1)" (( "(") (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2" (binary_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10" (parenthesized_expression "(iVar7 + *(int *)(iVar3 + uVar10 * 4))" (( "(") (binary_expression "iVar7 + *(int *)(iVar3 + uVar10 * 4)" (identifier "iVar7") (+ "+") (pointer_expression "*(int *)(iVar3 + uVar10 * 4)" (* "*") (cast_expression "(int *)(iVar3 + uVar10 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + uVar10 * 4)" (( "(") (binary_expression "iVar3 + uVar10 * 4" (identifier "iVar3") (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")"))))) () ")")) (* "*") (number_literal "0x10")) (+ "+") (identifier "uVar2")) (+ "+") (identifier "iVar1")) () ")")))) (; ";")) (expression_statement "*puVar6 = uVar8 & 0xff;" (assignment_expression "*puVar6 = uVar8 & 0xff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "puVar6[1] = local_24;" (assignment_expression "puVar6[1] = local_24" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar6[2] = local_30;" (assignment_expression "puVar6[2] = local_30" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != iVar9)" (( "(") (binary_expression "param_4 != iVar9" (identifier "param_4") (!= "!=") (identifier "iVar9")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void incremental_relocs_write_reltype<9>(Sized_relobj_file<32,_false> *
   this, Relocate_info<32,_false> * relinfo, uchar * prelocs, size_t reloc_count, Output_section *
   output_section, Address output_offset, Output_file * of) */

void __thiscall
gold::Sized_relobj_file<32,_false>::incremental_relocs_write_reltype<9>
          (Sized_relobj_file<32,_false> *this,Relocate_info<32,_false> *relinfo,type_5 *var_16,
          size_t var_15,Output_section *output_section,Address var_20,Output_file *of)

{
  byte var_7;
  type_1 *var_2;
  type_2 *var_6;
  type_3 *pOVar4;
  type_4 var_11;
  int var_12;
  type_5 *var_24;
  type_4 *var_23;
  type_4 var_10;
  int var_14;
  type_4 var_18;
  int *piVar12;
  type_4 *var_22;
  type_6 var_21;
  int var_8;
  type_4 var_19;
  int var_3;
  size_t var_17;
  type_4 local_30;
  type_4 var_4;
  
  var_1();
  var_2 = (output_section->super_Output_data)._vptr_Output_data[0xb];
  if (var_2 == (type_1 *)(var_3 + -0x93e27)) {
    var_4 = output_section->out_shndx_;
    if (var_4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      var_5((char *)(Add_symbols::~Add_symbols + var_3 + 6),0x1043,
                          (char *)(var_3 + 0x1367ad));
    }
  }
  else {
    var_4 = (*var_2)(output_section);
  }
  var_6 = relinfo->layout->incremental_inputs_;
  if (var_6 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_5((char *)(var_3 + 0x136170),0x44e,(char *)(var_3 + 0x1367c9));
  }
  pOVar4 = var_6->relocs_section_;
  var_7 = (pOVar4->super_Output_section_data_build).super_Output_section_data.super_Output_data.
          field_0x1c;
  if ((var_7 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    var_5((char *)(Add_symbols::~Add_symbols + var_3 + 6),0xe3,
                        (char *)(var_3 + 0x136909));
  }
  var_11 = (type_4)(pOVar4->super_Output_section_data_build).super_Output_section_data.
                super_Output_data.offset_;
  var_8 = *(int *)((int)&(pOVar4->super_Output_section_data_build).super_Output_section_data.
                          super_Output_data.offset_ + 4);
  if ((var_7 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    var_5((char *)(Add_symbols::~Add_symbols + var_3 + 6),0xcf,
                        (char *)(var_3 + 0x1368fd));
  }
  var_10 = (type_4)(pOVar4->super_Output_section_data_build).super_Output_section_data.
                super_Output_data.data_size_;
  if ((var_8 < 0) ||
     (var_12 = *(int *)((int)&of->file_size_ + 4), var_8 = var_8 + (type_4)var_9(var_10,var_11),
     var_10 = (type_4)((type_4)of->file_size_ < var_10 + var_11), var_14 = var_12 - var_8,
     (var_13(var_12,var_8) != var_13(var_14,var_10)) != (int)(var_14 - var_10) < 0)) {
                    /* WARNING: Subroutine does not return */
    var_5((char *)(Add_symbols::~Add_symbols + var_3 + 6),0x6f,
                        (char *)(var_3 + 0x1368c5));
  }
  var_24 = of->base_;
  var_17 = 0;
  if (var_15 != 0) {
    do {
      var_10 = *(type_4 *)(var_16 + var_17 * 8 + 4);
      var_18 = this->local_symbol_count_;
      var_19 = var_10 >> 8;
      if (var_18 <= var_19) {
        var_8 = *(int *)(var_16 + var_17 * 8);
        if (var_20 == 0xffffffff) {
          var_21 = Output_section::var_20
                             (output_section,(type_7 *)relinfo->object,relinfo->data_shndx,var_8);
          if (var_21 == -1) {
                    /* WARNING: Subroutine does not return */
            var_5((char *)(var_3 + 0x136170),0x46d,(char *)(var_3 + 0x1367c9))
            ;
          }
          local_30 = var_21 + var_8;
          var_18 = this->local_symbol_count_;
        }
        else {
          local_30 = var_8 + var_20;
        }
        var_19 = var_19 - var_18;
        piVar12 = (int *)(*(this->super_Sized_relobj<32,_false>).super_Relobj.super_Object.
                           _vptr_Object[0x1d])(this);
        var_22 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_counts_;
        if (var_22 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_5((char *)(var_3 + 0x121dce),0x603,(char *)(var_3 + 0x13678d));
        }
        var_23 = (this->super_Sized_relobj<32,_false>).super_Relobj.reloc_bases_;
        if (var_23 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_5((char *)(var_3 + 0x121dce),0x604,(char *)(var_3 + 0x13678d));
        }
        if ((type_4)(piVar12[1] - *piVar12 >> 2) <= var_19) {
                    /* WARNING: Subroutine does not return */
          var_5((char *)(var_3 + 0x121dce),0x605,(char *)(var_3 + 0x13678d));
        }
        var_22 = var_22 + var_19;
        var_18 = *var_22;
        *var_22 = var_18 + 1;
        var_22 = (type_4 *)(var_24 + (var_18 + var_23[var_19]) * 0x10 + var_11);
        *var_22 = var_10 & 0xff;
        var_22[1] = var_4;
        var_22[2] = local_30;
        var_22[3] = 0;
      }
      var_17 = var_17 + 1;
    } while (var_15 != var_17);
  }
  return;
}


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

void MASKED(int *param_1,int param_2,int param_3,int param_4,int *param_5,int param_6,
                 int param_7)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int unaff_EDI;
  uint local_30;
  uint local_24;
  
  FUN_00058c4a();
  if (*(code **)(*param_5 + 0x2c) == (code *)(unaff_EDI + -0x93e27)) {
    local_24 = param_5[0x18];
    if (local_24 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620(unaff_EDI + 0x121da6,0x1043,unaff_EDI + 0x1367ad,param_1);
    }
  }
  else {
    local_24 = (**(code **)(*param_5 + 0x2c))(param_5);
  }
  iVar1 = *(int *)(*(int *)(param_2 + 4) + 0x1d0);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x136170,0x44e,unaff_EDI + 0x1367c9,unaff_EDI + 0x215a49);
  }
  iVar1 = *(int *)(iVar1 + 0x3c);
  if ((*(byte *)(iVar1 + 0x1c) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0xe3,unaff_EDI + 0x136909);
  }
  uVar2 = *(uint *)(iVar1 + 0x14);
  if ((*(byte *)(iVar1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0xcf,unaff_EDI + 0x1368fd,param_7);
  }
  uVar8 = *(uint *)(iVar1 + 0xc);
  if ((*(int *)(iVar1 + 0x18) < 0) ||
     (iVar9 = *(int *)(iVar1 + 0x18) + (uint)CARRY4(uVar8,uVar2),
     uVar4 = (uint)(*(uint *)(param_7 + 8) < uVar8 + uVar2), iVar1 = *(int *)(param_7 + 0xc) - iVar9
     , uVar8 = iVar1 - uVar4,
     (SBORROW4(*(int *)(param_7 + 0xc),iVar9) != SBORROW4(iVar1,uVar4)) != (int)uVar8 < 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008b620(unaff_EDI + 0x121da6,0x6f,unaff_EDI + 0x1368c5,uVar8);
  }
  iVar1 = *(int *)(param_7 + 0x10);
  iVar9 = 0;
  if (param_4 != 0) {
    do {
      uVar8 = *(uint *)(param_3 + 4 + iVar9 * 8);
      uVar4 = param_1[0x2c];
      uVar10 = uVar8 >> 8;
      if (uVar4 <= uVar10) {
        iVar3 = *(int *)(param_3 + iVar9 * 8);
        if (param_6 == -1) {
          iVar7 = FUN_000efd20(param_5,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x18),
                               iVar3);
          if (iVar7 == -1) {
                    /* WARNING: Subroutine does not return */
            FUN_0008b620(unaff_EDI + 0x136170,0x46d,unaff_EDI + 0x1367c9,0xffffffff);
          }
          local_30 = iVar7 + iVar3;
          uVar4 = param_1[0x2c];
        }
        else {
          local_30 = iVar3 + param_6;
        }
        uVar10 = uVar10 - uVar4;
        piVar5 = (int *)(**(code **)(*param_1 + 0x74))(param_1);
        if (param_1[0x16] == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x603,unaff_EDI + 0x13678d);
        }
        iVar3 = param_1[0x17];
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x604,unaff_EDI + 0x13678d);
        }
        if ((uint)(piVar5[1] - *piVar5 >> 2) <= uVar10) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620(unaff_EDI + 0x121dce,0x605,unaff_EDI + 0x13678d);
        }
        piVar5 = (int *)(param_1[0x16] + uVar10 * 4);
        iVar7 = *piVar5;
        *piVar5 = iVar7 + 1;
        puVar6 = (uint *)((iVar7 + *(int *)(iVar3 + uVar10 * 4)) * 0x10 + uVar2 + iVar1);
        *puVar6 = uVar8 & 0xff;
        puVar6[1] = local_24;
        puVar6[2] = local_30;
        puVar6[3] = 0;
      }
      iVar9 = iVar9 + 1;
    } while (param_4 != iVar9);
  }
  return;
}

