void MlmeSelectTxRateTable
               (int param_1,int param_2,undefined4 *param_3,undefined1 *param_4,undefined1 *param_5)

{
  byte bVar1;
  undefined1 uVar2;
  char cVar3;
  undefined1 *puVar4;
  uint uVar5;
  
  if (*(char *)(param_1 + 0x16a4b) != '\0') {
    puVar4 = &RateSwitchTable;
    *param_3 = &RateSwitchTable;
    uVar2 = RateSwitchTable;
    goto LAB_00014cd0;
  }
  bVar1 = *(byte *)(param_2 + 0x477);
  if (bVar1 == 0xc) {
    cVar3 = *(char *)(param_2 + 0x45d)   //possible issue identified - semgrep
LAB_00014abc:
    if ((cVar3 == -1) &&
       ((*(char *)(param_2 + 0x45e) == '\0' || (*(char *)(param_1 + 0x16e13) == '\x01')))) {
      puVar4 = &RateSwitchTable11BGN1S;
      *param_3 = &RateSwitchTable11BGN1S;
      uVar2 = RateSwitchTable11BGN1S;
      goto LAB_00014cd0;
    }
    if (bVar1 != 0xc) goto LAB_00014b0c;
    uVar5 = *(uint *)(param_2 + 0x45c);
LAB_00014b20:
    if ((uVar5 & 0xffff00) == 0xffff00) {
      if (((*(uint *)(param_1 + 0x4bf4) & 0xf0) == 0x30) && (*(char *)(param_2 + 0x45f) == '\0')) {
        bVar1 = *(byte *)(param_1 + 0x4be0);
      }
      else {
        if (*(char *)(param_1 + 0x16e13) != '\x02') {
          cVar3 = *(char *)(param_2 + 0x45d)   //possible issue identified - semgrep
          goto LAB_00014ba0;
        }
        bVar1 = *(byte *)(param_1 + 0x4be0);
      }
      if (bVar1 < 0xf) {
        puVar4 = &RateSwitchTable11BGN2S;
        *param_3 = &RateSwitchTable11BGN2S;
        uVar2 = RateSwitchTable11BGN2S;
      }
      else {
        puVar4 = &RateSwitchTable11BGN2SForABand;
        *param_3 = &RateSwitchTable11BGN2SForABand;
        uVar2 = RateSwitchTable11BGN2SForABand;
      }
      goto LAB_00014cd0;
    }
    cVar3 = *(char *)(param_2 + 0x45d)   //possible issue identified - semgrep
  }
  else {
    if (*(char *)(param_1 + 0x16964) == '\0') {
      cVar3 = *(char *)(param_2 + 0x45d)   //possible issue identified - semgrep
      goto LAB_00014abc;
    }
LAB_00014b0c:
    if (*(char *)(param_1 + 0x16964) == '\0') {
      uVar5 = *(uint *)(param_2 + 0x45c);
      goto LAB_00014b20;
    }
    cVar3 = *(char *)(param_2 + 0x45d)   //possible issue identified - semgrep
  }
LAB_00014ba0:
  if (cVar3 == -1) {
    if ((*(char *)(param_2 + 0x45e) == '\0') || (*(char *)(param_1 + 0x16e13) == '\x01')) {
      puVar4 = &RateSwitchTable11N1S;
      *param_3 = &RateSwitchTable11N1S;
      uVar2 = RateSwitchTable11N1S;
      goto LAB_00014cd0;
    }
    uVar5 = *(uint *)(param_2 + 0x45c);
  }
  else {
    uVar5 = *(uint *)(param_2 + 0x45c);
  }
  uVar5 = uVar5 & 0xffff00;
  if ((uVar5 == 0xffff00) && (1 < *(byte *)(param_1 + 0x16e13))) {
    if (*(byte *)(param_1 + 0x4be0) < 0xf) {
      puVar4 = &RateSwitchTable11N2S;
      *param_3 = &RateSwitchTable11N2S;
      uVar2 = RateSwitchTable11N2S;
    }
    else {
      puVar4 = &RateSwitchTable11N2SForABand;
      *param_3 = &RateSwitchTable11N2SForABand;
      uVar2 = RateSwitchTable11N2SForABand;
    }
    goto LAB_00014cd0;
  }
  if ((bVar1 == 4) || (*(char *)(param_1 + 0x16982) == '\x01')) {
    puVar4 = &RateSwitchTable11B;
    *param_3 = &RateSwitchTable11B;
    uVar2 = RateSwitchTable11B;
    goto LAB_00014cd0;
  }
  if (bVar1 < 9) {
    if (bVar1 == 8) {
      if (uVar5 != 0) {
        bVar1 = *(byte *)(param_1 + 0x4be0);
        goto LAB_00014ca4;
      }
    }
    else {
      bVar1 = *(byte *)(param_1 + 0x4be0);
LAB_00014ca4:
      if (bVar1 < 0xf) goto LAB_00014cb4;
    }
    puVar4 = &RateSwitchTable11G;
    *param_3 = &RateSwitchTable11G;
    uVar2 = RateSwitchTable11G;
  }
  else {
    if (uVar5 != 0) {
      bVar1 = *(byte *)(param_1 + 0x4be0);
      goto LAB_00014ca4;
    }
LAB_00014cb4:
    puVar4 = &RateSwitchTable11BG;
    *param_3 = &RateSwitchTable11BG;
    uVar2 = RateSwitchTable11BG;
  }
LAB_00014cd0:
  *param_4 = uVar2;
  *param_5 = puVar4[1];
  return;
}