void FUN_00405c58(undefined4 *param_1,undefined **param_2,int param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined **ppuVar3;
  undefined2 local_20 [6];
  
  puVar1 = param_1;
  ppuVar3 = param_2;
  if (param_3 == 0) {
    puVar1 = (undefined4 *)FUN_0047082c(4);
    ppuVar3 = &PTR_PTR_FUN_004af1e0;
    *puVar1 = 0x1005;
    FUN_00472734(puVar1,&PTR_PTR_FUN_004af1e0,0);
  }
  local_20[0] = CONCAT11(*(undefined1 *)puVar1,*(undefined1 *)((int)puVar1 + 1));
  FUN_00405914(ppuVar3,2,local_20);
  local_20[0] = CONCAT11(*(undefined1 *)((int)param_1 + 2),*(undefined1 *)((int)param_1 + 3));
  FUN_00405914(param_2,2,local_20);
  uVar2 = FUN_00405914(param_2,*(undefined2 *)((int)param_1 + 2),param_3);
  param_1[1] = uVar2;
  return;
}