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;
}