void AsicAddPairwiseKeyEntry(int param_1,uint param_2,byte *param_3)

{
  byte *pbVar1;
  byte bVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  uint uVar7;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  
  uVar7 = Status;
  bVar2 = param_3[0x40];
  uVar11 = 0;
  if (*(char *)(param_1 + 0xad) == '\x01') {
    Status = Status & 0xfffffffe;
    uVar11 = uVar7 & 1;
    *(undefined1 *)(param_1 + 0x5154) = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
    }
  }
  uVar9 = ((param_2 & 0xff) + 0x200) * 0x20;
  uVar10 = uVar9 + 0x10;
  uVar7 = uVar9;
  pbVar8 = param_3;
  do {
    puVar6 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar7 - (uVar7 & 3)));
    iVar5 = (uVar7 & 3) << 3;
    uVar7 = uVar7 + 1;
    *puVar6 = *puVar6 & ~(0xff << iVar5) | (uint)*pbVar8 << iVar5;
    pbVar8 = pbVar8 + 1;
    uVar4 = uVar9;
  } while (uVar7 != uVar10);
  do {
    uVar4 = uVar4 + 4;
  } while (uVar4 != uVar7);
  if (param_3 != (byte *)0xfffffff0) {
    pbVar8 = param_3;
    do {
      puVar6 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar10 - (uVar10 & 3)));
      iVar5 = (uVar10 & 3) << 3;
      pbVar1 = pbVar8 + 0x10;
      pbVar8 = pbVar8 + 1;
      *puVar6 = *puVar6 & ~(0xff << iVar5) | (uint)*pbVar1 << iVar5;
      uVar10 = uVar10 + 1;
    } while (pbVar8 != param_3 + 8);
  }
  if (param_3 == (byte *)0xffffffe8) {
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  else {
    uVar9 = uVar9 + 0x18;
    pbVar8 = param_3;
    do {
      puVar6 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar9 - (uVar9 & 3)));
      iVar5 = (uVar9 & 3) << 3;
      pbVar1 = pbVar8 + 0x18;
      pbVar8 = pbVar8 + 1;
      *puVar6 = *puVar6 & ~(0xff << iVar5) | (uint)*pbVar1 << iVar5;
      uVar9 = uVar9 + 1;
    } while (pbVar8 != param_3 + 8);
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  if (cVar3 == '\x01') {
    *(undefined1 *)(param_1 + 0x5154) = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
    }
    Status = Status & 0xfffffffe;
    if (uVar11 != 0) {
      Status = Status | 1;
    }
  }
  if (2 < RTDebugLevel) {
    printk("AsicAddPairwiseKeyEntry: WCID #%d Alg=%s\n",param_2 & 0xff,
           *(undefined4 *)(CipherName + (uint)bVar2 * 4));
  }
  if (2 < RTDebugLevel) {
    printk("\tKey = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n"
           ,*param_3,param_3[1],param_3[2],param_3[3],param_3[4],param_3[5],param_3[6],param_3[7],
           param_3[8],param_3[9],param_3[10],param_3[0xb],param_3[0xc],param_3[0xd],param_3[0xe],
           param_3[0xf]);
  }
  if ((param_3 != (byte *)0xffffffe8) && (2 < RTDebugLevel)) {
    printk("\tRx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",param_3[0x18],param_3[0x19],
           param_3[0x1a],param_3[0x1b],param_3[0x1c],param_3[0x1d],param_3[0x1e],param_3[0x1f]);
  }
  if ((param_3 != (byte *)0xfffffff0) && (2 < RTDebugLevel)) {
    printk("\tTx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",param_3[0x10],param_3[0x11],
           param_3[0x12],param_3[0x13],param_3[0x14],param_3[0x15],param_3[0x16],param_3[0x17]);
  }
  return;
}