Files

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;
}