
demangle_component * d_unqualified_name(d_info *di)

{
  int iVar1;
  char *pcVar2;
  char cVar3;
  int iVar4;
  demangle_component *left;
  demangle_component *pdVar5;
  demangle_component *pdVar6;
  long lVar7;
  byte *pbVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  pcVar2 = di->n;
  cVar3 = *pcVar2;
  if ((byte)(cVar3 - 0x30U) < 10) {
    pdVar5 = d_source_name(di);
    cVar3 = *di->n;
    goto joined_r0x002d08a9;
  }
  if ((byte)(cVar3 + 0x9fU) < 0x1a) {
    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {
      di->n = pcVar2 + 2;
    }
    left = d_operator_name(di);
    if (left != (demangle_component *)0x0) {
      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;
      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;
      if (bVar11) {
        pdVar5 = (left->u).s_fixed.length;
        pbVar8 = *(byte **)pdVar5;
        lVar7 = 3;
        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;
        pbVar9 = &DAT_0038f682;
        do {
          if (lVar7 == 0) break;
          lVar7 = lVar7 + -1;
          bVar10 = *pbVar8 < *pbVar9;
          bVar11 = *pbVar8 == *pbVar9;
          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;
          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
        } while (bVar11);
        if ((!bVar10 && !bVar11) == bVar10) {
          pdVar5 = d_source_name(di);
          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);
        }
      }
    }
  }
  else {
    if ((byte)(cVar3 + 0xbdU) < 2) {
      pdVar6 = di->last_name;
      if ((pdVar6 == (demangle_component *)0x0) ||
         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))
         ) {
        if (cVar3 == 'D') {
LAB_002d0a31:
          switch(pcVar2[1]) {
          case '0':
            iVar4 = 1;
            break;
          case '1':
            iVar4 = 2;
            break;
          case '2':
            iVar4 = 3;
            break;
          default:
            goto switchD_002d0a51_caseD_33;
          case '4':
            iVar4 = 4;
            break;
          case '5':
            iVar4 = 5;
          }
          di->n = pcVar2 + 2;
          iVar1 = di->next_comp;
          if (iVar1 < di->num_comps) {
            pdVar5 = di->comps + iVar1;
            pdVar5->d_printing = 0;
            di->next_comp = iVar1 + 1;
            if (pdVar6 != (demangle_component *)0x0) {
              pdVar5->type = DEMANGLE_COMPONENT_DTOR;
              pdVar5->d_printing = 0;
              (pdVar5->u).s_extended_operator.args = iVar4;
              (pdVar5->u).s_extended_operator.name = pdVar6;
              cVar3 = pcVar2[2];
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = pcVar2[2];
          goto LAB_002d0acc;
        }
      }
      else {
        di->expansion = di->expansion + (pdVar6->u).s_name.len;
        cVar3 = *pcVar2;
        if (cVar3 != 'C') {
          if (cVar3 == 'D') goto LAB_002d0a31;
LAB_002d0acc:
          pdVar5 = (demangle_component *)0x0;
          goto joined_r0x002d08a9;
        }
      }
      if (pcVar2[1] == 'I') {
        di->n = pcVar2 + 1;
        cVar3 = pcVar2[2];
        if (4 < (byte)(cVar3 - 0x31U)) {
          cVar3 = pcVar2[1];
          pdVar5 = (demangle_component *)0x0;
          goto joined_r0x002d08a9;
        }
        di->n = pcVar2 + 3;
        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);
        cplus_demangle_type(di);
        pdVar6 = di->last_name;
      }
      else {
        bVar12 = pcVar2[1] - 0x31;
        if (4 < bVar12) {
switchD_002d0a51_caseD_33:
          return (demangle_component *)0x0;
        }
        di->n = pcVar2 + 2;
        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);
      }
      iVar1 = di->next_comp;
      if (iVar1 < di->num_comps) {
        left = di->comps + iVar1;
        left->d_printing = 0;
        di->next_comp = iVar1 + 1;
        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {
          left->type = DEMANGLE_COMPONENT_CTOR;
          left->d_printing = 0;
          (left->u).s_extended_operator.args = iVar4;
          (left->u).s_extended_operator.name = pdVar6;
          goto LAB_002d07c3;
        }
      }
LAB_002d0b88:
      cVar3 = *di->n;
      pdVar5 = (demangle_component *)0x0;
      goto joined_r0x002d08a9;
    }
    if (cVar3 == 'L') {
      di->n = pcVar2 + 1;
      left = d_source_name(di);
      if (left == (demangle_component *)0x0) {
        return (demangle_component *)0x0;
      }
      iVar4 = d_discriminator(di);
      if (iVar4 == 0) {
        return (demangle_component *)0x0;
      }
    }
    else {
      if (cVar3 != 'U') {
        return (demangle_component *)0x0;
      }
      if (pcVar2[1] == 'l') {
        left = (demangle_component *)0x0;
        di->n = pcVar2 + 1;
        cVar3 = pcVar2[1];
        pdVar5 = left;
        if (cVar3 != 'l') goto joined_r0x002d08a9;
        di->n = pcVar2 + 2;
        pdVar6 = d_parmlist(di);
        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;
        cVar3 = *di->n;
        if (cVar3 != 'E') goto joined_r0x002d08a9;
        di->n = di->n + 1;
        iVar4 = d_compact_number(di);
        if (-1 < iVar4) {
          iVar1 = di->next_comp;
          pcVar2 = di->n;
          if (iVar1 < di->num_comps) {
            pdVar5 = di->comps + iVar1;
            pdVar5->d_printing = 0;
            di->next_comp = iVar1 + 1;
            (pdVar5->u).s_name.len = iVar4;
            iVar4 = di->next_sub;
            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;
            (pdVar5->u).s_fixed.length = pdVar6;
            if (iVar4 < di->num_subs) {
              di->subs[iVar4] = pdVar5;
              di->next_sub = iVar4 + 1;
              cVar3 = *pcVar2;
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = *pcVar2;
          pdVar5 = (demangle_component *)0x0;
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
      if (pcVar2[1] != 't') {
        return (demangle_component *)0x0;
      }
      left = (demangle_component *)0x0;
      di->n = pcVar2 + 1;
      cVar3 = pcVar2[1];
      pdVar5 = (demangle_component *)0x0;
      if (cVar3 != 't') goto joined_r0x002d08a9;
      di->n = pcVar2 + 2;
      iVar4 = d_compact_number(di);
      if (-1 < iVar4) {
        iVar1 = di->next_comp;
        if (iVar1 < di->num_comps) {
          pdVar5 = di->comps + iVar1;
          pdVar5->d_printing = 0;
          di->next_comp = iVar1 + 1;
          pcVar2 = di->n;
          *(long *)&pdVar5->u = (long)iVar4;
          iVar4 = di->next_sub;
          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;
          if (iVar4 < di->num_subs) {
            di->subs[iVar4] = pdVar5;
            di->next_sub = iVar4 + 1;
            cVar3 = *pcVar2;
          }
          else {
            cVar3 = *pcVar2;
            pdVar5 = (demangle_component *)0x0;
          }
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
    }
  }
LAB_002d07c3:
  cVar3 = *di->n;
  pdVar5 = left;
joined_r0x002d08a9:
  if (cVar3 == 'B') {
    pdVar5 = d_abi_tags(di,pdVar5);
    return pdVar5;
  }
  return pdVar5;
}



uint * FUN_002d0780(long param_1)

{
  int iVar1;
  char *pcVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  undefined8 uVar8;
  long lVar9;
  int *piVar10;
  byte *pbVar11;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  byte bVar15;
  
  bVar15 = 0;
  pcVar2 = *(char **)(param_1 + 0x18);
  cVar3 = *pcVar2;
  if ((byte)(cVar3 - 0x30U) < 10) {
    puVar7 = (uint *)FUN_002c95a0();
    cVar3 = **(char **)(param_1 + 0x18);
    goto joined_r0x002d08a9;
  }
  if ((byte)(cVar3 + 0x9fU) < 0x1a) {
    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {
      *(char **)(param_1 + 0x18) = pcVar2 + 2;
    }
    puVar6 = (uint *)FUN_002d0510(param_1);
    if (puVar6 != (uint *)0x0) {
      bVar13 = *puVar6 < 0x31;
      bVar14 = *puVar6 == 0x31;
      if (bVar14) {
        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);
        lVar9 = 3;
        *(int *)(param_1 + 0x48) =
             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);
        pbVar12 = &DAT_0038f682;
        do {
          if (lVar9 == 0) break;
          lVar9 = lVar9 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar14 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;
          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;
        } while (bVar14);
        if ((!bVar13 && !bVar14) == bVar13) {
          uVar8 = FUN_002c95a0(param_1);
          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);
        }
      }
    }
  }
  else {
    if ((byte)(cVar3 + 0xbdU) < 2) {
      piVar10 = *(int **)(param_1 + 0x40);
      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {
        if (cVar3 == 'D') {
LAB_002d0a31:
          switch(pcVar2[1]) {
          case '0':
            uVar5 = 1;
            break;
          case '1':
            uVar5 = 2;
            break;
          case '2':
            uVar5 = 3;
            break;
          default:
            goto switchD_002d0a51_caseD_33;
          case '4':
            uVar5 = 4;
            break;
          case '5':
            uVar5 = 5;
          }
          *(char **)(param_1 + 0x18) = pcVar2 + 2;
          iVar4 = *(int *)(param_1 + 0x28);
          if (iVar4 < *(int *)(param_1 + 0x2c)) {
            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
            puVar7[1] = 0;
            *(int *)(param_1 + 0x28) = iVar4 + 1;
            if (piVar10 != (int *)0x0) {
              puVar7[0] = 8;
              puVar7[1] = 0;
              puVar7[2] = uVar5;
              *(int **)(puVar7 + 4) = piVar10;
              cVar3 = pcVar2[2];
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = pcVar2[2];
          goto LAB_002d0acc;
        }
      }
      else {
        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];
        cVar3 = *pcVar2;
        if (cVar3 != 'C') {
          if (cVar3 == 'D') goto LAB_002d0a31;
LAB_002d0acc:
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
      }
      if (pcVar2[1] == 'I') {
        *(char **)(param_1 + 0x18) = pcVar2 + 1;
        cVar3 = pcVar2[2];
        if (4 < (byte)(cVar3 - 0x31U)) {
          cVar3 = pcVar2[1];
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
        *(char **)(param_1 + 0x18) = pcVar2 + 3;
        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);
        FUN_002cfae0(param_1);
        piVar10 = *(int **)(param_1 + 0x40);
      }
      else {
        bVar15 = pcVar2[1] - 0x31;
        if (4 < bVar15) {
switchD_002d0a51_caseD_33:
          return (uint *)0x0;
        }
        *(char **)(param_1 + 0x18) = pcVar2 + 2;
        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);
      }
      iVar4 = *(int *)(param_1 + 0x28);
      if (iVar4 < *(int *)(param_1 + 0x2c)) {
        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
        puVar6[1] = 0;
        *(int *)(param_1 + 0x28) = iVar4 + 1;
        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {
          puVar6[0] = 7;
          puVar6[1] = 0;
          puVar6[2] = uVar5;
          *(int **)(puVar6 + 4) = piVar10;
          goto LAB_002d07c3;
        }
      }
LAB_002d0b88:
      cVar3 = **(char **)(param_1 + 0x18);
      puVar7 = (uint *)0x0;
      goto joined_r0x002d08a9;
    }
    if (cVar3 == 'L') {
      *(char **)(param_1 + 0x18) = pcVar2 + 1;
      puVar6 = (uint *)FUN_002c95a0();
      if (puVar6 == (uint *)0x0) {
        return (uint *)0x0;
      }
      iVar4 = FUN_002c9a30(param_1);
      if (iVar4 == 0) {
        return (uint *)0x0;
      }
    }
    else {
      if (cVar3 != 'U') {
        return (uint *)0x0;
      }
      if (pcVar2[1] == 'l') {
        puVar6 = (uint *)0x0;
        *(char **)(param_1 + 0x18) = pcVar2 + 1;
        cVar3 = pcVar2[1];
        puVar7 = puVar6;
        if (cVar3 != 'l') goto joined_r0x002d08a9;
        *(char **)(param_1 + 0x18) = pcVar2 + 2;
        lVar9 = FUN_002d06a0();
        if (lVar9 == 0) goto LAB_002d07c3;
        cVar3 = **(char **)(param_1 + 0x18);
        if (cVar3 != 'E') goto joined_r0x002d08a9;
        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;
        uVar5 = FUN_002c94e0(param_1);
        if (-1 < (int)uVar5) {
          iVar4 = *(int *)(param_1 + 0x28);
          pcVar2 = *(char **)(param_1 + 0x18);
          if (iVar4 < *(int *)(param_1 + 0x2c)) {
            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
            puVar7[1] = 0;
            *(int *)(param_1 + 0x28) = iVar4 + 1;
            puVar7[4] = uVar5;
            iVar4 = *(int *)(param_1 + 0x38);
            *puVar7 = 0x45;
            *(long *)(puVar7 + 2) = lVar9;
            if (iVar4 < *(int *)(param_1 + 0x3c)) {
              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;
              *(int *)(param_1 + 0x38) = iVar4 + 1;
              cVar3 = *pcVar2;
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = *pcVar2;
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
      if (pcVar2[1] != 't') {
        return (uint *)0x0;
      }
      puVar6 = (uint *)0x0;
      *(char **)(param_1 + 0x18) = pcVar2 + 1;
      cVar3 = pcVar2[1];
      puVar7 = (uint *)0x0;
      if (cVar3 != 't') goto joined_r0x002d08a9;
      *(char **)(param_1 + 0x18) = pcVar2 + 2;
      iVar4 = FUN_002c94e0();
      if (-1 < iVar4) {
        iVar1 = *(int *)(param_1 + 0x28);
        if (iVar1 < *(int *)(param_1 + 0x2c)) {
          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);
          puVar7[1] = 0;
          *(int *)(param_1 + 0x28) = iVar1 + 1;
          pcVar2 = *(char **)(param_1 + 0x18);
          *(long *)(puVar7 + 2) = (long)iVar4;
          iVar4 = *(int *)(param_1 + 0x38);
          *puVar7 = 0x47;
          if (iVar4 < *(int *)(param_1 + 0x3c)) {
            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;
            *(int *)(param_1 + 0x38) = iVar4 + 1;
            cVar3 = *pcVar2;
          }
          else {
            cVar3 = *pcVar2;
            puVar7 = (uint *)0x0;
          }
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
    }
  }
LAB_002d07c3:
  cVar3 = **(char **)(param_1 + 0x18);
  puVar7 = puVar6;
joined_r0x002d08a9:
  if (cVar3 == 'B') {
    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);
    return puVar7;
  }
  return puVar7;
}


PUSH R12
PUSH RBP
PUSH RBX
MOV RCX,qword ptr [RDI + 0x18]
MOV RBX,RDI
MOVZX EAX,byte ptr [RCX]
LEA EDX,[RAX + -0x30]
CMP DL,0x9
JBE 0x002d0898
LEA EDX,[RAX + -0x61]
CMP DL,0x19
JA 0x002d07e0
CMP AL,0x6f
JZ 0x002d0950
MOV RDI,RBX
CALL 0x002d0510
MOV RBP,RAX
TEST RAX,RAX
JZ 0x002d07c3
CMP dword ptr [RAX],0x31
JZ 0x002d08c0
MOV RAX,qword ptr [RBX + 0x18]
MOVZX EAX,byte ptr [RAX]
CMP AL,0x42
JZ 0x002d08af
MOV RAX,RBP
POP RBX
POP RBP
POP R12
RET
LEA EDX,[RAX + -0x43]
CMP DL,0x1
JBE 0x002d0970
CMP AL,0x4c
JZ 0x002d0918
CMP AL,0x55
JNZ 0x002d093d
MOVZX EAX,byte ptr [RCX + 0x1]
CMP AL,0x6c
JZ 0x002d0ad8
CMP AL,0x74
JNZ 0x002d093d
LEA RAX,[RCX + 0x1]
XOR EBP,EBP
MOV qword ptr [RDI + 0x18],RAX
MOVZX EAX,byte ptr [RCX + 0x1]
CMP AL,0x74
JNZ 0x002d07ca
ADD RCX,0x2
MOV qword ptr [RDI + 0x18],RCX
CALL 0x002c94e0
TEST EAX,EAX
JS 0x002d07c3
MOV EDX,dword ptr [RBX + 0x28]
CMP EDX,dword ptr [RBX + 0x2c]
JGE 0x002d0b88
MOVSXD RCX,EDX
CDQE
ADD EDX,0x1
LEA RSI,[RCX + RCX*0x2]
MOV RCX,qword ptr [RBX + 0x20]
LEA RBP,[RCX + RSI*0x8]
MOV dword ptr [RBP + 0x4],0x0
MOV dword ptr [RBX + 0x28],EDX
MOV RDX,qword ptr [RBX + 0x18]
MOV qword ptr [RBP + 0x8],RAX
MOV EAX,dword ptr [RBX + 0x38]
MOV dword ptr [RBP],0x47
CMP EAX,dword ptr [RBX + 0x3c]
JGE 0x002d0bd0
MOV RCX,qword ptr [RBX + 0x30]
MOVSXD RSI,EAX
ADD EAX,0x1
MOV qword ptr [RCX + RSI*0x8],RBP
MOV dword ptr [RBX + 0x38],EAX
MOVZX EAX,byte ptr [RDX]
JMP 0x002d07ca
CALL 0x002c95a0
MOV RBP,RAX
MOV RAX,qword ptr [RBX + 0x18]
MOVZX EAX,byte ptr [RAX]
CMP AL,0x42
JNZ 0x002d07d2
MOV RSI,RBP
MOV RDI,RBX
POP RBX
POP RBP
POP R12
JMP 0x002c9700
MOV RAX,qword ptr [RAX + 0x8]
MOV ECX,dword ptr [RBX + 0x48]
LEA RDI,[0x38f682]
MOV EDX,dword ptr [RAX + 0x10]
MOV RSI,qword ptr [RAX]
LEA EDX,[RCX + RDX*0x1 + 0x7]
MOV ECX,0x3
MOV dword ptr [RBX + 0x48],EDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x002d07c3
MOV RDI,RBX
CALL 0x002c95a0
MOV RDX,RBP
MOV ESI,0x36
MOV RDI,RBX
MOV RCX,RAX
CALL 0x002c91c0
MOV RBP,RAX
JMP 0x002d07c3
ADD RCX,0x1
MOV qword ptr [RDI + 0x18],RCX
CALL 0x002c95a0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x002d093d
MOV RDI,RBX
CALL 0x002c9a30
TEST EAX,EAX
JNZ 0x002d07c3
XOR EBP,EBP
POP RBX
MOV RAX,RBP
POP RBP
POP R12
RET
CMP byte ptr [RCX + 0x1],0x6e
JNZ 0x002d07aa
ADD RCX,0x2
MOV qword ptr [RDI + 0x18],RCX
JMP 0x002d07aa
MOV RDX,qword ptr [RDI + 0x40]
TEST RDX,RDX
JZ 0x002d098c
MOV ESI,dword ptr [RDX]
TEST ESI,ESI
JZ 0x002d0a18
CMP ESI,0x18
JZ 0x002d0a18
CMP AL,0x44
JZ 0x002d0a31
MOVZX EAX,byte ptr [RCX + 0x1]
CMP AL,0x49
JZ 0x002d0b96
SUB EAX,0x31
CMP AL,0x4
JA 0x002d093d
ADD RCX,0x2
MOVZX EAX,AL
LEA RSI,[0x38f450]
MOV qword ptr [RBX + 0x18],RCX
MOV R12D,dword ptr [RSI + RAX*0x4]
MOV EAX,dword ptr [RBX + 0x28]
CMP EAX,dword ptr [RBX + 0x2c]
JGE 0x002d0b88
MOVSXD RCX,EAX
ADD EAX,0x1
LEA RSI,[RCX + RCX*0x2]
MOV RCX,qword ptr [RBX + 0x20]
LEA RBP,[RCX + RSI*0x8]
MOV dword ptr [RBP + 0x4],0x0
MOV dword ptr [RBX + 0x28],EAX
TEST RDX,RDX
JZ 0x002d0b88
LEA EAX,[R12 + -0x1]
CMP EAX,0x4
JA 0x002d0b88
MOV qword ptr [RBP],0x7
MOV dword ptr [RBP + 0x8],R12D
MOV qword ptr [RBP + 0x10],RDX
JMP 0x002d07c3
MOV EAX,dword ptr [RDX + 0x10]
ADD dword ptr [RBX + 0x48],EAX
MOVZX EAX,byte ptr [RCX]
CMP AL,0x43
JZ 0x002d0994
CMP AL,0x44
JNZ 0x002d0acc
MOVZX EAX,byte ptr [RCX + 0x1]
SUB EAX,0x30
CMP AL,0x5
JA 0x002d093d
LEA RSI,[0x38f278]
MOVZX EAX,AL
MOVSXD RAX,dword ptr [RSI + RAX*0x4]
ADD RAX,RSI
JMP RAX
MOV R8D,0x1
LEA RAX,[RCX + 0x2]
MOV qword ptr [RBX + 0x18],RAX
MOV EAX,dword ptr [RBX + 0x28]
CMP EAX,dword ptr [RBX + 0x2c]
JGE 0x002d0ac8
MOVSXD RSI,EAX
ADD EAX,0x1
LEA RDI,[RSI + RSI*0x2]
MOV RSI,qword ptr [RBX + 0x20]
LEA RBP,[RSI + RDI*0x8]
MOV dword ptr [RBP + 0x4],0x0
MOV dword ptr [RBX + 0x28],EAX
TEST RDX,RDX
JZ 0x002d0ac8
MOV qword ptr [RBP],0x8
MOV dword ptr [RBP + 0x8],R8D
MOV qword ptr [RBP + 0x10],RDX
MOVZX EAX,byte ptr [RCX + 0x2]
JMP 0x002d07ca
MOV R8D,0x4
JMP 0x002d0a59
MOV R8D,0x5
JMP 0x002d0a59
MOV R8D,0x2
JMP 0x002d0a59
MOV R8D,0x3
JMP 0x002d0a59
MOVZX EAX,byte ptr [RCX + 0x2]
XOR EBP,EBP
JMP 0x002d07ca
LEA RAX,[RCX + 0x1]
XOR EBP,EBP
MOV qword ptr [RDI + 0x18],RAX
MOVZX EAX,byte ptr [RCX + 0x1]
CMP AL,0x6c
JNZ 0x002d07ca
ADD RCX,0x2
MOV qword ptr [RDI + 0x18],RCX
CALL 0x002d06a0
MOV R12,RAX
TEST RAX,RAX
JZ 0x002d07c3
MOV RDX,qword ptr [RBX + 0x18]
MOVZX EAX,byte ptr [RDX]
CMP AL,0x45
JNZ 0x002d07ca
ADD RDX,0x1
MOV RDI,RBX
MOV qword ptr [RBX + 0x18],RDX
CALL 0x002c94e0
TEST EAX,EAX
JS 0x002d0b88
MOV EDX,dword ptr [RBX + 0x28]
MOV RSI,qword ptr [RBX + 0x18]
CMP EDX,dword ptr [RBX + 0x2c]
JGE 0x002d0bda
MOVSXD RCX,EDX
ADD EDX,0x1
LEA RDI,[RCX + RCX*0x2]
MOV RCX,qword ptr [RBX + 0x20]
LEA RBP,[RCX + RDI*0x8]
MOV dword ptr [RBP + 0x4],0x0
MOV dword ptr [RBX + 0x28],EDX
MOV dword ptr [RBP + 0x10],EAX
MOV EAX,dword ptr [RBX + 0x38]
MOV dword ptr [RBP],0x45
MOV qword ptr [RBP + 0x8],R12
CMP EAX,dword ptr [RBX + 0x3c]
JGE 0x002d0bda
MOV RDX,qword ptr [RBX + 0x30]
MOVSXD RCX,EAX
ADD EAX,0x1
MOV qword ptr [RDX + RCX*0x8],RBP
MOV dword ptr [RBX + 0x38],EAX
MOVZX EAX,byte ptr [RSI]
JMP 0x002d07ca
MOV RAX,qword ptr [RBX + 0x18]
XOR EBP,EBP
MOVZX EAX,byte ptr [RAX]
JMP 0x002d07ca
LEA RAX,[RCX + 0x1]
MOV qword ptr [RBX + 0x18],RAX
MOVZX EAX,byte ptr [RCX + 0x2]
SUB EAX,0x31
CMP AL,0x4
JA 0x002d0be4
ADD RCX,0x3
LEA RDX,[0x38f450]
MOVZX EAX,AL
MOV RDI,RBX
MOV qword ptr [RBX + 0x18],RCX
MOV R12D,dword ptr [RDX + RAX*0x4]
CALL 0x002cfae0
MOV RDX,qword ptr [RBX + 0x40]
JMP 0x002d09bd
MOVZX EAX,byte ptr [RDX]
XOR EBP,EBP
JMP 0x002d07ca
MOVZX EAX,byte ptr [RSI]
XOR EBP,EBP
JMP 0x002d07ca
MOVZX EAX,byte ptr [RCX + 0x1]
XOR EBP,EBP
JMP 0x002d07ca
(translation_unit "uint * FUN_002d0780(long param_1)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}\n\n" (function_definition "uint * FUN_002d0780(long param_1)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" type_identifier (pointer_declarator "* FUN_002d0780(long param_1)" * (function_declarator "FUN_002d0780(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" if (parenthesized_expression "((byte)(cVar3 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar3 - 0x30U) < 10" (call_expression "(byte)(cVar3 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x30U)" ( (binary_expression "cVar3 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" { (expression_statement "puVar7 = (uint *)FUN_002c95a0();" (assignment_expression "puVar7 = (uint *)FUN_002c95a0()" identifier = (cast_expression "(uint *)FUN_002c95a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c95a0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar3 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar3 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar3 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0x9fU)" ( (binary_expression "cVar3 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar3 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar3 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar3 == 'o')" ( (binary_expression "cVar3 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "puVar6 = (uint *)FUN_002d0510(param_1);" (assignment_expression "puVar6 = (uint *)FUN_002d0510(param_1)" identifier = (cast_expression "(uint *)FUN_002d0510(param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d0510(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" { (expression_statement "bVar13 = *puVar6 < 0x31;" (assignment_expression "bVar13 = *puVar6 < 0x31" identifier = (binary_expression "*puVar6 < 0x31" (pointer_expression "*puVar6" * identifier) < number_literal)) ;) (expression_statement "bVar14 = *puVar6 == 0x31;" (assignment_expression "bVar14 = *puVar6 == 0x31" identifier = (binary_expression "*puVar6 == 0x31" (pointer_expression "*puVar6" * identifier) == number_literal)) ;) (if_statement "if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" { (expression_statement "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);" (assignment_expression "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2)" identifier = (cast_expression "(byte *)**(undefined8 **)(puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(puVar6 + 2)" * (pointer_expression "*(undefined8 **)(puVar6 + 2)" * (cast_expression "(undefined8 **)(puVar6 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) ))))))) ;) (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);" (assignment_expression "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (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" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (binary_expression "*(int *)(param_1 + 0x48) + 7" (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" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(*(undefined8 **)(puVar6 + 2) + 2)" * (cast_expression "(int *)(*(undefined8 **)(puVar6 + 2) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(puVar6 + 2) + 2)" ( (binary_expression "*(undefined8 **)(puVar6 + 2) + 2" (pointer_expression "*(undefined8 **)(puVar6 + 2)" * (cast_expression "(undefined8 **)(puVar6 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "pbVar12 = &DAT_0038f682;" (assignment_expression "pbVar12 = &DAT_0038f682" identifier = (pointer_expression "&DAT_0038f682" & identifier)) ;) (do_statement "do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);" do (compound_statement "{\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" if (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" ( (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" { (expression_statement "uVar8 = FUN_002c95a0(param_1);" (assignment_expression "uVar8 = FUN_002c95a0(param_1)" identifier = (call_expression "FUN_002c95a0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);" (assignment_expression "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" identifier = (cast_expression "(uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c91c0(param_1,0x36,puVar6,uVar8)" identifier (argument_list "(param_1,0x36,puVar6,uVar8)" ( identifier , number_literal , identifier , identifier ))))) ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" if (parenthesized_expression "((byte)(cVar3 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar3 + 0xbdU) < 2" (call_expression "(byte)(cVar3 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0xbdU)" ( (binary_expression "cVar3 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" { (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" if (parenthesized_expression "((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18))))" ( (binary_expression "(piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))" (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*piVar10 != 0 && (*piVar10 != 0x18)))" ( (parenthesized_expression "(*piVar10 != 0 && (*piVar10 != 0x18))" ( (binary_expression "*piVar10 != 0 && (*piVar10 != 0x18)" (binary_expression "*piVar10 != 0" (pointer_expression "*piVar10" * identifier) != number_literal) && (parenthesized_expression "(*piVar10 != 0x18)" ( (binary_expression "*piVar10 != 0x18" (pointer_expression "*piVar10" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }" { (if_statement "if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (compound_statement "{\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" { (labeled_statement "LAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" statement_identifier : (switch_statement "switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" { (case_statement "case '0':\n            uVar5 = 1;\n            break;" case (char_literal "'0'" ' character ') : (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '1':\n            uVar5 = 2;\n            break;" case (char_literal "'1'" ' character ') : (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '2':\n            uVar5 = 3;\n            break;" case (char_literal "'2'" ' character ') : (expression_statement "uVar5 = 3;" (assignment_expression "uVar5 = 3" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n            goto switchD_002d0a51_caseD_33;" default : (goto_statement "goto switchD_002d0a51_caseD_33;" goto statement_identifier ;)) (case_statement "case '4':\n            uVar5 = 4;\n            break;" case (char_literal "'4'" ' character ') : (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '5':\n            uVar5 = 5;" case (char_literal "'5'" ' character ') : (expression_statement "uVar5 = 5;" (assignment_expression "uVar5 = 5" identifier = number_literal) ;)) }))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "puVar7[0] = 8;" (assignment_expression "puVar7[0] = 8" (subscript_expression "puVar7[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = uVar5;" (assignment_expression "puVar7[2] = uVar5" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar7 + 4) = piVar10;" (assignment_expression "*(int **)(puVar7 + 4) = piVar10" (pointer_expression "*(int **)(puVar7 + 4)" * (cast_expression "(int **)(puVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 4)" ( (binary_expression "puVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d0acc;" goto statement_identifier ;) })) }) (else_clause "else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" else (compound_statement "{\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" { (expression_statement "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];" (assignment_expression "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4]" (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" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x48) + piVar10[4]" (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" identifier + number_literal) )))) + (subscript_expression "piVar10[4]" identifier [ number_literal ]))) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(cVar3 != 'C')" ( (binary_expression "cVar3 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (if_statement "if (cVar3 == 'D') goto LAB_002d0a31;" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_002d0a31;" goto statement_identifier ;)) (labeled_statement "LAB_002d0acc:\n          puVar7 = (uint *)0x0;" statement_identifier : (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(4 < (byte)(cVar3 - 0x31U))" ( (binary_expression "4 < (byte)(cVar3 - 0x31U)" number_literal < (call_expression "(byte)(cVar3 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 3;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" identifier = (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" * (cast_expression "(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (binary_expression "&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4" (pointer_expression "&DAT_0038f450" & identifier) + (binary_expression "(ulong)(byte)(cVar3 - 0x31U) * 4" (call_expression "(ulong)(byte)(cVar3 - 0x31U)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "FUN_002cfae0(param_1);" (call_expression "FUN_002cfae0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" else (compound_statement "{\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" { (expression_statement "bVar15 = pcVar2[1] - 0x31;" (assignment_expression "bVar15 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(4 < bVar15)" ( (binary_expression "4 < bVar15" number_literal < identifier) )) (compound_statement "{\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" { (labeled_statement "switchD_002d0a51_caseD_33:\n          return (uint *)0x0;" statement_identifier : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" identifier = (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" * (cast_expression "(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0038f450 + (ulong)bVar15 * 4)" ( (binary_expression "&DAT_0038f450 + (ulong)bVar15 * 4" (pointer_expression "&DAT_0038f450" & identifier) + (binary_expression "(ulong)bVar15 * 4" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" { (expression_statement "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" if (parenthesized_expression "((piVar10 != (int *)0x0) && (uVar5 - 1 < 5))" ( (binary_expression "(piVar10 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar5 - 1 < 5)" ( (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" { (expression_statement "puVar6[0] = 7;" (assignment_expression "puVar6[0] = 7" (subscript_expression "puVar6[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = uVar5;" (assignment_expression "puVar6[2] = uVar5" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar6 + 4) = piVar10;" (assignment_expression "*(int **)(puVar6 + 4) = piVar10" (pointer_expression "*(int **)(puVar6 + 4)" * (cast_expression "(int **)(puVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;) })) })) (labeled_statement "LAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);" statement_identifier : (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" if (parenthesized_expression "(cVar3 == 'L')" ( (binary_expression "cVar3 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)FUN_002c95a0();" (assignment_expression "puVar6 = (uint *)FUN_002c95a0()" identifier = (cast_expression "(uint *)FUN_002c95a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c95a0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(puVar6 == (uint *)0x0)" ( (binary_expression "puVar6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar4 = FUN_002c9a30(param_1);" (assignment_expression "iVar4 = FUN_002c9a30(param_1)" identifier = (call_expression "FUN_002c9a30(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" else (compound_statement "{\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" { (if_statement "if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(cVar3 != 'U')" ( (binary_expression "cVar3 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (if_statement "if (cVar3 != 'l') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'l')" ( (binary_expression "cVar3 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "lVar9 = FUN_002d06a0();" (assignment_expression "lVar9 = FUN_002d06a0()" identifier = (call_expression "FUN_002d06a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (lVar9 == 0) goto LAB_002d07c3;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;)) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;) (if_statement "if (cVar3 != 'E') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'E')" ( (binary_expression "cVar3 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "*(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar5 = FUN_002c94e0(param_1);" (assignment_expression "uVar5 = FUN_002c94e0(param_1)" identifier = (call_expression "FUN_002c94e0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[4] = uVar5;" (assignment_expression "puVar7[4] = uVar5" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar7 = 0x45;" (assignment_expression "*puVar7 = 0x45" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "*(long *)(puVar7 + 2) = lVar9;" (assignment_expression "*(long *)(puVar7 + 2) = lVar9" (pointer_expression "*(long *)(puVar7 + 2)" * (cast_expression "(long *)(puVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 2)" ( (binary_expression "puVar7 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" identifier < (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )) (compound_statement "{\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" * (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) (if_statement "if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (cVar3 != 't') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 't')" ( (binary_expression "cVar3 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_002c94e0();" (assignment_expression "iVar4 = FUN_002c94e0()" identifier = (call_expression "FUN_002c94e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar1 * 0x18" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(puVar7 + 2) = (long)iVar4;" (assignment_expression "*(long *)(puVar7 + 2) = (long)iVar4" (pointer_expression "*(long *)(puVar7 + 2)" * (cast_expression "(long *)(puVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 2)" ( (binary_expression "puVar7 + 2" identifier + number_literal) )))) = (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar7 = 0x47;" (assignment_expression "*puVar7 = 0x47" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" identifier < (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )) (compound_statement "{\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }" { (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" * (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" else (compound_statement "{\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" { (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);" statement_identifier : (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;)) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (labeled_statement "joined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" statement_identifier : (if_statement "if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" if (parenthesized_expression "(cVar3 == 'B')" ( (binary_expression "cVar3 == 'B'" identifier == (char_literal "'B'" ' character ')) )) (compound_statement "{\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" { (expression_statement "puVar7 = (uint *)FUN_002c9700(param_1,puVar7);" (assignment_expression "puVar7 = (uint *)FUN_002c9700(param_1,puVar7)" identifier = (cast_expression "(uint *)FUN_002c9700(param_1,puVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c9700(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier ))))) ;) (return_statement "return puVar7;" return identifier ;) }))) (return_statement "return puVar7;" return identifier ;) })))
(translation_unit "demangle_component * d_unqualified_name(d_info *di)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  demangle_component *left;\n  demangle_component *pdVar5;\n  demangle_component *pdVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  pcVar2 = di->n;\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    pdVar5 = d_source_name(di);\n    cVar3 = *di->n;\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }\n    left = d_operator_name(di);\n    if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = *di->n;\n  pdVar5 = left;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }\n  return pdVar5;\n}\n\n" (function_definition "demangle_component * d_unqualified_name(d_info *di)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  demangle_component *left;\n  demangle_component *pdVar5;\n  demangle_component *pdVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  pcVar2 = di->n;\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    pdVar5 = d_source_name(di);\n    cVar3 = *di->n;\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }\n    left = d_operator_name(di);\n    if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = *di->n;\n  pdVar5 = left;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }\n  return pdVar5;\n}" type_identifier (pointer_declarator "* d_unqualified_name(d_info *di)" * (function_declarator "d_unqualified_name(d_info *di)" identifier (parameter_list "(d_info *di)" ( (parameter_declaration "d_info *di" type_identifier (pointer_declarator "*di" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  demangle_component *left;\n  demangle_component *pdVar5;\n  demangle_component *pdVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  pcVar2 = di->n;\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    pdVar5 = d_source_name(di);\n    cVar3 = *di->n;\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }\n    left = d_operator_name(di);\n    if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = *di->n;\n  pdVar5 = left;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }\n  return pdVar5;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "demangle_component *left;" type_identifier (pointer_declarator "*left" * identifier) ;) (declaration "demangle_component *pdVar5;" type_identifier (pointer_declarator "*pdVar5" * identifier) ;) (declaration "demangle_component *pdVar6;" type_identifier (pointer_declarator "*pdVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = di->n;" (assignment_expression "pcVar2 = di->n" identifier = (field_expression "di->n" identifier -> field_identifier)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar3 - 0x30U) < 10) {\n    pdVar5 = d_source_name(di);\n    cVar3 = *di->n;\n    goto joined_r0x002d08a9;\n  }" if (parenthesized_expression "((byte)(cVar3 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar3 - 0x30U) < 10" (call_expression "(byte)(cVar3 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x30U)" ( (binary_expression "cVar3 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    pdVar5 = d_source_name(di);\n    cVar3 = *di->n;\n    goto joined_r0x002d08a9;\n  }" { (expression_statement "pdVar5 = d_source_name(di);" (assignment_expression "pdVar5 = d_source_name(di)" identifier = (call_expression "d_source_name(di)" identifier (argument_list "(di)" ( identifier )))) ;) (expression_statement "cVar3 = *di->n;" (assignment_expression "cVar3 = *di->n" identifier = (pointer_expression "*di->n" * (field_expression "di->n" identifier -> field_identifier))) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }\n    left = d_operator_name(di);\n    if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar3 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar3 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar3 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0x9fU)" ( (binary_expression "cVar3 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }\n    left = d_operator_name(di);\n    if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      di->n = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar3 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar3 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar3 == 'o')" ( (binary_expression "cVar3 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      di->n = pcVar2 + 2;\n    }" { (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "left = d_operator_name(di);" (assignment_expression "left = d_operator_name(di)" identifier = (call_expression "d_operator_name(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (left != (demangle_component *)0x0) {\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }" if (parenthesized_expression "(left != (demangle_component *)0x0)" ( (binary_expression "left != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;\n      bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;\n      if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }\n    }" { (expression_statement "bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR;" (assignment_expression "bVar10 = left->type < DEMANGLE_COMPONENT_OPERATOR" identifier = (binary_expression "left->type < DEMANGLE_COMPONENT_OPERATOR" (field_expression "left->type" identifier -> field_identifier) < identifier)) ;) (expression_statement "bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR;" (assignment_expression "bVar11 = left->type == DEMANGLE_COMPONENT_OPERATOR" identifier = (binary_expression "left->type == DEMANGLE_COMPONENT_OPERATOR" (field_expression "left->type" identifier -> field_identifier) == identifier)) ;) (if_statement "if (bVar11) {\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n        pdVar5 = (left->u).s_fixed.length;\n        pbVar8 = *(byte **)pdVar5;\n        lVar7 = 3;\n        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;\n        pbVar9 = &DAT_0038f682;\n        do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);\n        if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }\n      }" { (expression_statement "pdVar5 = (left->u).s_fixed.length;" (assignment_expression "pdVar5 = (left->u).s_fixed.length" identifier = (field_expression "(left->u).s_fixed.length" (field_expression "(left->u).s_fixed" (parenthesized_expression "(left->u)" ( (field_expression "left->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pbVar8 = *(byte **)pdVar5;" (assignment_expression "pbVar8 = *(byte **)pdVar5" identifier = (pointer_expression "*(byte **)pdVar5" * (cast_expression "(byte **)pdVar5" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "lVar7 = 3;" (assignment_expression "lVar7 = 3" identifier = number_literal) ;) (expression_statement "di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;" (assignment_expression "di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len" (field_expression "di->expansion" identifier -> field_identifier) = (binary_expression "di->expansion + 7 + (pdVar5->u).s_name.len" (binary_expression "di->expansion + 7" (field_expression "di->expansion" identifier -> field_identifier) + number_literal) + (field_expression "(pdVar5->u).s_name.len" (field_expression "(pdVar5->u).s_name" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "pbVar9 = &DAT_0038f682;" (assignment_expression "pbVar9 = &DAT_0038f682" identifier = (pointer_expression "&DAT_0038f682" & identifier)) ;) (do_statement "do {\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        } while (bVar11);" do (compound_statement "{\n          if (lVar7 == 0) break;\n          lVar7 = lVar7 + -1;\n          bVar10 = *pbVar8 < *pbVar9;\n          bVar11 = *pbVar8 == *pbVar9;\n          pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n        }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar8 < *pbVar9;" (assignment_expression "bVar10 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar8 == *pbVar9;" (assignment_expression "bVar11 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) == bVar10) {\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }" if (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" ( (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n          pdVar5 = d_source_name(di);\n          left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);\n        }" { (expression_statement "pdVar5 = d_source_name(di);" (assignment_expression "pdVar5 = d_source_name(di)" identifier = (call_expression "d_source_name(di)" identifier (argument_list "(di)" ( identifier )))) ;) (expression_statement "left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5);" (assignment_expression "left = d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5)" identifier = (call_expression "d_make_comp(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5)" identifier (argument_list "(di,DEMANGLE_COMPONENT_UNARY,left,pdVar5)" ( identifier , identifier , identifier , identifier )))) ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar3 + 0xbdU) < 2) {\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }" if (parenthesized_expression "((byte)(cVar3 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar3 + 0xbdU) < 2" (call_expression "(byte)(cVar3 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0xbdU)" ( (binary_expression "cVar3 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      pdVar6 = di->last_name;\n      if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }\n      iVar1 = di->next_comp;\n      if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = *di->n;\n      pdVar5 = (demangle_component *)0x0;\n      goto joined_r0x002d08a9;\n    }" { (expression_statement "pdVar6 = di->last_name;" (assignment_expression "pdVar6 = di->last_name" identifier = (field_expression "di->last_name" identifier -> field_identifier)) ;) (if_statement "if ((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         ) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" if (parenthesized_expression "((pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))\n         )" ( (binary_expression "(pdVar6 == (demangle_component *)0x0) ||\n         ((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))" (parenthesized_expression "(pdVar6 == (demangle_component *)0x0)" ( (binary_expression "pdVar6 == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)))" ( (parenthesized_expression "(pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD))" ( (binary_expression "pdVar6->type != DEMANGLE_COMPONENT_NAME && (pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)" (binary_expression "pdVar6->type != DEMANGLE_COMPONENT_NAME" (field_expression "pdVar6->type" identifier -> field_identifier) != identifier) && (parenthesized_expression "(pdVar6->type != DEMANGLE_COMPONENT_SUB_STD)" ( (binary_expression "pdVar6->type != DEMANGLE_COMPONENT_SUB_STD" (field_expression "pdVar6->type" identifier -> field_identifier) != identifier) ))) )) ))) )) (compound_statement "{\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }" { (if_statement "if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (compound_statement "{\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }\n          di->n = pcVar2 + 2;\n          iVar1 = di->next_comp;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" { (labeled_statement "LAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }" statement_identifier : (switch_statement "switch(pcVar2[1]) {\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n          case '0':\n            iVar4 = 1;\n            break;\n          case '1':\n            iVar4 = 2;\n            break;\n          case '2':\n            iVar4 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            iVar4 = 4;\n            break;\n          case '5':\n            iVar4 = 5;\n          }" { (case_statement "case '0':\n            iVar4 = 1;\n            break;" case (char_literal "'0'" ' character ') : (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '1':\n            iVar4 = 2;\n            break;" case (char_literal "'1'" ' character ') : (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '2':\n            iVar4 = 3;\n            break;" case (char_literal "'2'" ' character ') : (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n            goto switchD_002d0a51_caseD_33;" default : (goto_statement "goto switchD_002d0a51_caseD_33;" goto statement_identifier ;)) (case_statement "case '4':\n            iVar4 = 4;\n            break;" case (char_literal "'4'" ' character ') : (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '5':\n            iVar4 = 5;" case (char_literal "'5'" ' character ') : (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;)) }))) (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar1 = di->next_comp;" (assignment_expression "iVar1 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (if_statement "if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar1 < di->num_comps)" ( (binary_expression "iVar1 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "pdVar5 = di->comps + iVar1;" (assignment_expression "pdVar5 = di->comps + iVar1" identifier = (binary_expression "di->comps + iVar1" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "pdVar5->d_printing = 0;" (assignment_expression "pdVar5->d_printing = 0" (field_expression "pdVar5->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar1 + 1;" (assignment_expression "di->next_comp = iVar1 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (if_statement "if (pdVar6 != (demangle_component *)0x0) {\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(pdVar6 != (demangle_component *)0x0)" ( (binary_expression "pdVar6 != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pdVar5->type = DEMANGLE_COMPONENT_DTOR;\n              pdVar5->d_printing = 0;\n              (pdVar5->u).s_extended_operator.args = iVar4;\n              (pdVar5->u).s_extended_operator.name = pdVar6;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "pdVar5->type = DEMANGLE_COMPONENT_DTOR;" (assignment_expression "pdVar5->type = DEMANGLE_COMPONENT_DTOR" (field_expression "pdVar5->type" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar5->d_printing = 0;" (assignment_expression "pdVar5->d_printing = 0" (field_expression "pdVar5->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pdVar5->u).s_extended_operator.args = iVar4;" (assignment_expression "(pdVar5->u).s_extended_operator.args = iVar4" (field_expression "(pdVar5->u).s_extended_operator.args" (field_expression "(pdVar5->u).s_extended_operator" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pdVar5->u).s_extended_operator.name = pdVar6;" (assignment_expression "(pdVar5->u).s_extended_operator.name = pdVar6" (field_expression "(pdVar5->u).s_extended_operator.name" (field_expression "(pdVar5->u).s_extended_operator" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d0acc;" goto statement_identifier ;) })) }) (else_clause "else {\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" else (compound_statement "{\n        di->expansion = di->expansion + (pdVar6->u).s_name.len;\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" { (expression_statement "di->expansion = di->expansion + (pdVar6->u).s_name.len;" (assignment_expression "di->expansion = di->expansion + (pdVar6->u).s_name.len" (field_expression "di->expansion" identifier -> field_identifier) = (binary_expression "di->expansion + (pdVar6->u).s_name.len" (field_expression "di->expansion" identifier -> field_identifier) + (field_expression "(pdVar6->u).s_name.len" (field_expression "(pdVar6->u).s_name" (parenthesized_expression "(pdVar6->u)" ( (field_expression "pdVar6->u" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(cVar3 != 'C')" ( (binary_expression "cVar3 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (if_statement "if (cVar3 == 'D') goto LAB_002d0a31;" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_002d0a31;" goto statement_identifier ;)) (labeled_statement "LAB_002d0acc:\n          pdVar5 = (demangle_component *)0x0;" statement_identifier : (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }\n      else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        di->n = pcVar2 + 3;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        cplus_demangle_type(di);\n        pdVar6 = di->last_name;\n      }" { (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(4 < (byte)(cVar3 - 0x31U))" ( (binary_expression "4 < (byte)(cVar3 - 0x31U)" number_literal < (call_expression "(byte)(cVar3 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar3 = pcVar2[1];\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (expression_statement "di->n = pcVar2 + 3;" (assignment_expression "di->n = pcVar2 + 3" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4);" (assignment_expression "iVar4 = *(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4)" identifier = (pointer_expression "*(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4)" * (cast_expression "(int *)(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (binary_expression "CSWTCH_131 + (ulong)(byte)(cVar3 - 0x31U) * 4" identifier + (binary_expression "(ulong)(byte)(cVar3 - 0x31U) * 4" (call_expression "(ulong)(byte)(cVar3 - 0x31U)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "cplus_demangle_type(di);" (call_expression "cplus_demangle_type(di)" identifier (argument_list "(di)" ( identifier ))) ;) (expression_statement "pdVar6 = di->last_name;" (assignment_expression "pdVar6 = di->last_name" identifier = (field_expression "di->last_name" identifier -> field_identifier)) ;) }) (else_clause "else {\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }" else (compound_statement "{\n        bVar12 = pcVar2[1] - 0x31;\n        if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }\n        di->n = pcVar2 + 2;\n        iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);\n      }" { (expression_statement "bVar12 = pcVar2[1] - 0x31;" (assignment_expression "bVar12 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar12) {\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }" if (parenthesized_expression "(4 < bVar12)" ( (binary_expression "4 < bVar12" number_literal < identifier) )) (compound_statement "{\nswitchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;\n        }" { (labeled_statement "switchD_002d0a51_caseD_33:\n          return (demangle_component *)0x0;" statement_identifier : (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) })) (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4);" (assignment_expression "iVar4 = *(int *)(CSWTCH_131 + (ulong)bVar12 * 4)" identifier = (pointer_expression "*(int *)(CSWTCH_131 + (ulong)bVar12 * 4)" * (cast_expression "(int *)(CSWTCH_131 + (ulong)bVar12 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_131 + (ulong)bVar12 * 4)" ( (binary_expression "CSWTCH_131 + (ulong)bVar12 * 4" identifier + (binary_expression "(ulong)bVar12 * 4" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar1 = di->next_comp;" (assignment_expression "iVar1 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (if_statement "if (iVar1 < di->num_comps) {\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }" if (parenthesized_expression "(iVar1 < di->num_comps)" ( (binary_expression "iVar1 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n        left = di->comps + iVar1;\n        left->d_printing = 0;\n        di->next_comp = iVar1 + 1;\n        if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }\n      }" { (expression_statement "left = di->comps + iVar1;" (assignment_expression "left = di->comps + iVar1" identifier = (binary_expression "di->comps + iVar1" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "left->d_printing = 0;" (assignment_expression "left->d_printing = 0" (field_expression "left->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar1 + 1;" (assignment_expression "di->next_comp = iVar1 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (if_statement "if ((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)) {\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }" if (parenthesized_expression "((pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5))" ( (binary_expression "(pdVar6 != (demangle_component *)0x0) && (iVar4 - 1U < 5)" (parenthesized_expression "(pdVar6 != (demangle_component *)0x0)" ( (binary_expression "pdVar6 != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar4 - 1U < 5)" ( (binary_expression "iVar4 - 1U < 5" (binary_expression "iVar4 - 1U" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          left->type = DEMANGLE_COMPONENT_CTOR;\n          left->d_printing = 0;\n          (left->u).s_extended_operator.args = iVar4;\n          (left->u).s_extended_operator.name = pdVar6;\n          goto LAB_002d07c3;\n        }" { (expression_statement "left->type = DEMANGLE_COMPONENT_CTOR;" (assignment_expression "left->type = DEMANGLE_COMPONENT_CTOR" (field_expression "left->type" identifier -> field_identifier) = identifier) ;) (expression_statement "left->d_printing = 0;" (assignment_expression "left->d_printing = 0" (field_expression "left->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "(left->u).s_extended_operator.args = iVar4;" (assignment_expression "(left->u).s_extended_operator.args = iVar4" (field_expression "(left->u).s_extended_operator.args" (field_expression "(left->u).s_extended_operator" (parenthesized_expression "(left->u)" ( (field_expression "left->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(left->u).s_extended_operator.name = pdVar6;" (assignment_expression "(left->u).s_extended_operator.name = pdVar6" (field_expression "(left->u).s_extended_operator.name" (field_expression "(left->u).s_extended_operator" (parenthesized_expression "(left->u)" ( (field_expression "left->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;) })) })) (labeled_statement "LAB_002d0b88:\n      cVar3 = *di->n;" statement_identifier : (expression_statement "cVar3 = *di->n;" (assignment_expression "cVar3 = *di->n" identifier = (pointer_expression "*di->n" * (field_expression "di->n" identifier -> field_identifier))) ;)) (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if (cVar3 == 'L') {\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" if (parenthesized_expression "(cVar3 == 'L')" ( (binary_expression "cVar3 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      di->n = pcVar2 + 1;\n      left = d_source_name(di);\n      if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }\n      iVar4 = d_discriminator(di);\n      if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }\n    }" { (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "left = d_source_name(di);" (assignment_expression "left = d_source_name(di)" identifier = (call_expression "d_source_name(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (left == (demangle_component *)0x0) {\n        return (demangle_component *)0x0;\n      }" if (parenthesized_expression "(left == (demangle_component *)0x0)" ( (binary_expression "left == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (demangle_component *)0x0;\n      }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar4 = d_discriminator(di);" (assignment_expression "iVar4 = d_discriminator(di)" identifier = (call_expression "d_discriminator(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        return (demangle_component *)0x0;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        return (demangle_component *)0x0;\n      }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" else (compound_statement "{\n      if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }\n      left = (demangle_component *)0x0;\n      di->n = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      pdVar5 = (demangle_component *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      di->n = pcVar2 + 2;\n      iVar4 = d_compact_number(di);\n      if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" { (if_statement "if (cVar3 != 'U') {\n        return (demangle_component *)0x0;\n      }" if (parenthesized_expression "(cVar3 != 'U')" ( (binary_expression "cVar3 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (demangle_component *)0x0;\n      }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        left = (demangle_component *)0x0;\n        di->n = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        pdVar5 = left;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        di->n = pcVar2 + 2;\n        pdVar6 = d_parmlist(di);\n        if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;\n        cVar3 = *di->n;\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        di->n = di->n + 1;\n        iVar4 = d_compact_number(di);\n        if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "left = (demangle_component *)0x0;" (assignment_expression "left = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pdVar5 = left;" (assignment_expression "pdVar5 = left" identifier = identifier) ;) (if_statement "if (cVar3 != 'l') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'l')" ( (binary_expression "cVar3 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "pdVar6 = d_parmlist(di);" (assignment_expression "pdVar6 = d_parmlist(di)" identifier = (call_expression "d_parmlist(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (pdVar6 == (demangle_component *)0x0) goto LAB_002d07c3;" if (parenthesized_expression "(pdVar6 == (demangle_component *)0x0)" ( (binary_expression "pdVar6 == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;)) (expression_statement "cVar3 = *di->n;" (assignment_expression "cVar3 = *di->n" identifier = (pointer_expression "*di->n" * (field_expression "di->n" identifier -> field_identifier))) ;) (if_statement "if (cVar3 != 'E') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'E')" ( (binary_expression "cVar3 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "di->n = di->n + 1;" (assignment_expression "di->n = di->n + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "di->n + 1" (field_expression "di->n" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar4 = d_compact_number(di);" (assignment_expression "iVar4 = d_compact_number(di)" identifier = (call_expression "d_compact_number(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (-1 < iVar4) {\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar1 = di->next_comp;\n          pcVar2 = di->n;\n          if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          pdVar5 = (demangle_component *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "iVar1 = di->next_comp;" (assignment_expression "iVar1 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (expression_statement "pcVar2 = di->n;" (assignment_expression "pcVar2 = di->n" identifier = (field_expression "di->n" identifier -> field_identifier)) ;) (if_statement "if (iVar1 < di->num_comps) {\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar1 < di->num_comps)" ( (binary_expression "iVar1 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n            pdVar5 = di->comps + iVar1;\n            pdVar5->d_printing = 0;\n            di->next_comp = iVar1 + 1;\n            (pdVar5->u).s_name.len = iVar4;\n            iVar4 = di->next_sub;\n            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;\n            (pdVar5->u).s_fixed.length = pdVar6;\n            if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "pdVar5 = di->comps + iVar1;" (assignment_expression "pdVar5 = di->comps + iVar1" identifier = (binary_expression "di->comps + iVar1" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "pdVar5->d_printing = 0;" (assignment_expression "pdVar5->d_printing = 0" (field_expression "pdVar5->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar1 + 1;" (assignment_expression "di->next_comp = iVar1 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "(pdVar5->u).s_name.len = iVar4;" (assignment_expression "(pdVar5->u).s_name.len = iVar4" (field_expression "(pdVar5->u).s_name.len" (field_expression "(pdVar5->u).s_name" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "iVar4 = di->next_sub;" (assignment_expression "iVar4 = di->next_sub" identifier = (field_expression "di->next_sub" identifier -> field_identifier)) ;) (expression_statement "pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;" (assignment_expression "pdVar5->type = DEMANGLE_COMPONENT_LAMBDA" (field_expression "pdVar5->type" identifier -> field_identifier) = identifier) ;) (expression_statement "(pdVar5->u).s_fixed.length = pdVar6;" (assignment_expression "(pdVar5->u).s_fixed.length = pdVar6" (field_expression "(pdVar5->u).s_fixed.length" (field_expression "(pdVar5->u).s_fixed" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (iVar4 < di->num_subs) {\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(iVar4 < di->num_subs)" ( (binary_expression "iVar4 < di->num_subs" identifier < (field_expression "di->num_subs" identifier -> field_identifier)) )) (compound_statement "{\n              di->subs[iVar4] = pdVar5;\n              di->next_sub = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "di->subs[iVar4] = pdVar5;" (assignment_expression "di->subs[iVar4] = pdVar5" (subscript_expression "di->subs[iVar4]" (field_expression "di->subs" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "di->next_sub = iVar4 + 1;" (assignment_expression "di->next_sub = iVar4 + 1" (field_expression "di->next_sub" identifier -> field_identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) (if_statement "if (pcVar2[1] != 't') {\n        return (demangle_component *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n        return (demangle_component *)0x0;\n      }" { (return_statement "return (demangle_component *)0x0;" return (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "left = (demangle_component *)0x0;" (assignment_expression "left = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "di->n = pcVar2 + 1;" (assignment_expression "di->n = pcVar2 + 1" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (cVar3 != 't') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 't')" ( (binary_expression "cVar3 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "di->n = pcVar2 + 2;" (assignment_expression "di->n = pcVar2 + 2" (field_expression "di->n" identifier -> field_identifier) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = d_compact_number(di);" (assignment_expression "iVar4 = d_compact_number(di)" identifier = (call_expression "d_compact_number(di)" identifier (argument_list "(di)" ( identifier )))) ;) (if_statement "if (-1 < iVar4) {\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        iVar1 = di->next_comp;\n        if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "iVar1 = di->next_comp;" (assignment_expression "iVar1 = di->next_comp" identifier = (field_expression "di->next_comp" identifier -> field_identifier)) ;) (if_statement "if (iVar1 < di->num_comps) {\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(iVar1 < di->num_comps)" ( (binary_expression "iVar1 < di->num_comps" identifier < (field_expression "di->num_comps" identifier -> field_identifier)) )) (compound_statement "{\n          pdVar5 = di->comps + iVar1;\n          pdVar5->d_printing = 0;\n          di->next_comp = iVar1 + 1;\n          pcVar2 = di->n;\n          *(long *)&pdVar5->u = (long)iVar4;\n          iVar4 = di->next_sub;\n          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;\n          if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "pdVar5 = di->comps + iVar1;" (assignment_expression "pdVar5 = di->comps + iVar1" identifier = (binary_expression "di->comps + iVar1" (field_expression "di->comps" identifier -> field_identifier) + identifier)) ;) (expression_statement "pdVar5->d_printing = 0;" (assignment_expression "pdVar5->d_printing = 0" (field_expression "pdVar5->d_printing" identifier -> field_identifier) = number_literal) ;) (expression_statement "di->next_comp = iVar1 + 1;" (assignment_expression "di->next_comp = iVar1 + 1" (field_expression "di->next_comp" identifier -> field_identifier) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = di->n;" (assignment_expression "pcVar2 = di->n" identifier = (field_expression "di->n" identifier -> field_identifier)) ;) (expression_statement "*(long *)&pdVar5->u = (long)iVar4;" (assignment_expression "*(long *)&pdVar5->u = (long)iVar4" (pointer_expression "*(long *)&pdVar5->u" * (cast_expression "(long *)&pdVar5->u" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar5->u" & (field_expression "pdVar5->u" identifier -> field_identifier)))) = (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar4 = di->next_sub;" (assignment_expression "iVar4 = di->next_sub" identifier = (field_expression "di->next_sub" identifier -> field_identifier)) ;) (expression_statement "pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;" (assignment_expression "pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE" (field_expression "pdVar5->type" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar4 < di->num_subs) {\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }" if (parenthesized_expression "(iVar4 < di->num_subs)" ( (binary_expression "iVar4 < di->num_subs" identifier < (field_expression "di->num_subs" identifier -> field_identifier)) )) (compound_statement "{\n            di->subs[iVar4] = pdVar5;\n            di->next_sub = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }" { (expression_statement "di->subs[iVar4] = pdVar5;" (assignment_expression "di->subs[iVar4] = pdVar5" (subscript_expression "di->subs[iVar4]" (field_expression "di->subs" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "di->next_sub = iVar4 + 1;" (assignment_expression "di->next_sub = iVar4 + 1" (field_expression "di->next_sub" identifier -> field_identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }" else (compound_statement "{\n            cVar3 = *pcVar2;\n            pdVar5 = (demangle_component *)0x0;\n          }" { (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "pdVar5 = (demangle_component *)0x0;" (assignment_expression "pdVar5 = (demangle_component *)0x0" identifier = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_002d07c3:\n  cVar3 = *di->n;" statement_identifier : (expression_statement "cVar3 = *di->n;" (assignment_expression "cVar3 = *di->n" identifier = (pointer_expression "*di->n" * (field_expression "di->n" identifier -> field_identifier))) ;)) (expression_statement "pdVar5 = left;" (assignment_expression "pdVar5 = left" identifier = identifier) ;) (labeled_statement "joined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }" statement_identifier : (if_statement "if (cVar3 == 'B') {\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }" if (parenthesized_expression "(cVar3 == 'B')" ( (binary_expression "cVar3 == 'B'" identifier == (char_literal "'B'" ' character ')) )) (compound_statement "{\n    pdVar5 = d_abi_tags(di,pdVar5);\n    return pdVar5;\n  }" { (expression_statement "pdVar5 = d_abi_tags(di,pdVar5);" (assignment_expression "pdVar5 = d_abi_tags(di,pdVar5)" identifier = (call_expression "d_abi_tags(di,pdVar5)" identifier (argument_list "(di,pdVar5)" ( identifier , identifier )))) ;) (return_statement "return pdVar5;" return identifier ;) }))) (return_statement "return pdVar5;" return identifier ;) })))
(translation_unit "uint * FUN_002d0780(long param_1)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}\n\n" (function_definition "uint * FUN_002d0780(long param_1)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" type_identifier (pointer_declarator "* FUN_002d0780(long param_1)" * (function_declarator "FUN_002d0780(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" if (parenthesized_expression "((byte)(cVar3 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar3 - 0x30U) < 10" (call_expression "(byte)(cVar3 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x30U)" ( (binary_expression "cVar3 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" { (expression_statement "puVar7 = (uint *)FUN_002c95a0();" (assignment_expression "puVar7 = (uint *)FUN_002c95a0()" identifier = (cast_expression "(uint *)FUN_002c95a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c95a0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar3 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar3 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar3 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0x9fU)" ( (binary_expression "cVar3 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar3 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar3 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar3 == 'o')" ( (binary_expression "cVar3 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "puVar6 = (uint *)FUN_002d0510(param_1);" (assignment_expression "puVar6 = (uint *)FUN_002d0510(param_1)" identifier = (cast_expression "(uint *)FUN_002d0510(param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d0510(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" if (parenthesized_expression "(puVar6 != (uint *)0x0)" ( (binary_expression "puVar6 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" { (expression_statement "bVar13 = *puVar6 < 0x31;" (assignment_expression "bVar13 = *puVar6 < 0x31" identifier = (binary_expression "*puVar6 < 0x31" (pointer_expression "*puVar6" * identifier) < number_literal)) ;) (expression_statement "bVar14 = *puVar6 == 0x31;" (assignment_expression "bVar14 = *puVar6 == 0x31" identifier = (binary_expression "*puVar6 == 0x31" (pointer_expression "*puVar6" * identifier) == number_literal)) ;) (if_statement "if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" { (expression_statement "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);" (assignment_expression "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2)" identifier = (cast_expression "(byte *)**(undefined8 **)(puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(puVar6 + 2)" * (pointer_expression "*(undefined8 **)(puVar6 + 2)" * (cast_expression "(undefined8 **)(puVar6 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) ))))))) ;) (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);" (assignment_expression "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (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" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (binary_expression "*(int *)(param_1 + 0x48) + 7" (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" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(*(undefined8 **)(puVar6 + 2) + 2)" * (cast_expression "(int *)(*(undefined8 **)(puVar6 + 2) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(puVar6 + 2) + 2)" ( (binary_expression "*(undefined8 **)(puVar6 + 2) + 2" (pointer_expression "*(undefined8 **)(puVar6 + 2)" * (cast_expression "(undefined8 **)(puVar6 + 2)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "pbVar12 = &DAT_0038f682;" (assignment_expression "pbVar12 = &DAT_0038f682" identifier = (pointer_expression "&DAT_0038f682" & identifier)) ;) (do_statement "do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);" do (compound_statement "{\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" if (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" ( (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" { (expression_statement "uVar8 = FUN_002c95a0(param_1);" (assignment_expression "uVar8 = FUN_002c95a0(param_1)" identifier = (call_expression "FUN_002c95a0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);" (assignment_expression "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" identifier = (cast_expression "(uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c91c0(param_1,0x36,puVar6,uVar8)" identifier (argument_list "(param_1,0x36,puVar6,uVar8)" ( identifier , number_literal , identifier , identifier ))))) ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" if (parenthesized_expression "((byte)(cVar3 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar3 + 0xbdU) < 2" (call_expression "(byte)(cVar3 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 + 0xbdU)" ( (binary_expression "cVar3 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" { (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" if (parenthesized_expression "((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18))))" ( (binary_expression "(piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))" (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*piVar10 != 0 && (*piVar10 != 0x18)))" ( (parenthesized_expression "(*piVar10 != 0 && (*piVar10 != 0x18))" ( (binary_expression "*piVar10 != 0 && (*piVar10 != 0x18)" (binary_expression "*piVar10 != 0" (pointer_expression "*piVar10" * identifier) != number_literal) && (parenthesized_expression "(*piVar10 != 0x18)" ( (binary_expression "*piVar10 != 0x18" (pointer_expression "*piVar10" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }" { (if_statement "if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (compound_statement "{\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" { (labeled_statement "LAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" statement_identifier : (switch_statement "switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" { (case_statement "case '0':\n            uVar5 = 1;\n            break;" case (char_literal "'0'" ' character ') : (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '1':\n            uVar5 = 2;\n            break;" case (char_literal "'1'" ' character ') : (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '2':\n            uVar5 = 3;\n            break;" case (char_literal "'2'" ' character ') : (expression_statement "uVar5 = 3;" (assignment_expression "uVar5 = 3" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n            goto switchD_002d0a51_caseD_33;" default : (goto_statement "goto switchD_002d0a51_caseD_33;" goto statement_identifier ;)) (case_statement "case '4':\n            uVar5 = 4;\n            break;" case (char_literal "'4'" ' character ') : (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case '5':\n            uVar5 = 5;" case (char_literal "'5'" ' character ') : (expression_statement "uVar5 = 5;" (assignment_expression "uVar5 = 5" identifier = number_literal) ;)) }))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "puVar7[0] = 8;" (assignment_expression "puVar7[0] = 8" (subscript_expression "puVar7[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = uVar5;" (assignment_expression "puVar7[2] = uVar5" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar7 + 4) = piVar10;" (assignment_expression "*(int **)(puVar7 + 4) = piVar10" (pointer_expression "*(int **)(puVar7 + 4)" * (cast_expression "(int **)(puVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 4)" ( (binary_expression "puVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d0acc;" goto statement_identifier ;) })) }) (else_clause "else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" else (compound_statement "{\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" { (expression_statement "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];" (assignment_expression "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4]" (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" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x48) + piVar10[4]" (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" identifier + number_literal) )))) + (subscript_expression "piVar10[4]" identifier [ number_literal ]))) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(cVar3 != 'C')" ( (binary_expression "cVar3 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (if_statement "if (cVar3 == 'D') goto LAB_002d0a31;" if (parenthesized_expression "(cVar3 == 'D')" ( (binary_expression "cVar3 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_002d0a31;" goto statement_identifier ;)) (labeled_statement "LAB_002d0acc:\n          puVar7 = (uint *)0x0;" statement_identifier : (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(4 < (byte)(cVar3 - 0x31U))" ( (binary_expression "4 < (byte)(cVar3 - 0x31U)" number_literal < (call_expression "(byte)(cVar3 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 3;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" identifier = (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" * (cast_expression "(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" ( (binary_expression "&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4" (pointer_expression "&DAT_0038f450" & identifier) + (binary_expression "(ulong)(byte)(cVar3 - 0x31U) * 4" (call_expression "(ulong)(byte)(cVar3 - 0x31U)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar3 - 0x31U)" ( (binary_expression "cVar3 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "FUN_002cfae0(param_1);" (call_expression "FUN_002cfae0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" else (compound_statement "{\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" { (expression_statement "bVar15 = pcVar2[1] - 0x31;" (assignment_expression "bVar15 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(4 < bVar15)" ( (binary_expression "4 < bVar15" number_literal < identifier) )) (compound_statement "{\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" { (labeled_statement "switchD_002d0a51_caseD_33:\n          return (uint *)0x0;" statement_identifier : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) })) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" identifier = (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" * (cast_expression "(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0038f450 + (ulong)bVar15 * 4)" ( (binary_expression "&DAT_0038f450 + (ulong)bVar15 * 4" (pointer_expression "&DAT_0038f450" & identifier) + (binary_expression "(ulong)bVar15 * 4" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" { (expression_statement "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" if (parenthesized_expression "((piVar10 != (int *)0x0) && (uVar5 - 1 < 5))" ( (binary_expression "(piVar10 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar5 - 1 < 5)" ( (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" { (expression_statement "puVar6[0] = 7;" (assignment_expression "puVar6[0] = 7" (subscript_expression "puVar6[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[2] = uVar5;" (assignment_expression "puVar6[2] = uVar5" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar6 + 4) = piVar10;" (assignment_expression "*(int **)(puVar6 + 4) = piVar10" (pointer_expression "*(int **)(puVar6 + 4)" * (cast_expression "(int **)(puVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;) })) })) (labeled_statement "LAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);" statement_identifier : (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (if_statement "if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" if (parenthesized_expression "(cVar3 == 'L')" ( (binary_expression "cVar3 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }" { (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = (uint *)FUN_002c95a0();" (assignment_expression "puVar6 = (uint *)FUN_002c95a0()" identifier = (cast_expression "(uint *)FUN_002c95a0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c95a0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(puVar6 == (uint *)0x0)" ( (binary_expression "puVar6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar4 = FUN_002c9a30(param_1);" (assignment_expression "iVar4 = FUN_002c9a30(param_1)" identifier = (call_expression "FUN_002c9a30(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" else (compound_statement "{\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" { (if_statement "if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(cVar3 != 'U')" ( (binary_expression "cVar3 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (if_statement "if (cVar3 != 'l') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'l')" ( (binary_expression "cVar3 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "lVar9 = FUN_002d06a0();" (assignment_expression "lVar9 = FUN_002d06a0()" identifier = (call_expression "FUN_002d06a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (lVar9 == 0) goto LAB_002d07c3;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d07c3;" goto statement_identifier ;)) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;) (if_statement "if (cVar3 != 'E') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 'E')" ( (binary_expression "cVar3 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "*(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar5 = FUN_002c94e0(param_1);" (assignment_expression "uVar5 = FUN_002c94e0(param_1)" identifier = (call_expression "FUN_002c94e0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[4] = uVar5;" (assignment_expression "puVar7[4] = uVar5" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar7 = 0x45;" (assignment_expression "*puVar7 = 0x45" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "*(long *)(puVar7 + 2) = lVar9;" (assignment_expression "*(long *)(puVar7 + 2) = lVar9" (pointer_expression "*(long *)(puVar7 + 2)" * (cast_expression "(long *)(puVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 2)" ( (binary_expression "puVar7 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" identifier < (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )) (compound_statement "{\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" { (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" * (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) })) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) (if_statement "if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (cVar3 != 't') goto joined_r0x002d08a9;" if (parenthesized_expression "(cVar3 != 't')" ( (binary_expression "cVar3 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;)) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_002c94e0();" (assignment_expression "iVar4 = FUN_002c94e0()" identifier = (call_expression "FUN_002c94e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" identifier = (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" if (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x2c))" ( (binary_expression "iVar1 < *(int *)(param_1 + 0x2c)" identifier < (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" { (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" identifier = (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "(long)iVar1 * 0x18" (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x28) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" identifier = (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(puVar7 + 2) = (long)iVar4;" (assignment_expression "*(long *)(puVar7 + 2) = (long)iVar4" (pointer_expression "*(long *)(puVar7 + 2)" * (cast_expression "(long *)(puVar7 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 2)" ( (binary_expression "puVar7 + 2" identifier + number_literal) )))) = (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*puVar7 = 0x47;" (assignment_expression "*puVar7 = 0x47" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" identifier < (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )) (compound_statement "{\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }" { (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" * (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" ( (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) + (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" else (compound_statement "{\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" { (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x002d08a9;" goto statement_identifier ;) })) (goto_statement "goto LAB_002d0b88;" goto statement_identifier ;) })) }))) }))) (labeled_statement "LAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);" statement_identifier : (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" identifier = (pointer_expression "**(char **)(param_1 + 0x18)" * (pointer_expression "*(char **)(param_1 + 0x18)" * (cast_expression "(char **)(param_1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))))) ;)) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (labeled_statement "joined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" statement_identifier : (if_statement "if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" if (parenthesized_expression "(cVar3 == 'B')" ( (binary_expression "cVar3 == 'B'" identifier == (char_literal "'B'" ' character ')) )) (compound_statement "{\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" { (expression_statement "puVar7 = (uint *)FUN_002c9700(param_1,puVar7);" (assignment_expression "puVar7 = (uint *)FUN_002c9700(param_1,puVar7)" identifier = (cast_expression "(uint *)FUN_002c9700(param_1,puVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c9700(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier ))))) ;) (return_statement "return puVar7;" return identifier ;) }))) (return_statement "return puVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))))) ;) })) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < 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 IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (labeled_statement statement_identifier : (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (return_statement return IDENT ;) }))) (return_statement return IDENT ;) })))
(function_definition "uint * FUN_002d0780(long param_1)\n\n{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" (type_identifier "uint") (pointer_declarator "* FUN_002d0780(long param_1)" (* "*") (function_declarator "FUN_002d0780(long param_1)" (identifier "FUN_002d0780") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")")))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  char cVar3;\n  int iVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint *puVar7;\n  undefined8 uVar8;\n  long lVar9;\n  int *piVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  \n  bVar15 = 0;\n  pcVar2 = *(char **)(param_1 + 0x18);\n  cVar3 = *pcVar2;\n  if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }\n  if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }\nLAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);\n  puVar7 = puVar6;\njoined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }\n  return puVar7;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (if_statement "if ((byte)(cVar3 - 0x30U) < 10) {\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" (if "if") (parenthesized_expression "((byte)(cVar3 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar3 - 0x30U) < 10" (call_expression "(byte)(cVar3 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar3 - 0x30U)" (( "(") (binary_expression "cVar3 - 0x30U" (identifier "cVar3") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n    puVar7 = (uint *)FUN_002c95a0();\n    cVar3 = **(char **)(param_1 + 0x18);\n    goto joined_r0x002d08a9;\n  }" ({ "{") (expression_statement "puVar7 = (uint *)FUN_002c95a0();" (assignment_expression "puVar7 = (uint *)FUN_002c95a0()" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_002c95a0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c95a0()" (identifier "FUN_002c95a0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" (identifier "cVar3") (= "=") (pointer_expression "**(char **)(param_1 + 0x18)" (* "*") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (if_statement "if ((byte)(cVar3 + 0x9fU) < 0x1a) {\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((byte)(cVar3 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar3 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar3 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar3 + 0x9fU)" (( "(") (binary_expression "cVar3 + 0x9fU" (identifier "cVar3") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (compound_statement "{\n    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }\n    puVar6 = (uint *)FUN_002d0510(param_1);\n    if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" (if "if") (parenthesized_expression "((cVar3 == 'o') && (pcVar2[1] == 'n'))" (( "(") (binary_expression "(cVar3 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar3 == 'o')" (( "(") (binary_expression "cVar3 == 'o'" (identifier "cVar3") (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar2[1] == 'n')" (( "(") (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'n'" (' "'") (character "n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "puVar6 = (uint *)FUN_002d0510(param_1);" (assignment_expression "puVar6 = (uint *)FUN_002d0510(param_1)" (identifier "puVar6") (= "=") (cast_expression "(uint *)FUN_002d0510(param_1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d0510(param_1)" (identifier "FUN_002d0510") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if (puVar6 != (uint *)0x0) {\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(puVar6 != (uint *)0x0)" (( "(") (binary_expression "puVar6 != (uint *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      bVar13 = *puVar6 < 0x31;\n      bVar14 = *puVar6 == 0x31;\n      if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }\n    }" ({ "{") (expression_statement "bVar13 = *puVar6 < 0x31;" (assignment_expression "bVar13 = *puVar6 < 0x31" (identifier "bVar13") (= "=") (binary_expression "*puVar6 < 0x31" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (< "<") (number_literal "0x31"))) (; ";")) (expression_statement "bVar14 = *puVar6 == 0x31;" (assignment_expression "bVar14 = *puVar6 == 0x31" (identifier "bVar14") (= "=") (binary_expression "*puVar6 == 0x31" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (== "==") (number_literal "0x31"))) (; ";")) (if_statement "if (bVar14) {\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);\n        lVar9 = 3;\n        *(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);\n        pbVar12 = &DAT_0038f682;\n        do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);\n        if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }\n      }" ({ "{") (expression_statement "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);" (assignment_expression "pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)**(undefined8 **)(puVar6 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined8 **)(puVar6 + 2)" (* "*") (pointer_expression "*(undefined8 **)(puVar6 + 2)" (* "*") (cast_expression "(undefined8 **)(puVar6 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 2)" (( "(") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2")) () ")"))))))) (; ";")) (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" (identifier "lVar9") (= "=") (number_literal "3")) (; ";")) (expression_statement "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);" (assignment_expression "*(int *)(param_1 + 0x48) =\n             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (binary_expression "*(int *)(param_1 + 0x48) + 7" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "7")) (+ "+") (pointer_expression "*(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (* "*") (cast_expression "(int *)(*(undefined8 **)(puVar6 + 2) + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined8 **)(puVar6 + 2) + 2)" (( "(") (binary_expression "*(undefined8 **)(puVar6 + 2) + 2" (pointer_expression "*(undefined8 **)(puVar6 + 2)" (* "*") (cast_expression "(undefined8 **)(puVar6 + 2)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 2)" (( "(") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2")) () ")")))) (+ "+") (number_literal "2")) () ")")))))) (; ";")) (expression_statement "pbVar12 = &DAT_0038f682;" (assignment_expression "pbVar12 = &DAT_0038f682" (identifier "pbVar12") (= "=") (pointer_expression "&DAT_0038f682" (& "&") (identifier "DAT_0038f682"))) (; ";")) (do_statement "do {\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        } while (bVar14);" (do "do") (compound_statement "{\n          if (lVar9 == 0) break;\n          lVar9 = lVar9 + -1;\n          bVar13 = *pbVar11 < *pbVar12;\n          bVar14 = *pbVar11 == *pbVar12;\n          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;\n          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar9 == 0) break;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar15 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar15 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar15 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (; ";")) (if_statement "if ((!bVar13 && !bVar14) == bVar13) {\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" (if "if") (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" (( "(") (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" (( "(") (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar14" (! "!") (identifier "bVar14"))) () ")")) (== "==") (identifier "bVar13")) () ")")) (compound_statement "{\n          uVar8 = FUN_002c95a0(param_1);\n          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);\n        }" ({ "{") (expression_statement "uVar8 = FUN_002c95a0(param_1);" (assignment_expression "uVar8 = FUN_002c95a0(param_1)" (identifier "uVar8") (= "=") (call_expression "FUN_002c95a0(param_1)" (identifier "FUN_002c95a0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);" (assignment_expression "puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" (identifier "puVar6") (= "=") (cast_expression "(uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c91c0(param_1,0x36,puVar6,uVar8)" (identifier "FUN_002c91c0") (argument_list "(param_1,0x36,puVar6,uVar8)" (( "(") (identifier "param_1") (, ",") (number_literal "0x36") (, ",") (identifier "puVar6") (, ",") (identifier "uVar8") () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }\n    if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }\n  }" ({ "{") (if_statement "if ((byte)(cVar3 + 0xbdU) < 2) {\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" (if "if") (parenthesized_expression "((byte)(cVar3 + 0xbdU) < 2)" (( "(") (binary_expression "(byte)(cVar3 + 0xbdU) < 2" (call_expression "(byte)(cVar3 + 0xbdU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar3 + 0xbdU)" (( "(") (binary_expression "cVar3 + 0xbdU" (identifier "cVar3") (+ "+") (number_literal "0xbdU")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      piVar10 = *(int **)(param_1 + 0x40);\n      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }\n      iVar4 = *(int *)(param_1 + 0x28);\n      if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }\nLAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);\n      puVar7 = (uint *)0x0;\n      goto joined_r0x002d08a9;\n    }" ({ "{") (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(param_1 + 0x40)" (* "*") (cast_expression "(int **)(param_1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }\n      else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" (if "if") (parenthesized_expression "((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18))))" (( "(") (binary_expression "(piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))" (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((*piVar10 != 0 && (*piVar10 != 0x18)))" (( "(") (parenthesized_expression "(*piVar10 != 0 && (*piVar10 != 0x18))" (( "(") (binary_expression "*piVar10 != 0 && (*piVar10 != 0x18)" (binary_expression "*piVar10 != 0" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*piVar10 != 0x18)" (( "(") (binary_expression "*piVar10 != 0x18" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (!= "!=") (number_literal "0x18")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }\n      }" ({ "{") (if_statement "if (cVar3 == 'D') {\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" (if "if") (parenthesized_expression "(cVar3 == 'D')" (( "(") (binary_expression "cVar3 == 'D'" (identifier "cVar3") (== "==") (char_literal "'D'" (' "'") (character "D") (' "'"))) () ")")) (compound_statement "{\nLAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }\n          *(char **)(param_1 + 0x18) = pcVar2 + 2;\n          iVar4 = *(int *)(param_1 + 0x28);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = pcVar2[2];\n          goto LAB_002d0acc;\n        }" ({ "{") (labeled_statement "LAB_002d0a31:\n          switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" (statement_identifier "LAB_002d0a31") (: ":") (switch_statement "switch(pcVar2[1]) {\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" (switch "switch") (parenthesized_expression "(pcVar2[1])" (( "(") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) () ")")) (compound_statement "{\n          case '0':\n            uVar5 = 1;\n            break;\n          case '1':\n            uVar5 = 2;\n            break;\n          case '2':\n            uVar5 = 3;\n            break;\n          default:\n            goto switchD_002d0a51_caseD_33;\n          case '4':\n            uVar5 = 4;\n            break;\n          case '5':\n            uVar5 = 5;\n          }" ({ "{") (case_statement "case '0':\n            uVar5 = 1;\n            break;" (case "case") (char_literal "'0'" (' "'") (character "0") (' "'")) (: ":") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case '1':\n            uVar5 = 2;\n            break;" (case "case") (char_literal "'1'" (' "'") (character "1") (' "'")) (: ":") (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" (identifier "uVar5") (= "=") (number_literal "2")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case '2':\n            uVar5 = 3;\n            break;" (case "case") (char_literal "'2'" (' "'") (character "2") (' "'")) (: ":") (expression_statement "uVar5 = 3;" (assignment_expression "uVar5 = 3" (identifier "uVar5") (= "=") (number_literal "3")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n            goto switchD_002d0a51_caseD_33;" (default "default") (: ":") (goto_statement "goto switchD_002d0a51_caseD_33;" (goto "goto") (statement_identifier "switchD_002d0a51_caseD_33") (; ";"))) (case_statement "case '4':\n            uVar5 = 4;\n            break;" (case "case") (char_literal "'4'" (' "'") (character "4") (' "'")) (: ":") (expression_statement "uVar5 = 4;" (assignment_expression "uVar5 = 4" (identifier "uVar5") (= "=") (number_literal "4")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case '5':\n            uVar5 = 5;" (case "case") (char_literal "'5'" (' "'") (character "5") (' "'")) (: ":") (expression_statement "uVar5 = 5;" (assignment_expression "uVar5 = 5" (identifier "uVar5") (= "=") (number_literal "5")) (; ";"))) (} "}")))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }\n          }" ({ "{") (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar10 != (int *)0x0) {\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" (if "if") (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              puVar7[0] = 8;\n              puVar7[1] = 0;\n              puVar7[2] = uVar5;\n              *(int **)(puVar7 + 4) = piVar10;\n              cVar3 = pcVar2[2];\n              goto joined_r0x002d08a9;\n            }" ({ "{") (expression_statement "puVar7[0] = 8;" (assignment_expression "puVar7[0] = 8" (subscript_expression "puVar7[0]" (identifier "puVar7") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[2] = uVar5;" (assignment_expression "puVar7[2] = uVar5" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(int **)(puVar7 + 4) = piVar10;" (assignment_expression "*(int **)(puVar7 + 4) = piVar10" (pointer_expression "*(int **)(puVar7 + 4)" (* "*") (cast_expression "(int **)(puVar7 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7 + 4)" (( "(") (binary_expression "puVar7 + 4" (identifier "puVar7") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar10")) (; ";")) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (goto_statement "goto LAB_002d0acc;" (goto "goto") (statement_identifier "LAB_002d0acc") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" (else "else") (compound_statement "{\n        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];\n        cVar3 = *pcVar2;\n        if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];" (assignment_expression "*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4]" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x48) + piVar10[4]" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (subscript_expression "piVar10[4]" (identifier "piVar10") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (if_statement "if (cVar3 != 'C') {\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" (if "if") (parenthesized_expression "(cVar3 != 'C')" (( "(") (binary_expression "cVar3 != 'C'" (identifier "cVar3") (!= "!=") (char_literal "'C'" (' "'") (character "C") (' "'"))) () ")")) (compound_statement "{\n          if (cVar3 == 'D') goto LAB_002d0a31;\nLAB_002d0acc:\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" ({ "{") (if_statement "if (cVar3 == 'D') goto LAB_002d0a31;" (if "if") (parenthesized_expression "(cVar3 == 'D')" (( "(") (binary_expression "cVar3 == 'D'" (identifier "cVar3") (== "==") (char_literal "'D'" (' "'") (character "D") (' "'"))) () ")")) (goto_statement "goto LAB_002d0a31;" (goto "goto") (statement_identifier "LAB_002d0a31") (; ";"))) (labeled_statement "LAB_002d0acc:\n          puVar7 = (uint *)0x0;" (statement_identifier "LAB_002d0acc") (: ":") (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (} "}")))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }\n      else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" (if "if") (parenthesized_expression "(pcVar2[1] == 'I')" (( "(") (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'I'" (' "'") (character "I") (' "'"))) () ")")) (compound_statement "{\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[2];\n        if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 3;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);\n        FUN_002cfae0(param_1);\n        piVar10 = *(int **)(param_1 + 0x40);\n      }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = pcVar2[2];" (assignment_expression "cVar3 = pcVar2[2]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (4 < (byte)(cVar3 - 0x31U)) {\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" (if "if") (parenthesized_expression "(4 < (byte)(cVar3 - 0x31U))" (( "(") (binary_expression "4 < (byte)(cVar3 - 0x31U)" (number_literal "4") (< "<") (call_expression "(byte)(cVar3 - 0x31U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar3 - 0x31U)" (( "(") (binary_expression "cVar3 - 0x31U" (identifier "cVar3") (- "-") (number_literal "0x31U")) () ")")))) () ")")) (compound_statement "{\n          cVar3 = pcVar2[1];\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" ({ "{") (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 3;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 3" (identifier "pcVar2") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" (* "*") (cast_expression "(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4)" (( "(") (binary_expression "&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4" (pointer_expression "&DAT_0038f450" (& "&") (identifier "DAT_0038f450")) (+ "+") (binary_expression "(ulong)(byte)(cVar3 - 0x31U) * 4" (call_expression "(ulong)(byte)(cVar3 - 0x31U)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(cVar3 - 0x31U)" (( "(") (binary_expression "cVar3 - 0x31U" (identifier "cVar3") (- "-") (number_literal "0x31U")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "FUN_002cfae0(param_1);" (call_expression "FUN_002cfae0(param_1)" (identifier "FUN_002cfae0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "piVar10 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar10 = *(int **)(param_1 + 0x40)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(param_1 + 0x40)" (* "*") (cast_expression "(int **)(param_1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" (else "else") (compound_statement "{\n        bVar15 = pcVar2[1] - 0x31;\n        if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);\n      }" ({ "{") (expression_statement "bVar15 = pcVar2[1] - 0x31;" (assignment_expression "bVar15 = pcVar2[1] - 0x31" (identifier "bVar15") (= "=") (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x31"))) (; ";")) (if_statement "if (4 < bVar15) {\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(4 < bVar15)" (( "(") (binary_expression "4 < bVar15" (number_literal "4") (< "<") (identifier "bVar15")) () ")")) (compound_statement "{\nswitchD_002d0a51_caseD_33:\n          return (uint *)0x0;\n        }" ({ "{") (labeled_statement "switchD_002d0a51_caseD_33:\n          return (uint *)0x0;" (statement_identifier "switchD_002d0a51_caseD_33") (: ":") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (} "}"))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" (* "*") (cast_expression "(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0038f450 + (ulong)bVar15 * 4)" (( "(") (binary_expression "&DAT_0038f450 + (ulong)bVar15 * 4" (pointer_expression "&DAT_0038f450" (& "&") (identifier "DAT_0038f450")) (+ "+") (binary_expression "(ulong)bVar15 * 4" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n        puVar6[1] = 0;\n        *(int *)(param_1 + 0x28) = iVar4 + 1;\n        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }\n      }" ({ "{") (expression_statement "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (identifier "puVar6") (= "=") (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" (if "if") (parenthesized_expression "((piVar10 != (int *)0x0) && (uVar5 - 1 < 5))" (( "(") (binary_expression "(piVar10 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar5 - 1 < 5)" (( "(") (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) (< "<") (number_literal "5")) () ")"))) () ")")) (compound_statement "{\n          puVar6[0] = 7;\n          puVar6[1] = 0;\n          puVar6[2] = uVar5;\n          *(int **)(puVar6 + 4) = piVar10;\n          goto LAB_002d07c3;\n        }" ({ "{") (expression_statement "puVar6[0] = 7;" (assignment_expression "puVar6[0] = 7" (subscript_expression "puVar6[0]" (identifier "puVar6") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "7")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[2] = uVar5;" (assignment_expression "puVar6[2] = uVar5" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(int **)(puVar6 + 4) = piVar10;" (assignment_expression "*(int **)(puVar6 + 4) = piVar10" (pointer_expression "*(int **)(puVar6 + 4)" (* "*") (cast_expression "(int **)(puVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar10")) (; ";")) (goto_statement "goto LAB_002d07c3;" (goto "goto") (statement_identifier "LAB_002d07c3") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_002d0b88:\n      cVar3 = **(char **)(param_1 + 0x18);" (statement_identifier "LAB_002d0b88") (: ":") (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" (identifier "cVar3") (= "=") (pointer_expression "**(char **)(param_1 + 0x18)" (* "*") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))))) (; ";"))) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (if_statement "if (cVar3 == 'L') {\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" (if "if") (parenthesized_expression "(cVar3 == 'L')" (( "(") (binary_expression "cVar3 == 'L'" (identifier "cVar3") (== "==") (char_literal "'L'" (' "'") (character "L") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      puVar6 = (uint *)FUN_002c95a0();\n      if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar4 = FUN_002c9a30(param_1);\n      if (iVar4 == 0) {\n        return (uint *)0x0;\n      }\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = (uint *)FUN_002c95a0();" (assignment_expression "puVar6 = (uint *)FUN_002c95a0()" (identifier "puVar6") (= "=") (cast_expression "(uint *)FUN_002c95a0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c95a0()" (identifier "FUN_002c95a0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar6 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(puVar6 == (uint *)0x0)" (( "(") (binary_expression "puVar6 == (uint *)0x0" (identifier "puVar6") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_002c9a30(param_1);" (assignment_expression "iVar4 = FUN_002c9a30(param_1)" (identifier "iVar4") (= "=") (call_expression "FUN_002c9a30(param_1)" (identifier "FUN_002c9a30") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" (else "else") (compound_statement "{\n      if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n      if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }\n      puVar6 = (uint *)0x0;\n      *(char **)(param_1 + 0x18) = pcVar2 + 1;\n      cVar3 = pcVar2[1];\n      puVar7 = (uint *)0x0;\n      if (cVar3 != 't') goto joined_r0x002d08a9;\n      *(char **)(param_1 + 0x18) = pcVar2 + 2;\n      iVar4 = FUN_002c94e0();\n      if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }\n    }" ({ "{") (if_statement "if (cVar3 != 'U') {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(cVar3 != 'U')" (( "(") (binary_expression "cVar3 != 'U'" (identifier "cVar3") (!= "!=") (char_literal "'U'" (' "'") (character "U") (' "'"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (pcVar2[1] == 'l') {\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" (if "if") (parenthesized_expression "(pcVar2[1] == 'l')" (( "(") (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'l'" (' "'") (character "l") (' "'"))) () ")")) (compound_statement "{\n        puVar6 = (uint *)0x0;\n        *(char **)(param_1 + 0x18) = pcVar2 + 1;\n        cVar3 = pcVar2[1];\n        puVar7 = puVar6;\n        if (cVar3 != 'l') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = pcVar2 + 2;\n        lVar9 = FUN_002d06a0();\n        if (lVar9 == 0) goto LAB_002d07c3;\n        cVar3 = **(char **)(param_1 + 0x18);\n        if (cVar3 != 'E') goto joined_r0x002d08a9;\n        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;\n        uVar5 = FUN_002c94e0(param_1);\n        if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" ({ "{") (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" (identifier "puVar6") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" (identifier "puVar7") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if (cVar3 != 'l') goto joined_r0x002d08a9;" (if "if") (parenthesized_expression "(cVar3 != 'l')" (( "(") (binary_expression "cVar3 != 'l'" (identifier "cVar3") (!= "!=") (char_literal "'l'" (' "'") (character "l") (' "'"))) () ")")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";"))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "lVar9 = FUN_002d06a0();" (assignment_expression "lVar9 = FUN_002d06a0()" (identifier "lVar9") (= "=") (call_expression "FUN_002d06a0()" (identifier "FUN_002d06a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (lVar9 == 0) goto LAB_002d07c3;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d07c3;" (goto "goto") (statement_identifier "LAB_002d07c3") (; ";"))) (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" (identifier "cVar3") (= "=") (pointer_expression "**(char **)(param_1 + 0x18)" (* "*") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (if_statement "if (cVar3 != 'E') goto joined_r0x002d08a9;" (if "if") (parenthesized_expression "(cVar3 != 'E')" (( "(") (binary_expression "cVar3 != 'E'" (identifier "cVar3") (!= "!=") (char_literal "'E'" (' "'") (character "E") (' "'"))) () ")")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";"))) (expression_statement "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "*(char **)(param_1 + 0x18) + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = FUN_002c94e0(param_1);" (assignment_expression "uVar5 = FUN_002c94e0(param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_002c94e0(param_1)" (identifier "FUN_002c94e0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar5) {\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar5)" (( "(") (binary_expression "-1 < (int)uVar5" (number_literal "-1") (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x28);\n          pcVar2 = *(char **)(param_1 + 0x18);\n          if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }\n          cVar3 = *pcVar2;\n          puVar7 = (uint *)0x0;\n          goto joined_r0x002d08a9;\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x2c)) {\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x2c)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);\n            puVar7[1] = 0;\n            *(int *)(param_1 + 0x28) = iVar4 + 1;\n            puVar7[4] = uVar5;\n            iVar4 = *(int *)(param_1 + 0x38);\n            *puVar7 = 0x45;\n            *(long *)(puVar7 + 2) = lVar9;\n            if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }\n          }" ({ "{") (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "(long)iVar4 * 0x18" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x28) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7[4] = uVar5;" (assignment_expression "puVar7[4] = uVar5" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*puVar7 = 0x45;" (assignment_expression "*puVar7 = 0x45" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0x45")) (; ";")) (expression_statement "*(long *)(puVar7 + 2) = lVar9;" (assignment_expression "*(long *)(puVar7 + 2) = lVar9" (pointer_expression "*(long *)(puVar7 + 2)" (* "*") (cast_expression "(long *)(puVar7 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 2)" (( "(") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "lVar9")) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) () ")")) (compound_statement "{\n              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n              *(int *)(param_1 + 0x38) = iVar4 + 1;\n              cVar3 = *pcVar2;\n              goto joined_r0x002d08a9;\n            }" ({ "{") (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (* "*") (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (goto_statement "goto LAB_002d0b88;" (goto "goto") (statement_identifier "LAB_002d0b88") (; ";")) (} "}"))) (if_statement "if (pcVar2[1] != 't') {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(pcVar2[1] != 't')" (( "(") (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar6 = (uint *)0x0;" (assignment_expression "puVar6 = (uint *)0x0" (identifier "puVar6") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = pcVar2[1];" (assignment_expression "cVar3 = pcVar2[1]" (identifier "cVar3") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (cVar3 != 't') goto joined_r0x002d08a9;" (if "if") (parenthesized_expression "(cVar3 != 't')" (( "(") (binary_expression "cVar3 != 't'" (identifier "cVar3") (!= "!=") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";"))) (expression_statement "*(char **)(param_1 + 0x18) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0x18) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = FUN_002c94e0();" (assignment_expression "iVar4 = FUN_002c94e0()" (identifier "iVar4") (= "=") (call_expression "FUN_002c94e0()" (identifier "FUN_002c94e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (-1 < iVar4) {\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n        iVar1 = *(int *)(param_1 + 0x28);\n        if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }\n        goto LAB_002d0b88;\n      }" ({ "{") (expression_statement "iVar1 = *(int *)(param_1 + 0x28);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x28)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar1 < *(int *)(param_1 + 0x2c)) {\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" (if "if") (parenthesized_expression "(iVar1 < *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "iVar1 < *(int *)(param_1 + 0x2c)" (identifier "iVar1") (< "<") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);\n          puVar7[1] = 0;\n          *(int *)(param_1 + 0x28) = iVar1 + 1;\n          pcVar2 = *(char **)(param_1 + 0x18);\n          *(long *)(puVar7 + 2) = (long)iVar4;\n          iVar4 = *(int *)(param_1 + 0x38);\n          *puVar7 = 0x47;\n          if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }\n          goto joined_r0x002d08a9;\n        }" ({ "{") (expression_statement "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);" (assignment_expression "puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "(long)iVar1 * 0x18" (cast_expression "(long)iVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar1")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x28) = iVar1 + 1;" (assignment_expression "*(int *)(param_1 + 0x28) = iVar1 + 1" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0x18);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0x18)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(long *)(puVar7 + 2) = (long)iVar4;" (assignment_expression "*(long *)(puVar7 + 2) = (long)iVar4" (pointer_expression "*(long *)(puVar7 + 2)" (* "*") (cast_expression "(long *)(puVar7 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 2)" (( "(") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x38)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*puVar7 = 0x47;" (assignment_expression "*puVar7 = 0x47" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0x47")) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x3c)) {\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }\n          else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x3c))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x3c)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) () ")")) (compound_statement "{\n            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;\n            *(int *)(param_1 + 0x38) = iVar4 + 1;\n            cVar3 = *pcVar2;\n          }" ({ "{") (expression_statement "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;" (assignment_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7" (pointer_expression "*(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (* "*") (cast_expression "(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x30) + (long)iVar4 * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) + (long)iVar4 * 8" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "(long)iVar4 * 8" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(int *)(param_1 + 0x38) = iVar4 + 1;" (assignment_expression "*(int *)(param_1 + 0x38) = iVar4 + 1" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (} "}")) (else_clause "else {\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" (else "else") (compound_statement "{\n            cVar3 = *pcVar2;\n            puVar7 = (uint *)0x0;\n          }" ({ "{") (expression_statement "cVar3 = *pcVar2;" (assignment_expression "cVar3 = *pcVar2" (identifier "cVar3") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (goto_statement "goto joined_r0x002d08a9;" (goto "goto") (statement_identifier "joined_r0x002d08a9") (; ";")) (} "}"))) (goto_statement "goto LAB_002d0b88;" (goto "goto") (statement_identifier "LAB_002d0b88") (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_002d07c3:\n  cVar3 = **(char **)(param_1 + 0x18);" (statement_identifier "LAB_002d07c3") (: ":") (expression_statement "cVar3 = **(char **)(param_1 + 0x18);" (assignment_expression "cVar3 = **(char **)(param_1 + 0x18)" (identifier "cVar3") (= "=") (pointer_expression "**(char **)(param_1 + 0x18)" (* "*") (pointer_expression "*(char **)(param_1 + 0x18)" (* "*") (cast_expression "(char **)(param_1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))))) (; ";"))) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" (identifier "puVar7") (= "=") (identifier "puVar6")) (; ";")) (labeled_statement "joined_r0x002d08a9:\n  if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" (statement_identifier "joined_r0x002d08a9") (: ":") (if_statement "if (cVar3 == 'B') {\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" (if "if") (parenthesized_expression "(cVar3 == 'B')" (( "(") (binary_expression "cVar3 == 'B'" (identifier "cVar3") (== "==") (char_literal "'B'" (' "'") (character "B") (' "'"))) () ")")) (compound_statement "{\n    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);\n    return puVar7;\n  }" ({ "{") (expression_statement "puVar7 = (uint *)FUN_002c9700(param_1,puVar7);" (assignment_expression "puVar7 = (uint *)FUN_002c9700(param_1,puVar7)" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_002c9700(param_1,puVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c9700(param_1,puVar7)" (identifier "FUN_002c9700") (argument_list "(param_1,puVar7)" (( "(") (identifier "param_1") (, ",") (identifier "puVar7") () ")"))))) (; ";")) (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}")))) (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}")))

type_1 * function_1(type_2 *di)

{
  int var_15;
  char *var_3;
  char var_1;
  int var_19;
  type_1 *var_5;
  type_1 *pdVar5;
  type_1 *var_12;
  long var_7;
  type_3 *var_8;
  type_3 *var_9;
  bool var_10;
  bool bVar11;
  type_3 var_18;
  
  var_18 = 0;
  var_3 = di->n;
  var_1 = *var_3;
  if ((type_3)(var_1 - 0x30U) < 10) {
    pdVar5 = var_2(di);
    var_1 = *di->n;
    goto joined_r0x002d08a9;
  }
  if ((type_3)(var_1 + 0x9fU) < 0x1a) {
    if ((var_1 == 'o') && (var_3[1] == 'n')) {
      di->n = var_3 + 2;
    }
    var_5 = var_4(di);
    if (var_5 != (type_1 *)0x0) {
      var_10 = var_5->type < var_6;
      bVar11 = var_5->type == var_6;
      if (bVar11) {
        pdVar5 = (var_5->u).s_fixed.length;
        var_8 = *(type_3 **)pdVar5;
        var_7 = 3;
        di->expansion = di->expansion + 7 + (pdVar5->u).s_name.len;
        var_9 = &DAT_0038f682;
        do {
          if (var_7 == 0) break;
          var_7 = var_7 + -1;
          var_10 = *var_8 < *var_9;
          bVar11 = *var_8 == *var_9;
          var_8 = var_8 + (type_4)var_18 * -2 + 1;
          var_9 = var_9 + (type_4)var_18 * -2 + 1;
        } while (bVar11);
        if ((!var_10 && !bVar11) == var_10) {
          pdVar5 = var_2(di);
          var_5 = var_11(di,DEMANGLE_COMPONENT_UNARY,var_5,pdVar5);
        }
      }
    }
  }
  else {
    if ((type_3)(var_1 + 0xbdU) < 2) {
      var_12 = di->last_name;
      if ((var_12 == (type_1 *)0x0) ||
         ((var_12->type != var_13 && (var_12->type != var_14)))
         ) {
        if (var_1 == 'D') {
LAB_002d0a31:
          switch(var_3[1]) {
          case '0':
            var_19 = 1;
            break;
          case '1':
            var_19 = 2;
            break;
          case '2':
            var_19 = 3;
            break;
          default:
            goto switchD_002d0a51_caseD_33;
          case '4':
            var_19 = 4;
            break;
          case '5':
            var_19 = 5;
          }
          di->n = var_3 + 2;
          var_15 = di->next_comp;
          if (var_15 < di->num_comps) {
            pdVar5 = di->comps + var_15;
            pdVar5->d_printing = 0;
            di->next_comp = var_15 + 1;
            if (var_12 != (type_1 *)0x0) {
              pdVar5->type = DEMANGLE_COMPONENT_DTOR;
              pdVar5->d_printing = 0;
              (pdVar5->u).s_extended_operator.args = var_19;
              (pdVar5->u).s_extended_operator.name = var_12;
              var_1 = var_3[2];
              goto joined_r0x002d08a9;
            }
          }
          var_1 = var_3[2];
          goto LAB_002d0acc;
        }
      }
      else {
        di->expansion = di->expansion + (var_12->u).s_name.len;
        var_1 = *var_3;
        if (var_1 != 'C') {
          if (var_1 == 'D') goto LAB_002d0a31;
LAB_002d0acc:
          pdVar5 = (type_1 *)0x0;
          goto joined_r0x002d08a9;
        }
      }
      if (var_3[1] == 'I') {
        di->n = var_3 + 1;
        var_1 = var_3[2];
        if (4 < (type_3)(var_1 - 0x31U)) {
          var_1 = var_3[1];
          pdVar5 = (type_1 *)0x0;
          goto joined_r0x002d08a9;
        }
        di->n = var_3 + 3;
        var_19 = *(int *)(var_16 + (type_4)(type_3)(var_1 - 0x31U) * 4);
        var_17(di);
        var_12 = di->last_name;
      }
      else {
        var_18 = var_3[1] - 0x31;
        if (4 < var_18) {
switchD_002d0a51_caseD_33:
          return (type_1 *)0x0;
        }
        di->n = var_3 + 2;
        var_19 = *(int *)(var_16 + (type_4)var_18 * 4);
      }
      var_15 = di->next_comp;
      if (var_15 < di->num_comps) {
        var_5 = di->comps + var_15;
        var_5->d_printing = 0;
        di->next_comp = var_15 + 1;
        if ((var_12 != (type_1 *)0x0) && (var_19 - 1U < 5)) {
          var_5->type = DEMANGLE_COMPONENT_CTOR;
          var_5->d_printing = 0;
          (var_5->u).s_extended_operator.args = var_19;
          (var_5->u).s_extended_operator.name = var_12;
          goto LAB_002d07c3;
        }
      }
LAB_002d0b88:
      var_1 = *di->n;
      pdVar5 = (type_1 *)0x0;
      goto joined_r0x002d08a9;
    }
    if (var_1 == 'L') {
      di->n = var_3 + 1;
      var_5 = var_2(di);
      if (var_5 == (type_1 *)0x0) {
        return (type_1 *)0x0;
      }
      var_19 = var_20(di);
      if (var_19 == 0) {
        return (type_1 *)0x0;
      }
    }
    else {
      if (var_1 != 'U') {
        return (type_1 *)0x0;
      }
      if (var_3[1] == 'l') {
        var_5 = (type_1 *)0x0;
        di->n = var_3 + 1;
        var_1 = var_3[1];
        pdVar5 = var_5;
        if (var_1 != 'l') goto joined_r0x002d08a9;
        di->n = var_3 + 2;
        var_12 = var_21(di);
        if (var_12 == (type_1 *)0x0) goto LAB_002d07c3;
        var_1 = *di->n;
        if (var_1 != 'E') goto joined_r0x002d08a9;
        di->n = di->n + 1;
        var_19 = var_22(di);
        if (-1 < var_19) {
          var_15 = di->next_comp;
          var_3 = di->n;
          if (var_15 < di->num_comps) {
            pdVar5 = di->comps + var_15;
            pdVar5->d_printing = 0;
            di->next_comp = var_15 + 1;
            (pdVar5->u).s_name.len = var_19;
            var_19 = di->next_sub;
            pdVar5->type = DEMANGLE_COMPONENT_LAMBDA;
            (pdVar5->u).s_fixed.length = var_12;
            if (var_19 < di->num_subs) {
              di->subs[var_19] = pdVar5;
              di->next_sub = var_19 + 1;
              var_1 = *var_3;
              goto joined_r0x002d08a9;
            }
          }
          var_1 = *var_3;
          pdVar5 = (type_1 *)0x0;
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
      if (var_3[1] != 't') {
        return (type_1 *)0x0;
      }
      var_5 = (type_1 *)0x0;
      di->n = var_3 + 1;
      var_1 = var_3[1];
      pdVar5 = (type_1 *)0x0;
      if (var_1 != 't') goto joined_r0x002d08a9;
      di->n = var_3 + 2;
      var_19 = var_22(di);
      if (-1 < var_19) {
        var_15 = di->next_comp;
        if (var_15 < di->num_comps) {
          pdVar5 = di->comps + var_15;
          pdVar5->d_printing = 0;
          di->next_comp = var_15 + 1;
          var_3 = di->n;
          *(long *)&pdVar5->u = (long)var_19;
          var_19 = di->next_sub;
          pdVar5->type = DEMANGLE_COMPONENT_UNNAMED_TYPE;
          if (var_19 < di->num_subs) {
            di->subs[var_19] = pdVar5;
            di->next_sub = var_19 + 1;
            var_1 = *var_3;
          }
          else {
            var_1 = *var_3;
            pdVar5 = (type_1 *)0x0;
          }
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
    }
  }
LAB_002d07c3:
  var_1 = *di->n;
  pdVar5 = var_5;
joined_r0x002d08a9:
  if (var_1 == 'B') {
    pdVar5 = var_23(di,pdVar5);
    return pdVar5;
  }
  return pdVar5;
}


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

uint * MASKED(long param_1)

{
  int iVar1;
  char *pcVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  undefined8 uVar8;
  long lVar9;
  int *piVar10;
  byte *pbVar11;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  byte bVar15;
  
  bVar15 = 0;
  pcVar2 = *(char **)(param_1 + 0x18);
  cVar3 = *pcVar2;
  if ((byte)(cVar3 - 0x30U) < 10) {
    puVar7 = (uint *)FUN_002c95a0();
    cVar3 = **(char **)(param_1 + 0x18);
    goto joined_r0x002d08a9;
  }
  if ((byte)(cVar3 + 0x9fU) < 0x1a) {
    if ((cVar3 == 'o') && (pcVar2[1] == 'n')) {
      *(char **)(param_1 + 0x18) = pcVar2 + 2;
    }
    puVar6 = (uint *)FUN_002d0510(param_1);
    if (puVar6 != (uint *)0x0) {
      bVar13 = *puVar6 < 0x31;
      bVar14 = *puVar6 == 0x31;
      if (bVar14) {
        pbVar11 = (byte *)**(undefined8 **)(puVar6 + 2);
        lVar9 = 3;
        *(int *)(param_1 + 0x48) =
             *(int *)(param_1 + 0x48) + 7 + *(int *)(*(undefined8 **)(puVar6 + 2) + 2);
        pbVar12 = &DAT_0038f682;
        do {
          if (lVar9 == 0) break;
          lVar9 = lVar9 + -1;
          bVar13 = *pbVar11 < *pbVar12;
          bVar14 = *pbVar11 == *pbVar12;
          pbVar11 = pbVar11 + (ulong)bVar15 * -2 + 1;
          pbVar12 = pbVar12 + (ulong)bVar15 * -2 + 1;
        } while (bVar14);
        if ((!bVar13 && !bVar14) == bVar13) {
          uVar8 = FUN_002c95a0(param_1);
          puVar6 = (uint *)FUN_002c91c0(param_1,0x36,puVar6,uVar8);
        }
      }
    }
  }
  else {
    if ((byte)(cVar3 + 0xbdU) < 2) {
      piVar10 = *(int **)(param_1 + 0x40);
      if ((piVar10 == (int *)0x0) || ((*piVar10 != 0 && (*piVar10 != 0x18)))) {
        if (cVar3 == 'D') {
LAB_002d0a31:
          switch(pcVar2[1]) {
          case '0':
            uVar5 = 1;
            break;
          case '1':
            uVar5 = 2;
            break;
          case '2':
            uVar5 = 3;
            break;
          default:
            goto switchD_002d0a51_caseD_33;
          case '4':
            uVar5 = 4;
            break;
          case '5':
            uVar5 = 5;
          }
          *(char **)(param_1 + 0x18) = pcVar2 + 2;
          iVar4 = *(int *)(param_1 + 0x28);
          if (iVar4 < *(int *)(param_1 + 0x2c)) {
            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
            puVar7[1] = 0;
            *(int *)(param_1 + 0x28) = iVar4 + 1;
            if (piVar10 != (int *)0x0) {
              puVar7[0] = 8;
              puVar7[1] = 0;
              puVar7[2] = uVar5;
              *(int **)(puVar7 + 4) = piVar10;
              cVar3 = pcVar2[2];
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = pcVar2[2];
          goto LAB_002d0acc;
        }
      }
      else {
        *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + piVar10[4];
        cVar3 = *pcVar2;
        if (cVar3 != 'C') {
          if (cVar3 == 'D') goto LAB_002d0a31;
LAB_002d0acc:
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
      }
      if (pcVar2[1] == 'I') {
        *(char **)(param_1 + 0x18) = pcVar2 + 1;
        cVar3 = pcVar2[2];
        if (4 < (byte)(cVar3 - 0x31U)) {
          cVar3 = pcVar2[1];
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
        *(char **)(param_1 + 0x18) = pcVar2 + 3;
        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)(byte)(cVar3 - 0x31U) * 4);
        FUN_002cfae0(param_1);
        piVar10 = *(int **)(param_1 + 0x40);
      }
      else {
        bVar15 = pcVar2[1] - 0x31;
        if (4 < bVar15) {
switchD_002d0a51_caseD_33:
          return (uint *)0x0;
        }
        *(char **)(param_1 + 0x18) = pcVar2 + 2;
        uVar5 = *(uint *)(&DAT_0038f450 + (ulong)bVar15 * 4);
      }
      iVar4 = *(int *)(param_1 + 0x28);
      if (iVar4 < *(int *)(param_1 + 0x2c)) {
        puVar6 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
        puVar6[1] = 0;
        *(int *)(param_1 + 0x28) = iVar4 + 1;
        if ((piVar10 != (int *)0x0) && (uVar5 - 1 < 5)) {
          puVar6[0] = 7;
          puVar6[1] = 0;
          puVar6[2] = uVar5;
          *(int **)(puVar6 + 4) = piVar10;
          goto LAB_002d07c3;
        }
      }
LAB_002d0b88:
      cVar3 = **(char **)(param_1 + 0x18);
      puVar7 = (uint *)0x0;
      goto joined_r0x002d08a9;
    }
    if (cVar3 == 'L') {
      *(char **)(param_1 + 0x18) = pcVar2 + 1;
      puVar6 = (uint *)FUN_002c95a0();
      if (puVar6 == (uint *)0x0) {
        return (uint *)0x0;
      }
      iVar4 = FUN_002c9a30(param_1);
      if (iVar4 == 0) {
        return (uint *)0x0;
      }
    }
    else {
      if (cVar3 != 'U') {
        return (uint *)0x0;
      }
      if (pcVar2[1] == 'l') {
        puVar6 = (uint *)0x0;
        *(char **)(param_1 + 0x18) = pcVar2 + 1;
        cVar3 = pcVar2[1];
        puVar7 = puVar6;
        if (cVar3 != 'l') goto joined_r0x002d08a9;
        *(char **)(param_1 + 0x18) = pcVar2 + 2;
        lVar9 = FUN_002d06a0();
        if (lVar9 == 0) goto LAB_002d07c3;
        cVar3 = **(char **)(param_1 + 0x18);
        if (cVar3 != 'E') goto joined_r0x002d08a9;
        *(char **)(param_1 + 0x18) = *(char **)(param_1 + 0x18) + 1;
        uVar5 = FUN_002c94e0(param_1);
        if (-1 < (int)uVar5) {
          iVar4 = *(int *)(param_1 + 0x28);
          pcVar2 = *(char **)(param_1 + 0x18);
          if (iVar4 < *(int *)(param_1 + 0x2c)) {
            puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar4 * 0x18);
            puVar7[1] = 0;
            *(int *)(param_1 + 0x28) = iVar4 + 1;
            puVar7[4] = uVar5;
            iVar4 = *(int *)(param_1 + 0x38);
            *puVar7 = 0x45;
            *(long *)(puVar7 + 2) = lVar9;
            if (iVar4 < *(int *)(param_1 + 0x3c)) {
              *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;
              *(int *)(param_1 + 0x38) = iVar4 + 1;
              cVar3 = *pcVar2;
              goto joined_r0x002d08a9;
            }
          }
          cVar3 = *pcVar2;
          puVar7 = (uint *)0x0;
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
      if (pcVar2[1] != 't') {
        return (uint *)0x0;
      }
      puVar6 = (uint *)0x0;
      *(char **)(param_1 + 0x18) = pcVar2 + 1;
      cVar3 = pcVar2[1];
      puVar7 = (uint *)0x0;
      if (cVar3 != 't') goto joined_r0x002d08a9;
      *(char **)(param_1 + 0x18) = pcVar2 + 2;
      iVar4 = FUN_002c94e0();
      if (-1 < iVar4) {
        iVar1 = *(int *)(param_1 + 0x28);
        if (iVar1 < *(int *)(param_1 + 0x2c)) {
          puVar7 = (uint *)(*(long *)(param_1 + 0x20) + (long)iVar1 * 0x18);
          puVar7[1] = 0;
          *(int *)(param_1 + 0x28) = iVar1 + 1;
          pcVar2 = *(char **)(param_1 + 0x18);
          *(long *)(puVar7 + 2) = (long)iVar4;
          iVar4 = *(int *)(param_1 + 0x38);
          *puVar7 = 0x47;
          if (iVar4 < *(int *)(param_1 + 0x3c)) {
            *(uint **)(*(long *)(param_1 + 0x30) + (long)iVar4 * 8) = puVar7;
            *(int *)(param_1 + 0x38) = iVar4 + 1;
            cVar3 = *pcVar2;
          }
          else {
            cVar3 = *pcVar2;
            puVar7 = (uint *)0x0;
          }
          goto joined_r0x002d08a9;
        }
        goto LAB_002d0b88;
      }
    }
  }
LAB_002d07c3:
  cVar3 = **(char **)(param_1 + 0x18);
  puVar7 = puVar6;
joined_r0x002d08a9:
  if (cVar3 == 'B') {
    puVar7 = (uint *)FUN_002c9700(param_1,puVar7);
    return puVar7;
  }
  return puVar7;
}

