void NICReadEEPROMParameters(int param_1,char *param_2)
{
bool bVar1;
char cVar2;
char cVar3;
ushort uVar4;
undefined1 uVar5;
byte bVar6;
char cVar7;
ushort uVar8;
code *pcVar9;
size_t sVar10;
char *pcVar11;
char *pcVar12;
uint uVar13;
int iVar14;
uint uVar15;
int iVar16;
ushort *puVar17;
ushort local_38 [2];
undefined1 local_34;
undefined1 local_33;
byte local_30;
byte local_2f;
ushort local_2c;
undefined1 local_2a [2];
undefined1 local_28 [2];
undefined1 local_26 [10];
if (2 < RTDebugLevel) {
printk("--> NICReadEEPROMParameters\n");
}
if (*(code **)(param_1 + 0x40) == (code *)0x0) {
pcVar9 = *(code **)(param_1 + 0xc);
}
else {
(**(code **)(param_1 + 0x40))(param_1);
pcVar9 = *(code **)(param_1 + 0xc);
}
if (pcVar9 == (code *)0x0) {
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
(*pcVar9)(param_1);
cVar2 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar15 = 0;
if (cVar2 == '\0') {
uVar15 = *(uint *)(*(int *)(param_1 + 0xdc) + 4);
}
if (2 < RTDebugLevel) {
printk("--> E2PROM_CSR = 0x%x\n",uVar15);
}
uVar5 = 6;
if ((uVar15 & 0x30) != 0) {
uVar5 = 8;
}
*(undefined1 *)(param_1 + 0x4ac6) = uVar5;
if (2 < RTDebugLevel) {
printk("--> EEPROMAddressNum = %d\n",*(undefined1 *)(param_1 + 0x4ac6));
}
if (RTDebugLevel < 3) {
pcVar9 = *(code **)(param_1 + 0x10);
}
else {
printk("Initialize MAC Address from E2PROM \n");
pcVar9 = *(code **)(param_1 + 0x10);
}
(*pcVar9)(param_1,4,local_2a);
(**(code **)(param_1 + 0x10))(param_1,6,local_28);
(**(code **)(param_1 + 0x10))(param_1,8,local_26);
*(char *)(param_1 + 0x1696d) = local_2a[0];
*(char *)(param_1 + 0x1696e) = local_2a[1];
*(char *)(param_1 + 0x1696f) = local_28[0];
*(char *)(param_1 + 0x16970) = local_28[1];
*(char *)(param_1 + 0x16971) = (char)local_26._0_2_;
*(char *)(param_1 + 0x16972) = SUB21(local_26._0_2_,1);
if (*(char *)(param_1 + 0x1696d) == -1) {
bVar6 = RandomByte(param_1);
*(byte *)(param_1 + 0x1696d) = bVar6 & 0xf8;
}
if (2 < RTDebugLevel) {
printk("E2PROM MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",*(undefined1 *)(param_1 + 0x1696d),
*(undefined1 *)(param_1 + 0x1696e),*(undefined1 *)(param_1 + 0x1696f),
*(undefined1 *)(param_1 + 0x16970),*(undefined1 *)(param_1 + 0x16971),
*(undefined1 *)(param_1 + 0x16972));
}
if (*(char *)(param_1 + 0x1696c) == '\0') {
if ((param_2 != (char *)0x0) && (sVar10 = strlen(param_2), sVar10 == 0x11)) {
pcVar12 = "00:00:00:00:00:00";
cVar2 = *param_2;
pcVar11 = param_2;
do {
cVar3 = *pcVar12;
pcVar11 = pcVar11 + 1;
pcVar12 = pcVar12 + 1;
cVar7 = cVar2;
if (cVar3 != cVar2) break;
bVar1 = cVar2 != '\0';
cVar2 = *pcVar11;
cVar7 = cVar3;
} while (bVar1);
if (cVar7 != cVar3) {
iVar16 = 0;
do {
iVar14 = param_1 + iVar16;
iVar16 = iVar16 + 1;
AtoH(param_2,iVar14 + 0x16973,1);
param_2 = param_2 + 3;
} while (iVar16 != 6);
if (2 < RTDebugLevel) {
pcVar11 = "Use the MAC address what is assigned from Moudle Parameter. \n";
goto LAB_0002bcc4;
}
goto LAB_0002bcd8;
}
}
memcpy((void *)(param_1 + 0x16973),(void *)(param_1 + 0x1696d),6) //possible issue identified - semgrep
if (2 < RTDebugLevel) {
pcVar11 = "Use the MAC address what is assigned from EEPROM. \n";
goto LAB_0002bcc4;
}
}
else if (2 < RTDebugLevel) {
pcVar11 = "Use the MAC address what is assigned from Configuration file(.dat). \n";
LAB_0002bcc4:
printk(pcVar11);
}
LAB_0002bcd8:
if (*(char *)(param_1 + 0xec) == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1008) = *(undefined4 *)(param_1 + 0x16973);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x100c) = *(ushort *)(param_1 + 0x16977) | 0xff0000;
}
if (2 < RTDebugLevel) {
printk("Current MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",*(undefined1 *)(param_1 + 0x16973),
*(undefined1 *)(param_1 + 0x16974),*(undefined1 *)(param_1 + 0x16975),
*(undefined1 *)(param_1 + 0x16976),*(undefined1 *)(param_1 + 0x16977),
*(undefined1 *)(param_1 + 0x16978));
}
RTMPReadChannelPwr(param_1);
(**(code **)(param_1 + 0x10))(param_1,2,&local_30);
*(uint *)(param_1 + 0x4a98) = (uint)local_30 * 0x100 + (uint)local_2f;
if (2 < RTDebugLevel) {
printk("E2PROM: Version = %d, FAE release #%d\n");
}
if (1 < local_2f) {
printk("ERROR!!! ");
printk("E2PROM: WRONG VERSION 0x%x, should be %d\n",local_2f,1);
}
(**(code **)(param_1 + 0x10))(param_1,0x34,local_38);
*(ushort *)(param_1 + 0x4aa0) = local_38[0];
(**(code **)(param_1 + 0x10))(param_1,0x36,local_38);
*(ushort *)(param_1 + 0x4aa2) = local_38[0];
(**(code **)(param_1 + 0x10))(param_1,0x38,local_38);
*(ushort *)(param_1 + 0x4aa6) = local_38[0];
puVar17 = (ushort *)(param_1 + 0x4aa8);
iVar16 = 0xf0;
do {
(**(code **)(param_1 + 0x10))(param_1,iVar16,local_38);
iVar16 = iVar16 + 2;
*puVar17 = local_38[0];
puVar17 = puVar17 + 1;
} while (iVar16 != 0x100);
local_2c = *(ushort *)(param_1 + 0x4aa0);
if (((local_2c & 0xf00) == 0xf00) && (*(code **)(param_1 + 0x70) != (code *)0x0)) {
(**(code **)(param_1 + 0x70))(param_1,&local_2c);
}
if ((*(byte *)(param_1 + 0x16e13) == 0) ||
(((uint)local_2c << 0x18) >> 0x1c < (uint)*(byte *)(param_1 + 0x16e13))) {
*(byte *)(param_1 + 0x16e13) = (byte)local_2c >> 4;
}
if ((*(byte *)(param_1 + 0x16e14) == 0) ||
((local_2c & 0xf) < (ushort)*(byte *)(param_1 + 0x16e14))) {
*(char *)(param_1 + 0x16e14) = (char)(local_2c & 0xf);
if ((*(int *)(param_1 + 0x4a94) != 0x38830400) && (*(int *)(param_1 + 0x4a94) != 0x28830300)) {
if ((local_2c & 0xf) < 3) {
uVar8 = *(ushort *)(param_1 + 0x4aa2);
goto LAB_0002bf98;
}
*(undefined1 *)(param_1 + 0x16e14) = 2;
}
uVar8 = *(ushort *)(param_1 + 0x4aa2);
}
else {
uVar8 = *(ushort *)(param_1 + 0x4aa2);
}
LAB_0002bf98:
if (uVar8 == 0xffff) {
uVar8 = 0;
}
if ((uVar8 & 2) == 0) {
*(undefined1 *)(param_1 + 0x50bc) = 0;
*(undefined1 *)(param_1 + 0x50ae) = 0;
}
else {
*(undefined1 *)(param_1 + 0x50ae) = 1;
*(undefined1 *)(param_1 + 0x50bc) = 1;
}
*(ushort *)(param_1 + 0x4bf6) = uVar8;
if (2 < RTDebugLevel) {
printk("NICReadEEPROMParameters: RxPath = %d, TxPath = %d\n",local_2c & 0xf,
((uint)local_2c << 0x18) >> 0x1c);
}
cVar2 = *(char *)(param_1 + 0x16982) //possible issue identified - semgrep
uVar15 = (uint)local_2c << 0x14;
uVar13 = uVar15 >> 0x1c;
*(byte *)(param_1 + 0x1f0fc) = (byte)(((uint)local_2c << 0x1c) >> 0x1c);
*(ushort *)(param_1 + 0x4bf4) = local_2c;
*(byte *)(param_1 + 0x4bd4) = (byte)(uVar15 >> 0x1c);
if (((((byte)(cVar2 - 2U) < 2) || (cVar2 == '\x05')) || (cVar2 == '\b')) ||
((cVar2 == '\n' || (cVar2 == '\v')))) {
if ((((uVar13 != 2) && ((uVar13 != 4 && (uVar13 != 9)))) && (uVar13 != 10)) && (uVar13 != 0xd))
{
if (RTDebugLevel != 0) {
printk("phy mode> Error! The chip does not support 5G band %d!\n",uVar13);
}
Set_WirelessMode_Proc(param_1,&_LC60);
}
pcVar9 = *(code **)(param_1 + 0x90);
}
else {
pcVar9 = *(code **)(param_1 + 0x90);
}
if (pcVar9 != (code *)0x0) {
(*pcVar9)(param_1);
}
uVar8 = local_2c & 0xf00;
if ((((uVar8 == 0x200) || (uVar8 == 0x400)) || (uVar8 == 0x900)) || (uVar8 == 0xa00)) {
uVar5 = 3;
}
else {
cVar2 = *(char *)(param_1 + 0x16982) //possible issue identified - semgrep
if ((byte)(cVar2 - 2U) < 2) {
*(undefined1 *)(param_1 + 0x16982) = 0;
}
else if (((cVar2 == '\x05') || (cVar2 == '\b')) || ((cVar2 == '\n' || (cVar2 == '\v')))) {
*(undefined1 *)(param_1 + 0x16982) = 9;
}
uVar5 = 1;
}
*(undefined1 *)(param_1 + 0x76c29) = uVar5;
(**(code **)(param_1 + 0x10))(param_1,0x6e,&local_34);
*(undefined1 *)(param_1 + 0x50c6) = local_33;
*(undefined1 *)(param_1 + 0x50c7) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0x70,&local_34);
*(undefined1 *)(param_1 + 0x50c4) = local_33;
*(undefined1 *)(param_1 + 0x50c5) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0x72,&local_34);
*(undefined1 *)(param_1 + 0x50bf) = local_33;
*(undefined1 *)(param_1 + 0x50bd) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0x74,&local_34);
*(undefined1 *)(param_1 + 0x50c1) = local_33;
*(undefined1 *)(param_1 + 0x50c0) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0x76,&local_34);
cVar2 = *(char *)(param_1 + 0x50bd) //possible issue identified - semgrep
*(undefined1 *)(param_1 + 0x50c2) = local_34;
*(undefined1 *)(param_1 + 0x50c8) = local_33;
*(char *)(param_1 + 0x50be) = cVar2;
*(undefined1 *)(param_1 + 0x50c9) = 0;
*(char *)(param_1 + 0x50c3) = cVar2;
if (cVar2 == -1) {
*(undefined1 *)(param_1 + 0x50bc) = 0;
}
if (2 < RTDebugLevel) {
printk("E2PROM: G Tssi[-4 .. +4] = %d %d %d %d - %d -%d %d %d %d, step=%d, tuning=%d\n",
*(undefined1 *)(param_1 + 0x50c7),*(undefined1 *)(param_1 + 0x50c6),
*(undefined1 *)(param_1 + 0x50c5),*(undefined1 *)(param_1 + 0x50c4),
*(undefined1 *)(param_1 + 0x50bd),*(undefined1 *)(param_1 + 0x50bf),
*(undefined1 *)(param_1 + 0x50c0),*(undefined1 *)(param_1 + 0x50c1),
*(undefined1 *)(param_1 + 0x50c2),*(undefined1 *)(param_1 + 0x50c8),
*(undefined1 *)(param_1 + 0x50bc));
}
(**(code **)(param_1 + 0x10))(param_1,0xd4,&local_34);
*(undefined1 *)(param_1 + 0x50b8) = local_33;
*(undefined1 *)(param_1 + 0x50b9) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0xd6,&local_34);
*(undefined1 *)(param_1 + 0x50b6) = local_33;
*(undefined1 *)(param_1 + 0x50b7) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0xd8,&local_34);
*(undefined1 *)(param_1 + 0x50b1) = local_33;
*(undefined1 *)(param_1 + 0x50af) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0xda,&local_34);
*(undefined1 *)(param_1 + 0x50b3) = local_33;
*(undefined1 *)(param_1 + 0x50b2) = local_34;
(**(code **)(param_1 + 0x10))(param_1,0xdc,&local_34);
cVar2 = *(char *)(param_1 + 0x50af) //possible issue identified - semgrep
*(undefined1 *)(param_1 + 0x50b4) = local_34;
*(undefined1 *)(param_1 + 0x50ba) = local_33;
*(char *)(param_1 + 0x50b0) = cVar2;
*(undefined1 *)(param_1 + 0x50bb) = 0;
*(char *)(param_1 + 0x50b5) = cVar2;
if (cVar2 == -1) {
*(undefined1 *)(param_1 + 0x50ae) = 0;
}
if (RTDebugLevel < 3) {
pcVar9 = *(code **)(param_1 + 0x10);
}
else {
printk("E2PROM: A Tssi[-4 .. +4] = %d %d %d %d - %d -%d %d %d %d, step=%d, tuning=%d\n",
*(undefined1 *)(param_1 + 0x50b9),*(undefined1 *)(param_1 + 0x50b8),
*(undefined1 *)(param_1 + 0x50b7),*(undefined1 *)(param_1 + 0x50b6),
*(undefined1 *)(param_1 + 0x50af),*(undefined1 *)(param_1 + 0x50b1),
*(undefined1 *)(param_1 + 0x50b2),*(undefined1 *)(param_1 + 0x50b3),
*(undefined1 *)(param_1 + 0x50b4),*(undefined1 *)(param_1 + 0x50ba),
*(undefined1 *)(param_1 + 0x50ae));
pcVar9 = *(code **)(param_1 + 0x10);
}
*(undefined1 *)(param_1 + 0x4bc9) = 0;
(*pcVar9)(param_1,0x3a,local_38);
uVar15 = (uint)(byte)local_38[0];
uVar13 = (uint)*(byte *)(param_1 + 0x4bdc);
if (uVar15 == 0xff) {
uVar15 = 0;
}
*(uint *)(param_1 + 0x4bd8) = uVar15;
if ((*(byte *)(param_1 + 0x4bdc) & 0x10) == 0) {
iVar16 = 0x3f;
if (uVar13 + uVar15 < 0x40) {
iVar16 = (uVar13 & 0xf) + uVar15;
}
}
else {
iVar16 = 0;
if (uVar13 <= uVar15) {
iVar16 = uVar15 - (uVar13 & 0xf);
}
}
*(int *)(param_1 + 0x4bd8) = iVar16;
if (RTDebugLevel < 3) {
uVar8 = *(ushort *)(param_1 + 0x4aa6);
}
else {
printk("E2PROM: RF FreqOffset=0x%lx \n",*(undefined4 *)(param_1 + 0x4bd8));
uVar8 = *(ushort *)(param_1 + 0x4aa6);
}
uVar4 = uVar8 >> 8;
local_38[0] = uVar8 >> 8;
if (((uVar4 < 8) || (uVar4 == 0x20)) || (uVar4 == 0x21)) {
*(byte *)(param_1 + 0x16980) = (byte)(uVar8 >> 8) | 0x80;
}
if ((uVar8 & 0xff) < 0x26) {
*(byte *)(param_1 + 0x16981) = (byte)uVar8 | 0x80;
}
(**(code **)(param_1 + 0x10))(param_1,0x46,local_38);
*(char *)(param_1 + 0x50df) = (char)(local_38[0] >> 8);
*(char *)(param_1 + 0x50de) = (char)local_38[0];
(**(code **)(param_1 + 0x10))(param_1,0x48,local_38);
*(char *)(param_1 + 0x50e6) = (char)(local_38[0] >> 8);
*(char *)(param_1 + 0x50e0) = (char)local_38[0];
(**(code **)(param_1 + 0x10))(param_1,0x44,local_38);
*(char *)(param_1 + 0x50e4) = (char)local_38[0];
*(char *)(param_1 + 0x50e5) = (char)(local_38[0] >> 8);
if (0x14 < (byte)(*(char *)(param_1 + 0x50de) + 10U)) {
*(undefined1 *)(param_1 + 0x50de) = 0;
}
if (0x14 < (byte)(*(char *)(param_1 + 0x50df) + 10U)) {
*(undefined1 *)(param_1 + 0x50df) = 0;
}
if (0x14 < (byte)(*(char *)(param_1 + 0x50e0) + 10U)) {
*(undefined1 *)(param_1 + 0x50e0) = 0;
}
(**(code **)(param_1 + 0x10))(param_1,0x4a,local_38);
*(char *)(param_1 + 0x50e2) = (char)(local_38[0] >> 8);
*(char *)(param_1 + 0x50e1) = (char)local_38[0];
(**(code **)(param_1 + 0x10))(param_1,0x4c,local_38);
*(char *)(param_1 + 0x50e3) = (char)local_38[0];
*(char *)(param_1 + 0x50e7) = (char)(local_38[0] >> 8);
if ((byte)(*(char *)(param_1 + 0x50e6) + 1U) < 2) {
*(undefined1 *)(param_1 + 0x50e6) = *(undefined1 *)(param_1 + 0x50e5);
}
if ((byte)(*(char *)(param_1 + 0x50e7) + 1U) < 2) {
*(undefined1 *)(param_1 + 0x50e7) = *(undefined1 *)(param_1 + 0x50e5);
cVar2 = *(char *)(param_1 + 0x50e1) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0x50e1) //possible issue identified - semgrep
}
if (0x14 < (byte)(cVar2 + 10U)) {
*(undefined1 *)(param_1 + 0x50e1) = 0;
}
if (0x14 < (byte)(*(char *)(param_1 + 0x50e2) + 10U)) {
*(undefined1 *)(param_1 + 0x50e2) = 0;
}
if (0x14 < (byte)(*(char *)(param_1 + 0x50e3) + 10U)) {
*(undefined1 *)(param_1 + 0x50e3) = 0;
}
RTMPGetLEDSetting(param_1);
RTMPReadTxPwrPerRate(param_1);
(**(code **)(param_1 + 0x10))(param_1,0x36,local_38);
if (local_38[0] == 0xffff) {
*(undefined1 *)(param_1 + 0x50ca) = 0;
}
else if ((local_38[0] & 0x2000) == 0) {
*(undefined1 *)(param_1 + 0x50ca) = 0;
}
else {
*(undefined1 *)(param_1 + 0x50ca) = 1;
}
if (RTDebugLevel < 3) {
cVar2 = *(char *)(param_1 + 0xd9) //possible issue identified - semgrep
}
else {
printk("TXALC> bInternalTxALC = %d\n",*(undefined1 *)(param_1 + 0x50ca));
cVar2 = *(char *)(param_1 + 0xd9) //possible issue identified - semgrep
}
if (cVar2 != '\x01') goto LAB_0002c7c0;
if (RTDebugLevel < 3) {
pcVar9 = *(code **)(param_1 + 0x10);
}
else {
printk("HwAnDi> Read from EEPROM!\n");
pcVar9 = *(code **)(param_1 + 0x10);
}
(*pcVar9)(param_1,0x36,local_38);
uVar15 = (uint)local_38[0] << 0x13;
uVar13 = uVar15 >> 0x1e;
local_38[0] = (ushort)(uVar15 >> 0x1e);
if (uVar13 == 0) {
LAB_0002c7a0:
*(undefined1 *)(param_1 + 0x76e86) = 0;
}
else {
if (uVar13 == 1) {
*(byte *)(param_1 + 0x76e85) = (byte)(uVar15 >> 0x1e);
goto LAB_0002c7c0;
}
if (uVar13 == 2) goto LAB_0002c7a0;
*(undefined1 *)(param_1 + 0x76e86) = 1;
}
*(undefined1 *)(param_1 + 0x76e85) = 0;
LAB_0002c7c0:
if (2 < RTDebugLevel) {
printk("<-- NICReadEEPROMParameters\n");
}
return;
}