undefined4 FUN_0048331c(undefined **param_1)

{
  ushort uVar1;
  int iVar2;
  ushort *puVar3;
  undefined4 uVar4;
  ushort uVar5;
  undefined1 auStack_38 [16];
  
  if (param_1 == &PTR_DAT_004b76bc) {
    uVar5 = 0;
  }
  else {
    uVar5 = 0x100;
    if (param_1 != (undefined **)0x0) {
      if (((uint)*param_1 & 0x40) == 0) {
        return 0;
      }
      iVar2 = FUN_00481660();
      if (iVar2 != 0) {
        return 0xffffffff;
      }
      *(ushort *)param_1 = *(ushort *)param_1 & 0xffbf;
      return 0;
    }
  }
  FUN_004874ec(auStack_38,FUN_004874e4,&DAT_004b7688);
  uVar4 = 0;
  FUN_004874e4(&DAT_004b7688);
  DAT_004c01a0 = DAT_004c01a0 + 1;
  FUN_004874ec(auStack_38,1);
  FUN_004874ec(auStack_38,FUN_004874e4,&DAT_004b7670);
  FUN_004874e4(&DAT_004b7670);
  puVar3 = (ushort *)PTR_DAT_004b76bc;
  FUN_004874ec(auStack_38,1);
  while (puVar3 != (ushort *)0x0) {
    if ((*puVar3 & 0x40) == 0) {
      puVar3 = *(ushort **)(puVar3 + 0xc);
    }
    else {
      if (DAT_004b76a0 == 2) {
        uVar1 = *puVar3;
      }
      else {
        FUN_004874ec(auStack_38,FUN_004874e4,puVar3 + 0x1a);
        FUN_004874e4(puVar3 + 0x1a);
        uVar1 = *puVar3;
      }
      if ((((uVar5 | uVar1) ^ 0x140) & 0x340) == 0) {
        iVar2 = FUN_00481660(puVar3);
        if (iVar2 == 0) {
          *puVar3 = *puVar3 & 0xffbf;
        }
        else {
          uVar4 = 0xffffffff;
        }
      }
      if (DAT_004b76a0 == 2) {
        puVar3 = *(ushort **)(puVar3 + 0xc);
      }
      else {
        FUN_004874ec(auStack_38,1);
        puVar3 = *(ushort **)(puVar3 + 0xc);
      }
    }
  }
  FUN_004831c0();
  return uVar4;
}