void AsicAddSharedKeyEntry(int param_1,uint param_2,uint param_3,byte *param_4)

{
  byte *pbVar1;
  char cVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  byte *pbVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  uVar10 = param_2 & 0xff;
  param_3 = param_3 & 0xff;
  uVar9 = (uint)param_4[0x40];
  if (2 < RTDebugLevel) {
    printk("AsicAddSharedKeyEntry BssIndex=%d, KeyIdx=%d\n",uVar10,param_3);
  }
  if (2 < RTDebugLevel) {
    printk("AsicAddSharedKeyEntry: %s key #%d\n",*(undefined4 *)(CipherName + uVar9 * 4),
           param_3 + uVar10 * 4);
  }
  if (2 < RTDebugLevel) {
    printk(" \tKey = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n"
           ,*param_4,param_4[1],param_4[2],param_4[3],param_4[4],param_4[5],param_4[6],param_4[7],
           param_4[8],param_4[9],param_4[10],param_4[0xb],param_4[0xc],param_4[0xd],param_4[0xe],
           param_4[0xf]);
  }
  if ((param_4 != (byte *)0xffffffe8) && (2 < RTDebugLevel)) {
    printk(" \tRx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",param_4[0x18],param_4[0x19],
           param_4[0x1a],param_4[0x1b],param_4[0x1c],param_4[0x1d],param_4[0x1e],param_4[0x1f]);
  }
  if ((param_4 != (byte *)0xfffffff0) && (2 < RTDebugLevel)) {
    printk(" \tTx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",param_4[0x10],param_4[0x11],
           param_4[0x12],param_4[0x13],param_4[0x14],param_4[0x15],param_4[0x16],param_4[0x17]);
  }
  uVar7 = (uVar10 * 4 + param_3 + 0x360) * 0x20;
  uVar8 = uVar7 + 0x10;
  uVar5 = uVar7;
  pbVar6 = param_4;
  do {
    puVar4 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar5 - (uVar5 & 3)));
    iVar3 = (uVar5 & 3) << 3;
    uVar5 = uVar5 + 1;
    *puVar4 = *puVar4 & ~(0xff << iVar3) | (uint)*pbVar6 << iVar3;
    pbVar6 = pbVar6 + 1;
  } while (uVar5 != uVar8);
  if (param_4 != (byte *)0xfffffff0) {
    pbVar6 = param_4;
    do {
      puVar4 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar8 - (uVar8 & 3)));
      iVar3 = (uVar8 & 3) << 3;
      pbVar1 = pbVar6 + 0x10;
      pbVar6 = pbVar6 + 1;
      *puVar4 = *puVar4 & ~(0xff << iVar3) | (uint)*pbVar1 << iVar3;
      uVar8 = uVar8 + 1;
    } while (pbVar6 != param_4 + 8);
  }
  if (param_4 == (byte *)0xffffffe8) {
    cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    uVar7 = uVar7 + 0x18;
    pbVar6 = param_4 + 8;
    do {
      puVar4 = (uint *)(*(int *)(param_1 + 0xdc) + (uVar7 - (uVar7 & 3)));
      iVar3 = (uVar7 & 3) << 3;
      pbVar1 = param_4 + 0x18;
      param_4 = param_4 + 1;
      *puVar4 = *puVar4 & ~(0xff << iVar3) | (uint)*pbVar1 << iVar3;
      uVar7 = uVar7 + 1;
    } while (param_4 != pbVar6);
    cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar5 = 0;
  if (cVar2 == '\0') {
    uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + ((uVar10 >> 1) + 0x1c00) * 4);
  }
  if (2 < RTDebugLevel) {
    printk("Read: SHARED_KEY_MODE_BASE at this Bss[%d] KeyIdx[%d]= 0x%x \n",uVar10,param_3,uVar5);
  }
  if ((param_2 & 1) == 0) {
    if (param_3 == 0) {
      uVar9 = uVar5 & 0xfffffff0 | uVar9 & 0xf;
    }
    else if (param_3 == 1) {
      uVar9 = uVar5 & 0xffffff0f | (uVar9 & 0xf) << 4;
    }
    else if (param_3 == 2) {
      uVar9 = uVar5 & 0xfffff0ff | (uVar9 & 0xf) << 8;
    }
    else {
      uVar9 = uVar5 & 0xffff0fff | (uVar9 & 0xf) << 0xc;
    }
  }
  else if (param_3 == 0) {
    uVar9 = uVar5 & 0xfff0ffff | (uVar9 & 0xf) << 0x10;
  }
  else if (param_3 == 1) {
    uVar9 = uVar5 & 0xff0fffff | (uVar9 & 0xf) << 0x14;
  }
  else if (param_3 == 2) {
    uVar9 = uVar5 & 0xf0ffffff | (uVar9 & 0xf) << 0x18;
  }
  else {
    uVar9 = uVar5 & 0xfffffff | uVar9 << 0x1c;
  }
  if (RTDebugLevel < 3) {
    cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    printk("Write: SHARED_KEY_MODE_BASE at this Bss[%d] = 0x%x \n",uVar10,uVar9);
    cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar2 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + ((uVar10 >> 1) + 0x1c00) * 4) = uVar9;
  }
  return;
}