
/* DWARF original prototype: void make_verdef_map(Sized_dynobj<64,_true> * this, Read_symbols_data *
   sd, Version_map * version_map) */

void __thiscall
gold::Sized_dynobj<64,_true>::make_verdef_map
          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)

{
  uint uVar1;
  ushort *puVar2;
  uchar *puVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  ushort uVar7;
  uint uVar8;
  char *pcVar9;
  ushort *puVar10;
  uint uVar11;
  long lVar12;
  ulong local_50;
  
  if (sd->verdef == (File_view *)0x0) {
    return;
  }
  uVar1 = sd->verdef_info;
  puVar2 = (ushort *)sd->verdef->data_;
  puVar3 = sd->symbol_names->data_;
  uVar4 = sd->symbol_names_size;
  uVar5 = sd->verdef_size;
  if (uVar1 == 0) {
    return;
  }
  uVar7 = *puVar2 << 8 | *puVar2 >> 8;
  if (uVar7 == 1) {
    uVar7 = puVar2[2] << 8 | puVar2[2] >> 8;
    if (puVar2[3] == 0) {
LAB_002a1910:
      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");
      local_50 = 0;
    }
    else {
      uVar8 = *(uint *)(puVar2 + 6);
      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      uVar6 = (ulong)uVar8;
      if (uVar6 < uVar5) {
        uVar11 = 0;
        lVar12 = 0;
        puVar10 = puVar2;
        do {
          uVar8 = *(uint *)((long)puVar10 + uVar6);
          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
          if (uVar4 <= uVar8) {
            local_50 = (ulong)uVar8;
            pcVar9 = "verdaux vda_name field out of range: %u";
            goto LAB_002a18b8;
          }
          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));
          uVar8 = *(uint *)(puVar10 + 8);
          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
          if (uVar5 <= (ulong)uVar8 + lVar12) {
            local_50 = (ulong)uVar8;
            pcVar9 = "verdef vd_next field out of range: %u";
            goto LAB_002a18b8;
          }
          uVar11 = uVar11 + 1;
          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);
          if (uVar1 == uVar11) {
            return;
          }
          uVar7 = *puVar10 << 8 | *puVar10 >> 8;
          if (uVar7 != 1) goto LAB_002a18f0;
          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;
          if (puVar10[3] == 0) goto LAB_002a1910;
          uVar8 = *(uint *)(puVar10 + 6);
          lVar12 = (long)puVar10 - (long)puVar2;
          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
          uVar6 = (ulong)uVar8;
        } while (lVar12 + uVar6 < uVar5);
      }
      local_50 = (ulong)uVar8;
      pcVar9 = "verdef vd_aux field out of range: %u";
LAB_002a18b8:
      pcVar9 = (char *)gettext(pcVar9);
    }
  }
  else {
LAB_002a18f0:
    pcVar9 = (char *)gettext("unexpected verdef version %u");
    local_50 = (ulong)uVar7;
  }
  Object::error((Object *)this,pcVar9,local_50);
  return;
}



void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)

{
  int iVar1;
  ushort *puVar2;
  long lVar3;
  ulong uVar4;
  ulong uVar5;
  undefined8 uVar6;
  ulong uVar7;
  ushort uVar8;
  uint uVar9;
  char *pcVar10;
  ushort *puVar11;
  int iVar12;
  long lVar13;
  
  if (*(long *)(param_2 + 0x50) == 0) {
    return;
  }
  iVar1 = *(int *)(param_2 + 0x60);
  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);
  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);
  uVar4 = *(ulong *)(param_2 + 0x38);
  uVar5 = *(ulong *)(param_2 + 0x58);
  if (iVar1 == 0) {
    return;
  }
  uVar8 = *puVar2 << 8 | *puVar2 >> 8;
  if (uVar8 == 1) {
    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;
    if (puVar2[3] == 0) {
LAB_002a1910:
      uVar6 = gettext("verdef vd_cnt field too small: %u");
      uVar9 = 0;
    }
    else {
      uVar9 = *(uint *)(puVar2 + 6);
      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
      uVar7 = (ulong)uVar9;
      if (uVar7 < uVar5) {
        iVar12 = 0;
        lVar13 = 0;
        puVar11 = puVar2;
        do {
          uVar9 = *(uint *)((long)puVar11 + uVar7);
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar4 <= uVar9) {
            pcVar10 = "verdaux vda_name field out of range: %u";
            goto LAB_002a18b8;
          }
          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);
          uVar9 = *(uint *)(puVar11 + 8);
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar5 <= (ulong)uVar9 + lVar13) {
            pcVar10 = "verdef vd_next field out of range: %u";
            goto LAB_002a18b8;
          }
          iVar12 = iVar12 + 1;
          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);
          if (iVar1 == iVar12) {
            return;
          }
          uVar8 = *puVar11 << 8 | *puVar11 >> 8;
          if (uVar8 != 1) goto LAB_002a18f0;
          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;
          if (puVar11[3] == 0) goto LAB_002a1910;
          uVar9 = *(uint *)(puVar11 + 6);
          lVar13 = (long)puVar11 - (long)puVar2;
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          uVar7 = (ulong)uVar9;
        } while (lVar13 + uVar7 < uVar5);
      }
      pcVar10 = "verdef vd_aux field out of range: %u";
LAB_002a18b8:
      uVar6 = gettext(pcVar10);
    }
  }
  else {
LAB_002a18f0:
    uVar6 = gettext("unexpected verdef version %u");
    uVar9 = (uint)uVar8;
  }
  FUN_001bd150(param_1,uVar6,uVar9);
  return;
}


MOV RAX,qword ptr [RSI + 0x50]
TEST RAX,RAX
JZ 0x002a1940
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RCX,qword ptr [RSI + 0x30]
MOV R13D,dword ptr [RSI + 0x60]
MOV RBP,qword ptr [RAX + 0x10]
MOV RBX,qword ptr [RCX + 0x10]
MOV qword ptr [RSP + 0x10],RBX
MOV RBX,qword ptr [RSI + 0x38]
MOV qword ptr [RSP + 0x8],RBX
MOV RBX,qword ptr [RSI + 0x58]
TEST R13D,R13D
JZ 0x002a18e0
MOV qword ptr [RSP + 0x18],RDX
MOVZX EDX,word ptr [RBP]
MOV qword ptr [RSP],RDI
ROL DX,0x8
CMP DX,0x1
JNZ 0x002a18f0
MOVZX ESI,word ptr [RBP + 0x4]
ROL SI,0x8
CMP word ptr [RBP + 0x6],0x0
JZ 0x002a1910
MOV EDX,dword ptr [RBP + 0xc]
BSWAP EDX
MOV ECX,EDX
CMP RBX,RCX
JBE 0x002a1920
MOV R12,RBP
XOR R14D,R14D
XOR R15D,R15D
JMP 0x002a189a
MOVZX EDX,SI
MOV RDI,qword ptr [RSP]
MOV RSI,qword ptr [RSP + 0x18]
ADD RCX,qword ptr [RSP + 0x10]
CALL 0x002a16d0
MOV EDX,dword ptr [R12 + 0x10]
BSWAP EDX
MOV ECX,EDX
LEA R8,[RCX + R15*0x1]
CMP R8,RBX
JNC 0x002a1930
ADD R14D,0x1
ADD R12,RCX
CMP R13D,R14D
JZ 0x002a18e0
MOVZX EDX,word ptr [R12]
ROL DX,0x8
CMP DX,0x1
JNZ 0x002a18f0
MOVZX ESI,word ptr [R12 + 0x4]
ROL SI,0x8
CMP word ptr [R12 + 0x6],0x0
JZ 0x002a1910
MOV EDX,dword ptr [R12 + 0xc]
MOV R15,R12
SUB R15,RBP
BSWAP EDX
MOV ECX,EDX
LEA RDI,[R15 + RCX*0x1]
CMP RDI,RBX
JNC 0x002a1920
MOV EDX,dword ptr [R12 + RCX*0x1]
BSWAP EDX
MOV ECX,EDX
CMP qword ptr [RSP + 0x8],RCX
JA 0x002a1818
MOV dword ptr [RSP + 0x8],EDX
LEA RDI,[0x38b4f0]
CALL 0x00147320
MOV EDX,dword ptr [RSP + 0x8]
MOV RDI,qword ptr [RSP]
ADD RSP,0x28
MOV RSI,RAX
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x001bd150
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDI,[0x38b53e]
MOV dword ptr [RSP + 0x8],EDX
CALL 0x00147320
MOV EDX,dword ptr [RSP + 0x8]
MOVZX EDX,DX
JMP 0x002a18c1
LEA RDI,[0x38b4a0]
CALL 0x00147320
XOR EDX,EDX
JMP 0x002a18c1
MOV dword ptr [RSP + 0x8],EDX
LEA RDI,[0x38b4c8]
JMP 0x002a18b8
MOV dword ptr [RSP + 0x8],EDX
LEA RDI,[0x38b518]
JMP 0x002a18b8
RET
(translation_unit "void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}\n\n" (function_definition "void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" primitive_type (function_declarator "FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }" if (parenthesized_expression "(*(long *)(param_2 + 0x50) == 0)" ( (binary_expression "*(long *)(param_2 + 0x50) == 0" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_2 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_2 + 0x60)" identifier = (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);" (assignment_expression "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" identifier = (pointer_expression "*(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" * (cast_expression "(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" ( (type_descriptor "ushort **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x50) + 0x10)" ( (binary_expression "*(long *)(param_2 + 0x50) + 0x10" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x30) + 0x10)" * (cast_expression "(long *)(*(long *)(param_2 + 0x30) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x30) + 0x10)" ( (binary_expression "*(long *)(param_2 + 0x30) + 0x10" (pointer_expression "*(long *)(param_2 + 0x30)" * (cast_expression "(long *)(param_2 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar4 = *(ulong *)(param_2 + 0x38);" (assignment_expression "uVar4 = *(ulong *)(param_2 + 0x38)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x38)" * (cast_expression "(ulong *)(param_2 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(ulong *)(param_2 + 0x58);" (assignment_expression "uVar5 = *(ulong *)(param_2 + 0x58)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x58)" * (cast_expression "(ulong *)(param_2 + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = *puVar2 << 8 | *puVar2 >> 8;" (assignment_expression "uVar8 = *puVar2 << 8 | *puVar2 >> 8" identifier = (binary_expression "*puVar2 << 8 | *puVar2 >> 8" (binary_expression "*puVar2 << 8" (pointer_expression "*puVar2" * identifier) << number_literal) | (binary_expression "*puVar2 >> 8" (pointer_expression "*puVar2" * identifier) >> number_literal))) ;) (if_statement "if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" if (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }" { (expression_statement "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;" (assignment_expression "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8" identifier = (binary_expression "puVar2[2] << 8 | puVar2[2] >> 8" (binary_expression "puVar2[2] << 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar2[2] >> 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" if (parenthesized_expression "(puVar2[3] == 0)" ( (binary_expression "puVar2[3] == 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }" { (labeled_statement "LAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");" statement_identifier : (expression_statement "uVar6 = gettext("verdef vd_cnt field too small: %u");" (assignment_expression "uVar6 = gettext("verdef vd_cnt field too small: %u")" identifier = (call_expression "gettext("verdef vd_cnt field too small: %u")" identifier (argument_list "("verdef vd_cnt field too small: %u")" ( (string_literal ""verdef vd_cnt field too small: %u"" " string_content ") )))) ;)) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" else (compound_statement "{\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" { (expression_statement "uVar9 = *(uint *)(puVar2 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar2 + 6)" identifier = (pointer_expression "*(uint *)(puVar2 + 6)" * (cast_expression "(uint *)(puVar2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 6)" ( (binary_expression "puVar2 + 6" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" identifier = (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" if (parenthesized_expression "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) )) (compound_statement "{\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = puVar2;" (assignment_expression "puVar11 = puVar2" identifier = identifier) ;) (do_statement "do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);" do (compound_statement "{\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        }" { (expression_statement "uVar9 = *(uint *)((long)puVar11 + uVar7);" (assignment_expression "uVar9 = *(uint *)((long)puVar11 + uVar7)" identifier = (pointer_expression "*(uint *)((long)puVar11 + uVar7)" * (cast_expression "(uint *)((long)puVar11 + uVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + uVar7)" ( (binary_expression "(long)puVar11 + uVar7" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar4 <= uVar9)" ( (binary_expression "uVar4 <= uVar9" identifier <= identifier) )) (compound_statement "{\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "pcVar10 = "verdaux vda_name field out of range: %u";" (assignment_expression "pcVar10 = "verdaux vda_name field out of range: %u"" identifier = (string_literal ""verdaux vda_name field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);" (call_expression "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" identifier (argument_list "(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" ( identifier , identifier , identifier , (binary_expression "(ulong)uVar9 + lVar3" (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) ;) (expression_statement "uVar9 = *(uint *)(puVar11 + 8);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 8)" identifier = (pointer_expression "*(uint *)(puVar11 + 8)" * (cast_expression "(uint *)(puVar11 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar5 <= (ulong)uVar9 + lVar13)" ( (binary_expression "uVar5 <= (ulong)uVar9 + lVar13" identifier <= (binary_expression "(ulong)uVar9 + lVar13" (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier)) )) (compound_statement "{\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "pcVar10 = "verdef vd_next field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_next field out of range: %u"" identifier = (string_literal ""verdef vd_next field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);" (assignment_expression "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9)" identifier = (cast_expression "(ushort *)((long)puVar11 + (ulong)uVar9)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + (ulong)uVar9)" ( (binary_expression "(long)puVar11 + (ulong)uVar9" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ;) (if_statement "if (iVar1 == iVar12) {\n            return;\n          }" if (parenthesized_expression "(iVar1 == iVar12)" ( (binary_expression "iVar1 == iVar12" identifier == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = *puVar11 << 8 | *puVar11 >> 8;" (assignment_expression "uVar8 = *puVar11 << 8 | *puVar11 >> 8" identifier = (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" * identifier) << number_literal) | (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" * identifier) >> number_literal))) ;) (if_statement "if (uVar8 != 1) goto LAB_002a18f0;" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (goto_statement "goto LAB_002a18f0;" goto statement_identifier ;)) (expression_statement "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;" (assignment_expression "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8" identifier = (binary_expression "puVar11[2] << 8 | puVar11[2] >> 8" (binary_expression "puVar11[2] << 8" (subscript_expression "puVar11[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar11[2] >> 8" (subscript_expression "puVar11[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar11[3] == 0) goto LAB_002a1910;" if (parenthesized_expression "(puVar11[3] == 0)" ( (binary_expression "puVar11[3] == 0" (subscript_expression "puVar11[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002a1910;" goto statement_identifier ;)) (expression_statement "uVar9 = *(uint *)(puVar11 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 6)" identifier = (pointer_expression "*(uint *)(puVar11 + 6)" * (cast_expression "(uint *)(puVar11 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar13 = (long)puVar11 - (long)puVar2;" (assignment_expression "lVar13 = (long)puVar11 - (long)puVar2" identifier = (binary_expression "(long)puVar11 - (long)puVar2" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" identifier = (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(lVar13 + uVar7 < uVar5)" ( (binary_expression "lVar13 + uVar7 < uVar5" (binary_expression "lVar13 + uVar7" identifier + identifier) < identifier) )) ;) })) (expression_statement "pcVar10 = "verdef vd_aux field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_aux field out of range: %u"" identifier = (string_literal ""verdef vd_aux field out of range: %u"" " string_content ")) ;) (labeled_statement "LAB_002a18b8:\n      uVar6 = gettext(pcVar10);" statement_identifier : (expression_statement "uVar6 = gettext(pcVar10);" (assignment_expression "uVar6 = gettext(pcVar10)" identifier = (call_expression "gettext(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;)) }))) }) (else_clause "else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" else (compound_statement "{\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" { (labeled_statement "LAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");" statement_identifier : (expression_statement "uVar6 = gettext("unexpected verdef version %u");" (assignment_expression "uVar6 = gettext("unexpected verdef version %u")" identifier = (call_expression "gettext("unexpected verdef version %u")" identifier (argument_list "("unexpected verdef version %u")" ( (string_literal ""unexpected verdef version %u"" " string_content ") )))) ;)) (expression_statement "uVar9 = (uint)uVar8;" (assignment_expression "uVar9 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "FUN_001bd150(param_1,uVar6,uVar9);" (call_expression "FUN_001bd150(param_1,uVar6,uVar9)" identifier (argument_list "(param_1,uVar6,uVar9)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void make_verdef_map(Sized_dynobj<64,_true> * this, Read_symbols_data *\n   sd, Version_map * version_map) */\n\nvoid __thiscall\ngold::Sized_dynobj<64,_true>::make_verdef_map\n          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)\n\n{\n  uint uVar1;\n  ushort *puVar2;\n  uchar *puVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ushort uVar7;\n  uint uVar8;\n  char *pcVar9;\n  ushort *puVar10;\n  uint uVar11;\n  long lVar12;\n  ulong local_50;\n  \n  if (sd->verdef == (File_view *)0x0) {\n    return;\n  }\n  uVar1 = sd->verdef_info;\n  puVar2 = (ushort *)sd->verdef->data_;\n  puVar3 = sd->symbol_names->data_;\n  uVar4 = sd->symbol_names_size;\n  uVar5 = sd->verdef_size;\n  if (uVar1 == 0) {\n    return;\n  }\n  uVar7 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar7 == 1) {\n    uVar7 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");\n      local_50 = 0;\n    }\n    else {\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }\n  }\n  else {\nLAB_002a18f0:\n    pcVar9 = (char *)gettext("unexpected verdef version %u");\n    local_50 = (ulong)uVar7;\n  }\n  Object::error((Object *)this,pcVar9,local_50);\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Sized_dynobj<64,_true>::make_verdef_map\n          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::make_verdef_map\n          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)\n\n{\n  uint" identifier > : : (function_declarator "make_verdef_map\n          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)" identifier (parameter_list "(Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)" ( (parameter_declaration "Sized_dynobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Read_symbols_data *sd" type_identifier (pointer_declarator "*sd" * identifier)) , (parameter_declaration "Version_map *version_map" type_identifier (pointer_declarator "*version_map" * identifier)) ))) { identifier) identifier ;) (declaration "ushort *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ushort *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_50;" type_identifier identifier ;) (if_statement "if (sd->verdef == (File_view *)0x0) {\n    return;\n  }" if (parenthesized_expression "(sd->verdef == (File_view *)0x0)" ( (binary_expression "sd->verdef == (File_view *)0x0" (field_expression "sd->verdef" identifier -> field_identifier) == (cast_expression "(File_view *)0x0" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar1 = sd->verdef_info;" (assignment_expression "uVar1 = sd->verdef_info" identifier = (field_expression "sd->verdef_info" identifier -> field_identifier)) ;) (expression_statement "puVar2 = (ushort *)sd->verdef->data_;" (assignment_expression "puVar2 = (ushort *)sd->verdef->data_" identifier = (cast_expression "(ushort *)sd->verdef->data_" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "sd->verdef->data_" (field_expression "sd->verdef" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "puVar3 = sd->symbol_names->data_;" (assignment_expression "puVar3 = sd->symbol_names->data_" identifier = (field_expression "sd->symbol_names->data_" (field_expression "sd->symbol_names" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar4 = sd->symbol_names_size;" (assignment_expression "uVar4 = sd->symbol_names_size" identifier = (field_expression "sd->symbol_names_size" identifier -> field_identifier)) ;) (expression_statement "uVar5 = sd->verdef_size;" (assignment_expression "uVar5 = sd->verdef_size" identifier = (field_expression "sd->verdef_size" identifier -> field_identifier)) ;) (if_statement "if (uVar1 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar7 = *puVar2 << 8 | *puVar2 >> 8;" (assignment_expression "uVar7 = *puVar2 << 8 | *puVar2 >> 8" identifier = (binary_expression "*puVar2 << 8 | *puVar2 >> 8" (binary_expression "*puVar2 << 8" (pointer_expression "*puVar2" * identifier) << number_literal) | (binary_expression "*puVar2 >> 8" (pointer_expression "*puVar2" * identifier) >> number_literal))) ;) (if_statement "if (uVar7 == 1) {\n    uVar7 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");\n      local_50 = 0;\n    }\n    else {\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }\n  }\n  else {\nLAB_002a18f0:\n    pcVar9 = (char *)gettext("unexpected verdef version %u");\n    local_50 = (ulong)uVar7;\n  }" if (parenthesized_expression "(uVar7 == 1)" ( (binary_expression "uVar7 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar7 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");\n      local_50 = 0;\n    }\n    else {\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }\n  }" { (expression_statement "uVar7 = puVar2[2] << 8 | puVar2[2] >> 8;" (assignment_expression "uVar7 = puVar2[2] << 8 | puVar2[2] >> 8" identifier = (binary_expression "puVar2[2] << 8 | puVar2[2] >> 8" (binary_expression "puVar2[2] << 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar2[2] >> 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar2[3] == 0) {\nLAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");\n      local_50 = 0;\n    }\n    else {\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }" if (parenthesized_expression "(puVar2[3] == 0)" ( (binary_expression "puVar2[3] == 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");\n      local_50 = 0;\n    }" { (labeled_statement "LAB_002a1910:\n      pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");" statement_identifier : (expression_statement "pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u");" (assignment_expression "pcVar9 = (char *)gettext("verdef vd_cnt field too small: %u")" identifier = (cast_expression "(char *)gettext("verdef vd_cnt field too small: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("verdef vd_cnt field too small: %u")" identifier (argument_list "("verdef vd_cnt field too small: %u")" ( (string_literal ""verdef vd_cnt field too small: %u"" " string_content ") ))))) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }" else (compound_statement "{\n      uVar8 = *(uint *)(puVar2 + 6);\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      uVar6 = (ulong)uVar8;\n      if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }\n      local_50 = (ulong)uVar8;\n      pcVar9 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);\n    }" { (expression_statement "uVar8 = *(uint *)(puVar2 + 6);" (assignment_expression "uVar8 = *(uint *)(puVar2 + 6)" identifier = (pointer_expression "*(uint *)(puVar2 + 6)" * (cast_expression "(uint *)(puVar2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 6)" ( (binary_expression "puVar2 + 6" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (ulong)uVar8;" (assignment_expression "uVar6 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar6 < uVar5) {\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }" if (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )) (compound_statement "{\n        uVar11 = 0;\n        lVar12 = 0;\n        puVar10 = puVar2;\n        do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);\n      }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = puVar2;" (assignment_expression "puVar10 = puVar2" identifier = identifier) ;) (do_statement "do {\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        } while (lVar12 + uVar6 < uVar5);" do (compound_statement "{\n          uVar8 = *(uint *)((long)puVar10 + uVar6);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));\n          uVar8 = *(uint *)(puVar10 + 8);\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          uVar11 = uVar11 + 1;\n          puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);\n          if (uVar1 == uVar11) {\n            return;\n          }\n          uVar7 = *puVar10 << 8 | *puVar10 >> 8;\n          if (uVar7 != 1) goto LAB_002a18f0;\n          uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;\n          if (puVar10[3] == 0) goto LAB_002a1910;\n          uVar8 = *(uint *)(puVar10 + 6);\n          lVar12 = (long)puVar10 - (long)puVar2;\n          uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n          uVar6 = (ulong)uVar8;\n        }" { (expression_statement "uVar8 = *(uint *)((long)puVar10 + uVar6);" (assignment_expression "uVar8 = *(uint *)((long)puVar10 + uVar6)" identifier = (pointer_expression "*(uint *)((long)puVar10 + uVar6)" * (cast_expression "(uint *)((long)puVar10 + uVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + uVar6)" ( (binary_expression "(long)puVar10 + uVar6" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar4 <= uVar8) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar4 <= uVar8)" ( (binary_expression "uVar4 <= uVar8" identifier <= identifier) )) (compound_statement "{\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "local_50 = (ulong)uVar8;" (assignment_expression "local_50 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar9 = "verdaux vda_name field out of range: %u";" (assignment_expression "pcVar9 = "verdaux vda_name field out of range: %u"" identifier = (string_literal ""verdaux vda_name field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8));" (call_expression "set_version_map(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8))" identifier (argument_list "(this,version_map,(uint)uVar7,(char *)(puVar3 + uVar8))" ( identifier , identifier , (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(char *)(puVar3 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + uVar8)" ( (binary_expression "puVar3 + uVar8" identifier + identifier) ))) ))) ;) (expression_statement "uVar8 = *(uint *)(puVar10 + 8);" (assignment_expression "uVar8 = *(uint *)(puVar10 + 8)" identifier = (pointer_expression "*(uint *)(puVar10 + 8)" * (cast_expression "(uint *)(puVar10 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 8)" ( (binary_expression "puVar10 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar5 <= (ulong)uVar8 + lVar12) {\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar5 <= (ulong)uVar8 + lVar12)" ( (binary_expression "uVar5 <= (ulong)uVar8 + lVar12" identifier <= (binary_expression "(ulong)uVar8 + lVar12" (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier)) )) (compound_statement "{\n            local_50 = (ulong)uVar8;\n            pcVar9 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "local_50 = (ulong)uVar8;" (assignment_expression "local_50 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar9 = "verdef vd_next field out of range: %u";" (assignment_expression "pcVar9 = "verdef vd_next field out of range: %u"" identifier = (string_literal ""verdef vd_next field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8);" (assignment_expression "puVar10 = (ushort *)((long)puVar10 + (ulong)uVar8)" identifier = (cast_expression "(ushort *)((long)puVar10 + (ulong)uVar8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + (ulong)uVar8)" ( (binary_expression "(long)puVar10 + (ulong)uVar8" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ;) (if_statement "if (uVar1 == uVar11) {\n            return;\n          }" if (parenthesized_expression "(uVar1 == uVar11)" ( (binary_expression "uVar1 == uVar11" identifier == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar7 = *puVar10 << 8 | *puVar10 >> 8;" (assignment_expression "uVar7 = *puVar10 << 8 | *puVar10 >> 8" identifier = (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal))) ;) (if_statement "if (uVar7 != 1) goto LAB_002a18f0;" if (parenthesized_expression "(uVar7 != 1)" ( (binary_expression "uVar7 != 1" identifier != number_literal) )) (goto_statement "goto LAB_002a18f0;" goto statement_identifier ;)) (expression_statement "uVar7 = puVar10[2] << 8 | puVar10[2] >> 8;" (assignment_expression "uVar7 = puVar10[2] << 8 | puVar10[2] >> 8" identifier = (binary_expression "puVar10[2] << 8 | puVar10[2] >> 8" (binary_expression "puVar10[2] << 8" (subscript_expression "puVar10[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar10[2] >> 8" (subscript_expression "puVar10[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar10[3] == 0) goto LAB_002a1910;" if (parenthesized_expression "(puVar10[3] == 0)" ( (binary_expression "puVar10[3] == 0" (subscript_expression "puVar10[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002a1910;" goto statement_identifier ;)) (expression_statement "uVar8 = *(uint *)(puVar10 + 6);" (assignment_expression "uVar8 = *(uint *)(puVar10 + 6)" identifier = (pointer_expression "*(uint *)(puVar10 + 6)" * (cast_expression "(uint *)(puVar10 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 6)" ( (binary_expression "puVar10 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar12 = (long)puVar10 - (long)puVar2;" (assignment_expression "lVar12 = (long)puVar10 - (long)puVar2" identifier = (binary_expression "(long)puVar10 - (long)puVar2" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar6 = (ulong)uVar8;" (assignment_expression "uVar6 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(lVar12 + uVar6 < uVar5)" ( (binary_expression "lVar12 + uVar6 < uVar5" (binary_expression "lVar12 + uVar6" identifier + identifier) < identifier) )) ;) })) (expression_statement "local_50 = (ulong)uVar8;" (assignment_expression "local_50 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar9 = "verdef vd_aux field out of range: %u";" (assignment_expression "pcVar9 = "verdef vd_aux field out of range: %u"" identifier = (string_literal ""verdef vd_aux field out of range: %u"" " string_content ")) ;) (labeled_statement "LAB_002a18b8:\n      pcVar9 = (char *)gettext(pcVar9);" statement_identifier : (expression_statement "pcVar9 = (char *)gettext(pcVar9);" (assignment_expression "pcVar9 = (char *)gettext(pcVar9)" identifier = (cast_expression "(char *)gettext(pcVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier ))))) ;)) }))) }) (else_clause "else {\nLAB_002a18f0:\n    pcVar9 = (char *)gettext("unexpected verdef version %u");\n    local_50 = (ulong)uVar7;\n  }" else (compound_statement "{\nLAB_002a18f0:\n    pcVar9 = (char *)gettext("unexpected verdef version %u");\n    local_50 = (ulong)uVar7;\n  }" { (labeled_statement "LAB_002a18f0:\n    pcVar9 = (char *)gettext("unexpected verdef version %u");" statement_identifier : (expression_statement "pcVar9 = (char *)gettext("unexpected verdef version %u");" (assignment_expression "pcVar9 = (char *)gettext("unexpected verdef version %u")" identifier = (cast_expression "(char *)gettext("unexpected verdef version %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("unexpected verdef version %u")" identifier (argument_list "("unexpected verdef version %u")" ( (string_literal ""unexpected verdef version %u"" " string_content ") ))))) ;)) (expression_statement "local_50 = (ulong)uVar7;" (assignment_expression "local_50 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (labeled_statement "Object::error((Object *)this,pcVar9,local_50);" statement_identifier : (ERROR ":" :) (expression_statement "error((Object *)this,pcVar9,local_50);" (call_expression "error((Object *)this,pcVar9,local_50)" identifier (argument_list "((Object *)this,pcVar9,local_50)" ( (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}\n\n" (function_definition "void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" primitive_type (function_declarator "FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }" if (parenthesized_expression "(*(long *)(param_2 + 0x50) == 0)" ( (binary_expression "*(long *)(param_2 + 0x50) == 0" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_2 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_2 + 0x60)" identifier = (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);" (assignment_expression "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" identifier = (pointer_expression "*(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" * (cast_expression "(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" ( (type_descriptor "ushort **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x50) + 0x10)" ( (binary_expression "*(long *)(param_2 + 0x50) + 0x10" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x30) + 0x10)" * (cast_expression "(long *)(*(long *)(param_2 + 0x30) + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x30) + 0x10)" ( (binary_expression "*(long *)(param_2 + 0x30) + 0x10" (pointer_expression "*(long *)(param_2 + 0x30)" * (cast_expression "(long *)(param_2 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar4 = *(ulong *)(param_2 + 0x38);" (assignment_expression "uVar4 = *(ulong *)(param_2 + 0x38)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x38)" * (cast_expression "(ulong *)(param_2 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(ulong *)(param_2 + 0x58);" (assignment_expression "uVar5 = *(ulong *)(param_2 + 0x58)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x58)" * (cast_expression "(ulong *)(param_2 + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = *puVar2 << 8 | *puVar2 >> 8;" (assignment_expression "uVar8 = *puVar2 << 8 | *puVar2 >> 8" identifier = (binary_expression "*puVar2 << 8 | *puVar2 >> 8" (binary_expression "*puVar2 << 8" (pointer_expression "*puVar2" * identifier) << number_literal) | (binary_expression "*puVar2 >> 8" (pointer_expression "*puVar2" * identifier) >> number_literal))) ;) (if_statement "if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" if (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }" { (expression_statement "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;" (assignment_expression "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8" identifier = (binary_expression "puVar2[2] << 8 | puVar2[2] >> 8" (binary_expression "puVar2[2] << 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar2[2] >> 8" (subscript_expression "puVar2[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" if (parenthesized_expression "(puVar2[3] == 0)" ( (binary_expression "puVar2[3] == 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }" { (labeled_statement "LAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");" statement_identifier : (expression_statement "uVar6 = gettext("verdef vd_cnt field too small: %u");" (assignment_expression "uVar6 = gettext("verdef vd_cnt field too small: %u")" identifier = (call_expression "gettext("verdef vd_cnt field too small: %u")" identifier (argument_list "("verdef vd_cnt field too small: %u")" ( (string_literal ""verdef vd_cnt field too small: %u"" " string_content ") )))) ;)) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" else (compound_statement "{\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" { (expression_statement "uVar9 = *(uint *)(puVar2 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar2 + 6)" identifier = (pointer_expression "*(uint *)(puVar2 + 6)" * (cast_expression "(uint *)(puVar2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 6)" ( (binary_expression "puVar2 + 6" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" identifier = (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" if (parenthesized_expression "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) )) (compound_statement "{\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = puVar2;" (assignment_expression "puVar11 = puVar2" identifier = identifier) ;) (do_statement "do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);" do (compound_statement "{\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        }" { (expression_statement "uVar9 = *(uint *)((long)puVar11 + uVar7);" (assignment_expression "uVar9 = *(uint *)((long)puVar11 + uVar7)" identifier = (pointer_expression "*(uint *)((long)puVar11 + uVar7)" * (cast_expression "(uint *)((long)puVar11 + uVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + uVar7)" ( (binary_expression "(long)puVar11 + uVar7" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar4 <= uVar9)" ( (binary_expression "uVar4 <= uVar9" identifier <= identifier) )) (compound_statement "{\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "pcVar10 = "verdaux vda_name field out of range: %u";" (assignment_expression "pcVar10 = "verdaux vda_name field out of range: %u"" identifier = (string_literal ""verdaux vda_name field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);" (call_expression "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" identifier (argument_list "(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" ( identifier , identifier , identifier , (binary_expression "(ulong)uVar9 + lVar3" (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) ;) (expression_statement "uVar9 = *(uint *)(puVar11 + 8);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 8)" identifier = (pointer_expression "*(uint *)(puVar11 + 8)" * (cast_expression "(uint *)(puVar11 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" if (parenthesized_expression "(uVar5 <= (ulong)uVar9 + lVar13)" ( (binary_expression "uVar5 <= (ulong)uVar9 + lVar13" identifier <= (binary_expression "(ulong)uVar9 + lVar13" (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier)) )) (compound_statement "{\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" { (expression_statement "pcVar10 = "verdef vd_next field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_next field out of range: %u"" identifier = (string_literal ""verdef vd_next field out of range: %u"" " string_content ")) ;) (goto_statement "goto LAB_002a18b8;" goto statement_identifier ;) })) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);" (assignment_expression "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9)" identifier = (cast_expression "(ushort *)((long)puVar11 + (ulong)uVar9)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + (ulong)uVar9)" ( (binary_expression "(long)puVar11 + (ulong)uVar9" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ;) (if_statement "if (iVar1 == iVar12) {\n            return;\n          }" if (parenthesized_expression "(iVar1 == iVar12)" ( (binary_expression "iVar1 == iVar12" identifier == identifier) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = *puVar11 << 8 | *puVar11 >> 8;" (assignment_expression "uVar8 = *puVar11 << 8 | *puVar11 >> 8" identifier = (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" * identifier) << number_literal) | (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" * identifier) >> number_literal))) ;) (if_statement "if (uVar8 != 1) goto LAB_002a18f0;" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (goto_statement "goto LAB_002a18f0;" goto statement_identifier ;)) (expression_statement "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;" (assignment_expression "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8" identifier = (binary_expression "puVar11[2] << 8 | puVar11[2] >> 8" (binary_expression "puVar11[2] << 8" (subscript_expression "puVar11[2]" identifier [ number_literal ]) << number_literal) | (binary_expression "puVar11[2] >> 8" (subscript_expression "puVar11[2]" identifier [ number_literal ]) >> number_literal))) ;) (if_statement "if (puVar11[3] == 0) goto LAB_002a1910;" if (parenthesized_expression "(puVar11[3] == 0)" ( (binary_expression "puVar11[3] == 0" (subscript_expression "puVar11[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002a1910;" goto statement_identifier ;)) (expression_statement "uVar9 = *(uint *)(puVar11 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 6)" identifier = (pointer_expression "*(uint *)(puVar11 + 6)" * (cast_expression "(uint *)(puVar11 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 6)" ( (binary_expression "puVar11 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar13 = (long)puVar11 - (long)puVar2;" (assignment_expression "lVar13 = (long)puVar11 - (long)puVar2" identifier = (binary_expression "(long)puVar11 - (long)puVar2" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" identifier = (cast_expression "(ulong)uVar9" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(lVar13 + uVar7 < uVar5)" ( (binary_expression "lVar13 + uVar7 < uVar5" (binary_expression "lVar13 + uVar7" identifier + identifier) < identifier) )) ;) })) (expression_statement "pcVar10 = "verdef vd_aux field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_aux field out of range: %u"" identifier = (string_literal ""verdef vd_aux field out of range: %u"" " string_content ")) ;) (labeled_statement "LAB_002a18b8:\n      uVar6 = gettext(pcVar10);" statement_identifier : (expression_statement "uVar6 = gettext(pcVar10);" (assignment_expression "uVar6 = gettext(pcVar10)" identifier = (call_expression "gettext(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;)) }))) }) (else_clause "else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" else (compound_statement "{\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" { (labeled_statement "LAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");" statement_identifier : (expression_statement "uVar6 = gettext("unexpected verdef version %u");" (assignment_expression "uVar6 = gettext("unexpected verdef version %u")" identifier = (call_expression "gettext("unexpected verdef version %u")" identifier (argument_list "("unexpected verdef version %u")" ( (string_literal ""unexpected verdef version %u"" " string_content ") )))) ;)) (expression_statement "uVar9 = (uint)uVar8;" (assignment_expression "uVar9 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "FUN_001bd150(param_1,uVar6,uVar9);" (call_expression "FUN_001bd150(param_1,uVar6,uVar9)" identifier (argument_list "(param_1,uVar6,uVar9)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) | (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) | (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002a1780(undefined8 param_1,long param_2,undefined8 param_3)" (identifier "FUN_002a1780") (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  ushort *puVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  ushort uVar8;\n  uint uVar9;\n  char *pcVar10;\n  ushort *puVar11;\n  int iVar12;\n  long lVar13;\n  \n  if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }\n  iVar1 = *(int *)(param_2 + 0x60);\n  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);\n  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);\n  uVar4 = *(ulong *)(param_2 + 0x38);\n  uVar5 = *(ulong *)(param_2 + 0x58);\n  if (iVar1 == 0) {\n    return;\n  }\n  uVar8 = *puVar2 << 8 | *puVar2 >> 8;\n  if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }\n  FUN_001bd150(param_1,uVar6,uVar9);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "ushort *puVar2;" (type_identifier "ushort") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ushort uVar8;" (type_identifier "ushort") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "ushort *puVar11;" (type_identifier "ushort") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (if_statement "if (*(long *)(param_2 + 0x50) == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_2 + 0x50) == 0)" (( "(") (binary_expression "*(long *)(param_2 + 0x50) == 0" (pointer_expression "*(long *)(param_2 + 0x50)" (* "*") (cast_expression "(long *)(param_2 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(param_2 + 0x60);" (assignment_expression "iVar1 = *(int *)(param_2 + 0x60)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_2 + 0x60)" (* "*") (cast_expression "(int *)(param_2 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);" (assignment_expression "puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" (identifier "puVar2") (= "=") (pointer_expression "*(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" (* "*") (cast_expression "(ushort **)(*(long *)(param_2 + 0x50) + 0x10)" (( "(") (type_descriptor "ushort **" (type_identifier "ushort") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x50) + 0x10)" (( "(") (binary_expression "*(long *)(param_2 + 0x50) + 0x10" (pointer_expression "*(long *)(param_2 + 0x50)" (* "*") (cast_expression "(long *)(param_2 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(param_2 + 0x30) + 0x10)" (* "*") (cast_expression "(long *)(*(long *)(param_2 + 0x30) + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x30) + 0x10)" (( "(") (binary_expression "*(long *)(param_2 + 0x30) + 0x10" (pointer_expression "*(long *)(param_2 + 0x30)" (* "*") (cast_expression "(long *)(param_2 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(ulong *)(param_2 + 0x38);" (assignment_expression "uVar4 = *(ulong *)(param_2 + 0x38)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x38)" (* "*") (cast_expression "(ulong *)(param_2 + 0x38)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(ulong *)(param_2 + 0x58);" (assignment_expression "uVar5 = *(ulong *)(param_2 + 0x58)" (identifier "uVar5") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x58)" (* "*") (cast_expression "(ulong *)(param_2 + 0x58)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x58)" (( "(") (binary_expression "param_2 + 0x58" (identifier "param_2") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar8 = *puVar2 << 8 | *puVar2 >> 8;" (assignment_expression "uVar8 = *puVar2 << 8 | *puVar2 >> 8" (identifier "uVar8") (= "=") (binary_expression "*puVar2 << 8 | *puVar2 >> 8" (binary_expression "*puVar2 << 8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar2 >> 8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (uVar8 == 1) {\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }\n  else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" (if "if") (parenthesized_expression "(uVar8 == 1)" (( "(") (binary_expression "uVar8 == 1" (identifier "uVar8") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;\n    if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }\n  }" ({ "{") (expression_statement "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;" (assignment_expression "uVar8 = puVar2[2] << 8 | puVar2[2] >> 8" (identifier "uVar8") (= "=") (binary_expression "puVar2[2] << 8 | puVar2[2] >> 8" (binary_expression "puVar2[2] << 8" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "puVar2[2] >> 8" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (puVar2[3] == 0) {\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }\n    else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" (if "if") (parenthesized_expression "(puVar2[3] == 0)" (( "(") (binary_expression "puVar2[3] == 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");\n      uVar9 = 0;\n    }" ({ "{") (labeled_statement "LAB_002a1910:\n      uVar6 = gettext("verdef vd_cnt field too small: %u");" (statement_identifier "LAB_002a1910") (: ":") (expression_statement "uVar6 = gettext("verdef vd_cnt field too small: %u");" (assignment_expression "uVar6 = gettext("verdef vd_cnt field too small: %u")" (identifier "uVar6") (= "=") (call_expression "gettext("verdef vd_cnt field too small: %u")" (identifier "gettext") (argument_list "("verdef vd_cnt field too small: %u")" (( "(") (string_literal ""verdef vd_cnt field too small: %u"" (" """) (string_content "verdef vd_cnt field too small: %u") (" """)) () ")")))) (; ";"))) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" (else "else") (compound_statement "{\n      uVar9 = *(uint *)(puVar2 + 6);\n      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n      uVar7 = (ulong)uVar9;\n      if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }\n      pcVar10 = "verdef vd_aux field out of range: %u";\nLAB_002a18b8:\n      uVar6 = gettext(pcVar10);\n    }" ({ "{") (expression_statement "uVar9 = *(uint *)(puVar2 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar2 + 6)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(puVar2 + 6)" (* "*") (cast_expression "(uint *)(puVar2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 6)" (( "(") (binary_expression "puVar2 + 6" (identifier "puVar2") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar9"))) (; ";")) (if_statement "if (uVar7 < uVar5) {\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" (if "if") (parenthesized_expression "(uVar7 < uVar5)" (( "(") (binary_expression "uVar7 < uVar5" (identifier "uVar7") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        iVar12 = 0;\n        lVar13 = 0;\n        puVar11 = puVar2;\n        do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);\n      }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" (identifier "lVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = puVar2;" (assignment_expression "puVar11 = puVar2" (identifier "puVar11") (= "=") (identifier "puVar2")) (; ";")) (do_statement "do {\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        } while (lVar13 + uVar7 < uVar5);" (do "do") (compound_statement "{\n          uVar9 = *(uint *)((long)puVar11 + uVar7);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);\n          uVar9 = *(uint *)(puVar11 + 8);\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }\n          iVar12 = iVar12 + 1;\n          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);\n          if (iVar1 == iVar12) {\n            return;\n          }\n          uVar8 = *puVar11 << 8 | *puVar11 >> 8;\n          if (uVar8 != 1) goto LAB_002a18f0;\n          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;\n          if (puVar11[3] == 0) goto LAB_002a1910;\n          uVar9 = *(uint *)(puVar11 + 6);\n          lVar13 = (long)puVar11 - (long)puVar2;\n          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n          uVar7 = (ulong)uVar9;\n        }" ({ "{") (expression_statement "uVar9 = *(uint *)((long)puVar11 + uVar7);" (assignment_expression "uVar9 = *(uint *)((long)puVar11 + uVar7)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)((long)puVar11 + uVar7)" (* "*") (cast_expression "(uint *)((long)puVar11 + uVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + uVar7)" (( "(") (binary_expression "(long)puVar11 + uVar7" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (identifier "uVar7")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar4 <= uVar9) {\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" (if "if") (parenthesized_expression "(uVar4 <= uVar9)" (( "(") (binary_expression "uVar4 <= uVar9" (identifier "uVar4") (<= "<=") (identifier "uVar9")) () ")")) (compound_statement "{\n            pcVar10 = "verdaux vda_name field out of range: %u";\n            goto LAB_002a18b8;\n          }" ({ "{") (expression_statement "pcVar10 = "verdaux vda_name field out of range: %u";" (assignment_expression "pcVar10 = "verdaux vda_name field out of range: %u"" (identifier "pcVar10") (= "=") (string_literal ""verdaux vda_name field out of range: %u"" (" """) (string_content "verdaux vda_name field out of range: %u") (" """))) (; ";")) (goto_statement "goto LAB_002a18b8;" (goto "goto") (statement_identifier "LAB_002a18b8") (; ";")) (} "}"))) (expression_statement "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);" (call_expression "FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" (identifier "FUN_002a16d0") (argument_list "(param_1,param_3,uVar8,(ulong)uVar9 + lVar3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "uVar8") (, ",") (binary_expression "(ulong)uVar9 + lVar3" (cast_expression "(ulong)uVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar9")) (+ "+") (identifier "lVar3")) () ")"))) (; ";")) (expression_statement "uVar9 = *(uint *)(puVar11 + 8);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 8)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(puVar11 + 8)" (* "*") (cast_expression "(uint *)(puVar11 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 8)" (( "(") (binary_expression "puVar11 + 8" (identifier "puVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar5 <= (ulong)uVar9 + lVar13) {\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" (if "if") (parenthesized_expression "(uVar5 <= (ulong)uVar9 + lVar13)" (( "(") (binary_expression "uVar5 <= (ulong)uVar9 + lVar13" (identifier "uVar5") (<= "<=") (binary_expression "(ulong)uVar9 + lVar13" (cast_expression "(ulong)uVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar9")) (+ "+") (identifier "lVar13"))) () ")")) (compound_statement "{\n            pcVar10 = "verdef vd_next field out of range: %u";\n            goto LAB_002a18b8;\n          }" ({ "{") (expression_statement "pcVar10 = "verdef vd_next field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_next field out of range: %u"" (identifier "pcVar10") (= "=") (string_literal ""verdef vd_next field out of range: %u"" (" """) (string_content "verdef vd_next field out of range: %u") (" """))) (; ";")) (goto_statement "goto LAB_002a18b8;" (goto "goto") (statement_identifier "LAB_002a18b8") (; ";")) (} "}"))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);" (assignment_expression "puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)((long)puVar11 + (ulong)uVar9)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + (ulong)uVar9)" (( "(") (binary_expression "(long)puVar11 + (ulong)uVar9" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (cast_expression "(ulong)uVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar9"))) () ")")))) (; ";")) (if_statement "if (iVar1 == iVar12) {\n            return;\n          }" (if "if") (parenthesized_expression "(iVar1 == iVar12)" (( "(") (binary_expression "iVar1 == iVar12" (identifier "iVar1") (== "==") (identifier "iVar12")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar8 = *puVar11 << 8 | *puVar11 >> 8;" (assignment_expression "uVar8 = *puVar11 << 8 | *puVar11 >> 8" (identifier "uVar8") (= "=") (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (uVar8 != 1) goto LAB_002a18f0;" (if "if") (parenthesized_expression "(uVar8 != 1)" (( "(") (binary_expression "uVar8 != 1" (identifier "uVar8") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_002a18f0;" (goto "goto") (statement_identifier "LAB_002a18f0") (; ";"))) (expression_statement "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;" (assignment_expression "uVar8 = puVar11[2] << 8 | puVar11[2] >> 8" (identifier "uVar8") (= "=") (binary_expression "puVar11[2] << 8 | puVar11[2] >> 8" (binary_expression "puVar11[2] << 8" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "puVar11[2] >> 8" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (puVar11[3] == 0) goto LAB_002a1910;" (if "if") (parenthesized_expression "(puVar11[3] == 0)" (( "(") (binary_expression "puVar11[3] == 0" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002a1910;" (goto "goto") (statement_identifier "LAB_002a1910") (; ";"))) (expression_statement "uVar9 = *(uint *)(puVar11 + 6);" (assignment_expression "uVar9 = *(uint *)(puVar11 + 6)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(puVar11 + 6)" (* "*") (cast_expression "(uint *)(puVar11 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 6)" (( "(") (binary_expression "puVar11 + 6" (identifier "puVar11") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "lVar13 = (long)puVar11 - (long)puVar2;" (assignment_expression "lVar13 = (long)puVar11 - (long)puVar2" (identifier "lVar13") (= "=") (binary_expression "(long)puVar11 - (long)puVar2" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (- "-") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar7 = (ulong)uVar9;" (assignment_expression "uVar7 = (ulong)uVar9" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar9" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar13 + uVar7 < uVar5)" (( "(") (binary_expression "lVar13 + uVar7 < uVar5" (binary_expression "lVar13 + uVar7" (identifier "lVar13") (+ "+") (identifier "uVar7")) (< "<") (identifier "uVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar10 = "verdef vd_aux field out of range: %u";" (assignment_expression "pcVar10 = "verdef vd_aux field out of range: %u"" (identifier "pcVar10") (= "=") (string_literal ""verdef vd_aux field out of range: %u"" (" """) (string_content "verdef vd_aux field out of range: %u") (" """))) (; ";")) (labeled_statement "LAB_002a18b8:\n      uVar6 = gettext(pcVar10);" (statement_identifier "LAB_002a18b8") (: ":") (expression_statement "uVar6 = gettext(pcVar10);" (assignment_expression "uVar6 = gettext(pcVar10)" (identifier "uVar6") (= "=") (call_expression "gettext(pcVar10)" (identifier "gettext") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")")))) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" (else "else") (compound_statement "{\nLAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");\n    uVar9 = (uint)uVar8;\n  }" ({ "{") (labeled_statement "LAB_002a18f0:\n    uVar6 = gettext("unexpected verdef version %u");" (statement_identifier "LAB_002a18f0") (: ":") (expression_statement "uVar6 = gettext("unexpected verdef version %u");" (assignment_expression "uVar6 = gettext("unexpected verdef version %u")" (identifier "uVar6") (= "=") (call_expression "gettext("unexpected verdef version %u")" (identifier "gettext") (argument_list "("unexpected verdef version %u")" (( "(") (string_literal ""unexpected verdef version %u"" (" """) (string_content "unexpected verdef version %u") (" """)) () ")")))) (; ";"))) (expression_statement "uVar9 = (uint)uVar8;" (assignment_expression "uVar9 = (uint)uVar8" (identifier "uVar9") (= "=") (cast_expression "(uint)uVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar8"))) (; ";")) (} "}")))) (expression_statement "FUN_001bd150(param_1,uVar6,uVar9);" (call_expression "FUN_001bd150(param_1,uVar6,uVar9)" (identifier "FUN_001bd150") (argument_list "(param_1,uVar6,uVar9)" (( "(") (identifier "param_1") (, ",") (identifier "uVar6") (, ",") (identifier "uVar9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void make_verdef_map(Sized_dynobj<64,_true> * this, Read_symbols_data *
   sd, Version_map * version_map) */

void __thiscall
gold::Sized_dynobj<64,_true>::make_verdef_map
          (Sized_dynobj<64,_true> *this,Read_symbols_data *sd,Version_map *version_map)

{
  type_4 var_1;
  type_1 *var_4;
  type_2 *var_10;
  type_3 var_8;
  type_3 var_7;
  type_3 var_6;
  type_1 var_2;
  type_4 var_5;
  char *pcVar9;
  type_1 *var_11;
  type_4 var_13;
  long var_12;
  type_3 local_50;
  
  if (sd->verdef == (type_5 *)0x0) {
    return;
  }
  var_1 = sd->verdef_info;
  var_4 = (type_1 *)sd->verdef->data_;
  var_10 = sd->symbol_names->data_;
  var_8 = sd->symbol_names_size;
  var_7 = sd->verdef_size;
  if (var_1 == 0) {
    return;
  }
  var_2 = *var_4 << 8 | *var_4 >> 8;
  if (var_2 == 1) {
    var_2 = var_4[2] << 8 | var_4[2] >> 8;
    if (var_4[3] == 0) {
LAB_002a1910:
      pcVar9 = (char *)var_3("verdef vd_cnt field too small: %u");
      local_50 = 0;
    }
    else {
      var_5 = *(type_4 *)(var_4 + 6);
      var_5 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
      var_6 = (type_3)var_5;
      if (var_6 < var_7) {
        var_13 = 0;
        var_12 = 0;
        var_11 = var_4;
        do {
          var_5 = *(type_4 *)((long)var_11 + var_6);
          var_5 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
          if (var_8 <= var_5) {
            local_50 = (type_3)var_5;
            pcVar9 = "verdaux vda_name field out of range: %u";
            goto LAB_002a18b8;
          }
          var_9(this,version_map,(type_4)var_2,(char *)(var_10 + var_5));
          var_5 = *(type_4 *)(var_11 + 8);
          var_5 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
          if (var_7 <= (type_3)var_5 + var_12) {
            local_50 = (type_3)var_5;
            pcVar9 = "verdef vd_next field out of range: %u";
            goto LAB_002a18b8;
          }
          var_13 = var_13 + 1;
          var_11 = (type_1 *)((long)var_11 + (type_3)var_5);
          if (var_1 == var_13) {
            return;
          }
          var_2 = *var_11 << 8 | *var_11 >> 8;
          if (var_2 != 1) goto LAB_002a18f0;
          var_2 = var_11[2] << 8 | var_11[2] >> 8;
          if (var_11[3] == 0) goto LAB_002a1910;
          var_5 = *(type_4 *)(var_11 + 6);
          var_12 = (long)var_11 - (long)var_4;
          var_5 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
          var_6 = (type_3)var_5;
        } while (var_12 + var_6 < var_7);
      }
      local_50 = (type_3)var_5;
      pcVar9 = "verdef vd_aux field out of range: %u";
LAB_002a18b8:
      pcVar9 = (char *)var_3(pcVar9);
    }
  }
  else {
LAB_002a18f0:
    pcVar9 = (char *)var_3("unexpected verdef version %u");
    local_50 = (type_3)var_2;
  }
  Object::var_14((type_6 *)this,pcVar9,local_50);
  return;
}


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

void MASKED(undefined8 param_1,long param_2,undefined8 param_3)

{
  int iVar1;
  ushort *puVar2;
  long lVar3;
  ulong uVar4;
  ulong uVar5;
  undefined8 uVar6;
  ulong uVar7;
  ushort uVar8;
  uint uVar9;
  char *pcVar10;
  ushort *puVar11;
  int iVar12;
  long lVar13;
  
  if (*(long *)(param_2 + 0x50) == 0) {
    return;
  }
  iVar1 = *(int *)(param_2 + 0x60);
  puVar2 = *(ushort **)(*(long *)(param_2 + 0x50) + 0x10);
  lVar3 = *(long *)(*(long *)(param_2 + 0x30) + 0x10);
  uVar4 = *(ulong *)(param_2 + 0x38);
  uVar5 = *(ulong *)(param_2 + 0x58);
  if (iVar1 == 0) {
    return;
  }
  uVar8 = *puVar2 << 8 | *puVar2 >> 8;
  if (uVar8 == 1) {
    uVar8 = puVar2[2] << 8 | puVar2[2] >> 8;
    if (puVar2[3] == 0) {
LAB_002a1910:
      uVar6 = gettext("verdef vd_cnt field too small: %u");
      uVar9 = 0;
    }
    else {
      uVar9 = *(uint *)(puVar2 + 6);
      uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
      uVar7 = (ulong)uVar9;
      if (uVar7 < uVar5) {
        iVar12 = 0;
        lVar13 = 0;
        puVar11 = puVar2;
        do {
          uVar9 = *(uint *)((long)puVar11 + uVar7);
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar4 <= uVar9) {
            pcVar10 = "verdaux vda_name field out of range: %u";
            goto LAB_002a18b8;
          }
          FUN_002a16d0(param_1,param_3,uVar8,(ulong)uVar9 + lVar3);
          uVar9 = *(uint *)(puVar11 + 8);
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          if (uVar5 <= (ulong)uVar9 + lVar13) {
            pcVar10 = "verdef vd_next field out of range: %u";
            goto LAB_002a18b8;
          }
          iVar12 = iVar12 + 1;
          puVar11 = (ushort *)((long)puVar11 + (ulong)uVar9);
          if (iVar1 == iVar12) {
            return;
          }
          uVar8 = *puVar11 << 8 | *puVar11 >> 8;
          if (uVar8 != 1) goto LAB_002a18f0;
          uVar8 = puVar11[2] << 8 | puVar11[2] >> 8;
          if (puVar11[3] == 0) goto LAB_002a1910;
          uVar9 = *(uint *)(puVar11 + 6);
          lVar13 = (long)puVar11 - (long)puVar2;
          uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
          uVar7 = (ulong)uVar9;
        } while (lVar13 + uVar7 < uVar5);
      }
      pcVar10 = "verdef vd_aux field out of range: %u";
LAB_002a18b8:
      uVar6 = gettext(pcVar10);
    }
  }
  else {
LAB_002a18f0:
    uVar6 = gettext("unexpected verdef version %u");
    uVar9 = (uint)uVar8;
  }
  FUN_001bd150(param_1,uVar6,uVar9);
  return;
}

