void FUN_0047501c(undefined4 param_1,int param_2,int *param_3)

{
  bool bVar1;
  bool bVar2;
  int *piVar3;
  
  piVar3 = param_3;
  if (param_3 != (int *)0x0) {
    do {
      if (piVar3[2] == 0) {
        bVar2 = false;
        if (*(int *)piVar3[1] == 0x25) {
          bVar1 = false;
        }
        else {
          FUN_004737d0(param_1,&DAT_00497d7c);
          bVar2 = true;
          bVar1 = true;
        }
        goto LAB_004750a0;
      }
      piVar3 = (int *)*piVar3;
      bVar2 = true;
    } while (piVar3 != (int *)0x0);
    bVar1 = false;
LAB_004750a0:
    FUN_00474e04(param_1,param_3,0);
    if (bVar1) {
      FUN_004736cc(param_1,0x29);
    }
    if (!bVar2) goto LAB_00475100;
  }
  FUN_004736cc(param_1,0x20);
LAB_00475100:
  FUN_004736cc(param_1,0x5b);
  if (*(int *)(param_2 + 4) != 0) {
    FUN_004739e0(param_1);
  }
  FUN_004736cc(param_1,0x5d);
  return;
}