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