IDA Pro / Hex Rays Decompiler Organized source by C/C++ [Class] and by prefix
83 lines
1.4 KiB
C++
83 lines
1.4 KiB
C++
#include "pinball.h"
|
|
|
|
//----- (01012E51) --------------------------------------------------------
|
|
int __stdcall objlist_add_object(_DWORD *a1, int a2)
|
|
{
|
|
int v2; // ecx
|
|
|
|
v2 = a1[1];
|
|
if ( v2 >= *a1 )
|
|
return 0;
|
|
a1[v2 + 2] = a2;
|
|
return ++a1[1];
|
|
}
|
|
|
|
//----- (01012E7A) --------------------------------------------------------
|
|
signed int __stdcall objlist_delete_object(int a1, int a2)
|
|
{
|
|
int v2; // edx
|
|
int v3; // ecx
|
|
_DWORD *v4; // esi
|
|
|
|
v2 = *(_DWORD *)(a1 + 4);
|
|
v3 = v2 - 1;
|
|
if ( v2 - 1 < 0 )
|
|
return 0;
|
|
v4 = (_DWORD *)(a1 + 4 * v3 + 8);
|
|
while ( *v4 != a2 )
|
|
{
|
|
--v3;
|
|
--v4;
|
|
if ( v3 < 0 )
|
|
return 0;
|
|
}
|
|
*(_DWORD *)(a1 + 4 * v3 + 8) = *(_DWORD *)(a1 + 4 * v2 + 4);
|
|
--*(_DWORD *)(a1 + 4);
|
|
return 1;
|
|
}
|
|
|
|
//----- (01012EBE) --------------------------------------------------------
|
|
_DWORD *__stdcall objlist_new(int a1)
|
|
{
|
|
_DWORD *result; // eax
|
|
|
|
result = (_DWORD *)memoryallocate(4 * a1 + 12);
|
|
if ( result )
|
|
{
|
|
result[1] = 0;
|
|
*result = a1;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
//----- (01012EE8) --------------------------------------------------------
|
|
int *__stdcall objlist_grow(int *a1, int a2)
|
|
{
|
|
int *v2; // esi
|
|
int v3; // eax
|
|
int *v4; // eax
|
|
|
|
v2 = a1;
|
|
if ( a1 )
|
|
{
|
|
v3 = a2 + a1[1];
|
|
if ( v3 > *a1 )
|
|
{
|
|
v4 = (int *)memoryrealloc((int)a1, 4 * v3 + 12);
|
|
if ( v4 )
|
|
{
|
|
v2 = v4;
|
|
*v4 = a2 + v4[1];
|
|
}
|
|
}
|
|
}
|
|
return v2;
|
|
}
|
|
|
|
//----- (01013C6F) --------------------------------------------------------
|
|
void __stdcall objlist_destroy(int a1)
|
|
{
|
|
if ( a1 )
|
|
memoryfree(a1);
|
|
}
|