undefined4 FUN_00402790(int param_1,uint param_2,uint param_3,int param_4)
{
int iVar1;
uint uVar2;
uint *puVar3;
uint uVar4;
uint uVar5;
int iVar6;
iVar1 = 1 << (param_3 & 0x1f);
uVar5 = param_2;
if ((int)param_2 < 0) {
uVar5 = param_2 + 0x1f;
}
iVar6 = (int)uVar5 >> 5;
uVar5 = iVar1 + 0x1fU >> 5;
if (0x20 < iVar1) {
iVar1 = 0;
}
uVar4 = (1 << (iVar1 - 1U & 0x1f)) * 2 + -1 << (param_2 & 0x1f);
if (param_4 == 1) {
iVar1 = 0;
if (uVar5 != 0) {
puVar3 = (uint *)(param_1 + iVar6 * 4);
do {
iVar1 = iVar1 + 1;
*puVar3 = *puVar3 | uVar4;
puVar3 = puVar3 + 1;
} while (iVar1 < (int)uVar5);
return 0;
}
}
else if (param_4 == 2) {
if (uVar5 != 0) {
puVar3 = (uint *)(param_1 + iVar6 * 4);
iVar1 = 0;
do {
iVar1 = iVar1 + 1;
*puVar3 = *puVar3 & ~uVar4;
puVar3 = puVar3 + 1;
} while (iVar1 < (int)uVar5);
}
}
else if (param_4 == 0) {
if (uVar5 == 0) {
return 1;
}
if ((uVar4 & *(uint *)(param_1 + iVar6 * 4)) == 0) {
puVar3 = (uint *)(param_1 + (iVar6 + 1) * 4);
iVar1 = 0;
do {
iVar1 = iVar1 + 1;
if ((int)uVar5 <= iVar1) {
return 1;
}
uVar2 = *puVar3;
puVar3 = puVar3 + 1;
} while ((uVar4 & uVar2) == 0);
}
}
return 0;
}