undefined4 * FUN_00475d0c(int param_1)
{
char cVar1;
char cVar2;
undefined4 uVar3;
int iVar4;
undefined4 *puVar5;
int iVar6;
undefined4 *puVar7;
int iVar8;
char *pcVar9;
int iVar10;
int iVar11;
uint uVar12;
cVar1 = **(char **)(param_1 + 0xc) //possible issue identified - semgrep
if (cVar1 != '\0') {
*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
}
iVar11 = (int)**(char **)(param_1 + 0xc);
if (iVar11 != 0) {
*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
}
if (cVar1 == 'v') {
uVar12 = iVar11 - 0x30;
if ((uVar12 & 0xff) < 10) {
iVar11 = FUN_00475334(param_1);
iVar8 = *(int *)(param_1 + 0x14);
if (*(int *)(param_1 + 0x18) <= iVar8) {
return (undefined4 *)0x0;
}
puVar5 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar8 * 0xc);
*(int *)(param_1 + 0x14) = iVar8 + 1;
if (puVar5 == (undefined4 *)0x0) {
return (undefined4 *)0x0;
}
if ((int)uVar12 < 0) {
return (undefined4 *)0x0;
}
if (iVar11 == 0) {
return (undefined4 *)0x0;
}
*puVar5 = 0x2a;
puVar5[1] = uVar12;
puVar5[2] = iVar11;
return puVar5;
}
}
else if ((cVar1 == 'c') && (iVar11 == 0x76)) {
uVar3 = FUN_004754f4(param_1);
/* WARNING: Could not recover jumptable at 0x00475e40. Too many branches */
/* WARNING: Treating indirect jump as call */
puVar5 = (undefined4 *)FUN_00473000(param_1,0x2b,uVar3,0);
return puVar5;
}
iVar10 = 0;
iVar4 = 0x31;
iVar8 = 0x31;
do {
iVar6 = iVar4 / 2 + iVar10;
puVar5 = (undefined4 *)(iVar6 * 0x10 + 0x4ae3dc);
pcVar9 = (char *)*puVar5;
cVar2 = *pcVar9;
if (cVar1 == cVar2) {
iVar4 = (int)pcVar9[1];
if (iVar11 == iVar4) {
iVar11 = *(int *)(param_1 + 0x14);
if (*(int *)(param_1 + 0x18) <= iVar11) {
return (undefined4 *)0x0;
}
puVar7 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar11 * 0xc);
*(int *)(param_1 + 0x14) = iVar11 + 1;
if (puVar7 != (undefined4 *)0x0) {
*puVar7 = 0x29;
puVar7[1] = puVar5;
return puVar7;
}
return (undefined4 *)0x0;
}
if (iVar4 <= iVar11) {
iVar10 = iVar6 + 1;
iVar6 = iVar8;
}
}
else if (cVar2 <= cVar1) {
iVar10 = iVar6 + 1;
iVar6 = iVar8;
}
iVar4 = iVar6 - iVar10;
iVar8 = iVar6;
if (iVar10 == iVar6) {
return (undefined4 *)0x0;
}
} while( true );
}