/* WARNING: Heritage AFTER dead removal. Example location: r0x004c2220 : 0x004867f4 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */
int FUN_0048669c(int param_1,undefined4 *param_2,char *param_3,int *param_4,int *param_5,int param_6
)
{
char cVar1;
bool bVar2;
bool bVar3;
char *pcVar4;
int iVar5;
uint uVar6;
int iVar7;
int iVar8;
int iVar9;
int iVar10;
char *pcVar11;
int iVar12;
int iVar13;
int *piVar14;
int *piVar15;
int iVar16;
char *pcVar17;
int local_40;
DAT_004c2220 = DAT_004b7820;
DAT_004c2224 = DAT_004b7824;
iVar10 = DAT_004b7824;
if (*param_3 == ':') {
iVar10 = 0;
}
if (param_1 < 1) {
DAT_004c2220 = DAT_004b7820;
DAT_004c2224 = DAT_004b7824;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return -1;
}
DAT_004c2228 = (char *)0x0;
if (DAT_004b7820 == 0) {
DAT_004c2220 = 1;
LAB_00486754:
DAT_004c2240 = DAT_004c2220;
DAT_004c2244 = DAT_004c2220;
DAT_004c223c = (char *)0x0;
iVar9 = FUN_00485de0("POSIXLY_CORRECT");
DAT_004c2238 = (uint)(iVar9 != 0);
if (*param_3 == '-') {
DAT_004c2234 = 2;
LAB_004867ac:
param_3 = param_3 + 1;
}
else {
if (*param_3 == '+') {
DAT_004c2234 = 0;
goto LAB_004867ac;
}
if (DAT_004c2238 == 0) {
DAT_004c2234 = 1;
}
else {
DAT_004c2234 = 0;
}
}
DAT_004c2230 = 1;
}
else if (DAT_004c2230 == 0) goto LAB_00486754;
if ((DAT_004c223c == (char *)0x0) || (*DAT_004c223c == '\0')) {
if (DAT_004c2220 < DAT_004c2244) {
DAT_004c2244 = DAT_004c2220;
}
if (DAT_004c2220 < DAT_004c2240) {
DAT_004c2240 = DAT_004c2220;
}
if (DAT_004c2234 == 1) {
iVar9 = DAT_004c2220;
if (DAT_004c2240 == DAT_004c2244) {
if (DAT_004c2240 != DAT_004c2220) {
DAT_004c2240 = DAT_004c2220;
}
}
else if (DAT_004c2244 != DAT_004c2220) {
FUN_004865c0(param_2);
iVar9 = DAT_004c2220;
}
do {
DAT_004c2220 = iVar9;
if (param_1 <= DAT_004c2220) break;
iVar9 = DAT_004c2220 + 1;
} while ((*(char *)param_2[DAT_004c2220] != '-') ||
(((char *)param_2[DAT_004c2220])[1] == '\0'));
DAT_004c2244 = DAT_004c2220;
}
iVar9 = DAT_004c2220;
iVar16 = DAT_004c2220;
iVar7 = DAT_004c2240;
iVar13 = DAT_004c2244;
if ((((DAT_004c2220 != param_1) &&
(iVar12 = FUN_00483d20(param_2[DAT_004c2220],&DAT_00497fe0), iVar16 = DAT_004c2220,
iVar7 = DAT_004c2240, iVar13 = DAT_004c2244, iVar12 == 0)) &&
(DAT_004c2220 = iVar9 + 1, iVar16 = param_1, iVar7 = DAT_004c2220, iVar13 = param_1,
DAT_004c2240 != DAT_004c2244)) &&
(iVar16 = param_1, iVar7 = DAT_004c2240, iVar13 = param_1, DAT_004c2244 != DAT_004c2220)) {
FUN_004865c0(param_2);
iVar16 = param_1;
iVar7 = DAT_004c2240;
iVar13 = param_1;
}
DAT_004c2244 = iVar13;
DAT_004c2240 = iVar7;
DAT_004c2220 = iVar16;
if (DAT_004c2220 == param_1) {
if (DAT_004c2240 != DAT_004c2244) {
DAT_004b7820 = DAT_004c2240;
DAT_004c2220 = DAT_004c2240;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return -1;
}
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return -1;
}
pcVar11 = (char *)param_2[DAT_004c2220];
if ((*pcVar11 != '-') || (pcVar11[1] == '\0')) {
if (DAT_004c2234 != 0) {
DAT_004b7820 = DAT_004c2220 + 1;
DAT_004c2220 = DAT_004c2220 + 1;
DAT_004c2228 = pcVar11;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = pcVar11;
return 1;
}
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return -1;
}
uVar6 = 0;
if (param_4 != (int *)0x0) {
uVar6 = (uint)(pcVar11[1] == '-');
}
DAT_004c223c = pcVar11 + uVar6 + 1;
}
iVar9 = DAT_004c2220;
if (param_4 != (int *)0x0) {
pcVar17 = (char *)param_2[DAT_004c2220];
iVar16 = (int)pcVar17[1];
pcVar11 = DAT_004c223c;
if ((iVar16 == 0x2d) ||
((param_6 != 0 &&
((pcVar17[2] != '\0' ||
(iVar7 = FUN_00483cf0(param_3,iVar16), pcVar11 = DAT_004c223c, iVar7 == 0)))))) {
for (; (pcVar4 = DAT_004c223c, *pcVar11 != '\0' && (*pcVar11 != '=')); pcVar11 = pcVar11 + 1)
{
}
iVar7 = (int)pcVar11 - (int)DAT_004c223c;
iVar13 = 0;
local_40 = -1;
bVar3 = false;
piVar15 = (int *)0x0;
for (; iVar12 = *param_4, iVar12 != 0; param_4 = param_4 + 4) {
iVar8 = FUN_00483ec0(iVar12,pcVar4,iVar7);
piVar14 = piVar15;
iVar5 = local_40;
if (iVar8 == 0) {
iVar12 = FUN_00483e50(iVar12);
if (iVar7 == iVar12) {
bVar2 = true;
local_40 = iVar13;
goto LAB_00486b34;
}
piVar14 = param_4;
iVar5 = iVar13;
if (piVar15 != (int *)0x0) {
if (param_6 == 0) {
if (piVar15[1] == param_4[1]) {
if (piVar15[2] == param_4[2]) {
piVar14 = piVar15;
iVar5 = local_40;
if (piVar15[3] != param_4[3]) goto LAB_00486b18;
}
else {
bVar3 = true;
piVar14 = piVar15;
iVar5 = local_40;
}
}
else {
bVar3 = true;
piVar14 = piVar15;
iVar5 = local_40;
}
}
else {
LAB_00486b18:
bVar3 = true;
piVar14 = piVar15;
iVar5 = local_40;
}
}
}
local_40 = iVar5;
iVar13 = iVar13 + 1;
piVar15 = piVar14;
}
bVar2 = false;
param_4 = piVar15;
LAB_00486b34:
if ((!bVar3) || (bVar2)) {
if (param_4 != (int *)0x0) {
DAT_004c2220 = iVar9 + 1;
if (*pcVar11 == '\0') {
if (param_4[1] == 1) {
if (param_1 <= DAT_004c2220) {
if (iVar10 != 0) {
FUN_00480770(PTR_DAT_004b76b8,"%s: option `%s\' requires an argument\n",*param_2,
param_2[-(1 - DAT_004c2220)]);
}
pcVar11 = DAT_004c223c;
iVar10 = FUN_00483e50(DAT_004c223c);
DAT_004b7828 = param_4[3];
if (*param_3 == ':') {
DAT_004b7820 = DAT_004c2220;
DAT_004c223c = pcVar11 + iVar10;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = DAT_004b7828;
return 0x3a;
}
DAT_004b7820 = DAT_004c2220;
DAT_004c223c = pcVar11 + iVar10;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = DAT_004b7828;
return 0x3f;
}
DAT_004c2228 = (char *)param_2[DAT_004c2220];
DAT_004c2220 = iVar9 + 2;
}
}
else {
if (param_4[1] == 0) {
if (iVar10 != 0) {
if (((char *)param_2[-(1 - DAT_004c2220)])[1] == '-') {
FUN_00480770(PTR_DAT_004b76b8,"%s: option `--%s\' doesn\'t allow an argument\n",
*param_2,*param_4);
}
else {
FUN_00480770(PTR_DAT_004b76b8,"%s: option `%c%s\' doesn\'t allow an argument\n",
*param_2,(int)*(char *)param_2[-(1 - DAT_004c2220)],*param_4);
}
}
pcVar11 = DAT_004c223c;
iVar10 = FUN_00483e50(DAT_004c223c);
DAT_004b7820 = DAT_004c2220;
DAT_004c223c = pcVar11 + iVar10;
DAT_004b7828 = param_4[3];
DAT_004b859c = DAT_004c2228;
DAT_004c222c = param_4[3];
return 0x3f;
}
DAT_004c2228 = pcVar11 + 1;
}
iVar10 = FUN_00483e50(pcVar4);
DAT_004c223c = pcVar4 + iVar10;
if (param_5 != (int *)0x0) {
*param_5 = local_40;
}
if ((int *)param_4[2] != (int *)0x0) {
*(int *)param_4[2] = param_4[3];
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return 0;
}
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return param_4[3];
}
if (((param_6 != 0) && (iVar16 != 0x2d)) &&
(iVar9 = FUN_00483cf0(param_3,(int)*pcVar4), iVar9 != 0)) goto LAB_00486e60;
if (iVar10 != 0) {
if (iVar16 == 0x2d) {
FUN_00480770(PTR_DAT_004b76b8,"%s: unrecognized option `--%s\'\n",*param_2,pcVar4);
}
else {
FUN_00480770(PTR_DAT_004b76b8,"%s: unrecognized option `%c%s\'\n",*param_2,(int)*pcVar17
,pcVar4);
}
}
DAT_004c223c = "";
}
else {
if (iVar10 != 0) {
FUN_00480770(PTR_DAT_004b76b8,"%s: option `%s\' is ambiguous\n",*param_2,pcVar17);
}
pcVar11 = DAT_004c223c;
iVar10 = FUN_00483e50(DAT_004c223c);
DAT_004c223c = pcVar11 + iVar10;
}
DAT_004c2220 = DAT_004c2220 + 1;
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = 0;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = 0;
return 0x3f;
}
}
LAB_00486e60:
pcVar11 = DAT_004c223c;
iVar16 = (int)*DAT_004c223c;
pcVar17 = DAT_004c223c + 1;
DAT_004c223c = pcVar17;
iVar9 = FUN_00483cf0(param_3,iVar16);
if (pcVar11[1] == '\0') {
DAT_004c2220 = DAT_004c2220 + 1;
}
if ((iVar9 == 0) || (iVar16 == 0x3a)) {
if (iVar10 != 0) {
if (DAT_004c2238 == 0) {
pcVar11 = "%s: invalid option -- %c\n";
}
else {
pcVar11 = "%s: illegal option -- %c\n";
}
FUN_00480770(PTR_DAT_004b76b8,pcVar11,*param_2,iVar16);
}
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = iVar16;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = iVar16;
return 0x3f;
}
if (*(char *)(iVar9 + 1) != ':') {
DAT_004b7820 = DAT_004c2220;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = DAT_004c2228;
return iVar16;
}
cVar1 = pcVar11[1] //possible issue identified - semgrep
if (*(char *)(iVar9 + 2) == ':') {
if (cVar1 == '\0') {
DAT_004b7820 = DAT_004c2220;
DAT_004c2228 = (char *)0x0;
DAT_004c223c = (char *)0x0;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = (char *)0x0;
return iVar16;
}
}
else if (cVar1 == '\0') {
if (DAT_004c2220 != param_1) {
param_2 = param_2 + DAT_004c2220;
DAT_004b7820 = DAT_004c2220 + 1;
DAT_004c2220 = DAT_004c2220 + 1;
DAT_004c2228 = (char *)*param_2;
DAT_004c223c = (char *)0x0;
DAT_004b7828 = DAT_004c222c;
DAT_004b859c = (char *)*param_2;
return iVar16;
}
if (iVar10 != 0) {
FUN_00480770(PTR_DAT_004b76b8,"%s: option requires an argument -- %c\n",*param_2,iVar16);
}
if (*param_3 != ':') {
DAT_004b7820 = DAT_004c2220;
DAT_004c223c = (char *)0x0;
DAT_004b7828 = iVar16;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = iVar16;
return 0x3f;
}
DAT_004b7820 = DAT_004c2220;
DAT_004c223c = (char *)0x0;
DAT_004b7828 = iVar16;
DAT_004b859c = DAT_004c2228;
DAT_004c222c = iVar16;
return 0x3a;
}
DAT_004c2220 = DAT_004c2220 + 1;
DAT_004c223c = (char *)0x0;
DAT_004c2228 = pcVar17;
DAT_004b7820 = DAT_004c2220;
DAT_004b859c = pcVar17;
DAT_004b7828 = DAT_004c222c;
return iVar16;
}