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