int FUN_00402b04(int param_1,int param_2)

{
  int local_18;
  int local_10;
  
  local_18 = (((bwmax + bwmin) / 2) * 3) / 2;
  if (local_18 < 50000) {
    local_18 = 50000;
  }
  if (local_18 < 100000) {
    local_18 = 100000;
  }
  if ((bwmax == 0) && (bwmin == 0)) {
    puts("ZERO ERROR");
    local_10 = 0;
  }
  else if ((param_1 < 1000) || ((bwok != 10000 || (param_2 <= local_18)))) {
    if ((param_1 < bwok) && (param_2 <= local_18)) {
      bwok = param_1;
    }
    if ((bwfail < param_1) && (local_18 < param_2)) {
      bwfail = param_1;
    }
    if ((bwok == 10000) || (bwfail == 1)) {
      if (param_2 <= local_18) {
        if (1000 < param_1) {
          return param_1 + -500;
        }
        if ((400 < param_1) && (param_1 < 0x3e9)) {
          return param_1 + -300;
        }
        if ((200 < param_1) && (param_1 < 0x191)) {
          return param_1 + -0x32;
        }
        if ((100 < param_1) && (param_1 < 0xc9)) {
          return param_1 + -0x14;
        }
        if ((0xf < param_1) && (param_1 < 0x65)) {
          return param_1 + -10;
        }
        if (param_1 < 10) {
          bwfail = 1;
          bwok = 10000;
          return 1000;
        }
      }
      if (local_18 < param_2) {
        if (999 < param_1) {
          return param_1 + 500;
        }
        if (9000 < param_1) {
          bwfail = 1;
          bwok = 10000;
          return 1000;
        }
      }
      local_10 = 1000;
    }
    else {
      local_10 = 0;
    }
  }
  else {
    local_10 = param_1 + 1000;
  }
  return local_10;
}