183 lines
4.6 KiB
C
183 lines
4.6 KiB
C
// 0007d150 CValidator::Pop
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
|
|
|
|
void CValidator::Pop(int param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
code *pcVar5;
|
|
char cVar6;
|
|
uint *puVar7;
|
|
uint uVar8;
|
|
int *piVar9;
|
|
int *piVar10;
|
|
int *piVar11;
|
|
uint uVar12;
|
|
uint uVar13;
|
|
uint uVar14;
|
|
int iVar15;
|
|
undefined4 *local_54;
|
|
int local_20 [4];
|
|
|
|
if (DAT_0012c7b0 == 0) {
|
|
local_20[0] = 0;
|
|
if (*(char *)(param_1 + 0x85c) != '\0') {
|
|
return;
|
|
}
|
|
if (*(char *)(param_1 + 0x35) != '\0') {
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
local_20[0] = FUN_00083980("CValidator::Pop",0,local_20);
|
|
if ((*(char *)(param_1 + 0x85c) != '\0') || (*(char *)(param_1 + 0x35) != '\0')) {
|
|
if (local_20[0] == 0) {
|
|
return;
|
|
}
|
|
FUN_0007fd60(local_20[0]);
|
|
return;
|
|
}
|
|
}
|
|
puVar7 = *(uint **)(param_1 + 8);
|
|
if (puVar7 == (uint *)0x0) {
|
|
cVar6 = thunk_FUN_0006a180("/data/src/tier0/validator.cpp",0x101,"NULL != m_pValObjectCur");
|
|
if ((cVar6 == '\0') && (cVar6 = FUN_00068dd0(), cVar6 != '\0')) {
|
|
pcVar5 = (code *)swi(3);
|
|
(*pcVar5)();
|
|
return;
|
|
}
|
|
puVar7 = *(uint **)(param_1 + 8);
|
|
}
|
|
uVar1 = puVar7[3];
|
|
*(uint *)(param_1 + 8) = uVar1;
|
|
if (puVar7[10] == 0 && puVar7[9] == 0) {
|
|
piVar2 = *(int **)(param_1 + 0xc);
|
|
uVar8 = puVar7[1] ^ *puVar7 ^ uVar1;
|
|
uVar13 = piVar2[1];
|
|
iVar3 = *piVar2;
|
|
uVar12 = uVar8 % uVar13;
|
|
local_54 = (undefined4 *)(iVar3 + uVar12 * 4);
|
|
piVar10 = (int *)*local_54;
|
|
if (piVar10 != (int *)0x0) {
|
|
uVar14 = ((int *)*piVar10)[5];
|
|
piVar4 = (int *)*piVar10;
|
|
piVar11 = piVar10;
|
|
while ((((piVar9 = piVar4, uVar8 != uVar14 || (puVar7[1] != piVar9[1])) ||
|
|
(*puVar7 != piVar9[2])) || (uVar1 != piVar9[3]))) {
|
|
piVar4 = (int *)*piVar9;
|
|
if ((piVar4 == (int *)0x0) ||
|
|
(uVar14 = piVar4[5], piVar11 = piVar9, uVar12 != uVar14 % uVar13)) goto LAB_0007d2f7;
|
|
}
|
|
iVar15 = *piVar9;
|
|
if (piVar10 == piVar11) {
|
|
piVar10 = piVar11;
|
|
if (iVar15 != 0) {
|
|
uVar13 = *(uint *)(iVar15 + 0x14) % uVar13;
|
|
if (uVar12 == uVar13) goto LAB_0007d2dd;
|
|
*(int **)(iVar3 + uVar13 * 4) = piVar11;
|
|
local_54 = (undefined4 *)(uVar12 * 4 + *piVar2);
|
|
piVar10 = (int *)*local_54;
|
|
}
|
|
if (piVar10 == piVar2 + 2) {
|
|
piVar2[2] = iVar15;
|
|
}
|
|
*local_54 = 0;
|
|
iVar15 = *piVar9;
|
|
}
|
|
else if ((iVar15 != 0) && (uVar13 = *(uint *)(iVar15 + 0x14) % uVar13, uVar12 != uVar13)) {
|
|
*(int **)(iVar3 + uVar13 * 4) = piVar11;
|
|
iVar15 = *piVar9;
|
|
}
|
|
LAB_0007d2dd:
|
|
*piVar11 = iVar15;
|
|
FUN_000ed6e0(piVar9);
|
|
piVar2[3] = piVar2[3] + -1;
|
|
}
|
|
LAB_0007d2f7:
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1;
|
|
}
|
|
if (local_20[0] != 0) {
|
|
FUN_0007fd60(local_20[0]);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0007d3a0 CValidator::IsClaimed
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
|
|
|
|
undefined4 CValidator::IsClaimed(int param_1,int param_2,undefined1 param_3)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined4 *puVar2;
|
|
int local_20 [4];
|
|
|
|
if (DAT_0012c7b0 == 0) {
|
|
local_20[0] = 0;
|
|
if ((param_2 == 0) || (puVar2 = *(undefined4 **)(param_1 + 0x860), puVar2 == (undefined4 *)0x0))
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
else {
|
|
local_20[0] = FUN_00083980("CValidator::IsClaimed",0,local_20);
|
|
if ((param_2 == 0) || (puVar2 = *(undefined4 **)(param_1 + 0x860), puVar2 == (undefined4 *)0x0))
|
|
{
|
|
uVar1 = 0;
|
|
goto LAB_0007d3f7;
|
|
}
|
|
}
|
|
uVar1 = (**(code **)*puVar2)(puVar2,param_2,param_3);
|
|
LAB_0007d3f7:
|
|
if (local_20[0] != 0) {
|
|
FUN_0007fd60(local_20[0]);
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
// 0007d470 CValidator::ClaimUntrackedMemory
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
|
|
|
|
void CValidator::ClaimUntrackedMemory(int param_1,uint param_2)
|
|
|
|
{
|
|
int local_20 [4];
|
|
|
|
if (DAT_0012c7b0 == 0) {
|
|
local_20[0] = 0;
|
|
}
|
|
else {
|
|
local_20[0] = FUN_00083980("CValidator::ClaimUntrackedMemory",0,local_20);
|
|
}
|
|
if (*(char *)(param_1 + 0x85c) == '\0') {
|
|
if (*(char *)(param_1 + 0x35) == '\0') {
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
FUN_0007fa80(*(int *)(param_1 + 8),param_2);
|
|
}
|
|
if (local_20[0] == 0) {
|
|
return;
|
|
}
|
|
FUN_0007fd60(local_20[0]);
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
*(ulonglong *)(param_1 + 0x848) = *(longlong *)(param_1 + 0x848) + (ulonglong)param_2;
|
|
}
|
|
if (local_20[0] == 0) {
|
|
return;
|
|
}
|
|
FUN_0007fd60(local_20[0]);
|
|
return;
|
|
}
|
|
|
|
|