int FUN_00409398(int param_1)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
int iVar4;
undefined4 uVar5;
int iVar6;
undefined1 auStack_420 [1020];
int local_24 [2];
iVar1 = br_device_ioctl(param_1,7,auStack_420,0,0);
piVar2 = local_24;
if (iVar1 < 0) {
piVar2 = __errno_location();
iVar1 = *piVar2;
}
else {
iVar6 = 0xff;
iVar1 = param_1;
do {
if (*piVar2 != 0) {
puVar3 = (undefined4 *)malloc(0x4c) //possible issue identified - semgrep
iVar4 = *piVar2;
uVar5 = *(undefined4 *)(param_1 + 0x18);
*(undefined4 **)(iVar1 + 0x418) = puVar3;
*(undefined4 **)(param_1 + 0x18) = puVar3;
puVar3[2] = iVar4;
*puVar3 = uVar5;
puVar3[1] = iVar6;
puVar3[3] = param_1;
iVar4 = FUN_00409260(puVar3);
if (iVar4 != 0) {
puVar3 = (undefined4 *)(param_1 + (iVar6 + 7) * 4);
while( true ) {
puVar3 = puVar3 + 1;
iVar6 = iVar6 + 1;
if (iVar6 == 0x100) break;
free((void *)*puVar3);
}
return iVar4;
}
}
iVar6 = iVar6 + -1;
piVar2 = piVar2 + -1;
iVar1 = iVar1 + -4;
} while (iVar6 != -1);
iVar1 = 0;
}
return iVar1;
}