undefined4 * FUN_00473458(int param_1,int param_2)
{
char cVar1;
undefined4 *puVar2;
char *pcVar3;
int iVar4;
int iVar5;
char *pcVar6;
uint uVar7;
uint uVar8;
undefined4 uVar9;
pcVar3 = *(char **)(param_1 + 0xc);
if (*pcVar3 != 'S') {
return (undefined4 *)0x0;
}
*(char **)(param_1 + 0xc) = pcVar3 + 1;
cVar1 = pcVar3[1] //possible issue identified - semgrep
uVar7 = (uint)cVar1;
if (uVar7 != 0) {
*(char **)(param_1 + 0xc) = pcVar3 + 2;
iVar4 = 0;
if (uVar7 == 0x5f) goto LAB_00473548;
}
if ((9 < (byte)(cVar1 - 0x30U)) && (0x19 < (byte)(cVar1 + 0xbfU))) {
uVar8 = *(uint *)(param_1 + 8) >> 3 & 1;
if ((uVar8 == 0) && (param_2 != 0)) {
uVar8 = (uint)((byte)(**(char **)(param_1 + 0xc) + 0xbdU) < 2);
}
pcVar3 = &DAT_004ae6fc;
do {
pcVar6 = pcVar3;
if (pcVar6 == &DAT_004ae7c0) {
return (undefined4 *)0x0;
}
pcVar3 = pcVar6 + 0x1c;
} while ((int)*pcVar6 != uVar7);
iVar4 = *(int *)(pcVar6 + 0x14);
if (iVar4 != 0) {
iVar5 = *(int *)(param_1 + 0x14);
uVar9 = *(undefined4 *)(pcVar6 + 0x18);
puVar2 = (undefined4 *)0x0;
if (iVar5 < *(int *)(param_1 + 0x18)) {
puVar2 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 0xc);
*(int *)(param_1 + 0x14) = iVar5 + 1;
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = 0x15;
puVar2[1] = iVar4;
puVar2[2] = uVar9;
}
}
*(undefined4 **)(param_1 + 0x2c) = puVar2;
}
if (uVar8 == 0) {
iVar4 = *(int *)(pcVar6 + 8);
uVar9 = *(undefined4 *)(pcVar6 + 4);
}
else {
iVar4 = *(int *)(pcVar6 + 0x10);
uVar9 = *(undefined4 *)(pcVar6 + 0xc);
}
iVar5 = *(int *)(param_1 + 0x14);
*(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + iVar4;
if (*(int *)(param_1 + 0x18) <= iVar5) {
return (undefined4 *)0x0;
}
puVar2 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 0xc);
*(int *)(param_1 + 0x14) = iVar5 + 1;
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = 0x15;
puVar2[1] = uVar9;
puVar2[2] = iVar4;
return puVar2;
}
return (undefined4 *)0x0;
}
iVar4 = 0;
do {
iVar4 = iVar4 * 0x24 + uVar7;
if (((uVar7 & 0xff) - 0x30 & 0xff) < 10) {
iVar4 = iVar4 + -0x30;
}
else {
iVar4 = iVar4 + -0x37;
if (0x19 < ((uVar7 & 0xff) - 0x41 & 0xff)) {
return (undefined4 *)0x0;
}
}
if (iVar4 < 0) {
return (undefined4 *)0x0;
}
uVar7 = (uint)**(char **)(param_1 + 0xc);
} while ((uVar7 == 0) ||
(*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1, uVar7 != 0x5f));
iVar4 = iVar4 + 1;
LAB_00473548:
if (iVar4 < *(int *)(param_1 + 0x20)) {
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
return *(undefined4 **)(*(int *)(param_1 + 0x1c) + iVar4 * 4);
}
return (undefined4 *)0x0;
}