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