/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 main(int param_1,char **param_2)
{
char *pcVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
char *pcVar5;
uint uVar6;
uint uVar7;
code *pcVar8;
undefined4 local_50 [2];
undefined4 local_48;
undefined1 local_44;
undefined4 *local_38;
pcVar5 = *param_2;
pcVar1 = strrchr(pcVar5,0x2f);
if (pcVar1 != (char *)0x0) {
pcVar5 = pcVar1 + 1;
}
iVar2 = strcmp(pcVar5,"ctest");
if (iVar2 == 0) {
return 0;
}
iVar2 = strcmp(pcVar5,"psts");
if (iVar2 == 0) {
uVar6 = 0xffffffff;
while (iVar2 = getopt(param_1,param_2,"i:vh"), 0 < iVar2) { //possible issue identified - semgrep
if (iVar2 == 0x69) {
uVar6 = atoi(_optarg);
}
else {
puts("psts -i {port#}");
}
}
if (4 < uVar6) {
pcVar1 = "%s: invalid port range (%d)!\n";
pcVar5 = "portstatus";
goto LAB_00400edc;
}
iVar2 = socket(2,1,0);
if (iVar2 < 0) {
perror("socket");
}
else {
local_50[0] = 0x80;
local_38 = local_50;
local_48 = 0x32687465;
local_44 = 0;
iVar3 = ioctl(iVar2,0x89f1);
if (iVar3 != -1) {
close(iVar2);
/* WARNING: Could not recover jumptable at 0x00400c6c. Too many branches */
/* WARNING: Treating indirect jump as call */
uVar4 = (*(code *)(&_gp + *(int *)(&UNK_00401610 + uVar6 * 4)))();
return uVar4;
}
perror("ioctl");
close(iVar2);
}
pcVar8 = putchar;
pcVar1 = (char *)0xa;
}
else {
iVar2 = strcmp(pcVar5,"slinktype");
if (iVar2 == 0) {
uVar6 = 0xffffffff;
uVar7 = 0xffffffff;
while (iVar2 = getopt(param_1,param_2,"i:d:vh"), pcVar1 = _optarg, 0 < iVar2) { //possible issue identified - semgrep
if (iVar2 == 100) {
iVar2 = strcmp(_optarg,"AUTO");
if (iVar2 == 0) {
uVar6 = 0;
}
else {
iVar2 = strcmp(pcVar1,"100F");
if (iVar2 == 0) {
uVar6 = 1;
}
else {
iVar2 = strcmp(pcVar1,"100H");
if (iVar2 == 0) {
uVar6 = 2;
}
else {
iVar2 = strcmp(pcVar1,"10F");
if (iVar2 == 0) {
uVar6 = 3;
}
else {
iVar2 = strcmp(pcVar1,"10H");
if (iVar2 == 0) {
uVar6 = 4;
}
}
}
}
}
}
else {
if (iVar2 != 0x69) {
pcVar8 = puts;
pcVar1 =
"slinktype -i {port#} -d {link type}\n port#: 0 ~ 4\n link type:\n AUTO: auto-negotiation\n 100F: 100Mbps Full-Duplex\n 100H: 100Mbps Half-Duplex\n 10F: 10Mbps Full-Duplex\n 10H: 10Mbps Half-Duplex"
;
goto LAB_00400f50;
}
uVar7 = atoi(_optarg);
}
}
if (uVar7 < 5) {
switch(uVar6) {
case 0:
uVar4 = 0x9200;
break;
case 1:
uVar4 = 0x2100;
break;
case 2:
uVar4 = 0x2000;
break;
case 3:
uVar4 = 0x100;
break;
case 4:
uVar4 = 0;
break;
default:
pcVar1 = "%s: invalid type (%d) !\n";
pcVar5 = "setlinktype";
goto LAB_00400edc;
}
FUN_00400954(uVar7 & 0xff,0,uVar4);
return 0;
}
pcVar1 = "%s: invalid port range (%d)!\n";
pcVar5 = "setlinktype";
uVar6 = uVar7;
LAB_00400edc:
fprintf(_stderr,pcVar1,pcVar5,uVar6);
return 0xffffffff;
}
pcVar8 = puts;
pcVar1 = "Ralink rt3052 switch !";
}
LAB_00400f50:
(*pcVar8)(pcVar1);
return 0;
}