CNavArea::Load
0x0071dbb0 · 8278 bytes · __cdecl
_ZN8CNavArea4LoadER10CUtlBufferjj
Decompiled
undefined (3 params)
/* CNavArea::Load(CUtlBuffer&, unsigned int, unsigned int) */
undefined4 CNavArea::Load(CUtlBuffer *param_1,uint param_2,uint param_3)
{
size_t sVar1;
SpotOrder SVar2;
ushort uVar3;
int *piVar4;
undefined2 uVar5;
char cVar6;
byte bVar7;
int iVar8;
void *pvVar9;
uint *puVar10;
int iVar11;
int iVar12;
undefined4 *puVar13;
uint uVar14;
uint uVar15;
undefined4 uVar16;
CUtlBuffer *pCVar17;
float fVar18;
float fVar19;
float fVar20;
float fVar21;
double dVar22;
float fVar23;
undefined8 in_stack_ffffff2c;
uint local_ac;
uint local_a8;
uint local_a4;
uint local_a0;
byte local_91;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88;
undefined4 local_84;
undefined4 local_80;
undefined4 local_7c;
undefined4 local_78;
undefined4 local_74;
undefined1 local_70;
undefined1 local_6f;
undefined1 local_6e;
undefined1 local_6d;
undefined1 local_6c;
undefined1 local_6b;
undefined1 local_6a;
undefined1 local_69;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined1 local_48 [12];
undefined1 local_3c [12];
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
uVar16 = (undefined4)((ulonglong)in_stack_ffffff2c >> 0x20);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar14 = local_64;
}
uVar15 = m_nextID;
*(uint *)(param_1 + 0x8c) = uVar14;
if (uVar15 <= uVar14) {
m_nextID = uVar14 + 1;
}
if (param_3 < 9) {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
uVar14 = 0;
if (cVar6 != '\0') {
uVar14 = (uint)*(byte *)(*(int *)param_2 +
(*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
}
}
else {
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
uVar14 = (uint)local_60 & 0xff;
}
}
else if (param_3 < 0xd) {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,2);
uVar14 = 0;
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar3 = *(ushort *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
uVar5 = local_60._2_2_;
local_60 = (float)CONCAT22(local_60._2_2_,(ushort)local_64);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 1));
local_60._0_2_ = CONCAT11(*(undefined1 *)puVar13,*(undefined1 *)((int)puVar13 + 1));
local_60 = (float)CONCAT22(uVar5,(undefined2)local_60);
_V_memcpy(&local_64,&local_60,2);
iVar8 = *(int *)(param_2 + 0xc);
uVar3 = (ushort)local_64;
}
uVar14 = (uint)uVar3;
*(int *)(param_2 + 0xc) = iVar8 + 2;
}
}
else {
local_64 = local_64 & 0xffff0000;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar14 = local_64 & 0xffff;
}
}
else if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = local_64;
}
uVar14 = uVar14 & 0x67ffffff;
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%d",&local_64);
uVar14 = local_64 & 0x67ffffff;
}
*(uint *)(param_1 + 0x54) = uVar14;
CUtlBuffer::Get((CUtlBuffer *)param_2,param_1 + 4,0xc);
dVar22 = (double)CONCAT44(uVar16,0xc);
CUtlBuffer::Get((CUtlBuffer *)param_2,param_1 + 0x10,0xc);
fVar21 = *(float *)(param_1 + 0x10) - *(float *)(param_1 + 4);
fVar19 = (*(float *)(param_1 + 0x10) + *(float *)(param_1 + 4)) * 0.5;
fVar20 = (*(float *)(param_1 + 0x14) + *(float *)(param_1 + 8)) * 0.5;
fVar18 = (*(float *)(param_1 + 0x18) + *(float *)(param_1 + 0xc)) * 0.5;
*(float *)(param_1 + 0x2c) = fVar19;
*(float *)(param_1 + 0x30) = fVar20;
*(float *)(param_1 + 0x34) = fVar18;
if ((fVar21 <= 0.0) ||
(fVar23 = *(float *)(param_1 + 0x14) - *(float *)(param_1 + 8), fVar23 <= 0.0)) {
dVar22 = (double)fVar19;
*(undefined4 *)(param_1 + 0x20) = 0;
*(undefined4 *)(param_1 + 0x1c) = 0;
DevWarning("Degenerate Navigation Area #%d at setpos %g %g %g\n",*(undefined4 *)(param_1 + 0x8c)
,dVar22,(double)fVar20,(double)fVar18);
}
else {
*(float *)(param_1 + 0x1c) = 1.0 / fVar21;
*(float *)(param_1 + 0x20) = 1.0 / fVar23;
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
local_64 = uVar14;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_64._3_1_ = (undefined1)(uVar14 >> 0x18);
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),4);
local_64._2_1_ = (undefined1)(uVar14 >> 0x10);
local_60._0_2_ = CONCAT11(local_64._2_1_,local_64._3_1_);
local_64._1_1_ = (undefined1)(uVar14 >> 8);
local_60._0_3_ = CONCAT12(local_64._1_1_,(undefined2)local_60);
local_64._0_1_ = (byte)uVar14;
local_60 = (float)CONCAT13((byte)local_64,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
uVar14 = local_64;
}
}
else {
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),&local_64);
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_64);
uVar14 = local_64;
}
*(uint *)(param_1 + 0x24) = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
local_64 = uVar14;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_64._3_1_ = (undefined1)(uVar14 >> 0x18);
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),4);
local_64._2_1_ = (undefined1)(uVar14 >> 0x10);
local_60._0_2_ = CONCAT11(local_64._2_1_,local_64._3_1_);
local_64._1_1_ = (undefined1)(uVar14 >> 8);
local_60._0_3_ = CONCAT12(local_64._1_1_,(undefined2)local_60);
local_64._0_1_ = (byte)uVar14;
local_60 = (float)CONCAT13((byte)local_64,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
uVar14 = local_64;
}
}
else {
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),&local_64);
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_64);
uVar14 = local_64;
}
*(uint *)(param_1 + 0x28) = uVar14;
ComputeMinMaxCornerZ((CNavArea *)param_1);
if ((0.05 <= ABS(*(float *)(param_1 + 0x24) - *(float *)(param_1 + 0x18))) ||
(0.05 <= ABS(*(float *)(param_1 + 0x28) - *(float *)(param_1 + 0x18)))) {
*(uint *)(param_1 + 0x54) = *(uint *)(param_1 + 0x54) & 0xdfffffff;
}
else {
*(uint *)(param_1 + 0x54) = *(uint *)(param_1 + 0x54) | 0x20000000;
}
CheckWaterLevel((CNavArea *)param_1);
pCVar17 = param_1;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') {
local_a0 = 0;
}
else {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
local_a0 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),4);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
local_a0 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
}
else {
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),&local_64);
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
local_a0 = local_64;
}
piVar4 = *(int **)(pCVar17 + 0x58);
if (*piVar4 < (int)local_a0) {
if ((CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
StaticData()::staticData == '\0') &&
(iVar8 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData), iVar8 != 0)) {
__cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData);
}
if (piVar4 == &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
StaticData()::staticData) {
puVar13 = malloc(local_a0 * 8 + 4);
*(undefined4 **)(pCVar17 + 0x58) = puVar13;
*puVar13 = 0;
}
else {
sVar1 = local_a0 * 8 + 4;
iVar8 = malloc_usable_size(*(undefined4 *)(pCVar17 + 0x58));
if (iVar8 < (int)sVar1) {
pvVar9 = realloc(*(void **)(pCVar17 + 0x58),sVar1);
*(void **)(pCVar17 + 0x58) = pvVar9;
}
}
}
uVar14 = 0;
if (local_a0 != 0) {
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar15 = 0;
if (cVar6 == '\0') goto LAB_0071dea9;
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar15 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),4);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar15 = local_64;
}
cVar6 = *(char *)(param_2 + 0x14);
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
else {
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),&local_64);
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar15 = local_64;
LAB_0071dea9:
cVar6 = *(char *)(param_2 + 0x14);
}
if (cVar6 != '\0') {
return 5;
}
if (*(uint *)(param_1 + 0x8c) != uVar15) {
piVar4 = *(int **)(pCVar17 + 0x58);
iVar8 = *piVar4;
if ((CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
StaticData()::staticData == '\0') &&
(iVar12 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData), iVar12 != 0)) {
__cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData);
}
if (piVar4 == &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData) {
puVar13 = malloc((iVar8 + 1) * 8 + 4);
*(undefined4 **)(pCVar17 + 0x58) = puVar13;
*puVar13 = 0;
pvVar9 = *(void **)(pCVar17 + 0x58);
}
else {
sVar1 = (iVar8 + 1) * 8 + 4;
iVar12 = malloc_usable_size(*(undefined4 *)(pCVar17 + 0x58));
if (iVar12 < (int)sVar1) {
pvVar9 = realloc(*(void **)(pCVar17 + 0x58),sVar1);
*(void **)(pCVar17 + 0x58) = pvVar9;
}
else {
pvVar9 = *(void **)(pCVar17 + 0x58);
}
}
*(uint *)((int)pvVar9 + iVar8 * 8 + 4) = uVar15;
*(undefined4 *)((int)pvVar9 + iVar8 * 8 + 8) = 0xbf800000;
**(int **)(pCVar17 + 0x58) = **(int **)(pCVar17 + 0x58) + 1;
}
uVar14 = uVar14 + 1;
} while (uVar14 != local_a0);
}
pCVar17 = pCVar17 + 4;
} while (pCVar17 != param_1 + 0x10);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 != '\0') {
local_a0 = (uint)*(byte *)(*(int *)param_2 +
(*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
goto LAB_0071e0e0;
}
if (param_3 != 1) goto LAB_0071e43c;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071ef1e;
LAB_0071eb17:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 != '\0') {
SVar2 = *(SpotOrder *)(*(int *)param_2 + (*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)))
;
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
LAB_0071eb43:
if ((byte)SVar2 != 0) {
local_a0 = 0;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071eb81;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
}
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071eb8b;
LAB_0071eca1:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071eba6;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
}
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071ebb0;
LAB_0071ed10:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 == '\0') goto LAB_0071ebc8;
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071ebd2;
LAB_0071ed36:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071ebed;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
}
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071ebf7;
LAB_0071eda5:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 != '\0') {
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
LAB_0071eb81:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071eca1;
LAB_0071eb8b:
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
LAB_0071eba6:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071ed10;
LAB_0071ebb0:
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
LAB_0071ebc8:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071ed36;
LAB_0071ebd2:
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
LAB_0071ebed:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071eda5;
LAB_0071ebf7:
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
}
local_a0 = local_a0 + 1;
} while ((int)local_a0 < (int)(uint)(byte)SVar2);
}
}
}
else {
dVar22 = (double)CONCAT44((int)((ulonglong)dVar22 >> 0x20),&local_60);
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
local_a0 = (uint)local_60 & 0xff;
LAB_0071e0e0:
local_a4 = 0;
if (param_3 == 1) {
if (local_a0 != 0) {
do {
CUtlBuffer::Get((CUtlBuffer *)param_2,&local_60,0xc);
iVar11 = (**(code **)(*TheNavMesh + 0x1c))(TheNavMesh);
*(float *)(iVar11 + 4) = local_60;
*(undefined4 *)(iVar11 + 8) = local_5c;
*(byte *)(iVar11 + 0x1c) = *(byte *)(iVar11 + 0x1c) | 1;
*(undefined4 *)(iVar11 + 0xc) = local_58;
piVar4 = *(int **)(param_1 + 0xcc);
iVar12 = *piVar4;
iVar8 = iVar12 + 1;
if (piVar4 == &CUtlVectorUltraConservative<HidingSpot*,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData) {
puVar13 = malloc(iVar8 * 4 + 4);
*(undefined4 **)(param_1 + 0xcc) = puVar13;
*puVar13 = 0;
pvVar9 = *(void **)(param_1 + 0xcc);
}
else {
sVar1 = iVar8 * 4 + 4;
iVar8 = malloc_usable_size(piVar4);
if (iVar8 < (int)sVar1) {
pvVar9 = realloc(*(void **)(param_1 + 0xcc),sVar1);
*(void **)(param_1 + 0xcc) = pvVar9;
}
else {
pvVar9 = *(void **)(param_1 + 0xcc);
}
}
local_a4 = local_a4 + 1;
*(int *)((int)pvVar9 + iVar12 * 4 + 4) = iVar11;
**(int **)(param_1 + 0xcc) = **(int **)(param_1 + 0xcc) + 1;
} while (local_a4 != local_a0);
}
LAB_0071ef14:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071eb17;
LAB_0071ef1e:
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
SVar2 = local_60._0_1_;
goto LAB_0071eb43;
}
if (local_a0 != 0) {
do {
uVar16 = (undefined4)((ulonglong)dVar22 >> 0x20);
pCVar17 = (CUtlBuffer *)(**(code **)(*TheNavMesh + 0x1c))(TheNavMesh);
dVar22 = (double)CONCAT44(uVar16,param_3);
uVar14 = param_2;
HidingSpot::Load(pCVar17,param_2);
piVar4 = *(int **)(param_1 + 0xcc);
iVar12 = *piVar4;
iVar8 = iVar12 + 1;
if (piVar4 == &CUtlVectorUltraConservative<HidingSpot*,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData) {
puVar13 = malloc(iVar8 * 4 + 4);
*(undefined4 **)(param_1 + 0xcc) = puVar13;
*puVar13 = 0;
pvVar9 = *(void **)(param_1 + 0xcc);
}
else {
sVar1 = iVar8 * 4 + 4;
iVar8 = malloc_usable_size(piVar4,uVar14,dVar22);
if (iVar8 < (int)sVar1) {
pvVar9 = realloc(*(void **)(param_1 + 0xcc),sVar1);
*(void **)(param_1 + 0xcc) = pvVar9;
}
else {
pvVar9 = *(void **)(param_1 + 0xcc);
}
}
local_a4 = local_a4 + 1;
*(CUtlBuffer **)((int)pvVar9 + iVar12 * 4 + 4) = pCVar17;
**(int **)(param_1 + 0xcc) = **(int **)(param_1 + 0xcc) + 1;
} while (local_a4 != local_a0);
}
LAB_0071e43c:
if (param_3 < 0xf) goto LAB_0071ef14;
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
local_a8 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
local_a8 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
goto LAB_0071e477;
}
if (param_3 < 3) {
return 0;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
local_a8 = local_64;
LAB_0071e477:
if (param_3 < 3) {
if (local_a8 == 0) {
return 0;
}
local_a0 = 0;
do {
local_60 = 0.0;
local_5c = 0xbf800000;
local_54 = 0;
local_50 = 0xbf800000;
local_30 = 0;
local_2c = 0;
local_28 = 0;
local_24 = 0;
local_20 = 0;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') {
local_60 = 0.0;
goto LAB_0071f1f3;
}
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
local_60 = (float)*(undefined4 *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_90;
}
local_78 = local_90;
local_78 = CONCAT31((int3)((uint)local_90 >> 8),*(undefined1 *)((int)puVar13 + 3));
local_78._2_2_ = (undefined2)((uint)local_90 >> 0x10);
local_78._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_78._3_1_ = (undefined1)((uint)local_90 >> 0x18);
local_78._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_78);
local_78 = CONCAT13(*(undefined1 *)puVar13,(undefined3)local_78);
_V_memcpy(&local_90,&local_78,4);
iVar8 = *(int *)(param_2 + 0xc);
local_60 = (float)local_90;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071f200;
LAB_0071f5ea:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') {
local_54 = 0;
}
else {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
local_54 = *(undefined4 *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_8c;
}
local_74 = local_8c;
local_74 = CONCAT31((int3)((uint)local_8c >> 8),*(undefined1 *)((int)puVar13 + 3));
local_74._2_2_ = (undefined2)((uint)local_8c >> 0x10);
local_74._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_74._3_1_ = (undefined1)((uint)local_8c >> 0x18);
local_74._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_74);
local_74 = CONCAT13(*(undefined1 *)puVar13,(undefined3)local_74);
_V_memcpy(&local_8c,&local_74,4);
iVar8 = *(int *)(param_2 + 0xc);
local_54 = local_8c;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
}
else {
local_90 = 0;
/* try { // try from 0071f1e8 to 0071f706 has its CatchHandler @ 0071fb53 */
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_90);
local_60 = (float)local_90;
LAB_0071f1f3:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071f5ea;
LAB_0071f200:
local_8c = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_8c);
local_54 = local_8c;
}
CUtlBuffer::Get((CUtlBuffer *)param_2,local_48,0xc);
CUtlBuffer::Get((CUtlBuffer *)param_2,local_3c,0xc);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 != '\0') {
bVar7 = *(byte *)(*(int *)param_2 + (*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20))
);
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
goto LAB_0071f28d;
}
}
else {
local_91 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_91);
bVar7 = local_91;
LAB_0071f28d:
uVar14 = (uint)bVar7;
if (uVar14 != 0) {
iVar8 = 0;
do {
while ((*(byte *)(param_2 + 0x15) & 1) != 0) {
local_88 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_88);
LAB_0071f2c4:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071f3e0;
LAB_0071f2ce:
local_84 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_84);
LAB_0071f2ec:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071f460;
LAB_0071f2f6:
local_80 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_80);
LAB_0071f314:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071f4e0;
LAB_0071f31e:
local_7c = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_7c);
LAB_0071f33c:
iVar8 = iVar8 + 1;
if ((int)uVar14 <= iVar8) goto LAB_0071f560;
}
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071f2c4;
iVar12 = *(int *)(param_2 + 0xc);
uVar16 = *(undefined4 *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_88 = uVar16;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_88._3_1_ = (undefined1)((uint)uVar16 >> 0x18);
local_70 = local_88._3_1_;
local_88._2_1_ = (undefined1)((uint)uVar16 >> 0x10);
local_6f = local_88._2_1_;
local_88._1_1_ = (undefined1)((uint)uVar16 >> 8);
local_6e = local_88._1_1_;
local_88._0_1_ = (undefined1)uVar16;
local_6d = (undefined1)local_88;
_V_memcpy(&local_88,&local_70,4);
iVar12 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071f2ce;
LAB_0071f3e0:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071f2ec;
iVar12 = *(int *)(param_2 + 0xc);
uVar16 = *(undefined4 *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_84 = uVar16;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_84._3_1_ = (undefined1)((uint)uVar16 >> 0x18);
local_6c = local_84._3_1_;
local_84._2_1_ = (undefined1)((uint)uVar16 >> 0x10);
local_6b = local_84._2_1_;
local_84._1_1_ = (undefined1)((uint)uVar16 >> 8);
local_6a = local_84._1_1_;
local_84._0_1_ = (undefined1)uVar16;
local_69 = (undefined1)local_84;
_V_memcpy(&local_84,&local_6c,4);
iVar12 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071f2f6;
LAB_0071f460:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071f314;
iVar12 = *(int *)(param_2 + 0xc);
uVar16 = *(undefined4 *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_80 = uVar16;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_80._3_1_ = (undefined1)((uint)uVar16 >> 0x18);
local_80._2_1_ = (undefined1)((uint)uVar16 >> 0x10);
local_80._1_1_ = (undefined1)((uint)uVar16 >> 8);
local_80._0_1_ = (undefined1)uVar16;
local_68 = CONCAT13((undefined1)local_80,
CONCAT12(local_80._1_1_,CONCAT11(local_80._2_1_,local_80._3_1_))
);
_V_memcpy(&local_80,&local_68,4);
iVar12 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071f31e;
LAB_0071f4e0:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 == '\0') goto LAB_0071f33c;
iVar12 = *(int *)(param_2 + 0xc);
uVar16 = *(undefined4 *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_7c = uVar16;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_7c._3_1_ = (undefined1)((uint)uVar16 >> 0x18);
local_7c._2_1_ = (undefined1)((uint)uVar16 >> 0x10);
local_64._0_2_ = CONCAT11(local_7c._2_1_,local_7c._3_1_);
local_7c._1_1_ = (undefined1)((uint)uVar16 >> 8);
local_64._0_3_ = CONCAT12(local_7c._1_1_,(ushort)local_64);
local_7c._0_1_ = (undefined1)uVar16;
local_64 = CONCAT13((undefined1)local_7c,(undefined3)local_64);
_V_memcpy(&local_7c,&local_64,4);
iVar12 = *(int *)(param_2 + 0xc);
}
iVar8 = iVar8 + 1;
*(int *)(param_2 + 0xc) = iVar12 + 4;
} while (iVar8 < (int)uVar14);
}
}
LAB_0071f560:
local_24 = 0;
CUtlMemory<SpotOrder,int>::Purge((CUtlMemory<SpotOrder,int> *)&local_30);
local_20 = local_30;
CUtlMemory<SpotOrder,int>::Purge((CUtlMemory<SpotOrder,int> *)&local_30);
local_a0 = local_a0 + 1;
if (local_a0 == local_a8) {
return 0;
}
} while( true );
}
local_ac = 0;
if (local_a8 != 0) {
do {
puVar10 = ::operator_new(0x44);
*puVar10 = 0;
puVar10[1] = 0xbf800000;
puVar10[3] = 0;
puVar10[4] = 0xbf800000;
puVar10[0xc] = 0;
puVar10[0xd] = 0;
puVar10[0xe] = 0;
puVar10[0xf] = 0;
puVar10[0x10] = 0;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 == '\0') goto LAB_0071e510;
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
*puVar10 = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071e51c;
LAB_0071e950:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
uVar14 = 0;
if (cVar6 != '\0') {
uVar14 = (uint)*(byte *)(*(int *)param_2 +
(*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar14 = local_64;
LAB_0071e510:
*puVar10 = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071e950;
LAB_0071e51c:
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
uVar14 = (uint)local_60 & 0xff;
}
puVar10[2] = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 == '\0') goto LAB_0071e569;
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
puVar10[3] = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071e576;
LAB_0071e898:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
uVar14 = 0;
if (cVar6 != '\0') {
uVar14 = (uint)*(byte *)(*(int *)param_2 +
(*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar14 = local_64;
LAB_0071e569:
puVar10[3] = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071e898;
LAB_0071e576:
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
uVar14 = (uint)local_60 & 0xff;
}
puVar10[5] = uVar14;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
if (cVar6 != '\0') {
SVar2 = *(SpotOrder *)
(*(int *)param_2 + (*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
goto LAB_0071e5c1;
}
}
else {
local_60 = (float)((uint)local_60 & 0xffffff00);
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_60);
SVar2 = local_60._0_1_;
LAB_0071e5c1:
if (SVar2 != (SpotOrder)0x0) {
iVar8 = 1;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar16 = 0;
if (cVar6 == '\0') goto LAB_0071e609;
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar12 = *(int *)(param_2 + 0xc);
local_5c = *(undefined4 *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2)
;
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_68;
}
local_64 = local_68;
local_64 = CONCAT31((int3)((uint)local_68 >> 8),*(undefined1 *)((int)puVar13 + 3))
;
local_64._2_2_ = (undefined2)((uint)local_68 >> 0x10);
local_64._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3))
;
local_64._3_1_ = (undefined1)((uint)local_68 >> 0x18);
local_64._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(ushort)local_64);
local_64 = CONCAT13(*(undefined1 *)puVar13,(undefined3)local_64);
_V_memcpy(&local_68,&local_64,4);
iVar12 = *(int *)(param_2 + 0xc);
local_5c = local_68;
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071e616;
LAB_0071e6d4:
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,1);
local_60 = 0.0;
if (cVar6 != '\0') {
bVar7 = *(byte *)(*(int *)param_2 +
(*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)));
*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
goto LAB_0071e635;
}
}
else {
local_68 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_68);
uVar16 = local_68;
LAB_0071e609:
local_5c = uVar16;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071e6d4;
LAB_0071e616:
local_64 = local_64 & 0xffffff00;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
bVar7 = (byte)local_64;
LAB_0071e635:
local_60 = ((float)bVar7 + 0.0) * 0.003921569;
}
iVar8 = iVar8 + 1;
CUtlVector<SpotOrder,CUtlMemory<SpotOrder,int>>::InsertBefore
((CUtlVector<SpotOrder,CUtlMemory<SpotOrder,int>> *)(puVar10 + 0xc),
puVar10[0xf],(SpotOrder *)&local_60);
} while (iVar8 != (byte)SVar2 + 1);
}
}
piVar4 = *(int **)(param_1 + 0xd0);
iVar12 = *piVar4;
iVar8 = iVar12 + 1;
if (piVar4 == &CUtlVectorUltraConservative<SpotEncounter*,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData) {
puVar13 = malloc(iVar8 * 4 + 4);
*(undefined4 **)(param_1 + 0xd0) = puVar13;
*puVar13 = 0;
pvVar9 = *(void **)(param_1 + 0xd0);
}
else {
sVar1 = iVar8 * 4 + 4;
iVar8 = malloc_usable_size(piVar4);
if (iVar8 < (int)sVar1) {
pvVar9 = realloc(*(void **)(param_1 + 0xd0),sVar1);
*(void **)(param_1 + 0xd0) = pvVar9;
}
else {
pvVar9 = *(void **)(param_1 + 0xd0);
}
}
local_ac = local_ac + 1;
*(uint **)((int)pvVar9 + iVar12 * 4 + 4) = puVar10;
**(int **)(param_1 + 0xd0) = **(int **)(param_1 + 0xd0) + 1;
} while (local_ac != local_a8);
}
}
if (param_3 < 5) {
return 0;
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,2);
uVar16 = 0;
if (cVar6 == '\0') goto LAB_0071ef89;
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar3 = *(ushort *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
uVar5 = local_60._2_2_;
local_60 = (float)CONCAT22(local_60._2_2_,(ushort)local_64);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 1));
local_60._0_2_ = CONCAT11(*(undefined1 *)puVar13,*(undefined1 *)((int)puVar13 + 1));
local_60 = (float)CONCAT22(uVar5,(undefined2)local_60);
_V_memcpy(&local_64,&local_60,2);
iVar8 = *(int *)(param_2 + 0xc);
uVar3 = (ushort)local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 2;
}
else {
local_64 = local_64 & 0xffff0000;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar3 = (ushort)local_64;
}
uVar16 = 0;
if ((uVar3 != 0) && ((int)(uVar3 - 1) < DAT_00fe6b50)) {
uVar16 = *(undefined4 *)(placeDirectory + (uVar3 - 1) * 4);
}
LAB_0071ef89:
*(undefined4 *)(param_1 + 0x94) = uVar16;
if (6 < param_3) {
local_a8 = 0;
pCVar17 = param_1;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
local_a0 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3));
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
local_a0 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
goto LAB_0071efd9;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
local_a0 = local_64;
LAB_0071efd9:
local_a4 = 0;
if (local_a0 != 0) {
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
uVar14 = 0;
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
if (cVar6 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar8 - *(int *)(param_2 + 0x20)));
}
else {
puVar13 = (undefined4 *)
((*(int *)(param_2 + 0xc) - *(int *)(param_2 + 0x20)) + *(int *)param_2)
;
if (puVar13 == (undefined4 *)0x0) {
puVar13 = &local_64;
}
local_60 = (float)local_64;
local_60._1_3_ = (undefined3)(local_64 >> 8);
local_60 = (float)CONCAT31(local_60._1_3_,*(undefined1 *)((int)puVar13 + 3));
local_60._2_2_ = (undefined2)(local_64 >> 0x10);
local_60._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar13 + 2),*(undefined1 *)((int)puVar13 + 3))
;
local_60._3_1_ = (undefined1)(local_64 >> 0x18);
local_60._0_3_ = CONCAT12(*(undefined1 *)((int)puVar13 + 1),(undefined2)local_60);
local_60 = (float)CONCAT13(*(undefined1 *)puVar13,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar8 = *(int *)(param_2 + 0xc);
uVar14 = local_64;
}
*(int *)(param_2 + 0xc) = iVar8 + 4;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%u",&local_64);
uVar14 = local_64;
}
piVar4 = *(int **)(pCVar17 + 0x68);
iVar8 = *piVar4;
if (iVar8 < 1) {
LAB_0071f03d:
if (piVar4 == &CUtlVectorUltraConservative<NavLadderConnect,CUtlVectorUltraConservativeAllocator>
::StaticData()::staticData) {
puVar13 = malloc((iVar8 + 1) * 4 + 4);
*(undefined4 **)(pCVar17 + 0x68) = puVar13;
*puVar13 = 0;
pvVar9 = *(void **)(pCVar17 + 0x68);
}
else {
sVar1 = (iVar8 + 1) * 4 + 4;
iVar12 = malloc_usable_size(piVar4);
if (iVar12 < (int)sVar1) {
pvVar9 = realloc(*(void **)(pCVar17 + 0x68),sVar1);
*(void **)(pCVar17 + 0x68) = pvVar9;
}
else {
pvVar9 = *(void **)(pCVar17 + 0x68);
}
}
*(uint *)((int)pvVar9 + iVar8 * 4 + 4) = uVar14;
**(int **)(pCVar17 + 0x68) = **(int **)(pCVar17 + 0x68) + 1;
}
else if (uVar14 != piVar4[1]) {
iVar12 = 0;
do {
if (iVar12 + 1 == iVar8) goto LAB_0071f03d;
iVar11 = iVar12 + 2;
iVar12 = iVar12 + 1;
} while (piVar4[iVar11] != uVar14);
}
local_a4 = local_a4 + 1;
} while (local_a4 != local_a0);
}
}
local_a8 = local_a8 + 1;
pCVar17 = pCVar17 + 4;
} while (local_a8 != 2);
if (param_3 != 7) {
iVar8 = 0;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
iVar12 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_64 = uVar14;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_64._3_1_ = (undefined1)(uVar14 >> 0x18);
local_64._2_1_ = (undefined1)(uVar14 >> 0x10);
local_60._0_2_ = CONCAT11(local_64._2_1_,local_64._3_1_);
local_64._1_1_ = (undefined1)(uVar14 >> 8);
local_60._0_3_ = CONCAT12(local_64._1_1_,(undefined2)local_60);
local_64._0_1_ = (byte)uVar14;
local_60 = (float)CONCAT13((byte)local_64,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar12 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
uVar14 = local_64;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_64);
uVar14 = local_64;
}
*(uint *)(param_1 + iVar8 * 4 + 0xd4) = uVar14;
iVar8 = iVar8 + 1;
} while (iVar8 != 2);
if (10 < param_3) {
iVar8 = 0;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar6 = CUtlBuffer::CheckGet((CUtlBuffer *)param_2,4);
uVar14 = 0;
if (cVar6 != '\0') {
iVar12 = *(int *)(param_2 + 0xc);
uVar14 = *(uint *)(*(int *)param_2 + (iVar12 - *(int *)(param_2 + 0x20)));
local_64 = uVar14;
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
local_64._3_1_ = (undefined1)(uVar14 >> 0x18);
local_64._2_1_ = (undefined1)(uVar14 >> 0x10);
local_60._0_2_ = CONCAT11(local_64._2_1_,local_64._3_1_);
local_64._1_1_ = (undefined1)(uVar14 >> 8);
local_60._0_3_ = CONCAT12(local_64._1_1_,(undefined2)local_60);
local_64._0_1_ = (byte)uVar14;
local_60 = (float)CONCAT13((byte)local_64,(undefined3)local_60);
_V_memcpy(&local_64,&local_60,4);
iVar12 = *(int *)(param_2 + 0xc);
}
*(int *)(param_2 + 0xc) = iVar12 + 4;
uVar14 = local_64;
}
}
else {
local_64 = 0;
CUtlBuffer::Scanf((CUtlBuffer *)param_2,"%f",&local_64);
uVar14 = local_64;
}
*(uint *)(param_1 + iVar8 * 4 + 0xdc) = uVar14;
iVar8 = iVar8 + 1;
} while (iVar8 != 4);
RecomputeAverageLightIntensity((CNavArea *)param_1);
}
}
}
return 0;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.