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;
}