403 lines
9.3 KiB
C
403 lines
9.3 KiB
C
// 0024fa80 CMsgSetUIMode::vfunction13
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction13(CMsgSetUIMode *this,byte *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
byte *pbVar2;
|
|
byte bVar3;
|
|
ulong uVar4;
|
|
ulong uVar5;
|
|
byte *pbVar6;
|
|
|
|
if ((*(byte *)&(this->data).offset_0x8 & 1) != 0) {
|
|
if ((byte *)*param_2 <= param_1) {
|
|
param_1 = (byte *)FUN_002f822a(param_2);
|
|
}
|
|
iVar1 = *(int *)&(this->data).offset_0xc;
|
|
uVar4 = (ulong)iVar1;
|
|
*param_1 = 8;
|
|
bVar3 = (byte)iVar1;
|
|
if (uVar4 < 0x80) {
|
|
param_1[1] = bVar3;
|
|
uVar4 = (this->data).offset_0x0;
|
|
param_1 = param_1 + 2;
|
|
goto joined_r0x0024fb07;
|
|
}
|
|
param_1[1] = bVar3 | 0x80;
|
|
uVar5 = uVar4 >> 7;
|
|
pbVar2 = param_1 + 2;
|
|
if (uVar4 < 0x4000) {
|
|
param_1[2] = (byte)(uVar4 >> 7);
|
|
param_1 = param_1 + 3;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar6 = pbVar2;
|
|
uVar4 = uVar5 >> 7;
|
|
*pbVar6 = (byte)uVar5 | 0x80;
|
|
uVar5 = uVar4;
|
|
pbVar2 = pbVar6 + 1;
|
|
} while (0x7f < uVar4);
|
|
param_1 = pbVar6 + 2;
|
|
pbVar6[1] = (byte)uVar4;
|
|
}
|
|
}
|
|
uVar4 = (this->data).offset_0x0;
|
|
joined_r0x0024fb07:
|
|
if ((uVar4 & 1) != 0) {
|
|
FUN_00359676((uVar4 & 0xfffffffffffffffc) + 8,param_1,param_2);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 00252380 CMsgSetUIMode::vfunction10
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction10(CMsgSetUIMode *this)
|
|
|
|
{
|
|
uint uVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
if ((*(byte *)&(this->data).offset_0x8 & 1) != 0) {
|
|
uVar1 = *(uint *)&(this->data).offset_0xc;
|
|
if ((int)uVar1 < 0) {
|
|
iVar2 = 0xb;
|
|
}
|
|
else {
|
|
uVar1 = uVar1 | 1;
|
|
iVar2 = 0x1f;
|
|
if (uVar1 != 0) {
|
|
for (; uVar1 >> iVar2 == 0; iVar2 = iVar2 + -1) {
|
|
}
|
|
}
|
|
iVar2 = (iVar2 * 9 + 0x49U >> 6) + 1;
|
|
}
|
|
}
|
|
if (((this->data).offset_0x0 & 1) == 0) {
|
|
*(int *)&(this->data).field_0xc = iVar2;
|
|
return;
|
|
}
|
|
FUN_00359fe2(&this->data,iVar2,&(this->data).field_0xc);
|
|
return;
|
|
}
|
|
|
|
|
|
// 002525f0 CMsgSetUIMode::vfunction11
|
|
|
|
undefined4 __thiscall CMsgSetUIMode::vfunction11(CMsgSetUIMode *this)
|
|
|
|
{
|
|
return *(undefined4 *)&(this->data).field_0xc;
|
|
}
|
|
|
|
|
|
// 002582b0 CMsgSetUIMode::~CMsgSetUIMode
|
|
|
|
void __thiscall CMsgSetUIMode::~CMsgSetUIMode(CMsgSetUIMode *this)
|
|
|
|
{
|
|
ulong uVar1;
|
|
|
|
this->vftablePtr = &vftable;
|
|
uVar1 = (this->data).offset_0x0;
|
|
if ((((uVar1 & 1) != 0) && ((uVar1 & 3) != 0)) &&
|
|
(((uVar1 & 2) != 0 || (*(long *)(uVar1 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0025a950 CMsgSetUIMode::~CMsgSetUIMode
|
|
|
|
void __thiscall CMsgSetUIMode::~CMsgSetUIMode(CMsgSetUIMode *this)
|
|
|
|
{
|
|
ulong uVar1;
|
|
|
|
this->vftablePtr = &vftable;
|
|
uVar1 = (this->data).offset_0x0;
|
|
if ((((uVar1 & 1) != 0) && ((uVar1 & 3) != 0)) &&
|
|
(((uVar1 & 2) != 0 || (*(long *)(uVar1 & 0xfffffffffffffffc) == 0)))) {
|
|
FUN_002564b0();
|
|
FUN_0039deb8(this,0x20);
|
|
return;
|
|
}
|
|
FUN_0039deb8(this,0x20);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0026cf80 CMsgSetUIMode::vfunction20
|
|
|
|
undefined1 [16] __thiscall CMsgSetUIMode::vfunction20(void)
|
|
|
|
{
|
|
FUN_0033e2d0(&DAT_00466400,0);
|
|
return *(undefined1 (*) [16])(PTR_DAT_00466448 + 0x9e0);
|
|
}
|
|
|
|
|
|
// 0026f7a0 CMsgSetUIMode::CMsgSetUIMode
|
|
|
|
void __thiscall CMsgSetUIMode::CMsgSetUIMode(CMsgSetUIMode *this,ulong param_1)
|
|
|
|
{
|
|
(this->data).offset_0x0 = param_1;
|
|
this->vftablePtr = &vftable;
|
|
(this->data).offset_0x8 = 0;
|
|
*(undefined8 *)&(this->data).field_0xc = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00275e10 CMsgSetUIMode::vfunction5
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction5(CMsgSetUIMode *this,long param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
if (param_1 != 0) {
|
|
puVar1 = (undefined8 *)thunk_FUN_002d7d08(param_1,0x20,&typeinfo);
|
|
puVar1[1] = param_1;
|
|
*puVar1 = &vftable;
|
|
*(undefined4 *)(puVar1 + 2) = 0;
|
|
*(undefined8 *)((long)puVar1 + 0x14) = 0;
|
|
return;
|
|
}
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x20);
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
*(undefined4 *)(puVar1 + 2) = 0;
|
|
*(undefined8 *)((long)puVar1 + 0x14) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00275e20 CMsgSetUIMode::CMsgSetUIMode_Constructor_or_Destructor
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00275da6) */
|
|
|
|
void __thiscall CMsgSetUIMode::CMsgSetUIMode_Constructor_or_Destructor(CMsgSetUIMode *this)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
|
|
puVar1 = (undefined8 *)FUN_003a1a2c(0x20);
|
|
puVar1[1] = 0;
|
|
*puVar1 = &vftable;
|
|
*(undefined4 *)(puVar1 + 2) = 0;
|
|
*(undefined8 *)((long)puVar1 + 0x14) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0028b570 CMsgSetUIMode::vfunction12
|
|
|
|
byte * __thiscall CMsgSetUIMode::vfunction12(CMsgSetUIMode *this,byte *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
byte bVar2;
|
|
ulong uVar3;
|
|
uint uVar4;
|
|
long lVar5;
|
|
char extraout_DL;
|
|
byte *pbVar6;
|
|
uint uVar7;
|
|
int iVar8;
|
|
ulong uVar9;
|
|
uint uVar10;
|
|
long in_FS_OFFSET;
|
|
undefined1 auVar11 [12];
|
|
undefined8 local_38;
|
|
long local_30;
|
|
|
|
uVar10 = 0;
|
|
local_30 = *(long *)(in_FS_OFFSET + 0x28);
|
|
do {
|
|
if ((byte *)*param_2 <= param_1) goto LAB_0028b695;
|
|
LAB_0028b5a2:
|
|
bVar2 = *param_1;
|
|
uVar9 = (ulong)bVar2;
|
|
pbVar6 = param_1 + 1;
|
|
if (bVar2 < 0x80) {
|
|
LAB_0028b5c7:
|
|
uVar4 = (uint)(uVar9 >> 3);
|
|
param_1 = pbVar6;
|
|
}
|
|
else {
|
|
uVar9 = (ulong)((uint)bVar2 + (param_1[1] - 1) * 0x80);
|
|
if (param_1[1] < 0x80) {
|
|
pbVar6 = param_1 + 2;
|
|
goto LAB_0028b5c7;
|
|
}
|
|
auVar11 = FUN_002ea28a();
|
|
uVar9 = (ulong)auVar11._8_4_;
|
|
if (auVar11._0_8_ == (byte *)0x0) goto LAB_0028b614;
|
|
uVar4 = auVar11._8_4_ >> 3;
|
|
param_1 = auVar11._0_8_;
|
|
}
|
|
uVar7 = (uint)uVar9;
|
|
if (uVar4 != 1) {
|
|
if ((uVar7 & 7) == 4) goto LAB_0028b710;
|
|
if (uVar7 != 0) goto LAB_0028b5eb;
|
|
iVar8 = -1;
|
|
goto LAB_0028b713;
|
|
}
|
|
if ((char)uVar9 == '\b') {
|
|
param_1 = (byte *)FUN_00276260(param_1,&local_38);
|
|
*(int *)&(this->data).offset_0xc = (int)local_38;
|
|
if (param_1 == (byte *)0x0) {
|
|
param_1 = (byte *)0x0;
|
|
uVar10 = 1;
|
|
goto LAB_0028b616;
|
|
}
|
|
uVar10 = 1;
|
|
if ((byte *)*param_2 <= param_1) {
|
|
LAB_0028b695:
|
|
iVar8 = (int)((long)param_1 - param_2[1]);
|
|
if (iVar8 == *(int *)((long)param_2 + 0x1c)) {
|
|
if ((iVar8 < 1) || (param_2[2] != 0)) goto LAB_0028b616;
|
|
goto LAB_0028b614;
|
|
}
|
|
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_0028b616;
|
|
}
|
|
goto LAB_0028b5a2;
|
|
}
|
|
if ((uVar7 & 7) == 4) {
|
|
LAB_0028b710:
|
|
iVar8 = uVar7 - 1;
|
|
LAB_0028b713:
|
|
*(int *)(param_2 + 10) = iVar8;
|
|
goto LAB_0028b616;
|
|
}
|
|
LAB_0028b5eb:
|
|
uVar3 = (this->data).offset_0x0;
|
|
if ((uVar3 & 1) == 0) {
|
|
lVar5 = FUN_002762f0(&this->data);
|
|
}
|
|
else {
|
|
lVar5 = (uVar3 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
param_1 = (byte *)FUN_003589df(uVar9,lVar5,param_1,param_2);
|
|
if (param_1 == (byte *)0x0) {
|
|
LAB_0028b614:
|
|
param_1 = (byte *)0x0;
|
|
LAB_0028b616:
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*puVar1 = *puVar1 | uVar10;
|
|
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
|
|
return param_1;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_00219340();
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
// 002a0900 CMsgSetUIMode::vfunction16
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction16(CMsgSetUIMode *this,undefined8 param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined4 uVar2;
|
|
ulong uVar3;
|
|
long lVar4;
|
|
long lVar5;
|
|
|
|
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);
|
|
}
|
|
if ((*(byte *)(lVar4 + 0x10) & 1) != 0) {
|
|
uVar2 = *(undefined4 *)(lVar4 + 0x18);
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*puVar1 = *puVar1 | 1;
|
|
*(undefined4 *)&(this->data).offset_0xc = uVar2;
|
|
}
|
|
return;
|
|
}
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 002a90f0 CMsgSetUIMode::vfunction6
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction6(CMsgSetUIMode *this)
|
|
|
|
{
|
|
*(undefined4 *)&(this->data).offset_0xc = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
if (((this->data).offset_0x0 & 1) == 0) {
|
|
return;
|
|
}
|
|
FUN_002a4470(&this->data);
|
|
return;
|
|
}
|
|
|
|
|
|
// 002ad7f0 CMsgSetUIMode::vfunction15
|
|
|
|
void __thiscall CMsgSetUIMode::vfunction15(CMsgSetUIMode *this,CMsgSetUIMode *param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined4 uVar2;
|
|
ulong uVar3;
|
|
long lVar4;
|
|
long lVar5;
|
|
|
|
if (this == param_1) {
|
|
return;
|
|
}
|
|
*(undefined4 *)&(this->data).offset_0xc = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
if (((this->data).offset_0x0 & 1) != 0) {
|
|
FUN_002a4470(&this->data);
|
|
}
|
|
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);
|
|
}
|
|
if ((*(byte *)(lVar4 + 0x10) & 1) != 0) {
|
|
uVar2 = *(undefined4 *)(lVar4 + 0x18);
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*puVar1 = *puVar1 | 1;
|
|
*(undefined4 *)&(this->data).offset_0xc = uVar2;
|
|
}
|
|
return;
|
|
}
|
|
FUN_0034dd68(param_1,this);
|
|
return;
|
|
}
|
|
|
|
|