
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: off_t skip_attributes(Dwarf_die * this) */

off_t __thiscall gold::Dwarf_die::skip_attributes(Dwarf_die *this)

{
  byte bVar1;
  Abbrev_code *pAVar2;
  Dwarf_info_reader *pDVar3;
  int iVar4;
  Relobj *pRVar5;
  _func_int_varargs **pp_Var6;
  _func_int_varargs *p_Var7;
  ushort uVar8;
  char cVar9;
  uint *buffer;
  pointer pAVar10;
  uint uVar11;
  size_t sVar13;
  size_t sVar14;
  Valtype return_value;
  uchar *puVar15;
  uint *puVar16;
  uint uVar17;
  uint uVar18;
  bool bVar19;
  ulonglong uVar20;
  uint64_t uVar21;
  size_t len;
  int iVar12;
  
  pAVar2 = this->abbrev_code_;
  if (pAVar2 == (Abbrev_code *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");
  }
  pDVar3 = this->dwinfo_;
  uVar18 = (uint)this->die_offset_;
  iVar12 = *(int *)((int)&this->die_offset_ + 4);
  iVar4 = (int)pDVar3->cu_offset_;
  puVar15 = pDVar3->buffer_ + iVar4 + uVar18;
  if (pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1) {
    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);
    return 0;
  }
  if (puVar15 == (uchar *)0x0) {
    return 0;
  }
  buffer = (uint *)(puVar15 + (int)this->attr_offset_);
  pAVar10 = (pAVar2->attributes).
            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
            ._M_impl._M_start;
  if (pAVar10 !=
      (pAVar2->attributes).
      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
      ._M_impl._M_finish) {
    uVar18 = 0;
    puVar16 = buffer;
    do {
      uVar20 = (ulonglong)pAVar10[uVar18].form;
      buffer = puVar16;
      if (pAVar10[uVar18].form == 0x16) {
        bVar1 = (byte)*puVar16;
        uVar17 = (uint)bVar1;
        uVar20 = (ulonglong)uVar17;
        buffer = (uint *)((int)puVar16 + 1);
        if ((char)bVar1 < '\0') {
          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);
          buffer = (uint *)((int)puVar16 + len);
          goto LAB_00372cfd;
        }
        len = 1;
        bVar19 = uVar17 == 0xe;
        if (!bVar19) goto LAB_00372d06;
LAB_00372f38:
        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);
      }
      else {
LAB_00372cfd:
        uVar17 = (uint)uVar20;
        bVar19 = uVar17 == 0xe;
        if (bVar19) goto LAB_00372f38;
LAB_00372d06:
        uVar11 = (uint)uVar20;
        if (uVar17 < 0xe || bVar19) {
          if (uVar11 == 7) {
LAB_00372fe0:
            buffer = buffer + 2;
          }
          else if (uVar11 < 8) {
            if (uVar11 == 4) {
              pRVar5 = this->dwinfo_->object_;
              pp_Var6 = (pRVar5->super_Object)._vptr_Object;
              p_Var7 = pp_Var6[3];
              if (p_Var7 == Relobj::is_big_endian) {
                iVar12 = (*pp_Var6[0x3a])(pRVar5);
                cVar9 = (char)iVar12;
              }
              else {
                iVar12 = (*p_Var7)(pRVar5);
                cVar9 = (char)iVar12;
              }
              uVar17 = *buffer;
              if (cVar9 != '\0') {
                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |
                         uVar17 << 0x18;
              }
              buffer = (uint *)((int)buffer + uVar17 + 4);
            }
            else if (uVar11 < 5) {
              if (uVar11 == 1) {
                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);
              }
              else {
                if (uVar11 != 3) {
                  return 0;
                }
                pRVar5 = this->dwinfo_->object_;
                pp_Var6 = (pRVar5->super_Object)._vptr_Object;
                p_Var7 = pp_Var6[3];
                if (p_Var7 == Relobj::is_big_endian) {
                  iVar12 = (*pp_Var6[0x3a])(pRVar5);
                  cVar9 = (char)iVar12;
                }
                else {
                  iVar12 = (*p_Var7)(pRVar5);
                  cVar9 = (char)iVar12;
                }
                uVar8 = (ushort)*buffer;
                if (cVar9 != '\0') {
                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));
                }
                buffer = (uint *)((int)buffer + uVar8 + 2);
              }
            }
            else if (uVar11 == 5) {
LAB_00372e03:
              buffer = (uint *)((int)buffer + 2);
            }
            else {
              if (uVar11 != 6) {
                return 0;
              }
LAB_00372e5a:
              buffer = buffer + 1;
            }
          }
          else if (uVar11 == 10) {
            buffer = (uint *)((int)buffer + (byte)*buffer + 1);
          }
          else {
            if (10 < uVar11) {
              if (uVar11 < 0xd) goto LAB_00372fc0;
              if ((char)(byte)*buffer < '\0') {
                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);
                buffer = (uint *)((int)buffer + len);
                goto LAB_00372d80;
              }
              goto LAB_00372ebb;
            }
            if (uVar11 == 8) {
              sVar13 = strlen((char *)buffer);
              buffer = (uint *)((int)buffer + sVar13 + 1);
            }
            else {
              if (uVar11 != 9) {
                return 0;
              }
LAB_00372e2d:
              bVar1 = (byte)*buffer;
              uVar17 = (uint)bVar1;
              sVar14 = 1;
              if ((char)bVar1 < '\0') {
                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);
                uVar17 = (uint)uVar21;
                sVar14 = len;
              }
              buffer = (uint *)((int)buffer + uVar17 + sVar14);
            }
          }
        }
        else if (uVar11 == 0x15) {
LAB_00372ead:
          if ((char)(byte)*buffer < '\0') {
            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);
            buffer = (uint *)((int)buffer + len);
          }
          else {
LAB_00372ebb:
            buffer = (uint *)((int)buffer + 1);
          }
        }
        else if (uVar11 < 0x16) {
          if (uVar11 == 0x11) {
LAB_00372fc0:
            buffer = (uint *)((int)buffer + 1);
          }
          else {
            if (0x11 < uVar11) {
              if (uVar11 == 0x13) goto LAB_00372e5a;
              if (uVar11 < 0x14) goto LAB_00372e03;
              goto LAB_00372fe0;
            }
            if (uVar11 == 0xf) goto LAB_00372ead;
            if (uVar11 != 0x10) {
              return 0;
            }
            pDVar3 = this->dwinfo_;
            uVar17 = pDVar3->address_size_;
            if (2 < pDVar3->cu_version_) {
              uVar17 = pDVar3->offset_size_;
            }
            buffer = (uint *)((int)buffer + uVar17);
          }
        }
        else if (uVar11 != 0x19) {
          if (uVar11 < 0x1a) {
            if (uVar11 != 0x17) {
              if (uVar11 != 0x18) {
                return 0;
              }
              goto LAB_00372e2d;
            }
            goto LAB_00372f38;
          }
          if (uVar11 == 0x20) goto LAB_00372fe0;
          if (uVar11 < 0x20) {
            return 0;
          }
          if (1 < uVar11 - 0x1f01) {
            return 0;
          }
          goto LAB_00372ead;
        }
      }
LAB_00372d80:
      uVar18 = uVar18 + 1;
      pAVar10 = (this->abbrev_code_->attributes).
                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
                ._M_impl._M_start;
      puVar16 = buffer;
    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).
                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>
                                  ._M_impl._M_finish - (int)pAVar10 >> 3));
    uVar18 = (uint)this->die_offset_;
    iVar12 = *(int *)((int)&this->die_offset_ + 4);
  }
  uVar17 = (int)buffer - (int)puVar15;
  return CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18);
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined8 FUN_00372c70(int *param_1)

{
  int *piVar1;
  code *pcVar2;
  ushort uVar3;
  char cVar4;
  uint *__s;
  int iVar5;
  size_t sVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint *puVar10;
  uint uVar11;
  uint uVar12;
  bool bVar13;
  int local_20 [4];
  
  iVar7 = param_1[10];
  if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);
  }
  iVar5 = *param_1;
  uVar12 = param_1[2];
  iVar9 = param_1[3];
  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);
  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)
  {
    FUN_00372bf0(iVar5);
    return 0;
  }
  if (iVar8 == 0) {
    return 0;
  }
  __s = (uint *)(iVar8 + param_1[4]);
  iVar5 = *(int *)(iVar7 + 8);
  if (iVar5 != *(int *)(iVar7 + 0xc)) {
    uVar12 = 0;
    puVar10 = __s;
    do {
      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);
      __s = puVar10;
      if (uVar11 == 0x16) {
        uVar11 = (uint)(byte)*puVar10;
        __s = (uint *)((int)puVar10 + 1);
        if ((char)(byte)*puVar10 < '\0') {
          uVar11 = FUN_002701a0(__s,local_20,uVar11);
          __s = (uint *)((int)puVar10 + local_20[0]);
          goto LAB_00372cfd;
        }
        local_20[0] = 1;
        bVar13 = uVar11 == 0xe;
        if (!bVar13) goto LAB_00372d06;
LAB_00372f38:
        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));
      }
      else {
LAB_00372cfd:
        bVar13 = uVar11 == 0xe;
        if (bVar13) goto LAB_00372f38;
LAB_00372d06:
        if (uVar11 < 0xe || bVar13) {
          if (uVar11 == 7) {
LAB_00372fe0:
            __s = __s + 2;
          }
          else if (uVar11 < 8) {
            if (uVar11 == 4) {
              piVar1 = *(int **)(*param_1 + 8);
              pcVar2 = *(code **)(*piVar1 + 0xc);
              if (pcVar2 == FUN_00101810) {
                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);
              }
              else {
                cVar4 = (*pcVar2)(piVar1);
              }
              uVar11 = *__s;
              if (cVar4 != '\0') {
                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                         uVar11 << 0x18;
              }
              __s = (uint *)((int)__s + uVar11 + 4);
            }
            else if (uVar11 < 5) {
              if (uVar11 == 1) {
                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));
              }
              else {
                if (uVar11 != 3) {
                  return 0;
                }
                piVar1 = *(int **)(*param_1 + 8);
                pcVar2 = *(code **)(*piVar1 + 0xc);
                if (pcVar2 == FUN_00101810) {
                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);
                }
                else {
                  cVar4 = (*pcVar2)(piVar1);
                }
                uVar3 = (ushort)*__s;
                if (cVar4 != '\0') {
                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));
                }
                __s = (uint *)((int)__s + uVar3 + 2);
              }
            }
            else if (uVar11 == 5) {
LAB_00372e03:
              __s = (uint *)((int)__s + 2);
            }
            else {
              if (uVar11 != 6) {
                return 0;
              }
LAB_00372e5a:
              __s = __s + 1;
            }
          }
          else if (uVar11 == 10) {
            __s = (uint *)((int)__s + (byte)*__s + 1);
          }
          else {
            if (10 < uVar11) {
              if (uVar11 < 0xd) goto LAB_00372fc0;
              if ((char)(byte)*__s < '\0') {
                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);
                __s = (uint *)((int)__s + local_20[0]);
                goto LAB_00372d80;
              }
              goto LAB_00372ebb;
            }
            if (uVar11 == 8) {
              sVar6 = strlen((char *)__s);
              __s = (uint *)((int)__s + sVar6 + 1);
            }
            else {
              if (uVar11 != 9) {
                return 0;
              }
LAB_00372e2d:
              uVar11 = (uint)(byte)*__s;
              iVar7 = 1;
              if ((char)(byte)*__s < '\0') {
                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);
                iVar7 = local_20[0];
              }
              __s = (uint *)((int)__s + uVar11 + iVar7);
            }
          }
        }
        else if (uVar11 == 0x15) {
LAB_00372ead:
          if ((char)(byte)*__s < '\0') {
            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);
            __s = (uint *)((int)__s + local_20[0]);
          }
          else {
LAB_00372ebb:
            __s = (uint *)((int)__s + 1);
          }
        }
        else if (uVar11 < 0x16) {
          if (uVar11 == 0x11) {
LAB_00372fc0:
            __s = (uint *)((int)__s + 1);
          }
          else {
            if (0x11 < uVar11) {
              if (uVar11 == 0x13) goto LAB_00372e5a;
              if (uVar11 < 0x14) goto LAB_00372e03;
              goto LAB_00372fe0;
            }
            if (uVar11 == 0xf) goto LAB_00372ead;
            if (uVar11 != 0x10) {
              return 0;
            }
            iVar7 = *param_1;
            iVar5 = *(int *)(iVar7 + 0x48);
            if (2 < *(uint *)(iVar7 + 0x4c)) {
              iVar5 = *(int *)(iVar7 + 0x44);
            }
            __s = (uint *)((int)__s + iVar5);
          }
        }
        else if (uVar11 != 0x19) {
          if (uVar11 < 0x1a) {
            if (uVar11 != 0x17) {
              if (uVar11 != 0x18) {
                return 0;
              }
              goto LAB_00372e2d;
            }
            goto LAB_00372f38;
          }
          if (uVar11 == 0x20) goto LAB_00372fe0;
          if (uVar11 < 0x20) {
            return 0;
          }
          if (1 < uVar11 - 0x1f01) {
            return 0;
          }
          goto LAB_00372ead;
        }
      }
LAB_00372d80:
      uVar12 = uVar12 + 1;
      iVar5 = *(int *)(param_1[10] + 8);
      puVar10 = __s;
    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));
    uVar12 = param_1[2];
    iVar9 = param_1[3];
  }
  uVar11 = (int)__s - iVar8;
  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);
}


CALL 0x00074f02
ADD EAX,0x27738b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBP,dword ptr [ESP + 0x40]
MOV dword ptr [ESP],EAX
MOV EDI,dword ptr [EBP + 0x28]
TEST EDI,EDI
JZ 0x0037308e
MOV ESI,dword ptr [EBP]
MOV ECX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + 0xc]
MOV EAX,dword ptr [ESI + 0x34]
LEA EDX,[EAX + ECX*0x1]
ADD EDX,dword ptr [ESI + 0x2c]
ADD EAX,dword ptr [ESI + 0x3c]
MOV dword ptr [ESP + 0x4],EDX
ADD EAX,dword ptr [ESI + 0x2c]
ADD EDX,0x1
CMP EDX,EAX
JA 0x00372ff0
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x00372ed1
ADD EAX,dword ptr [EBP + 0x10]
MOV ESI,EAX
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JZ 0x00372d9f
LEA EBX,[ESP + 0x1c]
XOR EDI,EDI
MOV dword ptr [ESP + 0x8],EBX
MOV EBX,dword ptr [ESP]
LEA EBX,[EBX + 0xffb17810]
MOV dword ptr [ESP + 0xc],EBX
NOP
MOV EAX,dword ptr [EAX + EDI*0x8 + 0x4]
CMP EAX,0x16
JZ 0x00372f18
CMP EAX,0xe
JZ 0x00372f38
JA 0x00372db8
CMP EAX,0x7
JZ 0x00372fe0
JA 0x00372e68
CMP EAX,0x4
JZ 0x00372f70
JA 0x00372e50
CMP EAX,0x1
JZ 0x00372fb0
CMP EAX,0x3
JNZ 0x00372ed1
MOV EAX,dword ptr [EBP]
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
CMP ECX,dword ptr [ESP + 0xc]
JNZ 0x00373070
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOVZX EDX,byte ptr [ESI + 0x1]
MOVZX ECX,byte ptr [ESI]
TEST AL,AL
JNZ 0x00373010
SHL EDX,0x8
MOVZX EAX,CL
OR EDX,EAX
MOVZX EAX,DX
LEA ESI,[ESI + EAX*0x1 + 0x2]
LEA ESI,[ESI]
MOV EDX,dword ptr [EBP + 0x28]
ADD EDI,0x1
MOV EAX,dword ptr [EDX + 0x8]
MOV EDX,dword ptr [EDX + 0xc]
SUB EDX,EAX
SAR EDX,0x3
CMP EDI,EDX
JC 0x00372cf0
MOV ECX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + 0xc]
SUB ESI,dword ptr [ESP + 0x4]
MOV EAX,ESI
CDQ
ADD EAX,ECX
ADC EDX,EBX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EAX,0x15
JZ 0x00372ead
JA 0x00372e10
CMP EAX,0x11
JZ 0x00372fc0
JA 0x00372df8
CMP EAX,0xf
JZ 0x00372ead
CMP EAX,0x10
JNZ 0x00372ed1
MOV EDX,dword ptr [EBP]
CMP dword ptr [EDX + 0x4c],0x2
MOV EAX,dword ptr [EDX + 0x48]
CMOVA EAX,dword ptr [EDX + 0x44]
ADD ESI,EAX
JMP 0x00372d80
CMP EAX,0x13
JZ 0x00372e5a
JA 0x00372fe0
ADD ESI,0x2
JMP 0x00372d80
CMP EAX,0x19
JZ 0x00372d80
JA 0x00372e98
CMP EAX,0x17
JZ 0x00372f38
CMP EAX,0x18
JNZ 0x00372ed1
MOVZX EAX,byte ptr [ESI]
MOV ECX,0x1
TEST AL,AL
JS 0x00373048
ADD EAX,ECX
ADD ESI,EAX
JMP 0x00372d80
CMP EAX,0x5
JZ 0x00372e03
CMP EAX,0x6
JNZ 0x00372ed1
ADD ESI,0x4
JMP 0x00372d80
CMP EAX,0xa
JZ 0x00372fd0
JA 0x00372ee0
CMP EAX,0x8
JNZ 0x00372ec8
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x00039330
ADD ESP,0x10
LEA ESI,[ESI + EAX*0x1 + 0x1]
JMP 0x00372d80
CMP EAX,0x20
JZ 0x00372fe0
JC 0x00372ed1
SUB EAX,0x1f01
CMP EAX,0x1
JA 0x00372ed1
MOVZX EAX,byte ptr [ESI]
LEA EDX,[ESI + 0x1]
TEST AL,AL
JS 0x00373020
MOV ESI,EDX
JMP 0x00372d80
CMP EAX,0x9
JZ 0x00372e2d
ADD ESP,0x2c
XOR EAX,EAX
XOR EDX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EAX,0xc
JBE 0x00372fc0
MOVZX EAX,byte ptr [ESI]
LEA EDX,[ESI + 0x1]
TEST AL,AL
JNS 0x00372ebb
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x10]
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x00270260
ADD ESI,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV EDX,ESI
MOV ESI,EDX
JMP 0x00372d80
MOVZX EAX,byte ptr [ESI]
LEA ECX,[ESI + 0x1]
TEST AL,AL
JS 0x00372f48
MOV dword ptr [ESP + 0x1c],0x1
MOV ESI,ECX
CMP EAX,0xe
JNZ 0x00372d06
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP]
ADD ESI,dword ptr [EAX + 0x44]
JMP 0x00372d80
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x10]
PUSH ECX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x002701a0
ADD ESI,dword ptr [ESP + 0x2c]
ADD ESP,0x10
JMP 0x00372cfd
MOV EAX,dword ptr [EBP]
MOV EAX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
CMP ECX,dword ptr [ESP + 0xc]
JNZ 0x00373080
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOV EDX,dword ptr [ESI]
TEST AL,AL
MOV ECX,EDX
BSWAP ECX
CMOVNZ EDX,ECX
LEA ESI,[ESI + EDX*0x1 + 0x4]
JMP 0x00372d80
MOV EAX,dword ptr [EBP]
ADD ESI,dword ptr [EAX + 0x48]
JMP 0x00372d80
ADD ESI,0x1
JMP 0x00372d80
MOVZX EAX,byte ptr [ESI]
LEA ESI,[ESI + EAX*0x1 + 0x1]
JMP 0x00372d80
ADD ESI,0x8
JMP 0x00372d80
SUB ESP,0xc
PUSH ESI
CALL 0x00372bf0
ADD ESP,0x10
XOR EAX,EAX
XOR EDX,EDX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,ECX
SHL EAX,0x8
OR EDX,EAX
JMP 0x00372d75
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x10]
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x002701a0
ADD ESI,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV EDX,ESI
MOV ESI,EDX
JMP 0x00372d80
SUB ESP,0x4
PUSH EAX
LEA EAX,[ESI + 0x1]
PUSH dword ptr [ESP + 0x10]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x002701a0
MOV ECX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
JMP 0x00372e3d
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x00372d5e
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x00372f92
PUSH EAX
MOV EBX,dword ptr [ESP + 0x4]
LEA EAX,[EBX + 0xffeb4100]
PUSH EAX
LEA EAX,[EBX + 0xffeb3db1]
PUSH 0x3a9
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined8 FUN_00372c70(int *param_1)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}\n\n" comment (function_definition "undefined8 FUN_00372c70(int *param_1)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" type_identifier (function_declarator "FUN_00372c70(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "uint *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "iVar7 = param_1[10];" (assignment_expression "iVar7 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);" (call_expression "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""skip_attributes"" " string_content ") , (pointer_expression "&__DT_PLTGOT" & identifier) ))) ;) })) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" identifier = (binary_expression "*(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + uVar12" (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) + identifier) + (pointer_expression "*(int *)(iVar5 + 0x2c)" * (cast_expression "(int *)(iVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) )))))) ;) (if_statement "if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" if (parenthesized_expression "((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)" ( (binary_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U" (call_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" ( (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c)" (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar5 + 0x3c)" * (cast_expression "(int *)(iVar5 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x3c)" ( (binary_expression "iVar5 + 0x3c" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar5 + 0x2c)" * (cast_expression "(int *)(iVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) ))))) ))) < (binary_expression "iVar8 + 1U" identifier + number_literal)) )) (compound_statement "{\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" { (expression_statement "FUN_00372bf0(iVar5);" (call_expression "FUN_00372bf0(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar8 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "__s = (uint *)(iVar8 + param_1[4]);" (assignment_expression "__s = (uint *)(iVar8 + param_1[4])" identifier = (cast_expression "(uint *)(iVar8 + param_1[4])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_1[4])" ( (binary_expression "iVar8 + param_1[4]" identifier + (subscript_expression "param_1[4]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar5 = *(int *)(iVar7 + 8);" (assignment_expression "iVar5 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" if (parenthesized_expression "(iVar5 != *(int *)(iVar7 + 0xc))" ( (binary_expression "iVar5 != *(int *)(iVar7 + 0xc)" identifier != (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" identifier = identifier) ;) (do_statement "do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));" do (compound_statement "{\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    }" { (expression_statement "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8)" identifier = (pointer_expression "*(uint *)(iVar5 + 4 + uVar12 * 8)" * (cast_expression "(uint *)(iVar5 + 4 + uVar12 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4 + uVar12 * 8)" ( (binary_expression "iVar5 + 4 + uVar12 * 8" (binary_expression "iVar5 + 4" identifier + number_literal) + (binary_expression "uVar12 * 8" identifier * number_literal)) ))))) ;) (expression_statement "__s = puVar10;" (assignment_expression "__s = puVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" if (parenthesized_expression "(uVar11 == 0x16)" ( (binary_expression "uVar11 == 0x16" identifier == number_literal) )) (compound_statement "{\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }" { (expression_statement "uVar11 = (uint)(byte)*puVar10;" (assignment_expression "uVar11 = (uint)(byte)*puVar10" identifier = (binary_expression "(uint)(byte)*puVar10" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "__s = (uint *)((int)puVar10 + 1);" (assignment_expression "__s = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" if (parenthesized_expression "((char)(byte)*puVar10 < '\0')" ( (binary_expression "(char)(byte)*puVar10 < '\0'" (binary_expression "(char)(byte)*puVar10" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" { (expression_statement "uVar11 = FUN_002701a0(__s,local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0(__s,local_20,uVar11)" identifier = (call_expression "FUN_002701a0(__s,local_20,uVar11)" identifier (argument_list "(__s,local_20,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "__s = (uint *)((int)puVar10 + local_20[0]);" (assignment_expression "__s = (uint *)((int)puVar10 + local_20[0])" identifier = (cast_expression "(uint *)((int)puVar10 + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + local_20[0])" ( (binary_expression "(int)puVar10 + local_20[0]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) (goto_statement "goto LAB_00372cfd;" goto statement_identifier ;) })) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" identifier = (binary_expression "uVar11 == 0xe" identifier == number_literal)) ;) (if_statement "if (!bVar13) goto LAB_00372d06;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (goto_statement "goto LAB_00372d06;" goto statement_identifier ;)) (labeled_statement "LAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" statement_identifier : (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44))" identifier = (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x44))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x44))" ( (binary_expression "(int)__s + *(int *)(*param_1 + 0x44)" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + 0x44)" * (cast_expression "(int *)(*param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x44)" ( (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )))) ;)) }) (else_clause "else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" else (compound_statement "{\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" { (labeled_statement "LAB_00372cfd:\n        bVar13 = uVar11 == 0xe;" statement_identifier : (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" identifier = (binary_expression "uVar11 == 0xe" identifier == number_literal)) ;)) (if_statement "if (bVar13) goto LAB_00372f38;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;)) (labeled_statement "LAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" statement_identifier : (if_statement "if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 < 0xe || bVar13)" ( (binary_expression "uVar11 < 0xe || bVar13" (binary_expression "uVar11 < 0xe" identifier < number_literal) || identifier) )) (compound_statement "{\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }" { (if_statement "if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 == 7)" ( (binary_expression "uVar11 == 7" identifier == number_literal) )) (compound_statement "{\nLAB_00372fe0:\n            __s = __s + 2;\n          }" { (labeled_statement "LAB_00372fe0:\n            __s = __s + 2;" statement_identifier : (expression_statement "__s = __s + 2;" (assignment_expression "__s = __s + 2" identifier = (binary_expression "__s + 2" identifier + number_literal)) ;)) }) (else_clause "else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (if_statement "if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 < 8)" ( (binary_expression "uVar11 < 8" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }" { (if_statement "if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 == 4)" ( (binary_expression "uVar11 == 4" identifier == number_literal) )) (compound_statement "{\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }" { (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar1 + 0xc)" * (cast_expression "(code **)(*piVar1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xc)" ( (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" if (parenthesized_expression "(pcVar2 == FUN_00101810)" ( (binary_expression "pcVar2 == FUN_00101810" identifier == identifier) )) (compound_statement "{\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }" { (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" ( (pointer_expression "**(code **)(*piVar1 + 0xe8)" * (pointer_expression "*(code **)(*piVar1 + 0xe8)" * (cast_expression "(code **)(*piVar1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xe8)" ( (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) }) (else_clause "else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" else (compound_statement "{\n                cVar4 = (*pcVar2)(piVar1);\n              }" { (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" identifier = (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar1)" ( identifier )))) ;) }))) (expression_statement "uVar11 = *__s;" (assignment_expression "uVar11 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" { (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar11 + 4);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + 4)" identifier = (cast_expression "(uint *)((int)__s + uVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar11 + 4)" ( (binary_expression "(int)__s + uVar11 + 4" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (if_statement "if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 < 5)" ( (binary_expression "uVar11 < 5" identifier < number_literal) )) (compound_statement "{\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }" { (if_statement "if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" if (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) (compound_statement "{\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }" { (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48))" identifier = (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x48))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x48))" ( (binary_expression "(int)__s + *(int *)(*param_1 + 0x48)" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + 0x48)" * (cast_expression "(int *)(*param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )))) ;) }) (else_clause "else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" else (compound_statement "{\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" { (if_statement "if (uVar11 != 3) {\n                  return 0;\n                }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar1 + 0xc)" * (cast_expression "(code **)(*piVar1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xc)" ( (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" if (parenthesized_expression "(pcVar2 == FUN_00101810)" ( (binary_expression "pcVar2 == FUN_00101810" identifier == identifier) )) (compound_statement "{\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }" { (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" ( (pointer_expression "**(code **)(*piVar1 + 0xe8)" * (pointer_expression "*(code **)(*piVar1 + 0xe8)" * (cast_expression "(code **)(*piVar1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xe8)" ( (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) }) (else_clause "else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" else (compound_statement "{\n                  cVar4 = (*pcVar2)(piVar1);\n                }" { (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" identifier = (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar1)" ( identifier )))) ;) }))) (expression_statement "uVar3 = (ushort)*__s;" (assignment_expression "uVar3 = (ushort)*__s" identifier = (binary_expression "(ushort)*__s" (parenthesized_expression "(ushort)" ( identifier )) * identifier)) ;) (if_statement "if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" { (expression_statement "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));" (assignment_expression "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" identifier = (call_expression "CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" identifier (argument_list "((byte)*__s,*(byte *)((int)__s + 1))" ( (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)__s + 1)" * (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar3 + 2);" (assignment_expression "__s = (uint *)((int)__s + uVar3 + 2)" identifier = (cast_expression "(uint *)((int)__s + uVar3 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar3 + 2)" ( (binary_expression "(int)__s + uVar3 + 2" (binary_expression "(int)__s + uVar3" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }))) }) (else_clause "else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (if_statement "if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 == 5)" ( (binary_expression "uVar11 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }" { (labeled_statement "LAB_00372e03:\n              __s = (uint *)((int)__s + 2);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 2);" (assignment_expression "__s = (uint *)((int)__s + 2)" identifier = (cast_expression "(uint *)((int)__s + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 2)" ( (binary_expression "(int)__s + 2" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (compound_statement "{\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" { (if_statement "if (uVar11 != 6) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 6)" ( (binary_expression "uVar11 != 6" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e5a:\n              __s = __s + 1;" statement_identifier : (expression_statement "__s = __s + 1;" (assignment_expression "__s = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;)) }))))))) }) (else_clause "else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (if_statement "if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 == 10)" ( (binary_expression "uVar11 == 10" identifier == number_literal) )) (compound_statement "{\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }" { (expression_statement "__s = (uint *)((int)__s + (byte)*__s + 1);" (assignment_expression "__s = (uint *)((int)__s + (byte)*__s + 1)" identifier = (cast_expression "(uint *)((int)__s + (byte)*__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + (byte)*__s + 1)" ( (binary_expression "(int)__s + (byte)*__s + 1" (binary_expression "(int)__s + (byte)*__s" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier)) + number_literal) )))) ;) }) (else_clause "else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (compound_statement "{\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" { (if_statement "if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" if (parenthesized_expression "(10 < uVar11)" ( (binary_expression "10 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" { (if_statement "if (uVar11 < 0xd) goto LAB_00372fc0;" if (parenthesized_expression "(uVar11 < 0xd)" ( (binary_expression "uVar11 < 0xd" identifier < number_literal) )) (goto_statement "goto LAB_00372fc0;" goto statement_identifier ;)) (if_statement "if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" { (expression_statement "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s)" identifier (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" identifier = (cast_expression "(uint *)((int)__s + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + local_20[0])" ( (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) (goto_statement "goto LAB_00372d80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372ebb;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }" { (expression_statement "sVar6 = strlen((char *)__s);" (assignment_expression "sVar6 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__s = (uint *)((int)__s + sVar6 + 1);" (assignment_expression "__s = (uint *)((int)__s + sVar6 + 1)" identifier = (cast_expression "(uint *)((int)__s + sVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + sVar6 + 1)" ( (binary_expression "(int)__s + sVar6 + 1" (binary_expression "(int)__s + sVar6" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" else (compound_statement "{\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" { (if_statement "if (uVar11 != 9) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 9)" ( (binary_expression "uVar11 != 9" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;" statement_identifier : (expression_statement "uVar11 = (uint)(byte)*__s;" (assignment_expression "uVar11 = (uint)(byte)*__s" identifier = (binary_expression "(uint)(byte)*__s" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;)) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (if_statement "if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" { (expression_statement "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" identifier = (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" identifier (argument_list "((byte *)((int)__s + 1),local_20,uVar11)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier )))) ;) (expression_statement "iVar7 = local_20[0];" (assignment_expression "iVar7 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar11 + iVar7);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + iVar7)" identifier = (cast_expression "(uint *)((int)__s + uVar11 + iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar11 + iVar7)" ( (binary_expression "(int)__s + uVar11 + iVar7" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) )))) ;) }))) }))))))) }) (else_clause "else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 == 0x15)" ( (binary_expression "uVar11 == 0x15" identifier == number_literal) )) (compound_statement "{\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }" { (labeled_statement "LAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" statement_identifier : (if_statement "if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }" { (expression_statement "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s)" identifier (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" identifier = (cast_expression "(uint *)((int)__s + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + local_20[0])" ( (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) }) (else_clause "else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" else (compound_statement "{\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" { (labeled_statement "LAB_00372ebb:\n            __s = (uint *)((int)__s + 1);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" identifier = (cast_expression "(uint *)((int)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) })))) }) (else_clause "else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 < 0x16)" ( (binary_expression "uVar11 < 0x16" identifier < number_literal) )) (compound_statement "{\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }" { (if_statement "if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" if (parenthesized_expression "(uVar11 == 0x11)" ( (binary_expression "uVar11 == 0x11" identifier == number_literal) )) (compound_statement "{\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }" { (labeled_statement "LAB_00372fc0:\n            __s = (uint *)((int)__s + 1);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" identifier = (cast_expression "(uint *)((int)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" else (compound_statement "{\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" { (if_statement "if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" if (parenthesized_expression "(0x11 < uVar11)" ( (binary_expression "0x11 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" { (if_statement "if (uVar11 == 0x13) goto LAB_00372e5a;" if (parenthesized_expression "(uVar11 == 0x13)" ( (binary_expression "uVar11 == 0x13" identifier == number_literal) )) (goto_statement "goto LAB_00372e5a;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x14) goto LAB_00372e03;" if (parenthesized_expression "(uVar11 < 0x14)" ( (binary_expression "uVar11 < 0x14" identifier < number_literal) )) (goto_statement "goto LAB_00372e03;" goto statement_identifier ;)) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0xf) goto LAB_00372ead;" if (parenthesized_expression "(uVar11 == 0xf)" ( (binary_expression "uVar11 == 0xf" identifier == number_literal) )) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;)) (if_statement "if (uVar11 != 0x10) {\n              return 0;\n            }" if (parenthesized_expression "(uVar11 != 0x10)" ( (binary_expression "uVar11 != 0x10" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar5 = *(int *)(iVar7 + 0x48);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x48)" identifier = (pointer_expression "*(int *)(iVar7 + 0x48)" * (cast_expression "(int *)(iVar7 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x48)" ( (binary_expression "iVar7 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" if (parenthesized_expression "(2 < *(uint *)(iVar7 + 0x4c))" ( (binary_expression "2 < *(uint *)(iVar7 + 0x4c)" number_literal < (pointer_expression "*(uint *)(iVar7 + 0x4c)" * (cast_expression "(uint *)(iVar7 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4c)" ( (binary_expression "iVar7 + 0x4c" identifier + number_literal) ))))) )) (compound_statement "{\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" { (expression_statement "iVar5 = *(int *)(iVar7 + 0x44);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x44)" identifier = (pointer_expression "*(int *)(iVar7 + 0x44)" * (cast_expression "(int *)(iVar7 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x44)" ( (binary_expression "iVar7 + 0x44" identifier + number_literal) ))))) ;) })) (expression_statement "__s = (uint *)((int)__s + iVar5);" (assignment_expression "__s = (uint *)((int)__s + iVar5)" identifier = (cast_expression "(uint *)((int)__s + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + iVar5)" ( (binary_expression "(int)__s + iVar5" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) }) (else_clause "else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 != 0x19)" ( (binary_expression "uVar11 != 0x19" identifier != number_literal) )) (compound_statement "{\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" { (if_statement "if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" if (parenthesized_expression "(uVar11 < 0x1a)" ( (binary_expression "uVar11 < 0x1a" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" { (if_statement "if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" if (parenthesized_expression "(uVar11 != 0x17)" ( (binary_expression "uVar11 != 0x17" identifier != number_literal) )) (compound_statement "{\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" { (if_statement "if (uVar11 != 0x18) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 0x18)" ( (binary_expression "uVar11 != 0x18" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372e2d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0x20) goto LAB_00372fe0;" if (parenthesized_expression "(uVar11 == 0x20)" ( (binary_expression "uVar11 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x20) {\n            return 0;\n          }" if (parenthesized_expression "(uVar11 < 0x20)" ( (binary_expression "uVar11 < 0x20" identifier < number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }" if (parenthesized_expression "(1 < uVar11 - 0x1f01)" ( (binary_expression "1 < uVar11 - 0x1f01" number_literal < (binary_expression "uVar11 - 0x1f01" identifier - number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;) }))))))))) }))) (labeled_statement "LAB_00372d80:\n      uVar12 = uVar12 + 1;" statement_identifier : (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;)) (expression_statement "iVar5 = *(int *)(param_1[10] + 8);" (assignment_expression "iVar5 = *(int *)(param_1[10] + 8)" identifier = (pointer_expression "*(int *)(param_1[10] + 8)" * (cast_expression "(int *)(param_1[10] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 8)" ( (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3))" ( (binary_expression "uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" identifier < (call_expression "(uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" ( (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5 >> 3" (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5" (pointer_expression "*(int *)(param_1[10] + 0xc)" * (cast_expression "(int *)(param_1[10] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 0xc)" ( (binary_expression "param_1[10] + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) - identifier) >> number_literal) )))) )) ;) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) })) (expression_statement "uVar11 = (int)__s - iVar8;" (assignment_expression "uVar11 = (int)__s - iVar8" identifier = (binary_expression "(int)__s - iVar8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (return_statement "return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);" return (call_expression "CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" identifier (argument_list "(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" ( (binary_expression "((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12)" (binary_expression "((int)uVar11 >> 0x1f) + iVar9" (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar11,uVar12)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,uVar12)" identifier (argument_list "(uVar11,uVar12)" ( identifier , identifier ))))) , (binary_expression "uVar11 + uVar12" identifier + identifier) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: off_t skip_attributes(Dwarf_die * this) */\n\noff_t __thiscall gold::Dwarf_die::skip_attributes(Dwarf_die *this)\n\n{\n  byte bVar1;\n  Abbrev_code *pAVar2;\n  Dwarf_info_reader *pDVar3;\n  int iVar4;\n  Relobj *pRVar5;\n  _func_int_varargs **pp_Var6;\n  _func_int_varargs *p_Var7;\n  ushort uVar8;\n  char cVar9;\n  uint *buffer;\n  pointer pAVar10;\n  uint uVar11;\n  size_t sVar13;\n  size_t sVar14;\n  Valtype return_value;\n  uchar *puVar15;\n  uint *puVar16;\n  uint uVar17;\n  uint uVar18;\n  bool bVar19;\n  ulonglong uVar20;\n  uint64_t uVar21;\n  size_t len;\n  int iVar12;\n  \n  pAVar2 = this->abbrev_code_;\n  if (pAVar2 == (Abbrev_code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");\n  }\n  pDVar3 = this->dwinfo_;\n  uVar18 = (uint)this->die_offset_;\n  iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  iVar4 = (int)pDVar3->cu_offset_;\n  puVar15 = pDVar3->buffer_ + iVar4 + uVar18;\n  if (pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1) {\n    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);\n    return 0;\n  }\n  if (puVar15 == (uchar *)0x0) {\n    return 0;\n  }\n  buffer = (uint *)(puVar15 + (int)this->attr_offset_);\n  pAVar10 = (pAVar2->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_start;\n  if (pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish) {\n    uVar18 = 0;\n    puVar16 = buffer;\n    do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));\n    uVar18 = (uint)this->die_offset_;\n    iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  }\n  uVar17 = (int)buffer - (int)puVar15;\n  return CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18);\n}\n\n" comment comment (function_definition "off_t __thiscall gold::Dwarf_die::skip_attributes(Dwarf_die *this)\n\n{\n  byte bVar1;\n  Abbrev_code *pAVar2;\n  Dwarf_info_reader *pDVar3;\n  int iVar4;\n  Relobj *pRVar5;\n  _func_int_varargs **pp_Var6;\n  _func_int_varargs *p_Var7;\n  ushort uVar8;\n  char cVar9;\n  uint *buffer;\n  pointer pAVar10;\n  uint uVar11;\n  size_t sVar13;\n  size_t sVar14;\n  Valtype return_value;\n  uchar *puVar15;\n  uint *puVar16;\n  uint uVar17;\n  uint uVar18;\n  bool bVar19;\n  ulonglong uVar20;\n  uint64_t uVar21;\n  size_t len;\n  int iVar12;\n  \n  pAVar2 = this->abbrev_code_;\n  if (pAVar2 == (Abbrev_code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");\n  }\n  pDVar3 = this->dwinfo_;\n  uVar18 = (uint)this->die_offset_;\n  iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  iVar4 = (int)pDVar3->cu_offset_;\n  puVar15 = pDVar3->buffer_ + iVar4 + uVar18;\n  if (pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1) {\n    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);\n    return 0;\n  }\n  if (puVar15 == (uchar *)0x0) {\n    return 0;\n  }\n  buffer = (uint *)(puVar15 + (int)this->attr_offset_);\n  pAVar10 = (pAVar2->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_start;\n  if (pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish) {\n    uVar18 = 0;\n    puVar16 = buffer;\n    do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));\n    uVar18 = (uint)this->die_offset_;\n    iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  }\n  uVar17 = (int)buffer - (int)puVar15;\n  return CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18);\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwarf_die::" identifier : : identifier : :) (function_declarator "skip_attributes(Dwarf_die *this)" identifier (parameter_list "(Dwarf_die *this)" ( (parameter_declaration "Dwarf_die *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  Abbrev_code *pAVar2;\n  Dwarf_info_reader *pDVar3;\n  int iVar4;\n  Relobj *pRVar5;\n  _func_int_varargs **pp_Var6;\n  _func_int_varargs *p_Var7;\n  ushort uVar8;\n  char cVar9;\n  uint *buffer;\n  pointer pAVar10;\n  uint uVar11;\n  size_t sVar13;\n  size_t sVar14;\n  Valtype return_value;\n  uchar *puVar15;\n  uint *puVar16;\n  uint uVar17;\n  uint uVar18;\n  bool bVar19;\n  ulonglong uVar20;\n  uint64_t uVar21;\n  size_t len;\n  int iVar12;\n  \n  pAVar2 = this->abbrev_code_;\n  if (pAVar2 == (Abbrev_code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");\n  }\n  pDVar3 = this->dwinfo_;\n  uVar18 = (uint)this->die_offset_;\n  iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  iVar4 = (int)pDVar3->cu_offset_;\n  puVar15 = pDVar3->buffer_ + iVar4 + uVar18;\n  if (pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1) {\n    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);\n    return 0;\n  }\n  if (puVar15 == (uchar *)0x0) {\n    return 0;\n  }\n  buffer = (uint *)(puVar15 + (int)this->attr_offset_);\n  pAVar10 = (pAVar2->attributes).\n            super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_start;\n  if (pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish) {\n    uVar18 = 0;\n    puVar16 = buffer;\n    do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));\n    uVar18 = (uint)this->die_offset_;\n    iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  }\n  uVar17 = (int)buffer - (int)puVar15;\n  return CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "Abbrev_code *pAVar2;" type_identifier (pointer_declarator "*pAVar2" * identifier) ;) (declaration "Dwarf_info_reader *pDVar3;" type_identifier (pointer_declarator "*pDVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Relobj *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (declaration "_func_int_varargs **pp_Var6;" type_identifier (pointer_declarator "**pp_Var6" * (pointer_declarator "*pp_Var6" * identifier)) ;) (declaration "_func_int_varargs *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "uint *buffer;" type_identifier (pointer_declarator "*buffer" * identifier) ;) (declaration "pointer pAVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "Valtype return_value;" type_identifier identifier ;) (declaration "uchar *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "ulonglong uVar20;" type_identifier identifier ;) (declaration "uint64_t uVar21;" primitive_type identifier ;) (declaration "size_t len;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (expression_statement "pAVar2 = this->abbrev_code_;" (assignment_expression "pAVar2 = this->abbrev_code_" identifier = (field_expression "this->abbrev_code_" identifier -> field_identifier)) ;) (if_statement "if (pAVar2 == (Abbrev_code *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");\n  }" if (parenthesized_expression "(pAVar2 == (Abbrev_code *)0x0)" ( (binary_expression "pAVar2 == (Abbrev_code *)0x0" identifier == (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");" (call_expression "do_gold_unreachable("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""skip_attributes"" " string_content ") ))) ;) })) (expression_statement "pDVar3 = this->dwinfo_;" (assignment_expression "pDVar3 = this->dwinfo_" identifier = (field_expression "this->dwinfo_" identifier -> field_identifier)) ;) (expression_statement "uVar18 = (uint)this->die_offset_;" (assignment_expression "uVar18 = (uint)this->die_offset_" identifier = (cast_expression "(uint)this->die_offset_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->die_offset_" identifier -> field_identifier))) ;) (expression_statement "iVar12 = *(int *)((int)&this->die_offset_ + 4);" (assignment_expression "iVar12 = *(int *)((int)&this->die_offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&this->die_offset_ + 4)" * (cast_expression "(int *)((int)&this->die_offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->die_offset_ + 4)" ( (binary_expression "(int)&this->die_offset_ + 4" (cast_expression "(int)&this->die_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->die_offset_" & (field_expression "this->die_offset_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar4 = (int)pDVar3->cu_offset_;" (assignment_expression "iVar4 = (int)pDVar3->cu_offset_" identifier = (cast_expression "(int)pDVar3->cu_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "pDVar3->cu_offset_" identifier -> field_identifier))) ;) (expression_statement "puVar15 = pDVar3->buffer_ + iVar4 + uVar18;" (assignment_expression "puVar15 = pDVar3->buffer_ + iVar4 + uVar18" identifier = (binary_expression "pDVar3->buffer_ + iVar4 + uVar18" (binary_expression "pDVar3->buffer_ + iVar4" (field_expression "pDVar3->buffer_" identifier -> field_identifier) + identifier) + identifier)) ;) (if_statement "if (pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1) {\n    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);\n    return 0;\n  }" if (parenthesized_expression "(pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1)" ( (binary_expression "pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_ < puVar15 + 1" (binary_expression "pDVar3->buffer_ + iVar4 + (int)pDVar3->cu_length_" (binary_expression "pDVar3->buffer_ + iVar4" (field_expression "pDVar3->buffer_" identifier -> field_identifier) + identifier) + (cast_expression "(int)pDVar3->cu_length_" ( (type_descriptor "int" primitive_type) ) (field_expression "pDVar3->cu_length_" identifier -> field_identifier))) < (binary_expression "puVar15 + 1" identifier + number_literal)) )) (compound_statement "{\n    Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);\n    return 0;\n  }" { (labeled_statement "Dwarf_info_reader::warn_corrupt_debug_section(pDVar3);" statement_identifier : (ERROR ":" :) (expression_statement "warn_corrupt_debug_section(pDVar3);" (call_expression "warn_corrupt_debug_section(pDVar3)" identifier (argument_list "(pDVar3)" ( identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (puVar15 == (uchar *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(puVar15 == (uchar *)0x0)" ( (binary_expression "puVar15 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "buffer = (uint *)(puVar15 + (int)this->attr_offset_);" (assignment_expression "buffer = (uint *)(puVar15 + (int)this->attr_offset_)" identifier = (cast_expression "(uint *)(puVar15 + (int)this->attr_offset_)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + (int)this->attr_offset_)" ( (binary_expression "puVar15 + (int)this->attr_offset_" identifier + (cast_expression "(int)this->attr_offset_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->attr_offset_" identifier -> field_identifier))) )))) ;) (ERROR "pAVar10 = (pAVar2->attributes).\n            super__Vector_base<gold::" (assignment_expression "pAVar10 = (pAVar2->attributes).\n            super__Vector_base<gold" identifier = (binary_expression "(pAVar2->attributes).\n            super__Vector_base<gold" (field_expression "(pAVar2->attributes).\n            super__Vector_base" (parenthesized_expression "(pAVar2->attributes)" ( (field_expression "pAVar2->attributes" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_start;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n            ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n            ._M_impl._M_start;" (field_expression "Attribute>_>\n            ._M_impl._M_start" (field_expression "Attribute>_>\n            ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish) {\n    uVar18 = 0;\n    puVar16 = buffer;\n    do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));\n    uVar18 = (uint)this->die_offset_;\n    iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  }" if (parenthesized_expression "(pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n      ._M_impl._M_finish)" ( (ERROR "pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::" (comma_expression "pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std" (binary_expression "pAVar10 !=\n      (pAVar2->attributes).\n      super__Vector_base<gold" identifier != (binary_expression "(pAVar2->attributes).\n      super__Vector_base<gold" (field_expression "(pAVar2->attributes).\n      super__Vector_base" (parenthesized_expression "(pAVar2->attributes)" ( (field_expression "pAVar2->attributes" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Dwarf_abbrev_table::Attribute" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Attribute>_>\n      ._M_impl._M_finish" (field_expression "Attribute>_>\n      ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    uVar18 = 0;\n    puVar16 = buffer;\n    do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));\n    uVar18 = (uint)this->die_offset_;\n    iVar12 = *(int *)((int)&this->die_offset_ + 4);\n  }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = buffer;" (assignment_expression "puVar16 = buffer" identifier = identifier) ;) (do_statement "do {\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    } while (uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3));" do (compound_statement "{\n      uVar20 = (ulonglong)pAVar10[uVar18].form;\n      buffer = puVar16;\n      if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar18 = uVar18 + 1;\n      pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;\n      puVar16 = buffer;\n    }" { (expression_statement "uVar20 = (ulonglong)pAVar10[uVar18].form;" (assignment_expression "uVar20 = (ulonglong)pAVar10[uVar18].form" identifier = (cast_expression "(ulonglong)pAVar10[uVar18].form" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "pAVar10[uVar18].form" (subscript_expression "pAVar10[uVar18]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "buffer = puVar16;" (assignment_expression "buffer = puVar16" identifier = identifier) ;) (if_statement "if (pAVar10[uVar18].form == 0x16) {\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }\n      else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" if (parenthesized_expression "(pAVar10[uVar18].form == 0x16)" ( (binary_expression "pAVar10[uVar18].form == 0x16" (field_expression "pAVar10[uVar18].form" (subscript_expression "pAVar10[uVar18]" identifier [ identifier ]) . field_identifier) == number_literal) )) (compound_statement "{\n        bVar1 = (byte)*puVar16;\n        uVar17 = (uint)bVar1;\n        uVar20 = (ulonglong)uVar17;\n        buffer = (uint *)((int)puVar16 + 1);\n        if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }\n        len = 1;\n        bVar19 = uVar17 == 0xe;\n        if (!bVar19) goto LAB_00372d06;\nLAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);\n      }" { (expression_statement "bVar1 = (byte)*puVar16;" (assignment_expression "bVar1 = (byte)*puVar16" identifier = (binary_expression "(byte)*puVar16" (parenthesized_expression "(byte)" ( identifier )) * identifier)) ;) (expression_statement "uVar17 = (uint)bVar1;" (assignment_expression "uVar17 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar20 = (ulonglong)uVar17;" (assignment_expression "uVar20 = (ulonglong)uVar17" identifier = (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "buffer = (uint *)((int)puVar16 + 1);" (assignment_expression "buffer = (uint *)((int)puVar16 + 1)" identifier = (cast_expression "(uint *)((int)puVar16 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 1)" ( (binary_expression "(int)puVar16 + 1" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((char)bVar1 < '\0') {\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);\n          buffer = (uint *)((int)puVar16 + len);\n          goto LAB_00372cfd;\n        }" { (expression_statement "uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1);" (assignment_expression "uVar20 = read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x((uchar *)buffer,&len,bVar1)" identifier (argument_list "((uchar *)buffer,&len,bVar1)" ( (cast_expression "(uchar *)buffer" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "buffer = (uint *)((int)puVar16 + len);" (assignment_expression "buffer = (uint *)((int)puVar16 + len)" identifier = (cast_expression "(uint *)((int)puVar16 + len)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + len)" ( (binary_expression "(int)puVar16 + len" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (goto_statement "goto LAB_00372cfd;" goto statement_identifier ;) })) (expression_statement "len = 1;" (assignment_expression "len = 1" identifier = number_literal) ;) (expression_statement "bVar19 = uVar17 == 0xe;" (assignment_expression "bVar19 = uVar17 == 0xe" identifier = (binary_expression "uVar17 == 0xe" identifier == number_literal)) ;) (if_statement "if (!bVar19) goto LAB_00372d06;" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (goto_statement "goto LAB_00372d06;" goto statement_identifier ;)) (labeled_statement "LAB_00372f38:\n        buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);" statement_identifier : (expression_statement "buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_);" (assignment_expression "buffer = (uint *)((int)buffer + this->dwinfo_->offset_size_)" identifier = (cast_expression "(uint *)((int)buffer + this->dwinfo_->offset_size_)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + this->dwinfo_->offset_size_)" ( (binary_expression "(int)buffer + this->dwinfo_->offset_size_" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "this->dwinfo_->offset_size_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) )))) ;)) }) (else_clause "else {\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" else (compound_statement "{\nLAB_00372cfd:\n        uVar17 = (uint)uVar20;\n        bVar19 = uVar17 == 0xe;\n        if (bVar19) goto LAB_00372f38;\nLAB_00372d06:\n        uVar11 = (uint)uVar20;\n        if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" { (labeled_statement "LAB_00372cfd:\n        uVar17 = (uint)uVar20;" statement_identifier : (expression_statement "uVar17 = (uint)uVar20;" (assignment_expression "uVar17 = (uint)uVar20" identifier = (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (expression_statement "bVar19 = uVar17 == 0xe;" (assignment_expression "bVar19 = uVar17 == 0xe" identifier = (binary_expression "uVar17 == 0xe" identifier == number_literal)) ;) (if_statement "if (bVar19) goto LAB_00372f38;" if (parenthesized_expression "(bVar19)" ( identifier )) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;)) (labeled_statement "LAB_00372d06:\n        uVar11 = (uint)uVar20;" statement_identifier : (expression_statement "uVar11 = (uint)uVar20;" (assignment_expression "uVar11 = (uint)uVar20" identifier = (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (uVar17 < 0xe || bVar19) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar17 < 0xe || bVar19)" ( (binary_expression "uVar17 < 0xe || bVar19" (binary_expression "uVar17 < 0xe" identifier < number_literal) || identifier) )) (compound_statement "{\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }\n        }" { (if_statement "if (uVar11 == 7) {\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" if (parenthesized_expression "(uVar11 == 7)" ( (binary_expression "uVar11 == 7" identifier == number_literal) )) (compound_statement "{\nLAB_00372fe0:\n            buffer = buffer + 2;\n          }" { (labeled_statement "LAB_00372fe0:\n            buffer = buffer + 2;" statement_identifier : (expression_statement "buffer = buffer + 2;" (assignment_expression "buffer = buffer + 2" identifier = (binary_expression "buffer + 2" identifier + number_literal)) ;)) }) (else_clause "else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" else (if_statement "if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" if (parenthesized_expression "(uVar11 < 8)" ( (binary_expression "uVar11 < 8" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }\n          }" { (if_statement "if (uVar11 == 4) {\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" if (parenthesized_expression "(uVar11 == 4)" ( (binary_expression "uVar11 == 4" identifier == number_literal) )) (compound_statement "{\n              pRVar5 = this->dwinfo_->object_;\n              pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n              p_Var7 = pp_Var6[3];\n              if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              uVar17 = *buffer;\n              if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + 4);\n            }" { (expression_statement "pRVar5 = this->dwinfo_->object_;" (assignment_expression "pRVar5 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var6 = (pRVar5->super_Object)._vptr_Object;" (assignment_expression "pp_Var6 = (pRVar5->super_Object)._vptr_Object" identifier = (field_expression "(pRVar5->super_Object)._vptr_Object" (parenthesized_expression "(pRVar5->super_Object)" ( (field_expression "pRVar5->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var7 = pp_Var6[3];" (assignment_expression "p_Var7 = pp_Var6[3]" identifier = (subscript_expression "pp_Var6[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var7 == Relobj::is_big_endian) {\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }\n              else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }" if (parenthesized_expression "(p_Var7 == Relobj::is_big_endian)" ( (binary_expression "p_Var7 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n                iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                cVar9 = (char)iVar12;\n              }" { (expression_statement "iVar12 = (*pp_Var6[0x3a])(pRVar5);" (assignment_expression "iVar12 = (*pp_Var6[0x3a])(pRVar5)" identifier = (call_expression "(*pp_Var6[0x3a])(pRVar5)" (parenthesized_expression "(*pp_Var6[0x3a])" ( (pointer_expression "*pp_Var6[0x3a]" * (subscript_expression "pp_Var6[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar5)" ( identifier )))) ;) (expression_statement "cVar9 = (char)iVar12;" (assignment_expression "cVar9 = (char)iVar12" identifier = (cast_expression "(char)iVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }" else (compound_statement "{\n                iVar12 = (*p_Var7)(pRVar5);\n                cVar9 = (char)iVar12;\n              }" { (expression_statement "iVar12 = (*p_Var7)(pRVar5);" (assignment_expression "iVar12 = (*p_Var7)(pRVar5)" identifier = (call_expression "(*p_Var7)(pRVar5)" (parenthesized_expression "(*p_Var7)" ( (pointer_expression "*p_Var7" * identifier) )) (argument_list "(pRVar5)" ( identifier )))) ;) (expression_statement "cVar9 = (char)iVar12;" (assignment_expression "cVar9 = (char)iVar12" identifier = (cast_expression "(char)iVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar17 = *buffer;" (assignment_expression "uVar17 = *buffer" identifier = (pointer_expression "*buffer" * identifier)) ;) (if_statement "if (cVar9 != '\0') {\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;\n              }" { (expression_statement "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18;" (assignment_expression "uVar17 = uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18" identifier = (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8 |\n                         uVar17 << 0x18" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8 | (uVar17 & 0xff00) << 8" (binary_expression "uVar17 >> 0x18 | (uVar17 & 0xff0000) >> 8" (binary_expression "uVar17 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar17 & 0xff0000) >> 8" (parenthesized_expression "(uVar17 & 0xff0000)" ( (binary_expression "uVar17 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar17 & 0xff00) << 8" (parenthesized_expression "(uVar17 & 0xff00)" ( (binary_expression "uVar17 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar17 << 0x18" identifier << number_literal))) ;) })) (expression_statement "buffer = (uint *)((int)buffer + uVar17 + 4);" (assignment_expression "buffer = (uint *)((int)buffer + uVar17 + 4)" identifier = (cast_expression "(uint *)((int)buffer + uVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + uVar17 + 4)" ( (binary_expression "(int)buffer + uVar17 + 4" (binary_expression "(int)buffer + uVar17" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" else (if_statement "if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" if (parenthesized_expression "(uVar11 < 5)" ( (binary_expression "uVar11 < 5" identifier < number_literal) )) (compound_statement "{\n              if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }\n            }" { (if_statement "if (uVar11 == 1) {\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }" if (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) (compound_statement "{\n                buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);\n              }" { (expression_statement "buffer = (uint *)((int)buffer + this->dwinfo_->address_size_);" (assignment_expression "buffer = (uint *)((int)buffer + this->dwinfo_->address_size_)" identifier = (cast_expression "(uint *)((int)buffer + this->dwinfo_->address_size_)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + this->dwinfo_->address_size_)" ( (binary_expression "(int)buffer + this->dwinfo_->address_size_" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "this->dwinfo_->address_size_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) )))) ;) }) (else_clause "else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }" else (compound_statement "{\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                pRVar5 = this->dwinfo_->object_;\n                pp_Var6 = (pRVar5->super_Object)._vptr_Object;\n                p_Var7 = pp_Var6[3];\n                if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                uVar8 = (ushort)*buffer;\n                if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }\n                buffer = (uint *)((int)buffer + uVar8 + 2);\n              }" { (if_statement "if (uVar11 != 3) {\n                  return 0;\n                }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pRVar5 = this->dwinfo_->object_;" (assignment_expression "pRVar5 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var6 = (pRVar5->super_Object)._vptr_Object;" (assignment_expression "pp_Var6 = (pRVar5->super_Object)._vptr_Object" identifier = (field_expression "(pRVar5->super_Object)._vptr_Object" (parenthesized_expression "(pRVar5->super_Object)" ( (field_expression "pRVar5->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var7 = pp_Var6[3];" (assignment_expression "p_Var7 = pp_Var6[3]" identifier = (subscript_expression "pp_Var6[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var7 == Relobj::is_big_endian) {\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }\n                else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }" if (parenthesized_expression "(p_Var7 == Relobj::is_big_endian)" ( (binary_expression "p_Var7 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n                  iVar12 = (*pp_Var6[0x3a])(pRVar5);\n                  cVar9 = (char)iVar12;\n                }" { (expression_statement "iVar12 = (*pp_Var6[0x3a])(pRVar5);" (assignment_expression "iVar12 = (*pp_Var6[0x3a])(pRVar5)" identifier = (call_expression "(*pp_Var6[0x3a])(pRVar5)" (parenthesized_expression "(*pp_Var6[0x3a])" ( (pointer_expression "*pp_Var6[0x3a]" * (subscript_expression "pp_Var6[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar5)" ( identifier )))) ;) (expression_statement "cVar9 = (char)iVar12;" (assignment_expression "cVar9 = (char)iVar12" identifier = (cast_expression "(char)iVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }" else (compound_statement "{\n                  iVar12 = (*p_Var7)(pRVar5);\n                  cVar9 = (char)iVar12;\n                }" { (expression_statement "iVar12 = (*p_Var7)(pRVar5);" (assignment_expression "iVar12 = (*p_Var7)(pRVar5)" identifier = (call_expression "(*p_Var7)(pRVar5)" (parenthesized_expression "(*p_Var7)" ( (pointer_expression "*p_Var7" * identifier) )) (argument_list "(pRVar5)" ( identifier )))) ;) (expression_statement "cVar9 = (char)iVar12;" (assignment_expression "cVar9 = (char)iVar12" identifier = (cast_expression "(char)iVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar8 = (ushort)*buffer;" (assignment_expression "uVar8 = (ushort)*buffer" identifier = (binary_expression "(ushort)*buffer" (parenthesized_expression "(ushort)" ( identifier )) * identifier)) ;) (if_statement "if (cVar9 != '\0') {\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));\n                }" { (expression_statement "uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1));" (assignment_expression "uVar8 = CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1))" identifier = (call_expression "CONCAT11((byte)*buffer,*(byte *)((int)buffer + 1))" identifier (argument_list "((byte)*buffer,*(byte *)((int)buffer + 1))" ( (binary_expression "(byte)*buffer" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)buffer + 1)" * (cast_expression "(byte *)((int)buffer + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (expression_statement "buffer = (uint *)((int)buffer + uVar8 + 2);" (assignment_expression "buffer = (uint *)((int)buffer + uVar8 + 2)" identifier = (cast_expression "(uint *)((int)buffer + uVar8 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + uVar8 + 2)" ( (binary_expression "(int)buffer + uVar8 + 2" (binary_expression "(int)buffer + uVar8" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }))) }) (else_clause "else if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" else (if_statement "if (uVar11 == 5) {\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" if (parenthesized_expression "(uVar11 == 5)" ( (binary_expression "uVar11 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);\n            }" { (labeled_statement "LAB_00372e03:\n              buffer = (uint *)((int)buffer + 2);" statement_identifier : (expression_statement "buffer = (uint *)((int)buffer + 2);" (assignment_expression "buffer = (uint *)((int)buffer + 2)" identifier = (cast_expression "(uint *)((int)buffer + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 2)" ( (binary_expression "(int)buffer + 2" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" else (compound_statement "{\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              buffer = buffer + 1;\n            }" { (if_statement "if (uVar11 != 6) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 6)" ( (binary_expression "uVar11 != 6" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e5a:\n              buffer = buffer + 1;" statement_identifier : (expression_statement "buffer = buffer + 1;" (assignment_expression "buffer = buffer + 1" identifier = (binary_expression "buffer + 1" identifier + number_literal)) ;)) }))))))) }) (else_clause "else if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" else (if_statement "if (uVar11 == 10) {\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" if (parenthesized_expression "(uVar11 == 10)" ( (binary_expression "uVar11 == 10" identifier == number_literal) )) (compound_statement "{\n            buffer = (uint *)((int)buffer + (byte)*buffer + 1);\n          }" { (expression_statement "buffer = (uint *)((int)buffer + (byte)*buffer + 1);" (assignment_expression "buffer = (uint *)((int)buffer + (byte)*buffer + 1)" identifier = (cast_expression "(uint *)((int)buffer + (byte)*buffer + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + (byte)*buffer + 1)" ( (binary_expression "(int)buffer + (byte)*buffer + 1" (binary_expression "(int)buffer + (byte)*buffer" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(byte)*buffer" (parenthesized_expression "(byte)" ( identifier )) * identifier)) + number_literal) )))) ;) }) (else_clause "else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" else (compound_statement "{\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }\n          }" { (if_statement "if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" if (parenthesized_expression "(10 < uVar11)" ( (binary_expression "10 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" { (if_statement "if (uVar11 < 0xd) goto LAB_00372fc0;" if (parenthesized_expression "(uVar11 < 0xd)" ( (binary_expression "uVar11 < 0xd" identifier < number_literal) )) (goto_statement "goto LAB_00372fc0;" goto statement_identifier ;)) (if_statement "if ((char)(byte)*buffer < '\0') {\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }" if (parenthesized_expression "((char)(byte)*buffer < '\0')" ( (binary_expression "(char)(byte)*buffer < '\0'" (binary_expression "(char)(byte)*buffer" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n                buffer = (uint *)((int)buffer + len);\n                goto LAB_00372d80;\n              }" { (expression_statement "read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);" (call_expression "read_signed_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer)" identifier (argument_list "((byte *)((int)buffer + 1),&len,(byte)*buffer)" ( (cast_expression "(byte *)((int)buffer + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (pointer_expression "&len" & identifier) , (binary_expression "(byte)*buffer" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "buffer = (uint *)((int)buffer + len);" (assignment_expression "buffer = (uint *)((int)buffer + len)" identifier = (cast_expression "(uint *)((int)buffer + len)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + len)" ( (binary_expression "(int)buffer + len" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (goto_statement "goto LAB_00372d80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372ebb;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 8) {\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n              sVar13 = strlen((char *)buffer);\n              buffer = (uint *)((int)buffer + sVar13 + 1);\n            }" { (expression_statement "sVar13 = strlen((char *)buffer);" (assignment_expression "sVar13 = strlen((char *)buffer)" identifier = (call_expression "strlen((char *)buffer)" identifier (argument_list "((char *)buffer)" ( (cast_expression "(char *)buffer" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "buffer = (uint *)((int)buffer + sVar13 + 1);" (assignment_expression "buffer = (uint *)((int)buffer + sVar13 + 1)" identifier = (cast_expression "(uint *)((int)buffer + sVar13 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + sVar13 + 1)" ( (binary_expression "(int)buffer + sVar13 + 1" (binary_expression "(int)buffer + sVar13" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }" else (compound_statement "{\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              bVar1 = (byte)*buffer;\n              uVar17 = (uint)bVar1;\n              sVar14 = 1;\n              if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }\n              buffer = (uint *)((int)buffer + uVar17 + sVar14);\n            }" { (if_statement "if (uVar11 != 9) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 9)" ( (binary_expression "uVar11 != 9" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e2d:\n              bVar1 = (byte)*buffer;" statement_identifier : (expression_statement "bVar1 = (byte)*buffer;" (assignment_expression "bVar1 = (byte)*buffer" identifier = (binary_expression "(byte)*buffer" (parenthesized_expression "(byte)" ( identifier )) * identifier)) ;)) (expression_statement "uVar17 = (uint)bVar1;" (assignment_expression "uVar17 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "sVar14 = 1;" (assignment_expression "sVar14 = 1" identifier = number_literal) ;) (if_statement "if ((char)bVar1 < '\0') {\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);\n                uVar17 = (uint)uVar21;\n                sVar14 = len;\n              }" { (expression_statement "uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1);" (assignment_expression "uVar21 = read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1)" identifier = (call_expression "read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,bVar1)" identifier (argument_list "((byte *)((int)buffer + 1),&len,bVar1)" ( (cast_expression "(byte *)((int)buffer + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "uVar17 = (uint)uVar21;" (assignment_expression "uVar17 = (uint)uVar21" identifier = (cast_expression "(uint)uVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "sVar14 = len;" (assignment_expression "sVar14 = len" identifier = identifier) ;) })) (expression_statement "buffer = (uint *)((int)buffer + uVar17 + sVar14);" (assignment_expression "buffer = (uint *)((int)buffer + uVar17 + sVar14)" identifier = (cast_expression "(uint *)((int)buffer + uVar17 + sVar14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + uVar17 + sVar14)" ( (binary_expression "(int)buffer + uVar17 + sVar14" (binary_expression "(int)buffer + uVar17" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) )))) ;) }))) }))))))) }) (else_clause "else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 == 0x15)" ( (binary_expression "uVar11 == 0x15" identifier == number_literal) )) (compound_statement "{\nLAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }\n        }" { (labeled_statement "LAB_00372ead:\n          if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }" statement_identifier : (if_statement "if ((char)(byte)*buffer < '\0') {\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }\n          else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }" if (parenthesized_expression "((char)(byte)*buffer < '\0')" ( (binary_expression "(char)(byte)*buffer < '\0'" (binary_expression "(char)(byte)*buffer" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);\n            buffer = (uint *)((int)buffer + len);\n          }" { (expression_statement "read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer);" (call_expression "read_unsigned_LEB_128_x((byte *)((int)buffer + 1),&len,(byte)*buffer)" identifier (argument_list "((byte *)((int)buffer + 1),&len,(byte)*buffer)" ( (cast_expression "(byte *)((int)buffer + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (pointer_expression "&len" & identifier) , (binary_expression "(byte)*buffer" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "buffer = (uint *)((int)buffer + len);" (assignment_expression "buffer = (uint *)((int)buffer + len)" identifier = (cast_expression "(uint *)((int)buffer + len)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + len)" ( (binary_expression "(int)buffer + len" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }" else (compound_statement "{\nLAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);\n          }" { (labeled_statement "LAB_00372ebb:\n            buffer = (uint *)((int)buffer + 1);" statement_identifier : (expression_statement "buffer = (uint *)((int)buffer + 1);" (assignment_expression "buffer = (uint *)((int)buffer + 1)" identifier = (cast_expression "(uint *)((int)buffer + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) })))) }) (else_clause "else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 < 0x16)" ( (binary_expression "uVar11 < 0x16" identifier < number_literal) )) (compound_statement "{\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }\n        }" { (if_statement "if (uVar11 == 0x11) {\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }" if (parenthesized_expression "(uVar11 == 0x11)" ( (binary_expression "uVar11 == 0x11" identifier == number_literal) )) (compound_statement "{\nLAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);\n          }" { (labeled_statement "LAB_00372fc0:\n            buffer = (uint *)((int)buffer + 1);" statement_identifier : (expression_statement "buffer = (uint *)((int)buffer + 1);" (assignment_expression "buffer = (uint *)((int)buffer + 1)" identifier = (cast_expression "(uint *)((int)buffer + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + 1)" ( (binary_expression "(int)buffer + 1" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }" else (compound_statement "{\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            pDVar3 = this->dwinfo_;\n            uVar17 = pDVar3->address_size_;\n            if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }\n            buffer = (uint *)((int)buffer + uVar17);\n          }" { (if_statement "if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" if (parenthesized_expression "(0x11 < uVar11)" ( (binary_expression "0x11 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" { (if_statement "if (uVar11 == 0x13) goto LAB_00372e5a;" if (parenthesized_expression "(uVar11 == 0x13)" ( (binary_expression "uVar11 == 0x13" identifier == number_literal) )) (goto_statement "goto LAB_00372e5a;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x14) goto LAB_00372e03;" if (parenthesized_expression "(uVar11 < 0x14)" ( (binary_expression "uVar11 < 0x14" identifier < number_literal) )) (goto_statement "goto LAB_00372e03;" goto statement_identifier ;)) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0xf) goto LAB_00372ead;" if (parenthesized_expression "(uVar11 == 0xf)" ( (binary_expression "uVar11 == 0xf" identifier == number_literal) )) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;)) (if_statement "if (uVar11 != 0x10) {\n              return 0;\n            }" if (parenthesized_expression "(uVar11 != 0x10)" ( (binary_expression "uVar11 != 0x10" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pDVar3 = this->dwinfo_;" (assignment_expression "pDVar3 = this->dwinfo_" identifier = (field_expression "this->dwinfo_" identifier -> field_identifier)) ;) (expression_statement "uVar17 = pDVar3->address_size_;" (assignment_expression "uVar17 = pDVar3->address_size_" identifier = (field_expression "pDVar3->address_size_" identifier -> field_identifier)) ;) (if_statement "if (2 < pDVar3->cu_version_) {\n              uVar17 = pDVar3->offset_size_;\n            }" if (parenthesized_expression "(2 < pDVar3->cu_version_)" ( (binary_expression "2 < pDVar3->cu_version_" number_literal < (field_expression "pDVar3->cu_version_" identifier -> field_identifier)) )) (compound_statement "{\n              uVar17 = pDVar3->offset_size_;\n            }" { (expression_statement "uVar17 = pDVar3->offset_size_;" (assignment_expression "uVar17 = pDVar3->offset_size_" identifier = (field_expression "pDVar3->offset_size_" identifier -> field_identifier)) ;) })) (expression_statement "buffer = (uint *)((int)buffer + uVar17);" (assignment_expression "buffer = (uint *)((int)buffer + uVar17)" identifier = (cast_expression "(uint *)((int)buffer + uVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)buffer + uVar17)" ( (binary_expression "(int)buffer + uVar17" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) }) (else_clause "else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 != 0x19)" ( (binary_expression "uVar11 != 0x19" identifier != number_literal) )) (compound_statement "{\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" { (if_statement "if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" if (parenthesized_expression "(uVar11 < 0x1a)" ( (binary_expression "uVar11 < 0x1a" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" { (if_statement "if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" if (parenthesized_expression "(uVar11 != 0x17)" ( (binary_expression "uVar11 != 0x17" identifier != number_literal) )) (compound_statement "{\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" { (if_statement "if (uVar11 != 0x18) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 0x18)" ( (binary_expression "uVar11 != 0x18" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372e2d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0x20) goto LAB_00372fe0;" if (parenthesized_expression "(uVar11 == 0x20)" ( (binary_expression "uVar11 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x20) {\n            return 0;\n          }" if (parenthesized_expression "(uVar11 < 0x20)" ( (binary_expression "uVar11 < 0x20" identifier < number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }" if (parenthesized_expression "(1 < uVar11 - 0x1f01)" ( (binary_expression "1 < uVar11 - 0x1f01" number_literal < (binary_expression "uVar11 - 0x1f01" identifier - number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;) })))))))) }))) (labeled_statement "LAB_00372d80:\n      uVar18 = uVar18 + 1;" statement_identifier : (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;)) (ERROR "pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold::" (assignment_expression "pAVar10 = (this->abbrev_code_->attributes).\n                super__Vector_base<gold" identifier = (binary_expression "(this->abbrev_code_->attributes).\n                super__Vector_base<gold" (field_expression "(this->abbrev_code_->attributes).\n                super__Vector_base" (parenthesized_expression "(this->abbrev_code_->attributes)" ( (field_expression "this->abbrev_code_->attributes" (field_expression "this->abbrev_code_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;" statement_identifier (ERROR "::Attribute,_std::allocator<gold:" : : (comma_expression "Attribute,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_abbrev_table::Attribute>_>\n                ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Attribute>_>\n                ._M_impl._M_start;" (field_expression "Attribute>_>\n                ._M_impl._M_start" (field_expression "Attribute>_>\n                ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "puVar16 = buffer;" (assignment_expression "puVar16 = buffer" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3))" ( (binary_expression "uVar18 < (uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3)" identifier < (call_expression "(uint)((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold::Dwarf_abbrev_table::Attribute,_std::allocator<gold::Dwarf_abbrev_table::Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3)" ( (binary_expression "(int)(this->abbrev_code_->attributes).\n                                  super__Vector_base<gold" (cast_expression "(int)(this->abbrev_code_->attributes).\n                                  super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->abbrev_code_->attributes).\n                                  super__Vector_base" (parenthesized_expression "(this->abbrev_code_->attributes)" ( (field_expression "this->abbrev_code_->attributes" (field_expression "this->abbrev_code_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Dwarf_abbrev_table::Attribute" : : identifier : : identifier) , (ERROR "_std::allocator<gold::Dwarf_abbrev_table::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10 >> 3" (binary_expression "Attribute>_>\n                                  ._M_impl._M_finish - (int)pAVar10" (field_expression "Attribute>_>\n                                  ._M_impl._M_finish" (field_expression "Attribute>_>\n                                  ._M_impl" (binary_expression "Attribute>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pAVar10" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) ;) (expression_statement "uVar18 = (uint)this->die_offset_;" (assignment_expression "uVar18 = (uint)this->die_offset_" identifier = (cast_expression "(uint)this->die_offset_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->die_offset_" identifier -> field_identifier))) ;) (expression_statement "iVar12 = *(int *)((int)&this->die_offset_ + 4);" (assignment_expression "iVar12 = *(int *)((int)&this->die_offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&this->die_offset_ + 4)" * (cast_expression "(int *)((int)&this->die_offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->die_offset_ + 4)" ( (binary_expression "(int)&this->die_offset_ + 4" (cast_expression "(int)&this->die_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->die_offset_" & (field_expression "this->die_offset_" identifier -> field_identifier))) + number_literal) ))))) ;) })) (expression_statement "uVar17 = (int)buffer - (int)puVar15;" (assignment_expression "uVar17 = (int)buffer - (int)puVar15" identifier = (binary_expression "(int)buffer - (int)puVar15" (cast_expression "(int)buffer" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (return_statement "return CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18);" return (call_expression "CONCAT44(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18)" identifier (argument_list "(((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18),uVar17 + uVar18)" ( (binary_expression "((int)uVar17 >> 0x1f) + iVar12 + (uint)CARRY4(uVar17,uVar18)" (binary_expression "((int)uVar17 >> 0x1f) + iVar12" (parenthesized_expression "((int)uVar17 >> 0x1f)" ( (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar17,uVar18)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar17,uVar18)" identifier (argument_list "(uVar17,uVar18)" ( identifier , identifier ))))) , (binary_expression "uVar17 + uVar18" identifier + identifier) ))) ;) })))
(translation_unit "undefined8 FUN_00372c70(int *param_1)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}\n\n" (function_definition "undefined8 FUN_00372c70(int *param_1)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" type_identifier (function_declarator "FUN_00372c70(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "uint *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "iVar7 = param_1[10];" (assignment_expression "iVar7 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" { (expression_statement "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);" (call_expression "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""skip_attributes"" " string_content ") , (pointer_expression "&__DT_PLTGOT" & identifier) ))) ;) })) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" identifier = (binary_expression "*(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + uVar12" (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) + identifier) + (pointer_expression "*(int *)(iVar5 + 0x2c)" * (cast_expression "(int *)(iVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) )))))) ;) (if_statement "if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" if (parenthesized_expression "((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)" ( (binary_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U" (call_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" ( (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c)" (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar5 + 0x3c)" * (cast_expression "(int *)(iVar5 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x3c)" ( (binary_expression "iVar5 + 0x3c" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar5 + 0x2c)" * (cast_expression "(int *)(iVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) ))))) ))) < (binary_expression "iVar8 + 1U" identifier + number_literal)) )) (compound_statement "{\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" { (expression_statement "FUN_00372bf0(iVar5);" (call_expression "FUN_00372bf0(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (iVar8 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "__s = (uint *)(iVar8 + param_1[4]);" (assignment_expression "__s = (uint *)(iVar8 + param_1[4])" identifier = (cast_expression "(uint *)(iVar8 + param_1[4])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_1[4])" ( (binary_expression "iVar8 + param_1[4]" identifier + (subscript_expression "param_1[4]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar5 = *(int *)(iVar7 + 8);" (assignment_expression "iVar5 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" if (parenthesized_expression "(iVar5 != *(int *)(iVar7 + 0xc))" ( (binary_expression "iVar5 != *(int *)(iVar7 + 0xc)" identifier != (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" identifier = identifier) ;) (do_statement "do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));" do (compound_statement "{\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    }" { (expression_statement "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8)" identifier = (pointer_expression "*(uint *)(iVar5 + 4 + uVar12 * 8)" * (cast_expression "(uint *)(iVar5 + 4 + uVar12 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4 + uVar12 * 8)" ( (binary_expression "iVar5 + 4 + uVar12 * 8" (binary_expression "iVar5 + 4" identifier + number_literal) + (binary_expression "uVar12 * 8" identifier * number_literal)) ))))) ;) (expression_statement "__s = puVar10;" (assignment_expression "__s = puVar10" identifier = identifier) ;) (if_statement "if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" if (parenthesized_expression "(uVar11 == 0x16)" ( (binary_expression "uVar11 == 0x16" identifier == number_literal) )) (compound_statement "{\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }" { (expression_statement "uVar11 = (uint)(byte)*puVar10;" (assignment_expression "uVar11 = (uint)(byte)*puVar10" identifier = (binary_expression "(uint)(byte)*puVar10" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "__s = (uint *)((int)puVar10 + 1);" (assignment_expression "__s = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" if (parenthesized_expression "((char)(byte)*puVar10 < '\0')" ( (binary_expression "(char)(byte)*puVar10 < '\0'" (binary_expression "(char)(byte)*puVar10" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" { (expression_statement "uVar11 = FUN_002701a0(__s,local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0(__s,local_20,uVar11)" identifier = (call_expression "FUN_002701a0(__s,local_20,uVar11)" identifier (argument_list "(__s,local_20,uVar11)" ( identifier , identifier , identifier )))) ;) (expression_statement "__s = (uint *)((int)puVar10 + local_20[0]);" (assignment_expression "__s = (uint *)((int)puVar10 + local_20[0])" identifier = (cast_expression "(uint *)((int)puVar10 + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + local_20[0])" ( (binary_expression "(int)puVar10 + local_20[0]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) (goto_statement "goto LAB_00372cfd;" goto statement_identifier ;) })) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" identifier = (binary_expression "uVar11 == 0xe" identifier == number_literal)) ;) (if_statement "if (!bVar13) goto LAB_00372d06;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (goto_statement "goto LAB_00372d06;" goto statement_identifier ;)) (labeled_statement "LAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" statement_identifier : (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44))" identifier = (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x44))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x44))" ( (binary_expression "(int)__s + *(int *)(*param_1 + 0x44)" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + 0x44)" * (cast_expression "(int *)(*param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x44)" ( (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )))) ;)) }) (else_clause "else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" else (compound_statement "{\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" { (labeled_statement "LAB_00372cfd:\n        bVar13 = uVar11 == 0xe;" statement_identifier : (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" identifier = (binary_expression "uVar11 == 0xe" identifier == number_literal)) ;)) (if_statement "if (bVar13) goto LAB_00372f38;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;)) (labeled_statement "LAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" statement_identifier : (if_statement "if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 < 0xe || bVar13)" ( (binary_expression "uVar11 < 0xe || bVar13" (binary_expression "uVar11 < 0xe" identifier < number_literal) || identifier) )) (compound_statement "{\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }" { (if_statement "if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 == 7)" ( (binary_expression "uVar11 == 7" identifier == number_literal) )) (compound_statement "{\nLAB_00372fe0:\n            __s = __s + 2;\n          }" { (labeled_statement "LAB_00372fe0:\n            __s = __s + 2;" statement_identifier : (expression_statement "__s = __s + 2;" (assignment_expression "__s = __s + 2" identifier = (binary_expression "__s + 2" identifier + number_literal)) ;)) }) (else_clause "else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (if_statement "if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 < 8)" ( (binary_expression "uVar11 < 8" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }" { (if_statement "if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 == 4)" ( (binary_expression "uVar11 == 4" identifier == number_literal) )) (compound_statement "{\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }" { (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar1 + 0xc)" * (cast_expression "(code **)(*piVar1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xc)" ( (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" if (parenthesized_expression "(pcVar2 == FUN_00101810)" ( (binary_expression "pcVar2 == FUN_00101810" identifier == identifier) )) (compound_statement "{\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }" { (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" ( (pointer_expression "**(code **)(*piVar1 + 0xe8)" * (pointer_expression "*(code **)(*piVar1 + 0xe8)" * (cast_expression "(code **)(*piVar1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xe8)" ( (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) }) (else_clause "else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" else (compound_statement "{\n                cVar4 = (*pcVar2)(piVar1);\n              }" { (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" identifier = (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar1)" ( identifier )))) ;) }))) (expression_statement "uVar11 = *__s;" (assignment_expression "uVar11 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" { (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar11 + 4);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + 4)" identifier = (cast_expression "(uint *)((int)__s + uVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar11 + 4)" ( (binary_expression "(int)__s + uVar11 + 4" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (if_statement "if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 < 5)" ( (binary_expression "uVar11 < 5" identifier < number_literal) )) (compound_statement "{\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }" { (if_statement "if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" if (parenthesized_expression "(uVar11 == 1)" ( (binary_expression "uVar11 == 1" identifier == number_literal) )) (compound_statement "{\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }" { (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48))" identifier = (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x48))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x48))" ( (binary_expression "(int)__s + *(int *)(*param_1 + 0x48)" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*param_1 + 0x48)" * (cast_expression "(int *)(*param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )))) ;) }) (else_clause "else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" else (compound_statement "{\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" { (if_statement "if (uVar11 != 3) {\n                  return 0;\n                }" if (parenthesized_expression "(uVar11 != 3)" ( (binary_expression "uVar11 != 3" identifier != number_literal) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar1 + 0xc)" * (cast_expression "(code **)(*piVar1 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xc)" ( (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" if (parenthesized_expression "(pcVar2 == FUN_00101810)" ( (binary_expression "pcVar2 == FUN_00101810" identifier == identifier) )) (compound_statement "{\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }" { (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" ( (pointer_expression "**(code **)(*piVar1 + 0xe8)" * (pointer_expression "*(code **)(*piVar1 + 0xe8)" * (cast_expression "(code **)(*piVar1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0xe8)" ( (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) }) (else_clause "else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" else (compound_statement "{\n                  cVar4 = (*pcVar2)(piVar1);\n                }" { (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" identifier = (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar1)" ( identifier )))) ;) }))) (expression_statement "uVar3 = (ushort)*__s;" (assignment_expression "uVar3 = (ushort)*__s" identifier = (binary_expression "(ushort)*__s" (parenthesized_expression "(ushort)" ( identifier )) * identifier)) ;) (if_statement "if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" { (expression_statement "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));" (assignment_expression "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" identifier = (call_expression "CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" identifier (argument_list "((byte)*__s,*(byte *)((int)__s + 1))" ( (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) , (pointer_expression "*(byte *)((int)__s + 1)" * (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar3 + 2);" (assignment_expression "__s = (uint *)((int)__s + uVar3 + 2)" identifier = (cast_expression "(uint *)((int)__s + uVar3 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar3 + 2)" ( (binary_expression "(int)__s + uVar3 + 2" (binary_expression "(int)__s + uVar3" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }))) }) (else_clause "else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (if_statement "if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" if (parenthesized_expression "(uVar11 == 5)" ( (binary_expression "uVar11 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }" { (labeled_statement "LAB_00372e03:\n              __s = (uint *)((int)__s + 2);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 2);" (assignment_expression "__s = (uint *)((int)__s + 2)" identifier = (cast_expression "(uint *)((int)__s + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 2)" ( (binary_expression "(int)__s + 2" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" else (compound_statement "{\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" { (if_statement "if (uVar11 != 6) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 6)" ( (binary_expression "uVar11 != 6" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e5a:\n              __s = __s + 1;" statement_identifier : (expression_statement "__s = __s + 1;" (assignment_expression "__s = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;)) }))))))) }) (else_clause "else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (if_statement "if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" if (parenthesized_expression "(uVar11 == 10)" ( (binary_expression "uVar11 == 10" identifier == number_literal) )) (compound_statement "{\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }" { (expression_statement "__s = (uint *)((int)__s + (byte)*__s + 1);" (assignment_expression "__s = (uint *)((int)__s + (byte)*__s + 1)" identifier = (cast_expression "(uint *)((int)__s + (byte)*__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + (byte)*__s + 1)" ( (binary_expression "(int)__s + (byte)*__s + 1" (binary_expression "(int)__s + (byte)*__s" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier)) + number_literal) )))) ;) }) (else_clause "else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" else (compound_statement "{\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" { (if_statement "if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" if (parenthesized_expression "(10 < uVar11)" ( (binary_expression "10 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" { (if_statement "if (uVar11 < 0xd) goto LAB_00372fc0;" if (parenthesized_expression "(uVar11 < 0xd)" ( (binary_expression "uVar11 < 0xd" identifier < number_literal) )) (goto_statement "goto LAB_00372fc0;" goto statement_identifier ;)) (if_statement "if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" { (expression_statement "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s)" identifier (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" identifier = (cast_expression "(uint *)((int)__s + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + local_20[0])" ( (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) (goto_statement "goto LAB_00372d80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372ebb;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }" { (expression_statement "sVar6 = strlen((char *)__s);" (assignment_expression "sVar6 = strlen((char *)__s)" identifier = (call_expression "strlen((char *)__s)" identifier (argument_list "((char *)__s)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "__s = (uint *)((int)__s + sVar6 + 1);" (assignment_expression "__s = (uint *)((int)__s + sVar6 + 1)" identifier = (cast_expression "(uint *)((int)__s + sVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + sVar6 + 1)" ( (binary_expression "(int)__s + sVar6 + 1" (binary_expression "(int)__s + sVar6" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" else (compound_statement "{\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" { (if_statement "if (uVar11 != 9) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 9)" ( (binary_expression "uVar11 != 9" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;" statement_identifier : (expression_statement "uVar11 = (uint)(byte)*__s;" (assignment_expression "uVar11 = (uint)(byte)*__s" identifier = (binary_expression "(uint)(byte)*__s" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;)) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (if_statement "if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" { (expression_statement "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" identifier = (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" identifier (argument_list "((byte *)((int)__s + 1),local_20,uVar11)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier )))) ;) (expression_statement "iVar7 = local_20[0];" (assignment_expression "iVar7 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) (expression_statement "__s = (uint *)((int)__s + uVar11 + iVar7);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + iVar7)" identifier = (cast_expression "(uint *)((int)__s + uVar11 + iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar11 + iVar7)" ( (binary_expression "(int)__s + uVar11 + iVar7" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) )))) ;) }))) }))))))) }) (else_clause "else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 == 0x15)" ( (binary_expression "uVar11 == 0x15" identifier == number_literal) )) (compound_statement "{\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }" { (labeled_statement "LAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" statement_identifier : (if_statement "if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" if (parenthesized_expression "((char)(byte)*__s < '\0')" ( (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(byte)" ( identifier ))) * identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }" { (expression_statement "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s)" identifier (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" ( (cast_expression "(byte *)((int)__s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" ( identifier )) * identifier) ))) ;) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" identifier = (cast_expression "(uint *)((int)__s + local_20[0])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + local_20[0])" ( (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "local_20[0]" identifier [ number_literal ])) )))) ;) }) (else_clause "else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" else (compound_statement "{\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" { (labeled_statement "LAB_00372ebb:\n            __s = (uint *)((int)__s + 1);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" identifier = (cast_expression "(uint *)((int)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) })))) }) (else_clause "else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 < 0x16)" ( (binary_expression "uVar11 < 0x16" identifier < number_literal) )) (compound_statement "{\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }" { (if_statement "if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" if (parenthesized_expression "(uVar11 == 0x11)" ( (binary_expression "uVar11 == 0x11" identifier == number_literal) )) (compound_statement "{\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }" { (labeled_statement "LAB_00372fc0:\n            __s = (uint *)((int)__s + 1);" statement_identifier : (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" identifier = (cast_expression "(uint *)((int)__s + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + 1)" ( (binary_expression "(int)__s + 1" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" else (compound_statement "{\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" { (if_statement "if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" if (parenthesized_expression "(0x11 < uVar11)" ( (binary_expression "0x11 < uVar11" number_literal < identifier) )) (compound_statement "{\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" { (if_statement "if (uVar11 == 0x13) goto LAB_00372e5a;" if (parenthesized_expression "(uVar11 == 0x13)" ( (binary_expression "uVar11 == 0x13" identifier == number_literal) )) (goto_statement "goto LAB_00372e5a;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x14) goto LAB_00372e03;" if (parenthesized_expression "(uVar11 < 0x14)" ( (binary_expression "uVar11 < 0x14" identifier < number_literal) )) (goto_statement "goto LAB_00372e03;" goto statement_identifier ;)) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0xf) goto LAB_00372ead;" if (parenthesized_expression "(uVar11 == 0xf)" ( (binary_expression "uVar11 == 0xf" identifier == number_literal) )) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;)) (if_statement "if (uVar11 != 0x10) {\n              return 0;\n            }" if (parenthesized_expression "(uVar11 != 0x10)" ( (binary_expression "uVar11 != 0x10" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar5 = *(int *)(iVar7 + 0x48);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x48)" identifier = (pointer_expression "*(int *)(iVar7 + 0x48)" * (cast_expression "(int *)(iVar7 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x48)" ( (binary_expression "iVar7 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" if (parenthesized_expression "(2 < *(uint *)(iVar7 + 0x4c))" ( (binary_expression "2 < *(uint *)(iVar7 + 0x4c)" number_literal < (pointer_expression "*(uint *)(iVar7 + 0x4c)" * (cast_expression "(uint *)(iVar7 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4c)" ( (binary_expression "iVar7 + 0x4c" identifier + number_literal) ))))) )) (compound_statement "{\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" { (expression_statement "iVar5 = *(int *)(iVar7 + 0x44);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x44)" identifier = (pointer_expression "*(int *)(iVar7 + 0x44)" * (cast_expression "(int *)(iVar7 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x44)" ( (binary_expression "iVar7 + 0x44" identifier + number_literal) ))))) ;) })) (expression_statement "__s = (uint *)((int)__s + iVar5);" (assignment_expression "__s = (uint *)((int)__s + iVar5)" identifier = (cast_expression "(uint *)((int)__s + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + iVar5)" ( (binary_expression "(int)__s + iVar5" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) }) (else_clause "else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" else (if_statement "if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" if (parenthesized_expression "(uVar11 != 0x19)" ( (binary_expression "uVar11 != 0x19" identifier != number_literal) )) (compound_statement "{\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" { (if_statement "if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" if (parenthesized_expression "(uVar11 < 0x1a)" ( (binary_expression "uVar11 < 0x1a" identifier < number_literal) )) (compound_statement "{\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" { (if_statement "if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" if (parenthesized_expression "(uVar11 != 0x17)" ( (binary_expression "uVar11 != 0x17" identifier != number_literal) )) (compound_statement "{\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" { (if_statement "if (uVar11 != 0x18) {\n                return 0;\n              }" if (parenthesized_expression "(uVar11 != 0x18)" ( (binary_expression "uVar11 != 0x18" identifier != number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372e2d;" goto statement_identifier ;) })) (goto_statement "goto LAB_00372f38;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0x20) goto LAB_00372fe0;" if (parenthesized_expression "(uVar11 == 0x20)" ( (binary_expression "uVar11 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00372fe0;" goto statement_identifier ;)) (if_statement "if (uVar11 < 0x20) {\n            return 0;\n          }" if (parenthesized_expression "(uVar11 < 0x20)" ( (binary_expression "uVar11 < 0x20" identifier < number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }" if (parenthesized_expression "(1 < uVar11 - 0x1f01)" ( (binary_expression "1 < uVar11 - 0x1f01" number_literal < (binary_expression "uVar11 - 0x1f01" identifier - number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00372ead;" goto statement_identifier ;) }))))))))) }))) (labeled_statement "LAB_00372d80:\n      uVar12 = uVar12 + 1;" statement_identifier : (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;)) (expression_statement "iVar5 = *(int *)(param_1[10] + 8);" (assignment_expression "iVar5 = *(int *)(param_1[10] + 8)" identifier = (pointer_expression "*(int *)(param_1[10] + 8)" * (cast_expression "(int *)(param_1[10] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 8)" ( (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3))" ( (binary_expression "uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" identifier < (call_expression "(uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" ( (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5 >> 3" (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5" (pointer_expression "*(int *)(param_1[10] + 0xc)" * (cast_expression "(int *)(param_1[10] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 0xc)" ( (binary_expression "param_1[10] + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) - identifier) >> number_literal) )))) )) ;) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) })) (expression_statement "uVar11 = (int)__s - iVar8;" (assignment_expression "uVar11 = (int)__s - iVar8" identifier = (binary_expression "(int)__s - iVar8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (return_statement "return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);" return (call_expression "CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" identifier (argument_list "(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" ( (binary_expression "((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12)" (binary_expression "((int)uVar11 >> 0x1f) + iVar9" (parenthesized_expression "((int)uVar11 >> 0x1f)" ( (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar11,uVar12)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,uVar12)" identifier (argument_list "(uVar11,uVar12)" ( identifier , identifier ))))) , (binary_expression "uVar11 + uVar12" identifier + identifier) ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_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 != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (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 (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (subscript_expression IDENT [ LIT ])) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;)) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < LIT) || IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_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 * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (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 (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return 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 * 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 * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( IDENT )) * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }))))))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) + LIT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , (binary_expression (parenthesized_expression ( IDENT )) * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (subscript_expression IDENT [ LIT ])) )))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + IDENT) )))) ;) }))) }))))))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , (binary_expression (parenthesized_expression ( IDENT )) * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (subscript_expression IDENT [ LIT ])) )))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) })))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) }))))))))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) - IDENT) >> LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (return_statement return (call_expression IDENT (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) , (binary_expression IDENT + IDENT) ))) ;) })))
(function_definition "undefined8 FUN_00372c70(int *param_1)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" (type_identifier "undefined8") (function_declarator "FUN_00372c70(int *param_1)" (identifier "FUN_00372c70") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  code *pcVar2;\n  ushort uVar3;\n  char cVar4;\n  uint *__s;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint *puVar10;\n  uint uVar11;\n  uint uVar12;\n  bool bVar13;\n  int local_20 [4];\n  \n  iVar7 = param_1[10];\n  if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }\n  iVar5 = *param_1;\n  uVar12 = param_1[2];\n  iVar9 = param_1[3];\n  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);\n  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }\n  if (iVar8 == 0) {\n    return 0;\n  }\n  __s = (uint *)(iVar8 + param_1[4]);\n  iVar5 = *(int *)(iVar7 + 8);\n  if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }\n  uVar11 = (int)__s - iVar8;\n  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "uint *__s;" (type_identifier "uint") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "iVar7 = param_1[10];" (assignment_expression "iVar7 = param_1[10]" (identifier "iVar7") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (if_statement "if (iVar7 == 0) {\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);" (call_expression "FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" (identifier "FUN_002446e0") (argument_list "("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT)" (( "(") (string_literal ""../../gold/dwarf_reader.cc"" (" """) (string_content "../../gold/dwarf_reader.cc") (" """)) (, ",") (number_literal "0x3a9") (, ",") (string_literal ""skip_attributes"" (" """) (string_content "skip_attributes") (" """)) (, ",") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" (identifier "iVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" (identifier "uVar12") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" (identifier "iVar9") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" (identifier "iVar8") (= "=") (binary_expression "*(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + uVar12" (pointer_expression "*(int *)(iVar5 + 0x34)" (* "*") (cast_expression "(int *)(iVar5 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (identifier "uVar12")) (+ "+") (pointer_expression "*(int *)(iVar5 + 0x2c)" (* "*") (cast_expression "(int *)(iVar5 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x2c)" (( "(") (binary_expression "iVar5 + 0x2c" (identifier "iVar5") (+ "+") (number_literal "0x2c")) () ")")))))) (; ";")) (if_statement "if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)\n  {\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" (if "if") (parenthesized_expression "((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)" (( "(") (binary_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U" (call_expression "(uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c))" (( "(") (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)" (binary_expression "*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c)" (pointer_expression "*(int *)(iVar5 + 0x34)" (* "*") (cast_expression "(int *)(iVar5 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (pointer_expression "*(int *)(iVar5 + 0x3c)" (* "*") (cast_expression "(int *)(iVar5 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x3c)" (( "(") (binary_expression "iVar5 + 0x3c" (identifier "iVar5") (+ "+") (number_literal "0x3c")) () ")"))))) (+ "+") (pointer_expression "*(int *)(iVar5 + 0x2c)" (* "*") (cast_expression "(int *)(iVar5 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x2c)" (( "(") (binary_expression "iVar5 + 0x2c" (identifier "iVar5") (+ "+") (number_literal "0x2c")) () ")"))))) () ")"))) (< "<") (binary_expression "iVar8 + 1U" (identifier "iVar8") (+ "+") (number_literal "1U"))) () ")")) (compound_statement "{\n    FUN_00372bf0(iVar5);\n    return 0;\n  }" ({ "{") (expression_statement "FUN_00372bf0(iVar5);" (call_expression "FUN_00372bf0(iVar5)" (identifier "FUN_00372bf0") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (iVar8 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "__s = (uint *)(iVar8 + param_1[4]);" (assignment_expression "__s = (uint *)(iVar8 + param_1[4])" (identifier "__s") (= "=") (cast_expression "(uint *)(iVar8 + param_1[4])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + param_1[4])" (( "(") (binary_expression "iVar8 + param_1[4]" (identifier "iVar8") (+ "+") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (expression_statement "iVar5 = *(int *)(iVar7 + 8);" (assignment_expression "iVar5 = *(int *)(iVar7 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar5 != *(int *)(iVar7 + 0xc)) {\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" (if "if") (parenthesized_expression "(iVar5 != *(int *)(iVar7 + 0xc))" (( "(") (binary_expression "iVar5 != *(int *)(iVar7 + 0xc)" (identifier "iVar5") (!= "!=") (pointer_expression "*(int *)(iVar7 + 0xc)" (* "*") (cast_expression "(int *)(iVar7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n    uVar12 = 0;\n    puVar10 = __s;\n    do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));\n    uVar12 = param_1[2];\n    iVar9 = param_1[3];\n  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" (identifier "puVar10") (= "=") (identifier "__s")) (; ";")) (do_statement "do {\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));" (do "do") (compound_statement "{\n      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);\n      __s = puVar10;\n      if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }\nLAB_00372d80:\n      uVar12 = uVar12 + 1;\n      iVar5 = *(int *)(param_1[10] + 8);\n      puVar10 = __s;\n    }" ({ "{") (expression_statement "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);" (assignment_expression "uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(iVar5 + 4 + uVar12 * 8)" (* "*") (cast_expression "(uint *)(iVar5 + 4 + uVar12 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4 + uVar12 * 8)" (( "(") (binary_expression "iVar5 + 4 + uVar12 * 8" (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) (+ "+") (binary_expression "uVar12 * 8" (identifier "uVar12") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "__s = puVar10;" (assignment_expression "__s = puVar10" (identifier "__s") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (uVar11 == 0x16) {\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }\n      else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" (if "if") (parenthesized_expression "(uVar11 == 0x16)" (( "(") (binary_expression "uVar11 == 0x16" (identifier "uVar11") (== "==") (number_literal "0x16")) () ")")) (compound_statement "{\n        uVar11 = (uint)(byte)*puVar10;\n        __s = (uint *)((int)puVar10 + 1);\n        if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }\n        local_20[0] = 1;\n        bVar13 = uVar11 == 0xe;\n        if (!bVar13) goto LAB_00372d06;\nLAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));\n      }" ({ "{") (expression_statement "uVar11 = (uint)(byte)*puVar10;" (assignment_expression "uVar11 = (uint)(byte)*puVar10" (identifier "uVar11") (= "=") (binary_expression "(uint)(byte)*puVar10" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "__s = (uint *)((int)puVar10 + 1);" (assignment_expression "__s = (uint *)((int)puVar10 + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)puVar10 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((char)(byte)*puVar10 < '\0') {\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" (if "if") (parenthesized_expression "((char)(byte)*puVar10 < '\0')" (( "(") (binary_expression "(char)(byte)*puVar10 < '\0'" (binary_expression "(char)(byte)*puVar10" (cast_expression "(char)(byte)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "puVar10")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar11 = FUN_002701a0(__s,local_20,uVar11);\n          __s = (uint *)((int)puVar10 + local_20[0]);\n          goto LAB_00372cfd;\n        }" ({ "{") (expression_statement "uVar11 = FUN_002701a0(__s,local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0(__s,local_20,uVar11)" (identifier "uVar11") (= "=") (call_expression "FUN_002701a0(__s,local_20,uVar11)" (identifier "FUN_002701a0") (argument_list "(__s,local_20,uVar11)" (( "(") (identifier "__s") (, ",") (identifier "local_20") (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "__s = (uint *)((int)puVar10 + local_20[0]);" (assignment_expression "__s = (uint *)((int)puVar10 + local_20[0])" (identifier "__s") (= "=") (cast_expression "(uint *)((int)puVar10 + local_20[0])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + local_20[0])" (( "(") (binary_expression "(int)puVar10 + local_20[0]" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) () ")")))) (; ";")) (goto_statement "goto LAB_00372cfd;" (goto "goto") (statement_identifier "LAB_00372cfd") (; ";")) (} "}"))) (expression_statement "local_20[0] = 1;" (assignment_expression "local_20[0] = 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" (identifier "bVar13") (= "=") (binary_expression "uVar11 == 0xe" (identifier "uVar11") (== "==") (number_literal "0xe"))) (; ";")) (if_statement "if (!bVar13) goto LAB_00372d06;" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (goto_statement "goto LAB_00372d06;" (goto "goto") (statement_identifier "LAB_00372d06") (; ";"))) (labeled_statement "LAB_00372f38:\n        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" (statement_identifier "LAB_00372f38") (: ":") (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x44))" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x44))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x44))" (( "(") (binary_expression "(int)__s + *(int *)(*param_1 + 0x44)" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (pointer_expression "*(int *)(*param_1 + 0x44)" (* "*") (cast_expression "(int *)(*param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x44)" (( "(") (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")"))))) () ")")))) (; ";"))) (} "}")) (else_clause "else {\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" (else "else") (compound_statement "{\nLAB_00372cfd:\n        bVar13 = uVar11 == 0xe;\n        if (bVar13) goto LAB_00372f38;\nLAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }\n      }" ({ "{") (labeled_statement "LAB_00372cfd:\n        bVar13 = uVar11 == 0xe;" (statement_identifier "LAB_00372cfd") (: ":") (expression_statement "bVar13 = uVar11 == 0xe;" (assignment_expression "bVar13 = uVar11 == 0xe" (identifier "bVar13") (= "=") (binary_expression "uVar11 == 0xe" (identifier "uVar11") (== "==") (number_literal "0xe"))) (; ";"))) (if_statement "if (bVar13) goto LAB_00372f38;" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (goto_statement "goto LAB_00372f38;" (goto "goto") (statement_identifier "LAB_00372f38") (; ";"))) (labeled_statement "LAB_00372d06:\n        if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (statement_identifier "LAB_00372d06") (: ":") (if_statement "if (uVar11 < 0xe || bVar13) {\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }\n        else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (if "if") (parenthesized_expression "(uVar11 < 0xe || bVar13)" (( "(") (binary_expression "uVar11 < 0xe || bVar13" (binary_expression "uVar11 < 0xe" (identifier "uVar11") (< "<") (number_literal "0xe")) (|| "||") (identifier "bVar13")) () ")")) (compound_statement "{\n          if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }\n        }" ({ "{") (if_statement "if (uVar11 == 7) {\nLAB_00372fe0:\n            __s = __s + 2;\n          }\n          else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (if "if") (parenthesized_expression "(uVar11 == 7)" (( "(") (binary_expression "uVar11 == 7" (identifier "uVar11") (== "==") (number_literal "7")) () ")")) (compound_statement "{\nLAB_00372fe0:\n            __s = __s + 2;\n          }" ({ "{") (labeled_statement "LAB_00372fe0:\n            __s = __s + 2;" (statement_identifier "LAB_00372fe0") (: ":") (expression_statement "__s = __s + 2;" (assignment_expression "__s = __s + 2" (identifier "__s") (= "=") (binary_expression "__s + 2" (identifier "__s") (+ "+") (number_literal "2"))) (; ";"))) (} "}")) (else_clause "else if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (else "else") (if_statement "if (uVar11 < 8) {\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }\n          else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (if "if") (parenthesized_expression "(uVar11 < 8)" (( "(") (binary_expression "uVar11 < 8" (identifier "uVar11") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n            if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }\n          }" ({ "{") (if_statement "if (uVar11 == 4) {\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }\n            else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (if "if") (parenthesized_expression "(uVar11 == 4)" (( "(") (binary_expression "uVar11 == 4" (identifier "uVar11") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n              piVar1 = *(int **)(*param_1 + 8);\n              pcVar2 = *(code **)(*piVar1 + 0xc);\n              if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }\n              uVar11 = *__s;\n              if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }\n              __s = (uint *)((int)__s + uVar11 + 4);\n            }" ({ "{") (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar1 + 0xc)" (* "*") (cast_expression "(code **)(*piVar1 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xc)" (( "(") (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == FUN_00101810) {\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }\n              else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" (if "if") (parenthesized_expression "(pcVar2 == FUN_00101810)" (( "(") (binary_expression "pcVar2 == FUN_00101810" (identifier "pcVar2") (== "==") (identifier "FUN_00101810")) () ")")) (compound_statement "{\n                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n              }" ({ "{") (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0xe8)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0xe8)" (* "*") (cast_expression "(code **)(*piVar1 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xe8)" (( "(") (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                cVar4 = (*pcVar2)(piVar1);\n              }" (else "else") (compound_statement "{\n                cVar4 = (*pcVar2)(piVar1);\n              }" ({ "{") (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" (identifier "cVar4") (= "=") (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar11 = *__s;" (assignment_expression "uVar11 = *__s" (identifier "uVar11") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";")) (if_statement "if (cVar4 != '\0') {\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;\n              }" ({ "{") (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                         uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" (( "(") (binary_expression "uVar11 & 0xff0000" (identifier "uVar11") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" (( "(") (binary_expression "uVar11 & 0xff00" (identifier "uVar11") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar11 << 0x18" (identifier "uVar11") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "__s = (uint *)((int)__s + uVar11 + 4);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + 4)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + uVar11 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + uVar11 + 4)" (( "(") (binary_expression "(int)__s + uVar11 + 4" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "uVar11")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (} "}")) (else_clause "else if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (else "else") (if_statement "if (uVar11 < 5) {\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }\n            else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (if "if") (parenthesized_expression "(uVar11 < 5)" (( "(") (binary_expression "uVar11 < 5" (identifier "uVar11") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n              if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }\n            }" ({ "{") (if_statement "if (uVar11 == 1) {\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }\n              else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" (if "if") (parenthesized_expression "(uVar11 == 1)" (( "(") (binary_expression "uVar11 == 1" (identifier "uVar11") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));\n              }" ({ "{") (expression_statement "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));" (assignment_expression "__s = (uint *)((int)__s + *(int *)(*param_1 + 0x48))" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + *(int *)(*param_1 + 0x48))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + *(int *)(*param_1 + 0x48))" (( "(") (binary_expression "(int)__s + *(int *)(*param_1 + 0x48)" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (pointer_expression "*(int *)(*param_1 + 0x48)" (* "*") (cast_expression "(int *)(*param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x48)" (( "(") (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" (else "else") (compound_statement "{\n                if (uVar11 != 3) {\n                  return 0;\n                }\n                piVar1 = *(int **)(*param_1 + 8);\n                pcVar2 = *(code **)(*piVar1 + 0xc);\n                if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }\n                uVar3 = (ushort)*__s;\n                if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }\n                __s = (uint *)((int)__s + uVar3 + 2);\n              }" ({ "{") (if_statement "if (uVar11 != 3) {\n                  return 0;\n                }" (if "if") (parenthesized_expression "(uVar11 != 3)" (( "(") (binary_expression "uVar11 != 3" (identifier "uVar11") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n                  return 0;\n                }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar1 = *(int **)(*param_1 + 8);" (assignment_expression "piVar1 = *(int **)(*param_1 + 8)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*piVar1 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar1 + 0xc)" (* "*") (cast_expression "(code **)(*piVar1 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xc)" (( "(") (binary_expression "*piVar1 + 0xc" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == FUN_00101810) {\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }\n                else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" (if "if") (parenthesized_expression "(pcVar2 == FUN_00101810)" (( "(") (binary_expression "pcVar2 == FUN_00101810" (identifier "pcVar2") (== "==") (identifier "FUN_00101810")) () ")")) (compound_statement "{\n                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);\n                }" ({ "{") (expression_statement "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*piVar1 + 0xe8))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0xe8))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0xe8)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0xe8)" (* "*") (cast_expression "(code **)(*piVar1 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0xe8)" (( "(") (binary_expression "*piVar1 + 0xe8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                  cVar4 = (*pcVar2)(piVar1);\n                }" (else "else") (compound_statement "{\n                  cVar4 = (*pcVar2)(piVar1);\n                }" ({ "{") (expression_statement "cVar4 = (*pcVar2)(piVar1);" (assignment_expression "cVar4 = (*pcVar2)(piVar1)" (identifier "cVar4") (= "=") (call_expression "(*pcVar2)(piVar1)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar3 = (ushort)*__s;" (assignment_expression "uVar3 = (ushort)*__s" (identifier "uVar3") (= "=") (binary_expression "(ushort)*__s" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (identifier "__s"))) (; ";")) (if_statement "if (cVar4 != '\0') {\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));\n                }" ({ "{") (expression_statement "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));" (assignment_expression "uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" (identifier "uVar3") (= "=") (call_expression "CONCAT11((byte)*__s,*(byte *)((int)__s + 1))" (identifier "CONCAT11") (argument_list "((byte)*__s,*(byte *)((int)__s + 1))" (( "(") (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "__s")) (, ",") (pointer_expression "*(byte *)((int)__s + 1)" (* "*") (cast_expression "(byte *)((int)__s + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (} "}"))) (expression_statement "__s = (uint *)((int)__s + uVar3 + 2);" (assignment_expression "__s = (uint *)((int)__s + uVar3 + 2)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + uVar3 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + uVar3 + 2)" (( "(") (binary_expression "(int)__s + uVar3 + 2" (binary_expression "(int)__s + uVar3" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "uVar3")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (else "else") (if_statement "if (uVar11 == 5) {\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }\n            else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (if "if") (parenthesized_expression "(uVar11 == 5)" (( "(") (binary_expression "uVar11 == 5" (identifier "uVar11") (== "==") (number_literal "5")) () ")")) (compound_statement "{\nLAB_00372e03:\n              __s = (uint *)((int)__s + 2);\n            }" ({ "{") (labeled_statement "LAB_00372e03:\n              __s = (uint *)((int)__s + 2);" (statement_identifier "LAB_00372e03") (: ":") (expression_statement "__s = (uint *)((int)__s + 2);" (assignment_expression "__s = (uint *)((int)__s + 2)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 2)" (( "(") (binary_expression "(int)__s + 2" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "2")) () ")")))) (; ";"))) (} "}")) (else_clause "else {\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" (else "else") (compound_statement "{\n              if (uVar11 != 6) {\n                return 0;\n              }\nLAB_00372e5a:\n              __s = __s + 1;\n            }" ({ "{") (if_statement "if (uVar11 != 6) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(uVar11 != 6)" (( "(") (binary_expression "uVar11 != 6" (identifier "uVar11") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00372e5a:\n              __s = __s + 1;" (statement_identifier "LAB_00372e5a") (: ":") (expression_statement "__s = __s + 1;" (assignment_expression "__s = __s + 1" (identifier "__s") (= "=") (binary_expression "__s + 1" (identifier "__s") (+ "+") (number_literal "1"))) (; ";"))) (} "}")))))))) (} "}")) (else_clause "else if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (else "else") (if_statement "if (uVar11 == 10) {\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }\n          else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (if "if") (parenthesized_expression "(uVar11 == 10)" (( "(") (binary_expression "uVar11 == 10" (identifier "uVar11") (== "==") (number_literal "10")) () ")")) (compound_statement "{\n            __s = (uint *)((int)__s + (byte)*__s + 1);\n          }" ({ "{") (expression_statement "__s = (uint *)((int)__s + (byte)*__s + 1);" (assignment_expression "__s = (uint *)((int)__s + (byte)*__s + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + (byte)*__s + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + (byte)*__s + 1)" (( "(") (binary_expression "(int)__s + (byte)*__s + 1" (binary_expression "(int)__s + (byte)*__s" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "__s"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" (else "else") (compound_statement "{\n            if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }\n            if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }\n          }" ({ "{") (if_statement "if (10 < uVar11) {\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" (if "if") (parenthesized_expression "(10 < uVar11)" (( "(") (binary_expression "10 < uVar11" (number_literal "10") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n              if (uVar11 < 0xd) goto LAB_00372fc0;\n              if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }\n              goto LAB_00372ebb;\n            }" ({ "{") (if_statement "if (uVar11 < 0xd) goto LAB_00372fc0;" (if "if") (parenthesized_expression "(uVar11 < 0xd)" (( "(") (binary_expression "uVar11 < 0xd" (identifier "uVar11") (< "<") (number_literal "0xd")) () ")")) (goto_statement "goto LAB_00372fc0;" (goto "goto") (statement_identifier "LAB_00372fc0") (; ";"))) (if_statement "if ((char)(byte)*__s < '\0') {\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" (if "if") (parenthesized_expression "((char)(byte)*__s < '\0')" (( "(") (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "__s")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);\n                __s = (uint *)((int)__s + local_20[0]);\n                goto LAB_00372d80;\n              }" ({ "{") (expression_statement "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s)" (identifier "FUN_00270260") (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" (( "(") (cast_expression "(byte *)((int)__s + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")"))) (, ",") (identifier "local_20") (, ",") (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "__s")) () ")"))) (; ";")) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + local_20[0])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + local_20[0])" (( "(") (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) () ")")))) (; ";")) (goto_statement "goto LAB_00372d80;" (goto "goto") (statement_identifier "LAB_00372d80") (; ";")) (} "}"))) (goto_statement "goto LAB_00372ebb;" (goto "goto") (statement_identifier "LAB_00372ebb") (; ";")) (} "}"))) (if_statement "if (uVar11 == 8) {\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }\n            else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" (if "if") (parenthesized_expression "(uVar11 == 8)" (( "(") (binary_expression "uVar11 == 8" (identifier "uVar11") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n              sVar6 = strlen((char *)__s);\n              __s = (uint *)((int)__s + sVar6 + 1);\n            }" ({ "{") (expression_statement "sVar6 = strlen((char *)__s);" (assignment_expression "sVar6 = strlen((char *)__s)" (identifier "sVar6") (= "=") (call_expression "strlen((char *)__s)" (identifier "strlen") (argument_list "((char *)__s)" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) () ")")))) (; ";")) (expression_statement "__s = (uint *)((int)__s + sVar6 + 1);" (assignment_expression "__s = (uint *)((int)__s + sVar6 + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + sVar6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + sVar6 + 1)" (( "(") (binary_expression "(int)__s + sVar6 + 1" (binary_expression "(int)__s + sVar6" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "sVar6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" (else "else") (compound_statement "{\n              if (uVar11 != 9) {\n                return 0;\n              }\nLAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;\n              iVar7 = 1;\n              if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }\n              __s = (uint *)((int)__s + uVar11 + iVar7);\n            }" ({ "{") (if_statement "if (uVar11 != 9) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(uVar11 != 9)" (( "(") (binary_expression "uVar11 != 9" (identifier "uVar11") (!= "!=") (number_literal "9")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00372e2d:\n              uVar11 = (uint)(byte)*__s;" (statement_identifier "LAB_00372e2d") (: ":") (expression_statement "uVar11 = (uint)(byte)*__s;" (assignment_expression "uVar11 = (uint)(byte)*__s" (identifier "uVar11") (= "=") (binary_expression "(uint)(byte)*__s" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "__s"))) (; ";"))) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((char)(byte)*__s < '\0') {\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" (if "if") (parenthesized_expression "((char)(byte)*__s < '\0')" (( "(") (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "__s")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);\n                iVar7 = local_20[0];\n              }" ({ "{") (expression_statement "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);" (assignment_expression "uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" (identifier "uVar11") (= "=") (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11)" (identifier "FUN_002701a0") (argument_list "((byte *)((int)__s + 1),local_20,uVar11)" (( "(") (cast_expression "(byte *)((int)__s + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")"))) (, ",") (identifier "local_20") (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "iVar7 = local_20[0];" (assignment_expression "iVar7 = local_20[0]" (identifier "iVar7") (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (expression_statement "__s = (uint *)((int)__s + uVar11 + iVar7);" (assignment_expression "__s = (uint *)((int)__s + uVar11 + iVar7)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + uVar11 + iVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + uVar11 + iVar7)" (( "(") (binary_expression "(int)__s + uVar11 + iVar7" (binary_expression "(int)__s + uVar11" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "uVar11")) (+ "+") (identifier "iVar7")) () ")")))) (; ";")) (} "}")))) (} "}")))))))) (} "}")) (else_clause "else if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (else "else") (if_statement "if (uVar11 == 0x15) {\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }\n        else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (if "if") (parenthesized_expression "(uVar11 == 0x15)" (( "(") (binary_expression "uVar11 == 0x15" (identifier "uVar11") (== "==") (number_literal "0x15")) () ")")) (compound_statement "{\nLAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }\n        }" ({ "{") (labeled_statement "LAB_00372ead:\n          if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" (statement_identifier "LAB_00372ead") (: ":") (if_statement "if ((char)(byte)*__s < '\0') {\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }\n          else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" (if "if") (parenthesized_expression "((char)(byte)*__s < '\0')" (( "(") (binary_expression "(char)(byte)*__s < '\0'" (binary_expression "(char)(byte)*__s" (cast_expression "(char)(byte)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")"))) (* "*") (identifier "__s")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);\n            __s = (uint *)((int)__s + local_20[0]);\n          }" ({ "{") (expression_statement "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);" (call_expression "FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s)" (identifier "FUN_002701a0") (argument_list "((byte *)((int)__s + 1),local_20,(byte)*__s)" (( "(") (cast_expression "(byte *)((int)__s + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")"))) (, ",") (identifier "local_20") (, ",") (binary_expression "(byte)*__s" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (identifier "__s")) () ")"))) (; ";")) (expression_statement "__s = (uint *)((int)__s + local_20[0]);" (assignment_expression "__s = (uint *)((int)__s + local_20[0])" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + local_20[0])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + local_20[0])" (( "(") (binary_expression "(int)__s + local_20[0]" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" (else "else") (compound_statement "{\nLAB_00372ebb:\n            __s = (uint *)((int)__s + 1);\n          }" ({ "{") (labeled_statement "LAB_00372ebb:\n            __s = (uint *)((int)__s + 1);" (statement_identifier "LAB_00372ebb") (: ":") (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}"))))) (} "}")) (else_clause "else if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (else "else") (if_statement "if (uVar11 < 0x16) {\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }\n        else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (if "if") (parenthesized_expression "(uVar11 < 0x16)" (( "(") (binary_expression "uVar11 < 0x16" (identifier "uVar11") (< "<") (number_literal "0x16")) () ")")) (compound_statement "{\n          if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }\n        }" ({ "{") (if_statement "if (uVar11 == 0x11) {\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }\n          else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" (if "if") (parenthesized_expression "(uVar11 == 0x11)" (( "(") (binary_expression "uVar11 == 0x11" (identifier "uVar11") (== "==") (number_literal "0x11")) () ")")) (compound_statement "{\nLAB_00372fc0:\n            __s = (uint *)((int)__s + 1);\n          }" ({ "{") (labeled_statement "LAB_00372fc0:\n            __s = (uint *)((int)__s + 1);" (statement_identifier "LAB_00372fc0") (: ":") (expression_statement "__s = (uint *)((int)__s + 1);" (assignment_expression "__s = (uint *)((int)__s + 1)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + 1)" (( "(") (binary_expression "(int)__s + 1" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}")) (else_clause "else {\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" (else "else") (compound_statement "{\n            if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }\n            if (uVar11 == 0xf) goto LAB_00372ead;\n            if (uVar11 != 0x10) {\n              return 0;\n            }\n            iVar7 = *param_1;\n            iVar5 = *(int *)(iVar7 + 0x48);\n            if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }\n            __s = (uint *)((int)__s + iVar5);\n          }" ({ "{") (if_statement "if (0x11 < uVar11) {\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" (if "if") (parenthesized_expression "(0x11 < uVar11)" (( "(") (binary_expression "0x11 < uVar11" (number_literal "0x11") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n              if (uVar11 == 0x13) goto LAB_00372e5a;\n              if (uVar11 < 0x14) goto LAB_00372e03;\n              goto LAB_00372fe0;\n            }" ({ "{") (if_statement "if (uVar11 == 0x13) goto LAB_00372e5a;" (if "if") (parenthesized_expression "(uVar11 == 0x13)" (( "(") (binary_expression "uVar11 == 0x13" (identifier "uVar11") (== "==") (number_literal "0x13")) () ")")) (goto_statement "goto LAB_00372e5a;" (goto "goto") (statement_identifier "LAB_00372e5a") (; ";"))) (if_statement "if (uVar11 < 0x14) goto LAB_00372e03;" (if "if") (parenthesized_expression "(uVar11 < 0x14)" (( "(") (binary_expression "uVar11 < 0x14" (identifier "uVar11") (< "<") (number_literal "0x14")) () ")")) (goto_statement "goto LAB_00372e03;" (goto "goto") (statement_identifier "LAB_00372e03") (; ";"))) (goto_statement "goto LAB_00372fe0;" (goto "goto") (statement_identifier "LAB_00372fe0") (; ";")) (} "}"))) (if_statement "if (uVar11 == 0xf) goto LAB_00372ead;" (if "if") (parenthesized_expression "(uVar11 == 0xf)" (( "(") (binary_expression "uVar11 == 0xf" (identifier "uVar11") (== "==") (number_literal "0xf")) () ")")) (goto_statement "goto LAB_00372ead;" (goto "goto") (statement_identifier "LAB_00372ead") (; ";"))) (if_statement "if (uVar11 != 0x10) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(uVar11 != 0x10)" (( "(") (binary_expression "uVar11 != 0x10" (identifier "uVar11") (!= "!=") (number_literal "0x10")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" (identifier "iVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar5 = *(int *)(iVar7 + 0x48);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x48)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar7 + 0x48)" (* "*") (cast_expression "(int *)(iVar7 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x48)" (( "(") (binary_expression "iVar7 + 0x48" (identifier "iVar7") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if (2 < *(uint *)(iVar7 + 0x4c)) {\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" (if "if") (parenthesized_expression "(2 < *(uint *)(iVar7 + 0x4c))" (( "(") (binary_expression "2 < *(uint *)(iVar7 + 0x4c)" (number_literal "2") (< "<") (pointer_expression "*(uint *)(iVar7 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar7 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x4c)" (( "(") (binary_expression "iVar7 + 0x4c" (identifier "iVar7") (+ "+") (number_literal "0x4c")) () ")"))))) () ")")) (compound_statement "{\n              iVar5 = *(int *)(iVar7 + 0x44);\n            }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar7 + 0x44);" (assignment_expression "iVar5 = *(int *)(iVar7 + 0x44)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar7 + 0x44)" (* "*") (cast_expression "(int *)(iVar7 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x44)" (( "(") (binary_expression "iVar7 + 0x44" (identifier "iVar7") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}"))) (expression_statement "__s = (uint *)((int)__s + iVar5);" (assignment_expression "__s = (uint *)((int)__s + iVar5)" (identifier "__s") (= "=") (cast_expression "(uint *)((int)__s + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + iVar5)" (( "(") (binary_expression "(int)__s + iVar5" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (else "else") (if_statement "if (uVar11 != 0x19) {\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" (if "if") (parenthesized_expression "(uVar11 != 0x19)" (( "(") (binary_expression "uVar11 != 0x19" (identifier "uVar11") (!= "!=") (number_literal "0x19")) () ")")) (compound_statement "{\n          if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }\n          if (uVar11 == 0x20) goto LAB_00372fe0;\n          if (uVar11 < 0x20) {\n            return 0;\n          }\n          if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }\n          goto LAB_00372ead;\n        }" ({ "{") (if_statement "if (uVar11 < 0x1a) {\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" (if "if") (parenthesized_expression "(uVar11 < 0x1a)" (( "(") (binary_expression "uVar11 < 0x1a" (identifier "uVar11") (< "<") (number_literal "0x1a")) () ")")) (compound_statement "{\n            if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }\n            goto LAB_00372f38;\n          }" ({ "{") (if_statement "if (uVar11 != 0x17) {\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" (if "if") (parenthesized_expression "(uVar11 != 0x17)" (( "(") (binary_expression "uVar11 != 0x17" (identifier "uVar11") (!= "!=") (number_literal "0x17")) () ")")) (compound_statement "{\n              if (uVar11 != 0x18) {\n                return 0;\n              }\n              goto LAB_00372e2d;\n            }" ({ "{") (if_statement "if (uVar11 != 0x18) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(uVar11 != 0x18)" (( "(") (binary_expression "uVar11 != 0x18" (identifier "uVar11") (!= "!=") (number_literal "0x18")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_00372e2d;" (goto "goto") (statement_identifier "LAB_00372e2d") (; ";")) (} "}"))) (goto_statement "goto LAB_00372f38;" (goto "goto") (statement_identifier "LAB_00372f38") (; ";")) (} "}"))) (if_statement "if (uVar11 == 0x20) goto LAB_00372fe0;" (if "if") (parenthesized_expression "(uVar11 == 0x20)" (( "(") (binary_expression "uVar11 == 0x20" (identifier "uVar11") (== "==") (number_literal "0x20")) () ")")) (goto_statement "goto LAB_00372fe0;" (goto "goto") (statement_identifier "LAB_00372fe0") (; ";"))) (if_statement "if (uVar11 < 0x20) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(uVar11 < 0x20)" (( "(") (binary_expression "uVar11 < 0x20" (identifier "uVar11") (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (1 < uVar11 - 0x1f01) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(1 < uVar11 - 0x1f01)" (( "(") (binary_expression "1 < uVar11 - 0x1f01" (number_literal "1") (< "<") (binary_expression "uVar11 - 0x1f01" (identifier "uVar11") (- "-") (number_literal "0x1f01"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_00372ead;" (goto "goto") (statement_identifier "LAB_00372ead") (; ";")) (} "}")))))))))) (} "}")))) (labeled_statement "LAB_00372d80:\n      uVar12 = uVar12 + 1;" (statement_identifier "LAB_00372d80") (: ":") (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar5 = *(int *)(param_1[10] + 8);" (assignment_expression "iVar5 = *(int *)(param_1[10] + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1[10] + 8)" (* "*") (cast_expression "(int *)(param_1[10] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[10] + 8)" (( "(") (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar10 = __s;" (assignment_expression "puVar10 = __s" (identifier "puVar10") (= "=") (identifier "__s")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3))" (( "(") (binary_expression "uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" (identifier "uVar12") (< "<") (call_expression "(uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1[10] + 0xc) - iVar5 >> 3)" (( "(") (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5 >> 3" (binary_expression "*(int *)(param_1[10] + 0xc) - iVar5" (pointer_expression "*(int *)(param_1[10] + 0xc)" (* "*") (cast_expression "(int *)(param_1[10] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[10] + 0xc)" (( "(") (binary_expression "param_1[10] + 0xc" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (- "-") (identifier "iVar5")) (>> ">>") (number_literal "3")) () ")")))) () ")")) (; ";")) (expression_statement "uVar12 = param_1[2];" (assignment_expression "uVar12 = param_1[2]" (identifier "uVar12") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" (identifier "iVar9") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar11 = (int)__s - iVar8;" (assignment_expression "uVar11 = (int)__s - iVar8" (identifier "uVar11") (= "=") (binary_expression "(int)__s - iVar8" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (- "-") (identifier "iVar8"))) (; ";")) (return_statement "return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);" (return "return") (call_expression "CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" (identifier "CONCAT44") (argument_list "(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12)" (( "(") (binary_expression "((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12)" (binary_expression "((int)uVar11 >> 0x1f) + iVar9" (parenthesized_expression "((int)uVar11 >> 0x1f)" (( "(") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (identifier "iVar9")) (+ "+") (cast_expression "(uint)CARRY4(uVar11,uVar12)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar11,uVar12)" (identifier "CARRY4") (argument_list "(uVar11,uVar12)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar12") () ")"))))) (, ",") (binary_expression "uVar11 + uVar12" (identifier "uVar11") (+ "+") (identifier "uVar12")) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: off_t skip_attributes(Dwarf_die * this) */

type_1 __thiscall var_24::type_2::function_1(type_2 *this)

{
  type_3 bVar1;
  type_4 *var_1;
  type_5 *pDVar3;
  int var_3;
  type_6 *pRVar5;
  type_7 **pp_Var6;
  type_7 *var_16;
  type_8 var_19;
  char var_17;
  type_9 *var_15;
  type_10 pAVar10;
  type_9 var_14;
  size_t var_22;
  size_t var_23;
  type_11 return_value;
  type_12 *var_5;
  type_9 *var_9;
  type_9 var_12;
  type_9 var_4;
  bool var_13;
  type_13 uVar20;
  uint64_t uVar21;
  size_t var_11;
  int var_26;
  
  var_1 = this->abbrev_code_;
  if (var_1 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes");
  }
  pDVar3 = this->dwinfo_;
  var_4 = (type_9)this->die_offset_;
  var_26 = *(int *)((int)&this->die_offset_ + 4);
  var_3 = (int)pDVar3->cu_offset_;
  var_5 = pDVar3->buffer_ + var_3 + var_4;
  if (pDVar3->buffer_ + var_3 + (int)pDVar3->cu_length_ < var_5 + 1) {
    Dwarf_info_reader::var_6(pDVar3);
    return 0;
  }
  if (var_5 == (type_12 *)0x0) {
    return 0;
  }
  var_15 = (type_9 *)(var_5 + (int)this->attr_offset_);
  pAVar10 = (var_1->attributes).
            super__Vector_base<var_24::Dwarf_abbrev_table::var_7,_std::allocator<var_24::Dwarf_abbrev_table::var_7>var_8>
            ._M_impl._M_start;
  if (pAVar10 !=
      (var_1->attributes).
      super__Vector_base<var_24::Dwarf_abbrev_table::var_7,_std::allocator<var_24::Dwarf_abbrev_table::var_7>var_8>
      ._M_impl._M_finish) {
    var_4 = 0;
    var_9 = var_15;
    do {
      uVar20 = (type_13)pAVar10[var_4].form;
      var_15 = var_9;
      if (pAVar10[var_4].form == 0x16) {
        bVar1 = (type_3)*var_9;
        var_12 = (type_9)bVar1;
        uVar20 = (type_13)var_12;
        var_15 = (type_9 *)((int)var_9 + 1);
        if ((char)bVar1 < '\0') {
          uVar20 = var_10((type_12 *)var_15,&var_11,bVar1);
          var_15 = (type_9 *)((int)var_9 + var_11);
          goto LAB_00372cfd;
        }
        var_11 = 1;
        var_13 = var_12 == 0xe;
        if (!var_13) goto LAB_00372d06;
LAB_00372f38:
        var_15 = (type_9 *)((int)var_15 + this->dwinfo_->offset_size_);
      }
      else {
LAB_00372cfd:
        var_12 = (type_9)uVar20;
        var_13 = var_12 == 0xe;
        if (var_13) goto LAB_00372f38;
LAB_00372d06:
        var_14 = (type_9)uVar20;
        if (var_12 < 0xe || var_13) {
          if (var_14 == 7) {
LAB_00372fe0:
            var_15 = var_15 + 2;
          }
          else if (var_14 < 8) {
            if (var_14 == 4) {
              pRVar5 = this->dwinfo_->object_;
              pp_Var6 = (pRVar5->super_Object)._vptr_Object;
              var_16 = pp_Var6[3];
              if (var_16 == type_6::is_big_endian) {
                var_26 = (*pp_Var6[0x3a])(pRVar5);
                var_17 = (char)var_26;
              }
              else {
                var_26 = (*var_16)(pRVar5);
                var_17 = (char)var_26;
              }
              var_12 = *var_15;
              if (var_17 != '\0') {
                var_12 = var_12 >> 0x18 | (var_12 & 0xff0000) >> 8 | (var_12 & 0xff00) << 8 |
                         var_12 << 0x18;
              }
              var_15 = (type_9 *)((int)var_15 + var_12 + 4);
            }
            else if (var_14 < 5) {
              if (var_14 == 1) {
                var_15 = (type_9 *)((int)var_15 + this->dwinfo_->address_size_);
              }
              else {
                if (var_14 != 3) {
                  return 0;
                }
                pRVar5 = this->dwinfo_->object_;
                pp_Var6 = (pRVar5->super_Object)._vptr_Object;
                var_16 = pp_Var6[3];
                if (var_16 == type_6::is_big_endian) {
                  var_26 = (*pp_Var6[0x3a])(pRVar5);
                  var_17 = (char)var_26;
                }
                else {
                  var_26 = (*var_16)(pRVar5);
                  var_17 = (char)var_26;
                }
                var_19 = (type_8)*var_15;
                if (var_17 != '\0') {
                  var_19 = var_18((type_3)*var_15,*(type_3 *)((int)var_15 + 1));
                }
                var_15 = (type_9 *)((int)var_15 + var_19 + 2);
              }
            }
            else if (var_14 == 5) {
LAB_00372e03:
              var_15 = (type_9 *)((int)var_15 + 2);
            }
            else {
              if (var_14 != 6) {
                return 0;
              }
LAB_00372e5a:
              var_15 = var_15 + 1;
            }
          }
          else if (var_14 == 10) {
            var_15 = (type_9 *)((int)var_15 + (type_3)*var_15 + 1);
          }
          else {
            if (10 < var_14) {
              if (var_14 < 0xd) goto LAB_00372fc0;
              if ((char)(type_3)*var_15 < '\0') {
                var_20((type_3 *)((int)var_15 + 1),&var_11,(type_3)*var_15);
                var_15 = (type_9 *)((int)var_15 + var_11);
                goto LAB_00372d80;
              }
              goto LAB_00372ebb;
            }
            if (var_14 == 8) {
              var_22 = var_21((char *)var_15);
              var_15 = (type_9 *)((int)var_15 + var_22 + 1);
            }
            else {
              if (var_14 != 9) {
                return 0;
              }
LAB_00372e2d:
              bVar1 = (type_3)*var_15;
              var_12 = (type_9)bVar1;
              var_23 = 1;
              if ((char)bVar1 < '\0') {
                uVar21 = var_10((type_3 *)((int)var_15 + 1),&var_11,bVar1);
                var_12 = (type_9)uVar21;
                var_23 = var_11;
              }
              var_15 = (type_9 *)((int)var_15 + var_12 + var_23);
            }
          }
        }
        else if (var_14 == 0x15) {
LAB_00372ead:
          if ((char)(type_3)*var_15 < '\0') {
            var_10((type_3 *)((int)var_15 + 1),&var_11,(type_3)*var_15);
            var_15 = (type_9 *)((int)var_15 + var_11);
          }
          else {
LAB_00372ebb:
            var_15 = (type_9 *)((int)var_15 + 1);
          }
        }
        else if (var_14 < 0x16) {
          if (var_14 == 0x11) {
LAB_00372fc0:
            var_15 = (type_9 *)((int)var_15 + 1);
          }
          else {
            if (0x11 < var_14) {
              if (var_14 == 0x13) goto LAB_00372e5a;
              if (var_14 < 0x14) goto LAB_00372e03;
              goto LAB_00372fe0;
            }
            if (var_14 == 0xf) goto LAB_00372ead;
            if (var_14 != 0x10) {
              return 0;
            }
            pDVar3 = this->dwinfo_;
            var_12 = pDVar3->address_size_;
            if (2 < pDVar3->cu_version_) {
              var_12 = pDVar3->offset_size_;
            }
            var_15 = (type_9 *)((int)var_15 + var_12);
          }
        }
        else if (var_14 != 0x19) {
          if (var_14 < 0x1a) {
            if (var_14 != 0x17) {
              if (var_14 != 0x18) {
                return 0;
              }
              goto LAB_00372e2d;
            }
            goto LAB_00372f38;
          }
          if (var_14 == 0x20) goto LAB_00372fe0;
          if (var_14 < 0x20) {
            return 0;
          }
          if (1 < var_14 - 0x1f01) {
            return 0;
          }
          goto LAB_00372ead;
        }
      }
LAB_00372d80:
      var_4 = var_4 + 1;
      pAVar10 = (this->abbrev_code_->attributes).
                super__Vector_base<var_24::Dwarf_abbrev_table::var_7,_std::allocator<var_24::Dwarf_abbrev_table::var_7>var_8>
                ._M_impl._M_start;
      var_9 = var_15;
    } while (var_4 < (type_9)((int)(this->abbrev_code_->attributes).
                                  super__Vector_base<var_24::Dwarf_abbrev_table::var_7,_std::allocator<var_24::Dwarf_abbrev_table::var_7>var_8>
                                  ._M_impl._M_finish - (int)pAVar10 >> 3));
    var_4 = (type_9)this->die_offset_;
    var_26 = *(int *)((int)&this->die_offset_ + 4);
  }
  var_12 = (int)var_15 - (int)var_5;
  return var_25(((int)var_12 >> 0x1f) + var_26 + (type_9)var_27(var_12,var_4),var_12 + var_4);
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined8 MASKED(int *param_1)

{
  int *piVar1;
  code *pcVar2;
  ushort uVar3;
  char cVar4;
  uint *__s;
  int iVar5;
  size_t sVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint *puVar10;
  uint uVar11;
  uint uVar12;
  bool bVar13;
  int local_20 [4];
  
  iVar7 = param_1[10];
  if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/dwarf_reader.cc",0x3a9,"skip_attributes",&__DT_PLTGOT);
  }
  iVar5 = *param_1;
  uVar12 = param_1[2];
  iVar9 = param_1[3];
  iVar8 = *(int *)(iVar5 + 0x34) + uVar12 + *(int *)(iVar5 + 0x2c);
  if ((uint)(*(int *)(iVar5 + 0x34) + *(int *)(iVar5 + 0x3c) + *(int *)(iVar5 + 0x2c)) < iVar8 + 1U)
  {
    FUN_00372bf0(iVar5);
    return 0;
  }
  if (iVar8 == 0) {
    return 0;
  }
  __s = (uint *)(iVar8 + param_1[4]);
  iVar5 = *(int *)(iVar7 + 8);
  if (iVar5 != *(int *)(iVar7 + 0xc)) {
    uVar12 = 0;
    puVar10 = __s;
    do {
      uVar11 = *(uint *)(iVar5 + 4 + uVar12 * 8);
      __s = puVar10;
      if (uVar11 == 0x16) {
        uVar11 = (uint)(byte)*puVar10;
        __s = (uint *)((int)puVar10 + 1);
        if ((char)(byte)*puVar10 < '\0') {
          uVar11 = FUN_002701a0(__s,local_20,uVar11);
          __s = (uint *)((int)puVar10 + local_20[0]);
          goto LAB_00372cfd;
        }
        local_20[0] = 1;
        bVar13 = uVar11 == 0xe;
        if (!bVar13) goto LAB_00372d06;
LAB_00372f38:
        __s = (uint *)((int)__s + *(int *)(*param_1 + 0x44));
      }
      else {
LAB_00372cfd:
        bVar13 = uVar11 == 0xe;
        if (bVar13) goto LAB_00372f38;
LAB_00372d06:
        if (uVar11 < 0xe || bVar13) {
          if (uVar11 == 7) {
LAB_00372fe0:
            __s = __s + 2;
          }
          else if (uVar11 < 8) {
            if (uVar11 == 4) {
              piVar1 = *(int **)(*param_1 + 8);
              pcVar2 = *(code **)(*piVar1 + 0xc);
              if (pcVar2 == FUN_00101810) {
                cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);
              }
              else {
                cVar4 = (*pcVar2)(piVar1);
              }
              uVar11 = *__s;
              if (cVar4 != '\0') {
                uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                         uVar11 << 0x18;
              }
              __s = (uint *)((int)__s + uVar11 + 4);
            }
            else if (uVar11 < 5) {
              if (uVar11 == 1) {
                __s = (uint *)((int)__s + *(int *)(*param_1 + 0x48));
              }
              else {
                if (uVar11 != 3) {
                  return 0;
                }
                piVar1 = *(int **)(*param_1 + 8);
                pcVar2 = *(code **)(*piVar1 + 0xc);
                if (pcVar2 == FUN_00101810) {
                  cVar4 = (**(code **)(*piVar1 + 0xe8))(piVar1);
                }
                else {
                  cVar4 = (*pcVar2)(piVar1);
                }
                uVar3 = (ushort)*__s;
                if (cVar4 != '\0') {
                  uVar3 = CONCAT11((byte)*__s,*(byte *)((int)__s + 1));
                }
                __s = (uint *)((int)__s + uVar3 + 2);
              }
            }
            else if (uVar11 == 5) {
LAB_00372e03:
              __s = (uint *)((int)__s + 2);
            }
            else {
              if (uVar11 != 6) {
                return 0;
              }
LAB_00372e5a:
              __s = __s + 1;
            }
          }
          else if (uVar11 == 10) {
            __s = (uint *)((int)__s + (byte)*__s + 1);
          }
          else {
            if (10 < uVar11) {
              if (uVar11 < 0xd) goto LAB_00372fc0;
              if ((char)(byte)*__s < '\0') {
                FUN_00270260((byte *)((int)__s + 1),local_20,(byte)*__s);
                __s = (uint *)((int)__s + local_20[0]);
                goto LAB_00372d80;
              }
              goto LAB_00372ebb;
            }
            if (uVar11 == 8) {
              sVar6 = strlen((char *)__s);
              __s = (uint *)((int)__s + sVar6 + 1);
            }
            else {
              if (uVar11 != 9) {
                return 0;
              }
LAB_00372e2d:
              uVar11 = (uint)(byte)*__s;
              iVar7 = 1;
              if ((char)(byte)*__s < '\0') {
                uVar11 = FUN_002701a0((byte *)((int)__s + 1),local_20,uVar11);
                iVar7 = local_20[0];
              }
              __s = (uint *)((int)__s + uVar11 + iVar7);
            }
          }
        }
        else if (uVar11 == 0x15) {
LAB_00372ead:
          if ((char)(byte)*__s < '\0') {
            FUN_002701a0((byte *)((int)__s + 1),local_20,(byte)*__s);
            __s = (uint *)((int)__s + local_20[0]);
          }
          else {
LAB_00372ebb:
            __s = (uint *)((int)__s + 1);
          }
        }
        else if (uVar11 < 0x16) {
          if (uVar11 == 0x11) {
LAB_00372fc0:
            __s = (uint *)((int)__s + 1);
          }
          else {
            if (0x11 < uVar11) {
              if (uVar11 == 0x13) goto LAB_00372e5a;
              if (uVar11 < 0x14) goto LAB_00372e03;
              goto LAB_00372fe0;
            }
            if (uVar11 == 0xf) goto LAB_00372ead;
            if (uVar11 != 0x10) {
              return 0;
            }
            iVar7 = *param_1;
            iVar5 = *(int *)(iVar7 + 0x48);
            if (2 < *(uint *)(iVar7 + 0x4c)) {
              iVar5 = *(int *)(iVar7 + 0x44);
            }
            __s = (uint *)((int)__s + iVar5);
          }
        }
        else if (uVar11 != 0x19) {
          if (uVar11 < 0x1a) {
            if (uVar11 != 0x17) {
              if (uVar11 != 0x18) {
                return 0;
              }
              goto LAB_00372e2d;
            }
            goto LAB_00372f38;
          }
          if (uVar11 == 0x20) goto LAB_00372fe0;
          if (uVar11 < 0x20) {
            return 0;
          }
          if (1 < uVar11 - 0x1f01) {
            return 0;
          }
          goto LAB_00372ead;
        }
      }
LAB_00372d80:
      uVar12 = uVar12 + 1;
      iVar5 = *(int *)(param_1[10] + 8);
      puVar10 = __s;
    } while (uVar12 < (uint)(*(int *)(param_1[10] + 0xc) - iVar5 >> 3));
    uVar12 = param_1[2];
    iVar9 = param_1[3];
  }
  uVar11 = (int)__s - iVar8;
  return CONCAT44(((int)uVar11 >> 0x1f) + iVar9 + (uint)CARRY4(uVar11,uVar12),uVar11 + uVar12);
}

