int FUN_00481860(undefined4 param_1,byte param_2,int param_3,undefined4 param_4)
{
bool bVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
byte local_28 [8];
iVar5 = 0;
iVar2 = param_3;
if ((param_2 & 0x80) != 0) {
iVar2 = FUN_00483e50(param_4);
iVar5 = param_3 - iVar2;
if (iVar5 < 1) {
iVar5 = 0;
}
else {
local_28[0] = param_2 & 0x7f;
iVar4 = iVar5;
do {
iVar3 = FUN_004887a0(local_28,1,param_1);
if (iVar3 != 1) {
iVar4 = iVar5 - iVar4;
bVar1 = iVar4 != iVar5;
iVar5 = iVar4;
if (bVar1) {
return iVar4;
}
break;
}
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
}
}
iVar4 = 0;
if (0 < iVar2) {
iVar4 = FUN_004887a0(param_4,iVar2,param_1);
}
return iVar5 + iVar4;
}