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