undefined1 * FUN_00400d30(undefined1 *param_1,uint param_2,uint param_3)

{
  long lVar1;
  uint uVar2;
  uint uVar3;
  undefined1 uVar4;
  uint uVar5;
  undefined1 uVar6;
  undefined1 uVar8;
  undefined1 uVar9;
  uint uVar7;
  
  param_2 = param_2 & 0xff;
  param_3 = param_3 & 0xff;
  uVar7 = param_3;
  if (param_3 < param_2) {
    uVar7 = param_2;
    param_2 = param_3;
  }
  uVar6 = (undefined1)uVar7;
  uVar5 = uVar7 - param_2 & 0xff;
  if (uVar5 == 0) {
    uVar5 = 1;
  }
  lVar1 = random();
  if (uVar5 == 0) {
    trap(0x1c00);
  }
  uVar2 = param_2 + lVar1 % (int)uVar5;
  uVar9 = (undefined1)uVar2;
  lVar1 = random();
  if (uVar5 == 0) {
    trap(0x1c00);
  }
  uVar3 = param_2 + lVar1 % (int)uVar5;
  uVar8 = (undefined1)uVar3;
  lVar1 = random();
  if (uVar5 == 0) {
    trap(0x1c00);
  }
  param_2 = param_2 + lVar1 % (int)uVar5;
  uVar4 = (undefined1)param_2;
  if (uVar7 != 0) {
    if (uVar7 < (uVar2 & 0xff)) {
      uVar9 = uVar6;
    }
    if (uVar7 < (uVar3 & 0xff)) {
      uVar8 = uVar6;
    }
    if (uVar7 < (param_2 & 0xff)) {
      uVar4 = uVar6;
    }
  }
  param_1[2] = uVar9;
  param_1[1] = uVar8;
  *param_1 = uVar4;
  return param_1;
}