undefined4 FUN_00403150(int param_1,int param_2)

{
  undefined1 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined1 local_24 [4];
  undefined1 auStack_20 [20];
  
  local_30 = *(undefined4 *)(param_2 + 8);
  local_2c = *(undefined4 *)(param_2 + 0xc);
  local_28 = *(undefined4 *)(param_2 + 0x10);
  local_24 = (undefined1  [4])*(undefined4 *)(param_2 + 0x14);
  puVar2 = (undefined4 *)(local_24 + 3);
  puVar3 = &local_30;
  do {
    uVar1 = *(undefined1 *)puVar3;
    *(undefined1 *)puVar3 = *(undefined1 *)puVar2;
    *(undefined1 *)puVar2 = uVar1;
    puVar3 = (undefined4 *)((int)puVar3 + 1);
    puVar2 = (undefined4 *)((int)puVar2 + -1);
  } while (puVar3 < puVar2);
  FUN_00402fec(auStack_20,&local_30,*(int *)(param_2 + 0x18) - *(int *)(param_1 + 0x10),0x80);
  FUN_00402e30(&local_30,auStack_20,0x20 - *(int *)(param_1 + 0x10),0x80);
  return local_24;
}