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;
}