void FUN_004821e0(int param_1)
{
undefined4 *puVar1;
undefined4 uVar2;
undefined8 *puVar3;
int iVar4;
undefined8 *puVar5;
int iVar6;
puVar5 = (undefined8 *)(param_1 + 0x50);
if (*(int *)(param_1 + 0x18) == 0) {
if (*(int *)(param_1 + 8) == -0x80000000) {
puVar1 = *(undefined4 **)(param_1 + 0x4c);
*(undefined4 **)(param_1 + 0x4c) = puVar1 + 1;
uVar2 = *puVar1;
*(undefined4 *)(param_1 + 8) = uVar2;
*(undefined4 *)(param_1 + 0x50) = uVar2;
iVar4 = *(int *)(param_1 + 4);
}
else {
iVar4 = *(int *)(param_1 + 4);
}
iVar6 = 0;
if (iVar4 == -0x80000000) {
puVar1 = *(undefined4 **)(param_1 + 0x4c);
*(undefined4 **)(param_1 + 0x4c) = puVar1 + 1;
uVar2 = *puVar1;
*(undefined4 *)(param_1 + 4) = uVar2;
*(undefined4 *)(param_1 + 0x50) = uVar2;
}
while (iVar6 < *(int *)(param_1 + 0x1c)) {
iVar4 = *(int *)(param_1 + (iVar6 + 10) * 4);
iVar6 = iVar6 + 1;
if (iVar4 != 8) {
puVar1 = *(undefined4 **)(param_1 + 0x4c);
if (iVar4 < 9) {
if (((iVar4 == 2) || (iVar4 < 3)) || (iVar4 != 7)) goto LAB_00482304;
LAB_004822ec:
puVar3 = (undefined8 *)((int)puVar1 + 7U & 0xfffffff8);
*(undefined8 **)(param_1 + 0x4c) = puVar3 + 1;
*puVar5 = *puVar3;
}
else {
if ((iVar4 != 0x400) && (0x400 < iVar4)) {
if (iVar4 == 0x800) {
puVar1 = (undefined4 *)((int)puVar1 + 7U & 0xfffffff8);
*(undefined4 **)(param_1 + 0x4c) = puVar1 + 2;
uVar2 = *puVar1;
*(undefined4 *)((int)puVar5 + 4) = puVar1[1];
*(undefined4 *)puVar5 = uVar2;
goto LAB_00482310;
}
if (iVar4 == 0x807) goto LAB_004822ec;
}
LAB_00482304:
*(undefined4 **)(param_1 + 0x4c) = puVar1 + 1;
*(undefined4 *)puVar5 = *puVar1;
}
LAB_00482310:
puVar5 = puVar5 + 1;
}
}
iVar4 = *(int *)(param_1 + 8);
}
else {
if (*(int *)(param_1 + 8) == -0x80000000) {
*(undefined4 *)(param_1 + 8) =
*(undefined4 *)(puVar5 + -(1 - (uint)*(byte *)(param_1 + 0x24)));
iVar4 = *(int *)(param_1 + 4);
}
else {
iVar4 = *(int *)(param_1 + 4);
}
if (iVar4 == -0x80000000) {
*(undefined4 *)(param_1 + 4) =
*(undefined4 *)(puVar5 + -(1 - (uint)*(byte *)(param_1 + 0x25)));
iVar4 = *(int *)(param_1 + 8);
}
else {
iVar4 = *(int *)(param_1 + 8);
}
}
if (iVar4 < 0) {
*(undefined4 *)(param_1 + 0x14) = 0x20;
*(int *)(param_1 + 8) = -iVar4;
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffffffe | 8;
}
return;
}