715 lines
19 KiB
C
715 lines
19 KiB
C
// 002529b0 CMsgOpenSteamURL::vfunction11
|
|
|
|
undefined4 __thiscall CMsgOpenSteamURL::vfunction11(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
return *(undefined4 *)((long)&(this->data).offset_0x8 + 4);
|
|
}
|
|
|
|
|
|
// 00254780 CMsgOpenSteamURL::vfunction10
|
|
|
|
long __thiscall CMsgOpenSteamURL::vfunction10(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
byte bVar1;
|
|
long lVar2;
|
|
int iVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
long lVar6;
|
|
|
|
uVar5 = *(uint *)&(this->data).offset_0x8;
|
|
lVar6 = 0;
|
|
if ((uVar5 & 7) != 0) {
|
|
if ((uVar5 & 1) != 0) {
|
|
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x10 & 0xfffffffffffffffe) + -0x18);
|
|
uVar4 = (uint)lVar6 | 1;
|
|
iVar3 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar3 == 0; iVar3 = iVar3 + -1) {
|
|
}
|
|
}
|
|
lVar6 = lVar6 + 1 + (ulong)(iVar3 * 9 + 0x49U >> 6);
|
|
}
|
|
if ((uVar5 & 2) != 0) {
|
|
lVar2 = *(long *)(*(long *)((ulong)(this->data).offset_0x18 & 0xfffffffffffffffe) + -0x18);
|
|
uVar4 = (uint)lVar2 | 1;
|
|
iVar3 = 0x1f;
|
|
if (uVar4 != 0) {
|
|
for (; uVar4 >> iVar3 == 0; iVar3 = iVar3 + -1) {
|
|
}
|
|
}
|
|
lVar6 = (ulong)(iVar3 * 9 + 0x49U >> 6) + lVar2 + 1 + lVar6;
|
|
}
|
|
if ((uVar5 & 4) != 0) {
|
|
uVar5 = (this->data).offset_0x20 | 1;
|
|
iVar3 = 0x1f;
|
|
if (uVar5 != 0) {
|
|
for (; uVar5 >> iVar3 == 0; iVar3 = iVar3 + -1) {
|
|
}
|
|
}
|
|
lVar6 = lVar6 + (ulong)((iVar3 * 9 + 0x49U >> 6) + 1);
|
|
bVar1 = (byte)(this->data).offset_0x0;
|
|
goto joined_r0x00254812;
|
|
}
|
|
}
|
|
bVar1 = (byte)(this->data).offset_0x0;
|
|
joined_r0x00254812:
|
|
if ((bVar1 & 1) == 0) {
|
|
*(int *)((long)&(this->data).offset_0x8 + 4) = (int)lVar6;
|
|
return lVar6;
|
|
}
|
|
lVar6 = FUN_00359fe2(&this->data,lVar6,(undefined1 *)((long)&(this->data).offset_0x8 + 4));
|
|
return lVar6;
|
|
}
|
|
|
|
|
|
// 0025f910 CMsgOpenSteamURL::~CMsgOpenSteamURL
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0025fa68) */
|
|
/* WARNING: Removing unreachable block (ram,0x0025fa58) */
|
|
|
|
void __thiscall CMsgOpenSteamURL::~CMsgOpenSteamURL(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
long *plVar4;
|
|
ulong uVar5;
|
|
long in_FS_OFFSET;
|
|
undefined1 uStack_21;
|
|
long lStack_20;
|
|
|
|
plVar4 = (long *)(this->data).offset_0x10;
|
|
lStack_20 = *(long *)(in_FS_OFFSET + 0x28);
|
|
this->vftablePtr = &vftable;
|
|
if ((plVar4 != (long *)0x0) && (plVar4 != (long *)&DAT_0046ab18)) {
|
|
puVar1 = (undefined8 *)(*plVar4 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar4,8);
|
|
}
|
|
plVar4 = (long *)(this->data).offset_0x18;
|
|
if ((plVar4 != (long *)0x0) && (plVar4 != (long *)&DAT_0046ab18)) {
|
|
puVar1 = (undefined8 *)(*plVar4 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar4,8);
|
|
}
|
|
uVar5 = (this->data).offset_0x0;
|
|
if ((((uVar5 & 1) == 0) || ((uVar5 & 3) == 0)) ||
|
|
(((uVar5 & 2) == 0 && (*(long *)(uVar5 & 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();
|
|
}
|
|
|
|
|
|
// 00260850 CMsgOpenSteamURL::~CMsgOpenSteamURL
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x002609a0) */
|
|
/* WARNING: Removing unreachable block (ram,0x00260990) */
|
|
|
|
void __thiscall CMsgOpenSteamURL::~CMsgOpenSteamURL(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
long *plVar4;
|
|
ulong uVar5;
|
|
long in_FS_OFFSET;
|
|
undefined1 uStack_21;
|
|
long lStack_20;
|
|
|
|
plVar4 = (long *)(this->data).offset_0x10;
|
|
lStack_20 = *(long *)(in_FS_OFFSET + 0x28);
|
|
this->vftablePtr = &vftable;
|
|
if ((plVar4 != (long *)0x0) && (plVar4 != (long *)&DAT_0046ab18)) {
|
|
puVar1 = (undefined8 *)(*plVar4 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar4,8);
|
|
}
|
|
plVar4 = (long *)(this->data).offset_0x18;
|
|
if ((plVar4 != (long *)0x0) && (plVar4 != (long *)&DAT_0046ab18)) {
|
|
puVar1 = (undefined8 *)(*plVar4 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&uStack_21);
|
|
}
|
|
}
|
|
FUN_0039deb8(plVar4,8);
|
|
}
|
|
uVar5 = (this->data).offset_0x0;
|
|
if ((((uVar5 & 1) != 0) && ((uVar5 & 3) != 0)) &&
|
|
(((uVar5 & 2) != 0 || (*(long *)(uVar5 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
}
|
|
if (lStack_20 != *(long *)(in_FS_OFFSET + 0x28)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
FUN_0039deb8(this,0x30);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00265c30 CMsgOpenSteamURL::vfunction13
|
|
|
|
void __thiscall CMsgOpenSteamURL::vfunction13(CMsgOpenSteamURL *this,byte *param_1,long *param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
long lVar2;
|
|
ulong uVar3;
|
|
byte *pbVar4;
|
|
long lVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
byte *pbVar8;
|
|
long *plVar9;
|
|
|
|
uVar1 = *(uint *)&(this->data).offset_0x8;
|
|
if ((uVar1 & 4) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
uVar7 = (this->data).offset_0x20;
|
|
*param_1 = 8;
|
|
if (uVar7 < 0x80) {
|
|
param_1[1] = (byte)uVar7;
|
|
param_1 = param_1 + 2;
|
|
}
|
|
else {
|
|
param_1[1] = (byte)uVar7 | 0x80;
|
|
pbVar4 = param_1 + 2;
|
|
uVar6 = uVar7 >> 7;
|
|
if (uVar7 < 0x4000) {
|
|
param_1[2] = (byte)(uVar7 >> 7);
|
|
param_1 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar8 = pbVar4;
|
|
uVar7 = uVar6 >> 7;
|
|
*pbVar8 = (byte)uVar6 | 0x80;
|
|
pbVar4 = pbVar8 + 1;
|
|
uVar6 = uVar7;
|
|
} while (0x7f < uVar7);
|
|
param_1 = pbVar8 + 2;
|
|
pbVar8[1] = (byte)uVar7;
|
|
}
|
|
}
|
|
}
|
|
if ((uVar1 & 1) != 0) {
|
|
plVar9 = (long *)((ulong)(this->data).offset_0x10 & 0xfffffffffffffffe);
|
|
lVar2 = *(long *)(*plVar9 + -0x18);
|
|
if ((lVar2 < 0x80) && (lVar2 < (*param_2 - (long)param_1) + 0xf)) {
|
|
*param_1 = 0x12;
|
|
param_1[1] = (byte)lVar2;
|
|
lVar5 = FUN_002197d0(param_1 + 2,*plVar9,lVar2);
|
|
param_1 = (byte *)(lVar5 + lVar2);
|
|
}
|
|
else {
|
|
param_1 = (byte *)FUN_002f83fe(param_2,2,plVar9,param_1);
|
|
}
|
|
}
|
|
if ((uVar1 & 2) != 0) {
|
|
plVar9 = (long *)((ulong)(this->data).offset_0x18 & 0xfffffffffffffffe);
|
|
lVar2 = *(long *)(*plVar9 + -0x18);
|
|
if ((lVar2 < 0x80) && (lVar2 < (*param_2 - (long)param_1) + 0xf)) {
|
|
*param_1 = 0x1a;
|
|
param_1[1] = (byte)lVar2;
|
|
lVar5 = FUN_002197d0(param_1 + 2,*plVar9,lVar2);
|
|
param_1 = (byte *)(lVar5 + lVar2);
|
|
}
|
|
else {
|
|
param_1 = (byte *)FUN_002f83fe(param_2,3,plVar9,param_1);
|
|
}
|
|
}
|
|
uVar3 = (this->data).offset_0x0;
|
|
if ((uVar3 & 1) != 0) {
|
|
FUN_00359676((uVar3 & 0xfffffffffffffffc) + 8,param_1,param_2);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0026cb70 CMsgOpenSteamURL::vfunction20
|
|
|
|
undefined1 [16] __thiscall CMsgOpenSteamURL::vfunction20(void)
|
|
|
|
{
|
|
FUN_0033e2d0(&DAT_00466400,0);
|
|
return *(undefined1 (*) [16])(PTR_DAT_00466448 + 0x5d0);
|
|
}
|
|
|
|
|
|
// 0026e820 CMsgOpenSteamURL::CMsgOpenSteamURL
|
|
|
|
void __thiscall CMsgOpenSteamURL::CMsgOpenSteamURL(CMsgOpenSteamURL *this,ulong param_1)
|
|
|
|
{
|
|
(this->data).offset_0x0 = param_1;
|
|
this->vftablePtr = &vftable;
|
|
(this->data).offset_0x8 = 0;
|
|
(this->data).offset_0x10 = &DAT_0046ab18;
|
|
(this->data).offset_0x18 = &DAT_0046ab18;
|
|
(this->data).offset_0x20 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00273570 CMsgOpenSteamURL::vfunction5
|
|
|
|
void __thiscall CMsgOpenSteamURL::vfunction5(CMsgOpenSteamURL *this,long param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
if (param_1 != 0) {
|
|
puVar1 = (undefined8 *)thunk_FUN_002d7d08(param_1,0x30,&typeinfo);
|
|
puVar1[2] = 0;
|
|
puVar1[1] = param_1;
|
|
*puVar1 = &vftable;
|
|
puVar1[3] = &DAT_0046ab18;
|
|
puVar1[4] = &DAT_0046ab18;
|
|
*(undefined4 *)(puVar1 + 5) = 0;
|
|
return;
|
|
}
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x30);
|
|
puVar1[2] = 0;
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
puVar1[3] = &DAT_0046ab18;
|
|
puVar1[4] = &DAT_0046ab18;
|
|
*(undefined4 *)(puVar1 + 5) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00273580 CMsgOpenSteamURL::CMsgOpenSteamURL_Constructor_or_Destructor
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x002734e2) */
|
|
|
|
void __thiscall CMsgOpenSteamURL::CMsgOpenSteamURL_Constructor_or_Destructor(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x30);
|
|
puVar1[2] = 0;
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
puVar1[3] = &DAT_0046ab18;
|
|
puVar1[4] = &DAT_0046ab18;
|
|
*(undefined4 *)(puVar1 + 5) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00283e00 CMsgOpenSteamURL::vfunction12
|
|
|
|
byte * __thiscall
|
|
CMsgOpenSteamURL::vfunction12(CMsgOpenSteamURL *this,byte *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
undefined **ppuVar1;
|
|
undefined8 *puVar2;
|
|
byte bVar3;
|
|
ulong uVar4;
|
|
undefined8 uVar5;
|
|
long lVar6;
|
|
char extraout_DL;
|
|
char cVar7;
|
|
uint uVar8;
|
|
int iVar9;
|
|
ulong uVar10;
|
|
byte *pbVar11;
|
|
uint uVar12;
|
|
long in_FS_OFFSET;
|
|
undefined1 auVar13 [16];
|
|
undefined4 uStack_34;
|
|
long lStack_30;
|
|
|
|
uVar12 = 0;
|
|
lStack_30 = *(long *)(in_FS_OFFSET + 0x28);
|
|
do {
|
|
pbVar11 = param_1;
|
|
if ((byte *)*param_2 <= param_1) goto LAB_00283ec0;
|
|
while( true ) {
|
|
bVar3 = *pbVar11;
|
|
uVar10 = (ulong)bVar3;
|
|
param_1 = pbVar11 + 1;
|
|
if (0x7f < bVar3) {
|
|
param_1 = pbVar11 + 2;
|
|
uVar10 = (ulong)((uint)bVar3 + (pbVar11[1] - 1) * 0x80);
|
|
if (0x7f < pbVar11[1]) {
|
|
auVar13 = FUN_002ea28a();
|
|
param_1 = auVar13._0_8_;
|
|
uVar10 = auVar13._8_8_ & 0xffffffff;
|
|
if (param_1 == (byte *)0x0) goto LAB_00283f3b;
|
|
}
|
|
}
|
|
uVar8 = (uint)uVar10;
|
|
iVar9 = (int)(uVar10 >> 3);
|
|
cVar7 = (char)uVar10;
|
|
if (iVar9 == 2) break;
|
|
if (iVar9 == 3) {
|
|
if (cVar7 == '\x1a') {
|
|
uVar10 = (this->data).offset_0x0;
|
|
ppuVar1 = &(this->data).offset_0x18;
|
|
puVar2 = &(this->data).offset_0x8;
|
|
*(uint *)puVar2 = *(uint *)puVar2 | 2;
|
|
goto joined_r0x00283fc6;
|
|
}
|
|
goto LAB_00283fe0;
|
|
}
|
|
if (iVar9 != 1) {
|
|
if ((uVar8 & 7) == 4) goto LAB_00283fea;
|
|
if (uVar8 != 0) goto LAB_00283f7a;
|
|
iVar9 = -1;
|
|
goto LAB_00283fed;
|
|
}
|
|
if (cVar7 != '\b') goto LAB_00283fe0;
|
|
param_1 = (byte *)FUN_002762b0(param_1,&uStack_34);
|
|
(this->data).offset_0x20 = uStack_34;
|
|
if (param_1 == (byte *)0x0) {
|
|
param_1 = (byte *)0x0;
|
|
uVar12 = 4;
|
|
goto LAB_00283f3d;
|
|
}
|
|
uVar12 = 4;
|
|
pbVar11 = param_1;
|
|
if ((byte *)*param_2 <= param_1) {
|
|
LAB_00283ec0:
|
|
iVar9 = (int)((long)param_1 - param_2[1]);
|
|
if (iVar9 == *(int *)((long)param_2 + 0x1c)) {
|
|
if ((iVar9 < 1) || (param_2[2] != 0)) goto LAB_00283f3d;
|
|
goto LAB_00283f3b;
|
|
}
|
|
param_1 = (byte *)FUN_002ea7d8(param_2,(long)param_1 - param_2[1] & 0xffffffff,
|
|
*(undefined4 *)((long)param_2 + 0x5c));
|
|
pbVar11 = param_1;
|
|
if (extraout_DL != '\0') goto LAB_00283f3d;
|
|
}
|
|
}
|
|
if (cVar7 == '\x12') {
|
|
uVar10 = (this->data).offset_0x0;
|
|
ppuVar1 = &(this->data).offset_0x10;
|
|
puVar2 = &(this->data).offset_0x8;
|
|
*(uint *)puVar2 = *(uint *)puVar2 | 1;
|
|
joined_r0x00283fc6:
|
|
if ((uVar10 & 3) == 0) {
|
|
uVar10 = uVar10 & 0xfffffffffffffffc;
|
|
}
|
|
else if ((uVar10 & 2) == 0) {
|
|
uVar10 = *(ulong *)(uVar10 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar10 = 0;
|
|
}
|
|
uVar5 = FUN_002d7f56(ppuVar1,uVar10);
|
|
param_1 = (byte *)FUN_002ea63f(uVar5,param_1,param_2);
|
|
goto joined_r0x00283f35;
|
|
}
|
|
LAB_00283fe0:
|
|
if ((uVar8 & 7) == 4) {
|
|
LAB_00283fea:
|
|
iVar9 = uVar8 - 1;
|
|
LAB_00283fed:
|
|
*(int *)(param_2 + 10) = iVar9;
|
|
goto LAB_00283f3d;
|
|
}
|
|
LAB_00283f7a:
|
|
uVar4 = (this->data).offset_0x0;
|
|
if ((uVar4 & 1) == 0) {
|
|
lVar6 = FUN_002762f0(&this->data);
|
|
}
|
|
else {
|
|
lVar6 = (uVar4 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
param_1 = (byte *)FUN_003589df(uVar10,lVar6,param_1,param_2);
|
|
joined_r0x00283f35:
|
|
if (param_1 == (byte *)0x0) {
|
|
LAB_00283f3b:
|
|
param_1 = (byte *)0x0;
|
|
LAB_00283f3d:
|
|
puVar2 = &(this->data).offset_0x8;
|
|
*(uint *)puVar2 = *(uint *)puVar2 | uVar12;
|
|
if (lStack_30 != *(long *)(in_FS_OFFSET + 0x28)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
return param_1;
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
// 002a4070 CMsgOpenSteamURL::vfunction16
|
|
|
|
void __thiscall CMsgOpenSteamURL::vfunction16(CMsgOpenSteamURL *this,undefined8 param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
uint uVar2;
|
|
ulong uVar3;
|
|
long lVar4;
|
|
long lVar5;
|
|
ulong uVar6;
|
|
|
|
lVar4 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
|
|
if (lVar4 != 0) {
|
|
uVar3 = *(ulong *)(lVar4 + 8);
|
|
if ((uVar3 & 1) != 0) {
|
|
if ((uVar3 & 1) == 0) {
|
|
lVar5 = (*(code *)(ulong)((uint)uVar3 & 1))();
|
|
}
|
|
else {
|
|
lVar5 = (uVar3 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
FUN_002921f0(&this->data,lVar5);
|
|
}
|
|
uVar2 = *(uint *)(lVar4 + 0x10);
|
|
if ((uVar2 & 7) != 0) {
|
|
if ((uVar2 & 1) != 0) {
|
|
uVar3 = *(ulong *)(lVar4 + 0x18);
|
|
uVar6 = (this->data).offset_0x0;
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | 1;
|
|
if ((uVar6 & 3) == 0) {
|
|
uVar6 = uVar6 & 0xfffffffffffffffc;
|
|
}
|
|
else if ((uVar6 & 2) == 0) {
|
|
uVar6 = *(ulong *)(uVar6 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
}
|
|
FUN_002d7f16(&(this->data).offset_0x10,uVar3 & 0xfffffffffffffffe,uVar6);
|
|
}
|
|
if ((uVar2 & 2) != 0) {
|
|
uVar3 = *(ulong *)(lVar4 + 0x20);
|
|
uVar6 = (this->data).offset_0x0;
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | 2;
|
|
if ((uVar6 & 3) == 0) {
|
|
uVar6 = uVar6 & 0xfffffffffffffffc;
|
|
}
|
|
else if ((uVar6 & 2) == 0) {
|
|
uVar6 = *(ulong *)(uVar6 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
}
|
|
FUN_002d7f16(&(this->data).offset_0x18,uVar3 & 0xfffffffffffffffe,uVar6);
|
|
}
|
|
if ((uVar2 & 4) != 0) {
|
|
(this->data).offset_0x20 = *(undefined4 *)(lVar4 + 0x28);
|
|
}
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | uVar2;
|
|
}
|
|
return;
|
|
}
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 002a7770 CMsgOpenSteamURL::vfunction6
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x002a7860) */
|
|
/* WARNING: Removing unreachable block (ram,0x002a78a9) */
|
|
|
|
void __thiscall CMsgOpenSteamURL::vfunction6(CMsgOpenSteamURL *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
uint uVar4;
|
|
undefined1 *puVar5;
|
|
long *plVar6;
|
|
long in_FS_OFFSET;
|
|
undefined1 local_31;
|
|
long local_30;
|
|
|
|
uVar4 = *(uint *)&(this->data).offset_0x8;
|
|
local_30 = *(long *)(in_FS_OFFSET + 0x28);
|
|
if ((uVar4 & 3) != 0) {
|
|
if ((uVar4 & 1) != 0) {
|
|
plVar6 = (long *)((ulong)(this->data).offset_0x10 & 0xfffffffffffffffe);
|
|
if (*(int *)(*plVar6 + -8) < 1) {
|
|
puVar5 = (undefined1 *)*plVar6;
|
|
if (puVar5 != &DAT_0046e8b8) {
|
|
*(undefined4 *)(puVar5 + -8) = 0;
|
|
*(undefined8 *)(puVar5 + -0x18) = 0;
|
|
*puVar5 = 0;
|
|
}
|
|
}
|
|
else {
|
|
puVar1 = (undefined8 *)(*plVar6 + -0x18);
|
|
if (puVar1 != &DAT_0046e8a0) {
|
|
LOCK();
|
|
piVar2 = (int *)(*plVar6 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
FUN_003ce482(puVar1,&local_31);
|
|
}
|
|
}
|
|
*plVar6 = (long)&DAT_0046e8b8;
|
|
}
|
|
}
|
|
if ((uVar4 & 2) != 0) {
|
|
FUN_003cb078((ulong)(this->data).offset_0x18 & 0xfffffffffffffffe);
|
|
}
|
|
}
|
|
(this->data).offset_0x20 = 0;
|
|
*(undefined4 *)&(this->data).offset_0x8 = 0;
|
|
if (((this->data).offset_0x0 & 1) == 0) {
|
|
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
|
|
return;
|
|
}
|
|
}
|
|
else if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
|
|
FUN_002a4470(&this->data);
|
|
return;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
|
|
|
|
// 002b9f40 CMsgOpenSteamURL::vfunction15
|
|
|
|
void __thiscall CMsgOpenSteamURL::vfunction15(CMsgOpenSteamURL *this,CMsgOpenSteamURL *param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
uint uVar2;
|
|
ulong uVar3;
|
|
long lVar4;
|
|
long lVar5;
|
|
ulong uVar6;
|
|
|
|
if (this == param_1) {
|
|
return;
|
|
}
|
|
uVar2 = *(uint *)&(this->data).offset_0x8;
|
|
if ((uVar2 & 3) != 0) {
|
|
if ((uVar2 & 1) != 0) {
|
|
FUN_003cb078((ulong)(this->data).offset_0x10 & 0xfffffffffffffffe);
|
|
}
|
|
if ((uVar2 & 2) != 0) {
|
|
FUN_003cb078((ulong)(this->data).offset_0x18 & 0xfffffffffffffffe);
|
|
}
|
|
}
|
|
(this->data).offset_0x20 = 0;
|
|
*(undefined4 *)&(this->data).offset_0x8 = 0;
|
|
if (((this->data).offset_0x0 & 1) != 0) {
|
|
FUN_002a4470(&this->data);
|
|
}
|
|
lVar5 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
|
|
if (lVar5 == 0) {
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
uVar3 = *(ulong *)(lVar5 + 8);
|
|
if ((uVar3 & 1) != 0) {
|
|
if ((uVar3 & 1) == 0) {
|
|
lVar4 = (*(code *)(ulong)((uint)uVar3 & 1))();
|
|
}
|
|
else {
|
|
lVar4 = (uVar3 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
FUN_002921f0(&this->data,lVar4);
|
|
}
|
|
uVar2 = *(uint *)(lVar5 + 0x10);
|
|
if ((uVar2 & 7) != 0) {
|
|
if ((uVar2 & 1) != 0) {
|
|
uVar3 = *(ulong *)(lVar5 + 0x18);
|
|
uVar6 = (this->data).offset_0x0;
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | 1;
|
|
if ((uVar6 & 3) == 0) {
|
|
uVar6 = uVar6 & 0xfffffffffffffffc;
|
|
}
|
|
else if ((uVar6 & 2) == 0) {
|
|
uVar6 = *(ulong *)(uVar6 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
}
|
|
FUN_002d7f16(&(this->data).offset_0x10,uVar3 & 0xfffffffffffffffe,uVar6);
|
|
}
|
|
if ((uVar2 & 2) != 0) {
|
|
uVar3 = *(ulong *)(lVar5 + 0x20);
|
|
uVar6 = (this->data).offset_0x0;
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | 2;
|
|
if ((uVar6 & 3) == 0) {
|
|
uVar6 = uVar6 & 0xfffffffffffffffc;
|
|
}
|
|
else if ((uVar6 & 2) == 0) {
|
|
uVar6 = *(ulong *)(uVar6 & 0xfffffffffffffffc);
|
|
}
|
|
else {
|
|
uVar6 = 0;
|
|
}
|
|
FUN_002d7f16(&(this->data).offset_0x18,uVar3 & 0xfffffffffffffffe,uVar6);
|
|
}
|
|
if ((uVar2 & 4) != 0) {
|
|
(this->data).offset_0x20 = *(undefined4 *)(lVar5 + 0x28);
|
|
}
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*(uint *)puVar1 = *(uint *)puVar1 | uVar2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|