536 lines
15 KiB
C
536 lines
15 KiB
C
// 00321c7c google::protobuf::SourceCodeInfo_Location::vfunction13
|
|
|
|
byte * __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction13
|
|
(SourceCodeInfo_Location *this,byte *param_1,long *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
byte *pbVar2;
|
|
int iVar3;
|
|
undefined1 *puVar4;
|
|
undefined8 uVar5;
|
|
byte *pbVar6;
|
|
long *plVar7;
|
|
long lVar8;
|
|
ulong uVar9;
|
|
ulong uVar10;
|
|
int iVar11;
|
|
byte bVar12;
|
|
uint uVar13;
|
|
int *piVar14;
|
|
int *piVar15;
|
|
byte bVar16;
|
|
undefined1 local_59;
|
|
undefined1 local_58 [40];
|
|
|
|
bVar16 = 0;
|
|
uVar13 = *(uint *)&(this->data).field_0x20;
|
|
if (0 < (int)uVar13) {
|
|
puVar4 = (undefined1 *)FUN_002e292a(param_2);
|
|
if ((undefined1 *)*param_2 <= puVar4) {
|
|
FUN_002d0582(local_58,3,"./google/protobuf/io/coded_stream.h",0x35e);
|
|
uVar5 = FUN_002d001e(local_58,"CHECK failed: ptr < end_: ");
|
|
FUN_002d0858(&local_59,uVar5);
|
|
FUN_002d059c(local_58);
|
|
}
|
|
*puVar4 = 10;
|
|
pbVar6 = puVar4 + 1;
|
|
while( true ) {
|
|
param_1 = pbVar6 + 1;
|
|
bVar12 = (byte)uVar13;
|
|
if (uVar13 < 0x80) break;
|
|
uVar13 = uVar13 >> 7;
|
|
*pbVar6 = bVar12 | 0x80;
|
|
pbVar6 = param_1;
|
|
}
|
|
*pbVar6 = bVar12;
|
|
piVar1 = (int *)(this->data).offset_0x18;
|
|
iVar3 = *(int *)&(this->data).offset_0x10;
|
|
piVar15 = piVar1;
|
|
do {
|
|
piVar14 = piVar15 + 1;
|
|
pbVar6 = (byte *)FUN_002e292a(param_2,param_1);
|
|
uVar10 = (ulong)*piVar15;
|
|
bVar12 = (byte)*piVar15;
|
|
if (uVar10 < 0x80) {
|
|
*pbVar6 = bVar12;
|
|
param_1 = pbVar6 + 1;
|
|
}
|
|
else {
|
|
*pbVar6 = bVar12 | 0x80;
|
|
pbVar2 = pbVar6 + 1;
|
|
uVar9 = uVar10 >> 7;
|
|
if (uVar10 < 0x4000) {
|
|
pbVar6[1] = (byte)(uVar10 >> 7);
|
|
param_1 = pbVar6 + 2;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar6 = pbVar2;
|
|
uVar10 = uVar9 >> 7;
|
|
*pbVar6 = (byte)uVar9 | 0x80;
|
|
pbVar2 = pbVar6 + 1;
|
|
uVar9 = uVar10;
|
|
} while (0x7f < uVar10);
|
|
pbVar6[1] = (byte)uVar10;
|
|
param_1 = pbVar6 + 2;
|
|
}
|
|
}
|
|
piVar15 = piVar14;
|
|
} while (piVar14 < piVar1 + iVar3);
|
|
}
|
|
uVar13 = *(uint *)&(this->data).field_0x38;
|
|
if (0 < (int)uVar13) {
|
|
puVar4 = (undefined1 *)FUN_002e292a(param_2,param_1);
|
|
if ((undefined1 *)*param_2 <= puVar4) {
|
|
FUN_002d0582(local_58,3,"./google/protobuf/io/coded_stream.h",0x35e);
|
|
uVar5 = FUN_002d001e(local_58,"CHECK failed: ptr < end_: ");
|
|
FUN_002d0858(&local_59,uVar5);
|
|
FUN_002d059c(local_58);
|
|
}
|
|
*puVar4 = 0x12;
|
|
pbVar6 = puVar4 + 1;
|
|
while( true ) {
|
|
param_1 = pbVar6 + 1;
|
|
bVar12 = (byte)uVar13;
|
|
if (uVar13 < 0x80) break;
|
|
uVar13 = uVar13 >> 7;
|
|
*pbVar6 = bVar12 | 0x80;
|
|
pbVar6 = param_1;
|
|
}
|
|
*pbVar6 = bVar12;
|
|
piVar1 = (int *)(this->data).offset_0x30;
|
|
iVar3 = *(int *)&(this->data).offset_0x28;
|
|
piVar15 = piVar1;
|
|
do {
|
|
piVar14 = piVar15 + 1;
|
|
pbVar6 = (byte *)FUN_002e292a(param_2,param_1);
|
|
uVar10 = (ulong)*piVar15;
|
|
bVar12 = (byte)*piVar15;
|
|
if (uVar10 < 0x80) {
|
|
*pbVar6 = bVar12;
|
|
param_1 = pbVar6 + 1;
|
|
}
|
|
else {
|
|
*pbVar6 = bVar12 | 0x80;
|
|
pbVar2 = pbVar6 + 1;
|
|
uVar9 = uVar10 >> 7;
|
|
if (uVar10 < 0x4000) {
|
|
pbVar6[1] = (byte)(uVar10 >> 7);
|
|
param_1 = pbVar6 + 2;
|
|
}
|
|
else {
|
|
do {
|
|
pbVar6 = pbVar2;
|
|
uVar10 = uVar9 >> 7;
|
|
*pbVar6 = (byte)uVar9 | 0x80;
|
|
pbVar2 = pbVar6 + 1;
|
|
uVar9 = uVar10;
|
|
} while (0x7f < uVar10);
|
|
pbVar6[1] = (byte)uVar10;
|
|
param_1 = pbVar6 + 2;
|
|
}
|
|
}
|
|
piVar15 = piVar14;
|
|
} while (piVar14 < piVar1 + iVar3);
|
|
}
|
|
uVar13 = (this->data).offset_0x8;
|
|
if ((uVar13 & 1) != 0) {
|
|
lVar8 = *(long *)((ulong)(this->data).offset_0x58 & 0xfffffffffffffffe);
|
|
FUN_002f6a1c(lVar8,*(undefined4 *)(lVar8 + -0x18),1,
|
|
"google.protobuf.SourceCodeInfo.Location.leading_comments");
|
|
param_1 = (byte *)FUN_002680e0(param_2,3,(ulong)(this->data).offset_0x58 & 0xfffffffffffffffe,
|
|
param_1);
|
|
}
|
|
if ((uVar13 & 2) != 0) {
|
|
lVar8 = *(long *)((ulong)(this->data).offset_0x60 & 0xfffffffffffffffe);
|
|
FUN_002f6a1c(lVar8,*(undefined4 *)(lVar8 + -0x18),1,
|
|
"google.protobuf.SourceCodeInfo.Location.trailing_comments");
|
|
param_1 = (byte *)FUN_002680e0(param_2,4,(ulong)(this->data).offset_0x60 & 0xfffffffffffffffe,
|
|
param_1);
|
|
}
|
|
puVar4 = &(this->data).field_0x40;
|
|
iVar3 = FUN_002f38c2(puVar4);
|
|
for (iVar11 = 0; iVar11 < iVar3; iVar11 = iVar11 + 1) {
|
|
plVar7 = (long *)thunk_FUN_002f4b80(puVar4,iVar11);
|
|
FUN_002f6a1c(*plVar7,*(undefined4 *)(*plVar7 + -0x18),1,
|
|
"google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
|
|
lVar8 = *(long *)(*plVar7 + -0x18);
|
|
if ((lVar8 < 0x80) && (lVar8 < (*param_2 - (long)param_1) + 0xf)) {
|
|
*param_1 = 0x32;
|
|
param_1[1] = (byte)lVar8;
|
|
pbVar6 = (byte *)*plVar7;
|
|
param_1 = param_1 + 2;
|
|
for (; lVar8 != 0; lVar8 = lVar8 + -1) {
|
|
*param_1 = *pbVar6;
|
|
pbVar6 = pbVar6 + (ulong)bVar16 * -2 + 1;
|
|
param_1 = param_1 + (ulong)bVar16 * -2 + 1;
|
|
}
|
|
}
|
|
else {
|
|
param_1 = (byte *)FUN_002f8538(param_2,6,plVar7,param_1);
|
|
}
|
|
}
|
|
uVar10 = (this->data).offset_0x0;
|
|
if ((uVar10 & 1) != 0) {
|
|
param_1 = (byte *)FUN_00359676((uVar10 & 0xfffffffffffffffc) + 8,param_1,param_2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
// 00322470 google::protobuf::SourceCodeInfo_Location::vfunction19
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction19(SourceCodeInfo_Location *this)
|
|
|
|
{
|
|
FUN_003344e2(&(this->data).offset_0xc);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00322564 google::protobuf::SourceCodeInfo_Location::vfunction10
|
|
|
|
ulong __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction10(SourceCodeInfo_Location *this)
|
|
|
|
{
|
|
undefined1 *puVar1;
|
|
uint uVar2;
|
|
int iVar3;
|
|
ulong uVar4;
|
|
long lVar5;
|
|
long lVar6;
|
|
undefined8 uVar7;
|
|
int iVar8;
|
|
|
|
lVar5 = 0;
|
|
uVar4 = FUN_002f6a60(&(this->data).offset_0x10);
|
|
if (uVar4 != 0) {
|
|
lVar5 = FUN_002e2ae2(uVar4 & 0xffffffff);
|
|
lVar5 = lVar5 + 1;
|
|
}
|
|
*(int *)&(this->data).field_0x20 = (int)uVar4;
|
|
lVar5 = lVar5 + uVar4;
|
|
uVar4 = FUN_002f6a60(&(this->data).offset_0x28);
|
|
if (uVar4 != 0) {
|
|
lVar6 = FUN_002e2ae2(uVar4 & 0xffffffff);
|
|
lVar5 = lVar5 + 1 + lVar6;
|
|
}
|
|
*(int *)&(this->data).field_0x38 = (int)uVar4;
|
|
puVar1 = &(this->data).field_0x40;
|
|
uVar2 = FUN_002f38c2(puVar1);
|
|
iVar3 = FUN_002f38c2(puVar1);
|
|
uVar4 = (ulong)uVar2 + lVar5 + uVar4;
|
|
for (iVar8 = 0; iVar8 < iVar3; iVar8 = iVar8 + 1) {
|
|
uVar7 = thunk_FUN_002f4b80(puVar1,iVar8);
|
|
lVar5 = FUN_0033427c(uVar7);
|
|
uVar4 = uVar4 + lVar5;
|
|
}
|
|
uVar2 = (this->data).offset_0x8;
|
|
if ((uVar2 & 3) != 0) {
|
|
if ((uVar2 & 1) != 0) {
|
|
lVar5 = FUN_0033427c((ulong)(this->data).offset_0x58 & 0xfffffffffffffffe);
|
|
uVar4 = uVar4 + 1 + lVar5;
|
|
}
|
|
if ((uVar2 & 2) != 0) {
|
|
lVar5 = FUN_0033427c((ulong)(this->data).offset_0x60 & 0xfffffffffffffffe);
|
|
uVar4 = uVar4 + 1 + lVar5;
|
|
}
|
|
}
|
|
if ((*(byte *)&(this->data).offset_0x0 & 1) != 0) {
|
|
uVar4 = FUN_00359fe2(&this->data,uVar4);
|
|
return uVar4;
|
|
}
|
|
FUN_003344e2(&(this->data).offset_0xc,uVar4 & 0xffffffff);
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
// 0032281c google::protobuf::SourceCodeInfo_Location::vfunction20
|
|
|
|
void __thiscall google::protobuf::SourceCodeInfo_Location::vfunction20(void)
|
|
|
|
{
|
|
FUN_003227eb(0x17);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0032324e google::protobuf::SourceCodeInfo_Location::SourceCodeInfo_Location
|
|
|
|
undefined8 __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::SourceCodeInfo_Location
|
|
(SourceCodeInfo_Location *this,undefined8 param_1,undefined8 param_2)
|
|
|
|
{
|
|
(this->data).offset_0x0 = param_1;
|
|
this->vftablePtr = &vftable;
|
|
(this->data).offset_0x8 = 0;
|
|
(this->data).offset_0xc = 0;
|
|
(this->data).offset_0x10 = 0;
|
|
(this->data).offset_0x18 = param_1;
|
|
(this->data).offset_0x28 = 0;
|
|
(this->data).offset_0x30 = param_1;
|
|
FUN_002f38a6();
|
|
(this->data).offset_0x58 = &DAT_0046ab18;
|
|
(this->data).offset_0x60 = &DAT_0046ab18;
|
|
return param_2;
|
|
}
|
|
|
|
|
|
// 00324f9e google::protobuf::SourceCodeInfo_Location::vfunction12
|
|
|
|
char * __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction12
|
|
(SourceCodeInfo_Location *this,char *param_1,undefined8 *param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
ulong uVar2;
|
|
char cVar3;
|
|
char *pcVar4;
|
|
undefined8 uVar5;
|
|
undefined8 *puVar6;
|
|
long lVar7;
|
|
char *local_40;
|
|
undefined4 local_34;
|
|
uint local_30;
|
|
undefined4 local_2c;
|
|
|
|
local_34 = 0;
|
|
local_40 = param_1;
|
|
LAB_00324fc4:
|
|
do {
|
|
cVar3 = FUN_00334356(param_2,&local_40);
|
|
if (cVar3 != '\0') goto LAB_003251e8;
|
|
pcVar4 = (char *)FUN_00321c03(local_40,&local_30);
|
|
if (pcVar4 == (char *)0x0) goto LAB_00324ff8;
|
|
local_40 = pcVar4;
|
|
switch(local_30 >> 3) {
|
|
case 1:
|
|
puVar6 = &(this->data).offset_0x10;
|
|
if (local_30 == 10) {
|
|
LAB_00325055:
|
|
local_40 = (char *)FUN_002eac85(puVar6,pcVar4,param_2);
|
|
}
|
|
else {
|
|
if (local_30 != 8) break;
|
|
local_2c = FUN_0033435e(&local_40);
|
|
puVar6 = &(this->data).offset_0x10;
|
|
LAB_00325080:
|
|
FUN_002eea5a(puVar6,&local_2c);
|
|
}
|
|
goto LAB_003251dd;
|
|
case 2:
|
|
if (local_30 == 0x12) {
|
|
puVar6 = &(this->data).offset_0x28;
|
|
goto LAB_00325055;
|
|
}
|
|
if (local_30 == 0x10) {
|
|
local_2c = FUN_0033435e(&local_40);
|
|
puVar6 = &(this->data).offset_0x28;
|
|
goto LAB_00325080;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (local_30 != 0x1a) break;
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*puVar1 = *puVar1 | 1;
|
|
uVar5 = FUN_003150ee(this);
|
|
uVar5 = FUN_002d7f56(&(this->data).offset_0x58,uVar5);
|
|
local_40 = (char *)FUN_002ea63f(uVar5,local_40,param_2);
|
|
pcVar4 = "google.protobuf.SourceCodeInfo.Location.leading_comments";
|
|
LAB_0032510c:
|
|
FUN_0033439a(uVar5,pcVar4);
|
|
goto LAB_003251dd;
|
|
case 4:
|
|
if (local_30 == 0x22) {
|
|
puVar1 = &(this->data).offset_0x8;
|
|
*puVar1 = *puVar1 | 2;
|
|
uVar5 = FUN_003150ee(this);
|
|
uVar5 = FUN_002d7f56(&(this->data).offset_0x60,uVar5);
|
|
local_40 = (char *)FUN_002ea63f(uVar5,local_40,param_2);
|
|
pcVar4 = "google.protobuf.SourceCodeInfo.Location.trailing_comments";
|
|
goto LAB_0032510c;
|
|
}
|
|
break;
|
|
case 6:
|
|
if (local_30 == 0x32) {
|
|
local_40 = pcVar4 + -1;
|
|
do {
|
|
local_40 = local_40 + 1;
|
|
uVar5 = FUN_002f38c6(&(this->data).field_0x40);
|
|
local_40 = (char *)FUN_002ea63f(uVar5,local_40,param_2);
|
|
FUN_0033439a(uVar5,"google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
|
|
if (local_40 == (char *)0x0) goto LAB_00324ff8;
|
|
} while ((local_40 < (char *)*param_2) && (*local_40 == '2'));
|
|
goto LAB_00324fc4;
|
|
}
|
|
}
|
|
if (((local_30 & 7) == 4) || (local_30 == 0)) {
|
|
*(uint *)(param_2 + 10) = local_30 - 1;
|
|
goto LAB_003251e8;
|
|
}
|
|
uVar2 = (this->data).offset_0x0;
|
|
if ((uVar2 & 1) == 0) {
|
|
lVar7 = FUN_002762f0(&this->data);
|
|
}
|
|
else {
|
|
lVar7 = (uVar2 & 0xfffffffffffffffc) + 8;
|
|
}
|
|
local_40 = (char *)FUN_003589df(local_30,lVar7,pcVar4,param_2);
|
|
LAB_003251dd:
|
|
if (local_40 == (char *)0x0) {
|
|
LAB_00324ff8:
|
|
local_40 = (char *)0x0;
|
|
LAB_003251e8:
|
|
FUN_00321c76(&(this->data).offset_0x8,&local_34);
|
|
return local_40;
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
// 0032b4fa google::protobuf::SourceCodeInfo_Location::vfunction16
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction16
|
|
(SourceCodeInfo_Location *this,SourceCodeInfo_Location *param_1)
|
|
|
|
{
|
|
undefined8 uVar1;
|
|
long lVar2;
|
|
long extraout_RDX;
|
|
undefined1 local_39;
|
|
undefined1 local_38 [32];
|
|
|
|
if (this == param_1) {
|
|
FUN_002d0582(local_38,3,"google/protobuf/descriptor.pb.cc",0x2783);
|
|
uVar1 = FUN_002d001e(local_38,"CHECK failed: (&from) != (this): ");
|
|
FUN_002d0858(&local_39,uVar1);
|
|
FUN_002d059c(local_38);
|
|
}
|
|
FUN_003227eb(0x17);
|
|
lVar2 = FUN_00315146(param_1);
|
|
if (lVar2 == extraout_RDX) {
|
|
FUN_0032b3ce(this,param_1);
|
|
}
|
|
else {
|
|
FUN_0034dd68(param_1,this);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0032cf4a google::protobuf::SourceCodeInfo_Location::~SourceCodeInfo_Location
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::~SourceCodeInfo_Location(SourceCodeInfo_Location *this)
|
|
|
|
{
|
|
this->vftablePtr = &vftable;
|
|
FUN_0033515c();
|
|
FUN_00335c9e(&this->data);
|
|
FUN_002f4b64(&(this->data).field_0x40);
|
|
FUN_002ee8ce(&(this->data).offset_0x28);
|
|
FUN_002ee8ce(&(this->data).offset_0x10);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0032cf82 google::protobuf::SourceCodeInfo_Location::vfunction2
|
|
|
|
void __thiscall google::protobuf::SourceCodeInfo_Location::vfunction2(SourceCodeInfo_Location *this)
|
|
|
|
{
|
|
~SourceCodeInfo_Location(this);
|
|
internal::FieldSkipper::vfunction2((FieldSkipper *)this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0032d2e8 google::protobuf::SourceCodeInfo_Location::vfunction6
|
|
|
|
undefined8 __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction6
|
|
(SourceCodeInfo_Location *this,undefined8 param_1,undefined8 param_2,undefined8 param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
undefined8 uVar2;
|
|
|
|
*(undefined4 *)&(this->data).offset_0x10 = 0;
|
|
*(undefined4 *)&(this->data).offset_0x28 = 0;
|
|
thunk_FUN_002f550e();
|
|
uVar1 = (this->data).offset_0x8;
|
|
if ((uVar1 & 3) != 0) {
|
|
if ((uVar1 & 1) != 0) {
|
|
FUN_003341d6(&(this->data).offset_0x58);
|
|
}
|
|
if ((uVar1 & 2) != 0) {
|
|
FUN_003341d6(&(this->data).offset_0x60);
|
|
}
|
|
}
|
|
(this->data).offset_0x8 = 0;
|
|
if ((*(byte *)&(this->data).offset_0x0 & 1) != 0) {
|
|
uVar2 = FUN_002a4470(&this->data);
|
|
return uVar2;
|
|
}
|
|
return param_3;
|
|
}
|
|
|
|
|
|
// 0032d34a google::protobuf::SourceCodeInfo_Location::vfunction15
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction15
|
|
(SourceCodeInfo_Location *this,SourceCodeInfo_Location *param_1,undefined8 param_2,
|
|
undefined8 param_3)
|
|
|
|
{
|
|
if (this != param_1) {
|
|
vfunction6(this,param_1,param_2,param_3);
|
|
vfunction16(this,param_1);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 003344ba google::protobuf::SourceCodeInfo_Location::vfunction11
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction11(SourceCodeInfo_Location *this)
|
|
|
|
{
|
|
FUN_003343d0(&(this->data).offset_0xc);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00335626 google::protobuf::SourceCodeInfo_Location::vfunction5
|
|
|
|
void __thiscall
|
|
google::protobuf::SourceCodeInfo_Location::vfunction5
|
|
(SourceCodeInfo_Location *this,undefined8 param_1)
|
|
|
|
{
|
|
FUN_00323970(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0033562e google::protobuf::SourceCodeInfo_Location::vfunction4
|
|
|
|
void __thiscall google::protobuf::SourceCodeInfo_Location::vfunction4(void)
|
|
|
|
{
|
|
FUN_00323970(0);
|
|
return;
|
|
}
|
|
|
|
|