Files

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