void FUN_00402620(int param_1,uint param_2,int param_3)
{
int iVar1;
uint *puVar2;
uint *puVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uVar4 = param_2;
if ((int)param_2 < 0) {
uVar4 = param_2 + 0x1f;
}
uVar5 = param_2 & 0x8000001f;
puVar2 = (uint *)(param_1 + ((int)uVar4 >> 5) * 4);
if ((int)uVar5 < 0) {
uVar5 = (uVar5 - 1 | 0xffffffe0) + 1;
}
uVar6 = (param_3 + uVar5) - 0x20;
uVar4 = -1 << (uVar5 & 0x1f);
iVar1 = param_3;
if (-1 < (int)uVar6) {
uVar5 = *puVar2;
puVar3 = puVar2 + (uVar6 >> 5) + 1;
while( true ) {
*puVar2 = ~uVar4 & uVar5;
puVar2 = puVar2 + 1;
uVar4 = 0xffffffff;
if (puVar2 == puVar3) break;
uVar5 = *puVar2;
}
uVar4 = 0xffffffff;
iVar1 = uVar6 + (uVar6 >> 5) * -0x20;
}
if (iVar1 != 0) {
if ((param_3 + param_2 & 0x1f) == 0) {
*puVar2 = *puVar2 & ~uVar4;
return;
}
*puVar2 = *puVar2 & ~((1 << (param_3 + param_2 & 0x1f)) - 1U & uVar4);
}
return;
}