uint FUN_00483560(ushort *param_1)
{
byte bVar1;
ushort uVar2;
int iVar3;
byte *pbVar4;
byte local_10 [8];
if (((*param_1 & 3) != 0) || (iVar3 = FUN_004815b0(), iVar3 == 0)) {
uVar2 = *param_1;
if ((uVar2 & 2) != 0) {
bVar1 = *(byte *)((int)param_1 + (uVar2 & 1) + 2);
*param_1 = uVar2 - 1;
*(undefined1 *)((int)param_1 + 3) = 0;
return (uint)bVar1;
}
pbVar4 = *(byte **)(param_1 + 8);
if (*(byte **)(param_1 + 10) != pbVar4) {
bVar1 = *pbVar4;
*(byte **)(param_1 + 8) = pbVar4 + 1;
return (uint)bVar1;
}
if (*(int *)(param_1 + 2) == -2) {
*param_1 = uVar2 | 4;
}
else {
if ((uVar2 & 0x300) == 0) {
iVar3 = *(int *)(param_1 + 6);
}
else {
FUN_0048331c(&PTR_DAT_004b76bc);
iVar3 = *(int *)(param_1 + 6);
}
if (iVar3 == *(int *)(param_1 + 4)) {
iVar3 = FUN_004885e0(param_1,local_10,1);
if (iVar3 != 0) {
return (uint)local_10[0];
}
}
else {
iVar3 = FUN_00488950(param_1);
if (iVar3 != 0) {
bVar1 = **(byte **)(param_1 + 8);
*(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
return (uint)bVar1;
}
}
}
}
return 0xffffffff;
}