958 lines
27 KiB
C
958 lines
27 KiB
C
// 002527f0 CMsgJSExecutePromise::vfunction11
|
|
|
|
undefined4 __thiscall CMsgJSExecutePromise::vfunction11(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
return *(undefined4 *)((long)&this[2].vftablePtr + 4);
|
|
}
|
|
|
|
|
|
// 00263be0 CMsgJSExecutePromise::vfunction10
|
|
|
|
long __thiscall CMsgJSExecutePromise::vfunction10(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
byte bVar1;
|
|
int iVar2;
|
|
CMsgJSExecutePromise_vftable *pCVar3;
|
|
uint uVar4;
|
|
ulong uVar5;
|
|
long lVar6;
|
|
long lVar7;
|
|
|
|
lVar7 = 0;
|
|
pCVar3 = this[2].vftablePtr;
|
|
if (((ulong)pCVar3 & 0x1f) != 0) {
|
|
if (((ulong)pCVar3 & 1) != 0) {
|
|
lVar7 = *(long *)(*(long *)((ulong)this[3].vftablePtr & 0xfffffffffffffffe) + -0x18);
|
|
uVar4 = (uint)lVar7 | 1;
|
|
iVar2 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
|
|
}
|
|
}
|
|
lVar7 = lVar7 + 1 + (ulong)(iVar2 * 9 + 0x49U >> 6);
|
|
}
|
|
if (((ulong)pCVar3 & 2) != 0) {
|
|
lVar6 = FUN_002636d0(this[4].vftablePtr);
|
|
uVar4 = (uint)lVar6 | 1;
|
|
iVar2 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
|
|
}
|
|
}
|
|
lVar7 = (ulong)(iVar2 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar7;
|
|
}
|
|
if (((ulong)pCVar3 & 4) != 0) {
|
|
uVar4 = *(uint *)&this[5].vftablePtr | 1;
|
|
iVar2 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
|
|
}
|
|
}
|
|
lVar7 = lVar7 + (ulong)((iVar2 * 9 + 0x49U >> 6) + 1);
|
|
}
|
|
if (((ulong)pCVar3 & 8) != 0) {
|
|
uVar4 = *(uint *)((long)&this[5].vftablePtr + 4) | 1;
|
|
iVar2 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
|
|
}
|
|
}
|
|
lVar7 = lVar7 + (ulong)((iVar2 * 9 + 0x49U >> 6) + 1);
|
|
}
|
|
if (((ulong)pCVar3 & 0x10) != 0) {
|
|
uVar5 = (ulong)this[6].vftablePtr | 1;
|
|
lVar6 = 0x3f;
|
|
if (uVar5 != 0) {
|
|
for (; uVar5 >> lVar6 == 0; lVar6 = lVar6 + -1) {
|
|
}
|
|
}
|
|
lVar7 = lVar7 + (ulong)(((uint)(lVar6 * 9 + 0x49U >> 6) & 0x3ffffff) + 1);
|
|
bVar1 = *(byte *)&this[1].vftablePtr;
|
|
goto joined_r0x00263c95;
|
|
}
|
|
}
|
|
bVar1 = *(byte *)&this[1].vftablePtr;
|
|
joined_r0x00263c95:
|
|
if ((bVar1 & 1) != 0) {
|
|
lVar7 = FUN_00359fe2(this + 1,lVar7,(undefined1 *)((long)&this[2].vftablePtr + 4));
|
|
return lVar7;
|
|
}
|
|
*(int *)((long)&this[2].vftablePtr + 4) = (int)lVar7;
|
|
return lVar7;
|
|
}
|
|
|
|
|
|
// 0026bc30 CMsgJSExecutePromise::vfunction13
|
|
|
|
byte * __thiscall
|
|
CMsgJSExecutePromise::vfunction13(CMsgJSExecutePromise *this,byte *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
CMsgJSExecutePromise_vftable *pCVar1;
|
|
CMsgJSExecutePromise_vftable *pCVar2;
|
|
byte *pbVar3;
|
|
uint uVar4;
|
|
byte *pbVar5;
|
|
uint uVar6;
|
|
ulong uVar7;
|
|
ulong uVar8;
|
|
|
|
pCVar2 = this[2].vftablePtr;
|
|
if (((ulong)pCVar2 & 4) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
uVar6 = *(uint *)&this[5].vftablePtr;
|
|
*param_1 = 8;
|
|
if (uVar6 < 0x80) {
|
|
param_1[1] = (byte)uVar6;
|
|
param_1 = param_1 + 2;
|
|
}
|
|
else {
|
|
param_1[1] = (byte)uVar6 | 0x80;
|
|
pbVar3 = param_1 + 2;
|
|
uVar4 = uVar6 >> 7;
|
|
if (uVar6 < 0x4000) {
|
|
param_1[2] = (byte)(uVar6 >> 7);
|
|
param_1 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar5 = pbVar3;
|
|
uVar6 = uVar4 >> 7;
|
|
*pbVar5 = (byte)uVar4 | 0x80;
|
|
pbVar3 = pbVar5 + 1;
|
|
uVar4 = uVar6;
|
|
} while (0x7f < uVar6);
|
|
param_1 = pbVar5 + 2;
|
|
pbVar5[1] = (byte)uVar6;
|
|
}
|
|
}
|
|
}
|
|
if (((ulong)pCVar2 & 8) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
uVar6 = *(uint *)((long)&this[5].vftablePtr + 4);
|
|
*param_1 = 0x10;
|
|
if (uVar6 < 0x80) {
|
|
param_1[1] = (byte)uVar6;
|
|
param_1 = param_1 + 2;
|
|
}
|
|
else {
|
|
param_1[1] = (byte)uVar6 | 0x80;
|
|
pbVar3 = param_1 + 2;
|
|
uVar4 = uVar6 >> 7;
|
|
if (uVar6 < 0x4000) {
|
|
param_1[2] = (byte)(uVar6 >> 7);
|
|
param_1 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar5 = pbVar3;
|
|
uVar6 = uVar4 >> 7;
|
|
*pbVar5 = (byte)uVar4 | 0x80;
|
|
pbVar3 = pbVar5 + 1;
|
|
uVar4 = uVar6;
|
|
} while (0x7f < uVar6);
|
|
param_1 = pbVar5 + 2;
|
|
pbVar5[1] = (byte)uVar6;
|
|
}
|
|
}
|
|
}
|
|
if (((ulong)pCVar2 & 0x10) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
pCVar1 = this[6].vftablePtr;
|
|
*param_1 = 0x18;
|
|
if (pCVar1 < (CMsgJSExecutePromise_vftable *)0x80) {
|
|
param_1[1] = (byte)pCVar1;
|
|
param_1 = param_1 + 2;
|
|
}
|
|
else {
|
|
param_1[1] = (byte)pCVar1 | 0x80;
|
|
pbVar3 = param_1 + 2;
|
|
uVar7 = (ulong)pCVar1 >> 7;
|
|
if (pCVar1 < (CMsgJSExecutePromise_vftable *)0x4000) {
|
|
param_1[2] = (byte)((ulong)pCVar1 >> 7);
|
|
param_1 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar5 = pbVar3;
|
|
uVar8 = uVar7 >> 7;
|
|
*pbVar5 = (byte)uVar7 | 0x80;
|
|
pbVar3 = pbVar5 + 1;
|
|
uVar7 = uVar8;
|
|
} while (0x7f < uVar8);
|
|
param_1 = pbVar5 + 2;
|
|
pbVar5[1] = (byte)uVar8;
|
|
}
|
|
}
|
|
}
|
|
if (((ulong)pCVar2 & 1) != 0) {
|
|
param_1 = (byte *)FUN_002680e0(param_2,4,(ulong)this[3].vftablePtr & 0xfffffffffffffffe,param_1)
|
|
;
|
|
}
|
|
if (((ulong)pCVar2 & 2) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
pCVar2 = this[4].vftablePtr;
|
|
*param_1 = 0x2a;
|
|
uVar6 = *(uint *)((long)&pCVar2->vfunction1 + 4);
|
|
if (uVar6 < 0x80) {
|
|
param_1[1] = (byte)uVar6;
|
|
pbVar3 = param_1 + 2;
|
|
}
|
|
else {
|
|
param_1[1] = (byte)uVar6 | 0x80;
|
|
pbVar3 = param_1 + 2;
|
|
uVar4 = uVar6 >> 7;
|
|
if (uVar6 < 0x4000) {
|
|
param_1[2] = (byte)(uVar6 >> 7);
|
|
pbVar3 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar5 = pbVar3;
|
|
uVar6 = uVar4 >> 7;
|
|
*pbVar5 = (byte)uVar4 | 0x80;
|
|
pbVar3 = pbVar5 + 1;
|
|
uVar4 = uVar6;
|
|
} while (0x7f < uVar6);
|
|
pbVar3 = pbVar5 + 2;
|
|
pbVar5[1] = (byte)uVar6;
|
|
}
|
|
}
|
|
param_1 = (byte *)FUN_0026b0d0(pCVar2,pbVar3,param_2);
|
|
}
|
|
if (((ulong)this[1].vftablePtr & 1) != 0) {
|
|
pbVar3 = (byte *)FUN_00359676(((ulong)this[1].vftablePtr & 0xfffffffffffffffc) + 8,param_1,
|
|
param_2);
|
|
return pbVar3;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
// 0026cd60 CMsgJSExecutePromise::vfunction20
|
|
|
|
undefined1 [16] __thiscall CMsgJSExecutePromise::vfunction20(void)
|
|
|
|
{
|
|
FUN_0033e2d0(&DAT_00466400,0);
|
|
return *(undefined1 (*) [16])(PTR_DAT_00466448 + 0x7c0);
|
|
}
|
|
|
|
|
|
// 002748e0 CMsgJSExecutePromise::vfunction5
|
|
|
|
void __thiscall CMsgJSExecutePromise::vfunction5(CMsgJSExecutePromise *this,long param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
if (param_1 == 0) {
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x38);
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
}
|
|
else {
|
|
puVar1 = (undefined8 *)thunk_FUN_002d7d08(param_1,0x38,&typeinfo);
|
|
puVar1[1] = param_1;
|
|
*puVar1 = &vftable;
|
|
}
|
|
puVar1[2] = 0;
|
|
puVar1[4] = 0;
|
|
puVar1[5] = 0;
|
|
puVar1[6] = 0;
|
|
puVar1[3] = &DAT_0046ab18;
|
|
return;
|
|
}
|
|
|
|
|
|
// 002748f0 CMsgJSExecutePromise::CMsgJSExecutePromise_Constructor_or_Destructor
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00274866) */
|
|
|
|
void __thiscall
|
|
CMsgJSExecutePromise::CMsgJSExecutePromise_Constructor_or_Destructor(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x38);
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
puVar1[2] = 0;
|
|
puVar1[4] = 0;
|
|
puVar1[5] = 0;
|
|
puVar1[6] = 0;
|
|
puVar1[3] = &DAT_0046ab18;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0028e7a0 CMsgJSExecutePromise::vfunction12
|
|
|
|
byte * __thiscall
|
|
CMsgJSExecutePromise::vfunction12(CMsgJSExecutePromise *this,byte *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
byte bVar1;
|
|
undefined8 uVar2;
|
|
byte *pbVar3;
|
|
long lVar4;
|
|
ulong uVar5;
|
|
CMsgJSExecutePromise_vftable *extraout_RAX;
|
|
char extraout_DL;
|
|
char cVar6;
|
|
uint uVar7;
|
|
int iVar8;
|
|
CMsgJSExecutePromise_vftable *pCVar9;
|
|
uint uVar10;
|
|
long in_FS_OFFSET;
|
|
undefined1 auVar11 [16];
|
|
undefined4 uStack_38;
|
|
undefined4 uStack_34;
|
|
long lStack_30;
|
|
|
|
uVar10 = 0;
|
|
lStack_30 = *(long *)(in_FS_OFFSET + 0x28);
|
|
LAB_0028e7cd:
|
|
pbVar3 = param_1;
|
|
if ((byte *)*param_2 <= param_1) goto LAB_0028e8d8;
|
|
LAB_0028e7d7:
|
|
bVar1 = *param_1;
|
|
uVar5 = (ulong)bVar1;
|
|
pbVar3 = param_1 + 1;
|
|
if (0x7f < bVar1) {
|
|
pbVar3 = param_1 + 2;
|
|
uVar5 = (ulong)((uint)bVar1 + (param_1[1] - 1) * 0x80);
|
|
if (0x7f < param_1[1]) {
|
|
auVar11 = FUN_002ea28a();
|
|
pbVar3 = auVar11._0_8_;
|
|
uVar5 = auVar11._8_8_ & 0xffffffff;
|
|
if (pbVar3 == (byte *)0x0) goto LAB_0028e858;
|
|
}
|
|
}
|
|
uVar7 = (uint)uVar5;
|
|
cVar6 = (char)uVar5;
|
|
switch(uVar5) {
|
|
default:
|
|
if ((uVar7 & 7) == 4) goto LAB_0028ea0a;
|
|
if (uVar7 != 0) goto LAB_0028e9c2;
|
|
iVar8 = -1;
|
|
goto LAB_0028ea0d;
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 0xb:
|
|
case 0xc:
|
|
case 0xd:
|
|
case 0xe:
|
|
case 0xf:
|
|
if (cVar6 == '\b') {
|
|
uVar10 = uVar10 | 4;
|
|
param_1 = (byte *)FUN_002762b0(pbVar3,&uStack_38);
|
|
*(undefined4 *)&this[5].vftablePtr = uStack_38;
|
|
goto joined_r0x0028e970;
|
|
}
|
|
goto LAB_0028ea00;
|
|
case 0x10:
|
|
case 0x11:
|
|
case 0x12:
|
|
case 0x13:
|
|
case 0x14:
|
|
case 0x15:
|
|
case 0x16:
|
|
case 0x17:
|
|
if (cVar6 == '\x10') {
|
|
uVar10 = uVar10 | 8;
|
|
param_1 = (byte *)FUN_002762b0(pbVar3,&uStack_38);
|
|
*(undefined4 *)((long)&this[5].vftablePtr + 4) = uStack_38;
|
|
goto joined_r0x0028e970;
|
|
}
|
|
goto LAB_0028ea00;
|
|
case 0x18:
|
|
case 0x19:
|
|
case 0x1a:
|
|
case 0x1b:
|
|
case 0x1c:
|
|
case 0x1d:
|
|
case 0x1e:
|
|
case 0x1f:
|
|
if (cVar6 == '\x18') {
|
|
uVar10 = uVar10 | 0x10;
|
|
param_1 = (byte *)FUN_00276260(pbVar3,&uStack_38);
|
|
this[6].vftablePtr = (CMsgJSExecutePromise_vftable *)CONCAT44(uStack_34,uStack_38);
|
|
goto joined_r0x0028e970;
|
|
}
|
|
goto LAB_0028ea00;
|
|
case 0x20:
|
|
case 0x21:
|
|
case 0x22:
|
|
case 0x23:
|
|
case 0x24:
|
|
case 0x25:
|
|
case 0x26:
|
|
case 0x27:
|
|
if (cVar6 != '\"') goto LAB_0028ea00;
|
|
pCVar9 = this[1].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 1;
|
|
if (((ulong)pCVar9 & 3) == 0) {
|
|
uVar5 = (ulong)pCVar9 & 0xfffffffffffffffc;
|
|
}
|
|
else if (((ulong)pCVar9 & 2) == 0) {
|
|
uVar5 = *(ulong *)((ulong)pCVar9 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar5 = 0;
|
|
}
|
|
uVar2 = FUN_002d7f56(this + 3,uVar5);
|
|
param_1 = (byte *)FUN_002ea63f(uVar2,pbVar3,param_2);
|
|
if (param_1 == (byte *)0x0) goto LAB_0028e858;
|
|
pbVar3 = param_1;
|
|
if ((byte *)*param_2 <= param_1) {
|
|
LAB_0028e8d8:
|
|
iVar8 = (int)((long)pbVar3 - param_2[1]);
|
|
if (iVar8 == *(int *)((long)param_2 + 0x1c)) {
|
|
if ((iVar8 < 1) || (param_2[2] != 0)) goto LAB_0028e85a;
|
|
goto LAB_0028e858;
|
|
}
|
|
pbVar3 = (byte *)FUN_002ea7d8(param_2,(long)pbVar3 - param_2[1] & 0xffffffff,
|
|
*(undefined4 *)((long)param_2 + 0x5c));
|
|
param_1 = pbVar3;
|
|
if (extraout_DL != '\0') goto LAB_0028e85a;
|
|
}
|
|
goto LAB_0028e7d7;
|
|
case 0x28:
|
|
case 0x29:
|
|
case 0x2a:
|
|
case 0x2b:
|
|
case 0x2c:
|
|
case 0x2d:
|
|
case 0x2e:
|
|
case 0x2f:
|
|
break;
|
|
}
|
|
if (cVar6 == '*') {
|
|
pCVar9 = this[4].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 2;
|
|
if (pCVar9 == (CMsgJSExecutePromise_vftable *)0x0) {
|
|
pCVar9 = this[1].vftablePtr;
|
|
if (((ulong)pCVar9 & 3) == 0) {
|
|
uVar5 = (ulong)pCVar9 & 0xfffffffffffffffc;
|
|
}
|
|
else {
|
|
uVar5 = 0;
|
|
if (((ulong)pCVar9 & 2) == 0) {
|
|
uVar5 = *(ulong *)((ulong)pCVar9 & 0xfffffffffffffffc);
|
|
}
|
|
}
|
|
CMsgJSValue::CMsgJSValue_Constructor_or_Destructor(uVar5);
|
|
this[4].vftablePtr = extraout_RAX;
|
|
pCVar9 = extraout_RAX;
|
|
}
|
|
param_1 = (byte *)FUN_0028e0d0(param_2,pCVar9,pbVar3);
|
|
goto joined_r0x0028e970;
|
|
}
|
|
LAB_0028ea00:
|
|
if ((uVar7 & 7) == 4) {
|
|
LAB_0028ea0a:
|
|
iVar8 = uVar7 - 1;
|
|
LAB_0028ea0d:
|
|
*(int *)(param_2 + 10) = iVar8;
|
|
goto LAB_0028e85a;
|
|
}
|
|
LAB_0028e9c2:
|
|
if (((ulong)this[1].vftablePtr & 1) == 0) {
|
|
lVar4 = FUN_002762f0(this + 1);
|
|
}
|
|
else {
|
|
lVar4 = ((ulong)this[1].vftablePtr & 0xfffffffffffffffc) + 8;
|
|
}
|
|
param_1 = (byte *)FUN_003589df(uVar5,lVar4,pbVar3,param_2);
|
|
joined_r0x0028e970:
|
|
if (param_1 == (byte *)0x0) {
|
|
LAB_0028e858:
|
|
pbVar3 = (byte *)0x0;
|
|
LAB_0028e85a:
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | uVar10;
|
|
if (lStack_30 != *(long *)(in_FS_OFFSET + 0x28)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
return pbVar3;
|
|
}
|
|
goto LAB_0028e7cd;
|
|
}
|
|
|
|
|
|
// 00290b60 CMsgJSExecutePromise::~CMsgJSExecutePromise
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00290d80) */
|
|
/* WARNING: Removing unreachable block (ram,0x00290d70) */
|
|
|
|
void __thiscall CMsgJSExecutePromise::~CMsgJSExecutePromise(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
long *plVar5;
|
|
ulong uVar6;
|
|
~CMsgJSExecutePromise *p_Var7;
|
|
~CMsgJSExecutePromise **pp_Var8;
|
|
CMsgJSExecutePromise_vftable *pCVar9;
|
|
long in_FS_OFFSET;
|
|
undefined1 local_41;
|
|
long local_40;
|
|
|
|
local_40 = *(long *)(in_FS_OFFSET + 0x28);
|
|
pCVar9 = this[2].vftablePtr;
|
|
if ((pCVar9 != (CMsgJSExecutePromise_vftable *)0x0) &&
|
|
(this->vftablePtr == (CMsgJSExecutePromise_vftable *)0x0)) {
|
|
iVar4 = *(int *)&pCVar9->~CMsgJSExecutePromise;
|
|
if (0 < iVar4) {
|
|
pp_Var8 = &pCVar9->~CMsgJSExecutePromise;
|
|
do {
|
|
while (p_Var7 = pCVar9->~CMsgJSExecutePromise, p_Var7 == (~CMsgJSExecutePromise *)0x0) {
|
|
LAB_00290c80:
|
|
pCVar9 = (CMsgJSExecutePromise_vftable *)&pCVar9->~CMsgJSExecutePromise;
|
|
if ((CMsgJSExecutePromise_vftable *)(pp_Var8 + iVar4) == pCVar9) goto LAB_00290cb8;
|
|
}
|
|
if (*(code **)(*(long *)p_Var7 + 8) == CMsgJSValue::~CMsgJSValue) {
|
|
plVar5 = *(long **)(p_Var7 + 0x48);
|
|
*(CMsgJSValue_vftable **)p_Var7 = &CMsgJSValue::vftable;
|
|
if ((plVar5 != (long *)&DAT_0046ab18) && (plVar5 != (long *)0x0)) {
|
|
puVar1 = (undefined8 *)(*plVar5 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar5 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&local_41);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar5,8);
|
|
}
|
|
plVar5 = *(long **)(p_Var7 + 0x50);
|
|
if ((plVar5 != (long *)0x0) && (plVar5 != (long *)&DAT_0046ab18)) {
|
|
puVar1 = (undefined8 *)(*plVar5 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar5 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&local_41);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar5,8);
|
|
}
|
|
uVar6 = *(ulong *)(p_Var7 + 8);
|
|
if ((((uVar6 & 1) != 0) && ((uVar6 & 3) != 0)) &&
|
|
(((uVar6 & 2) != 0 || (*(long *)(uVar6 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
}
|
|
CMsgJSValue_JSObjectProperty::~CMsgJSValue_JSObjectProperty
|
|
((CMsgJSValue_JSObjectProperty *)(p_Var7 + 0x30));
|
|
~CMsgJSExecutePromise((CMsgJSExecutePromise *)(p_Var7 + 0x18));
|
|
FUN_0039deb8(p_Var7,0x78);
|
|
goto LAB_00290c80;
|
|
}
|
|
pCVar9 = (CMsgJSExecutePromise_vftable *)&pCVar9->~CMsgJSExecutePromise;
|
|
(**(code **)(*(long *)p_Var7 + 8))(p_Var7);
|
|
} while ((CMsgJSExecutePromise_vftable *)(pp_Var8 + iVar4) != pCVar9);
|
|
LAB_00290cb8:
|
|
pCVar9 = this[2].vftablePtr;
|
|
}
|
|
FUN_0039deb8(pCVar9,(long)*(int *)((long)&this[1].vftablePtr + 4) * 8 + 8);
|
|
}
|
|
this[2].vftablePtr = (CMsgJSExecutePromise_vftable *)0x0;
|
|
if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 00291310 CMsgJSExecutePromise::~CMsgJSExecutePromise
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x002914a8) */
|
|
|
|
void __thiscall CMsgJSExecutePromise::~CMsgJSExecutePromise(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
code *pcVar1;
|
|
code *pcVar2;
|
|
int iVar3;
|
|
CMsgJSExecutePromise_vftable *pCVar4;
|
|
~CMsgJSExecutePromise *p_Var5;
|
|
long in_FS_OFFSET;
|
|
undefined1 uStack_21;
|
|
long lStack_20;
|
|
|
|
pCVar4 = this[3].vftablePtr;
|
|
lStack_20 = *(long *)(in_FS_OFFSET + 0x28);
|
|
this->vftablePtr = &vftable;
|
|
if ((pCVar4 != (CMsgJSExecutePromise_vftable *)0x0) &&
|
|
(pCVar4 != (CMsgJSExecutePromise_vftable *)&DAT_0046ab18)) {
|
|
pcVar1 = pCVar4->~CMsgJSExecutePromise + -0x18;
|
|
if (pcVar1 != (code *)&DAT_0046e8a0) {
|
|
LOCK();
|
|
pcVar2 = pCVar4->~CMsgJSExecutePromise + -8;
|
|
iVar3 = *(int *)pcVar2;
|
|
*(int *)pcVar2 = *(int *)pcVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(pcVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(pCVar4,8);
|
|
}
|
|
if ((this != (CMsgJSExecutePromise *)&PTR_vftable_00466ca0) &&
|
|
(pCVar4 = this[4].vftablePtr, pCVar4 != (CMsgJSExecutePromise_vftable *)0x0)) {
|
|
if (*(code **)(pCVar4->~CMsgJSExecutePromise + 8) == CMsgJSValue::~CMsgJSValue) {
|
|
pCVar4->~CMsgJSExecutePromise = (~CMsgJSExecutePromise *)&CMsgJSValue::vftable;
|
|
FUN_002563f0(&pCVar4->vfunction10);
|
|
FUN_002563f0(&pCVar4->vfunction11);
|
|
p_Var5 = pCVar4->~CMsgJSExecutePromise;
|
|
if (((((ulong)p_Var5 & 1) != 0) && (((ulong)p_Var5 & 3) != 0)) &&
|
|
((((ulong)p_Var5 & 2) != 0 || (*(long *)((ulong)p_Var5 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
}
|
|
CMsgJSValue_JSObjectProperty::~CMsgJSValue_JSObjectProperty
|
|
((CMsgJSValue_JSObjectProperty *)&pCVar4->vfunction7);
|
|
~CMsgJSExecutePromise
|
|
((CMsgJSExecutePromise *)&pCVar4->CMsgJSExecutePromise_Constructor_or_Destructor);
|
|
FUN_0039deb8(pCVar4,0x78);
|
|
}
|
|
else {
|
|
(**(code **)(pCVar4->~CMsgJSExecutePromise + 8))(pCVar4);
|
|
}
|
|
}
|
|
pCVar4 = this[1].vftablePtr;
|
|
if (((((ulong)pCVar4 & 1) == 0) || (((ulong)pCVar4 & 3) == 0)) ||
|
|
((((ulong)pCVar4 & 2) == 0 && (*(long *)((ulong)pCVar4 & 0xfffffffffffffffc) != 0)))) {
|
|
if (lStack_20 == *(long *)(in_FS_OFFSET + 0x28)) {
|
|
return;
|
|
}
|
|
}
|
|
else if (lStack_20 == *(long *)(in_FS_OFFSET + 0x28)) {
|
|
FUN_002564b0();
|
|
return;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
|
|
|
|
// 00291670 CMsgJSExecutePromise::~CMsgJSExecutePromise
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00291808) */
|
|
|
|
void __thiscall CMsgJSExecutePromise::~CMsgJSExecutePromise(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
code *pcVar1;
|
|
code *pcVar2;
|
|
int iVar3;
|
|
CMsgJSExecutePromise_vftable *pCVar4;
|
|
~CMsgJSExecutePromise *p_Var5;
|
|
long in_FS_OFFSET;
|
|
undefined1 uStack_21;
|
|
long lStack_20;
|
|
|
|
pCVar4 = this[3].vftablePtr;
|
|
lStack_20 = *(long *)(in_FS_OFFSET + 0x28);
|
|
this->vftablePtr = &vftable;
|
|
if ((pCVar4 != (CMsgJSExecutePromise_vftable *)0x0) &&
|
|
(pCVar4 != (CMsgJSExecutePromise_vftable *)&DAT_0046ab18)) {
|
|
pcVar1 = pCVar4->~CMsgJSExecutePromise + -0x18;
|
|
if (pcVar1 != (code *)&DAT_0046e8a0) {
|
|
LOCK();
|
|
pcVar2 = pCVar4->~CMsgJSExecutePromise + -8;
|
|
iVar3 = *(int *)pcVar2;
|
|
*(int *)pcVar2 = *(int *)pcVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(pcVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(pCVar4,8);
|
|
}
|
|
if ((this != (CMsgJSExecutePromise *)&PTR_vftable_00466ca0) &&
|
|
(pCVar4 = this[4].vftablePtr, pCVar4 != (CMsgJSExecutePromise_vftable *)0x0)) {
|
|
if (*(code **)(pCVar4->~CMsgJSExecutePromise + 8) == CMsgJSValue::~CMsgJSValue) {
|
|
pCVar4->~CMsgJSExecutePromise = (~CMsgJSExecutePromise *)&CMsgJSValue::vftable;
|
|
FUN_002563f0(&pCVar4->vfunction10);
|
|
FUN_002563f0(&pCVar4->vfunction11);
|
|
p_Var5 = pCVar4->~CMsgJSExecutePromise;
|
|
if (((((ulong)p_Var5 & 1) != 0) && (((ulong)p_Var5 & 3) != 0)) &&
|
|
((((ulong)p_Var5 & 2) != 0 || (*(long *)((ulong)p_Var5 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
}
|
|
CMsgJSValue_JSObjectProperty::~CMsgJSValue_JSObjectProperty
|
|
((CMsgJSValue_JSObjectProperty *)&pCVar4->vfunction7);
|
|
~CMsgJSExecutePromise
|
|
((CMsgJSExecutePromise *)&pCVar4->CMsgJSExecutePromise_Constructor_or_Destructor);
|
|
FUN_0039deb8(pCVar4,0x78);
|
|
}
|
|
else {
|
|
(**(code **)(pCVar4->~CMsgJSExecutePromise + 8))(pCVar4);
|
|
}
|
|
}
|
|
pCVar4 = this[1].vftablePtr;
|
|
if (((((ulong)pCVar4 & 1) != 0) && (((ulong)pCVar4 & 3) != 0)) &&
|
|
((((ulong)pCVar4 & 2) != 0 || (*(long *)((ulong)pCVar4 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
}
|
|
if (lStack_20 != *(long *)(in_FS_OFFSET + 0x28)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
FUN_0039deb8(this,0x38);
|
|
return;
|
|
}
|
|
|
|
|
|
// 002bb8a0 CMsgJSExecutePromise::vfunction6
|
|
|
|
void __thiscall CMsgJSExecutePromise::vfunction6(CMsgJSExecutePromise *this)
|
|
|
|
{
|
|
CMsgJSExecutePromise_vftable *pCVar1;
|
|
|
|
pCVar1 = this[2].vftablePtr;
|
|
if (((ulong)pCVar1 & 3) != 0) {
|
|
if (((ulong)pCVar1 & 1) != 0) {
|
|
FUN_003cb078((ulong)this[3].vftablePtr & 0xfffffffffffffffe);
|
|
}
|
|
if (((ulong)pCVar1 & 2) != 0) {
|
|
FUN_002bb4d0(this[4].vftablePtr);
|
|
}
|
|
}
|
|
if (((ulong)pCVar1 & 0x1c) != 0) {
|
|
this[5].vftablePtr = (CMsgJSExecutePromise_vftable *)0x0;
|
|
this[6].vftablePtr = (CMsgJSExecutePromise_vftable *)0x0;
|
|
}
|
|
*(undefined4 *)&this[2].vftablePtr = 0;
|
|
if (((ulong)this[1].vftablePtr & 1) != 0) {
|
|
FUN_002a4470(this + 1);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 002c5890 CMsgJSExecutePromise::vfunction16
|
|
|
|
void __thiscall CMsgJSExecutePromise::vfunction16(CMsgJSExecutePromise *this,undefined8 param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
long lVar2;
|
|
ulong uVar3;
|
|
CMsgJSExecutePromise_vftable *extraout_RAX;
|
|
long lVar4;
|
|
ulong uVar5;
|
|
undefined **ppuVar6;
|
|
CMsgJSExecutePromise_vftable *pCVar7;
|
|
|
|
lVar4 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
|
|
if (lVar4 == 0) {
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
uVar3 = *(ulong *)(lVar4 + 8);
|
|
if ((uVar3 & 1) != 0) {
|
|
if ((uVar3 & 1) == 0) {
|
|
lVar2 = (*(code *)(ulong)((uint)uVar3 & 1))();
|
|
}
|
|
else {
|
|
lVar2 = (uVar3 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
FUN_002921f0(this + 1,lVar2);
|
|
}
|
|
uVar1 = *(uint *)(lVar4 + 0x10);
|
|
if ((uVar1 & 0x1f) != 0) {
|
|
if ((uVar1 & 1) != 0) {
|
|
uVar3 = *(ulong *)(lVar4 + 0x18);
|
|
pCVar7 = this[1].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 1;
|
|
if (((ulong)pCVar7 & 3) == 0) {
|
|
uVar5 = (ulong)pCVar7 & 0xfffffffffffffffc;
|
|
}
|
|
else if (((ulong)pCVar7 & 2) == 0) {
|
|
uVar5 = *(ulong *)((ulong)pCVar7 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar5 = 0;
|
|
}
|
|
FUN_002d7f16(this + 3,uVar3 & 0xfffffffffffffffe,uVar5);
|
|
}
|
|
if ((uVar1 & 2) != 0) {
|
|
pCVar7 = this[4].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 2;
|
|
if (pCVar7 == (CMsgJSExecutePromise_vftable *)0x0) {
|
|
pCVar7 = this[1].vftablePtr;
|
|
if (((ulong)pCVar7 & 3) == 0) {
|
|
uVar3 = (ulong)pCVar7 & 0xfffffffffffffffc;
|
|
}
|
|
else {
|
|
uVar3 = 0;
|
|
if (((ulong)pCVar7 & 2) == 0) {
|
|
uVar3 = *(ulong *)((ulong)pCVar7 & 0xfffffffffffffffc);
|
|
}
|
|
}
|
|
CMsgJSValue::CMsgJSValue_Constructor_or_Destructor(uVar3);
|
|
this[4].vftablePtr = extraout_RAX;
|
|
pCVar7 = extraout_RAX;
|
|
}
|
|
ppuVar6 = *(undefined ***)(lVar4 + 0x20);
|
|
if (ppuVar6 == (undefined **)0x0) {
|
|
ppuVar6 = &PTR_vftable_00466d60;
|
|
}
|
|
FUN_002c5100(pCVar7,ppuVar6);
|
|
}
|
|
if ((uVar1 & 4) != 0) {
|
|
*(undefined4 *)&this[5].vftablePtr = *(undefined4 *)(lVar4 + 0x28);
|
|
}
|
|
if ((uVar1 & 8) != 0) {
|
|
*(undefined4 *)((long)&this[5].vftablePtr + 4) = *(undefined4 *)(lVar4 + 0x2c);
|
|
}
|
|
if ((uVar1 & 0x10) != 0) {
|
|
this[6].vftablePtr = *(CMsgJSExecutePromise_vftable **)(lVar4 + 0x30);
|
|
}
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | uVar1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 002c59c0 CMsgJSExecutePromise::vfunction15
|
|
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
void __thiscall
|
|
CMsgJSExecutePromise::vfunction15(CMsgJSExecutePromise *this,CMsgJSExecutePromise *param_1)
|
|
|
|
{
|
|
byte bVar1;
|
|
uint uVar2;
|
|
long lVar3;
|
|
ulong uVar4;
|
|
CMsgJSExecutePromise_vftable *extraout_RAX;
|
|
long lVar5;
|
|
ulong uVar6;
|
|
undefined **ppuVar7;
|
|
CMsgJSExecutePromise_vftable *pCVar8;
|
|
|
|
if (this == param_1) {
|
|
return;
|
|
}
|
|
pCVar8 = this[2].vftablePtr;
|
|
if (((ulong)pCVar8 & 3) != 0) {
|
|
if (((ulong)pCVar8 & 1) != 0) {
|
|
FUN_003cb078((ulong)this[3].vftablePtr & 0xfffffffffffffffe);
|
|
}
|
|
if (((ulong)pCVar8 & 2) != 0) {
|
|
FUN_002bb4d0(this[4].vftablePtr);
|
|
}
|
|
}
|
|
if (((ulong)pCVar8 & 0x1c) == 0) {
|
|
bVar1 = *(byte *)&this[1].vftablePtr;
|
|
*(undefined4 *)&this[2].vftablePtr = 0;
|
|
}
|
|
else {
|
|
bVar1 = *(byte *)&this[1].vftablePtr;
|
|
this[5].vftablePtr = (CMsgJSExecutePromise_vftable *)0x0;
|
|
this[6].vftablePtr = (CMsgJSExecutePromise_vftable *)0x0;
|
|
*(undefined4 *)&this[2].vftablePtr = 0;
|
|
}
|
|
if ((bVar1 & 1) != 0) {
|
|
FUN_002a4470(this + 1);
|
|
}
|
|
lVar5 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
|
|
if (lVar5 != 0) {
|
|
uVar4 = *(ulong *)(lVar5 + 8);
|
|
if ((uVar4 & 1) != 0) {
|
|
if ((uVar4 & 1) == 0) {
|
|
lVar3 = (*(code *)(ulong)((uint)uVar4 & 1))();
|
|
}
|
|
else {
|
|
lVar3 = (uVar4 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
FUN_002921f0(this + 1,lVar3);
|
|
}
|
|
uVar2 = *(uint *)(lVar5 + 0x10);
|
|
if ((uVar2 & 0x1f) != 0) {
|
|
if ((uVar2 & 1) != 0) {
|
|
uVar4 = *(ulong *)(lVar5 + 0x18);
|
|
pCVar8 = this[1].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 1;
|
|
if (((ulong)pCVar8 & 3) == 0) {
|
|
uVar6 = (ulong)pCVar8 & 0xfffffffffffffffc;
|
|
}
|
|
else if (((ulong)pCVar8 & 2) == 0) {
|
|
uVar6 = *(ulong *)((ulong)pCVar8 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
}
|
|
FUN_002d7f16(this + 3,uVar4 & 0xfffffffffffffffe,uVar6);
|
|
}
|
|
if ((uVar2 & 2) != 0) {
|
|
pCVar8 = this[4].vftablePtr;
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | 2;
|
|
if (pCVar8 == (CMsgJSExecutePromise_vftable *)0x0) {
|
|
pCVar8 = this[1].vftablePtr;
|
|
if (((ulong)pCVar8 & 3) == 0) {
|
|
uVar4 = (ulong)pCVar8 & 0xfffffffffffffffc;
|
|
}
|
|
else {
|
|
uVar4 = 0;
|
|
if (((ulong)pCVar8 & 2) == 0) {
|
|
uVar4 = *(ulong *)((ulong)pCVar8 & 0xfffffffffffffffc);
|
|
}
|
|
}
|
|
CMsgJSValue::CMsgJSValue_Constructor_or_Destructor(uVar4);
|
|
this[4].vftablePtr = extraout_RAX;
|
|
pCVar8 = extraout_RAX;
|
|
}
|
|
ppuVar7 = *(undefined ***)(lVar5 + 0x20);
|
|
if (ppuVar7 == (undefined **)0x0) {
|
|
ppuVar7 = &PTR_vftable_00466d60;
|
|
}
|
|
FUN_002c5100(pCVar8,ppuVar7);
|
|
}
|
|
if ((uVar2 & 4) != 0) {
|
|
*(undefined4 *)&this[5].vftablePtr = *(undefined4 *)(lVar5 + 0x28);
|
|
}
|
|
if ((uVar2 & 8) != 0) {
|
|
*(undefined4 *)((long)&this[5].vftablePtr + 4) = *(undefined4 *)(lVar5 + 0x2c);
|
|
}
|
|
if ((uVar2 & 0x10) != 0) {
|
|
this[6].vftablePtr = *(CMsgJSExecutePromise_vftable **)(lVar5 + 0x30);
|
|
}
|
|
*(uint *)&this[2].vftablePtr = *(uint *)&this[2].vftablePtr | uVar2;
|
|
}
|
|
return;
|
|
}
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
|
|
|