1670 lines
46 KiB
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;
|
|
}
|
|
|
|
|