undefined4 Set_CountryString_Proc(int param_1,byte *param_2)
{
byte bVar1;
bool bVar2;
byte bVar3;
size_t sVar4;
byte bVar5;
byte *pbVar6;
char *pcVar7;
byte *pbVar8;
uint uVar9;
undefined4 *puVar10;
int iVar11;
byte local_50 [40];
memset(local_50,0,0x28) //possible issue identified - semgrep
sVar4 = strlen((char *)param_2);
if (sVar4 < 0x27) {
sVar4 = strlen((char *)param_2);
if (sVar4 < 4) {
if (RTDebugLevel == 0) {
return 0;
}
pcVar7 = "Set_CountryString_Proc::Parameter of CountryString are too short !\n";
goto LAB_0008c31c;
}
uVar9 = 0;
pbVar6 = param_2;
while( true ) {
sVar4 = strlen((char *)param_2);
bVar2 = sVar4 <= uVar9;
uVar9 = uVar9 + 1;
if (bVar2) break;
bVar5 = *pbVar6;
if ((bVar5 - 0x61 & 0xff) < 0x1a) {
if (((&_ctype)[bVar5] & 2) != 0) {
bVar5 = bVar5 - 0x20;
}
*pbVar6 = bVar5;
}
pbVar6 = pbVar6 + 1;
}
puVar10 = (undefined4 *)(allCountry + 8);
iVar11 = 0;
do {
memset(local_50,0,0x28) //possible issue identified - semgrep
snprintf((char *)local_50,0x28,"\"%s\"") //possible issue identified - semgrep
pbVar8 = (byte *)*puVar10;
sVar4 = strlen((char *)param_2);
pbVar6 = param_2;
while( true ) {
bVar5 = *pbVar8;
bVar1 = *pbVar6;
bVar3 = bVar1;
if (sVar4 == 0) break;
sVar4 = sVar4 - 1 //possible issue identified - semgrep
pbVar8 = pbVar8 + 1;
bVar3 = bVar5;
if ((bVar1 != bVar5) || (pbVar6 = pbVar6 + 1, bVar3 = bVar1, bVar5 == 0)) break;
}
if (bVar3 == bVar1) {
LAB_0008c150:
if ((iVar11 == 0x66) || (0xb < *(byte *)(param_1 + 0x16982))) break;
uVar9 = 1 << ((int)*(char *)(param_1 + 0x16982) & 0x1fU);
if ((uVar9 & 0x2d3) == 0) {
if ((uVar9 & 0x904) == 0) break;
if (*(char *)(param_1 + 0x16980) < '\0') goto LAB_0008c20c;
if (allCountry[iVar11 * 0x10 + 0xc] == '\x01') {
memset((void *)(param_1 + 0x1697d),0,3) //possible issue identified - semgrep
memmove((void *)(param_1 + 0x1697d),allCountry + iVar11 * 0x10 + 2,2) //possible issue identified - semgrep
*(undefined1 *)(param_1 + 0x1697f) = 0x20;
*(undefined1 *)(param_1 + 0x1697c) = 1;
*(undefined1 *)(param_1 + 0x16981) = allCountry[iVar11 * 0x10 + 0xd];
goto LAB_0008c3a4;
}
if (RTDebugLevel < 3) break;
pcVar7 = "The Country are not Support A Band Channel\n";
}
else if (*(char *)(param_1 + 0x16981) < '\0') {
LAB_0008c20c:
if (RTDebugLevel == 0) break;
pcVar7 = "Set_CountryString_Proc::parameter of CountryRegion in eeprom is programmed \n";
}
else {
if (allCountry[iVar11 * 0x10 + 0xe] == '\x01') {
memset((void *)(param_1 + 0x1697d),0,3) //possible issue identified - semgrep
memmove((void *)(param_1 + 0x1697d),allCountry + iVar11 * 0x10 + 2,2) //possible issue identified - semgrep
*(undefined1 *)(param_1 + 0x1697f) = 0x20;
*(undefined1 *)(param_1 + 0x1697c) = 1;
*(undefined1 *)(param_1 + 0x16980) = allCountry[iVar11 * 0x10 + 0xf];
LAB_0008c3a4:
if (RTDebugLevel < 3) {
return 1;
}
printk("Set_CountryString_Proc::(CountryString=%s CountryRegin=%d CountryCode=%s)\n",
*(undefined4 *)(allCountry + iVar11 * 0x10 + 8),
*(undefined1 *)(param_1 + 0x16980),param_1 + 0x1697d);
return 1;
}
if (RTDebugLevel < 3) break;
pcVar7 = "The Country are not Support G Band Channel\n";
}
printk(pcVar7);
break;
}
sVar4 = strlen((char *)param_2);
pbVar6 = param_2;
pbVar8 = local_50;
while( true ) {
bVar5 = *pbVar8;
bVar1 = *pbVar6;
bVar3 = bVar1;
if (sVar4 == 0) break;
sVar4 = sVar4 - 1 //possible issue identified - semgrep
pbVar8 = pbVar8 + 1;
bVar3 = bVar5;
if ((bVar1 != bVar5) || (pbVar6 = pbVar6 + 1, bVar3 = bVar1, bVar5 == 0)) break;
}
puVar10 = puVar10 + 4;
if (bVar3 == bVar1) goto LAB_0008c150;
iVar11 = iVar11 + 1;
} while (iVar11 != 0x66);
}
if (RTDebugLevel == 0) {
return 0;
}
pcVar7 = "Set_CountryString_Proc::Parameters out of range\n";
LAB_0008c31c:
printk(pcVar7);
return 0;
}