undefined4 FUN_00476c3c(int param_1)
{
int *piVar1;
int iVar2;
char *pcVar3;
undefined4 uVar4;
undefined4 *puVar5;
int iVar6;
pcVar3 = *(char **)(param_1 + 0xc);
if (*pcVar3 == 'L') {
*(char **)(param_1 + 0xc) = pcVar3 + 1;
if (pcVar3[1] == '_') {
*(char **)(param_1 + 0xc) = pcVar3 + 2;
uVar4 = 0;
if (pcVar3[2] == 'Z') {
*(char **)(param_1 + 0xc) = pcVar3 + 3;
uVar4 = FUN_004763b0(param_1,0);
}
}
else {
piVar1 = (int *)FUN_004754f4();
if (piVar1 == (int *)0x0) {
return 0;
}
if ((*piVar1 == 0x22) && (*(int *)(piVar1[1] + 0x10) != 0)) {
*(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) - *(int *)(piVar1[1] + 4);
}
uVar4 = 0x32;
if (**(char **)(param_1 + 0xc) == 'n') {
*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
uVar4 = 0x33;
}
iVar6 = *(int *)(param_1 + 0xc);
while( true ) {
pcVar3 = *(char **)(param_1 + 0xc);
if (*pcVar3 == 'E') break;
if (*pcVar3 == '\0') {
return 0;
}
*(char **)(param_1 + 0xc) = pcVar3 + 1;
}
iVar2 = *(int *)(param_1 + 0x14);
puVar5 = (undefined4 *)0x0;
if (iVar2 < *(int *)(param_1 + 0x18)) {
puVar5 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar2 * 0xc);
*(int *)(param_1 + 0x14) = iVar2 + 1;
if (((puVar5 == (undefined4 *)0x0) || (iVar6 == 0)) || ((int)pcVar3 - iVar6 == 0)) {
puVar5 = (undefined4 *)0x0;
}
else {
puVar5[1] = iVar6;
puVar5[2] = (int)pcVar3 - iVar6;
*puVar5 = 0;
}
}
uVar4 = FUN_00473000(param_1,uVar4,piVar1,puVar5);
}
if (**(char **)(param_1 + 0xc) == 'E') {
*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
return uVar4;
}
}
return 0;
}