void FUN_00474bcc(int param_1,int param_2,undefined4 *param_3)
{
bool bVar1;
bool bVar2;
bool bVar3;
uint uVar4;
undefined4 *puVar5;
undefined4 uVar6;
bVar1 = false;
for (puVar5 = param_3; bVar2 = false, puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5)
{
bVar3 = false;
if (puVar5[2] != 0) goto LAB_00474c84;
uVar4 = 1 << (*(int *)puVar5[1] - 0x16U & 0x1f);
if (*(int *)puVar5[1] - 0x16U < 0x11) {
if ((uVar4 & 0x10c47) == 0) {
if ((uVar4 & 0x380) == 0) goto LAB_00474c70;
bVar3 = false;
}
else {
bVar3 = true;
}
bVar2 = true;
bVar1 = true;
goto LAB_00474c84;
}
LAB_00474c70:
bVar1 = true;
}
bVar3 = false;
LAB_00474c84:
if ((*(int *)(param_2 + 4) == 0) || (bVar1)) {
if (!bVar2) goto LAB_00474d14;
}
else {
bVar2 = true;
}
if (((bVar3) || ((*(char *)(param_1 + 0x108) != '(' && (*(char *)(param_1 + 0x108) != '*')))) &&
(*(char *)(param_1 + 0x108) != ' ')) {
FUN_004736cc(param_1,0x20);
}
FUN_004736cc(param_1,0x28);
LAB_00474d14:
uVar6 = *(undefined4 *)(param_1 + 0x118);
*(undefined4 *)(param_1 + 0x118) = 0;
FUN_00474e04(param_1,param_3,0);
if (bVar2) {
FUN_004736cc(param_1,0x29);
}
FUN_004736cc(param_1,0x28);
if (*(int *)(param_2 + 8) != 0) {
FUN_004739e0(param_1);
}
FUN_004736cc(param_1,0x29);
FUN_00474e04(param_1,param_3,1);
*(undefined4 *)(param_1 + 0x118) = uVar6;
return;
}