Files
steam/decomp/steamrt64_chromehtml.so/src/CMsgShowBrowserContextMenu.c

1670 lines
46 KiB
C

// 00252710 CMsgShowBrowserContextMenu::vfunction11
undefined4 __thiscall CMsgShowBrowserContextMenu::vfunction11(CMsgShowBrowserContextMenu *this)
{
return *(undefined4 *)((long)&(this->data).offset_0x8 + 4);
}
// 00256820 CMsgShowBrowserContextMenu::vfunction10
long __thiscall CMsgShowBrowserContextMenu::vfunction10(CMsgShowBrowserContextMenu *this)
{
long *plVar1;
byte bVar2;
long lVar3;
int iVar4;
uint uVar5;
long lVar6;
uint uVar7;
ulong uVar8;
long *plVar9;
long lVar10;
plVar9 = (long *)(this->data).offset_0x20;
lVar10 = (long)*(int *)&(this->data).offset_0x18;
if (plVar9 != (long *)0x0) {
plVar9 = plVar9 + 1;
}
plVar1 = plVar9 + lVar10;
for (; plVar9 != plVar1; plVar9 = plVar9 + 1) {
while( true ) {
lVar3 = *plVar9;
lVar6 = 0;
uVar5 = *(uint *)(lVar3 + 0x10);
if ((uVar5 & 3) != 0) {
if ((uVar5 & 1) != 0) {
lVar6 = *(long *)(*(long *)(*(ulong *)(lVar3 + 0x18) & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar6 = lVar6 + 1 + (ulong)(iVar4 * 9 + 0x49U >> 6);
}
if ((uVar5 & 2) != 0) {
if ((int)*(uint *)(lVar3 + 0x20) < 0) {
uVar8 = 10;
}
else {
uVar5 = *(uint *)(lVar3 + 0x20) | 1;
iVar4 = 0x1f;
if (uVar5 != 0) {
for (; uVar5 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
uVar8 = (ulong)(iVar4 * 9 + 0x49U >> 6);
}
lVar6 = uVar8 + 1 + lVar6;
}
}
if ((*(byte *)(lVar3 + 8) & 1) == 0) break;
lVar6 = FUN_00359fe2(lVar3 + 8,lVar6,lVar3 + 0x14);
uVar5 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar5 != 0) {
for (; uVar5 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
plVar9 = plVar9 + 1;
lVar10 = lVar10 + lVar6 + (ulong)(iVar4 * 9 + 0x49U >> 6);
if (plVar1 == plVar9) goto LAB_00256908;
}
*(uint *)(lVar3 + 0x14) = (uint)lVar6;
uVar5 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar5 != 0) {
for (; uVar5 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = lVar10 + (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6;
}
LAB_00256908:
uVar5 = *(uint *)&(this->data).offset_0x8;
if ((char)uVar5 != '\0') {
if ((uVar5 & 1) != 0) {
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x28 & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar10;
}
if ((uVar5 & 2) != 0) {
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x30 & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar10;
}
if ((uVar5 & 4) != 0) {
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x38 & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar10;
}
if ((uVar5 & 8) != 0) {
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x40 & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar10;
}
if ((uVar5 & 0x10) != 0) {
lVar6 = *(long *)(*(long *)((ulong)(this->data).offset_0x48 & 0xfffffffffffffffe) + -0x18);
uVar7 = (uint)lVar6 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = (ulong)(iVar4 * 9 + 0x49U >> 6) + lVar6 + 1 + lVar10;
}
if ((uVar5 & 0x20) != 0) {
uVar7 = *(uint *)&(this->data).offset_0x50 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = lVar10 + (ulong)((iVar4 * 9 + 0x49U >> 6) + 1);
}
if ((uVar5 & 0x40) != 0) {
uVar7 = *(uint *)((long)&(this->data).offset_0x50 + 4) | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = lVar10 + (ulong)((iVar4 * 9 + 0x49U >> 6) + 1);
}
if ((uVar5 & 0x80) != 0) {
uVar7 = *(uint *)&(this->data).offset_0x58;
if ((int)uVar7 < 0) {
uVar8 = 10;
}
else {
uVar7 = uVar7 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
uVar8 = (ulong)(iVar4 * 9 + 0x49U >> 6);
}
lVar10 = uVar8 + 1 + lVar10;
}
}
if ((uVar5 & 0x300) != 0) {
if ((uVar5 & 0x100) != 0) {
uVar7 = *(uint *)((long)&(this->data).offset_0x58 + 4);
if ((int)uVar7 < 0) {
uVar8 = 10;
}
else {
uVar7 = uVar7 | 1;
iVar4 = 0x1f;
if (uVar7 != 0) {
for (; uVar7 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
uVar8 = (ulong)(iVar4 * 9 + 0x49U >> 6);
}
lVar10 = uVar8 + 1 + lVar10;
}
if ((uVar5 & 0x200) != 0) {
uVar5 = (this->data).offset_0x60 | 1;
iVar4 = 0x1f;
if (uVar5 != 0) {
for (; uVar5 >> iVar4 == 0; iVar4 = iVar4 + -1) {
}
}
lVar10 = lVar10 + (ulong)((iVar4 * 9 + 0x49U >> 6) + 1);
bVar2 = (byte)(this->data).offset_0x0;
goto joined_r0x00256aae;
}
}
bVar2 = (byte)(this->data).offset_0x0;
joined_r0x00256aae:
if ((bVar2 & 1) == 0) {
*(int *)((long)&(this->data).offset_0x8 + 4) = (int)lVar10;
return lVar10;
}
lVar10 = FUN_00359fe2(&this->data,lVar10,(undefined1 *)((long)&(this->data).offset_0x8 + 4));
return lVar10;
}
// 0026bf30 CMsgShowBrowserContextMenu::vfunction13
byte * __thiscall
CMsgShowBrowserContextMenu::vfunction13
(CMsgShowBrowserContextMenu *this,byte *param_1,long *param_2)
{
int iVar1;
int iVar2;
long lVar3;
long lVar4;
undefined *puVar5;
long lVar6;
ulong uVar7;
byte *pbVar8;
byte bVar9;
ulong uVar10;
byte *pbVar11;
uint uVar12;
uint uVar13;
uint uVar14;
int iVar15;
long *plVar16;
uVar14 = *(uint *)&(this->data).offset_0x8;
if ((uVar14 & 0x20) != 0) {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
uVar12 = *(uint *)&(this->data).offset_0x50;
*param_1 = 8;
if (uVar12 < 0x80) {
param_1[1] = (byte)uVar12;
param_1 = param_1 + 2;
}
else {
param_1[1] = (byte)uVar12 | 0x80;
pbVar8 = param_1 + 2;
uVar13 = uVar12 >> 7;
if (uVar12 < 0x4000) {
param_1[2] = (byte)(uVar12 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar12 = uVar13 >> 7;
*pbVar11 = (byte)uVar13 | 0x80;
pbVar8 = pbVar11 + 1;
uVar13 = uVar12;
} while (0x7f < uVar12);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar12;
}
}
}
iVar1 = *(int *)&(this->data).offset_0x18;
if (iVar1 != 0) {
iVar15 = 0;
do {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
lVar4 = *(long *)((this->data).offset_0x20 + 8 + (long)iVar15 * 8);
*param_1 = 0x12;
uVar12 = *(uint *)(lVar4 + 0x14);
if (uVar12 < 0x80) {
param_1[1] = (byte)uVar12;
param_1 = param_1 + 2;
}
else {
param_1[1] = (byte)uVar12 | 0x80;
pbVar8 = param_1 + 2;
uVar13 = uVar12 >> 7;
if (uVar12 < 0x4000) {
param_1[2] = (byte)(uVar12 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar12 = uVar13 >> 7;
*pbVar11 = (byte)uVar13 | 0x80;
pbVar8 = pbVar11 + 1;
uVar13 = uVar12;
} while (0x7f < uVar12);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar12;
}
}
uVar12 = *(uint *)(lVar4 + 0x10);
if ((uVar12 & 2) != 0) {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
iVar2 = *(int *)(lVar4 + 0x20);
uVar10 = (ulong)iVar2;
*param_1 = 8;
bVar9 = (byte)iVar2;
if (uVar10 < 0x80) {
param_1[1] = bVar9;
param_1 = param_1 + 2;
}
else {
param_1[1] = bVar9 | 0x80;
uVar7 = uVar10 >> 7;
pbVar8 = param_1 + 2;
if (uVar10 < 0x4000) {
param_1[2] = (byte)(uVar10 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar10 = uVar7 >> 7;
*pbVar11 = (byte)uVar7 | 0x80;
uVar7 = uVar10;
pbVar8 = pbVar11 + 1;
} while (0x7f < uVar10);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar10;
}
}
}
if ((uVar12 & 1) != 0) {
plVar16 = (long *)(*(ulong *)(lVar4 + 0x18) & 0xfffffffffffffffe);
lVar3 = *(long *)(*plVar16 + -0x18);
if ((lVar3 < 0x80) && (lVar3 < (*param_2 - (long)param_1) + 0xf)) {
param_1[1] = (byte)lVar3;
*param_1 = 0x12;
lVar6 = FUN_002197d0(param_1 + 2,*plVar16);
param_1 = (byte *)(lVar6 + lVar3);
}
else {
param_1 = (byte *)FUN_002f83fe(param_2,2,plVar16,param_1);
}
}
if ((*(ulong *)(lVar4 + 8) & 1) != 0) {
param_1 = (byte *)FUN_00359676((*(ulong *)(lVar4 + 8) & 0xfffffffffffffffc) + 8,param_1,
param_2);
}
iVar15 = iVar15 + 1;
} while (iVar1 != iVar15);
}
if ((uVar14 & 0x40) != 0) {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
uVar12 = *(uint *)((long)&(this->data).offset_0x50 + 4);
*param_1 = 0x18;
if (uVar12 < 0x80) {
param_1[1] = (byte)uVar12;
param_1 = param_1 + 2;
}
else {
param_1[1] = (byte)uVar12 | 0x80;
pbVar8 = param_1 + 2;
uVar13 = uVar12 >> 7;
if (uVar12 < 0x4000) {
param_1[2] = (byte)(uVar12 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar12 = uVar13 >> 7;
*pbVar11 = (byte)uVar13 | 0x80;
pbVar8 = pbVar11 + 1;
uVar13 = uVar12;
} while (0x7f < uVar12);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar12;
}
}
}
if ((uVar14 & 1) != 0) {
param_1 = (byte *)FUN_002680e0(param_2,4,(ulong)(this->data).offset_0x28 & 0xfffffffffffffffe,
param_1);
}
if ((uVar14 & 0x80) != 0) {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
iVar1 = *(int *)&(this->data).offset_0x58;
uVar10 = (ulong)iVar1;
*param_1 = 0x28;
bVar9 = (byte)iVar1;
if (uVar10 < 0x80) {
param_1[1] = bVar9;
param_1 = param_1 + 2;
}
else {
param_1[1] = bVar9 | 0x80;
uVar7 = uVar10 >> 7;
pbVar8 = param_1 + 2;
if (uVar10 < 0x4000) {
param_1[2] = (byte)(uVar10 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar10 = uVar7 >> 7;
*pbVar11 = (byte)uVar7 | 0x80;
uVar7 = uVar10;
pbVar8 = pbVar11 + 1;
} while (0x7f < uVar10);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar10;
}
}
}
if ((uVar14 & 0x100) == 0) {
if ((uVar14 & 2) != 0) {
puVar5 = (this->data).offset_0x30;
goto LAB_0026c271;
}
}
else {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2);
}
iVar1 = *(int *)((long)&(this->data).offset_0x58 + 4);
uVar10 = (ulong)iVar1;
*param_1 = 0x30;
bVar9 = (byte)iVar1;
if (uVar10 < 0x80) {
param_1[1] = bVar9;
param_1 = param_1 + 2;
}
else {
param_1[1] = bVar9 | 0x80;
uVar7 = uVar10 >> 7;
pbVar8 = param_1 + 2;
if (uVar10 < 0x4000) {
param_1[2] = (byte)(uVar10 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar10 = uVar7 >> 7;
*pbVar11 = (byte)uVar7 | 0x80;
uVar7 = uVar10;
pbVar8 = pbVar11 + 1;
} while (0x7f < uVar10);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar10;
}
}
if ((uVar14 & 2) != 0) {
puVar5 = (this->data).offset_0x30;
LAB_0026c271:
param_1 = (byte *)FUN_002680e0(param_2,7,(ulong)puVar5 & 0xfffffffffffffffe,param_1);
}
}
if ((uVar14 & 4) != 0) {
param_1 = (byte *)FUN_002680e0(param_2,8,(ulong)(this->data).offset_0x38 & 0xfffffffffffffffe);
}
if ((uVar14 & 8) != 0) {
param_1 = (byte *)FUN_002680e0(param_2,9,(ulong)(this->data).offset_0x40 & 0xfffffffffffffffe);
}
if ((uVar14 & 0x10) != 0) {
param_1 = (byte *)FUN_002680e0(param_2,10,(ulong)(this->data).offset_0x48 & 0xfffffffffffffffe);
}
if ((uVar14 & 0x200) != 0) {
if ((byte *)*param_2 <= param_1) {
param_1 = (byte *)FUN_002f822a(param_2,param_1);
}
uVar14 = (this->data).offset_0x60;
*param_1 = 0x58;
if (uVar14 < 0x80) {
param_1[1] = (byte)uVar14;
uVar10 = (this->data).offset_0x0;
param_1 = param_1 + 2;
goto joined_r0x0026c45d;
}
param_1[1] = (byte)uVar14 | 0x80;
pbVar8 = param_1 + 2;
uVar12 = uVar14 >> 7;
if (uVar14 < 0x4000) {
param_1[2] = (byte)(uVar14 >> 7);
param_1 = param_1 + 3;
}
else {
do {
pbVar11 = pbVar8;
uVar14 = uVar12 >> 7;
*pbVar11 = (byte)uVar12 | 0x80;
pbVar8 = pbVar11 + 1;
uVar12 = uVar14;
} while (0x7f < uVar14);
param_1 = pbVar11 + 2;
pbVar11[1] = (byte)uVar14;
}
}
uVar10 = (this->data).offset_0x0;
joined_r0x0026c45d:
if ((uVar10 & 1) != 0) {
pbVar8 = (byte *)FUN_00359676((uVar10 & 0xfffffffffffffffc) + 8,param_1,param_2);
return pbVar8;
}
return param_1;
}
// 0026ce60 CMsgShowBrowserContextMenu::vfunction20
undefined1 [16] __thiscall CMsgShowBrowserContextMenu::vfunction20(void)
{
FUN_0033e2d0(&DAT_00466400,0);
return *(undefined1 (*) [16])(PTR_DAT_00466448 + 0x8c0);
}
// 0026f320 CMsgShowBrowserContextMenu::CMsgShowBrowserContextMenu
void __thiscall
CMsgShowBrowserContextMenu::CMsgShowBrowserContextMenu
(CMsgShowBrowserContextMenu *this,ulong param_1)
{
(this->data).offset_0x0 = param_1;
this->vftablePtr = &vftable;
(this->data).offset_0x8 = 0;
(this->data).offset_0x10 = param_1;
(this->data).offset_0x18 = 0;
(this->data).offset_0x20 = 0;
(this->data).offset_0x28 = &DAT_0046ab18;
(this->data).offset_0x30 = &DAT_0046ab18;
(this->data).offset_0x38 = &DAT_0046ab18;
(this->data).offset_0x40 = &DAT_0046ab18;
(this->data).offset_0x48 = &DAT_0046ab18;
(this->data).offset_0x50 = 0;
(this->data).offset_0x58 = 0;
(this->data).offset_0x60 = 0;
return;
}
// 002752d0 CMsgShowBrowserContextMenu::vfunction5
void __thiscall
CMsgShowBrowserContextMenu::vfunction5(CMsgShowBrowserContextMenu *this,long param_1)
{
undefined8 *puVar1;
if (param_1 == 0) {
puVar1 = (undefined8 *)FUN_003a1a2c(0x70);
puVar1[1] = 0;
*puVar1 = &vftable;
puVar1[2] = 0;
puVar1[3] = 0;
}
else {
puVar1 = (undefined8 *)thunk_FUN_002d7d08(param_1,0x70,&typeinfo);
puVar1[1] = param_1;
*puVar1 = &vftable;
puVar1[2] = 0;
puVar1[3] = param_1;
}
puVar1[4] = 0;
puVar1[5] = 0;
puVar1[0xb] = 0;
puVar1[0xc] = 0;
puVar1[6] = &DAT_0046ab18;
puVar1[7] = &DAT_0046ab18;
puVar1[8] = &DAT_0046ab18;
puVar1[9] = &DAT_0046ab18;
puVar1[10] = &DAT_0046ab18;
*(undefined4 *)(puVar1 + 0xd) = 0;
return;
}
// 002752e0 CMsgShowBrowserContextMenu::CMsgShowBrowserContextMenu_Constructor_or_Destructor
/* WARNING: Removing unreachable block (ram,0x00275226) */
void __thiscall
CMsgShowBrowserContextMenu::CMsgShowBrowserContextMenu_Constructor_or_Destructor
(CMsgShowBrowserContextMenu *this)
{
undefined8 *puVar1;
puVar1 = (undefined8 *)FUN_003a1a2c(0x70);
puVar1[1] = 0;
*puVar1 = &vftable;
puVar1[2] = 0;
puVar1[3] = 0;
puVar1[4] = 0;
puVar1[5] = 0;
puVar1[0xb] = 0;
puVar1[0xc] = 0;
puVar1[6] = &DAT_0046ab18;
puVar1[7] = &DAT_0046ab18;
puVar1[8] = &DAT_0046ab18;
puVar1[9] = &DAT_0046ab18;
puVar1[10] = &DAT_0046ab18;
*(undefined4 *)(puVar1 + 0xd) = 0;
return;
}
// 0028ee30 CMsgShowBrowserContextMenu::vfunction12
/* WARNING: Type propagation algorithm not settling */
byte * __thiscall
CMsgShowBrowserContextMenu::vfunction12
(CMsgShowBrowserContextMenu *this,byte *param_1,long *param_2)
{
long *plVar1;
undefined8 *puVar2;
undefined **ppuVar3;
int iVar4;
ulong uVar5;
undefined8 uVar6;
int *piVar7;
undefined8 extraout_RAX;
long lVar8;
char extraout_DL;
byte bVar9;
int iVar10;
char cVar11;
uint uVar12;
int iVar13;
ulong uVar14;
uint uVar15;
long in_FS_OFFSET;
undefined1 auVar16 [16];
undefined4 local_48 [2];
long local_40;
uVar15 = 0;
local_40 = *(long *)(in_FS_OFFSET + 0x28);
LAB_0028ee5f:
if ((byte *)*param_2 <= param_1) goto LAB_0028ef30;
LAB_0028ee69:
bVar9 = *param_1;
uVar14 = (ulong)bVar9;
if (bVar9 < 0x80) {
param_1 = param_1 + 1;
}
else {
uVar14 = (ulong)((uint)bVar9 + (param_1[1] - 1) * 0x80);
if (param_1[1] < 0x80) {
param_1 = param_1 + 2;
}
else {
auVar16 = FUN_002ea28a(param_1);
param_1 = auVar16._0_8_;
uVar14 = auVar16._8_8_ & 0xffffffff;
if (param_1 == (byte *)0x0) goto LAB_0028eec2;
}
}
uVar12 = (uint)uVar14;
cVar11 = (char)uVar14;
switch(uVar14) {
default:
if ((uVar12 & 7) == 4) goto LAB_0028f35b;
if (uVar12 != 0) goto LAB_0028f2d6;
iVar13 = -1;
goto LAB_0028f31b;
case 8:
case 9:
case 10:
case 0xb:
case 0xc:
case 0xd:
case 0xe:
case 0xf:
if (cVar11 == '\b') {
uVar15 = uVar15 | 0x20;
param_1 = (byte *)FUN_002762b0(param_1,local_48);
*(undefined4 *)&(this->data).offset_0x50 = local_48[0];
goto joined_r0x0028f0ab;
}
goto LAB_0028f2c8;
case 0x10:
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
if (cVar11 == '\x12') {
piVar7 = (int *)(this->data).offset_0x20;
param_1 = param_1 + -1;
if (piVar7 == (int *)0x0) goto LAB_0028f2a5;
LAB_0028f144:
iVar13 = *(int *)&(this->data).offset_0x18;
iVar10 = *piVar7;
if (iVar10 <= iVar13) {
iVar13 = *(int *)((long)&(this->data).offset_0x18 + 4);
if (iVar10 == iVar13) goto LAB_0028f2aa;
goto LAB_0028f1d5;
}
*(int *)&(this->data).offset_0x18 = iVar13 + 1;
bVar9 = param_1[1];
uVar6 = *(undefined8 *)(piVar7 + (long)iVar13 * 2 + 2);
if (-1 < (char)bVar9) goto LAB_0028f20d;
while (auVar16 = FUN_002ea2ec(param_1 + 1), auVar16._0_8_ != 0) {
while( true ) {
iVar10 = auVar16._8_4_ + (auVar16._0_4_ - (int)param_2[1]);
iVar13 = 0;
if (iVar10 < 1) {
iVar13 = iVar10;
}
iVar4 = *(int *)((long)param_2 + 0x1c);
*(int *)((long)param_2 + 0x1c) = iVar10;
*param_2 = param_2[1] + (long)iVar13;
plVar1 = param_2 + 0xb;
*(int *)plVar1 = (int)*plVar1 + -1;
if ((((int)*plVar1 < 0) ||
(param_1 = (byte *)FUN_00288ea0(uVar6,auVar16._0_8_,param_2), param_1 == (byte *)0x0))
|| (*(int *)(param_2 + 0xb) = (int)param_2[0xb] + 1, (int)param_2[10] != 0))
goto LAB_0028eec2;
iVar13 = *(int *)((long)param_2 + 0x1c) + (iVar4 - iVar10);
*(int *)((long)param_2 + 0x1c) = iVar13;
if (0 < iVar13) {
iVar13 = 0;
}
*param_2 = (long)iVar13 + param_2[1];
if (((byte *)((long)iVar13 + param_2[1]) <= param_1) || (*param_1 != 0x12))
goto LAB_0028ee5f;
piVar7 = (int *)(this->data).offset_0x20;
if (piVar7 != (int *)0x0) goto LAB_0028f144;
LAB_0028f2a5:
iVar13 = *(int *)((long)&(this->data).offset_0x18 + 4);
LAB_0028f2aa:
FUN_002ecbe4(&(this->data).offset_0x10,iVar13 + 1);
piVar7 = (int *)(this->data).offset_0x20;
iVar10 = *piVar7;
LAB_0028f1d5:
*piVar7 = iVar10 + 1;
CMsgShowBrowserContextMenu_ContextCommand::
CMsgShowBrowserContextMenu_ContextCommand_Constructor_or_Destructor
((this->data).offset_0x10);
iVar13 = *(int *)&(this->data).offset_0x18;
*(int *)&(this->data).offset_0x18 = iVar13 + 1;
*(undefined8 *)((this->data).offset_0x20 + 8 + (long)iVar13 * 8) = extraout_RAX;
bVar9 = param_1[1];
uVar6 = extraout_RAX;
if ((char)bVar9 < '\0') break;
LAB_0028f20d:
auVar16._8_4_ = (int)(char)bVar9;
auVar16._0_8_ = param_1 + 2;
auVar16._12_4_ = 0;
}
}
goto LAB_0028eec2;
}
goto LAB_0028f2c8;
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
if (cVar11 == '\x18') {
uVar15 = uVar15 | 0x40;
param_1 = (byte *)FUN_002762b0(param_1,local_48);
*(undefined4 *)((long)&(this->data).offset_0x50 + 4) = local_48[0];
goto joined_r0x0028f0ab;
}
goto LAB_0028f2c8;
case 0x20:
case 0x21:
case 0x22:
case 0x23:
case 0x24:
case 0x25:
case 0x26:
case 0x27:
if (cVar11 != '\"') goto LAB_0028f2c8;
uVar14 = (this->data).offset_0x0;
ppuVar3 = &(this->data).offset_0x28;
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | 1;
break;
case 0x28:
case 0x29:
case 0x2a:
case 0x2b:
case 0x2c:
case 0x2d:
case 0x2e:
case 0x2f:
if (cVar11 == '(') {
uVar15 = uVar15 | 0x80;
param_1 = (byte *)FUN_00276260(param_1,local_48);
*(undefined4 *)&(this->data).offset_0x58 = local_48[0];
goto joined_r0x0028f0ab;
}
goto LAB_0028f2c8;
case 0x30:
case 0x31:
case 0x32:
case 0x33:
case 0x34:
case 0x35:
case 0x36:
case 0x37:
if (cVar11 == '0') {
uVar15 = uVar15 | 0x100;
param_1 = (byte *)FUN_00276260(param_1,local_48);
*(undefined4 *)((long)&(this->data).offset_0x58 + 4) = local_48[0];
goto joined_r0x0028f0ab;
}
goto LAB_0028f2c8;
case 0x38:
case 0x39:
case 0x3a:
case 0x3b:
case 0x3c:
case 0x3d:
case 0x3e:
case 0x3f:
if (cVar11 != ':') goto LAB_0028f2c8;
uVar14 = (this->data).offset_0x0;
ppuVar3 = &(this->data).offset_0x30;
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | 2;
break;
case 0x40:
case 0x41:
case 0x42:
case 0x43:
case 0x44:
case 0x45:
case 0x46:
case 0x47:
if (cVar11 != 'B') goto LAB_0028f2c8;
uVar14 = (this->data).offset_0x0;
ppuVar3 = &(this->data).offset_0x38;
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | 4;
break;
case 0x48:
case 0x49:
case 0x4a:
case 0x4b:
case 0x4c:
case 0x4d:
case 0x4e:
case 0x4f:
if (cVar11 != 'J') goto LAB_0028f2c8;
uVar14 = (this->data).offset_0x0;
ppuVar3 = &(this->data).offset_0x40;
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | 8;
break;
case 0x50:
case 0x51:
case 0x52:
case 0x53:
case 0x54:
case 0x55:
case 0x56:
case 0x57:
if (cVar11 != 'R') goto LAB_0028f2c8;
uVar14 = (this->data).offset_0x0;
ppuVar3 = &(this->data).offset_0x48;
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | 0x10;
break;
case 0x58:
case 0x59:
case 0x5a:
case 0x5b:
case 0x5c:
case 0x5d:
case 0x5e:
case 0x5f:
if (cVar11 == 'X') {
uVar15 = uVar15 | 0x200;
param_1 = (byte *)FUN_002762b0(param_1,local_48);
(this->data).offset_0x60 = local_48[0];
if (param_1 != (byte *)0x0) goto code_r0x0028ef1f;
goto LAB_0028eec2;
}
goto LAB_0028f2c8;
}
if ((uVar14 & 3) == 0) {
uVar14 = uVar14 & 0xfffffffffffffffc;
}
else if ((uVar14 & 2) == 0) {
uVar14 = *(ulong *)(uVar14 & 0xfffffffffffffffc);
}
else {
uVar14 = 0;
}
uVar6 = FUN_002d7f56(ppuVar3,uVar14);
param_1 = (byte *)FUN_002ea63f(uVar6,param_1,param_2);
goto joined_r0x0028f0ab;
code_r0x0028ef1f:
if ((byte *)*param_2 <= param_1) {
LAB_0028ef30:
iVar13 = (int)((long)param_1 - param_2[1]);
if (iVar13 == *(int *)((long)param_2 + 0x1c)) {
if ((iVar13 < 1) || (param_2[2] != 0)) goto LAB_0028eec4;
goto LAB_0028eec2;
}
param_1 = (byte *)FUN_002ea7d8(param_2,(long)param_1 - param_2[1] & 0xffffffff,
*(undefined4 *)((long)param_2 + 0x5c));
if (extraout_DL != '\0') goto LAB_0028eec4;
}
goto LAB_0028ee69;
LAB_0028f2c8:
if ((uVar12 & 7) == 4) {
LAB_0028f35b:
iVar13 = uVar12 - 1;
LAB_0028f31b:
*(int *)(param_2 + 10) = iVar13;
goto LAB_0028eec4;
}
LAB_0028f2d6:
uVar5 = (this->data).offset_0x0;
if ((uVar5 & 1) == 0) {
lVar8 = FUN_002762f0(&this->data);
}
else {
lVar8 = (uVar5 & 0xfffffffffffffffc) + 8;
}
param_1 = (byte *)FUN_003589df(uVar14,lVar8,param_1,param_2);
joined_r0x0028f0ab:
if (param_1 == (byte *)0x0) {
LAB_0028eec2:
param_1 = (byte *)0x0;
LAB_0028eec4:
puVar2 = &(this->data).offset_0x8;
*(uint *)puVar2 = *(uint *)puVar2 | uVar15;
if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
return param_1;
}
/* WARNING: Subroutine does not return */
FUN_00219340();
}
goto LAB_0028ee5f;
}
// 00291c60 CMsgShowBrowserContextMenu::~CMsgShowBrowserContextMenu
/* WARNING: Removing unreachable block (ram,0x00291ee0) */
/* WARNING: Removing unreachable block (ram,0x00291f00) */
/* WARNING: Removing unreachable block (ram,0x00291f10) */
/* WARNING: Removing unreachable block (ram,0x00291ef0) */
/* WARNING: Removing unreachable block (ram,0x00291ed0) */
void __thiscall
CMsgShowBrowserContextMenu::~CMsgShowBrowserContextMenu(CMsgShowBrowserContextMenu *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_0x28;
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_0x30;
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_0x38;
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_0x40;
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_0x48;
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_00291ac0(&(this->data).offset_0x10);
return;
}
// 00291f20 CMsgShowBrowserContextMenu::~CMsgShowBrowserContextMenu
/* WARNING: Removing unreachable block (ram,0x002921b0) */
/* WARNING: Removing unreachable block (ram,0x002921d0) */
/* WARNING: Removing unreachable block (ram,0x002921e0) */
/* WARNING: Removing unreachable block (ram,0x002921c0) */
/* WARNING: Removing unreachable block (ram,0x002921a0) */
void __thiscall
CMsgShowBrowserContextMenu::~CMsgShowBrowserContextMenu(CMsgShowBrowserContextMenu *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_0x28;
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_0x30;
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_0x38;
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_0x40;
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_0x48;
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();
}
FUN_00291ac0(&(this->data).offset_0x10);
if (lStack_20 != *(long *)(in_FS_OFFSET + 0x28)) {
/* WARNING: Subroutine does not return */
FUN_00219340();
}
FUN_0039deb8(this,0x70);
return;
}
// 002b1990 CMsgShowBrowserContextMenu::vfunction6
/* WARNING: Removing unreachable block (ram,0x002b1af0) */
/* WARNING: Removing unreachable block (ram,0x002b1c39) */
/* WARNING: Type propagation algorithm not settling */
void __thiscall CMsgShowBrowserContextMenu::vfunction6(CMsgShowBrowserContextMenu *this)
{
undefined8 *puVar1;
int *piVar2;
long lVar3;
int iVar4;
uint uVar5;
long lVar6;
undefined1 *puVar7;
long lVar8;
long *plVar9;
long in_FS_OFFSET;
undefined1 local_41;
long local_40;
iVar4 = *(int *)&(this->data).offset_0x18;
local_40 = *(long *)(in_FS_OFFSET + 0x28);
if (0 < iVar4) {
lVar8 = (this->data).offset_0x20;
lVar3 = lVar8 + (long)iVar4 * 8;
do {
while( true ) {
lVar6 = *(long *)(lVar8 + 8);
if ((*(byte *)(lVar6 + 0x10) & 1) != 0) {
plVar9 = (long *)(*(ulong *)(lVar6 + 0x18) & 0xfffffffffffffffe);
if (*(int *)(*plVar9 + -8) < 1) {
puVar7 = (undefined1 *)*plVar9;
if (puVar7 != &DAT_0046e8b8) {
*(undefined4 *)(puVar7 + -8) = 0;
*(undefined8 *)(puVar7 + -0x18) = 0;
*puVar7 = 0;
}
}
else {
puVar1 = (undefined8 *)(*plVar9 + -0x18);
if (puVar1 != &DAT_0046e8a0) {
LOCK();
piVar2 = (int *)(*plVar9 + -8);
iVar4 = *piVar2;
*piVar2 = *piVar2 + -1;
UNLOCK();
if (iVar4 < 1) {
FUN_003ce482(puVar1,&local_41);
}
}
*plVar9 = (long)&DAT_0046e8b8;
}
}
*(undefined4 *)(lVar6 + 0x20) = 0;
*(undefined4 *)(lVar6 + 0x10) = 0;
if ((*(byte *)(lVar6 + 8) & 1) == 0) break;
lVar8 = lVar8 + 8;
FUN_002a4470(lVar6 + 8);
if (lVar3 == lVar8) goto LAB_002b1a62;
}
lVar8 = lVar8 + 8;
} while (lVar3 != lVar8);
LAB_002b1a62:
*(undefined4 *)&(this->data).offset_0x18 = 0;
}
uVar5 = *(uint *)&(this->data).offset_0x8;
if ((uVar5 & 0x1f) != 0) {
if ((uVar5 & 1) != 0) {
FUN_003cb078((ulong)(this->data).offset_0x28 & 0xfffffffffffffffe);
}
if ((uVar5 & 2) != 0) {
FUN_003cb078((ulong)(this->data).offset_0x30 & 0xfffffffffffffffe);
}
if ((uVar5 & 4) != 0) {
FUN_003cb078((ulong)(this->data).offset_0x38 & 0xfffffffffffffffe);
}
if ((uVar5 & 8) != 0) {
FUN_003cb078((ulong)(this->data).offset_0x40 & 0xfffffffffffffffe);
}
if ((uVar5 & 0x10) != 0) {
FUN_003cb078((ulong)(this->data).offset_0x48 & 0xfffffffffffffffe);
}
}
if ((uVar5 & 0xe0) != 0) {
(this->data).offset_0x50 = 0;
*(undefined4 *)&(this->data).offset_0x58 = 0;
}
if ((uVar5 & 0x300) != 0) {
*(undefined8 *)((long)&(this->data).offset_0x58 + 4) = 0;
}
*(undefined4 *)&(this->data).offset_0x8 = 0;
if (((this->data).offset_0x0 & 1) == 0) {
if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
return;
}
}
else if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
FUN_002a4470(&this->data);
return;
}
/* WARNING: Subroutine does not return */
FUN_00219340();
}
// 002c7c20 CMsgShowBrowserContextMenu::vfunction16
/* WARNING: Type propagation algorithm not settling */
void __thiscall
CMsgShowBrowserContextMenu::vfunction16(CMsgShowBrowserContextMenu *this,undefined8 param_1)
{
uint uVar1;
ulong uVar2;
undefined8 *puVar3;
undefined8 uVar4;
int *piVar5;
int iVar6;
int iVar7;
long lVar8;
undefined8 *puVar9;
undefined8 extraout_RAX;
long lVar10;
ulong uVar11;
int iVar12;
undefined8 *puVar13;
undefined8 *puVar14;
long lVar15;
lVar10 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
if (lVar10 == 0) {
FUN_0034dd68(param_1,this);
return;
}
uVar2 = *(ulong *)(lVar10 + 8);
if ((uVar2 & 1) != 0) {
if ((uVar2 & 1) == 0) {
lVar8 = (*(code *)(ulong)((uint)uVar2 & 1))();
}
else {
lVar8 = (uVar2 & 0xfffffffffffffffc) + 8;
}
FUN_002921f0(&this->data,lVar8);
}
iVar12 = *(int *)(lVar10 + 0x20);
if (iVar12 != 0) {
puVar3 = *(undefined8 **)(lVar10 + 0x28);
puVar9 = (undefined8 *)FUN_002ecb28(&(this->data).offset_0x10,iVar12);
iVar7 = *(int *)(this->data).offset_0x20 - *(int *)&(this->data).offset_0x18;
iVar6 = iVar7;
if (iVar12 <= iVar7) {
iVar6 = iVar12;
}
if (0 < iVar6) {
puVar13 = puVar9;
puVar14 = puVar3;
do {
puVar14 = puVar14 + 1;
uVar4 = *puVar13;
puVar13 = puVar13 + 1;
FUN_002c7400(*puVar14,uVar4);
} while (puVar9 + iVar6 != puVar13);
}
lVar15 = (long)iVar7;
lVar8 = (this->data).offset_0x10;
while (iVar7 < iVar12) {
uVar4 = puVar3[lVar15 + 1];
CMsgShowBrowserContextMenu_ContextCommand::
CMsgShowBrowserContextMenu_ContextCommand_Constructor_or_Destructor(lVar8);
FUN_002c7400(uVar4,extraout_RAX);
puVar9[lVar15] = extraout_RAX;
lVar15 = lVar15 + 1;
iVar7 = (int)lVar15;
}
iVar12 = iVar12 + *(int *)&(this->data).offset_0x18;
piVar5 = (int *)(this->data).offset_0x20;
*(int *)&(this->data).offset_0x18 = iVar12;
if (*piVar5 < iVar12) {
*piVar5 = iVar12;
}
}
uVar1 = *(uint *)(lVar10 + 0x10);
if ((char)uVar1 != '\0') {
if ((uVar1 & 1) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x30);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 1;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x28,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 2) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x38);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 2;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x30,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 4) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x40);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 4;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x38,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 8) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x48);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 8;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x40,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 0x10) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x50);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 0x10;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x48,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 0x20) != 0) {
*(undefined4 *)&(this->data).offset_0x50 = *(undefined4 *)(lVar10 + 0x58);
}
if ((uVar1 & 0x40) != 0) {
*(undefined4 *)((long)&(this->data).offset_0x50 + 4) = *(undefined4 *)(lVar10 + 0x5c);
}
if ((uVar1 & 0x80) != 0) {
*(undefined4 *)&(this->data).offset_0x58 = *(undefined4 *)(lVar10 + 0x60);
}
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | uVar1;
}
if ((uVar1 & 0x300) != 0) {
if ((uVar1 & 0x100) != 0) {
*(undefined4 *)((long)&(this->data).offset_0x58 + 4) = *(undefined4 *)(lVar10 + 100);
}
if ((uVar1 & 0x200) != 0) {
(this->data).offset_0x60 = *(undefined4 *)(lVar10 + 0x68);
}
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | uVar1;
}
return;
}
// 002c7cc0 CMsgShowBrowserContextMenu::vfunction15
/* WARNING: Type propagation algorithm not settling */
void __thiscall
CMsgShowBrowserContextMenu::vfunction15
(CMsgShowBrowserContextMenu *this,CMsgShowBrowserContextMenu *param_1)
{
uint uVar1;
ulong uVar2;
undefined8 *puVar3;
undefined8 uVar4;
int *piVar5;
int iVar6;
int iVar7;
long lVar8;
undefined8 *puVar9;
undefined8 extraout_RAX;
long lVar10;
ulong uVar11;
int iVar12;
undefined8 *puVar13;
undefined8 *puVar14;
long lVar15;
if (this == param_1) {
return;
}
vfunction6(this);
lVar10 = FUN_0039e006(param_1,&google::protobuf::Message::typeinfo,&typeinfo,0);
if (lVar10 == 0) {
FUN_0034dd68(param_1,this);
return;
}
uVar2 = *(ulong *)(lVar10 + 8);
if ((uVar2 & 1) != 0) {
if ((uVar2 & 1) == 0) {
lVar8 = (*(code *)(ulong)((uint)uVar2 & 1))();
}
else {
lVar8 = (uVar2 & 0xfffffffffffffffc) + 8;
}
FUN_002921f0(&this->data,lVar8);
}
iVar12 = *(int *)(lVar10 + 0x20);
if (iVar12 != 0) {
puVar3 = *(undefined8 **)(lVar10 + 0x28);
puVar9 = (undefined8 *)FUN_002ecb28(&(this->data).offset_0x10,iVar12);
iVar7 = *(int *)(this->data).offset_0x20 - *(int *)&(this->data).offset_0x18;
iVar6 = iVar7;
if (iVar12 <= iVar7) {
iVar6 = iVar12;
}
if (0 < iVar6) {
puVar13 = puVar9;
puVar14 = puVar3;
do {
puVar14 = puVar14 + 1;
uVar4 = *puVar13;
puVar13 = puVar13 + 1;
FUN_002c7400(*puVar14,uVar4);
} while (puVar9 + iVar6 != puVar13);
}
lVar15 = (long)iVar7;
lVar8 = (this->data).offset_0x10;
while (iVar7 < iVar12) {
uVar4 = puVar3[lVar15 + 1];
CMsgShowBrowserContextMenu_ContextCommand::
CMsgShowBrowserContextMenu_ContextCommand_Constructor_or_Destructor(lVar8);
FUN_002c7400(uVar4,extraout_RAX);
puVar9[lVar15] = extraout_RAX;
lVar15 = lVar15 + 1;
iVar7 = (int)lVar15;
}
iVar12 = iVar12 + *(int *)&(this->data).offset_0x18;
piVar5 = (int *)(this->data).offset_0x20;
*(int *)&(this->data).offset_0x18 = iVar12;
if (*piVar5 < iVar12) {
*piVar5 = iVar12;
}
}
uVar1 = *(uint *)(lVar10 + 0x10);
if ((char)uVar1 != '\0') {
if ((uVar1 & 1) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x30);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 1;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x28,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 2) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x38);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 2;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x30,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 4) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x40);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 4;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x38,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 8) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x48);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 8;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x40,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 0x10) != 0) {
uVar2 = *(ulong *)(lVar10 + 0x50);
uVar11 = (this->data).offset_0x0;
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | 0x10;
if ((uVar11 & 3) == 0) {
uVar11 = uVar11 & 0xfffffffffffffffc;
}
else if ((uVar11 & 2) == 0) {
uVar11 = *(ulong *)(uVar11 & 0xfffffffffffffffc);
}
else {
uVar11 = 0;
}
FUN_002d7f16(&(this->data).offset_0x48,uVar2 & 0xfffffffffffffffe,uVar11);
}
if ((uVar1 & 0x20) != 0) {
*(undefined4 *)&(this->data).offset_0x50 = *(undefined4 *)(lVar10 + 0x58);
}
if ((uVar1 & 0x40) != 0) {
*(undefined4 *)((long)&(this->data).offset_0x50 + 4) = *(undefined4 *)(lVar10 + 0x5c);
}
if ((uVar1 & 0x80) != 0) {
*(undefined4 *)&(this->data).offset_0x58 = *(undefined4 *)(lVar10 + 0x60);
}
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | uVar1;
}
if ((uVar1 & 0x300) != 0) {
if ((uVar1 & 0x100) != 0) {
*(undefined4 *)((long)&(this->data).offset_0x58 + 4) = *(undefined4 *)(lVar10 + 100);
}
if ((uVar1 & 0x200) != 0) {
(this->data).offset_0x60 = *(undefined4 *)(lVar10 + 0x68);
}
puVar3 = &(this->data).offset_0x8;
*(uint *)puVar3 = *(uint *)puVar3 | uVar1;
}
return;
}