
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void mark_resources(ia64_opcode *idesc)

{
  ia64_opcode_dependency *piVar1;
  int iVar2;
  uint note;
  int iVar3;
  ia64_dependency *dep;
  long lVar4;
  rsrc *prVar5;
  ia64_opcode *piVar6;
  byte *pbVar7;
  ia64_opcode *idesc_00;
  ulong uVar8;
  uint path;
  rsrc *prVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  rsrc specs [256];
  
  bVar13 = 0;
  idesc_00 = (ia64_opcode *)idesc->name;
  piVar1 = idesc->dependencies;
  iVar2 = is_conditional_branch(idesc_00);
  bVar12 = true;
  bVar10 = false;
  bVar11 = iVar2 == 0;
  if (bVar11) {
    lVar4 = 4;
    piVar6 = idesc_00;
    pbVar7 = &DAT_00151b8e;
    do {
      if (lVar4 == 0) break;
      lVar4 = lVar4 + -1;
      bVar10 = *(byte *)&piVar6->name < *pbVar7;
      bVar11 = *(byte *)&piVar6->name == *pbVar7;
      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);
      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;
    } while (bVar11);
    bVar12 = (!bVar10 && !bVar11) == bVar10;
  }
  if ((md._80_1_ & 2) != 0) {
    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);
  }
  lVar4 = 0;
  if (0 < piVar1->nregs) {
    do {
      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&
             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {
LAB_00139140:
        lVar4 = lVar4 + 1;
        if (piVar1->nregs <= (int)lVar4) {
          return;
        }
      }
      note = (uint)(piVar1->regs[lVar4] >> 0xb);
      uVar8 = (ulong)note;
      prVar5 = specs;
      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);
      iVar2 = iVar3 + -1;
      if (0 < iVar3) {
        prVar9 = specs + iVar2;
        do {
          iVar2 = iVar2 + -1;
          mark_resource((ia64_opcode *)prVar9,
                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),
                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);
          prVar9 = prVar9 + -1;
        } while (iVar2 != -1);
      }
      if (((IA64_RS_RR < dep->specifier) ||
          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))
      goto LAB_00139140;
      path = 0;
      do {
        uVar8 = (ulong)note;
        prVar5 = specs;
        iVar3 = specify_resource(dep,idesc,0,specs,note,path);
        iVar2 = iVar3 + -1;
        if (0 < iVar3) {
          prVar9 = specs + iVar2;
          do {
            iVar2 = iVar2 + -1;
            mark_resource((ia64_opcode *)prVar9,
                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),
                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);
            prVar9 = prVar9 + -1;
          } while (iVar2 != -1);
        }
        path = path + 1;
      } while ((int)path < md.path);
      lVar4 = lVar4 + 1;
    } while ((int)lVar4 < piVar1->nregs);
  }
  return;
}



void FUN_001390c0(undefined8 *param_1)

{
  long lVar1;
  long lVar2;
  ushort uVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  undefined1 *puVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  undefined1 local_5838 [22536];
  
  bVar16 = 0;
  pbVar9 = (byte *)*param_1;
  lVar1 = param_1[8];
  iVar4 = FUN_00136c20(pbVar9);
  bVar15 = true;
  bVar13 = false;
  bVar14 = iVar4 == 0;
  if (bVar14) {
    lVar6 = 4;
    pbVar7 = pbVar9;
    pbVar8 = &DAT_00151b8e;
    do {
      if (lVar6 == 0) break;
      lVar6 = lVar6 + -1;
      bVar13 = *pbVar7 < *pbVar8;
      bVar14 = *pbVar7 == *pbVar8;
      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;
      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;
    } while (bVar14);
    bVar15 = (!bVar13 && !bVar14) == bVar13;
  }
  if ((DAT_0016e510 & 2) != 0) {
    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);
  }
  lVar6 = 0;
  if (0 < *(int *)(lVar1 + 0x10)) {
    do {
      while( true ) {
        lVar2 = lVar6 * 2;
        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));
        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;
LAB_00139140:
        lVar6 = lVar6 + 1;
        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {
          return;
        }
      }
      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;
      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);
      iVar10 = iVar4 + -1;
      if (0 < iVar4) {
        puVar12 = local_5838 + (long)iVar10 * 0x58;
        do {
          iVar10 = iVar10 + -1;
          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);
          puVar12 = puVar12 + -0x58;
        } while (iVar10 != -1);
      }
      if (((0x1b < *(uint *)(lVar5 + 8)) ||
          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))
      goto LAB_00139140;
      iVar4 = 0;
      do {
        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);
        iVar11 = iVar10 + -1;
        if (0 < iVar10) {
          puVar12 = local_5838 + (long)iVar11 * 0x58;
          do {
            iVar11 = iVar11 + -1;
            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);
            puVar12 = puVar12 + -0x58;
          } while (iVar11 != -1);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 < DAT_0016eba0);
      lVar6 = lVar6 + 1;
    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x5828
MOV R8,qword ptr [RDI]
MOV R15,qword ptr [RDI + 0x40]
MOV qword ptr [RSP + 0x10],RDI
MOV RDI,R8
CALL 0x00136c20
MOV dword ptr [RSP + 0x8],0x1
TEST EAX,EAX
JNZ 0x00139113
MOV ECX,0x4
LEA RDI,[0x151b8e]
MOV RSI,R8
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
SETZ AL
MOVZX EAX,AL
MOV dword ptr [RSP + 0x8],EAX
TEST byte ptr [0x0016e510],0x2
JNZ 0x001392c8
LEA RAX,[RSP + 0x20]
XOR EBP,EBP
MOV qword ptr [RSP + 0x18],RAX
MOV EAX,dword ptr [R15 + 0x10]
TEST EAX,EAX
JG 0x0013914e
JMP 0x001392b2
ADD RBP,0x1
CMP dword ptr [R15 + 0x10],EBP
JLE 0x001392b2
MOV RAX,qword ptr [R15 + 0x18]
LEA RBX,[RBP + RBP*0x1]
MOVZX EDI,word ptr [RAX + RBP*0x2]
CALL 0x00109670
MOV ECX,dword ptr [RSP + 0x8]
MOV qword ptr [RSP],RAX
TEST ECX,ECX
JZ 0x00139181
CMP dword ptr [RAX + 0xc],0x2
JNZ 0x00139140
MOV EAX,dword ptr [RAX + 0x8]
MOV dword ptr [RSP + 0xc],EAX
SUB EAX,0x18
CMP EAX,0x2
JA 0x00139140
MOV RAX,qword ptr [R15 + 0x18]
MOV R14,qword ptr [RSP + 0x18]
XOR EDX,EDX
MOV R9D,dword ptr [0x0016eba0]
MOV RSI,qword ptr [RSP + 0x10]
MOVZX EAX,word ptr [RAX + RBX*0x1]
MOV RDI,qword ptr [RSP]
MOV RCX,R14
SHR AX,0xb
MOVZX EAX,AX
MOV R8D,EAX
MOV dword ptr [RSP + 0xc],EAX
CALL 0x00132650
LEA R12D,[RAX + -0x1]
TEST EAX,EAX
JLE 0x001391fa
MOVSXD RAX,R12D
LEA RDX,[RAX + RAX*0x4]
LEA RAX,[RAX + RDX*0x2]
LEA R14,[R14 + RAX*0x8]
NOP dword ptr [RAX]
MOV RDX,qword ptr [R15 + 0x18]
MOV RDI,R14
SUB R12D,0x1
SUB R14,0x58
MOVZX ESI,word ptr [RDX + RBX*0x1]
MOV EDX,dword ptr [0x0016eba0]
AND ESI,0x7ff
CALL 0x00138fa0
CMP R12D,-0x1
JNZ 0x001391d0
MOV RAX,qword ptr [RSP]
MOV ECX,dword ptr [RAX + 0x8]
CMP ECX,0x1b
JA 0x00139140
MOV EAX,0x1
SHL RAX,CL
TEST EAX,0x8f42080
JZ 0x00139140
MOV EDX,dword ptr [0x0016eba0]
TEST EDX,EDX
JLE 0x00139140
XOR R12D,R12D
NOP
MOV R14,qword ptr [RSP + 0x18]
MOV R8D,dword ptr [RSP + 0xc]
MOV R9D,R12D
XOR EDX,EDX
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RSP]
MOV RCX,R14
CALL 0x00132650
LEA R13D,[RAX + -0x1]
TEST EAX,EAX
JLE 0x00139297
MOVSXD RAX,R13D
LEA RDX,[RAX + RAX*0x4]
LEA RAX,[RAX + RDX*0x2]
LEA R14,[R14 + RAX*0x8]
NOP word ptr [RAX + RAX*0x1]
MOV RDX,qword ptr [R15 + 0x18]
MOV RDI,R14
SUB R13D,0x1
SUB R14,0x58
MOVZX ESI,word ptr [RDX + RBX*0x1]
MOV EDX,R12D
AND ESI,0x7ff
CALL 0x00138fa0
CMP R13D,-0x1
JNZ 0x00139270
ADD R12D,0x1
CMP dword ptr [0x0016eba0],R12D
JG 0x00139230
ADD RBP,0x1
CMP dword ptr [R15 + 0x10],EBP
JG 0x0013914e
ADD RSP,0x5828
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [0x00165940]
MOV RDX,R8
LEA RSI,[0x150138]
XOR EAX,EAX
CALL 0x00109400
JMP 0x00139120
(translation_unit "void FUN_001390c0(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}\n\n" (function_definition "void FUN_001390c0(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001390c0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "undefined1 local_5838 [22536];" type_identifier (array_declarator "local_5838 [22536]" identifier [ number_literal ]) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "lVar1 = param_1[8];" (assignment_expression "lVar1 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = FUN_00136c20(pbVar9);" (assignment_expression "iVar4 = FUN_00136c20(pbVar9)" identifier = (call_expression "FUN_00136c20(pbVar9)" identifier (argument_list "(pbVar9)" ( identifier )))) ;) (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" identifier = true) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar14 = iVar4 == 0;" (assignment_expression "bVar14 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (if_statement "if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" { (expression_statement "lVar6 = 4;" (assignment_expression "lVar6 = 4" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar8 = &DAT_00151b8e;" (assignment_expression "pbVar8 = &DAT_00151b8e" identifier = (pointer_expression "&DAT_00151b8e" & identifier)) ;) (do_statement "do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar8;" (assignment_expression "bVar13 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar14 = *pbVar7 == *pbVar8;" (assignment_expression "bVar14 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar15 = (!bVar13 && !bVar14) == bVar13;" (assignment_expression "bVar15 = (!bVar13 && !bVar14) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) })) (if_statement "if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" if (parenthesized_expression "((DAT_0016e510 & 2) != 0)" ( (binary_expression "(DAT_0016e510 & 2) != 0" (parenthesized_expression "(DAT_0016e510 & 2)" ( (binary_expression "DAT_0016e510 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" { (expression_statement "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);" (call_expression "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9)" identifier (argument_list "(stderr,"Registering \'%s\' resource usage\n",pbVar9)" ( identifier , (string_literal ""Registering \'%s\' resource usage\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" if (parenthesized_expression "(0 < *(int *)(lVar1 + 0x10))" ( (binary_expression "0 < *(int *)(lVar1 + 0x10)" number_literal < (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" { (do_statement "do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));" do (compound_statement "{\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    }" { (while_statement "while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" { (expression_statement "lVar2 = lVar6 * 2;" (assignment_expression "lVar2 = lVar6 * 2" identifier = (binary_expression "lVar6 * 2" identifier * number_literal)) ;) (expression_statement "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));" (assignment_expression "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" identifier = (call_expression "ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" identifier (argument_list "(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" ( (pointer_expression "*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" * (cast_expression "(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar6 * 2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar6 * 2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + (binary_expression "lVar6 * 2" identifier * number_literal)) )))) )))) ;) (if_statement "if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;" if (parenthesized_expression "((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))))" ( (binary_expression "(!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) || (parenthesized_expression "((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" ( (parenthesized_expression "(*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))" ( (binary_expression "*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)" (binary_expression "*(int *)(lVar5 + 0xc) == 2" (pointer_expression "*(int *)(lVar5 + 0xc)" * (cast_expression "(int *)(lVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc)" ( (binary_expression "lVar5 + 0xc" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "(*(int *)(lVar5 + 8) - 0x18U < 3)" ( (binary_expression "*(int *)(lVar5 + 8) - 0x18U < 3" (binary_expression "*(int *)(lVar5 + 8) - 0x18U" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) - number_literal) < number_literal) ))) )) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00139140:\n        lVar6 = lVar6 + 1;" statement_identifier : (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }" if (parenthesized_expression "(*(int *)(lVar1 + 0x10) <= (int)lVar6)" ( (binary_expression "*(int *)(lVar1 + 0x10) <= (int)lVar6" (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) <= (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;" (assignment_expression "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" identifier = (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) >> number_literal)) ;) (expression_statement "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);" (assignment_expression "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" identifier = (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" identifier (argument_list "(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" ( identifier , identifier , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "iVar10 = iVar4 + -1;" (assignment_expression "iVar10 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" { (expression_statement "puVar12 = local_5838 + (long)iVar10 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar10 * 0x58" identifier = (binary_expression "local_5838 + (long)iVar10 * 0x58" identifier + (binary_expression "(long)iVar10 * 0x58" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (do_statement "do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);" do (compound_statement "{\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" identifier (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" ( identifier , (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) & number_literal) , identifier ))) ;) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" identifier = (binary_expression "puVar12 + -0x58" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) })) (if_statement "if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;" if (parenthesized_expression "(((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))" ( (binary_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1)" (parenthesized_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0))" ( (binary_expression "(0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" (parenthesized_expression "(0x1b < *(uint *)(lVar5 + 8))" ( (binary_expression "0x1b < *(uint *)(lVar5 + 8)" number_literal < (pointer_expression "*(uint *)(lVar5 + 8)" * (cast_expression "(uint *)(lVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) )) || (parenthesized_expression "((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" ( (binary_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0" (parenthesized_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U)" ( (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U" (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f)" number_literal << (parenthesized_expression "((byte)*(uint *)(lVar5 + 8) & 0x3f)" ( (binary_expression "(byte)*(uint *)(lVar5 + 8) & 0x3f" (binary_expression "(byte)*(uint *)(lVar5 + 8)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) & number_literal) ))) & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(DAT_0016eba0 < 1)" ( (binary_expression "DAT_0016eba0 < 1" identifier < number_literal) ))) )) (goto_statement "goto LAB_00139140;" goto statement_identifier ;)) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);" do (compound_statement "{\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      }" { (expression_statement "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);" (assignment_expression "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" identifier = (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" identifier (argument_list "(lVar5,param_1,0,local_5838,uVar3,iVar4)" ( identifier , identifier , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar10 + -1;" (assignment_expression "iVar11 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" { (expression_statement "puVar12 = local_5838 + (long)iVar11 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar11 * 0x58" identifier = (binary_expression "local_5838 + (long)iVar11 * 0x58" identifier + (binary_expression "(long)iVar11 * 0x58" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (do_statement "do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);" do (compound_statement "{\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" identifier (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" ( identifier , (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) & number_literal) , identifier ))) ;) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" identifier = (binary_expression "puVar12 + -0x58" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < DAT_0016eba0)" ( (binary_expression "iVar4 < DAT_0016eba0" identifier < identifier) )) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar6 < *(int *)(lVar1 + 0x10))" ( (binary_expression "(int)lVar6 < *(int *)(lVar1 + 0x10)" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid mark_resources(ia64_opcode *idesc)\n\n{\n  ia64_opcode_dependency *piVar1;\n  int iVar2;\n  uint note;\n  int iVar3;\n  ia64_dependency *dep;\n  long lVar4;\n  rsrc *prVar5;\n  ia64_opcode *piVar6;\n  byte *pbVar7;\n  ia64_opcode *idesc_00;\n  ulong uVar8;\n  uint path;\n  rsrc *prVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  rsrc specs [256];\n  \n  bVar13 = 0;\n  idesc_00 = (ia64_opcode *)idesc->name;\n  piVar1 = idesc->dependencies;\n  iVar2 = is_conditional_branch(idesc_00);\n  bVar12 = true;\n  bVar10 = false;\n  bVar11 = iVar2 == 0;\n  if (bVar11) {\n    lVar4 = 4;\n    piVar6 = idesc_00;\n    pbVar7 = &DAT_00151b8e;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    bVar12 = (!bVar10 && !bVar11) == bVar10;\n  }\n  if ((md._80_1_ & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);\n  }\n  lVar4 = 0;\n  if (0 < piVar1->nregs) {\n    do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);\n  }\n  return;\n}\n\n" comment (function_definition "void mark_resources(ia64_opcode *idesc)\n\n{\n  ia64_opcode_dependency *piVar1;\n  int iVar2;\n  uint note;\n  int iVar3;\n  ia64_dependency *dep;\n  long lVar4;\n  rsrc *prVar5;\n  ia64_opcode *piVar6;\n  byte *pbVar7;\n  ia64_opcode *idesc_00;\n  ulong uVar8;\n  uint path;\n  rsrc *prVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  rsrc specs [256];\n  \n  bVar13 = 0;\n  idesc_00 = (ia64_opcode *)idesc->name;\n  piVar1 = idesc->dependencies;\n  iVar2 = is_conditional_branch(idesc_00);\n  bVar12 = true;\n  bVar10 = false;\n  bVar11 = iVar2 == 0;\n  if (bVar11) {\n    lVar4 = 4;\n    piVar6 = idesc_00;\n    pbVar7 = &DAT_00151b8e;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    bVar12 = (!bVar10 && !bVar11) == bVar10;\n  }\n  if ((md._80_1_ & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);\n  }\n  lVar4 = 0;\n  if (0 < piVar1->nregs) {\n    do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);\n  }\n  return;\n}" primitive_type (function_declarator "mark_resources(ia64_opcode *idesc)" identifier (parameter_list "(ia64_opcode *idesc)" ( (parameter_declaration "ia64_opcode *idesc" type_identifier (pointer_declarator "*idesc" * identifier)) ))) (compound_statement "{\n  ia64_opcode_dependency *piVar1;\n  int iVar2;\n  uint note;\n  int iVar3;\n  ia64_dependency *dep;\n  long lVar4;\n  rsrc *prVar5;\n  ia64_opcode *piVar6;\n  byte *pbVar7;\n  ia64_opcode *idesc_00;\n  ulong uVar8;\n  uint path;\n  rsrc *prVar9;\n  bool bVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  rsrc specs [256];\n  \n  bVar13 = 0;\n  idesc_00 = (ia64_opcode *)idesc->name;\n  piVar1 = idesc->dependencies;\n  iVar2 = is_conditional_branch(idesc_00);\n  bVar12 = true;\n  bVar10 = false;\n  bVar11 = iVar2 == 0;\n  if (bVar11) {\n    lVar4 = 4;\n    piVar6 = idesc_00;\n    pbVar7 = &DAT_00151b8e;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    bVar12 = (!bVar10 && !bVar11) == bVar10;\n  }\n  if ((md._80_1_ & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);\n  }\n  lVar4 = 0;\n  if (0 < piVar1->nregs) {\n    do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);\n  }\n  return;\n}" { (declaration "ia64_opcode_dependency *piVar1;" type_identifier (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint note;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ia64_dependency *dep;" type_identifier (pointer_declarator "*dep" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "rsrc *prVar5;" type_identifier (pointer_declarator "*prVar5" * identifier) ;) (declaration "ia64_opcode *piVar6;" type_identifier (pointer_declarator "*piVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "ia64_opcode *idesc_00;" type_identifier (pointer_declarator "*idesc_00" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint path;" type_identifier identifier ;) (declaration "rsrc *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "rsrc specs [256];" type_identifier (array_declarator "specs [256]" identifier [ number_literal ]) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "idesc_00 = (ia64_opcode *)idesc->name;" (assignment_expression "idesc_00 = (ia64_opcode *)idesc->name" identifier = (cast_expression "(ia64_opcode *)idesc->name" ( (type_descriptor "ia64_opcode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "idesc->name" identifier -> field_identifier))) ;) (expression_statement "piVar1 = idesc->dependencies;" (assignment_expression "piVar1 = idesc->dependencies" identifier = (field_expression "idesc->dependencies" identifier -> field_identifier)) ;) (expression_statement "iVar2 = is_conditional_branch(idesc_00);" (assignment_expression "iVar2 = is_conditional_branch(idesc_00)" identifier = (call_expression "is_conditional_branch(idesc_00)" identifier (argument_list "(idesc_00)" ( identifier )))) ;) (expression_statement "bVar12 = true;" (assignment_expression "bVar12 = true" identifier = true) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar11 = iVar2 == 0;" (assignment_expression "bVar11 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) (if_statement "if (bVar11) {\n    lVar4 = 4;\n    piVar6 = idesc_00;\n    pbVar7 = &DAT_00151b8e;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    bVar12 = (!bVar10 && !bVar11) == bVar10;\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    lVar4 = 4;\n    piVar6 = idesc_00;\n    pbVar7 = &DAT_00151b8e;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    bVar12 = (!bVar10 && !bVar11) == bVar10;\n  }" { (expression_statement "lVar4 = 4;" (assignment_expression "lVar4 = 4" identifier = number_literal) ;) (expression_statement "piVar6 = idesc_00;" (assignment_expression "piVar6 = idesc_00" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00151b8e;" (assignment_expression "pbVar7 = &DAT_00151b8e" identifier = (pointer_expression "&DAT_00151b8e" & identifier)) ;) (do_statement "do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar10 = *(byte *)&piVar6->name < *pbVar7;\n      bVar11 = *(byte *)&piVar6->name == *pbVar7;\n      piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);\n      pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;\n    }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *(byte *)&piVar6->name < *pbVar7;" (assignment_expression "bVar10 = *(byte *)&piVar6->name < *pbVar7" identifier = (binary_expression "*(byte *)&piVar6->name < *pbVar7" (pointer_expression "*(byte *)&piVar6->name" * (cast_expression "(byte *)&piVar6->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar6->name" & (field_expression "piVar6->name" identifier -> field_identifier)))) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *(byte *)&piVar6->name == *pbVar7;" (assignment_expression "bVar11 = *(byte *)&piVar6->name == *pbVar7" identifier = (binary_expression "*(byte *)&piVar6->name == *pbVar7" (pointer_expression "*(byte *)&piVar6->name" * (cast_expression "(byte *)&piVar6->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar6->name" & (field_expression "piVar6->name" identifier -> field_identifier)))) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1);" (assignment_expression "piVar6 = (ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1)" identifier = (cast_expression "(ia64_opcode *)((long)piVar6 + (ulong)bVar13 * -2 + 1)" ( (type_descriptor "ia64_opcode *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)piVar6 + (ulong)bVar13 * -2 + 1)" ( (binary_expression "(long)piVar6 + (ulong)bVar13 * -2 + 1" (binary_expression "(long)piVar6 + (ulong)bVar13 * -2" (cast_expression "(long)piVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar12 = (!bVar10 && !bVar11) == bVar10;" (assignment_expression "bVar12 = (!bVar10 && !bVar11) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) })) (if_statement "if ((md._80_1_ & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);\n  }" if (parenthesized_expression "((md._80_1_ & 2) != 0)" ( (binary_expression "(md._80_1_ & 2) != 0" (parenthesized_expression "(md._80_1_ & 2)" ( (binary_expression "md._80_1_ & 2" (field_expression "md._80_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);\n  }" { (expression_statement "fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00);" (call_expression "fprintf(stderr,"Registering \'%s\' resource usage\n",idesc_00)" identifier (argument_list "(stderr,"Registering \'%s\' resource usage\n",idesc_00)" ( identifier , (string_literal ""Registering \'%s\' resource usage\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (if_statement "if (0 < piVar1->nregs) {\n    do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);\n  }" if (parenthesized_expression "(0 < piVar1->nregs)" ( (binary_expression "0 < piVar1->nregs" number_literal < (field_expression "piVar1->nregs" identifier -> field_identifier)) )) (compound_statement "{\n    do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);\n  }" { (do_statement "do {\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    } while ((int)lVar4 < piVar1->nregs);" do (compound_statement "{\n      while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }\n      note = (uint)(piVar1->regs[lVar4] >> 0xb);\n      uVar8 = (ulong)note;\n      prVar5 = specs;\n      iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);\n      iVar2 = iVar3 + -1;\n      if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }\n      if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;\n      path = 0;\n      do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);\n      lVar4 = lVar4 + 1;\n    }" { (while_statement "while ((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))) {\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }" while (parenthesized_expression "((dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR)))))" ( (parenthesized_expression "(dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))))" ( (comma_expression "dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4]), bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR)))" (assignment_expression "dep = (ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4])" identifier = (cast_expression "(ia64_dependency *)ia64_find_dependency(piVar1->regs[lVar4])" ( (type_descriptor "ia64_dependency *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ia64_find_dependency(piVar1->regs[lVar4])" identifier (argument_list "(piVar1->regs[lVar4])" ( (subscript_expression "piVar1->regs[lVar4]" (field_expression "piVar1->regs" identifier -> field_identifier) [ identifier ]) ))))) , (binary_expression "bVar12 &&\n             ((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR)))" identifier && (parenthesized_expression "((dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR)))" ( (parenthesized_expression "(dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR))" ( (binary_expression "dep->mode != IA64_DV_WAR || (2 < dep->specifier - IA64_RS_PR)" (binary_expression "dep->mode != IA64_DV_WAR" (field_expression "dep->mode" identifier -> field_identifier) != identifier) || (parenthesized_expression "(2 < dep->specifier - IA64_RS_PR)" ( (binary_expression "2 < dep->specifier - IA64_RS_PR" number_literal < (binary_expression "dep->specifier - IA64_RS_PR" (field_expression "dep->specifier" identifier -> field_identifier) - identifier)) ))) )) )))) )) )) (compound_statement "{\nLAB_00139140:\n        lVar4 = lVar4 + 1;\n        if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }\n      }" { (labeled_statement "LAB_00139140:\n        lVar4 = lVar4 + 1;" statement_identifier : (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;)) (if_statement "if (piVar1->nregs <= (int)lVar4) {\n          return;\n        }" if (parenthesized_expression "(piVar1->nregs <= (int)lVar4)" ( (binary_expression "piVar1->nregs <= (int)lVar4" (field_expression "piVar1->nregs" identifier -> field_identifier) <= (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "note = (uint)(piVar1->regs[lVar4] >> 0xb);" (assignment_expression "note = (uint)(piVar1->regs[lVar4] >> 0xb)" identifier = (call_expression "(uint)(piVar1->regs[lVar4] >> 0xb)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar1->regs[lVar4] >> 0xb)" ( (binary_expression "piVar1->regs[lVar4] >> 0xb" (subscript_expression "piVar1->regs[lVar4]" (field_expression "piVar1->regs" identifier -> field_identifier) [ identifier ]) >> number_literal) )))) ;) (expression_statement "uVar8 = (ulong)note;" (assignment_expression "uVar8 = (ulong)note" identifier = (cast_expression "(ulong)note" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "prVar5 = specs;" (assignment_expression "prVar5 = specs" identifier = identifier) ;) (expression_statement "iVar3 = specify_resource(dep,idesc,0,specs,note,md.path);" (assignment_expression "iVar3 = specify_resource(dep,idesc,0,specs,note,md.path)" identifier = (call_expression "specify_resource(dep,idesc,0,specs,note,md.path)" identifier (argument_list "(dep,idesc,0,specs,note,md.path)" ( identifier , identifier , number_literal , identifier , identifier , (field_expression "md.path" identifier . field_identifier) )))) ;) (expression_statement "iVar2 = iVar3 + -1;" (assignment_expression "iVar2 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar3) {\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n        prVar9 = specs + iVar2;\n        do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);\n      }" { (expression_statement "prVar9 = specs + iVar2;" (assignment_expression "prVar9 = specs + iVar2" identifier = (binary_expression "specs + iVar2" identifier + identifier)) ;) (do_statement "do {\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        } while (iVar2 != -1);" do (compound_statement "{\n          iVar2 = iVar2 + -1;\n          mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);\n          prVar9 = prVar9 + -1;\n        }" { (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8);" (call_expression "mark_resource((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8)" identifier (argument_list "((ia64_opcode *)prVar9,\n                        (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                        (rsrc *)(ulong)(uint)md.path,(int)prVar5,(int)uVar8)" ( (cast_expression "(ia64_opcode *)prVar9" ( (type_descriptor "ia64_opcode *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff)" ( (type_descriptor "ia64_dependency *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(ulong)(piVar1->regs[lVar4] & 0x7ff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar1->regs[lVar4] & 0x7ff)" ( (binary_expression "piVar1->regs[lVar4] & 0x7ff" (subscript_expression "piVar1->regs[lVar4]" (field_expression "piVar1->regs" identifier -> field_identifier) [ identifier ]) & number_literal) )))) , (cast_expression "(rsrc *)(ulong)(uint)md.path" ( (type_descriptor "rsrc *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(ulong)(uint)md.path" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)md.path" ( (type_descriptor "uint" type_identifier) ) (field_expression "md.path" identifier . field_identifier)))) , (cast_expression "(int)prVar5" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "prVar9 = prVar9 + -1;" (assignment_expression "prVar9 = prVar9 + -1" identifier = (binary_expression "prVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) ;) })) (if_statement "if (((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))\n      goto LAB_00139140;" if (parenthesized_expression "(((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1))" ( (binary_expression "((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.path < 1)" (parenthesized_expression "((IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0))" ( (binary_expression "(IA64_RS_RR < dep->specifier) ||\n          ((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)" (parenthesized_expression "(IA64_RS_RR < dep->specifier)" ( (binary_expression "IA64_RS_RR < dep->specifier" identifier < (field_expression "dep->specifier" identifier -> field_identifier)) )) || (parenthesized_expression "((1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0)" ( (binary_expression "(1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U) == 0" (parenthesized_expression "(1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U)" ( (binary_expression "1L << ((byte)dep->specifier & 0x3f) & 0x8f42080U" (binary_expression "1L << ((byte)dep->specifier & 0x3f)" number_literal << (parenthesized_expression "((byte)dep->specifier & 0x3f)" ( (binary_expression "(byte)dep->specifier & 0x3f" (cast_expression "(byte)dep->specifier" ( (type_descriptor "byte" type_identifier) ) (field_expression "dep->specifier" identifier -> field_identifier)) & number_literal) ))) & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(md.path < 1)" ( (binary_expression "md.path < 1" (field_expression "md.path" identifier . field_identifier) < number_literal) ))) )) (goto_statement "goto LAB_00139140;" goto statement_identifier ;)) (expression_statement "path = 0;" (assignment_expression "path = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      } while ((int)path < md.path);" do (compound_statement "{\n        uVar8 = (ulong)note;\n        prVar5 = specs;\n        iVar3 = specify_resource(dep,idesc,0,specs,note,path);\n        iVar2 = iVar3 + -1;\n        if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }\n        path = path + 1;\n      }" { (expression_statement "uVar8 = (ulong)note;" (assignment_expression "uVar8 = (ulong)note" identifier = (cast_expression "(ulong)note" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "prVar5 = specs;" (assignment_expression "prVar5 = specs" identifier = identifier) ;) (expression_statement "iVar3 = specify_resource(dep,idesc,0,specs,note,path);" (assignment_expression "iVar3 = specify_resource(dep,idesc,0,specs,note,path)" identifier = (call_expression "specify_resource(dep,idesc,0,specs,note,path)" identifier (argument_list "(dep,idesc,0,specs,note,path)" ( identifier , identifier , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "iVar2 = iVar3 + -1;" (assignment_expression "iVar2 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar3) {\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n          prVar9 = specs + iVar2;\n          do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);\n        }" { (expression_statement "prVar9 = specs + iVar2;" (assignment_expression "prVar9 = specs + iVar2" identifier = (binary_expression "specs + iVar2" identifier + identifier)) ;) (do_statement "do {\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          } while (iVar2 != -1);" do (compound_statement "{\n            iVar2 = iVar2 + -1;\n            mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);\n            prVar9 = prVar9 + -1;\n          }" { (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8);" (call_expression "mark_resource((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8)" identifier (argument_list "((ia64_opcode *)prVar9,\n                          (ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff),\n                          (rsrc *)(ulong)path,(int)prVar5,(int)uVar8)" ( (cast_expression "(ia64_opcode *)prVar9" ( (type_descriptor "ia64_opcode *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(ia64_dependency *)(ulong)(piVar1->regs[lVar4] & 0x7ff)" ( (type_descriptor "ia64_dependency *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(ulong)(piVar1->regs[lVar4] & 0x7ff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar1->regs[lVar4] & 0x7ff)" ( (binary_expression "piVar1->regs[lVar4] & 0x7ff" (subscript_expression "piVar1->regs[lVar4]" (field_expression "piVar1->regs" identifier -> field_identifier) [ identifier ]) & number_literal) )))) , (cast_expression "(rsrc *)(ulong)path" ( (type_descriptor "rsrc *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(ulong)path" ( (type_descriptor "ulong" type_identifier) ) identifier)) , (cast_expression "(int)prVar5" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "prVar9 = prVar9 + -1;" (assignment_expression "prVar9 = prVar9 + -1" identifier = (binary_expression "prVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) ;) })) (expression_statement "path = path + 1;" (assignment_expression "path = path + 1" identifier = (binary_expression "path + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)path < md.path)" ( (binary_expression "(int)path < md.path" (cast_expression "(int)path" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "md.path" identifier . field_identifier)) )) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar4 < piVar1->nregs)" ( (binary_expression "(int)lVar4 < piVar1->nregs" (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "piVar1->nregs" identifier -> field_identifier)) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001390c0(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}\n\n" (function_definition "void FUN_001390c0(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001390c0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "undefined1 local_5838 [22536];" type_identifier (array_declarator "local_5838 [22536]" identifier [ number_literal ]) ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "lVar1 = param_1[8];" (assignment_expression "lVar1 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = FUN_00136c20(pbVar9);" (assignment_expression "iVar4 = FUN_00136c20(pbVar9)" identifier = (call_expression "FUN_00136c20(pbVar9)" identifier (argument_list "(pbVar9)" ( identifier )))) ;) (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" identifier = true) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar14 = iVar4 == 0;" (assignment_expression "bVar14 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (if_statement "if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" { (expression_statement "lVar6 = 4;" (assignment_expression "lVar6 = 4" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar8 = &DAT_00151b8e;" (assignment_expression "pbVar8 = &DAT_00151b8e" identifier = (pointer_expression "&DAT_00151b8e" & identifier)) ;) (do_statement "do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar8;" (assignment_expression "bVar13 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar14 = *pbVar7 == *pbVar8;" (assignment_expression "bVar14 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar15 = (!bVar13 && !bVar14) == bVar13;" (assignment_expression "bVar15 = (!bVar13 && !bVar14) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) })) (if_statement "if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" if (parenthesized_expression "((DAT_0016e510 & 2) != 0)" ( (binary_expression "(DAT_0016e510 & 2) != 0" (parenthesized_expression "(DAT_0016e510 & 2)" ( (binary_expression "DAT_0016e510 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" { (expression_statement "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);" (call_expression "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9)" identifier (argument_list "(stderr,"Registering \'%s\' resource usage\n",pbVar9)" ( identifier , (string_literal ""Registering \'%s\' resource usage\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , identifier ))) ;) })) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (if_statement "if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" if (parenthesized_expression "(0 < *(int *)(lVar1 + 0x10))" ( (binary_expression "0 < *(int *)(lVar1 + 0x10)" number_literal < (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" { (do_statement "do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));" do (compound_statement "{\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    }" { (while_statement "while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" { (expression_statement "lVar2 = lVar6 * 2;" (assignment_expression "lVar2 = lVar6 * 2" identifier = (binary_expression "lVar6 * 2" identifier * number_literal)) ;) (expression_statement "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));" (assignment_expression "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" identifier = (call_expression "ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" identifier (argument_list "(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" ( (pointer_expression "*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" * (cast_expression "(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar6 * 2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar6 * 2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + (binary_expression "lVar6 * 2" identifier * number_literal)) )))) )))) ;) (if_statement "if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;" if (parenthesized_expression "((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))))" ( (binary_expression "(!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) || (parenthesized_expression "((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" ( (parenthesized_expression "(*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))" ( (binary_expression "*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)" (binary_expression "*(int *)(lVar5 + 0xc) == 2" (pointer_expression "*(int *)(lVar5 + 0xc)" * (cast_expression "(int *)(lVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc)" ( (binary_expression "lVar5 + 0xc" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "(*(int *)(lVar5 + 8) - 0x18U < 3)" ( (binary_expression "*(int *)(lVar5 + 8) - 0x18U < 3" (binary_expression "*(int *)(lVar5 + 8) - 0x18U" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) - number_literal) < number_literal) ))) )) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00139140:\n        lVar6 = lVar6 + 1;" statement_identifier : (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }" if (parenthesized_expression "(*(int *)(lVar1 + 0x10) <= (int)lVar6)" ( (binary_expression "*(int *)(lVar1 + 0x10) <= (int)lVar6" (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) <= (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;" (assignment_expression "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" identifier = (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) >> number_literal)) ;) (expression_statement "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);" (assignment_expression "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" identifier = (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" identifier (argument_list "(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" ( identifier , identifier , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "iVar10 = iVar4 + -1;" (assignment_expression "iVar10 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" { (expression_statement "puVar12 = local_5838 + (long)iVar10 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar10 * 0x58" identifier = (binary_expression "local_5838 + (long)iVar10 * 0x58" identifier + (binary_expression "(long)iVar10 * 0x58" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (do_statement "do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);" do (compound_statement "{\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" identifier (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" ( identifier , (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) & number_literal) , identifier ))) ;) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" identifier = (binary_expression "puVar12 + -0x58" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) })) (if_statement "if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;" if (parenthesized_expression "(((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))" ( (binary_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1)" (parenthesized_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0))" ( (binary_expression "(0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" (parenthesized_expression "(0x1b < *(uint *)(lVar5 + 8))" ( (binary_expression "0x1b < *(uint *)(lVar5 + 8)" number_literal < (pointer_expression "*(uint *)(lVar5 + 8)" * (cast_expression "(uint *)(lVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) )) || (parenthesized_expression "((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" ( (binary_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0" (parenthesized_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U)" ( (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U" (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f)" number_literal << (parenthesized_expression "((byte)*(uint *)(lVar5 + 8) & 0x3f)" ( (binary_expression "(byte)*(uint *)(lVar5 + 8) & 0x3f" (binary_expression "(byte)*(uint *)(lVar5 + 8)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) & number_literal) ))) & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(DAT_0016eba0 < 1)" ( (binary_expression "DAT_0016eba0 < 1" identifier < number_literal) ))) )) (goto_statement "goto LAB_00139140;" goto statement_identifier ;)) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);" do (compound_statement "{\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      }" { (expression_statement "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);" (assignment_expression "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" identifier = (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" identifier (argument_list "(lVar5,param_1,0,local_5838,uVar3,iVar4)" ( identifier , identifier , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "iVar11 = iVar10 + -1;" (assignment_expression "iVar11 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" { (expression_statement "puVar12 = local_5838 + (long)iVar11 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar11 * 0x58" identifier = (binary_expression "local_5838 + (long)iVar11 * 0x58" identifier + (binary_expression "(long)iVar11 * 0x58" (cast_expression "(long)iVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (do_statement "do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);" do (compound_statement "{\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" identifier (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" ( identifier , (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" * (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" ( (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" * (cast_expression "(long *)(lVar1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x18)" ( (binary_expression "lVar1 + 0x18" identifier + number_literal) )))) + identifier) )))) & number_literal) , identifier ))) ;) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" identifier = (binary_expression "puVar12 + -0x58" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < DAT_0016eba0)" ( (binary_expression "iVar4 < DAT_0016eba0" identifier < identifier) )) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar6 < *(int *)(lVar1 + 0x10))" ( (binary_expression "(int)lVar6 < *(int *)(lVar1 + 0x10)" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(lVar1 + 0x10)" * (cast_expression "(int *)(lVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) < LIT) ))) )) ))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) & LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) ))) & LIT) )) == LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) & LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_001390c0(undefined8 *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001390c0(undefined8 *param_1)" (identifier "FUN_001390c0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  ushort uVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  undefined1 local_5838 [22536];\n  \n  bVar16 = 0;\n  pbVar9 = (byte *)*param_1;\n  lVar1 = param_1[8];\n  iVar4 = FUN_00136c20(pbVar9);\n  bVar15 = true;\n  bVar13 = false;\n  bVar14 = iVar4 == 0;\n  if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }\n  if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }\n  lVar6 = 0;\n  if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "undefined1 local_5838 [22536];" (type_identifier "undefined1") (array_declarator "local_5838 [22536]" (identifier "local_5838") ([ "[") (number_literal "22536") (] "]")) (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" (identifier "pbVar9") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "lVar1 = param_1[8];" (assignment_expression "lVar1 = param_1[8]" (identifier "lVar1") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar4 = FUN_00136c20(pbVar9);" (assignment_expression "iVar4 = FUN_00136c20(pbVar9)" (identifier "iVar4") (= "=") (call_expression "FUN_00136c20(pbVar9)" (identifier "FUN_00136c20") (argument_list "(pbVar9)" (( "(") (identifier "pbVar9") () ")")))) (; ";")) (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" (identifier "bVar15") (= "=") (true "true")) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar14 = iVar4 == 0;" (assignment_expression "bVar14 = iVar4 == 0" (identifier "bVar14") (= "=") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar14) {\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n    lVar6 = 4;\n    pbVar7 = pbVar9;\n    pbVar8 = &DAT_00151b8e;\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);\n    bVar15 = (!bVar13 && !bVar14) == bVar13;\n  }" ({ "{") (expression_statement "lVar6 = 4;" (assignment_expression "lVar6 = 4" (identifier "lVar6") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" (identifier "pbVar7") (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "pbVar8 = &DAT_00151b8e;" (assignment_expression "pbVar8 = &DAT_00151b8e" (identifier "pbVar8") (= "=") (pointer_expression "&DAT_00151b8e" (& "&") (identifier "DAT_00151b8e"))) (; ";")) (do_statement "do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    } while (bVar14);" (do "do") (compound_statement "{\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar13 = *pbVar7 < *pbVar8;\n      bVar14 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;\n      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar6 == 0) break;" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar7 < *pbVar8;" (assignment_expression "bVar13 = *pbVar7 < *pbVar8" (identifier "bVar13") (= "=") (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (< "<") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "bVar14 = *pbVar7 == *pbVar8;" (assignment_expression "bVar14 = *pbVar7 == *pbVar8" (identifier "bVar14") (= "=") (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (== "==") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar16 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (ulong)bVar16 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar16 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (; ";")) (expression_statement "bVar15 = (!bVar13 && !bVar14) == bVar13;" (assignment_expression "bVar15 = (!bVar13 && !bVar14) == bVar13" (identifier "bVar15") (= "=") (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" (( "(") (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar14" (! "!") (identifier "bVar14"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (} "}"))) (if_statement "if ((DAT_0016e510 & 2) != 0) {\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" (if "if") (parenthesized_expression "((DAT_0016e510 & 2) != 0)" (( "(") (binary_expression "(DAT_0016e510 & 2) != 0" (parenthesized_expression "(DAT_0016e510 & 2)" (( "(") (binary_expression "DAT_0016e510 & 2" (identifier "DAT_0016e510") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);\n  }" ({ "{") (expression_statement "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);" (call_expression "fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9)" (identifier "fprintf") (argument_list "(stderr,"Registering \'%s\' resource usage\n",pbVar9)" (( "(") (identifier "stderr") (, ",") (string_literal ""Registering \'%s\' resource usage\n"" (" """) (string_content "Registering ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " resource usage") (escape_sequence "\n") (" """)) (, ",") (identifier "pbVar9") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < *(int *)(lVar1 + 0x10)) {\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" (if "if") (parenthesized_expression "(0 < *(int *)(lVar1 + 0x10))" (( "(") (binary_expression "0 < *(int *)(lVar1 + 0x10)" (number_literal "0") (< "<") (pointer_expression "*(int *)(lVar1 + 0x10)" (* "*") (cast_expression "(int *)(lVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x10)" (( "(") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));" (do "do") (compound_statement "{\n      while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }\n      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;\n      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);\n      iVar10 = iVar4 + -1;\n      if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }\n      if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;\n      iVar4 = 0;\n      do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);\n      lVar6 = lVar6 + 1;\n    }" ({ "{") (while_statement "while( true ) {\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        lVar2 = lVar6 * 2;\n        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));\n        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;\nLAB_00139140:\n        lVar6 = lVar6 + 1;\n        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }\n      }" ({ "{") (expression_statement "lVar2 = lVar6 * 2;" (assignment_expression "lVar2 = lVar6 * 2" (identifier "lVar2") (= "=") (binary_expression "lVar6 * 2" (identifier "lVar6") (* "*") (number_literal "2"))) (; ";")) (expression_statement "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));" (assignment_expression "lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" (identifier "lVar5") (= "=") (call_expression "ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" (identifier "ia64_find_dependency") (argument_list "(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2))" (( "(") (pointer_expression "*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" (* "*") (cast_expression "(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar6 * 2)" (( "(") (binary_expression "*(long *)(lVar1 + 0x18) + lVar6 * 2" (pointer_expression "*(long *)(lVar1 + 0x18)" (* "*") (cast_expression "(long *)(lVar1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x18)" (( "(") (binary_expression "lVar1 + 0x18" (identifier "lVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (binary_expression "lVar6 * 2" (identifier "lVar6") (* "*") (number_literal "2"))) () ")")))) () ")")))) (; ";")) (if_statement "if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;" (if "if") (parenthesized_expression "((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))))" (( "(") (binary_expression "(!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))" (( "(") (parenthesized_expression "(*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3))" (( "(") (binary_expression "*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)" (binary_expression "*(int *)(lVar5 + 0xc) == 2" (pointer_expression "*(int *)(lVar5 + 0xc)" (* "*") (cast_expression "(int *)(lVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xc)" (( "(") (binary_expression "lVar5 + 0xc" (identifier "lVar5") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "2")) (&& "&&") (parenthesized_expression "(*(int *)(lVar5 + 8) - 0x18U < 3)" (( "(") (binary_expression "*(int *)(lVar5 + 8) - 0x18U < 3" (binary_expression "*(int *)(lVar5 + 8) - 0x18U" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (- "-") (number_literal "0x18U")) (< "<") (number_literal "3")) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00139140:\n        lVar6 = lVar6 + 1;" (statement_identifier "LAB_00139140") (: ":") (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {\n          return;\n        }" (if "if") (parenthesized_expression "(*(int *)(lVar1 + 0x10) <= (int)lVar6)" (( "(") (binary_expression "*(int *)(lVar1 + 0x10) <= (int)lVar6" (pointer_expression "*(int *)(lVar1 + 0x10)" (* "*") (cast_expression "(int *)(lVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x10)" (( "(") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;" (assignment_expression "uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" (identifier "uVar3") (= "=") (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (* "*") (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" (* "*") (cast_expression "(long *)(lVar1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x18)" (( "(") (binary_expression "lVar1 + 0x18" (identifier "lVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "lVar2")) () ")")))) (>> ">>") (number_literal "0xb"))) (; ";")) (expression_statement "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);" (assignment_expression "iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" (identifier "iVar4") (= "=") (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" (identifier "FUN_00132650") (argument_list "(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0)" (( "(") (identifier "lVar5") (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "local_5838") (, ",") (identifier "uVar3") (, ",") (identifier "DAT_0016eba0") () ")")))) (; ";")) (expression_statement "iVar10 = iVar4 + -1;" (assignment_expression "iVar10 = iVar4 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (0 < iVar4) {\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n        puVar12 = local_5838 + (long)iVar10 * 0x58;\n        do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);\n      }" ({ "{") (expression_statement "puVar12 = local_5838 + (long)iVar10 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar10 * 0x58" (identifier "puVar12") (= "=") (binary_expression "local_5838 + (long)iVar10 * 0x58" (identifier "local_5838") (+ "+") (binary_expression "(long)iVar10 * 0x58" (cast_expression "(long)iVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar10")) (* "*") (number_literal "0x58")))) (; ";")) (do_statement "do {\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        } while (iVar10 != -1);" (do "do") (compound_statement "{\n          iVar10 = iVar10 + -1;\n          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);\n          puVar12 = puVar12 + -0x58;\n        }" ({ "{") (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" (identifier "FUN_00138fa0") (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0)" (( "(") (identifier "puVar12") (, ",") (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (* "*") (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" (* "*") (cast_expression "(long *)(lVar1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x18)" (( "(") (binary_expression "lVar1 + 0x18" (identifier "lVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "lVar2")) () ")")))) (& "&") (number_literal "0x7ff")) (, ",") (identifier "DAT_0016eba0") () ")"))) (; ";")) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -0x58" (identifier "puVar12") (+ "+") (number_literal "-0x58"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != -1)" (( "(") (binary_expression "iVar10 != -1" (identifier "iVar10") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (if_statement "if (((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))\n      goto LAB_00139140;" (if "if") (parenthesized_expression "(((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))" (( "(") (binary_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1)" (parenthesized_expression "((0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0))" (( "(") (binary_expression "(0x1b < *(uint *)(lVar5 + 8)) ||\n          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" (parenthesized_expression "(0x1b < *(uint *)(lVar5 + 8))" (( "(") (binary_expression "0x1b < *(uint *)(lVar5 + 8)" (number_literal "0x1b") (< "<") (pointer_expression "*(uint *)(lVar5 + 8)" (* "*") (cast_expression "(uint *)(lVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)" (( "(") (binary_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0" (parenthesized_expression "(1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U)" (( "(") (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U" (binary_expression "1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)*(uint *)(lVar5 + 8) & 0x3f)" (( "(") (binary_expression "(byte)*(uint *)(lVar5 + 8) & 0x3f" (binary_expression "(byte)*(uint *)(lVar5 + 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (cast_expression "(uint *)(lVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "0x8f42080U")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(DAT_0016eba0 < 1)" (( "(") (binary_expression "DAT_0016eba0 < 1" (identifier "DAT_0016eba0") (< "<") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_00139140;" (goto "goto") (statement_identifier "LAB_00139140") (; ";"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 < DAT_0016eba0);" (do "do") (compound_statement "{\n        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);\n        iVar11 = iVar10 + -1;\n        if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }\n        iVar4 = iVar4 + 1;\n      }" ({ "{") (expression_statement "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);" (assignment_expression "iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" (identifier "iVar10") (= "=") (call_expression "FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4)" (identifier "FUN_00132650") (argument_list "(lVar5,param_1,0,local_5838,uVar3,iVar4)" (( "(") (identifier "lVar5") (, ",") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "local_5838") (, ",") (identifier "uVar3") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "iVar11 = iVar10 + -1;" (assignment_expression "iVar11 = iVar10 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (0 < iVar10) {\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n          puVar12 = local_5838 + (long)iVar11 * 0x58;\n          do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);\n        }" ({ "{") (expression_statement "puVar12 = local_5838 + (long)iVar11 * 0x58;" (assignment_expression "puVar12 = local_5838 + (long)iVar11 * 0x58" (identifier "puVar12") (= "=") (binary_expression "local_5838 + (long)iVar11 * 0x58" (identifier "local_5838") (+ "+") (binary_expression "(long)iVar11 * 0x58" (cast_expression "(long)iVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar11")) (* "*") (number_literal "0x58")))) (; ";")) (do_statement "do {\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          } while (iVar11 != -1);" (do "do") (compound_statement "{\n            iVar11 = iVar11 + -1;\n            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);\n            puVar12 = puVar12 + -0x58;\n          }" ({ "{") (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);" (call_expression "FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" (identifier "FUN_00138fa0") (argument_list "(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4)" (( "(") (identifier "puVar12") (, ",") (binary_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff" (pointer_expression "*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (* "*") (cast_expression "(ushort *)(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 0x18) + lVar2)" (( "(") (binary_expression "*(long *)(lVar1 + 0x18) + lVar2" (pointer_expression "*(long *)(lVar1 + 0x18)" (* "*") (cast_expression "(long *)(lVar1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x18)" (( "(") (binary_expression "lVar1 + 0x18" (identifier "lVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "lVar2")) () ")")))) (& "&") (number_literal "0x7ff")) (, ",") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "puVar12 = puVar12 + -0x58;" (assignment_expression "puVar12 = puVar12 + -0x58" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -0x58" (identifier "puVar12") (+ "+") (number_literal "-0x58"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != -1)" (( "(") (binary_expression "iVar11 != -1" (identifier "iVar11") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < DAT_0016eba0)" (( "(") (binary_expression "iVar4 < DAT_0016eba0" (identifier "iVar4") (< "<") (identifier "DAT_0016eba0")) () ")")) (; ";")) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar6 < *(int *)(lVar1 + 0x10))" (( "(") (binary_expression "(int)lVar6 < *(int *)(lVar1 + 0x10)" (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6")) (< "<") (pointer_expression "*(int *)(lVar1 + 0x10)" (* "*") (cast_expression "(int *)(lVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x10)" (( "(") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void function_1(type_1 *idesc)

{
  type_2 *piVar1;
  int var_2;
  type_3 note;
  int var_12;
  type_4 *dep;
  long var_3;
  type_5 *prVar5;
  type_1 *piVar6;
  type_6 *var_4;
  type_1 *idesc_00;
  type_7 uVar8;
  type_3 var_17;
  type_5 *var_15;
  bool var_5;
  bool bVar11;
  bool var_8;
  type_6 bVar13;
  type_5 var_13 [256];
  
  bVar13 = 0;
  idesc_00 = (type_1 *)idesc->name;
  piVar1 = idesc->dependencies;
  var_2 = var_1(idesc_00);
  var_8 = true;
  var_5 = false;
  bVar11 = var_2 == 0;
  if (bVar11) {
    var_3 = 4;
    piVar6 = idesc_00;
    var_4 = &DAT_00151b8e;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_5 = *(type_6 *)&piVar6->name < *var_4;
      bVar11 = *(type_6 *)&piVar6->name == *var_4;
      piVar6 = (type_1 *)((long)piVar6 + (type_7)bVar13 * -2 + 1);
      var_4 = var_4 + (type_7)bVar13 * -2 + 1;
    } while (bVar11);
    var_8 = (!var_5 && !bVar11) == var_5;
  }
  if ((md._80_1_ & 2) != 0) {
    var_6(stderr,"Registering \'%s\' resource usage\n",idesc_00);
  }
  var_3 = 0;
  if (0 < piVar1->nregs) {
    do {
      while ((dep = (type_4 *)var_7(piVar1->regs[var_3]), var_8 &&
             ((dep->mode != var_9 || (2 < dep->specifier - var_10))))) {
LAB_00139140:
        var_3 = var_3 + 1;
        if (piVar1->nregs <= (int)var_3) {
          return;
        }
      }
      note = (type_3)(piVar1->regs[var_3] >> 0xb);
      uVar8 = (type_7)note;
      prVar5 = var_13;
      var_12 = var_11(dep,idesc,0,var_13,note,md.var_17);
      var_2 = var_12 + -1;
      if (0 < var_12) {
        var_15 = var_13 + var_2;
        do {
          var_2 = var_2 + -1;
          var_14((type_1 *)var_15,
                        (type_4 *)(type_7)(piVar1->regs[var_3] & 0x7ff),
                        (type_5 *)(type_7)(type_3)md.var_17,(int)prVar5,(int)uVar8);
          var_15 = var_15 + -1;
        } while (var_2 != -1);
      }
      if (((var_16 < dep->specifier) ||
          ((1L << ((type_6)dep->specifier & 0x3f) & 0x8f42080U) == 0)) || (md.var_17 < 1))
      goto LAB_00139140;
      var_17 = 0;
      do {
        uVar8 = (type_7)note;
        prVar5 = var_13;
        var_12 = var_11(dep,idesc,0,var_13,note,var_17);
        var_2 = var_12 + -1;
        if (0 < var_12) {
          var_15 = var_13 + var_2;
          do {
            var_2 = var_2 + -1;
            var_14((type_1 *)var_15,
                          (type_4 *)(type_7)(piVar1->regs[var_3] & 0x7ff),
                          (type_5 *)(type_7)var_17,(int)prVar5,(int)uVar8);
            var_15 = var_15 + -1;
          } while (var_2 != -1);
        }
        var_17 = var_17 + 1;
      } while ((int)var_17 < md.var_17);
      var_3 = var_3 + 1;
    } while ((int)var_3 < piVar1->nregs);
  }
  return;
}


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

void MASKED(undefined8 *param_1)

{
  long lVar1;
  long lVar2;
  ushort uVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  undefined1 *puVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  undefined1 local_5838 [22536];
  
  bVar16 = 0;
  pbVar9 = (byte *)*param_1;
  lVar1 = param_1[8];
  iVar4 = FUN_00136c20(pbVar9);
  bVar15 = true;
  bVar13 = false;
  bVar14 = iVar4 == 0;
  if (bVar14) {
    lVar6 = 4;
    pbVar7 = pbVar9;
    pbVar8 = &DAT_00151b8e;
    do {
      if (lVar6 == 0) break;
      lVar6 = lVar6 + -1;
      bVar13 = *pbVar7 < *pbVar8;
      bVar14 = *pbVar7 == *pbVar8;
      pbVar7 = pbVar7 + (ulong)bVar16 * -2 + 1;
      pbVar8 = pbVar8 + (ulong)bVar16 * -2 + 1;
    } while (bVar14);
    bVar15 = (!bVar13 && !bVar14) == bVar13;
  }
  if ((DAT_0016e510 & 2) != 0) {
    fprintf(stderr,"Registering \'%s\' resource usage\n",pbVar9);
  }
  lVar6 = 0;
  if (0 < *(int *)(lVar1 + 0x10)) {
    do {
      while( true ) {
        lVar2 = lVar6 * 2;
        lVar5 = ia64_find_dependency(*(undefined2 *)(*(long *)(lVar1 + 0x18) + lVar6 * 2));
        if ((!bVar15) || ((*(int *)(lVar5 + 0xc) == 2 && (*(int *)(lVar5 + 8) - 0x18U < 3)))) break;
LAB_00139140:
        lVar6 = lVar6 + 1;
        if (*(int *)(lVar1 + 0x10) <= (int)lVar6) {
          return;
        }
      }
      uVar3 = *(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) >> 0xb;
      iVar4 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,DAT_0016eba0);
      iVar10 = iVar4 + -1;
      if (0 < iVar4) {
        puVar12 = local_5838 + (long)iVar10 * 0x58;
        do {
          iVar10 = iVar10 + -1;
          FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,DAT_0016eba0);
          puVar12 = puVar12 + -0x58;
        } while (iVar10 != -1);
      }
      if (((0x1b < *(uint *)(lVar5 + 8)) ||
          ((1L << ((byte)*(uint *)(lVar5 + 8) & 0x3f) & 0x8f42080U) == 0)) || (DAT_0016eba0 < 1))
      goto LAB_00139140;
      iVar4 = 0;
      do {
        iVar10 = FUN_00132650(lVar5,param_1,0,local_5838,uVar3,iVar4);
        iVar11 = iVar10 + -1;
        if (0 < iVar10) {
          puVar12 = local_5838 + (long)iVar11 * 0x58;
          do {
            iVar11 = iVar11 + -1;
            FUN_00138fa0(puVar12,*(ushort *)(*(long *)(lVar1 + 0x18) + lVar2) & 0x7ff,iVar4);
            puVar12 = puVar12 + -0x58;
          } while (iVar11 != -1);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 < DAT_0016eba0);
      lVar6 = lVar6 + 1;
    } while ((int)lVar6 < *(int *)(lVar1 + 0x10));
  }
  return;
}

