void FUN_004201c0(int param_1)
{
char cVar1;
undefined1 uVar2;
undefined1 uVar3;
undefined2 uVar4;
bool bVar5;
short sVar6;
undefined4 *puVar7;
uint uVar8;
char *pcVar9;
int iVar10;
int iVar11;
int iVar12;
undefined4 uVar13;
if (*(char *)(*(int *)(param_1 + 0x20) + 0x68) == '\x01') {
sVar6 = *(short *)(*(int *)(param_1 + 0x20) + 0x5f) //possible issue identified - semgrep
if (sVar6 == 2) {
pcVar9 = "WPS: The AP is Unconfigured! Using WPA/PSK ";
LAB_00420240:
FUN_00480710(pcVar9);
}
else if (sVar6 == 0x20) {
pcVar9 = "WPS: The AP is Unconfigured! Using WPA2/PSK ";
goto LAB_00420240;
}
sVar6 = *(short *)(*(int *)(param_1 + 0x20) + 99) //possible issue identified - semgrep
if (sVar6 == 4) {
pcVar9 = "(TKIP)";
LAB_00420290:
FUN_004804f0(pcVar9);
}
else if (sVar6 == 8) {
pcVar9 = "(AES)";
goto LAB_00420290;
}
FUN_0042000c(param_1);
*(undefined1 *)(param_1 + 10) = 1;
*(undefined1 *)(param_1 + 9) = 1;
}
puVar7 = (undefined4 *)FUN_00471da0(0x44);
/* try { // try from 004202d8 to 004202df has its CatchHandler @ 00420368 */
FUN_0041c618(puVar7,*(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x28),1);
*puVar7 = &PTR_FUN_004ae808;
*(undefined1 *)((int)puVar7 + 0x3e) = 0;
*(undefined4 **)(param_1 + 0x2c) = puVar7;
FUN_00419430(puVar7,FUN_00420ee4,param_1);
[REF] /logs/s16_ghidra_decompile_checks/haruspex_wps/FUN_00420ee4_00420ee4.c
FUN_004193f0(*(undefined4 *)(param_1 + 0x2c),*(int *)(param_1 + 0x20) + 4,
*(undefined4 *)(*(int *)(param_1 + 0x20) + 0x378));
FUN_004244fc(*(undefined4 *)(param_1 + 0x28),FUN_00419948,*(undefined4 *)(param_1 + 0x2c));
iVar11 = *(int *)(param_1 + 0x20);
if (*(char *)(iVar11 + 0x371) == '\0') {
FUN_00404b10("%s: NW KEY is not set, generate NW key !\n","StartRegistrar");
iVar11 = FUN_0042000c(param_1);
if (iVar11 != 0x1001) {
FUN_0041d158(param_1);
return;
}
}
else {
uVar13 = *(undefined4 *)(iVar11 + 0x374);
FUN_004804f0("Using pre-config NW KEY!");
FUN_0041ff80(param_1,iVar11 + 0x331,uVar13);
}
FUN_0041f598(param_1,0);
FUN_0041f1ac(param_1);
iVar10 = *(int *)(param_1 + 0x20);
iVar12 = *(int *)(iVar10 + 0x37c);
cVar1 = *(char *)(iVar10 + 0x68) //possible issue identified - semgrep
iVar11 = 0;
if (iVar12 != 0) {
iVar11 = FUN_00483e50(iVar12);
}
FUN_0041a47c(*(undefined4 *)(param_1 + 0x2c),0,*(undefined1 *)(param_1 + 0x50),
*(undefined1 *)(iVar10 + 0x380));
FUN_004193c0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x3c),
*(undefined4 *)(param_1 + 0x38));
FUN_00424b64(*(undefined4 *)(param_1 + 0x28),3);
FUN_00424b64(*(undefined4 *)(param_1 + 0x28),2);
FUN_00424b64(*(undefined4 *)(param_1 + 0x28),8);
if (iVar11 == 0) {
FUN_004804f0("WPS: No device password specified !");
goto LAB_004206fc;
}
bVar5 = cVar1 == '\x02';
uVar8 = *(uint *)(*(int *)(param_1 + 0x20) + 0x114) >> 8 & 0xffff;
if (uVar8 == 0) {
iVar10 = FUN_0042196c(*(int *)(param_1 + 0x20),0);
if (iVar10 == 0x1001) {
FUN_00419418(*(undefined4 *)(param_1 + 0x2c),*(int *)(param_1 + 0x20) + 4);
}
FUN_0041a514(*(undefined4 *)(param_1 + 0x2c),iVar12,iVar11);
FUN_00480710("WPS: Using PIN:%s\n",iVar12);
FUN_0041ecc0(param_1,bVar5,1,0,*(undefined2 *)(*(int *)(param_1 + 0x20) + 0x66),
*(undefined1 *)(*(int *)(param_1 + 0x20) + 0x69));
iVar11 = *(int *)(param_1 + 0x20);
uVar2 = *(undefined1 *)(iVar11 + 0x68);
uVar13 = 0;
uVar4 = *(undefined2 *)(iVar11 + 0x66);
uVar3 = *(undefined1 *)(iVar11 + 0x69);
}
else {
if (uVar8 != 4) goto LAB_004206fc;
iVar11 = FUN_004249b0(*(undefined4 *)(param_1 + 0x28));
if (iVar11 != 0) {
FUN_0041d498(param_1,3);
FUN_00401c98();
goto LAB_004206fc;
}
FUN_004804f0("WPS: Using Push Button !!");
iVar11 = FUN_0042196c(*(undefined4 *)(param_1 + 0x20),4);
if (iVar11 == 0x1001) {
FUN_00419418(*(undefined4 *)(param_1 + 0x2c),*(int *)(param_1 + 0x20) + 4);
}
FUN_0041a514(*(undefined4 *)(param_1 + 0x2c),"00000000",8);
FUN_0041ecc0(param_1,bVar5,1,4,*(undefined2 *)(*(int *)(param_1 + 0x20) + 0x66),
*(undefined1 *)(*(int *)(param_1 + 0x20) + 0x69));
iVar11 = *(int *)(param_1 + 0x20);
uVar2 = *(undefined1 *)(iVar11 + 0x68);
uVar13 = 4;
uVar4 = *(undefined2 *)(iVar11 + 0x66);
uVar3 = *(undefined1 *)(iVar11 + 0x69);
}
FUN_0041e880(param_1,2,uVar2,1,uVar13,uVar4,uVar3);
*(undefined4 *)(param_1 + 0xc) = 2;
LAB_004206fc:
*(undefined1 *)(param_1 + 0x50) = 1;
return;
}