
char * ada_demangle(char *mangled,int option)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  char *pcVar4;
  ushort uVar7;
  int iVar5;
  int iVar6;
  undefined *puVar8;
  undefined *puVar9;
  undefined *puVar10;
  byte bVar11;
  undefined4 uVar12;
  undefined *puVar13;
  byte *pbVar14;
  undefined4 *puVar15;
  byte *pbVar16;
  byte bVar17;
  byte *pbVar18;
  undefined *puVar19;
  undefined4 *puVar20;
  byte *pbVar21;
  byte *pbVar22;
  byte *pbVar23;
  byte *pbVar24;
  
  iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5);
  puVar2 = PTR__sch_istable_004356e0;
  puVar1 = PTR_s__0043226c;
  puVar13 = PTR_PTR__wfilebuf_004321f8;
  if (iVar3 == 0) {
    mangled = mangled + 5;
  }
  pbVar18 = (byte *)0x0;
  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0) {
    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);
    pbVar18 = (byte *)xmalloc(iVar3 + 8);
    bVar11 = *mangled;
    puVar8 = PTR_s__0043226c + 0x3d78;
    puVar9 = PTR_s__0043226c + 0x3d80;
    puVar10 = PTR_s__0043226c + 0x3d88;
    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);
    pbVar14 = (byte *)mangled;
    pbVar23 = pbVar18;
LAB_0029811c:
    do {
      if ((uVar7 & 8) == 0) {
        if (bVar11 != 0x4f) break;
        iVar3 = 4;
        iVar5 = 0;
        puVar19 = PTR_s__0043226c + 0x3d70;
        puVar15 = (undefined4 *)(puVar13 + -0x6620);
        while( true ) {
          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);
          if (iVar6 == 0) break;
          puVar19 = (undefined *)*puVar15;
          iVar5 = iVar5 + 1;
          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);
          puVar15 = puVar15 + 2;
        }
        pbVar16 = pbVar23 + 1;
        pbVar21 = pbVar14 + iVar3;
        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);
        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);
        *pbVar23 = 0x22;
        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);
        bVar11 = *pbVar21;
        pbVar22 = pbVar16 + iVar3 + 1;
        pbVar16[iVar3] = 0x22;
LAB_00298360:
        pbVar24 = pbVar22;
        if (bVar11 == 0x54) {
          if (pbVar21[1] != 0x4b) goto LAB_0029817c;
          if (pbVar21[2] == 0x42) {
            if (pbVar21[3] == 0) {
              *pbVar22 = 0;
              return (char *)pbVar18;
            }
            break;
          }
          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;
          bVar11 = pbVar21[4];
          pbVar14 = pbVar21 + 4;
          *pbVar22 = 0x2e;
          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);
          goto LAB_0029811c;
        }
        if (bVar11 == 0x45) {
          if (pbVar21[1] != 0) goto LAB_0029817c;
          break;
        }
        if (bVar11 == 0x50) {
          if (pbVar21[1] == 0) {
            *pbVar22 = 0;
            return (char *)pbVar18;
          }
          goto LAB_0029817c;
        }
        if (bVar11 == 0x4e) {
          if (pbVar21[1] == 0) goto LAB_0029825c;
LAB_002984fc:
          if (bVar11 != 0x44) goto LAB_0029817c;
          if (pbVar21[1] == 0x41) {
            puVar13 = PTR_s__0043226c + 0x3da4;
          }
          else {
            if (pbVar21[1] != 0x46) break;
            puVar13 = PTR_s__0043226c + 0x3d98;
          }
          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);
          pbVar22[iVar3] = 0;
          return (char *)pbVar18;
        }
        if (bVar11 != 0x53) {
          if (bVar11 == 0x58) {
            do {
              do {
                pbVar21 = pbVar21 + 1;
                bVar11 = *pbVar21;
              } while (bVar11 == 0x6e);
            } while (bVar11 == 0x62);
            if (bVar11 == 0x53) goto LAB_002983d0;
          }
          goto LAB_002984fc;
        }
        if (pbVar21[1] == 0) break;
LAB_002983d0:
        bVar11 = pbVar21[1];
        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;
        puVar19 = puVar8;
        if (bVar11 != 0x4f) {
          if ((char)bVar11 < 'P') {
            puVar19 = puVar10;
            if (bVar11 != 0x49) break;
          }
          else {
            puVar19 = puVar9;
            if (bVar11 != 0x52) {
              if (bVar11 != 0x57) break;
              puVar19 = puVar1 + 0x3d90;
            }
          }
        }
        pbVar21 = pbVar21 + 2;
        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);
        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);
        pbVar24 = pbVar22 + iVar3;
      }
      else {
        do {
          do {
            pbVar16 = pbVar14;
            pbVar21 = pbVar16 + 1;
            *pbVar23 = bVar11;
            bVar11 = *pbVar21;
            pbVar22 = pbVar23 + 1;
            pbVar23 = pbVar22;
            pbVar14 = pbVar21;
          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);
          if (bVar11 != 0x5f) goto LAB_00298360;
          pbVar24 = pbVar22;
        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);
LAB_0029817c:
        bVar17 = *pbVar21;
      }
      if (bVar17 != 0x5f) goto LAB_0029864c;
      bVar11 = pbVar21[1];
      if (bVar11 != 0x5f) {
        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {
          bVar11 = pbVar21[2];
          pbVar21 = pbVar21 + 2;
          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {
            pbVar21 = pbVar21 + 1;
            bVar11 = *pbVar21;
          }
          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {
            *pbVar24 = 0;
            return (char *)pbVar18;
          }
        }
        break;
      }
      bVar11 = pbVar21[2];
      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);
      pbVar14 = pbVar21 + 2;
      if ((uVar7 & 4) != 0) goto LAB_002985d8;
      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;
      pbVar23 = pbVar24 + 1;
      *pbVar24 = 0x2e;
    } while( true );
  }
  goto LAB_00297fdc;
code_r0x002981cc:
  uVar12 = 6;
  iVar3 = 0;
  puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);
  puVar13 = PTR_s__0043226c + 0x3dac;
  puVar15 = puVar20;
  do {
    puVar15 = puVar15 + 2;
    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);
    if (iVar5 == 0) {
      uVar12 = puVar20[iVar3 * 2 + 1];
      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);
      pbVar22 = pbVar24 + iVar3;
      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);
LAB_0029825c:
      *pbVar22 = 0;
      return (char *)pbVar18;
    }
    puVar13 = (undefined *)*puVar15;
    iVar3 = iVar3 + 1;
    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;
    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);
  } while( true );
  while ((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0) {
LAB_002985d8:
    do {
      pbVar23 = pbVar14;
      bVar17 = pbVar23[1];
      pbVar21 = pbVar23 + 1;
      pbVar14 = pbVar21;
    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);
    if (bVar17 != 0x5f) {
      if (bVar17 == 0x58) {
        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));
            pbVar21 = pbVar21 + 1) {
        }
      }
LAB_0029864c:
      if (bVar17 == 0x2e) {
        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;
        bVar17 = pbVar21[2];
        pbVar21 = pbVar21 + 2;
        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {
          pbVar21 = pbVar21 + 1;
          bVar17 = *pbVar21;
        }
      }
      if (bVar17 == 0) {
        *pbVar24 = 0;
        return (char *)pbVar18;
      }
      break;
    }
  }
LAB_00297fdc:
  (*(code *)PTR_free_00436800)(pbVar18);
  iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);
  pcVar4 = (char *)xmalloc(iVar3 + 3);
  if (*mangled != 0x3c) {
    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);
    return pcVar4;
  }
  (*(code *)PTR_strcpy_00436758)(pcVar4,mangled);
  return pcVar4;
}



byte * ada_demangle(byte *param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  ushort uVar6;
  int iVar4;
  int iVar5;
  undefined *puVar7;
  undefined *puVar8;
  undefined *puVar9;
  byte bVar10;
  undefined4 uVar11;
  undefined *puVar12;
  byte *pbVar13;
  undefined4 *puVar14;
  byte *pbVar15;
  byte bVar16;
  byte *pbVar17;
  undefined *puVar18;
  undefined4 *puVar19;
  byte *pbVar20;
  byte *pbVar21;
  byte *pbVar22;
  byte *pbVar23;
  
  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);
  puVar2 = PTR__sch_istable_004356e0;
  puVar1 = PTR_DAT_0043226c;
  puVar12 = PTR_PTR__wfilebuf_004321f8;
  if (iVar3 == 0) {
    param_1 = param_1 + 5;
  }
  pbVar17 = (byte *)0x0;
  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {
    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);
    pbVar17 = (byte *)xmalloc(iVar3 + 8);
    bVar10 = *param_1;
    puVar7 = PTR_DAT_0043226c + 0x3d78;
    puVar8 = PTR_DAT_0043226c + 0x3d80;
    puVar9 = PTR_DAT_0043226c + 0x3d88;
    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
    pbVar13 = param_1;
    pbVar22 = pbVar17;
LAB_0029811c:
    do {
      if ((uVar6 & 8) == 0) {
        if (bVar10 != 0x4f) break;
        iVar3 = 4;
        iVar4 = 0;
        puVar18 = PTR_DAT_0043226c + 0x3d70;
        puVar14 = (undefined4 *)(puVar12 + -0x6620);
        while( true ) {
          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);
          if (iVar5 == 0) break;
          puVar18 = (undefined *)*puVar14;
          iVar4 = iVar4 + 1;
          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);
          puVar14 = puVar14 + 2;
        }
        pbVar15 = pbVar22 + 1;
        pbVar20 = pbVar13 + iVar3;
        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);
        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);
        *pbVar22 = 0x22;
        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);
        bVar10 = *pbVar20;
        pbVar21 = pbVar15 + iVar3 + 1;
        pbVar15[iVar3] = 0x22;
LAB_00298360:
        pbVar23 = pbVar21;
        if (bVar10 == 0x54) {
          if (pbVar20[1] != 0x4b) goto LAB_0029817c;
          if (pbVar20[2] == 0x42) {
            if (pbVar20[3] == 0) {
              *pbVar21 = 0;
              return pbVar17;
            }
            break;
          }
          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;
          bVar10 = pbVar20[4];
          pbVar13 = pbVar20 + 4;
          *pbVar21 = 0x2e;
          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
          goto LAB_0029811c;
        }
        if (bVar10 == 0x45) {
          if (pbVar20[1] != 0) goto LAB_0029817c;
          break;
        }
        if (bVar10 == 0x50) {
          if (pbVar20[1] == 0) {
            *pbVar21 = 0;
            return pbVar17;
          }
          goto LAB_0029817c;
        }
        if (bVar10 == 0x4e) {
          if (pbVar20[1] == 0) goto LAB_0029825c;
LAB_002984fc:
          if (bVar10 != 0x44) goto LAB_0029817c;
          if (pbVar20[1] == 0x41) {
            puVar12 = PTR_DAT_0043226c + 0x3da4;
          }
          else {
            if (pbVar20[1] != 0x46) break;
            puVar12 = PTR_DAT_0043226c + 0x3d98;
          }
          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);
          pbVar21[iVar3] = 0;
          return pbVar17;
        }
        if (bVar10 != 0x53) {
          if (bVar10 == 0x58) {
            do {
              do {
                pbVar20 = pbVar20 + 1;
                bVar10 = *pbVar20;
              } while (bVar10 == 0x6e);
            } while (bVar10 == 0x62);
            if (bVar10 == 0x53) goto LAB_002983d0;
          }
          goto LAB_002984fc;
        }
        if (pbVar20[1] == 0) break;
LAB_002983d0:
        bVar10 = pbVar20[1];
        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;
        puVar18 = puVar7;
        if (bVar10 != 0x4f) {
          if ((char)bVar10 < 'P') {
            puVar18 = puVar9;
            if (bVar10 != 0x49) break;
          }
          else {
            puVar18 = puVar8;
            if (bVar10 != 0x52) {
              if (bVar10 != 0x57) break;
              puVar18 = puVar1 + 0x3d90;
            }
          }
        }
        pbVar20 = pbVar20 + 2;
        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);
        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);
        pbVar23 = pbVar21 + iVar3;
      }
      else {
        do {
          do {
            pbVar15 = pbVar13;
            pbVar20 = pbVar15 + 1;
            *pbVar22 = bVar10;
            bVar10 = *pbVar20;
            pbVar21 = pbVar22 + 1;
            pbVar22 = pbVar21;
            pbVar13 = pbVar20;
          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);
          if (bVar10 != 0x5f) goto LAB_00298360;
          pbVar23 = pbVar21;
        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);
LAB_0029817c:
        bVar16 = *pbVar20;
      }
      if (bVar16 != 0x5f) goto LAB_0029864c;
      bVar10 = pbVar20[1];
      if (bVar10 != 0x5f) {
        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {
          bVar10 = pbVar20[2];
          pbVar20 = pbVar20 + 2;
          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {
            pbVar20 = pbVar20 + 1;
            bVar10 = *pbVar20;
          }
          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {
            *pbVar23 = 0;
            return pbVar17;
          }
        }
        break;
      }
      bVar10 = pbVar20[2];
      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
      pbVar13 = pbVar20 + 2;
      if ((uVar6 & 4) != 0) goto LAB_002985d8;
      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;
      pbVar22 = pbVar23 + 1;
      *pbVar23 = 0x2e;
    } while( true );
  }
  goto LAB_00297fdc;
code_r0x002981cc:
  uVar11 = 6;
  iVar3 = 0;
  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);
  puVar12 = PTR_DAT_0043226c + 0x3dac;
  puVar14 = puVar19;
  do {
    puVar14 = puVar14 + 2;
    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);
    if (iVar4 == 0) {
      uVar11 = puVar19[iVar3 * 2 + 1];
      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);
      pbVar21 = pbVar23 + iVar3;
      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);
LAB_0029825c:
      *pbVar21 = 0;
      return pbVar17;
    }
    puVar12 = (undefined *)*puVar14;
    iVar3 = iVar3 + 1;
    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;
    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);
  } while( true );
  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {
LAB_002985d8:
    do {
      pbVar22 = pbVar13;
      bVar16 = pbVar22[1];
      pbVar20 = pbVar22 + 1;
      pbVar13 = pbVar20;
    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);
    if (bVar16 != 0x5f) {
      if (bVar16 == 0x58) {
        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));
            pbVar20 = pbVar20 + 1) {
        }
      }
LAB_0029864c:
      if (bVar16 == 0x2e) {
        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;
        bVar16 = pbVar20[2];
        pbVar20 = pbVar20 + 2;
        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {
          pbVar20 = pbVar20 + 1;
          bVar16 = *pbVar20;
        }
      }
      if (bVar16 == 0) {
        *pbVar23 = 0;
        return pbVar17;
      }
      break;
    }
  }
LAB_00297fdc:
  (*(code *)PTR_free_00436800)(pbVar17);
  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);
  pbVar17 = (byte *)xmalloc(iVar3 + 3);
  if (*param_1 != 0x3c) {
    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);
    return pbVar17;
  }
  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);
  return pbVar17;
}


lui gp,0x1a
addiu gp,gp,0x2278
addu gp,gp,t9
lw a1,-0x7f64(gp)
addiu sp,sp,-0x60
lw t9,-0x3b30(gp)
li a2,0x5
addiu a1,a1,0x3db4
sw gp,0x10(sp)
sw s3,0x44(sp)
or s3,a0,zero
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
jalr t9
_sw s0,0x38(sp)
bne v0,zero,0x00297fb8
_lw gp,0x10(sp)
addiu s3,s3,0x5
lbu v0,0x0(s3)
lw s0,-0x4af0(gp)
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x8
bne v0,zero,0x002980a8
_or s4,zero,zero
lw t9,-0x39d0(gp)
jalr t9
_or a0,s4,zero
lw gp,0x10(sp)
lw t9,-0x3a54(gp)
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
lw t9,-0x45b0(gp)
bal 0x002b32a8
_addiu a0,v0,0x3
li v1,0x3c
lb a0,0x0(s3)
or s4,v0,zero
beq a0,v1,0x00298064
_lw gp,0x10(sp)
lw a1,-0x7f64(gp)
or a2,s3,zero
lw t9,-0x38d8(gp)
or a0,v0,zero
jalr t9
_addiu a1,a1,0x3dbc
or v0,s4,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lw t9,-0x3a78(gp)
or a1,s3,zero
jalr t9
_or a0,v0,zero
or v0,s4,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lw v0,-0x7f64(gp)
or a0,s3,zero
lw t9,-0x3a54(gp)
or s7,s3,zero
sw v0,0x1c(sp)
lw v0,-0x7fd8(gp)
jalr t9
_sw v0,0x18(sp)
lw gp,0x10(sp)
lw t9,-0x45b0(gp)
bal 0x002b32a8
_addiu a0,v0,0x8
lw gp,0x10(sp)
or s4,v0,zero
lb a0,0x0(s3)
or s8,v0,zero
lw a1,-0x7f64(gp)
andi v0,a0,0xff
sll v0,v0,0x1
lw s6,-0x7f64(gp)
lw s5,-0x7f64(gp)
addiu v1,a1,0x3d78
addu v0,s0,v0
sw v1,0x28(sp)
addiu v1,s6,0x3d80
sw v1,0x24(sp)
addiu v1,s5,0x3d88
lhu v0,0x0(v0)
sw v1,0x20(sp)
andi v0,v0,0x8
beq v0,zero,0x00298294
_li v0,0x4f
li a1,0x5f
addiu s7,s7,0x1
sb a0,0x0(s8)
lb a0,0x0(s7)
andi v0,a0,0xff
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0xc
bne v0,zero,0x0029812c
_addiu s8,s8,0x1
bne a0,a1,0x00298360
_li v0,0x54
lbu v0,0x1(s7)
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0xc
bne v0,zero,0x00298130
_addiu s7,s7,0x1
addiu s7,s7,-0x1
lb s2,0x0(s7)
li v0,0x5f
bne s2,v0,0x0029864c
_li v0,0x2e
lb v0,0x1(s7)
bne v0,s2,0x00298574
_li a0,0x42
lb a0,0x2(s7)
andi v0,a0,0xff
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi a1,v0,0x4
bne a1,zero,0x002985d4
_addiu s1,s7,0x2
bne a0,s2,0x00298384
_nop
lb v1,0x3(s7)
beq v1,s2,0x00298384
_lw s6,-0x7fd8(gp)
li a2,0x6
lw s0,-0x7f64(gp)
or s5,zero,zero
addiu s6,s6,-0x6658
addiu s0,s0,0x3dac
b 0x00298208
_or s2,s6,zero
lw s0,0x0(s2)
addiu s5,s5,0x1
beq s0,zero,0x00297fd8
_or a0,s0,zero
jalr t9
_nop
lw gp,0x10(sp)
or a2,v0,zero
lw t9,-0x3b30(gp)
or a1,s0,zero
or a0,s1,zero
jalr t9
_addiu s2,s2,0x8
lw gp,0x10(sp)
bne v0,zero,0x002981e8
_lw t9,-0x3a54(gp)
sll s5,s5,0x3
addu s5,s6,s5
lw s1,0x4(s5)
jalr t9
_or a0,s1,zero
or a0,s8,zero
lw gp,0x10(sp)
or s0,v0,zero
addu s8,s8,s0
or a2,v0,zero
lw t9,-0x3a48(gp)
jalr t9
_or a1,s1,zero
sb zero,0x0(s8)
lw ra,0x5c(sp)
or v0,s4,zero
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
bne a0,v0,0x00297fd8
_lw v0,0x18(sp)
li s6,0x4
lw a1,-0x7f64(gp)
or s2,zero,zero
addiu s1,v0,-0x6620
b 0x002982d4
_addiu s5,a1,0x3d70
lw s5,-0x8(s1)
addiu s2,s2,0x1
beq s5,zero,0x00297fd8
_or a0,s5,zero
jalr t9
_nop
lw gp,0x10(sp)
or s6,v0,zero
lw t9,-0x3b30(gp)
or a2,s6,zero
or a1,s5,zero
jalr t9
_or a0,s7,zero
addiu s1,s1,0x8
lw gp,0x10(sp)
bne v0,zero,0x002982b4
_lw t9,-0x3a54(gp)
lw v0,-0x7fd8(gp)
sll s2,s2,0x3
addiu s1,s8,0x1
addu s7,s7,s6
addiu v0,v0,-0x6628
addu s2,s2,v0
lw a1,0x4(s2)
li s2,0x22
or a0,a1,zero
jalr t9
_sw a1,0x30(sp)
or a0,s1,zero
lw gp,0x10(sp)
or a2,v0,zero
lw a1,0x30(sp)
sb s2,0x0(s8)
lw t9,-0x3a48(gp)
jalr t9
_sw v0,0x2c(sp)
lw t0,0x2c(sp)
lb a0,0x0(s7)
lw gp,0x10(sp)
addu s1,s1,t0
addiu s8,s1,0x1
sb s2,0x0(s1)
li v0,0x54
beq a0,v0,0x00298450
_li v0,0x45
bne a0,v0,0x00298398
_li v0,0x50
lb v0,0x1(s7)
bne v0,zero,0x0029817c
_lw t9,-0x39d0(gp)
b 0x00297fdc
_nop
addiu s8,s8,0x1
li v1,0x2e
or s7,s1,zero
b 0x0029811c
_sb v1,-0x1(s8)
bne a0,v0,0x002983b4
_li v0,0x4e
lb v0,0x1(s7)
bne v0,zero,0x0029817c
_nop
b 0x00298260
_sb zero,0x0(s8)
beq a0,v0,0x002984ec
_li v0,0x53
bne a0,v0,0x002984ac
_li v0,0x58
lb v0,0x1(s7)
beq v0,zero,0x00297fdc
_lw t9,-0x39d0(gp)
lb v0,0x1(s7)
beq v0,zero,0x00297fdc
_lw t9,-0x39d0(gp)
lb s2,0x2(s7)
li a0,0x5f
beq s2,a0,0x002983f4
_li a0,0x4f
bne s2,zero,0x00297fdc
_nop
beq v0,a0,0x00298420
_lw s1,0x28(sp)
slti a0,v0,0x50
bne a0,zero,0x0029854c
_li a0,0x52
beq v0,a0,0x00298420
_lw s1,0x24(sp)
li a0,0x57
bne v0,a0,0x00297fd8
_lw v0,0x1c(sp)
addiu s1,v0,0x3d90
lw t9,-0x3a78(gp)
or a0,s8,zero
or a1,s1,zero
jalr t9
_addiu s7,s7,0x2
lw gp,0x10(sp)
lw t9,-0x3a54(gp)
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
b 0x00298180
_addu s8,s8,v0
lb a0,0x1(s7)
li v0,0x4b
bne a0,v0,0x0029817c
_nop
lb v0,0x2(s7)
li a0,0x42
beq v0,a0,0x00298560
_nop
li a0,0x5f
bne v0,a0,0x00297fdc
_lw t9,-0x39d0(gp)
lb a0,0x3(s7)
bne a0,v0,0x00297fdc
_addiu s8,s8,0x1
lb a0,0x4(s7)
li v0,0x2e
addiu s7,s7,0x4
sb v0,-0x1(s8)
andi v0,a0,0xff
sll v0,v0,0x1
addu v0,s0,v0
b 0x0029811c
_lhu v0,0x0(v0)
bne a0,v0,0x002984f8
_li v0,0x6e
addiu s7,s7,0x1
li a1,0x62
lb a0,0x0(s7)
beq a0,v0,0x002984d0
_nop
bne a0,a1,0x002984d8
_nop
b 0x002984bc
_addiu s7,s7,0x1
li v0,0x53
beq a0,v0,0x002983d0
_li v0,0x44
b 0x002984fc
_nop
lb v0,0x1(s7)
beq v0,zero,0x0029825c
_nop
li v0,0x44
bne a0,v0,0x0029817c
_li v1,0x41
lb v0,0x1(s7)
beq v0,v1,0x002986b8
_li v1,0x46
bne v0,v1,0x00297fdc
_lw t9,-0x39d0(gp)
lw s0,-0x7f64(gp)
addiu s0,s0,0x3d98
lw t9,-0x3a78(gp)
or a0,s8,zero
jalr t9
_or a1,s0,zero
lw gp,0x10(sp)
lw t9,-0x3a54(gp)
jalr t9
_or a0,s0,zero
addu s8,s8,v0
b 0x00298260
_sb zero,0x0(s8)
li a0,0x49
bne v0,a0,0x00297fd8
_lw s1,0x20(sp)
b 0x00298424
_lw t9,-0x3a78(gp)
lb v0,0x3(s7)
bne v0,zero,0x00297fd8
_nop
b 0x00298260
_sb zero,0x0(s8)
beq v0,a0,0x00298588
_nop
li a0,0x45
bne v0,a0,0x00297fd8
_nop
lb a0,0x2(s7)
b 0x0029859c
_addiu v1,s7,0x2
addiu v1,v1,0x1
lb a0,0x0(v1)
andi v0,a0,0xff
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x4
bne v0,zero,0x00298594
_li v0,0x73
bne a0,v0,0x00297fdc
_lw t9,-0x39d0(gp)
lb v0,0x1(v1)
bne v0,zero,0x00297fdc
_nop
b 0x00298260
_sb zero,0x0(s8)
li a0,0x5f
lb s2,0x1(s1)
andi v0,s2,0xff
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x4
bne v0,zero,0x0029861c
_addiu s7,s1,0x1
bne s2,a0,0x00298624
_li v0,0x58
lbu v0,0x1(s7)
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x4
beq v0,zero,0x00297fdc
_lw t9,-0x39d0(gp)
b 0x002985d8
_or s1,s7,zero
bne s2,v0,0x00298648
_li v0,0x6e
addiu s7,s1,0x2
li a0,0x62
lb s2,0x0(s7)
beq s2,v0,0x002986b0
_nop
beq s2,a0,0x002986b0
_nop
li v0,0x2e
bne s2,v0,0x002986a0
_nop
lbu v0,0x1(s7)
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x4
beq v0,zero,0x00297fdc
_lw t9,-0x39d0(gp)
lb s2,0x2(s7)
b 0x00298684
_addiu v1,s7,0x2
addiu v1,v1,0x1
lb s2,0x0(v1)
andi v0,s2,0xff
sll v0,v0,0x1
addu v0,s0,v0
lhu v0,0x0(v0)
andi v0,v0,0x4
bne v0,zero,0x0029867c
_nop
bne s2,zero,0x00297fdc
_lw t9,-0x39d0(gp)
b 0x00298260
_sb zero,0x0(s8)
b 0x00298634
_addiu s7,s7,0x1
lw s0,-0x7f64(gp)
b 0x00298520
_addiu s0,s0,0x3da4
(translation_unit "byte * ada_demangle(byte *param_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}\n\n" (function_definition "byte * ada_demangle(byte *param_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" type_identifier (pointer_declarator "* ada_demangle(byte *param_1)" * (function_declarator "ada_demangle(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);" (assignment_expression "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_DAT_0043226c + 0x3db4,5)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x3db4" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar2 = PTR__sch_istable_004356e0;" (assignment_expression "puVar2 = PTR__sch_istable_004356e0" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0043226c;" (assignment_expression "puVar1 = PTR_DAT_0043226c" identifier = identifier) ;) (expression_statement "puVar12 = PTR_PTR__wfilebuf_004321f8;" (assignment_expression "puVar12 = PTR_PTR__wfilebuf_004321f8" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1 = param_1 + 5;\n  }" { (expression_statement "param_1 = param_1 + 5;" (assignment_expression "param_1 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) })) (expression_statement "pbVar17 = (byte *)0x0;" (assignment_expression "pbVar17 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" if (parenthesized_expression "((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0)" ( (binary_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0" (parenthesized_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8)" ( (binary_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8" (pointer_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" * (cast_expression "(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" ( (binary_expression "PTR__sch_istable_004356e0 + (uint)*param_1 * 2" identifier + (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" { (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 8);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 8)" identifier = (cast_expression "(byte *)xmalloc(iVar3 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 8)" identifier (argument_list "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar10 = *param_1;" (assignment_expression "bVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x3d78;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x3d78" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d78" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x3d80;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x3d80" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d80" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_DAT_0043226c + 0x3d88;" (assignment_expression "puVar9 = PTR_DAT_0043226c + 0x3d88" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d88" identifier + number_literal)) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" identifier = identifier) ;) (expression_statement "pbVar22 = pbVar17;" (assignment_expression "pbVar22 = pbVar17" identifier = identifier) ;) (labeled_statement "LAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" statement_identifier : (do_statement "do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" do (compound_statement "{\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    }" { (if_statement "if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" if (parenthesized_expression "((uVar6 & 8) == 0)" ( (binary_expression "(uVar6 & 8) == 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }" { (if_statement "if (bVar10 != 0x4f) break;" if (parenthesized_expression "(bVar10 != 0x4f)" ( (binary_expression "bVar10 != 0x4f" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar18 = PTR_DAT_0043226c + 0x3d70;" (assignment_expression "puVar18 = PTR_DAT_0043226c + 0x3d70" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d70" identifier + number_literal)) ;) (expression_statement "puVar14 = (undefined4 *)(puVar12 + -0x6620);" (assignment_expression "puVar14 = (undefined4 *)(puVar12 + -0x6620)" identifier = (cast_expression "(undefined4 *)(puVar12 + -0x6620)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x6620)" ( (binary_expression "puVar12 + -0x6620" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" { (expression_statement "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);" (assignment_expression "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar13,puVar18,iVar3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = (undefined *)*puVar14;" (assignment_expression "puVar18 = (undefined *)*puVar14" identifier = (cast_expression "(undefined *)*puVar14" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar18 == (undefined *)0x0)" ( (binary_expression "puVar18 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18)" ( identifier )))) ;) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) })) (expression_statement "pbVar15 = pbVar22 + 1;" (assignment_expression "pbVar15 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar20 = pbVar13 + iVar3;" (assignment_expression "pbVar20 = pbVar13 + iVar3" identifier = (binary_expression "pbVar13 + iVar3" identifier + identifier)) ;) (expression_statement "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);" (assignment_expression "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" identifier = (pointer_expression "*(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" * (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624" (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8" identifier + (binary_expression "iVar4 * 8" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "*pbVar22 = 0x22;" (assignment_expression "*pbVar22 = 0x22" (pointer_expression "*pbVar22" * identifier) = number_literal) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar15,uVar11,iVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "pbVar21 = pbVar15 + iVar3 + 1;" (assignment_expression "pbVar21 = pbVar15 + iVar3 + 1" identifier = (binary_expression "pbVar15 + iVar3 + 1" (binary_expression "pbVar15 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar15[iVar3] = 0x22;" (assignment_expression "pbVar15[iVar3] = 0x22" (subscript_expression "pbVar15[iVar3]" identifier [ identifier ]) = number_literal) ;) (labeled_statement "LAB_00298360:\n        pbVar23 = pbVar21;" statement_identifier : (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" identifier = identifier) ;)) (if_statement "if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" if (parenthesized_expression "(bVar10 == 0x54)" ( (binary_expression "bVar10 == 0x54" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" { (if_statement "if (pbVar20[1] != 0x4b) goto LAB_0029817c;" if (parenthesized_expression "(pbVar20[1] != 0x4b)" ( (binary_expression "pbVar20[1] != 0x4b" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (if_statement "if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" if (parenthesized_expression "(pbVar20[2] == 0x42)" ( (binary_expression "pbVar20[2] == 0x42" (subscript_expression "pbVar20[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" { (if_statement "if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }" if (parenthesized_expression "(pbVar20[3] == 0)" ( (binary_expression "pbVar20[3] == 0" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *pbVar21 = 0;\n              return pbVar17;\n            }" { (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (break_statement "break;" break ;) })) (if_statement "if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;" if (parenthesized_expression "((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f))" ( (binary_expression "(pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" (parenthesized_expression "(pbVar20[2] != 0x5f)" ( (binary_expression "pbVar20[2] != 0x5f" (subscript_expression "pbVar20[2]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" ( (comma_expression "pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f" (assignment_expression "pbVar22 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) , (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar10 = pbVar20[4];" (assignment_expression "bVar10 = pbVar20[4]" identifier = (subscript_expression "pbVar20[4]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar20 + 4;" (assignment_expression "pbVar13 = pbVar20 + 4" identifier = (binary_expression "pbVar20 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar21 = 0x2e;" (assignment_expression "*pbVar21 = 0x2e" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (goto_statement "goto LAB_0029811c;" goto statement_identifier ;) })) (if_statement "if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" if (parenthesized_expression "(bVar10 == 0x45)" ( (binary_expression "bVar10 == 0x45" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" { (if_statement "if (pbVar20[1] != 0) goto LAB_0029817c;" if (parenthesized_expression "(pbVar20[1] != 0)" ( (binary_expression "pbVar20[1] != 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (if_statement "if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" if (parenthesized_expression "(bVar10 == 0x50)" ( (binary_expression "bVar10 == 0x50" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" { (if_statement "if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            *pbVar21 = 0;\n            return pbVar17;\n          }" { (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;) })) (if_statement "if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" if (parenthesized_expression "(bVar10 == 0x4e)" ( (binary_expression "bVar10 == 0x4e" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" { (if_statement "if (pbVar20[1] == 0) goto LAB_0029825c;" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0029825c;" goto statement_identifier ;)) (labeled_statement "LAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;" statement_identifier : (if_statement "if (bVar10 != 0x44) goto LAB_0029817c;" if (parenthesized_expression "(bVar10 != 0x44)" ( (binary_expression "bVar10 != 0x44" identifier != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;))) (if_statement "if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" if (parenthesized_expression "(pbVar20[1] == 0x41)" ( (binary_expression "pbVar20[1] == 0x41" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }" { (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3da4;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3da4" identifier = (binary_expression "PTR_DAT_0043226c + 0x3da4" identifier + number_literal)) ;) }) (else_clause "else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" else (compound_statement "{\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" { (if_statement "if (pbVar20[1] != 0x46) break;" if (parenthesized_expression "(pbVar20[1] != 0x46)" ( (binary_expression "pbVar20[1] != 0x46" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3d98;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3d98" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d98" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar21,puVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "pbVar21[iVar3] = 0;" (assignment_expression "pbVar21[iVar3] = 0" (subscript_expression "pbVar21[iVar3]" identifier [ identifier ]) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (if_statement "if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" if (parenthesized_expression "(bVar10 != 0x53)" ( (binary_expression "bVar10 != 0x53" identifier != number_literal) )) (compound_statement "{\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" { (if_statement "if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" if (parenthesized_expression "(bVar10 == 0x58)" ( (binary_expression "bVar10 == 0x58" identifier == number_literal) )) (compound_statement "{\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" { (do_statement "do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);" do (compound_statement "{\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            }" { (do_statement "do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);" do (compound_statement "{\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) }) while (parenthesized_expression "(bVar10 == 0x6e)" ( (binary_expression "bVar10 == 0x6e" identifier == number_literal) )) ;) }) while (parenthesized_expression "(bVar10 == 0x62)" ( (binary_expression "bVar10 == 0x62" identifier == number_literal) )) ;) (if_statement "if (bVar10 == 0x53) goto LAB_002983d0;" if (parenthesized_expression "(bVar10 == 0x53)" ( (binary_expression "bVar10 == 0x53" identifier == number_literal) )) (goto_statement "goto LAB_002983d0;" goto statement_identifier ;)) })) (goto_statement "goto LAB_002984fc;" goto statement_identifier ;) })) (if_statement "if (pbVar20[1] == 0) break;" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002983d0:\n        bVar10 = pbVar20[1];" statement_identifier : (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;)) (if_statement "if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;" if (parenthesized_expression "((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))))" ( (binary_expression "(bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" ( (parenthesized_expression "(bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))" ( (comma_expression "bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)" (assignment_expression "bVar16 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) , (binary_expression "bVar16 != 0x5f && (bVar16 != 0)" (binary_expression "bVar16 != 0x5f" identifier != number_literal) && (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar7;" (assignment_expression "puVar18 = puVar7" identifier = identifier) ;) (if_statement "if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" if (parenthesized_expression "(bVar10 != 0x4f)" ( (binary_expression "bVar10 != 0x4f" identifier != number_literal) )) (compound_statement "{\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" { (if_statement "if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" if (parenthesized_expression "((char)bVar10 < 'P')" ( (binary_expression "(char)bVar10 < 'P'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'P'" ' character ')) )) (compound_statement "{\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }" { (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) (if_statement "if (bVar10 != 0x49) break;" if (parenthesized_expression "(bVar10 != 0x49)" ( (binary_expression "bVar10 != 0x49" identifier != number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" else (compound_statement "{\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" { (expression_statement "puVar18 = puVar8;" (assignment_expression "puVar18 = puVar8" identifier = identifier) ;) (if_statement "if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" if (parenthesized_expression "(bVar10 != 0x52)" ( (binary_expression "bVar10 != 0x52" identifier != number_literal) )) (compound_statement "{\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" { (if_statement "if (bVar10 != 0x57) break;" if (parenthesized_expression "(bVar10 != 0x57)" ( (binary_expression "bVar10 != 0x57" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar1 + 0x3d90;" (assignment_expression "puVar18 = puVar1 + 0x3d90" identifier = (binary_expression "puVar1 + 0x3d90" identifier + number_literal)) ;) })) }))) })) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar21,puVar18)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18)" ( identifier )))) ;) (expression_statement "pbVar23 = pbVar21 + iVar3;" (assignment_expression "pbVar23 = pbVar21 + iVar3" identifier = (binary_expression "pbVar21 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" else (compound_statement "{\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" { (do_statement "do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);" do (compound_statement "{\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        }" { (do_statement "do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);" do (compound_statement "{\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          }" { (expression_statement "pbVar15 = pbVar13;" (assignment_expression "pbVar15 = pbVar13" identifier = identifier) ;) (expression_statement "pbVar20 = pbVar15 + 1;" (assignment_expression "pbVar20 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar22 = bVar10;" (assignment_expression "*pbVar22 = bVar10" (pointer_expression "*pbVar22" * identifier) = identifier) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "pbVar21 = pbVar22 + 1;" (assignment_expression "pbVar21 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar22 = pbVar21;" (assignment_expression "pbVar22 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (if_statement "if (bVar10 != 0x5f) goto LAB_00298360;" if (parenthesized_expression "(bVar10 != 0x5f)" ( (binary_expression "bVar10 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_00298360;" goto statement_identifier ;)) (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar15[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar15[2] * 2" identifier + (binary_expression "(uint)pbVar15[2] * 2" (cast_expression "(uint)pbVar15[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar15[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (labeled_statement "LAB_0029817c:\n        bVar16 = *pbVar20;" statement_identifier : (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;)) }))) (if_statement "if (bVar16 != 0x5f) goto LAB_0029864c;" if (parenthesized_expression "(bVar16 != 0x5f)" ( (binary_expression "bVar16 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_0029864c;" goto statement_identifier ;)) (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" if (parenthesized_expression "(bVar10 != 0x5f)" ( (binary_expression "bVar10 != 0x5f" identifier != number_literal) )) (compound_statement "{\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" { (if_statement "if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" if (parenthesized_expression "((bVar10 == 0x42) || (bVar10 == 0x45))" ( (binary_expression "(bVar10 == 0x42) || (bVar10 == 0x45)" (parenthesized_expression "(bVar10 == 0x42)" ( (binary_expression "bVar10 == 0x42" identifier == number_literal) )) || (parenthesized_expression "(bVar10 == 0x45)" ( (binary_expression "bVar10 == 0x45" identifier == number_literal) ))) )) (compound_statement "{\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" { (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) })) (if_statement "if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }" if (parenthesized_expression "((bVar10 == 0x73) && (pbVar20[1] == 0))" ( (binary_expression "(bVar10 == 0x73) && (pbVar20[1] == 0)" (parenthesized_expression "(bVar10 == 0x73)" ( (binary_expression "bVar10 == 0x73" identifier == number_literal) )) && (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            *pbVar23 = 0;\n            return pbVar17;\n          }" { (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) })) (break_statement "break;" break ;) })) (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar13 = pbVar20 + 2;" (assignment_expression "pbVar13 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (if_statement "if ((uVar6 & 4) != 0) goto LAB_002985d8;" if (parenthesized_expression "((uVar6 & 4) != 0)" ( (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002985d8;" goto statement_identifier ;)) (if_statement "if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;" if (parenthesized_expression "((bVar10 == 0x5f) && (pbVar20[3] != 0x5f))" ( (binary_expression "(bVar10 == 0x5f) && (pbVar20[3] != 0x5f)" (parenthesized_expression "(bVar10 == 0x5f)" ( (binary_expression "bVar10 == 0x5f" identifier == number_literal) )) && (parenthesized_expression "(pbVar20[3] != 0x5f)" ( (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto code_r0x002981cc;" goto statement_identifier ;)) (expression_statement "pbVar22 = pbVar23 + 1;" (assignment_expression "pbVar22 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar23 = 0x2e;" (assignment_expression "*pbVar23 = 0x2e" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;) (labeled_statement "code_r0x002981cc:\n  uVar11 = 6;" statement_identifier : (expression_statement "uVar11 = 6;" (assignment_expression "uVar11 = 6" identifier = number_literal) ;)) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);" (assignment_expression "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" identifier = (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + -0x6658" identifier + number_literal) )))) ;) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3dac;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3dac" identifier = (binary_expression "PTR_DAT_0043226c + 0x3dac" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar19;" (assignment_expression "puVar14 = puVar19" identifier = identifier) ;) (do_statement "do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );" do (compound_statement "{\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  }" { (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);" (assignment_expression "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar13,puVar12,uVar11)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" { (expression_statement "uVar11 = puVar19[iVar3 * 2 + 1];" (assignment_expression "uVar11 = puVar19[iVar3 * 2 + 1]" identifier = (subscript_expression "puVar19[iVar3 * 2 + 1]" identifier [ (binary_expression "iVar3 * 2 + 1" (binary_expression "iVar3 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "pbVar21 = pbVar23 + iVar3;" (assignment_expression "pbVar21 = pbVar23 + iVar3" identifier = (binary_expression "pbVar23 + iVar3" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar23,uVar11,iVar3)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0029825c:\n      *pbVar21 = 0;" statement_identifier : (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;)) (return_statement "return pbVar17;" return identifier ;) })) (expression_statement "puVar12 = (undefined *)*puVar14;" (assignment_expression "puVar12 = (undefined *)*puVar14" identifier = (cast_expression "(undefined *)*puVar14" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar12 == (undefined *)0x0)" ( (binary_expression "puVar12 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar12)" ( identifier )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar22[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar22[2] * 2" identifier + (binary_expression "(uint)pbVar22[2] * 2" (cast_expression "(uint)pbVar22[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar22[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" { (labeled_statement "LAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" statement_identifier : (do_statement "do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" do (compound_statement "{\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    }" { (expression_statement "pbVar22 = pbVar13;" (assignment_expression "pbVar22 = pbVar13" identifier = identifier) ;) (expression_statement "bVar16 = pbVar22[1];" (assignment_expression "bVar16 = pbVar22[1]" identifier = (subscript_expression "pbVar22[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar22 + 1;" (assignment_expression "pbVar20 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" ( (binary_expression "puVar2 + (uint)bVar16 * 2" identifier + (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;)) (if_statement "if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" if (parenthesized_expression "(bVar16 != 0x5f)" ( (binary_expression "bVar16 != 0x5f" identifier != number_literal) )) (compound_statement "{\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" { (if_statement "if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" if (parenthesized_expression "(bVar16 == 0x58)" ( (binary_expression "bVar16 == 0x58" identifier == number_literal) )) (compound_statement "{\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" { (for_statement "for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }" for ( (assignment_expression "pbVar20 = pbVar22 + 2" identifier = (binary_expression "pbVar22 + 2" identifier + number_literal)) ; (parenthesized_expression "(bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62))" ( (comma_expression "bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62)" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) , (binary_expression "bVar16 == 0x6e || (bVar16 == 0x62)" (binary_expression "bVar16 == 0x6e" identifier == number_literal) || (parenthesized_expression "(bVar16 == 0x62)" ( (binary_expression "bVar16 == 0x62" identifier == number_literal) )))) )) ; (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ) (compound_statement "{\n        }" { })) })) (labeled_statement "LAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" statement_identifier : (if_statement "if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" if (parenthesized_expression "(bVar16 == 0x2e)" ( (binary_expression "bVar16 == 0x2e" identifier == number_literal) )) (compound_statement "{\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" { (if_statement "if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;" if (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar20[1] * 2)" ( (binary_expression "puVar2 + (uint)pbVar20[1] * 2" identifier + (binary_expression "(uint)pbVar20[1] * 2" (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar16 = pbVar20[2];" (assignment_expression "bVar16 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" ( (binary_expression "puVar2 + (uint)bVar16 * 2" identifier + (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) })) }))) (if_statement "if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }" if (parenthesized_expression "(bVar16 == 0)" ( (binary_expression "bVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        *pbVar23 = 0;\n        return pbVar17;\n      }" { (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (break_statement "break;" break ;) })) })) (labeled_statement "LAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);" statement_identifier : (expression_statement "(*(code *)PTR_free_00436800)(pbVar17);" (call_expression "(*(code *)PTR_free_00436800)(pbVar17)" (parenthesized_expression "(*(code *)PTR_free_00436800)" ( (pointer_expression "*(code *)PTR_free_00436800" * (cast_expression "(code *)PTR_free_00436800" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17)" ( identifier ))) ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 3);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 3)" identifier = (cast_expression "(byte *)xmalloc(iVar3 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 3)" identifier (argument_list "(iVar3 + 3)" ( (binary_expression "iVar3 + 3" identifier + number_literal) ))))) ;) (if_statement "if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" if (parenthesized_expression "(*param_1 != 0x3c)" ( (binary_expression "*param_1 != 0x3c" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" { (expression_statement "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);" (call_expression "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" (parenthesized_expression "(*(code *)PTR_sprintf_004368f8)" ( (pointer_expression "*(code *)PTR_sprintf_004368f8" * (cast_expression "(code *)PTR_sprintf_004368f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x3dbc" identifier + number_literal) , identifier ))) ;) (return_statement "return pbVar17;" return identifier ;) })) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17,param_1)" ( identifier , identifier ))) ;) (return_statement "return pbVar17;" return identifier ;) })))
(translation_unit "char * ada_demangle(char *mangled,int option)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  ushort uVar7;\n  int iVar5;\n  int iVar6;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined *puVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte bVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_s__0043226c;\n  puVar13 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    mangled = mangled + 5;\n  }\n  pbVar18 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n    pbVar18 = (byte *)xmalloc(iVar3 + 8);\n    bVar11 = *mangled;\n    puVar8 = PTR_s__0043226c + 0x3d78;\n    puVar9 = PTR_s__0043226c + 0x3d80;\n    puVar10 = PTR_s__0043226c + 0x3d88;\n    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n    pbVar14 = (byte *)mangled;\n    pbVar23 = pbVar18;\nLAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar12 = 6;\n  iVar3 = 0;\n  puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar13 = PTR_s__0043226c + 0x3dac;\n  puVar15 = puVar20;\n  do {\n    puVar15 = puVar15 + 2;\n    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);\n    if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }\n    puVar13 = (undefined *)*puVar15;\n    iVar3 = iVar3 + 1;\n    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);\n    if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar18);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n  pcVar4 = (char *)xmalloc(iVar3 + 3);\n  if (*mangled != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);\n    return pcVar4;\n  }\n  (*(code *)PTR_strcpy_00436758)(pcVar4,mangled);\n  return pcVar4;\n}\n\n" (function_definition "char * ada_demangle(char *mangled,int option)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  ushort uVar7;\n  int iVar5;\n  int iVar6;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined *puVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte bVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_s__0043226c;\n  puVar13 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    mangled = mangled + 5;\n  }\n  pbVar18 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n    pbVar18 = (byte *)xmalloc(iVar3 + 8);\n    bVar11 = *mangled;\n    puVar8 = PTR_s__0043226c + 0x3d78;\n    puVar9 = PTR_s__0043226c + 0x3d80;\n    puVar10 = PTR_s__0043226c + 0x3d88;\n    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n    pbVar14 = (byte *)mangled;\n    pbVar23 = pbVar18;\nLAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar12 = 6;\n  iVar3 = 0;\n  puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar13 = PTR_s__0043226c + 0x3dac;\n  puVar15 = puVar20;\n  do {\n    puVar15 = puVar15 + 2;\n    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);\n    if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }\n    puVar13 = (undefined *)*puVar15;\n    iVar3 = iVar3 + 1;\n    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);\n    if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar18);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n  pcVar4 = (char *)xmalloc(iVar3 + 3);\n  if (*mangled != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);\n    return pcVar4;\n  }\n  (*(code *)PTR_strcpy_00436758)(pcVar4,mangled);\n  return pcVar4;\n}" primitive_type (pointer_declarator "* ada_demangle(char *mangled,int option)" * (function_declarator "ada_demangle(char *mangled,int option)" identifier (parameter_list "(char *mangled,int option)" ( (parameter_declaration "char *mangled" primitive_type (pointer_declarator "*mangled" * identifier)) , (parameter_declaration "int option" primitive_type identifier) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  char *pcVar4;\n  ushort uVar7;\n  int iVar5;\n  int iVar6;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined *puVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte bVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 *puVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_s__0043226c;\n  puVar13 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    mangled = mangled + 5;\n  }\n  pbVar18 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n    pbVar18 = (byte *)xmalloc(iVar3 + 8);\n    bVar11 = *mangled;\n    puVar8 = PTR_s__0043226c + 0x3d78;\n    puVar9 = PTR_s__0043226c + 0x3d80;\n    puVar10 = PTR_s__0043226c + 0x3d88;\n    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n    pbVar14 = (byte *)mangled;\n    pbVar23 = pbVar18;\nLAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar12 = 6;\n  iVar3 = 0;\n  puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar13 = PTR_s__0043226c + 0x3dac;\n  puVar15 = puVar20;\n  do {\n    puVar15 = puVar15 + 2;\n    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);\n    if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }\n    puVar13 = (undefined *)*puVar15;\n    iVar3 = iVar3 + 1;\n    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);\n    if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar18);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n  pcVar4 = (char *)xmalloc(iVar3 + 3);\n  if (*mangled != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);\n    return pcVar4;\n  }\n  (*(code *)PTR_strcpy_00436758)(pcVar4,mangled);\n  return pcVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5);" (assignment_expression "iVar3 = (*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(mangled,PTR_s__0043226c + 0x3db4,5)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(mangled,PTR_s__0043226c + 0x3db4,5)" ( identifier , (binary_expression "PTR_s__0043226c + 0x3db4" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar2 = PTR__sch_istable_004356e0;" (assignment_expression "puVar2 = PTR__sch_istable_004356e0" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s__0043226c;" (assignment_expression "puVar1 = PTR_s__0043226c" identifier = identifier) ;) (expression_statement "puVar13 = PTR_PTR__wfilebuf_004321f8;" (assignment_expression "puVar13 = PTR_PTR__wfilebuf_004321f8" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    mangled = mangled + 5;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    mangled = mangled + 5;\n  }" { (expression_statement "mangled = mangled + 5;" (assignment_expression "mangled = mangled + 5" identifier = (binary_expression "mangled + 5" identifier + number_literal)) ;) })) (expression_statement "pbVar18 = (byte *)0x0;" (assignment_expression "pbVar18 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n    pbVar18 = (byte *)xmalloc(iVar3 + 8);\n    bVar11 = *mangled;\n    puVar8 = PTR_s__0043226c + 0x3d78;\n    puVar9 = PTR_s__0043226c + 0x3d80;\n    puVar10 = PTR_s__0043226c + 0x3d88;\n    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n    pbVar14 = (byte *)mangled;\n    pbVar23 = pbVar18;\nLAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );\n  }" if (parenthesized_expression "((*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0)" ( (binary_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8) != 0" (parenthesized_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8)" ( (binary_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2) & 8" (pointer_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2)" * (cast_expression "(ushort *)(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2)" ( (binary_expression "PTR__sch_istable_004356e0 + (uint)(byte)*mangled * 2" identifier + (binary_expression "(uint)(byte)*mangled * 2" (binary_expression "(uint)(byte)*mangled" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);\n    pbVar18 = (byte *)xmalloc(iVar3 + 8);\n    bVar11 = *mangled;\n    puVar8 = PTR_s__0043226c + 0x3d78;\n    puVar9 = PTR_s__0043226c + 0x3d80;\n    puVar10 = PTR_s__0043226c + 0x3d88;\n    uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n    pbVar14 = (byte *)mangled;\n    pbVar23 = pbVar18;\nLAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );\n  }" { (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(mangled)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(mangled)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(mangled)" ( identifier )))) ;) (expression_statement "pbVar18 = (byte *)xmalloc(iVar3 + 8);" (assignment_expression "pbVar18 = (byte *)xmalloc(iVar3 + 8)" identifier = (cast_expression "(byte *)xmalloc(iVar3 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 8)" identifier (argument_list "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar11 = *mangled;" (assignment_expression "bVar11 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "puVar8 = PTR_s__0043226c + 0x3d78;" (assignment_expression "puVar8 = PTR_s__0043226c + 0x3d78" identifier = (binary_expression "PTR_s__0043226c + 0x3d78" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_s__0043226c + 0x3d80;" (assignment_expression "puVar9 = PTR_s__0043226c + 0x3d80" identifier = (binary_expression "PTR_s__0043226c + 0x3d80" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR_s__0043226c + 0x3d88;" (assignment_expression "puVar10 = PTR_s__0043226c + 0x3d88" identifier = (binary_expression "PTR_s__0043226c + 0x3d88" identifier + number_literal)) ;) (expression_statement "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);" (assignment_expression "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar11 * 2)" ( (binary_expression "puVar2 + (uint)bVar11 * 2" identifier + (binary_expression "(uint)bVar11 * 2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar14 = (byte *)mangled;" (assignment_expression "pbVar14 = (byte *)mangled" identifier = (cast_expression "(byte *)mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar23 = pbVar18;" (assignment_expression "pbVar23 = pbVar18" identifier = identifier) ;) (labeled_statement "LAB_0029811c:\n    do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );" statement_identifier : (do_statement "do {\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    } while( true );" do (compound_statement "{\n      if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }\n      if (bVar17 != 0x5f) goto LAB_0029864c;\n      bVar11 = pbVar21[1];\n      if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }\n      bVar11 = pbVar21[2];\n      uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n      pbVar14 = pbVar21 + 2;\n      if ((uVar7 & 4) != 0) goto LAB_002985d8;\n      if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar23 = pbVar24 + 1;\n      *pbVar24 = 0x2e;\n    }" { (if_statement "if ((uVar7 & 8) == 0) {\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }" if (parenthesized_expression "((uVar7 & 8) == 0)" ( (binary_expression "(uVar7 & 8) == 0" (parenthesized_expression "(uVar7 & 8)" ( (binary_expression "uVar7 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (bVar11 != 0x4f) break;\n        iVar3 = 4;\n        iVar5 = 0;\n        puVar19 = PTR_s__0043226c + 0x3d70;\n        puVar15 = (undefined4 *)(puVar13 + -0x6620);\n        while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }\n        pbVar16 = pbVar23 + 1;\n        pbVar21 = pbVar14 + iVar3;\n        uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n        *pbVar23 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);\n        bVar11 = *pbVar21;\n        pbVar22 = pbVar16 + iVar3 + 1;\n        pbVar16[iVar3] = 0x22;\nLAB_00298360:\n        pbVar24 = pbVar22;\n        if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }\n        if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar21[1] == 0) break;\nLAB_002983d0:\n        bVar11 = pbVar21[1];\n        if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;\n        puVar19 = puVar8;\n        if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar21 = pbVar21 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n        pbVar24 = pbVar22 + iVar3;\n      }" { (if_statement "if (bVar11 != 0x4f) break;" if (parenthesized_expression "(bVar11 != 0x4f)" ( (binary_expression "bVar11 != 0x4f" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "puVar19 = PTR_s__0043226c + 0x3d70;" (assignment_expression "puVar19 = PTR_s__0043226c + 0x3d70" identifier = (binary_expression "PTR_s__0043226c + 0x3d70" identifier + number_literal)) ;) (expression_statement "puVar15 = (undefined4 *)(puVar13 + -0x6620);" (assignment_expression "puVar15 = (undefined4 *)(puVar13 + -0x6620)" identifier = (cast_expression "(undefined4 *)(puVar13 + -0x6620)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + -0x6620)" ( (binary_expression "puVar13 + -0x6620" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);\n          if (iVar6 == 0) break;\n          puVar19 = (undefined *)*puVar15;\n          iVar5 = iVar5 + 1;\n          if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);\n          puVar15 = puVar15 + 2;\n        }" { (expression_statement "iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3);" (assignment_expression "iVar6 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar14,puVar19,iVar3)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar14,puVar19,iVar3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar19 = (undefined *)*puVar15;" (assignment_expression "puVar19 = (undefined *)*puVar15" identifier = (cast_expression "(undefined *)*puVar15" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (puVar19 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar19 == (undefined *)0x0)" ( (binary_expression "puVar19 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar19)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19)" ( identifier )))) ;) (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) })) (expression_statement "pbVar16 = pbVar23 + 1;" (assignment_expression "pbVar16 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar21 = pbVar14 + iVar3;" (assignment_expression "pbVar21 = pbVar14 + iVar3" identifier = (binary_expression "pbVar14 + iVar3" identifier + identifier)) ;) (expression_statement "uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624);" (assignment_expression "uVar12 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624)" identifier = (pointer_expression "*(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624)" * (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar5 * 8 + -0x6624" (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar5 * 8" identifier + (binary_expression "iVar5 * 8" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar12)" ( identifier )))) ;) (expression_statement "*pbVar23 = 0x22;" (assignment_expression "*pbVar23 = 0x22" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar16,uVar12,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar16,uVar12,iVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "bVar11 = *pbVar21;" (assignment_expression "bVar11 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;) (expression_statement "pbVar22 = pbVar16 + iVar3 + 1;" (assignment_expression "pbVar22 = pbVar16 + iVar3 + 1" identifier = (binary_expression "pbVar16 + iVar3 + 1" (binary_expression "pbVar16 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar16[iVar3] = 0x22;" (assignment_expression "pbVar16[iVar3] = 0x22" (subscript_expression "pbVar16[iVar3]" identifier [ identifier ]) = number_literal) ;) (labeled_statement "LAB_00298360:\n        pbVar24 = pbVar22;" statement_identifier : (expression_statement "pbVar24 = pbVar22;" (assignment_expression "pbVar24 = pbVar22" identifier = identifier) ;)) (if_statement "if (bVar11 == 0x54) {\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }" if (parenthesized_expression "(bVar11 == 0x54)" ( (binary_expression "bVar11 == 0x54" identifier == number_literal) )) (compound_statement "{\n          if (pbVar21[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }\n          if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;\n          bVar11 = pbVar21[4];\n          pbVar14 = pbVar21 + 4;\n          *pbVar22 = 0x2e;\n          uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);\n          goto LAB_0029811c;\n        }" { (if_statement "if (pbVar21[1] != 0x4b) goto LAB_0029817c;" if (parenthesized_expression "(pbVar21[1] != 0x4b)" ( (binary_expression "pbVar21[1] != 0x4b" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (if_statement "if (pbVar21[2] == 0x42) {\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }" if (parenthesized_expression "(pbVar21[2] == 0x42)" ( (binary_expression "pbVar21[2] == 0x42" (subscript_expression "pbVar21[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }\n            break;\n          }" { (if_statement "if (pbVar21[3] == 0) {\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }" if (parenthesized_expression "(pbVar21[3] == 0)" ( (binary_expression "pbVar21[3] == 0" (subscript_expression "pbVar21[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *pbVar22 = 0;\n              return (char *)pbVar18;\n            }" { (expression_statement "*pbVar22 = 0;" (assignment_expression "*pbVar22 = 0" (pointer_expression "*pbVar22" * identifier) = number_literal) ;) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (break_statement "break;" break ;) })) (if_statement "if ((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)) break;" if (parenthesized_expression "((pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f))" ( (binary_expression "(pbVar21[2] != 0x5f) || (pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)" (parenthesized_expression "(pbVar21[2] != 0x5f)" ( (binary_expression "pbVar21[2] != 0x5f" (subscript_expression "pbVar21[2]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f)" ( (comma_expression "pbVar23 = pbVar22 + 1, pbVar21[3] != 0x5f" (assignment_expression "pbVar23 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) , (binary_expression "pbVar21[3] != 0x5f" (subscript_expression "pbVar21[3]" identifier [ number_literal ]) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar11 = pbVar21[4];" (assignment_expression "bVar11 = pbVar21[4]" identifier = (subscript_expression "pbVar21[4]" identifier [ number_literal ])) ;) (expression_statement "pbVar14 = pbVar21 + 4;" (assignment_expression "pbVar14 = pbVar21 + 4" identifier = (binary_expression "pbVar21 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar22 = 0x2e;" (assignment_expression "*pbVar22 = 0x2e" (pointer_expression "*pbVar22" * identifier) = number_literal) ;) (expression_statement "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);" (assignment_expression "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar11 * 2)" ( (binary_expression "puVar2 + (uint)bVar11 * 2" identifier + (binary_expression "(uint)bVar11 * 2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (goto_statement "goto LAB_0029811c;" goto statement_identifier ;) })) (if_statement "if (bVar11 == 0x45) {\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }" if (parenthesized_expression "(bVar11 == 0x45)" ( (binary_expression "bVar11 == 0x45" identifier == number_literal) )) (compound_statement "{\n          if (pbVar21[1] != 0) goto LAB_0029817c;\n          break;\n        }" { (if_statement "if (pbVar21[1] != 0) goto LAB_0029817c;" if (parenthesized_expression "(pbVar21[1] != 0)" ( (binary_expression "pbVar21[1] != 0" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (if_statement "if (bVar11 == 0x50) {\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }" if (parenthesized_expression "(bVar11 == 0x50)" ( (binary_expression "bVar11 == 0x50" identifier == number_literal) )) (compound_statement "{\n          if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }\n          goto LAB_0029817c;\n        }" { (if_statement "if (pbVar21[1] == 0) {\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }" if (parenthesized_expression "(pbVar21[1] == 0)" ( (binary_expression "pbVar21[1] == 0" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            *pbVar22 = 0;\n            return (char *)pbVar18;\n          }" { (expression_statement "*pbVar22 = 0;" (assignment_expression "*pbVar22 = 0" (pointer_expression "*pbVar22" * identifier) = number_literal) ;) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;) })) (if_statement "if (bVar11 == 0x4e) {\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }" if (parenthesized_expression "(bVar11 == 0x4e)" ( (binary_expression "bVar11 == 0x4e" identifier == number_literal) )) (compound_statement "{\n          if (pbVar21[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;\n          if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);\n          pbVar22[iVar3] = 0;\n          return (char *)pbVar18;\n        }" { (if_statement "if (pbVar21[1] == 0) goto LAB_0029825c;" if (parenthesized_expression "(pbVar21[1] == 0)" ( (binary_expression "pbVar21[1] == 0" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0029825c;" goto statement_identifier ;)) (labeled_statement "LAB_002984fc:\n          if (bVar11 != 0x44) goto LAB_0029817c;" statement_identifier : (if_statement "if (bVar11 != 0x44) goto LAB_0029817c;" if (parenthesized_expression "(bVar11 != 0x44)" ( (binary_expression "bVar11 != 0x44" identifier != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;))) (if_statement "if (pbVar21[1] == 0x41) {\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }" if (parenthesized_expression "(pbVar21[1] == 0x41)" ( (binary_expression "pbVar21[1] == 0x41" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            puVar13 = PTR_s__0043226c + 0x3da4;\n          }" { (expression_statement "puVar13 = PTR_s__0043226c + 0x3da4;" (assignment_expression "puVar13 = PTR_s__0043226c + 0x3da4" identifier = (binary_expression "PTR_s__0043226c + 0x3da4" identifier + number_literal)) ;) }) (else_clause "else {\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }" else (compound_statement "{\n            if (pbVar21[1] != 0x46) break;\n            puVar13 = PTR_s__0043226c + 0x3d98;\n          }" { (if_statement "if (pbVar21[1] != 0x46) break;" if (parenthesized_expression "(pbVar21[1] != 0x46)" ( (binary_expression "pbVar21[1] != 0x46" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar13 = PTR_s__0043226c + 0x3d98;" (assignment_expression "puVar13 = PTR_s__0043226c + 0x3d98" identifier = (binary_expression "PTR_s__0043226c + 0x3d98" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar22,puVar13);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar22,puVar13)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar22,puVar13)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar13)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar13)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar13)" ( identifier )))) ;) (expression_statement "pbVar22[iVar3] = 0;" (assignment_expression "pbVar22[iVar3] = 0" (subscript_expression "pbVar22[iVar3]" identifier [ identifier ]) = number_literal) ;) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (if_statement "if (bVar11 != 0x53) {\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" if (parenthesized_expression "(bVar11 != 0x53)" ( (binary_expression "bVar11 != 0x53" identifier != number_literal) )) (compound_statement "{\n          if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" { (if_statement "if (bVar11 == 0x58) {\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }" if (parenthesized_expression "(bVar11 == 0x58)" ( (binary_expression "bVar11 == 0x58" identifier == number_literal) )) (compound_statement "{\n            do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);\n            if (bVar11 == 0x53) goto LAB_002983d0;\n          }" { (do_statement "do {\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            } while (bVar11 == 0x62);" do (compound_statement "{\n              do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);\n            }" { (do_statement "do {\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              } while (bVar11 == 0x6e);" do (compound_statement "{\n                pbVar21 = pbVar21 + 1;\n                bVar11 = *pbVar21;\n              }" { (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar21;" (assignment_expression "bVar11 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;) }) while (parenthesized_expression "(bVar11 == 0x6e)" ( (binary_expression "bVar11 == 0x6e" identifier == number_literal) )) ;) }) while (parenthesized_expression "(bVar11 == 0x62)" ( (binary_expression "bVar11 == 0x62" identifier == number_literal) )) ;) (if_statement "if (bVar11 == 0x53) goto LAB_002983d0;" if (parenthesized_expression "(bVar11 == 0x53)" ( (binary_expression "bVar11 == 0x53" identifier == number_literal) )) (goto_statement "goto LAB_002983d0;" goto statement_identifier ;)) })) (goto_statement "goto LAB_002984fc;" goto statement_identifier ;) })) (if_statement "if (pbVar21[1] == 0) break;" if (parenthesized_expression "(pbVar21[1] == 0)" ( (binary_expression "pbVar21[1] == 0" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002983d0:\n        bVar11 = pbVar21[1];" statement_identifier : (expression_statement "bVar11 = pbVar21[1];" (assignment_expression "bVar11 = pbVar21[1]" identifier = (subscript_expression "pbVar21[1]" identifier [ number_literal ])) ;)) (if_statement "if ((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))) break;" if (parenthesized_expression "((bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0))))" ( (binary_expression "(bVar11 == 0) || ((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))" (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "((bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)))" ( (parenthesized_expression "(bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0))" ( (comma_expression "bVar17 = pbVar21[2], bVar17 != 0x5f && (bVar17 != 0)" (assignment_expression "bVar17 = pbVar21[2]" identifier = (subscript_expression "pbVar21[2]" identifier [ number_literal ])) , (binary_expression "bVar17 != 0x5f && (bVar17 != 0)" (binary_expression "bVar17 != 0x5f" identifier != number_literal) && (parenthesized_expression "(bVar17 != 0)" ( (binary_expression "bVar17 != 0" identifier != number_literal) )))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar19 = puVar8;" (assignment_expression "puVar19 = puVar8" identifier = identifier) ;) (if_statement "if (bVar11 != 0x4f) {\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }" if (parenthesized_expression "(bVar11 != 0x4f)" ( (binary_expression "bVar11 != 0x4f" identifier != number_literal) )) (compound_statement "{\n          if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }\n        }" { (if_statement "if ((char)bVar11 < 'P') {\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }\n          else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }" if (parenthesized_expression "((char)bVar11 < 'P')" ( (binary_expression "(char)bVar11 < 'P'" (cast_expression "(char)bVar11" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'P'" ' character ')) )) (compound_statement "{\n            puVar19 = puVar10;\n            if (bVar11 != 0x49) break;\n          }" { (expression_statement "puVar19 = puVar10;" (assignment_expression "puVar19 = puVar10" identifier = identifier) ;) (if_statement "if (bVar11 != 0x49) break;" if (parenthesized_expression "(bVar11 != 0x49)" ( (binary_expression "bVar11 != 0x49" identifier != number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else {\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }" else (compound_statement "{\n            puVar19 = puVar9;\n            if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }\n          }" { (expression_statement "puVar19 = puVar9;" (assignment_expression "puVar19 = puVar9" identifier = identifier) ;) (if_statement "if (bVar11 != 0x52) {\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }" if (parenthesized_expression "(bVar11 != 0x52)" ( (binary_expression "bVar11 != 0x52" identifier != number_literal) )) (compound_statement "{\n              if (bVar11 != 0x57) break;\n              puVar19 = puVar1 + 0x3d90;\n            }" { (if_statement "if (bVar11 != 0x57) break;" if (parenthesized_expression "(bVar11 != 0x57)" ( (binary_expression "bVar11 != 0x57" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar19 = puVar1 + 0x3d90;" (assignment_expression "puVar19 = puVar1 + 0x3d90" identifier = (binary_expression "puVar1 + 0x3d90" identifier + number_literal)) ;) })) }))) })) (expression_statement "pbVar21 = pbVar21 + 2;" (assignment_expression "pbVar21 = pbVar21 + 2" identifier = (binary_expression "pbVar21 + 2" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar22,puVar19);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar22,puVar19)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar22,puVar19)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar19)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar19)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19)" ( identifier )))) ;) (expression_statement "pbVar24 = pbVar22 + iVar3;" (assignment_expression "pbVar24 = pbVar22 + iVar3" identifier = (binary_expression "pbVar22 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }" else (compound_statement "{\n        do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar17 = *pbVar21;\n      }" { (do_statement "do {\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0);" do (compound_statement "{\n          do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);\n          if (bVar11 != 0x5f) goto LAB_00298360;\n          pbVar24 = pbVar22;\n        }" { (do_statement "do {\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          } while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0);" do (compound_statement "{\n            pbVar16 = pbVar14;\n            pbVar21 = pbVar16 + 1;\n            *pbVar23 = bVar11;\n            bVar11 = *pbVar21;\n            pbVar22 = pbVar23 + 1;\n            pbVar23 = pbVar22;\n            pbVar14 = pbVar21;\n          }" { (expression_statement "pbVar16 = pbVar14;" (assignment_expression "pbVar16 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar21 = pbVar16 + 1;" (assignment_expression "pbVar21 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar23 = bVar11;" (assignment_expression "*pbVar23 = bVar11" (pointer_expression "*pbVar23" * identifier) = identifier) ;) (expression_statement "bVar11 = *pbVar21;" (assignment_expression "bVar11 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;) (expression_statement "pbVar22 = pbVar23 + 1;" (assignment_expression "pbVar22 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar23 = pbVar22;" (assignment_expression "pbVar23 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar14 = pbVar21;" (assignment_expression "pbVar14 = pbVar21" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar11 * 2)" ( (binary_expression "puVar2 + (uint)bVar11 * 2" identifier + (binary_expression "(uint)bVar11 * 2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (if_statement "if (bVar11 != 0x5f) goto LAB_00298360;" if (parenthesized_expression "(bVar11 != 0x5f)" ( (binary_expression "bVar11 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_00298360;" goto statement_identifier ;)) (expression_statement "pbVar24 = pbVar22;" (assignment_expression "pbVar24 = pbVar22" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar16[2] * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar16[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar16[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar16[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar16[2] * 2" identifier + (binary_expression "(uint)pbVar16[2] * 2" (cast_expression "(uint)pbVar16[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar16[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (labeled_statement "LAB_0029817c:\n        bVar17 = *pbVar21;" statement_identifier : (expression_statement "bVar17 = *pbVar21;" (assignment_expression "bVar17 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;)) }))) (if_statement "if (bVar17 != 0x5f) goto LAB_0029864c;" if (parenthesized_expression "(bVar17 != 0x5f)" ( (binary_expression "bVar17 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_0029864c;" goto statement_identifier ;)) (expression_statement "bVar11 = pbVar21[1];" (assignment_expression "bVar11 = pbVar21[1]" identifier = (subscript_expression "pbVar21[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar11 != 0x5f) {\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }" if (parenthesized_expression "(bVar11 != 0x5f)" ( (binary_expression "bVar11 != 0x5f" identifier != number_literal) )) (compound_statement "{\n        if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }\n        break;\n      }" { (if_statement "if ((bVar11 == 0x42) || (bVar11 == 0x45)) {\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }" if (parenthesized_expression "((bVar11 == 0x42) || (bVar11 == 0x45))" ( (binary_expression "(bVar11 == 0x42) || (bVar11 == 0x45)" (parenthesized_expression "(bVar11 == 0x42)" ( (binary_expression "bVar11 == 0x42" identifier == number_literal) )) || (parenthesized_expression "(bVar11 == 0x45)" ( (binary_expression "bVar11 == 0x45" identifier == number_literal) ))) )) (compound_statement "{\n          bVar11 = pbVar21[2];\n          pbVar21 = pbVar21 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }\n          if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }\n        }" { (expression_statement "bVar11 = pbVar21[2];" (assignment_expression "bVar11 = pbVar21[2]" identifier = (subscript_expression "pbVar21[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar21 = pbVar21 + 2;" (assignment_expression "pbVar21 = pbVar21 + 2" identifier = (binary_expression "pbVar21 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0) {\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar11 * 2)" ( (binary_expression "puVar2 + (uint)bVar11 * 2" identifier + (binary_expression "(uint)bVar11 * 2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            pbVar21 = pbVar21 + 1;\n            bVar11 = *pbVar21;\n          }" { (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar21;" (assignment_expression "bVar11 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;) })) (if_statement "if ((bVar11 == 0x73) && (pbVar21[1] == 0)) {\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }" if (parenthesized_expression "((bVar11 == 0x73) && (pbVar21[1] == 0))" ( (binary_expression "(bVar11 == 0x73) && (pbVar21[1] == 0)" (parenthesized_expression "(bVar11 == 0x73)" ( (binary_expression "bVar11 == 0x73" identifier == number_literal) )) && (parenthesized_expression "(pbVar21[1] == 0)" ( (binary_expression "pbVar21[1] == 0" (subscript_expression "pbVar21[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            *pbVar24 = 0;\n            return (char *)pbVar18;\n          }" { (expression_statement "*pbVar24 = 0;" (assignment_expression "*pbVar24 = 0" (pointer_expression "*pbVar24" * identifier) = number_literal) ;) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) })) (break_statement "break;" break ;) })) (expression_statement "bVar11 = pbVar21[2];" (assignment_expression "bVar11 = pbVar21[2]" identifier = (subscript_expression "pbVar21[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2);" (assignment_expression "uVar7 = *(ushort *)(puVar2 + (uint)bVar11 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar11 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar11 * 2)" ( (binary_expression "puVar2 + (uint)bVar11 * 2" identifier + (binary_expression "(uint)bVar11 * 2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar14 = pbVar21 + 2;" (assignment_expression "pbVar14 = pbVar21 + 2" identifier = (binary_expression "pbVar21 + 2" identifier + number_literal)) ;) (if_statement "if ((uVar7 & 4) != 0) goto LAB_002985d8;" if (parenthesized_expression "((uVar7 & 4) != 0)" ( (binary_expression "(uVar7 & 4) != 0" (parenthesized_expression "(uVar7 & 4)" ( (binary_expression "uVar7 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002985d8;" goto statement_identifier ;)) (if_statement "if ((bVar11 == 0x5f) && (pbVar21[3] != 0x5f)) goto code_r0x002981cc;" if (parenthesized_expression "((bVar11 == 0x5f) && (pbVar21[3] != 0x5f))" ( (binary_expression "(bVar11 == 0x5f) && (pbVar21[3] != 0x5f)" (parenthesized_expression "(bVar11 == 0x5f)" ( (binary_expression "bVar11 == 0x5f" identifier == number_literal) )) && (parenthesized_expression "(pbVar21[3] != 0x5f)" ( (binary_expression "pbVar21[3] != 0x5f" (subscript_expression "pbVar21[3]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto code_r0x002981cc;" goto statement_identifier ;)) (expression_statement "pbVar23 = pbVar24 + 1;" (assignment_expression "pbVar23 = pbVar24 + 1" identifier = (binary_expression "pbVar24 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar24 = 0x2e;" (assignment_expression "*pbVar24 = 0x2e" (pointer_expression "*pbVar24" * identifier) = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;) (labeled_statement "code_r0x002981cc:\n  uVar12 = 6;" statement_identifier : (expression_statement "uVar12 = 6;" (assignment_expression "uVar12 = 6" identifier = number_literal) ;)) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);" (assignment_expression "puVar20 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" identifier = (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + -0x6658" identifier + number_literal) )))) ;) (expression_statement "puVar13 = PTR_s__0043226c + 0x3dac;" (assignment_expression "puVar13 = PTR_s__0043226c + 0x3dac" identifier = (binary_expression "PTR_s__0043226c + 0x3dac" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar20;" (assignment_expression "puVar15 = puVar20" identifier = identifier) ;) (do_statement "do {\n    puVar15 = puVar15 + 2;\n    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);\n    if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }\n    puVar13 = (undefined *)*puVar15;\n    iVar3 = iVar3 + 1;\n    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);\n  } while( true );" do (compound_statement "{\n    puVar15 = puVar15 + 2;\n    iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);\n    if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }\n    puVar13 = (undefined *)*puVar15;\n    iVar3 = iVar3 + 1;\n    if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);\n  }" { (expression_statement "puVar15 = puVar15 + 2;" (assignment_expression "puVar15 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12);" (assignment_expression "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar14,puVar13,uVar12)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar14,puVar13,uVar12)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar12 = puVar20[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);\n      pbVar22 = pbVar24 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);\nLAB_0029825c:\n      *pbVar22 = 0;\n      return (char *)pbVar18;\n    }" { (expression_statement "uVar12 = puVar20[iVar3 * 2 + 1];" (assignment_expression "uVar12 = puVar20[iVar3 * 2 + 1]" identifier = (subscript_expression "puVar20[iVar3 * 2 + 1]" identifier [ (binary_expression "iVar3 * 2 + 1" (binary_expression "iVar3 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar12)" ( identifier )))) ;) (expression_statement "pbVar22 = pbVar24 + iVar3;" (assignment_expression "pbVar22 = pbVar24 + iVar3" identifier = (binary_expression "pbVar24 + iVar3" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar24,uVar12,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar24,uVar12,iVar3)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0029825c:\n      *pbVar22 = 0;" statement_identifier : (expression_statement "*pbVar22 = 0;" (assignment_expression "*pbVar22 = 0" (pointer_expression "*pbVar22" * identifier) = number_literal) ;)) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (expression_statement "puVar13 = (undefined *)*puVar15;" (assignment_expression "puVar13 = (undefined *)*puVar15" identifier = (cast_expression "(undefined *)*puVar15" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (puVar13 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13);" (assignment_expression "uVar12 = (*(code *)PTR_strlen_0043677c)(puVar13)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar13)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar13)" ( identifier )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);\n    if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }\n  }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar23[2] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar23[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar23[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar23[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar23[2] * 2" identifier + (binary_expression "(uint)pbVar23[2] * 2" (cast_expression "(uint)pbVar23[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar23[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);\n    if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }\n  }" { (labeled_statement "LAB_002985d8:\n    do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);" statement_identifier : (do_statement "do {\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    } while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0);" do (compound_statement "{\n      pbVar23 = pbVar14;\n      bVar17 = pbVar23[1];\n      pbVar21 = pbVar23 + 1;\n      pbVar14 = pbVar21;\n    }" { (expression_statement "pbVar23 = pbVar14;" (assignment_expression "pbVar23 = pbVar14" identifier = identifier) ;) (expression_statement "bVar17 = pbVar23[1];" (assignment_expression "bVar17 = pbVar23[1]" identifier = (subscript_expression "pbVar23[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar21 = pbVar23 + 1;" (assignment_expression "pbVar21 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar14 = pbVar21;" (assignment_expression "pbVar14 = pbVar21" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar17 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar17 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar17 * 2)" ( (binary_expression "puVar2 + (uint)bVar17 * 2" identifier + (binary_expression "(uint)bVar17 * 2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;)) (if_statement "if (bVar17 != 0x5f) {\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }" if (parenthesized_expression "(bVar17 != 0x5f)" ( (binary_expression "bVar17 != 0x5f" identifier != number_literal) )) (compound_statement "{\n      if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }\n      if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }\n      break;\n    }" { (if_statement "if (bVar17 == 0x58) {\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }" if (parenthesized_expression "(bVar17 == 0x58)" ( (binary_expression "bVar17 == 0x58" identifier == number_literal) )) (compound_statement "{\n        for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }\n      }" { (for_statement "for (pbVar21 = pbVar23 + 2; (bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62));\n            pbVar21 = pbVar21 + 1) {\n        }" for ( (assignment_expression "pbVar21 = pbVar23 + 2" identifier = (binary_expression "pbVar23 + 2" identifier + number_literal)) ; (parenthesized_expression "(bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62))" ( (comma_expression "bVar17 = *pbVar21, bVar17 == 0x6e || (bVar17 == 0x62)" (assignment_expression "bVar17 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) , (binary_expression "bVar17 == 0x6e || (bVar17 == 0x62)" (binary_expression "bVar17 == 0x6e" identifier == number_literal) || (parenthesized_expression "(bVar17 == 0x62)" ( (binary_expression "bVar17 == 0x62" identifier == number_literal) )))) )) ; (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ) (compound_statement "{\n        }" { })) })) (labeled_statement "LAB_0029864c:\n      if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }" statement_identifier : (if_statement "if (bVar17 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }" if (parenthesized_expression "(bVar17 == 0x2e)" ( (binary_expression "bVar17 == 0x2e" identifier == number_literal) )) (compound_statement "{\n        if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;\n        bVar17 = pbVar21[2];\n        pbVar21 = pbVar21 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }\n      }" { (if_statement "if ((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0) break;" if (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4) == 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar21[1] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar21[1] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar21[1] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar21[1] * 2)" ( (binary_expression "puVar2 + (uint)pbVar21[1] * 2" identifier + (binary_expression "(uint)pbVar21[1] * 2" (cast_expression "(uint)pbVar21[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar21[1]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar17 = pbVar21[2];" (assignment_expression "bVar17 = pbVar21[2]" identifier = (subscript_expression "pbVar21[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar21 = pbVar21 + 2;" (assignment_expression "pbVar21 = pbVar21 + 2" identifier = (binary_expression "pbVar21 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0) {\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar17 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar17 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar17 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar17 * 2)" ( (binary_expression "puVar2 + (uint)bVar17 * 2" identifier + (binary_expression "(uint)bVar17 * 2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pbVar21 = pbVar21 + 1;\n          bVar17 = *pbVar21;\n        }" { (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar21;" (assignment_expression "bVar17 = *pbVar21" identifier = (pointer_expression "*pbVar21" * identifier)) ;) })) }))) (if_statement "if (bVar17 == 0) {\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }" if (parenthesized_expression "(bVar17 == 0)" ( (binary_expression "bVar17 == 0" identifier == number_literal) )) (compound_statement "{\n        *pbVar24 = 0;\n        return (char *)pbVar18;\n      }" { (expression_statement "*pbVar24 = 0;" (assignment_expression "*pbVar24 = 0" (pointer_expression "*pbVar24" * identifier) = number_literal) ;) (return_statement "return (char *)pbVar18;" return (cast_expression "(char *)pbVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (break_statement "break;" break ;) })) })) (labeled_statement "LAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar18);" statement_identifier : (expression_statement "(*(code *)PTR_free_00436800)(pbVar18);" (call_expression "(*(code *)PTR_free_00436800)(pbVar18)" (parenthesized_expression "(*(code *)PTR_free_00436800)" ( (pointer_expression "*(code *)PTR_free_00436800" * (cast_expression "(code *)PTR_free_00436800" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar18)" ( identifier ))) ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(mangled);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(mangled)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(mangled)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(mangled)" ( identifier )))) ;) (expression_statement "pcVar4 = (char *)xmalloc(iVar3 + 3);" (assignment_expression "pcVar4 = (char *)xmalloc(iVar3 + 3)" identifier = (cast_expression "(char *)xmalloc(iVar3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 3)" identifier (argument_list "(iVar3 + 3)" ( (binary_expression "iVar3 + 3" identifier + number_literal) ))))) ;) (if_statement "if (*mangled != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);\n    return pcVar4;\n  }" if (parenthesized_expression "(*mangled != 0x3c)" ( (binary_expression "*mangled != 0x3c" (pointer_expression "*mangled" * identifier) != number_literal) )) (compound_statement "{\n    (*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);\n    return pcVar4;\n  }" { (expression_statement "(*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled);" (call_expression "(*(code *)PTR_sprintf_004368f8)(pcVar4,PTR_s__0043226c + 0x3dbc,mangled)" (parenthesized_expression "(*(code *)PTR_sprintf_004368f8)" ( (pointer_expression "*(code *)PTR_sprintf_004368f8" * (cast_expression "(code *)PTR_sprintf_004368f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar4,PTR_s__0043226c + 0x3dbc,mangled)" ( identifier , (binary_expression "PTR_s__0043226c + 0x3dbc" identifier + number_literal) , identifier ))) ;) (return_statement "return pcVar4;" return identifier ;) })) (expression_statement "(*(code *)PTR_strcpy_00436758)(pcVar4,mangled);" (call_expression "(*(code *)PTR_strcpy_00436758)(pcVar4,mangled)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar4,mangled)" ( identifier , identifier ))) ;) (return_statement "return pcVar4;" return identifier ;) })))
(translation_unit "byte * ada_demangle(byte *param_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}\n\n" (function_definition "byte * ada_demangle(byte *param_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" type_identifier (pointer_declarator "* ada_demangle(byte *param_1)" * (function_declarator "ada_demangle(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);" (assignment_expression "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_DAT_0043226c + 0x3db4,5)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x3db4" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar2 = PTR__sch_istable_004356e0;" (assignment_expression "puVar2 = PTR__sch_istable_004356e0" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0043226c;" (assignment_expression "puVar1 = PTR_DAT_0043226c" identifier = identifier) ;) (expression_statement "puVar12 = PTR_PTR__wfilebuf_004321f8;" (assignment_expression "puVar12 = PTR_PTR__wfilebuf_004321f8" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1 = param_1 + 5;\n  }" { (expression_statement "param_1 = param_1 + 5;" (assignment_expression "param_1 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) })) (expression_statement "pbVar17 = (byte *)0x0;" (assignment_expression "pbVar17 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" if (parenthesized_expression "((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0)" ( (binary_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0" (parenthesized_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8)" ( (binary_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8" (pointer_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" * (cast_expression "(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" ( (binary_expression "PTR__sch_istable_004356e0 + (uint)*param_1 * 2" identifier + (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" { (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 8);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 8)" identifier = (cast_expression "(byte *)xmalloc(iVar3 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 8)" identifier (argument_list "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar10 = *param_1;" (assignment_expression "bVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x3d78;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x3d78" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d78" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x3d80;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x3d80" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d80" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_DAT_0043226c + 0x3d88;" (assignment_expression "puVar9 = PTR_DAT_0043226c + 0x3d88" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d88" identifier + number_literal)) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" identifier = identifier) ;) (expression_statement "pbVar22 = pbVar17;" (assignment_expression "pbVar22 = pbVar17" identifier = identifier) ;) (labeled_statement "LAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" statement_identifier : (do_statement "do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" do (compound_statement "{\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    }" { (if_statement "if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" if (parenthesized_expression "((uVar6 & 8) == 0)" ( (binary_expression "(uVar6 & 8) == 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }" { (if_statement "if (bVar10 != 0x4f) break;" if (parenthesized_expression "(bVar10 != 0x4f)" ( (binary_expression "bVar10 != 0x4f" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar18 = PTR_DAT_0043226c + 0x3d70;" (assignment_expression "puVar18 = PTR_DAT_0043226c + 0x3d70" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d70" identifier + number_literal)) ;) (expression_statement "puVar14 = (undefined4 *)(puVar12 + -0x6620);" (assignment_expression "puVar14 = (undefined4 *)(puVar12 + -0x6620)" identifier = (cast_expression "(undefined4 *)(puVar12 + -0x6620)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x6620)" ( (binary_expression "puVar12 + -0x6620" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" { (expression_statement "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);" (assignment_expression "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar13,puVar18,iVar3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = (undefined *)*puVar14;" (assignment_expression "puVar18 = (undefined *)*puVar14" identifier = (cast_expression "(undefined *)*puVar14" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar18 == (undefined *)0x0)" ( (binary_expression "puVar18 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18)" ( identifier )))) ;) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) })) (expression_statement "pbVar15 = pbVar22 + 1;" (assignment_expression "pbVar15 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar20 = pbVar13 + iVar3;" (assignment_expression "pbVar20 = pbVar13 + iVar3" identifier = (binary_expression "pbVar13 + iVar3" identifier + identifier)) ;) (expression_statement "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);" (assignment_expression "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" identifier = (pointer_expression "*(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" * (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624" (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8" identifier + (binary_expression "iVar4 * 8" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "*pbVar22 = 0x22;" (assignment_expression "*pbVar22 = 0x22" (pointer_expression "*pbVar22" * identifier) = number_literal) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar15,uVar11,iVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "pbVar21 = pbVar15 + iVar3 + 1;" (assignment_expression "pbVar21 = pbVar15 + iVar3 + 1" identifier = (binary_expression "pbVar15 + iVar3 + 1" (binary_expression "pbVar15 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar15[iVar3] = 0x22;" (assignment_expression "pbVar15[iVar3] = 0x22" (subscript_expression "pbVar15[iVar3]" identifier [ identifier ]) = number_literal) ;) (labeled_statement "LAB_00298360:\n        pbVar23 = pbVar21;" statement_identifier : (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" identifier = identifier) ;)) (if_statement "if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" if (parenthesized_expression "(bVar10 == 0x54)" ( (binary_expression "bVar10 == 0x54" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" { (if_statement "if (pbVar20[1] != 0x4b) goto LAB_0029817c;" if (parenthesized_expression "(pbVar20[1] != 0x4b)" ( (binary_expression "pbVar20[1] != 0x4b" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (if_statement "if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" if (parenthesized_expression "(pbVar20[2] == 0x42)" ( (binary_expression "pbVar20[2] == 0x42" (subscript_expression "pbVar20[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" { (if_statement "if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }" if (parenthesized_expression "(pbVar20[3] == 0)" ( (binary_expression "pbVar20[3] == 0" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *pbVar21 = 0;\n              return pbVar17;\n            }" { (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (break_statement "break;" break ;) })) (if_statement "if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;" if (parenthesized_expression "((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f))" ( (binary_expression "(pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" (parenthesized_expression "(pbVar20[2] != 0x5f)" ( (binary_expression "pbVar20[2] != 0x5f" (subscript_expression "pbVar20[2]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" ( (comma_expression "pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f" (assignment_expression "pbVar22 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) , (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar10 = pbVar20[4];" (assignment_expression "bVar10 = pbVar20[4]" identifier = (subscript_expression "pbVar20[4]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar20 + 4;" (assignment_expression "pbVar13 = pbVar20 + 4" identifier = (binary_expression "pbVar20 + 4" identifier + number_literal)) ;) (expression_statement "*pbVar21 = 0x2e;" (assignment_expression "*pbVar21 = 0x2e" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (goto_statement "goto LAB_0029811c;" goto statement_identifier ;) })) (if_statement "if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" if (parenthesized_expression "(bVar10 == 0x45)" ( (binary_expression "bVar10 == 0x45" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" { (if_statement "if (pbVar20[1] != 0) goto LAB_0029817c;" if (parenthesized_expression "(pbVar20[1] != 0)" ( (binary_expression "pbVar20[1] != 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (if_statement "if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" if (parenthesized_expression "(bVar10 == 0x50)" ( (binary_expression "bVar10 == 0x50" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" { (if_statement "if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            *pbVar21 = 0;\n            return pbVar17;\n          }" { (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;) })) (if_statement "if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" if (parenthesized_expression "(bVar10 == 0x4e)" ( (binary_expression "bVar10 == 0x4e" identifier == number_literal) )) (compound_statement "{\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" { (if_statement "if (pbVar20[1] == 0) goto LAB_0029825c;" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0029825c;" goto statement_identifier ;)) (labeled_statement "LAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;" statement_identifier : (if_statement "if (bVar10 != 0x44) goto LAB_0029817c;" if (parenthesized_expression "(bVar10 != 0x44)" ( (binary_expression "bVar10 != 0x44" identifier != number_literal) )) (goto_statement "goto LAB_0029817c;" goto statement_identifier ;))) (if_statement "if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" if (parenthesized_expression "(pbVar20[1] == 0x41)" ( (binary_expression "pbVar20[1] == 0x41" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }" { (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3da4;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3da4" identifier = (binary_expression "PTR_DAT_0043226c + 0x3da4" identifier + number_literal)) ;) }) (else_clause "else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" else (compound_statement "{\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" { (if_statement "if (pbVar20[1] != 0x46) break;" if (parenthesized_expression "(pbVar20[1] != 0x46)" ( (binary_expression "pbVar20[1] != 0x46" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3d98;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3d98" identifier = (binary_expression "PTR_DAT_0043226c + 0x3d98" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar21,puVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "pbVar21[iVar3] = 0;" (assignment_expression "pbVar21[iVar3] = 0" (subscript_expression "pbVar21[iVar3]" identifier [ identifier ]) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (if_statement "if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" if (parenthesized_expression "(bVar10 != 0x53)" ( (binary_expression "bVar10 != 0x53" identifier != number_literal) )) (compound_statement "{\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" { (if_statement "if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" if (parenthesized_expression "(bVar10 == 0x58)" ( (binary_expression "bVar10 == 0x58" identifier == number_literal) )) (compound_statement "{\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" { (do_statement "do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);" do (compound_statement "{\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            }" { (do_statement "do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);" do (compound_statement "{\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) }) while (parenthesized_expression "(bVar10 == 0x6e)" ( (binary_expression "bVar10 == 0x6e" identifier == number_literal) )) ;) }) while (parenthesized_expression "(bVar10 == 0x62)" ( (binary_expression "bVar10 == 0x62" identifier == number_literal) )) ;) (if_statement "if (bVar10 == 0x53) goto LAB_002983d0;" if (parenthesized_expression "(bVar10 == 0x53)" ( (binary_expression "bVar10 == 0x53" identifier == number_literal) )) (goto_statement "goto LAB_002983d0;" goto statement_identifier ;)) })) (goto_statement "goto LAB_002984fc;" goto statement_identifier ;) })) (if_statement "if (pbVar20[1] == 0) break;" if (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002983d0:\n        bVar10 = pbVar20[1];" statement_identifier : (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;)) (if_statement "if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;" if (parenthesized_expression "((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))))" ( (binary_expression "(bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" ( (parenthesized_expression "(bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))" ( (comma_expression "bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)" (assignment_expression "bVar16 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) , (binary_expression "bVar16 != 0x5f && (bVar16 != 0)" (binary_expression "bVar16 != 0x5f" identifier != number_literal) && (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar7;" (assignment_expression "puVar18 = puVar7" identifier = identifier) ;) (if_statement "if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" if (parenthesized_expression "(bVar10 != 0x4f)" ( (binary_expression "bVar10 != 0x4f" identifier != number_literal) )) (compound_statement "{\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" { (if_statement "if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" if (parenthesized_expression "((char)bVar10 < 'P')" ( (binary_expression "(char)bVar10 < 'P'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'P'" ' character ')) )) (compound_statement "{\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }" { (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) (if_statement "if (bVar10 != 0x49) break;" if (parenthesized_expression "(bVar10 != 0x49)" ( (binary_expression "bVar10 != 0x49" identifier != number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" else (compound_statement "{\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" { (expression_statement "puVar18 = puVar8;" (assignment_expression "puVar18 = puVar8" identifier = identifier) ;) (if_statement "if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" if (parenthesized_expression "(bVar10 != 0x52)" ( (binary_expression "bVar10 != 0x52" identifier != number_literal) )) (compound_statement "{\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" { (if_statement "if (bVar10 != 0x57) break;" if (parenthesized_expression "(bVar10 != 0x57)" ( (binary_expression "bVar10 != 0x57" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar18 = puVar1 + 0x3d90;" (assignment_expression "puVar18 = puVar1 + 0x3d90" identifier = (binary_expression "puVar1 + 0x3d90" identifier + number_literal)) ;) })) }))) })) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar21,puVar18)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18)" ( identifier )))) ;) (expression_statement "pbVar23 = pbVar21 + iVar3;" (assignment_expression "pbVar23 = pbVar21 + iVar3" identifier = (binary_expression "pbVar21 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" else (compound_statement "{\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" { (do_statement "do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);" do (compound_statement "{\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        }" { (do_statement "do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);" do (compound_statement "{\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          }" { (expression_statement "pbVar15 = pbVar13;" (assignment_expression "pbVar15 = pbVar13" identifier = identifier) ;) (expression_statement "pbVar20 = pbVar15 + 1;" (assignment_expression "pbVar20 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar22 = bVar10;" (assignment_expression "*pbVar22 = bVar10" (pointer_expression "*pbVar22" * identifier) = identifier) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "pbVar21 = pbVar22 + 1;" (assignment_expression "pbVar21 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar22 = pbVar21;" (assignment_expression "pbVar22 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (if_statement "if (bVar10 != 0x5f) goto LAB_00298360;" if (parenthesized_expression "(bVar10 != 0x5f)" ( (binary_expression "bVar10 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_00298360;" goto statement_identifier ;)) (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar15[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar15[2] * 2" identifier + (binary_expression "(uint)pbVar15[2] * 2" (cast_expression "(uint)pbVar15[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar15[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (labeled_statement "LAB_0029817c:\n        bVar16 = *pbVar20;" statement_identifier : (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;)) }))) (if_statement "if (bVar16 != 0x5f) goto LAB_0029864c;" if (parenthesized_expression "(bVar16 != 0x5f)" ( (binary_expression "bVar16 != 0x5f" identifier != number_literal) )) (goto_statement "goto LAB_0029864c;" goto statement_identifier ;)) (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" if (parenthesized_expression "(bVar10 != 0x5f)" ( (binary_expression "bVar10 != 0x5f" identifier != number_literal) )) (compound_statement "{\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" { (if_statement "if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" if (parenthesized_expression "((bVar10 == 0x42) || (bVar10 == 0x45))" ( (binary_expression "(bVar10 == 0x42) || (bVar10 == 0x45)" (parenthesized_expression "(bVar10 == 0x42)" ( (binary_expression "bVar10 == 0x42" identifier == number_literal) )) || (parenthesized_expression "(bVar10 == 0x45)" ( (binary_expression "bVar10 == 0x45" identifier == number_literal) ))) )) (compound_statement "{\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" { (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) })) (if_statement "if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }" if (parenthesized_expression "((bVar10 == 0x73) && (pbVar20[1] == 0))" ( (binary_expression "(bVar10 == 0x73) && (pbVar20[1] == 0)" (parenthesized_expression "(bVar10 == 0x73)" ( (binary_expression "bVar10 == 0x73" identifier == number_literal) )) && (parenthesized_expression "(pbVar20[1] == 0)" ( (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            *pbVar23 = 0;\n            return pbVar17;\n          }" { (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) })) (break_statement "break;" break ;) })) (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" identifier = (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" ( (binary_expression "puVar2 + (uint)bVar10 * 2" identifier + (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "pbVar13 = pbVar20 + 2;" (assignment_expression "pbVar13 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (if_statement "if ((uVar6 & 4) != 0) goto LAB_002985d8;" if (parenthesized_expression "((uVar6 & 4) != 0)" ( (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002985d8;" goto statement_identifier ;)) (if_statement "if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;" if (parenthesized_expression "((bVar10 == 0x5f) && (pbVar20[3] != 0x5f))" ( (binary_expression "(bVar10 == 0x5f) && (pbVar20[3] != 0x5f)" (parenthesized_expression "(bVar10 == 0x5f)" ( (binary_expression "bVar10 == 0x5f" identifier == number_literal) )) && (parenthesized_expression "(pbVar20[3] != 0x5f)" ( (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto code_r0x002981cc;" goto statement_identifier ;)) (expression_statement "pbVar22 = pbVar23 + 1;" (assignment_expression "pbVar22 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar23 = 0x2e;" (assignment_expression "*pbVar23 = 0x2e" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;) (labeled_statement "code_r0x002981cc:\n  uVar11 = 6;" statement_identifier : (expression_statement "uVar11 = 6;" (assignment_expression "uVar11 = 6" identifier = number_literal) ;)) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);" (assignment_expression "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" identifier = (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + -0x6658)" ( (binary_expression "PTR_PTR__wfilebuf_004321f8 + -0x6658" identifier + number_literal) )))) ;) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3dac;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3dac" identifier = (binary_expression "PTR_DAT_0043226c + 0x3dac" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar19;" (assignment_expression "puVar14 = puVar19" identifier = identifier) ;) (do_statement "do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );" do (compound_statement "{\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  }" { (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" identifier = (binary_expression "puVar14 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);" (assignment_expression "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" identifier = (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" ( (pointer_expression "*(code *)PTR_strncmp_004366a0" * (cast_expression "(code *)PTR_strncmp_004366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar13,puVar12,uVar11)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" { (expression_statement "uVar11 = puVar19[iVar3 * 2 + 1];" (assignment_expression "uVar11 = puVar19[iVar3 * 2 + 1]" identifier = (subscript_expression "puVar19[iVar3 * 2 + 1]" identifier [ (binary_expression "iVar3 * 2 + 1" (binary_expression "iVar3 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar11)" ( identifier )))) ;) (expression_statement "pbVar21 = pbVar23 + iVar3;" (assignment_expression "pbVar21 = pbVar23 + iVar3" identifier = (binary_expression "pbVar23 + iVar3" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" ( (pointer_expression "*(code *)PTR_memcpy_00436788" * (cast_expression "(code *)PTR_memcpy_00436788" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar23,uVar11,iVar3)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0029825c:\n      *pbVar21 = 0;" statement_identifier : (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" * identifier) = number_literal) ;)) (return_statement "return pbVar17;" return identifier ;) })) (expression_statement "puVar12 = (undefined *)*puVar14;" (assignment_expression "puVar12 = (undefined *)*puVar14" identifier = (cast_expression "(undefined *)*puVar14" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;" if (parenthesized_expression "(puVar12 == (undefined *)0x0)" ( (binary_expression "puVar12 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00297fdc;" goto statement_identifier ;)) (expression_statement "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar12)" ( identifier )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar22[2] * 2)" ( (binary_expression "puVar2 + (uint)pbVar22[2] * 2" identifier + (binary_expression "(uint)pbVar22[2] * 2" (cast_expression "(uint)pbVar22[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar22[2]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" { (labeled_statement "LAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" statement_identifier : (do_statement "do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" do (compound_statement "{\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    }" { (expression_statement "pbVar22 = pbVar13;" (assignment_expression "pbVar22 = pbVar13" identifier = identifier) ;) (expression_statement "bVar16 = pbVar22[1];" (assignment_expression "bVar16 = pbVar22[1]" identifier = (subscript_expression "pbVar22[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar22 + 1;" (assignment_expression "pbVar20 = pbVar22 + 1" identifier = (binary_expression "pbVar22 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" ( (binary_expression "puVar2 + (uint)bVar16 * 2" identifier + (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;)) (if_statement "if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" if (parenthesized_expression "(bVar16 != 0x5f)" ( (binary_expression "bVar16 != 0x5f" identifier != number_literal) )) (compound_statement "{\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" { (if_statement "if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" if (parenthesized_expression "(bVar16 == 0x58)" ( (binary_expression "bVar16 == 0x58" identifier == number_literal) )) (compound_statement "{\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" { (for_statement "for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }" for ( (assignment_expression "pbVar20 = pbVar22 + 2" identifier = (binary_expression "pbVar22 + 2" identifier + number_literal)) ; (parenthesized_expression "(bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62))" ( (comma_expression "bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62)" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) , (binary_expression "bVar16 == 0x6e || (bVar16 == 0x62)" (binary_expression "bVar16 == 0x6e" identifier == number_literal) || (parenthesized_expression "(bVar16 == 0x62)" ( (binary_expression "bVar16 == 0x62" identifier == number_literal) )))) )) ; (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ) (compound_statement "{\n        }" { })) })) (labeled_statement "LAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" statement_identifier : (if_statement "if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" if (parenthesized_expression "(bVar16 == 0x2e)" ( (binary_expression "bVar16 == 0x2e" identifier == number_literal) )) (compound_statement "{\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" { (if_statement "if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;" if (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)pbVar20[1] * 2)" ( (binary_expression "puVar2 + (uint)pbVar20[1] * 2" identifier + (binary_expression "(uint)pbVar20[1] * 2" (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar16 = pbVar20[2];" (assignment_expression "bVar16 = pbVar20[2]" identifier = (subscript_expression "pbVar20[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" identifier = (binary_expression "pbVar20 + 2" identifier + number_literal)) ;) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" while (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" ( (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" ( (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" * (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" ( (binary_expression "puVar2 + (uint)bVar16 * 2" identifier + (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) })) }))) (if_statement "if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }" if (parenthesized_expression "(bVar16 == 0)" ( (binary_expression "bVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        *pbVar23 = 0;\n        return pbVar17;\n      }" { (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" * identifier) = number_literal) ;) (return_statement "return pbVar17;" return identifier ;) })) (break_statement "break;" break ;) })) })) (labeled_statement "LAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);" statement_identifier : (expression_statement "(*(code *)PTR_free_00436800)(pbVar17);" (call_expression "(*(code *)PTR_free_00436800)(pbVar17)" (parenthesized_expression "(*(code *)PTR_free_00436800)" ( (pointer_expression "*(code *)PTR_free_00436800" * (cast_expression "(code *)PTR_free_00436800" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17)" ( identifier ))) ;)) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 3);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 3)" identifier = (cast_expression "(byte *)xmalloc(iVar3 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar3 + 3)" identifier (argument_list "(iVar3 + 3)" ( (binary_expression "iVar3 + 3" identifier + number_literal) ))))) ;) (if_statement "if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" if (parenthesized_expression "(*param_1 != 0x3c)" ( (binary_expression "*param_1 != 0x3c" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" { (expression_statement "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);" (call_expression "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" (parenthesized_expression "(*(code *)PTR_sprintf_004368f8)" ( (pointer_expression "*(code *)PTR_sprintf_004368f8" * (cast_expression "(code *)PTR_sprintf_004368f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x3dbc" identifier + number_literal) , identifier ))) ;) (return_statement "return pbVar17;" return identifier ;) })) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" ( (pointer_expression "*(code *)PTR_strcpy_00436758" * (cast_expression "(code *)PTR_strcpy_00436758" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar17,param_1)" ( identifier , identifier ))) ;) (return_statement "return pbVar17;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) )))) )) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) )))) & LIT) )) != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;)) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) }) while (parenthesized_expression ( BOOL )) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) != LIT) )) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) )))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) )))) & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (break_statement break ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "byte * ada_demangle(byte *param_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" (type_identifier "byte") (pointer_declarator "* ada_demangle(byte *param_1)" (* "*") (function_declarator "ada_demangle(byte *param_1)" (identifier "ada_demangle") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int iVar3;\n  ushort uVar6;\n  int iVar4;\n  int iVar5;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  undefined *puVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  byte *pbVar15;\n  byte bVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 *puVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  \n  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);\n  puVar2 = PTR__sch_istable_004356e0;\n  puVar1 = PTR_DAT_0043226c;\n  puVar12 = PTR_PTR__wfilebuf_004321f8;\n  if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }\n  pbVar17 = (byte *)0x0;\n  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }\n  goto LAB_00297fdc;\ncode_r0x002981cc:\n  uVar11 = 6;\n  iVar3 = 0;\n  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);\n  puVar12 = PTR_DAT_0043226c + 0x3dac;\n  puVar14 = puVar19;\n  do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );\n  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }\nLAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);\n  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n  pbVar17 = (byte *)xmalloc(iVar3 + 3);\n  if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }\n  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);\n  return pbVar17;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "ushort uVar6;" (type_identifier "ushort") (identifier "uVar6") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "undefined *puVar12;" (type_identifier "undefined") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "byte *pbVar15;" (type_identifier "byte") (pointer_declarator "*pbVar15" (* "*") (identifier "pbVar15")) (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "undefined *puVar18;" (type_identifier "undefined") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "undefined4 *puVar19;" (type_identifier "undefined4") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "byte *pbVar20;" (type_identifier "byte") (pointer_declarator "*pbVar20" (* "*") (identifier "pbVar20")) (; ";")) (declaration "byte *pbVar21;" (type_identifier "byte") (pointer_declarator "*pbVar21" (* "*") (identifier "pbVar21")) (; ";")) (declaration "byte *pbVar22;" (type_identifier "byte") (pointer_declarator "*pbVar22" (* "*") (identifier "pbVar22")) (; ";")) (declaration "byte *pbVar23;" (type_identifier "byte") (pointer_declarator "*pbVar23" (* "*") (identifier "pbVar23")) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);" (assignment_expression "iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" (( "(") (pointer_expression "*(code *)PTR_strncmp_004366a0" (* "*") (cast_expression "(code *)PTR_strncmp_004366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncmp_004366a0"))) () ")")) (argument_list "(param_1,PTR_DAT_0043226c + 0x3db4,5)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_DAT_0043226c + 0x3db4" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3db4")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "puVar2 = PTR__sch_istable_004356e0;" (assignment_expression "puVar2 = PTR__sch_istable_004356e0" (identifier "puVar2") (= "=") (identifier "PTR__sch_istable_004356e0")) (; ";")) (expression_statement "puVar1 = PTR_DAT_0043226c;" (assignment_expression "puVar1 = PTR_DAT_0043226c" (identifier "puVar1") (= "=") (identifier "PTR_DAT_0043226c")) (; ";")) (expression_statement "puVar12 = PTR_PTR__wfilebuf_004321f8;" (assignment_expression "puVar12 = PTR_PTR__wfilebuf_004321f8" (identifier "puVar12") (= "=") (identifier "PTR_PTR__wfilebuf_004321f8")) (; ";")) (if_statement "if (iVar3 == 0) {\n    param_1 = param_1 + 5;\n  }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1 = param_1 + 5;\n  }" ({ "{") (expression_statement "param_1 = param_1 + 5;" (assignment_expression "param_1 = param_1 + 5" (identifier "param_1") (= "=") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5"))) (; ";")) (} "}"))) (expression_statement "pbVar17 = (byte *)0x0;" (assignment_expression "pbVar17 = (byte *)0x0" (identifier "pbVar17") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" (if "if") (parenthesized_expression "((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0)" (( "(") (binary_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0" (parenthesized_expression "(*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8)" (( "(") (binary_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8" (pointer_expression "*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" (* "*") (cast_expression "(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR__sch_istable_004356e0 + (uint)*param_1 * 2)" (( "(") (binary_expression "PTR__sch_istable_004356e0 + (uint)*param_1 * 2" (identifier "PTR__sch_istable_004356e0") (+ "+") (binary_expression "(uint)*param_1 * 2" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);\n    pbVar17 = (byte *)xmalloc(iVar3 + 8);\n    bVar10 = *param_1;\n    puVar7 = PTR_DAT_0043226c + 0x3d78;\n    puVar8 = PTR_DAT_0043226c + 0x3d80;\n    puVar9 = PTR_DAT_0043226c + 0x3d88;\n    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n    pbVar13 = param_1;\n    pbVar22 = pbVar17;\nLAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );\n  }" ({ "{") (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 8);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 8)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)xmalloc(iVar3 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar3 + 8)" (identifier "xmalloc") (argument_list "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "bVar10 = *param_1;" (assignment_expression "bVar10 = *param_1" (identifier "bVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_0043226c + 0x3d78;" (assignment_expression "puVar7 = PTR_DAT_0043226c + 0x3d78" (identifier "puVar7") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3d78" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3d78"))) (; ";")) (expression_statement "puVar8 = PTR_DAT_0043226c + 0x3d80;" (assignment_expression "puVar8 = PTR_DAT_0043226c + 0x3d80" (identifier "puVar8") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3d80" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3d80"))) (; ";")) (expression_statement "puVar9 = PTR_DAT_0043226c + 0x3d88;" (assignment_expression "puVar9 = PTR_DAT_0043226c + 0x3d88" (identifier "puVar9") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3d88" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3d88"))) (; ";")) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" (identifier "uVar6") (= "=") (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar10 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" (identifier "pbVar13") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbVar22 = pbVar17;" (assignment_expression "pbVar22 = pbVar17" (identifier "pbVar22") (= "=") (identifier "pbVar17")) (; ";")) (labeled_statement "LAB_0029811c:\n    do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" (statement_identifier "LAB_0029811c") (: ":") (do_statement "do {\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    } while( true );" (do "do") (compound_statement "{\n      if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }\n      if (bVar16 != 0x5f) goto LAB_0029864c;\n      bVar10 = pbVar20[1];\n      if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }\n      bVar10 = pbVar20[2];\n      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n      pbVar13 = pbVar20 + 2;\n      if ((uVar6 & 4) != 0) goto LAB_002985d8;\n      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;\n      pbVar22 = pbVar23 + 1;\n      *pbVar23 = 0x2e;\n    }" ({ "{") (if_statement "if ((uVar6 & 8) == 0) {\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }\n      else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" (if "if") (parenthesized_expression "((uVar6 & 8) == 0)" (( "(") (binary_expression "(uVar6 & 8) == 0" (parenthesized_expression "(uVar6 & 8)" (( "(") (binary_expression "uVar6 & 8" (identifier "uVar6") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (bVar10 != 0x4f) break;\n        iVar3 = 4;\n        iVar4 = 0;\n        puVar18 = PTR_DAT_0043226c + 0x3d70;\n        puVar14 = (undefined4 *)(puVar12 + -0x6620);\n        while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }\n        pbVar15 = pbVar22 + 1;\n        pbVar20 = pbVar13 + iVar3;\n        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n        *pbVar22 = 0x22;\n        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);\n        bVar10 = *pbVar20;\n        pbVar21 = pbVar15 + iVar3 + 1;\n        pbVar15[iVar3] = 0x22;\nLAB_00298360:\n        pbVar23 = pbVar21;\n        if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }\n        if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }\n        if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }\n        if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }\n        if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }\n        if (pbVar20[1] == 0) break;\nLAB_002983d0:\n        bVar10 = pbVar20[1];\n        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;\n        puVar18 = puVar7;\n        if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }\n        pbVar20 = pbVar20 + 2;\n        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);\n        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n        pbVar23 = pbVar21 + iVar3;\n      }" ({ "{") (if_statement "if (bVar10 != 0x4f) break;" (if "if") (parenthesized_expression "(bVar10 != 0x4f)" (( "(") (binary_expression "bVar10 != 0x4f" (identifier "bVar10") (!= "!=") (number_literal "0x4f")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" (identifier "iVar3") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar18 = PTR_DAT_0043226c + 0x3d70;" (assignment_expression "puVar18 = PTR_DAT_0043226c + 0x3d70" (identifier "puVar18") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3d70" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3d70"))) (; ";")) (expression_statement "puVar14 = (undefined4 *)(puVar12 + -0x6620);" (assignment_expression "puVar14 = (undefined4 *)(puVar12 + -0x6620)" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)(puVar12 + -0x6620)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x6620)" (( "(") (binary_expression "puVar12 + -0x6620" (identifier "puVar12") (+ "+") (number_literal "-0x6620")) () ")")))) (; ";")) (while_statement "while( true ) {\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);\n          if (iVar5 == 0) break;\n          puVar18 = (undefined *)*puVar14;\n          iVar4 = iVar4 + 1;\n          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);\n          puVar14 = puVar14 + 2;\n        }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);" (assignment_expression "iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" (( "(") (pointer_expression "*(code *)PTR_strncmp_004366a0" (* "*") (cast_expression "(code *)PTR_strncmp_004366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncmp_004366a0"))) () ")")) (argument_list "(pbVar13,puVar18,iVar3)" (( "(") (identifier "pbVar13") (, ",") (identifier "puVar18") (, ",") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = (undefined *)*puVar14;" (assignment_expression "puVar18 = (undefined *)*puVar14" (identifier "puVar18") (= "=") (cast_expression "(undefined *)*puVar14" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;" (if "if") (parenthesized_expression "(puVar18 == (undefined *)0x0)" (( "(") (binary_expression "puVar18 == (undefined *)0x0" (identifier "puVar18") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00297fdc;" (goto "goto") (statement_identifier "LAB_00297fdc") (; ";"))) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(puVar18)" (( "(") (identifier "puVar18") () ")")))) (; ";")) (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "pbVar15 = pbVar22 + 1;" (assignment_expression "pbVar15 = pbVar22 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar22 + 1" (identifier "pbVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar20 = pbVar13 + iVar3;" (assignment_expression "pbVar20 = pbVar13 + iVar3" (identifier "pbVar20") (= "=") (binary_expression "pbVar13 + iVar3" (identifier "pbVar13") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);" (assignment_expression "uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" (* "*") (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624)" (( "(") (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624" (binary_expression "PTR_PTR__wfilebuf_004321f8 + iVar4 * 8" (identifier "PTR_PTR__wfilebuf_004321f8") (+ "+") (binary_expression "iVar4 * 8" (identifier "iVar4") (* "*") (number_literal "8"))) (+ "+") (number_literal "-0x6624")) () ")"))))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "*pbVar22 = 0x22;" (assignment_expression "*pbVar22 = 0x22" (pointer_expression "*pbVar22" (* "*") (identifier "pbVar22")) (= "=") (number_literal "0x22")) (; ";")) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00436788" (* "*") (cast_expression "(code *)PTR_memcpy_00436788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00436788"))) () ")")) (argument_list "(pbVar15,uVar11,iVar3)" (( "(") (identifier "pbVar15") (, ",") (identifier "uVar11") (, ",") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" (identifier "bVar10") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "pbVar21 = pbVar15 + iVar3 + 1;" (assignment_expression "pbVar21 = pbVar15 + iVar3 + 1" (identifier "pbVar21") (= "=") (binary_expression "pbVar15 + iVar3 + 1" (binary_expression "pbVar15 + iVar3" (identifier "pbVar15") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15[iVar3] = 0x22;" (assignment_expression "pbVar15[iVar3] = 0x22" (subscript_expression "pbVar15[iVar3]" (identifier "pbVar15") ([ "[") (identifier "iVar3") (] "]")) (= "=") (number_literal "0x22")) (; ";")) (labeled_statement "LAB_00298360:\n        pbVar23 = pbVar21;" (statement_identifier "LAB_00298360") (: ":") (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" (identifier "pbVar23") (= "=") (identifier "pbVar21")) (; ";"))) (if_statement "if (bVar10 == 0x54) {\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" (if "if") (parenthesized_expression "(bVar10 == 0x54)" (( "(") (binary_expression "bVar10 == 0x54" (identifier "bVar10") (== "==") (number_literal "0x54")) () ")")) (compound_statement "{\n          if (pbVar20[1] != 0x4b) goto LAB_0029817c;\n          if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }\n          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;\n          bVar10 = pbVar20[4];\n          pbVar13 = pbVar20 + 4;\n          *pbVar21 = 0x2e;\n          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);\n          goto LAB_0029811c;\n        }" ({ "{") (if_statement "if (pbVar20[1] != 0x4b) goto LAB_0029817c;" (if "if") (parenthesized_expression "(pbVar20[1] != 0x4b)" (( "(") (binary_expression "pbVar20[1] != 0x4b" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0x4b")) () ")")) (goto_statement "goto LAB_0029817c;" (goto "goto") (statement_identifier "LAB_0029817c") (; ";"))) (if_statement "if (pbVar20[2] == 0x42) {\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" (if "if") (parenthesized_expression "(pbVar20[2] == 0x42)" (( "(") (binary_expression "pbVar20[2] == 0x42" (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x42")) () ")")) (compound_statement "{\n            if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }\n            break;\n          }" ({ "{") (if_statement "if (pbVar20[3] == 0) {\n              *pbVar21 = 0;\n              return pbVar17;\n            }" (if "if") (parenthesized_expression "(pbVar20[3] == 0)" (( "(") (binary_expression "pbVar20[3] == 0" (subscript_expression "pbVar20[3]" (identifier "pbVar20") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              *pbVar21 = 0;\n              return pbVar17;\n            }" ({ "{") (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;" (if "if") (parenthesized_expression "((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f))" (( "(") (binary_expression "(pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" (parenthesized_expression "(pbVar20[2] != 0x5f)" (( "(") (binary_expression "pbVar20[2] != 0x5f" (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0x5f")) () ")")) (|| "||") (parenthesized_expression "(pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)" (( "(") (comma_expression "pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f" (assignment_expression "pbVar22 = pbVar21 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar21 + 1" (identifier "pbVar21") (+ "+") (number_literal "1"))) (, ",") (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" (identifier "pbVar20") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0x5f"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar10 = pbVar20[4];" (assignment_expression "bVar10 = pbVar20[4]" (identifier "bVar10") (= "=") (subscript_expression "pbVar20[4]" (identifier "pbVar20") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pbVar13 = pbVar20 + 4;" (assignment_expression "pbVar13 = pbVar20 + 4" (identifier "pbVar13") (= "=") (binary_expression "pbVar20 + 4" (identifier "pbVar20") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*pbVar21 = 0x2e;" (assignment_expression "*pbVar21 = 0x2e" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (= "=") (number_literal "0x2e")) (; ";")) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" (identifier "uVar6") (= "=") (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar10 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (goto_statement "goto LAB_0029811c;" (goto "goto") (statement_identifier "LAB_0029811c") (; ";")) (} "}"))) (if_statement "if (bVar10 == 0x45) {\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" (if "if") (parenthesized_expression "(bVar10 == 0x45)" (( "(") (binary_expression "bVar10 == 0x45" (identifier "bVar10") (== "==") (number_literal "0x45")) () ")")) (compound_statement "{\n          if (pbVar20[1] != 0) goto LAB_0029817c;\n          break;\n        }" ({ "{") (if_statement "if (pbVar20[1] != 0) goto LAB_0029817c;" (if "if") (parenthesized_expression "(pbVar20[1] != 0)" (( "(") (binary_expression "pbVar20[1] != 0" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029817c;" (goto "goto") (statement_identifier "LAB_0029817c") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (bVar10 == 0x50) {\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" (if "if") (parenthesized_expression "(bVar10 == 0x50)" (( "(") (binary_expression "bVar10 == 0x50" (identifier "bVar10") (== "==") (number_literal "0x50")) () ")")) (compound_statement "{\n          if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }\n          goto LAB_0029817c;\n        }" ({ "{") (if_statement "if (pbVar20[1] == 0) {\n            *pbVar21 = 0;\n            return pbVar17;\n          }" (if "if") (parenthesized_expression "(pbVar20[1] == 0)" (( "(") (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *pbVar21 = 0;\n            return pbVar17;\n          }" ({ "{") (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (goto_statement "goto LAB_0029817c;" (goto "goto") (statement_identifier "LAB_0029817c") (; ";")) (} "}"))) (if_statement "if (bVar10 == 0x4e) {\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" (if "if") (parenthesized_expression "(bVar10 == 0x4e)" (( "(") (binary_expression "bVar10 == 0x4e" (identifier "bVar10") (== "==") (number_literal "0x4e")) () ")")) (compound_statement "{\n          if (pbVar20[1] == 0) goto LAB_0029825c;\nLAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;\n          if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }\n          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);\n          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);\n          pbVar21[iVar3] = 0;\n          return pbVar17;\n        }" ({ "{") (if_statement "if (pbVar20[1] == 0) goto LAB_0029825c;" (if "if") (parenthesized_expression "(pbVar20[1] == 0)" (( "(") (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0029825c;" (goto "goto") (statement_identifier "LAB_0029825c") (; ";"))) (labeled_statement "LAB_002984fc:\n          if (bVar10 != 0x44) goto LAB_0029817c;" (statement_identifier "LAB_002984fc") (: ":") (if_statement "if (bVar10 != 0x44) goto LAB_0029817c;" (if "if") (parenthesized_expression "(bVar10 != 0x44)" (( "(") (binary_expression "bVar10 != 0x44" (identifier "bVar10") (!= "!=") (number_literal "0x44")) () ")")) (goto_statement "goto LAB_0029817c;" (goto "goto") (statement_identifier "LAB_0029817c") (; ";")))) (if_statement "if (pbVar20[1] == 0x41) {\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }\n          else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" (if "if") (parenthesized_expression "(pbVar20[1] == 0x41)" (( "(") (binary_expression "pbVar20[1] == 0x41" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x41")) () ")")) (compound_statement "{\n            puVar12 = PTR_DAT_0043226c + 0x3da4;\n          }" ({ "{") (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3da4;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3da4" (identifier "puVar12") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3da4" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3da4"))) (; ";")) (} "}")) (else_clause "else {\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" (else "else") (compound_statement "{\n            if (pbVar20[1] != 0x46) break;\n            puVar12 = PTR_DAT_0043226c + 0x3d98;\n          }" ({ "{") (if_statement "if (pbVar20[1] != 0x46) break;" (if "if") (parenthesized_expression "(pbVar20[1] != 0x46)" (( "(") (binary_expression "pbVar20[1] != 0x46" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0x46")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3d98;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3d98" (identifier "puVar12") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3d98" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3d98"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar12)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" (( "(") (pointer_expression "*(code *)PTR_strcpy_00436758" (* "*") (cast_expression "(code *)PTR_strcpy_00436758" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcpy_00436758"))) () ")")) (argument_list "(pbVar21,puVar12)" (( "(") (identifier "pbVar21") (, ",") (identifier "puVar12") () ")"))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")")))) (; ";")) (expression_statement "pbVar21[iVar3] = 0;" (assignment_expression "pbVar21[iVar3] = 0" (subscript_expression "pbVar21[iVar3]" (identifier "pbVar21") ([ "[") (identifier "iVar3") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (if_statement "if (bVar10 != 0x53) {\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" (if "if") (parenthesized_expression "(bVar10 != 0x53)" (( "(") (binary_expression "bVar10 != 0x53" (identifier "bVar10") (!= "!=") (number_literal "0x53")) () ")")) (compound_statement "{\n          if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }\n          goto LAB_002984fc;\n        }" ({ "{") (if_statement "if (bVar10 == 0x58) {\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" (if "if") (parenthesized_expression "(bVar10 == 0x58)" (( "(") (binary_expression "bVar10 == 0x58" (identifier "bVar10") (== "==") (number_literal "0x58")) () ")")) (compound_statement "{\n            do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);\n            if (bVar10 == 0x53) goto LAB_002983d0;\n          }" ({ "{") (do_statement "do {\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            } while (bVar10 == 0x62);" (do "do") (compound_statement "{\n              do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);\n            }" ({ "{") (do_statement "do {\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              } while (bVar10 == 0x6e);" (do "do") (compound_statement "{\n                pbVar20 = pbVar20 + 1;\n                bVar10 = *pbVar20;\n              }" ({ "{") (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 1" (identifier "pbVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" (identifier "bVar10") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10 == 0x6e)" (( "(") (binary_expression "bVar10 == 0x6e" (identifier "bVar10") (== "==") (number_literal "0x6e")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10 == 0x62)" (( "(") (binary_expression "bVar10 == 0x62" (identifier "bVar10") (== "==") (number_literal "0x62")) () ")")) (; ";")) (if_statement "if (bVar10 == 0x53) goto LAB_002983d0;" (if "if") (parenthesized_expression "(bVar10 == 0x53)" (( "(") (binary_expression "bVar10 == 0x53" (identifier "bVar10") (== "==") (number_literal "0x53")) () ")")) (goto_statement "goto LAB_002983d0;" (goto "goto") (statement_identifier "LAB_002983d0") (; ";"))) (} "}"))) (goto_statement "goto LAB_002984fc;" (goto "goto") (statement_identifier "LAB_002984fc") (; ";")) (} "}"))) (if_statement "if (pbVar20[1] == 0) break;" (if "if") (parenthesized_expression "(pbVar20[1] == 0)" (( "(") (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_002983d0:\n        bVar10 = pbVar20[1];" (statement_identifier "LAB_002983d0") (: ":") (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" (identifier "bVar10") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (if_statement "if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;" (if "if") (parenthesized_expression "((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))))" (( "(") (binary_expression "(bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" (parenthesized_expression "(bVar10 == 0)" (( "(") (binary_expression "bVar10 == 0" (identifier "bVar10") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))" (( "(") (parenthesized_expression "(bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0))" (( "(") (comma_expression "bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)" (assignment_expression "bVar16 = pbVar20[2]" (identifier "bVar16") (= "=") (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]"))) (, ",") (binary_expression "bVar16 != 0x5f && (bVar16 != 0)" (binary_expression "bVar16 != 0x5f" (identifier "bVar16") (!= "!=") (number_literal "0x5f")) (&& "&&") (parenthesized_expression "(bVar16 != 0)" (( "(") (binary_expression "bVar16 != 0" (identifier "bVar16") (!= "!=") (number_literal "0")) () ")")))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = puVar7;" (assignment_expression "puVar18 = puVar7" (identifier "puVar18") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if (bVar10 != 0x4f) {\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar10 != 0x4f)" (( "(") (binary_expression "bVar10 != 0x4f" (identifier "bVar10") (!= "!=") (number_literal "0x4f")) () ")")) (compound_statement "{\n          if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }\n        }" ({ "{") (if_statement "if ((char)bVar10 < 'P') {\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }\n          else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" (if "if") (parenthesized_expression "((char)bVar10 < 'P')" (( "(") (binary_expression "(char)bVar10 < 'P'" (cast_expression "(char)bVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar10")) (< "<") (char_literal "'P'" (' "'") (character "P") (' "'"))) () ")")) (compound_statement "{\n            puVar18 = puVar9;\n            if (bVar10 != 0x49) break;\n          }" ({ "{") (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" (identifier "puVar18") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (bVar10 != 0x49) break;" (if "if") (parenthesized_expression "(bVar10 != 0x49)" (( "(") (binary_expression "bVar10 != 0x49" (identifier "bVar10") (!= "!=") (number_literal "0x49")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" (else "else") (compound_statement "{\n            puVar18 = puVar8;\n            if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }\n          }" ({ "{") (expression_statement "puVar18 = puVar8;" (assignment_expression "puVar18 = puVar8" (identifier "puVar18") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (bVar10 != 0x52) {\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" (if "if") (parenthesized_expression "(bVar10 != 0x52)" (( "(") (binary_expression "bVar10 != 0x52" (identifier "bVar10") (!= "!=") (number_literal "0x52")) () ")")) (compound_statement "{\n              if (bVar10 != 0x57) break;\n              puVar18 = puVar1 + 0x3d90;\n            }" ({ "{") (if_statement "if (bVar10 != 0x57) break;" (if "if") (parenthesized_expression "(bVar10 != 0x57)" (( "(") (binary_expression "bVar10 != 0x57" (identifier "bVar10") (!= "!=") (number_literal "0x57")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar18 = puVar1 + 0x3d90;" (assignment_expression "puVar18 = puVar1 + 0x3d90" (identifier "puVar18") (= "=") (binary_expression "puVar1 + 0x3d90" (identifier "puVar1") (+ "+") (number_literal "0x3d90"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar21,puVar18)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" (( "(") (pointer_expression "*(code *)PTR_strcpy_00436758" (* "*") (cast_expression "(code *)PTR_strcpy_00436758" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcpy_00436758"))) () ")")) (argument_list "(pbVar21,puVar18)" (( "(") (identifier "pbVar21") (, ",") (identifier "puVar18") () ")"))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(puVar18)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(puVar18)" (( "(") (identifier "puVar18") () ")")))) (; ";")) (expression_statement "pbVar23 = pbVar21 + iVar3;" (assignment_expression "pbVar23 = pbVar21 + iVar3" (identifier "pbVar23") (= "=") (binary_expression "pbVar21 + iVar3" (identifier "pbVar21") (+ "+") (identifier "iVar3"))) (; ";")) (} "}")) (else_clause "else {\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" (else "else") (compound_statement "{\n        do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);\nLAB_0029817c:\n        bVar16 = *pbVar20;\n      }" ({ "{") (do_statement "do {\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);" (do "do") (compound_statement "{\n          do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);\n          if (bVar10 != 0x5f) goto LAB_00298360;\n          pbVar23 = pbVar21;\n        }" ({ "{") (do_statement "do {\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);" (do "do") (compound_statement "{\n            pbVar15 = pbVar13;\n            pbVar20 = pbVar15 + 1;\n            *pbVar22 = bVar10;\n            bVar10 = *pbVar20;\n            pbVar21 = pbVar22 + 1;\n            pbVar22 = pbVar21;\n            pbVar13 = pbVar20;\n          }" ({ "{") (expression_statement "pbVar15 = pbVar13;" (assignment_expression "pbVar15 = pbVar13" (identifier "pbVar15") (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "pbVar20 = pbVar15 + 1;" (assignment_expression "pbVar20 = pbVar15 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar15 + 1" (identifier "pbVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar22 = bVar10;" (assignment_expression "*pbVar22 = bVar10" (pointer_expression "*pbVar22" (* "*") (identifier "pbVar22")) (= "=") (identifier "bVar10")) (; ";")) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" (identifier "bVar10") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "pbVar21 = pbVar22 + 1;" (assignment_expression "pbVar21 = pbVar22 + 1" (identifier "pbVar21") (= "=") (binary_expression "pbVar22 + 1" (identifier "pbVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar22 = pbVar21;" (assignment_expression "pbVar22 = pbVar21" (identifier "pbVar22") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" (identifier "pbVar13") (= "=") (identifier "pbVar20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar10 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0xc")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (bVar10 != 0x5f) goto LAB_00298360;" (if "if") (parenthesized_expression "(bVar10 != 0x5f)" (( "(") (binary_expression "bVar10 != 0x5f" (identifier "bVar10") (!= "!=") (number_literal "0x5f")) () ")")) (goto_statement "goto LAB_00298360;" (goto "goto") (statement_identifier "LAB_00298360") (; ";"))) (expression_statement "pbVar23 = pbVar21;" (assignment_expression "pbVar23 = pbVar21" (identifier "pbVar23") (= "=") (identifier "pbVar21")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)pbVar15[2] * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)pbVar15[2] * 2)" (( "(") (binary_expression "puVar2 + (uint)pbVar15[2] * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)pbVar15[2] * 2" (cast_expression "(uint)pbVar15[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar15[2]" (identifier "pbVar15") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0xc")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_0029817c:\n        bVar16 = *pbVar20;" (statement_identifier "LAB_0029817c") (: ":") (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" (identifier "bVar16") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";"))) (} "}")))) (if_statement "if (bVar16 != 0x5f) goto LAB_0029864c;" (if "if") (parenthesized_expression "(bVar16 != 0x5f)" (( "(") (binary_expression "bVar16 != 0x5f" (identifier "bVar16") (!= "!=") (number_literal "0x5f")) () ")")) (goto_statement "goto LAB_0029864c;" (goto "goto") (statement_identifier "LAB_0029864c") (; ";"))) (expression_statement "bVar10 = pbVar20[1];" (assignment_expression "bVar10 = pbVar20[1]" (identifier "bVar10") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (bVar10 != 0x5f) {\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" (if "if") (parenthesized_expression "(bVar10 != 0x5f)" (( "(") (binary_expression "bVar10 != 0x5f" (identifier "bVar10") (!= "!=") (number_literal "0x5f")) () ")")) (compound_statement "{\n        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }\n        break;\n      }" ({ "{") (if_statement "if ((bVar10 == 0x42) || (bVar10 == 0x45)) {\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" (if "if") (parenthesized_expression "((bVar10 == 0x42) || (bVar10 == 0x45))" (( "(") (binary_expression "(bVar10 == 0x42) || (bVar10 == 0x45)" (parenthesized_expression "(bVar10 == 0x42)" (( "(") (binary_expression "bVar10 == 0x42" (identifier "bVar10") (== "==") (number_literal "0x42")) () ")")) (|| "||") (parenthesized_expression "(bVar10 == 0x45)" (( "(") (binary_expression "bVar10 == 0x45" (identifier "bVar10") (== "==") (number_literal "0x45")) () ")"))) () ")")) (compound_statement "{\n          bVar10 = pbVar20[2];\n          pbVar20 = pbVar20 + 2;\n          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }\n          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }\n        }" ({ "{") (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" (identifier "bVar10") (= "=") (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2"))) (; ";")) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar10 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pbVar20 = pbVar20 + 1;\n            bVar10 = *pbVar20;\n          }" ({ "{") (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 1" (identifier "pbVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = *pbVar20;" (assignment_expression "bVar10 = *pbVar20" (identifier "bVar10") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (} "}"))) (if_statement "if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {\n            *pbVar23 = 0;\n            return pbVar17;\n          }" (if "if") (parenthesized_expression "((bVar10 == 0x73) && (pbVar20[1] == 0))" (( "(") (binary_expression "(bVar10 == 0x73) && (pbVar20[1] == 0)" (parenthesized_expression "(bVar10 == 0x73)" (( "(") (binary_expression "bVar10 == 0x73" (identifier "bVar10") (== "==") (number_literal "0x73")) () ")")) (&& "&&") (parenthesized_expression "(pbVar20[1] == 0)" (( "(") (binary_expression "pbVar20[1] == 0" (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            *pbVar23 = 0;\n            return pbVar17;\n          }" ({ "{") (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "bVar10 = pbVar20[2];" (assignment_expression "bVar10 = pbVar20[2]" (identifier "bVar10") (= "=") (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);" (assignment_expression "uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2)" (identifier "uVar6") (= "=") (pointer_expression "*(ushort *)(puVar2 + (uint)bVar10 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar10 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar10 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar10 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar10 * 2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "pbVar13 = pbVar20 + 2;" (assignment_expression "pbVar13 = pbVar20 + 2" (identifier "pbVar13") (= "=") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((uVar6 & 4) != 0) goto LAB_002985d8;" (if "if") (parenthesized_expression "((uVar6 & 4) != 0)" (( "(") (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" (( "(") (binary_expression "uVar6 & 4" (identifier "uVar6") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002985d8;" (goto "goto") (statement_identifier "LAB_002985d8") (; ";"))) (if_statement "if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;" (if "if") (parenthesized_expression "((bVar10 == 0x5f) && (pbVar20[3] != 0x5f))" (( "(") (binary_expression "(bVar10 == 0x5f) && (pbVar20[3] != 0x5f)" (parenthesized_expression "(bVar10 == 0x5f)" (( "(") (binary_expression "bVar10 == 0x5f" (identifier "bVar10") (== "==") (number_literal "0x5f")) () ")")) (&& "&&") (parenthesized_expression "(pbVar20[3] != 0x5f)" (( "(") (binary_expression "pbVar20[3] != 0x5f" (subscript_expression "pbVar20[3]" (identifier "pbVar20") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0x5f")) () ")"))) () ")")) (goto_statement "goto code_r0x002981cc;" (goto "goto") (statement_identifier "code_r0x002981cc") (; ";"))) (expression_statement "pbVar22 = pbVar23 + 1;" (assignment_expression "pbVar22 = pbVar23 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar23 + 1" (identifier "pbVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar23 = 0x2e;" (assignment_expression "*pbVar23 = 0x2e" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (= "=") (number_literal "0x2e")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (goto_statement "goto LAB_00297fdc;" (goto "goto") (statement_identifier "LAB_00297fdc") (; ";")) (labeled_statement "code_r0x002981cc:\n  uVar11 = 6;" (statement_identifier "code_r0x002981cc") (: ":") (expression_statement "uVar11 = 6;" (assignment_expression "uVar11 = 6" (identifier "uVar11") (= "=") (number_literal "6")) (; ";"))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);" (assignment_expression "puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_PTR__wfilebuf_004321f8 + -0x6658)" (( "(") (binary_expression "PTR_PTR__wfilebuf_004321f8 + -0x6658" (identifier "PTR_PTR__wfilebuf_004321f8") (+ "+") (number_literal "-0x6658")) () ")")))) (; ";")) (expression_statement "puVar12 = PTR_DAT_0043226c + 0x3dac;" (assignment_expression "puVar12 = PTR_DAT_0043226c + 0x3dac" (identifier "puVar12") (= "=") (binary_expression "PTR_DAT_0043226c + 0x3dac" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3dac"))) (; ";")) (expression_statement "puVar14 = puVar19;" (assignment_expression "puVar14 = puVar19" (identifier "puVar14") (= "=") (identifier "puVar19")) (; ";")) (do_statement "do {\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  } while( true );" (do "do") (compound_statement "{\n    puVar14 = puVar14 + 2;\n    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);\n    if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }\n    puVar12 = (undefined *)*puVar14;\n    iVar3 = iVar3 + 1;\n    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;\n    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);\n  }" ({ "{") (expression_statement "puVar14 = puVar14 + 2;" (assignment_expression "puVar14 = puVar14 + 2" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);" (assignment_expression "iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11)" (parenthesized_expression "(*(code *)PTR_strncmp_004366a0)" (( "(") (pointer_expression "*(code *)PTR_strncmp_004366a0" (* "*") (cast_expression "(code *)PTR_strncmp_004366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncmp_004366a0"))) () ")")) (argument_list "(pbVar13,puVar12,uVar11)" (( "(") (identifier "pbVar13") (, ",") (identifier "puVar12") (, ",") (identifier "uVar11") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = puVar19[iVar3 * 2 + 1];\n      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);\n      pbVar21 = pbVar23 + iVar3;\n      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);\nLAB_0029825c:\n      *pbVar21 = 0;\n      return pbVar17;\n    }" ({ "{") (expression_statement "uVar11 = puVar19[iVar3 * 2 + 1];" (assignment_expression "uVar11 = puVar19[iVar3 * 2 + 1]" (identifier "uVar11") (= "=") (subscript_expression "puVar19[iVar3 * 2 + 1]" (identifier "puVar19") ([ "[") (binary_expression "iVar3 * 2 + 1" (binary_expression "iVar3 * 2" (identifier "iVar3") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(uVar11)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "pbVar21 = pbVar23 + iVar3;" (assignment_expression "pbVar21 = pbVar23 + iVar3" (identifier "pbVar21") (= "=") (binary_expression "pbVar23 + iVar3" (identifier "pbVar23") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);" (call_expression "(*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3)" (parenthesized_expression "(*(code *)PTR_memcpy_00436788)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00436788" (* "*") (cast_expression "(code *)PTR_memcpy_00436788" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00436788"))) () ")")) (argument_list "(pbVar23,uVar11,iVar3)" (( "(") (identifier "pbVar23") (, ",") (identifier "uVar11") (, ",") (identifier "iVar3") () ")"))) (; ";")) (labeled_statement "LAB_0029825c:\n      *pbVar21 = 0;" (statement_identifier "LAB_0029825c") (: ":") (expression_statement "*pbVar21 = 0;" (assignment_expression "*pbVar21 = 0" (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")) (= "=") (number_literal "0")) (; ";"))) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (expression_statement "puVar12 = (undefined *)*puVar14;" (assignment_expression "puVar12 = (undefined *)*puVar14" (identifier "puVar12") (= "=") (cast_expression "(undefined *)*puVar14" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;" (if "if") (parenthesized_expression "(puVar12 == (undefined *)0x0)" (( "(") (binary_expression "puVar12 == (undefined *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00297fdc;" (goto "goto") (statement_identifier "LAB_00297fdc") (; ";"))) (expression_statement "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);" (assignment_expression "uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12)" (identifier "uVar11") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(puVar12)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (while_statement "while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)pbVar22[2] * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)pbVar22[2] * 2)" (( "(") (binary_expression "puVar2 + (uint)pbVar22[2] * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)pbVar22[2] * 2" (cast_expression "(uint)pbVar22[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar22[2]" (identifier "pbVar22") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);\n    if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }\n  }" ({ "{") (labeled_statement "LAB_002985d8:\n    do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" (statement_identifier "LAB_002985d8") (: ":") (do_statement "do {\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);" (do "do") (compound_statement "{\n      pbVar22 = pbVar13;\n      bVar16 = pbVar22[1];\n      pbVar20 = pbVar22 + 1;\n      pbVar13 = pbVar20;\n    }" ({ "{") (expression_statement "pbVar22 = pbVar13;" (assignment_expression "pbVar22 = pbVar13" (identifier "pbVar22") (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "bVar16 = pbVar22[1];" (assignment_expression "bVar16 = pbVar22[1]" (identifier "bVar16") (= "=") (subscript_expression "pbVar22[1]" (identifier "pbVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar20 = pbVar22 + 1;" (assignment_expression "pbVar20 = pbVar22 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar22 + 1" (identifier "pbVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar20;" (assignment_expression "pbVar13 = pbVar20" (identifier "pbVar13") (= "=") (identifier "pbVar20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar16 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";"))) (if_statement "if (bVar16 != 0x5f) {\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" (if "if") (parenthesized_expression "(bVar16 != 0x5f)" (( "(") (binary_expression "bVar16 != 0x5f" (identifier "bVar16") (!= "!=") (number_literal "0x5f")) () ")")) (compound_statement "{\n      if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }\nLAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }\n      if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }\n      break;\n    }" ({ "{") (if_statement "if (bVar16 == 0x58) {\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" (if "if") (parenthesized_expression "(bVar16 == 0x58)" (( "(") (binary_expression "bVar16 == 0x58" (identifier "bVar16") (== "==") (number_literal "0x58")) () ")")) (compound_statement "{\n        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }\n      }" ({ "{") (for_statement "for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));\n            pbVar20 = pbVar20 + 1) {\n        }" (for "for") (( "(") (assignment_expression "pbVar20 = pbVar22 + 2" (identifier "pbVar20") (= "=") (binary_expression "pbVar22 + 2" (identifier "pbVar22") (+ "+") (number_literal "2"))) (; ";") (parenthesized_expression "(bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62))" (( "(") (comma_expression "bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62)" (assignment_expression "bVar16 = *pbVar20" (identifier "bVar16") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (, ",") (binary_expression "bVar16 == 0x6e || (bVar16 == 0x62)" (binary_expression "bVar16 == 0x6e" (identifier "bVar16") (== "==") (number_literal "0x6e")) (|| "||") (parenthesized_expression "(bVar16 == 0x62)" (( "(") (binary_expression "bVar16 == 0x62" (identifier "bVar16") (== "==") (number_literal "0x62")) () ")")))) () ")")) (; ";") (assignment_expression "pbVar20 = pbVar20 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 1" (identifier "pbVar20") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n        }" ({ "{") (} "}"))) (} "}"))) (labeled_statement "LAB_0029864c:\n      if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" (statement_identifier "LAB_0029864c") (: ":") (if_statement "if (bVar16 == 0x2e) {\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" (if "if") (parenthesized_expression "(bVar16 == 0x2e)" (( "(") (binary_expression "bVar16 == 0x2e" (identifier "bVar16") (== "==") (number_literal "0x2e")) () ")")) (compound_statement "{\n        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;\n        bVar16 = pbVar20[2];\n        pbVar20 = pbVar20 + 2;\n        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }\n      }" ({ "{") (if_statement "if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;" (if "if") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)pbVar20[1] * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)pbVar20[1] * 2)" (( "(") (binary_expression "puVar2 + (uint)pbVar20[1] * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)pbVar20[1] * 2" (cast_expression "(uint)pbVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar16 = pbVar20[2];" (assignment_expression "bVar16 = pbVar20[2]" (identifier "bVar16") (= "=") (subscript_expression "pbVar20[2]" (identifier "pbVar20") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pbVar20 = pbVar20 + 2;" (assignment_expression "pbVar20 = pbVar20 + 2" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2"))) (; ";")) (while_statement "while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" (while "while") (parenthesized_expression "((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0" (parenthesized_expression "(*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4)" (( "(") (binary_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4" (pointer_expression "*(ushort *)(puVar2 + (uint)bVar16 * 2)" (* "*") (cast_expression "(ushort *)(puVar2 + (uint)bVar16 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + (uint)bVar16 * 2)" (( "(") (binary_expression "puVar2 + (uint)bVar16 * 2" (identifier "puVar2") (+ "+") (binary_expression "(uint)bVar16 * 2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pbVar20 = pbVar20 + 1;\n          bVar16 = *pbVar20;\n        }" ({ "{") (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + 1" (identifier "pbVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar16 = *pbVar20;" (assignment_expression "bVar16 = *pbVar20" (identifier "bVar16") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (bVar16 == 0) {\n        *pbVar23 = 0;\n        return pbVar17;\n      }" (if "if") (parenthesized_expression "(bVar16 == 0)" (( "(") (binary_expression "bVar16 == 0" (identifier "bVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *pbVar23 = 0;\n        return pbVar17;\n      }" ({ "{") (expression_statement "*pbVar23 = 0;" (assignment_expression "*pbVar23 = 0" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00297fdc:\n  (*(code *)PTR_free_00436800)(pbVar17);" (statement_identifier "LAB_00297fdc") (: ":") (expression_statement "(*(code *)PTR_free_00436800)(pbVar17);" (call_expression "(*(code *)PTR_free_00436800)(pbVar17)" (parenthesized_expression "(*(code *)PTR_free_00436800)" (( "(") (pointer_expression "*(code *)PTR_free_00436800" (* "*") (cast_expression "(code *)PTR_free_00436800" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00436800"))) () ")")) (argument_list "(pbVar17)" (( "(") (identifier "pbVar17") () ")"))) (; ";"))) (expression_statement "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_0043677c)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pbVar17 = (byte *)xmalloc(iVar3 + 3);" (assignment_expression "pbVar17 = (byte *)xmalloc(iVar3 + 3)" (identifier "pbVar17") (= "=") (cast_expression "(byte *)xmalloc(iVar3 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar3 + 3)" (identifier "xmalloc") (argument_list "(iVar3 + 3)" (( "(") (binary_expression "iVar3 + 3" (identifier "iVar3") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (*param_1 != 0x3c) {\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" (if "if") (parenthesized_expression "(*param_1 != 0x3c)" (( "(") (binary_expression "*param_1 != 0x3c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0x3c")) () ")")) (compound_statement "{\n    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);\n    return pbVar17;\n  }" ({ "{") (expression_statement "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);" (call_expression "(*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" (parenthesized_expression "(*(code *)PTR_sprintf_004368f8)" (( "(") (pointer_expression "*(code *)PTR_sprintf_004368f8" (* "*") (cast_expression "(code *)PTR_sprintf_004368f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sprintf_004368f8"))) () ")")) (argument_list "(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1)" (( "(") (identifier "pbVar17") (, ",") (binary_expression "PTR_DAT_0043226c + 0x3dbc" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x3dbc")) (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1);" (call_expression "(*(code *)PTR_strcpy_00436758)(pbVar17,param_1)" (parenthesized_expression "(*(code *)PTR_strcpy_00436758)" (( "(") (pointer_expression "*(code *)PTR_strcpy_00436758" (* "*") (cast_expression "(code *)PTR_strcpy_00436758" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcpy_00436758"))) () ")")) (argument_list "(pbVar17,param_1)" (( "(") (identifier "pbVar17") (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return pbVar17;" (return "return") (identifier "pbVar17") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) condition: (parenthesized_expression (true)))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) condition: (parenthesized_expression (true))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) body: (compound_statement (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))) (break_statement))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (return_statement (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (return_statement (identifier)))))

byte * MASKED(byte *param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  ushort uVar6;
  int iVar4;
  int iVar5;
  undefined *puVar7;
  undefined *puVar8;
  undefined *puVar9;
  byte bVar10;
  undefined4 uVar11;
  undefined *puVar12;
  byte *pbVar13;
  undefined4 *puVar14;
  byte *pbVar15;
  byte bVar16;
  byte *pbVar17;
  undefined *puVar18;
  undefined4 *puVar19;
  byte *pbVar20;
  byte *pbVar21;
  byte *pbVar22;
  byte *pbVar23;
  
  iVar3 = (*(code *)PTR_strncmp_004366a0)(param_1,PTR_DAT_0043226c + 0x3db4,5);
  puVar2 = PTR__sch_istable_004356e0;
  puVar1 = PTR_DAT_0043226c;
  puVar12 = PTR_PTR__wfilebuf_004321f8;
  if (iVar3 == 0) {
    param_1 = param_1 + 5;
  }
  pbVar17 = (byte *)0x0;
  if ((*(ushort *)(PTR__sch_istable_004356e0 + (uint)*param_1 * 2) & 8) != 0) {
    iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);
    pbVar17 = (byte *)xmalloc(iVar3 + 8);
    bVar10 = *param_1;
    puVar7 = PTR_DAT_0043226c + 0x3d78;
    puVar8 = PTR_DAT_0043226c + 0x3d80;
    puVar9 = PTR_DAT_0043226c + 0x3d88;
    uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
    pbVar13 = param_1;
    pbVar22 = pbVar17;
LAB_0029811c:
    do {
      if ((uVar6 & 8) == 0) {
        if (bVar10 != 0x4f) break;
        iVar3 = 4;
        iVar4 = 0;
        puVar18 = PTR_DAT_0043226c + 0x3d70;
        puVar14 = (undefined4 *)(puVar12 + -0x6620);
        while( true ) {
          iVar5 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar18,iVar3);
          if (iVar5 == 0) break;
          puVar18 = (undefined *)*puVar14;
          iVar4 = iVar4 + 1;
          if (puVar18 == (undefined *)0x0) goto LAB_00297fdc;
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);
          puVar14 = puVar14 + 2;
        }
        pbVar15 = pbVar22 + 1;
        pbVar20 = pbVar13 + iVar3;
        uVar11 = *(undefined4 *)(PTR_PTR__wfilebuf_004321f8 + iVar4 * 8 + -0x6624);
        iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);
        *pbVar22 = 0x22;
        (*(code *)PTR_memcpy_00436788)(pbVar15,uVar11,iVar3);
        bVar10 = *pbVar20;
        pbVar21 = pbVar15 + iVar3 + 1;
        pbVar15[iVar3] = 0x22;
LAB_00298360:
        pbVar23 = pbVar21;
        if (bVar10 == 0x54) {
          if (pbVar20[1] != 0x4b) goto LAB_0029817c;
          if (pbVar20[2] == 0x42) {
            if (pbVar20[3] == 0) {
              *pbVar21 = 0;
              return pbVar17;
            }
            break;
          }
          if ((pbVar20[2] != 0x5f) || (pbVar22 = pbVar21 + 1, pbVar20[3] != 0x5f)) break;
          bVar10 = pbVar20[4];
          pbVar13 = pbVar20 + 4;
          *pbVar21 = 0x2e;
          uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
          goto LAB_0029811c;
        }
        if (bVar10 == 0x45) {
          if (pbVar20[1] != 0) goto LAB_0029817c;
          break;
        }
        if (bVar10 == 0x50) {
          if (pbVar20[1] == 0) {
            *pbVar21 = 0;
            return pbVar17;
          }
          goto LAB_0029817c;
        }
        if (bVar10 == 0x4e) {
          if (pbVar20[1] == 0) goto LAB_0029825c;
LAB_002984fc:
          if (bVar10 != 0x44) goto LAB_0029817c;
          if (pbVar20[1] == 0x41) {
            puVar12 = PTR_DAT_0043226c + 0x3da4;
          }
          else {
            if (pbVar20[1] != 0x46) break;
            puVar12 = PTR_DAT_0043226c + 0x3d98;
          }
          (*(code *)PTR_strcpy_00436758)(pbVar21,puVar12);
          iVar3 = (*(code *)PTR_strlen_0043677c)(puVar12);
          pbVar21[iVar3] = 0;
          return pbVar17;
        }
        if (bVar10 != 0x53) {
          if (bVar10 == 0x58) {
            do {
              do {
                pbVar20 = pbVar20 + 1;
                bVar10 = *pbVar20;
              } while (bVar10 == 0x6e);
            } while (bVar10 == 0x62);
            if (bVar10 == 0x53) goto LAB_002983d0;
          }
          goto LAB_002984fc;
        }
        if (pbVar20[1] == 0) break;
LAB_002983d0:
        bVar10 = pbVar20[1];
        if ((bVar10 == 0) || ((bVar16 = pbVar20[2], bVar16 != 0x5f && (bVar16 != 0)))) break;
        puVar18 = puVar7;
        if (bVar10 != 0x4f) {
          if ((char)bVar10 < 'P') {
            puVar18 = puVar9;
            if (bVar10 != 0x49) break;
          }
          else {
            puVar18 = puVar8;
            if (bVar10 != 0x52) {
              if (bVar10 != 0x57) break;
              puVar18 = puVar1 + 0x3d90;
            }
          }
        }
        pbVar20 = pbVar20 + 2;
        (*(code *)PTR_strcpy_00436758)(pbVar21,puVar18);
        iVar3 = (*(code *)PTR_strlen_0043677c)(puVar18);
        pbVar23 = pbVar21 + iVar3;
      }
      else {
        do {
          do {
            pbVar15 = pbVar13;
            pbVar20 = pbVar15 + 1;
            *pbVar22 = bVar10;
            bVar10 = *pbVar20;
            pbVar21 = pbVar22 + 1;
            pbVar22 = pbVar21;
            pbVar13 = pbVar20;
          } while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 0xc) != 0);
          if (bVar10 != 0x5f) goto LAB_00298360;
          pbVar23 = pbVar21;
        } while ((*(ushort *)(puVar2 + (uint)pbVar15[2] * 2) & 0xc) != 0);
LAB_0029817c:
        bVar16 = *pbVar20;
      }
      if (bVar16 != 0x5f) goto LAB_0029864c;
      bVar10 = pbVar20[1];
      if (bVar10 != 0x5f) {
        if ((bVar10 == 0x42) || (bVar10 == 0x45)) {
          bVar10 = pbVar20[2];
          pbVar20 = pbVar20 + 2;
          while ((*(ushort *)(puVar2 + (uint)bVar10 * 2) & 4) != 0) {
            pbVar20 = pbVar20 + 1;
            bVar10 = *pbVar20;
          }
          if ((bVar10 == 0x73) && (pbVar20[1] == 0)) {
            *pbVar23 = 0;
            return pbVar17;
          }
        }
        break;
      }
      bVar10 = pbVar20[2];
      uVar6 = *(ushort *)(puVar2 + (uint)bVar10 * 2);
      pbVar13 = pbVar20 + 2;
      if ((uVar6 & 4) != 0) goto LAB_002985d8;
      if ((bVar10 == 0x5f) && (pbVar20[3] != 0x5f)) goto code_r0x002981cc;
      pbVar22 = pbVar23 + 1;
      *pbVar23 = 0x2e;
    } while( true );
  }
  goto LAB_00297fdc;
code_r0x002981cc:
  uVar11 = 6;
  iVar3 = 0;
  puVar19 = (undefined4 *)(PTR_PTR__wfilebuf_004321f8 + -0x6658);
  puVar12 = PTR_DAT_0043226c + 0x3dac;
  puVar14 = puVar19;
  do {
    puVar14 = puVar14 + 2;
    iVar4 = (*(code *)PTR_strncmp_004366a0)(pbVar13,puVar12,uVar11);
    if (iVar4 == 0) {
      uVar11 = puVar19[iVar3 * 2 + 1];
      iVar3 = (*(code *)PTR_strlen_0043677c)(uVar11);
      pbVar21 = pbVar23 + iVar3;
      (*(code *)PTR_memcpy_00436788)(pbVar23,uVar11,iVar3);
LAB_0029825c:
      *pbVar21 = 0;
      return pbVar17;
    }
    puVar12 = (undefined *)*puVar14;
    iVar3 = iVar3 + 1;
    if (puVar12 == (undefined *)0x0) goto LAB_00297fdc;
    uVar11 = (*(code *)PTR_strlen_0043677c)(puVar12);
  } while( true );
  while ((*(ushort *)(puVar2 + (uint)pbVar22[2] * 2) & 4) != 0) {
LAB_002985d8:
    do {
      pbVar22 = pbVar13;
      bVar16 = pbVar22[1];
      pbVar20 = pbVar22 + 1;
      pbVar13 = pbVar20;
    } while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0);
    if (bVar16 != 0x5f) {
      if (bVar16 == 0x58) {
        for (pbVar20 = pbVar22 + 2; (bVar16 = *pbVar20, bVar16 == 0x6e || (bVar16 == 0x62));
            pbVar20 = pbVar20 + 1) {
        }
      }
LAB_0029864c:
      if (bVar16 == 0x2e) {
        if ((*(ushort *)(puVar2 + (uint)pbVar20[1] * 2) & 4) == 0) break;
        bVar16 = pbVar20[2];
        pbVar20 = pbVar20 + 2;
        while ((*(ushort *)(puVar2 + (uint)bVar16 * 2) & 4) != 0) {
          pbVar20 = pbVar20 + 1;
          bVar16 = *pbVar20;
        }
      }
      if (bVar16 == 0) {
        *pbVar23 = 0;
        return pbVar17;
      }
      break;
    }
  }
LAB_00297fdc:
  (*(code *)PTR_free_00436800)(pbVar17);
  iVar3 = (*(code *)PTR_strlen_0043677c)(param_1);
  pbVar17 = (byte *)xmalloc(iVar3 + 3);
  if (*param_1 != 0x3c) {
    (*(code *)PTR_sprintf_004368f8)(pbVar17,PTR_DAT_0043226c + 0x3dbc,param_1);
    return pbVar17;
  }
  (*(code *)PTR_strcpy_00436758)(pbVar17,param_1);
  return pbVar17;
}

