/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int devdata_main(int param_1,char **param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  char *pcVar4;
  int iVar5;
  FILE *pFVar6;
  undefined4 uVar7;
  char *pcVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  code *pcVar12;
  
  uVar1 = DAT_00422a44;
  if ((1 < param_1) && (pcVar8 = param_2[1], *pcVar8 != '-')) {
    iVar2 = strcmp(pcVar8,"get");
    uVar1 = 1;
    if (iVar2 != 0) {
      iVar2 = strcmp(pcVar8,"set");
      if (iVar2 == 0) {
        uVar1 = 2;
      }
      else {
        iVar2 = strcmp(pcVar8,"del");
        uVar1 = 3;
        if (iVar2 != 0) {
          iVar2 = strcmp(pcVar8,"clean");
          uVar1 = 5;
          if (iVar2 != 0) {
            iVar2 = strcmp(pcVar8,"dump");
            uVar1 = 4;
            if (iVar2 != 0) {
              iVar2 = strcmp(pcVar8,"devname");
              if (iVar2 == 0) {
                DAT_00422a44 = 6;
                uVar1 = DAT_00422a44;
              }
              else {
                DAT_00422a44 = 0;
                uVar1 = DAT_00422a44;
              }
            }
          }
        }
      }
    }
  }
LAB_00405f5c:
  DAT_00422a44 = uVar1;
  iVar2 = getopt(param_1,param_2,"hvn:o:z:e:f")   //possible issue identified - semgrep
  if (0 < iVar2) {
    uVar7 = 9;
    uVar1 = DAT_00422a44;
    switch(iVar2) {
    case 0x65:
      puVar10 = (undefined4 *)malloc(8)   //possible issue identified - semgrep
      if (puVar10 == (undefined4 *)0x0) {
        FUN_00405bf4(9,"memory allocation fail!\n");
        goto LAB_00405fa0;
      }
      pcVar8 = strdup(_optarg)   //possible issue identified - semgrep
      *puVar10 = DAT_00422a50;
      puVar10[1] = pcVar8;
      uVar1 = DAT_00422a44;
      DAT_00422a50 = puVar10;
      goto LAB_00405f5c;
    case 0x66:
      DAT_00422a4c = DAT_00422a4c + 1;
      goto LAB_00405f5c;
    case 0x67:
    case 0x69:
    case 0x6a:
    case 0x6b:
    case 0x6c:
    case 0x6d:
    case 0x70:
    case 0x71:
    case 0x72:
    case 0x73:
    case 0x74:
    case 0x75:
    case 0x77:
    case 0x78:
    case 0x79:
      uVar7 = 9;
      break;
    case 0x68:
      uVar7 = 0;
      break;
    case 0x6e:
      PTR_s__dev_mtdblock_4_00422150 = _optarg;
      goto LAB_00405f5c;
    case 0x6f:
      DAT_00422144 = atoi(_optarg);
      uVar1 = DAT_00422a44;
      goto LAB_00405f5c;
    case 0x76:
      DAT_00422a48 = DAT_00422a48 + 1;
      goto LAB_00405f5c;
    case 0x7a:
      goto switchD_00405e60_caseD_7a;
    }
    FUN_00405c58(uVar7);
    uVar1 = DAT_00422a44;
    goto LAB_00405f5c;
  }
LAB_00405fa0:
  if (DAT_00422140 < 0x11) {
    FUN_00405bf4(9,"The block size is too small for devdata !!\n");
  }
  DAT_00422a40 = malloc(DAT_00422140)   //possible issue identified - semgrep
  if (DAT_00422a40 == (void *)0x0) {
    FUN_00405bf4(9,"Memory allocation failed !!\n");
  }
  switch(DAT_00422a44) {
  case 1:
    pFVar6 = (FILE *)FUN_00405280(&DAT_0040fec0);
    if (pFVar6 != (FILE *)0x0) {
      iVar2 = FUN_00405430(pFVar6);
      if (iVar2 != 0) {
        FUN_00405180("read [%s] data return %d !!\n",PTR_s__dev_mtdblock_4_00422150,iVar2);
      }
      fclose(pFVar6);
      while (puVar10 = DAT_00422a50, DAT_00422a50 != (undefined4 *)0x0) {
        puVar3 = (undefined4 *)*DAT_00422a50;
        pcVar8 = (char *)DAT_00422a50[1];
        DAT_00422a50 = puVar3;
        if (pcVar8 != (char *)0x0) {
          pcVar4 = strchr(pcVar8,0x3d);
          if (pcVar4 != (char *)0x0) {
            *pcVar4 = '\0';
          }
          FUN_00405180("get %s\n",pcVar8);
          for (puVar3 = DAT_00422a54; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
            iVar2 = strcmp((char *)puVar3[1],pcVar8);
            if (iVar2 == 0) {
              iVar2 = puVar3[2];
              if (iVar2 != 0) {
                pcVar12 = puts;
                goto LAB_0040614c;
              }
              break;
            }
          }
          pcVar12 = putchar;
          iVar2 = 10;
LAB_0040614c:
          (*pcVar12)(iVar2);
          free((void *)puVar10[1]);
        }
        free(puVar10);
      }
      iVar2 = 0;
      break;
    }
    goto LAB_004061c8;
  case 2:
    iVar2 = FUN_0040581c();
    break;
  case 3:
    pFVar6 = (FILE *)FUN_00405280(&DAT_0040fec0);
    if (pFVar6 != (FILE *)0x0) {
      iVar2 = FUN_00405430(pFVar6);
      if (iVar2 != 0) {
        FUN_00405180("read [%s] data return %d !!\n",PTR_s__dev_mtdblock_4_00422150,iVar2);
      }
      fclose(pFVar6);
      while (puVar10 = DAT_00422a50, DAT_00422a50 != (undefined4 *)0x0) {
        puVar3 = (undefined4 *)*DAT_00422a50;
        pcVar8 = (char *)DAT_00422a50[1];
        DAT_00422a50 = puVar3;
        if (pcVar8 != (char *)0x0) {
          pcVar4 = strchr(pcVar8,0x3d);
          if (pcVar4 != (char *)0x0) {
            *pcVar4 = '\0';
          }
          FUN_00405180("delete %s\n",pcVar8);
          puVar3 = DAT_00422a54;
          puVar11 = (undefined4 *)0x0;
          while (puVar9 = puVar3, puVar9 != (undefined4 *)0x0) {
            iVar5 = strcmp((char *)puVar9[1],pcVar8);
            puVar3 = DAT_00422a54;
            if ((iVar5 == 0) && (puVar3 = (undefined4 *)*puVar9, puVar11 != (undefined4 *)0x0)) {
              *puVar11 = (undefined4 *)*puVar9;
              puVar3 = DAT_00422a54;
            }
            DAT_00422a54 = puVar3;
            puVar11 = puVar9;
            puVar3 = (undefined4 *)*puVar9;
          }
          free((void *)puVar10[1]);
        }
        free(puVar10);
      }
      pFVar6 = (FILE *)FUN_00405280(&DAT_004107a4);
      if (pFVar6 != (FILE *)0x0) {
LAB_004064b8:
        FUN_004055e0(pFVar6);
        fclose(pFVar6);
        iVar2 = 0;
        break;
      }
      pcVar8 = "Unable to open device (%s) for writting !!\n";
LAB_004064a8:
      fprintf(_stderr,pcVar8,PTR_s__dev_mtdblock_4_00422150);
      break;
    }
LAB_004061c8:
    pcVar8 = "Unable to open device (%s) to read !\n";
LAB_00406418:
    iVar2 = -1;
    fprintf(_stderr,pcVar8,PTR_s__dev_mtdblock_4_00422150);
    break;
  case 4:
    pFVar6 = (FILE *)FUN_00405280(&DAT_0040fec0);
    iVar2 = -1;
    if (pFVar6 != (FILE *)0x0) {
      iVar2 = FUN_00405430(pFVar6);
      if (iVar2 != 0) {
        FUN_00405180("read [%s] data return %d !!\n",PTR_s__dev_mtdblock_4_00422150,iVar2);
      }
      fclose(pFVar6);
      for (puVar10 = DAT_00422a54; iVar2 = 0, puVar10 != (undefined4 *)0x0;
          puVar10 = (undefined4 *)*puVar10) {
        printf("%s=%s\n",puVar10[1],puVar10[2]);
      }
    }
    break;
  case 5:
    pFVar6 = (FILE *)FUN_00405280(&DAT_0040fec0);
    if (pFVar6 != (FILE *)0x0) {
      iVar2 = FUN_00405430(pFVar6);
      if (iVar2 != 0) {
        FUN_00405180("read [%s] data return %d !!\n",PTR_s__dev_mtdblock_4_00422150,iVar2);
      }
      fclose(pFVar6);
      FUN_004051dc();
      pFVar6 = (FILE *)FUN_00405280(&DAT_004107a4);
      if (pFVar6 != (FILE *)0x0) goto LAB_004064b8;
      pcVar8 = "Unable to open device (%s) for writting !\n";
      goto LAB_004064a8;
    }
    pcVar8 = "Unable to open device (%s) for reading !\n";
    goto LAB_00406418;
  case 6:
    iVar2 = 0;
    puts(PTR_s__dev_mtdblock_4_00422150);
    break;
  default:
    iVar2 = 0;
    FUN_00405c58(9);
  }
  FUN_00405b10(iVar2);
  return iVar2;
switchD_00405e60_caseD_7a:
  DAT_00422140 = atoi(_optarg);
  uVar1 = DAT_00422a44;
  goto LAB_00405f5c;
}