int * FUN_00475f2c(int param_1)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  cVar1 = **(char **)(param_1 + 0xc)   //possible issue identified - semgrep
  if ((byte)(cVar1 - 0x30U) < 10) {
    piVar2 = (int *)FUN_00475334();
    return piVar2;
  }
  if ((byte)(cVar1 + 0x9fU) < 0x1a) {
    piVar2 = (int *)FUN_00475d0c();
    if (piVar2 == (int *)0x0) {
      return (int *)0x0;
    }
    if (*piVar2 != 0x29) {
      return piVar2;
    }
    *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + *(int *)(piVar2[1] + 8) + 7;
    return piVar2;
  }
  if ((byte)(cVar1 + 0xbdU) < 2) {
    piVar2 = *(int **)(param_1 + 0x2c);
    if ((piVar2 != (int *)0x0) && ((*piVar2 == 0 || (*piVar2 == 0x15)))) {
      *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + piVar2[2];
    }
    pcVar3 = *(char **)(param_1 + 0xc);
    if (*pcVar3 == 'C') {
      cVar1 = pcVar3[1]   //possible issue identified - semgrep
      if (cVar1 == '2') {
        iVar5 = 2;
      }
      else if (cVar1 == '3') {
        iVar5 = 3;
      }
      else {
        if (cVar1 != '1') {
          return (int *)0x0;
        }
        iVar5 = 1;
      }
      iVar4 = *(int *)(param_1 + 0x14);
      *(char **)(param_1 + 0xc) = pcVar3 + 2;
      iVar6 = *(int *)(param_1 + 0x2c);
      if (*(int *)(param_1 + 0x18) <= iVar4) {
        return (int *)0x0;
      }
      piVar2 = (int *)(*(int *)(param_1 + 0x10) + iVar4 * 0xc);
      *(int *)(param_1 + 0x14) = iVar4 + 1;
      if (piVar2 == (int *)0x0) {
        return (int *)0x0;
      }
      iVar4 = 6;
      if (iVar6 == 0) {
        return (int *)0x0;
      }
LAB_0047616c:
      *piVar2 = iVar4;
      piVar2[1] = iVar5;
      piVar2[2] = iVar6;
      return piVar2;
    }
    if (*pcVar3 == 'D') {
      cVar1 = pcVar3[1]   //possible issue identified - semgrep
      if (cVar1 == '1') {
        iVar5 = 2;
      }
      else if (cVar1 == '2') {
        iVar5 = 3;
      }
      else {
        if (cVar1 != '0') {
          return (int *)0x0;
        }
        iVar5 = 1;
      }
      iVar4 = *(int *)(param_1 + 0x14);
      *(char **)(param_1 + 0xc) = pcVar3 + 2;
      iVar6 = *(int *)(param_1 + 0x2c);
      if (*(int *)(param_1 + 0x18) <= iVar4) {
        return (int *)0x0;
      }
      piVar2 = (int *)(*(int *)(param_1 + 0x10) + iVar4 * 0xc);
      *(int *)(param_1 + 0x14) = iVar4 + 1;
      if (piVar2 == (int *)0x0) {
        return (int *)0x0;
      }
      iVar4 = 7;
      if (iVar6 != 0) goto LAB_0047616c;
    }
  }
  else {
    if (cVar1 != 'L') {
      return (int *)0x0;
    }
    *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
    piVar2 = (int *)FUN_00475334();
    if (piVar2 != (int *)0x0) {
      if (**(char **)(param_1 + 0xc) != '_') {
        return piVar2;
      }
      *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
      iVar5 = FUN_004730c0(param_1);
      if (-1 < iVar5) {
        return piVar2;
      }
    }
  }
  return (int *)0x0;
}