void PeerPairMsg2Action(int param_1,int *param_2,int param_3)
{
void *pvVar1;
char cVar2;
uint uVar3;
int iVar4;
int iVar5;
uint uVar6;
undefined1 uVar7;
undefined1 auStack_b0 [4];
void *local_ac;
undefined1 auStack_a8 [8];
undefined1 auStack_a0 [6];
undefined1 auStack_9a [6];
undefined1 auStack_94 [4];
undefined1 auStack_90 [80];
uint local_40;
void *local_3c;
int *local_38;
int local_34;
uint local_30;
if (2 < RTDebugLevel) {
printk("===> PeerPairMsg2Action \n");
}
if ((((param_2 != (int *)0x0) && (*param_2 == 1)) && (0x82 < *(uint *)(param_3 + 0x648))) &&
((7 < *(byte *)(param_2 + 0x7c) &&
(uVar6 = (uint)*(byte *)((int)param_2 + 0x31), uVar6 < *(byte *)(param_1 + 0x51aa))))) {
iVar5 = param_1 + uVar6 * 0x1140;
local_3c = (void *)(iVar5 + 0x51ac);
local_30 = *(uint *)(iVar5 + 0x51e4);
local_40 = (uint)*(byte *)(iVar5 + 0x5240);
RTMPGetTxTscFromAsic(param_1,uVar6,auStack_a8);
if (param_2[0x79] - 3U < 2) {
uVar7 = *(undefined1 *)(iVar5 + 0x52e4);
iVar5 = iVar5 + 0x52e6;
}
else {
iVar4 = uVar6 * 0x1140 + 0x52e0;
if (*(int *)(iVar5 + 0x51dc) - 8U < 2) {
uVar7 = *(undefined1 *)(iVar5 + 0x52e5);
iVar5 = param_1 + iVar4 + 0x105;
}
else {
uVar7 = *(undefined1 *)(iVar5 + 0x52e4);
iVar5 = param_1 + iVar4 + 6;
}
}
iVar4 = *(int *)(param_3 + 0x648);
memmove((void *)((int)param_2 + 0x152),(void *)(param_3 + 0x31),0x20) //possible issue identified - semgrep
local_34 = (int)param_2 + 0x132;
local_38 = param_2 + 0x96;
WpaDerivePTK(param_1,uVar6 * 0x1140 + param_1 + 0x5275,local_34,local_3c,
(void *)((int)param_2 + 0x152),local_38,auStack_90,0x40);
memmove((void *)((int)param_2 + 0x17a),auStack_90,0x40) //possible issue identified - semgrep
iVar4 = PeerWpaMessageSanity(param_1,param_3 + 0x20,iVar4 + -0x20,2,param_2);
if (iVar4 != 0) {
os_alloc_mem(0,&local_ac,0x5dc);
pvVar1 = local_ac;
if (local_ac == (void *)0x0) {
if (RTDebugLevel != 0) {
printk("!!!%s : no memory!!!\n","PeerPairMsg2Action");
}
}
else {
memset(local_ac,0,0x5dc) //possible issue identified - semgrep
RTMPCancelTimer(param_2 + 0x6f,auStack_b0);
*(undefined1 *)(param_2 + 0x7c) = 9;
uVar3 = 7;
do {
uVar3 = uVar3 & 0xff;
cVar2 = *(char *)((int)param_2 + uVar3 + 0x172) + '\x01' //possible issue identified - semgrep
*(char *)((int)param_2 + uVar3 + 0x172) = cVar2;
if (uVar3 == 0) break;
uVar3 = uVar3 - 1;
} while (cVar2 == '\0');
ConstructEapolMsg(param_2,local_30 & 0xff,3,local_40,local_34,auStack_a8,
uVar6 * 0x1140 + param_1 + 0x5295,iVar5,uVar7,pvVar1);
memmove(auStack_a0,local_38,6) //possible issue identified - semgrep
memmove(auStack_9a,local_3c,6) //possible issue identified - semgrep
memmove(auStack_94,&EAPOL,2) //possible issue identified - semgrep
RTMPToWirelessSta(param_1,param_2,auStack_a0,0xe,pvVar1,
CONCAT11(*(undefined1 *)((int)pvVar1 + 2),*(undefined1 *)((int)pvVar1 + 3)
) + 4,*(short *)((int)param_2 + 0x1f2) != 1);
*(undefined1 *)((int)param_2 + 0x1ba) = 10;
RTMPSetTimer(param_2 + 0x6f,3000);
*(undefined1 *)(param_2 + 0x7c) = 9;
os_free_mem(0,local_ac);
if (2 < RTDebugLevel) {
printk("<=== PeerPairMsg2Action: send Msg3 of 4-way \n");
}
}
}
}
return;
}