491 lines
12 KiB
C
491 lines
12 KiB
C
// 003c4d9e std::wstringbuf::wstringbuf
|
|
|
|
void __thiscall std::wstringbuf::wstringbuf(wstringbuf *this)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
wstreambuf::wstreambuf((wstreambuf *)this);
|
|
this->vftablePtr = &vftable;
|
|
uVar1 = FUN_003c1c57(8,0x10);
|
|
(this->data).offset_0x7 = uVar1;
|
|
FUN_003cfaac(&(this->data).field_0xf);
|
|
return;
|
|
}
|
|
|
|
|
|
// 003c4df2 std::wstringbuf::wstringbuf
|
|
|
|
void __thiscall std::wstringbuf::wstringbuf(wstringbuf *this,undefined4 param_1)
|
|
|
|
{
|
|
wstreambuf::wstreambuf((wstreambuf *)this);
|
|
this->vftablePtr = &vftable;
|
|
(this->data).offset_0x7 = param_1;
|
|
FUN_003cfaac(&(this->data).field_0xf);
|
|
return;
|
|
}
|
|
|
|
|
|
// 003c4e3c std::wstringbuf::wstringbuf
|
|
|
|
void __thiscall std::wstringbuf::wstringbuf(wstringbuf *this,undefined8 param_1,undefined4 param_2)
|
|
|
|
{
|
|
undefined8 uVar1;
|
|
undefined8 uVar2;
|
|
undefined1 local_19;
|
|
|
|
wstreambuf::wstreambuf((wstreambuf *)this);
|
|
this->vftablePtr = &vftable;
|
|
(this->data).offset_0x7 = 0;
|
|
FUN_003d2bc0(&local_19,param_1);
|
|
uVar1 = FUN_003d0674(param_1);
|
|
uVar2 = FUN_003d2ba6(param_1);
|
|
FUN_003cfec2(&(this->data).field_0xf,uVar2,uVar1,&local_19);
|
|
FUN_003ab97e(&local_19);
|
|
FUN_003c535c(this,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
// 003c53ea std::wstringbuf::vfunction8
|
|
|
|
long __thiscall std::wstringbuf::vfunction8(wstringbuf *this)
|
|
|
|
{
|
|
int iVar1;
|
|
long lVar2;
|
|
long lVar3;
|
|
long local_20;
|
|
|
|
local_20 = -1;
|
|
iVar1 = FUN_003c1c45((this->data).offset_0x7,8);
|
|
if (iVar1 != 0) {
|
|
FUN_003c5fe0(this);
|
|
lVar2 = FUN_00427606(this);
|
|
lVar3 = FUN_004275f4(this);
|
|
local_20 = lVar2 - lVar3 >> 2;
|
|
}
|
|
return local_20;
|
|
}
|
|
|
|
|
|
// 003c545e std::wstringbuf::vfunction10
|
|
|
|
undefined4 __thiscall std::wstringbuf::vfunction10(wstringbuf *this)
|
|
|
|
{
|
|
int iVar1;
|
|
ulong uVar2;
|
|
ulong uVar3;
|
|
undefined8 uVar4;
|
|
undefined4 local_1c;
|
|
|
|
local_1c = 0xffffffff;
|
|
iVar1 = FUN_003c1c45((this->data).offset_0x7,8);
|
|
if (iVar1 != 0) {
|
|
FUN_003c5fe0(this);
|
|
uVar2 = FUN_004275f4(this);
|
|
uVar3 = FUN_00427606(this);
|
|
if (uVar2 < uVar3) {
|
|
uVar4 = FUN_004275f4(this);
|
|
local_1c = FUN_003a5dc6(uVar4);
|
|
}
|
|
}
|
|
return local_1c;
|
|
}
|
|
|
|
|
|
// 003c54e4 std::wstringbuf::vfunction12
|
|
|
|
undefined4 __thiscall std::wstringbuf::vfunction12(wstringbuf *this,undefined4 param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
ulong uVar3;
|
|
ulong uVar4;
|
|
long lVar5;
|
|
undefined4 *puVar6;
|
|
undefined4 local_34;
|
|
wstringbuf *local_30;
|
|
undefined4 local_24;
|
|
undefined4 local_20;
|
|
undefined1 local_1b;
|
|
char local_1a;
|
|
char local_19;
|
|
|
|
local_24 = 0xffffffff;
|
|
local_34 = param_1;
|
|
local_30 = this;
|
|
uVar3 = FUN_004275e2(this);
|
|
uVar4 = FUN_004275f4(local_30);
|
|
if (uVar3 < uVar4) {
|
|
local_19 = FUN_00391956(&local_34,&local_24);
|
|
if (local_19 == '\x01') {
|
|
FUN_00427618(local_30,0xffffffff);
|
|
local_24 = FUN_003c1c0b(&local_34);
|
|
}
|
|
else {
|
|
lVar5 = FUN_004275f4(local_30);
|
|
local_20 = FUN_003a5db6(&local_34);
|
|
local_1a = FUN_003c1bec(&local_20,lVar5 + -4);
|
|
iVar1 = FUN_003c1c45((local_30->data).offset_0x7,0x10);
|
|
local_1b = iVar1 != 0;
|
|
if ((local_1a != '\0') || ((bool)local_1b)) {
|
|
FUN_00427618(local_30,0xffffffff);
|
|
if (local_1a != '\x01') {
|
|
puVar6 = (undefined4 *)FUN_004275f4(local_30);
|
|
uVar2 = FUN_003a5db6(&local_34);
|
|
*puVar6 = uVar2;
|
|
}
|
|
local_24 = local_34;
|
|
}
|
|
}
|
|
}
|
|
return local_24;
|
|
}
|
|
|
|
|
|
// 003c560c std::wstringbuf::vfunction14
|
|
|
|
ulong __thiscall std::wstringbuf::vfunction14(wstringbuf *this,uint param_1)
|
|
|
|
{
|
|
bool bVar1;
|
|
int iVar2;
|
|
ulong uVar3;
|
|
ulong uVar4;
|
|
undefined8 *puVar5;
|
|
long lVar6;
|
|
long lVar7;
|
|
undefined8 uVar8;
|
|
long lVar9;
|
|
long lVar10;
|
|
undefined4 *puVar11;
|
|
uint local_84;
|
|
wstringbuf *local_80;
|
|
undefined1 local_70 [8];
|
|
undefined8 local_68;
|
|
long local_60;
|
|
undefined4 local_54;
|
|
undefined8 local_50;
|
|
long local_48;
|
|
undefined1 local_39;
|
|
undefined8 local_38;
|
|
undefined4 local_30;
|
|
char local_29;
|
|
long local_28;
|
|
char local_1a;
|
|
undefined1 local_19;
|
|
|
|
local_84 = param_1;
|
|
local_80 = this;
|
|
iVar2 = FUN_003c1c45((this->data).offset_0x7,0x10);
|
|
local_19 = iVar2 != 0;
|
|
if ((bool)local_19) {
|
|
local_54 = FUN_00391975();
|
|
local_1a = FUN_00391956(&local_84,&local_54);
|
|
if (local_1a == '\0') {
|
|
local_28 = FUN_003d0796(&(local_80->data).field_0xf);
|
|
local_60 = FUN_003d06ac(&(local_80->data).field_0xf);
|
|
uVar3 = FUN_00427692(local_80);
|
|
uVar4 = FUN_004276a4(local_80);
|
|
local_29 = uVar3 < uVar4;
|
|
if (((bool)local_29) || (local_28 != local_60)) {
|
|
bVar1 = false;
|
|
}
|
|
else {
|
|
bVar1 = true;
|
|
}
|
|
if (bVar1) {
|
|
uVar3 = FUN_00391975();
|
|
}
|
|
else {
|
|
local_30 = FUN_003a5db6(&local_84);
|
|
if (local_29 == '\x01') {
|
|
puVar11 = (undefined4 *)FUN_00427692(local_80);
|
|
*puVar11 = local_30;
|
|
}
|
|
else {
|
|
local_50 = 0x200;
|
|
local_48 = local_28 * 2;
|
|
puVar5 = (undefined8 *)FUN_003a4843(&local_48,&local_50);
|
|
local_68 = *puVar5;
|
|
puVar5 = (undefined8 *)FUN_0039f2e5(&local_68,&local_60);
|
|
local_38 = *puVar5;
|
|
FUN_003d2bc0(&local_39,&(local_80->data).field_0xf);
|
|
FUN_003cfafe(local_70,&local_39);
|
|
FUN_003ab97e(&local_39);
|
|
FUN_003d07b4(local_70,local_38);
|
|
lVar6 = FUN_00427680(local_80);
|
|
if (lVar6 != 0) {
|
|
lVar6 = FUN_004276a4(local_80);
|
|
lVar7 = FUN_00427680(local_80);
|
|
uVar8 = FUN_00427680(local_80);
|
|
FUN_003d15dc(local_70,uVar8,lVar6 - lVar7 >> 2);
|
|
}
|
|
FUN_003d1362(local_70,local_30);
|
|
FUN_003d29a6(&(local_80->data).field_0xf,local_70);
|
|
lVar6 = FUN_00427692(local_80);
|
|
lVar7 = FUN_00427680(local_80);
|
|
lVar9 = FUN_004275f4(local_80);
|
|
lVar10 = FUN_004275e2(local_80);
|
|
uVar8 = FUN_003d2ba6(&(local_80->data).field_0xf);
|
|
FUN_003c5e9c(local_80,uVar8,lVar9 - lVar10 >> 2,lVar6 - lVar7 >> 2);
|
|
FUN_003d0234(local_70);
|
|
}
|
|
FUN_004276b6(local_80,1);
|
|
uVar3 = (ulong)local_84;
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = FUN_003c1c0b(&local_84);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = FUN_00391975();
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
// 003c593e std::wstringbuf::vfunction4
|
|
|
|
wstringbuf * __thiscall std::wstringbuf::vfunction4(wstringbuf *this,long param_1,long param_2)
|
|
|
|
{
|
|
if ((param_1 != 0) && (-1 < param_2)) {
|
|
FUN_003d09e2(&(this->data).field_0xf);
|
|
FUN_003c5e9c(this,param_1,param_2,0);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
|
|
// 003c5990 std::wstringbuf::vfunction5
|
|
|
|
undefined1 [16] __thiscall
|
|
std::wstringbuf::vfunction5(wstringbuf *this,long param_1,int param_2,undefined4 param_3)
|
|
|
|
{
|
|
bool bVar1;
|
|
undefined1 auVar2 [16];
|
|
undefined4 uVar3;
|
|
int iVar4;
|
|
long lVar5;
|
|
undefined8 uVar6;
|
|
undefined8 uVar7;
|
|
long lVar8;
|
|
undefined8 local_78;
|
|
undefined8 local_70;
|
|
undefined8 local_68;
|
|
undefined8 local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
long local_48;
|
|
char local_3b;
|
|
byte local_3a;
|
|
byte local_39;
|
|
long local_38;
|
|
long local_30;
|
|
|
|
FUN_003c80f2(&local_78,0xffffffffffffffff);
|
|
uVar3 = FUN_003c1c45(8,(this->data).offset_0x7);
|
|
iVar4 = FUN_003c1c45(uVar3,param_3);
|
|
local_39 = iVar4 != 0;
|
|
uVar3 = FUN_003c1c45(0x10,(this->data).offset_0x7);
|
|
iVar4 = FUN_003c1c45(uVar3,param_3);
|
|
local_3a = iVar4 != 0;
|
|
if (((local_39 == 0) || (!(bool)local_3a)) || (param_2 == 1)) {
|
|
local_3b = '\0';
|
|
}
|
|
else {
|
|
local_3b = '\x01';
|
|
}
|
|
iVar4 = FUN_003c1c45(param_3,0x10);
|
|
local_39 = (iVar4 == 0 & local_39) != 0;
|
|
iVar4 = FUN_003c1c45(param_3,8);
|
|
local_3a = (iVar4 == 0 & local_3a) != 0;
|
|
if (local_39 == '\0') {
|
|
local_48 = FUN_00427680(this);
|
|
}
|
|
else {
|
|
local_48 = FUN_004275e2(this);
|
|
}
|
|
if (((local_48 == 0) && (param_1 != 0)) ||
|
|
((local_39 == '\0' && ((local_3a == '\0' && (local_3b == '\0')))))) goto LAB_003c5c98;
|
|
FUN_003c5fe0(this);
|
|
local_38 = param_1;
|
|
local_30 = param_1;
|
|
if (param_2 == 1) {
|
|
lVar5 = FUN_004275f4(this);
|
|
local_30 = local_30 + (lVar5 - local_48 >> 2);
|
|
lVar5 = FUN_00427692(this);
|
|
local_38 = local_38 + (lVar5 - local_48 >> 2);
|
|
}
|
|
else if (param_2 == 2) {
|
|
lVar5 = FUN_00427606(this);
|
|
local_38 = local_30 + (lVar5 - local_48 >> 2);
|
|
local_30 = local_38;
|
|
}
|
|
if (((local_39 == '\0') && (local_3b == '\0')) || (local_30 < 0)) {
|
|
LAB_003c5b90:
|
|
bVar1 = false;
|
|
}
|
|
else {
|
|
lVar5 = FUN_00427606(this);
|
|
if (lVar5 - local_48 >> 2 < local_30) goto LAB_003c5b90;
|
|
bVar1 = true;
|
|
}
|
|
if (bVar1) {
|
|
uVar6 = FUN_00427606(this);
|
|
lVar5 = FUN_004275e2(this);
|
|
lVar8 = local_30 * 4;
|
|
uVar7 = FUN_004275e2(this);
|
|
FUN_00427644(this,uVar7,lVar5 + lVar8,uVar6);
|
|
FUN_003c80f2(&local_68,local_30);
|
|
local_78 = local_68;
|
|
local_70 = local_60;
|
|
}
|
|
if (((local_3a == '\0') && (local_3b == '\0')) || (local_38 < 0)) {
|
|
LAB_003c5c38:
|
|
bVar1 = false;
|
|
}
|
|
else {
|
|
lVar5 = FUN_00427606(this);
|
|
if (lVar5 - local_48 >> 2 < local_38) goto LAB_003c5c38;
|
|
bVar1 = true;
|
|
}
|
|
if (bVar1) {
|
|
uVar6 = FUN_004276a4(this);
|
|
uVar7 = FUN_00427680(this);
|
|
FUN_003c60a0(this,uVar7,uVar6,local_38);
|
|
FUN_003c80f2(&local_58,local_38);
|
|
local_78 = local_58;
|
|
local_70 = local_50;
|
|
}
|
|
LAB_003c5c98:
|
|
auVar2._8_8_ = local_70;
|
|
auVar2._0_8_ = local_78;
|
|
return auVar2;
|
|
}
|
|
|
|
|
|
// 003c5cac std::wstringbuf::vfunction6
|
|
|
|
undefined1 [16] __thiscall
|
|
std::wstringbuf::vfunction6
|
|
(wstringbuf *this,undefined8 param_1,undefined8 param_2,undefined4 param_3)
|
|
|
|
{
|
|
bool bVar1;
|
|
undefined1 auVar2 [16];
|
|
wstringbuf *pwVar3;
|
|
undefined4 uVar4;
|
|
int iVar5;
|
|
long lVar6;
|
|
undefined8 uVar7;
|
|
undefined8 uVar8;
|
|
long lVar9;
|
|
undefined8 local_78;
|
|
undefined8 local_70;
|
|
undefined4 local_64;
|
|
wstringbuf *local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
char local_41;
|
|
long local_40;
|
|
long local_38;
|
|
char local_2a;
|
|
char local_29;
|
|
|
|
local_78 = param_1;
|
|
local_70 = param_2;
|
|
local_64 = param_3;
|
|
local_60 = this;
|
|
FUN_003c80f2(&local_58,0xffffffffffffffff);
|
|
uVar4 = FUN_003c1c45(8,(local_60->data).offset_0x7);
|
|
iVar5 = FUN_003c1c45(uVar4,local_64);
|
|
local_29 = iVar5 != 0;
|
|
uVar4 = FUN_003c1c45(0x10,(local_60->data).offset_0x7);
|
|
iVar5 = FUN_003c1c45(uVar4,local_64);
|
|
local_2a = iVar5 != 0;
|
|
if (local_29 == '\0') {
|
|
local_38 = FUN_00427680(local_60);
|
|
}
|
|
else {
|
|
local_38 = FUN_004275e2(local_60);
|
|
}
|
|
if (local_38 == 0) {
|
|
lVar6 = FUN_003c8122(&local_78);
|
|
if (lVar6 == 0) goto LAB_003c5d7a;
|
|
LAB_003c5d8d:
|
|
bVar1 = false;
|
|
}
|
|
else {
|
|
LAB_003c5d7a:
|
|
if ((local_29 == '\0') && (local_2a == '\0')) goto LAB_003c5d8d;
|
|
bVar1 = true;
|
|
}
|
|
if (!bVar1) goto LAB_003c5e88;
|
|
FUN_003c5fe0(local_60);
|
|
local_40 = FUN_003c8122(&local_78);
|
|
if (local_40 < 0) {
|
|
LAB_003c5dde:
|
|
local_41 = '\0';
|
|
}
|
|
else {
|
|
lVar6 = FUN_00427606(local_60);
|
|
if (lVar6 - local_38 >> 2 < local_40) goto LAB_003c5dde;
|
|
local_41 = '\x01';
|
|
}
|
|
pwVar3 = local_60;
|
|
if (local_41 != '\0') {
|
|
if (local_29 != '\0') {
|
|
uVar7 = FUN_00427606(local_60);
|
|
lVar6 = FUN_004275e2(local_60);
|
|
lVar9 = local_40 * 4;
|
|
uVar8 = FUN_004275e2(local_60);
|
|
FUN_00427644(pwVar3,uVar8,lVar6 + lVar9,uVar7);
|
|
}
|
|
if (local_2a != '\0') {
|
|
uVar7 = FUN_004276a4(local_60);
|
|
uVar8 = FUN_00427680(local_60);
|
|
FUN_003c60a0(local_60,uVar8,uVar7,local_40);
|
|
}
|
|
local_58 = local_78;
|
|
local_50 = local_70;
|
|
}
|
|
LAB_003c5e88:
|
|
auVar2._8_8_ = local_50;
|
|
auVar2._0_8_ = local_58;
|
|
return auVar2;
|
|
}
|
|
|
|
|
|
// 003c7f8e std::wstringbuf::~wstringbuf
|
|
|
|
void __thiscall std::wstringbuf::~wstringbuf(wstringbuf *this)
|
|
|
|
{
|
|
this->vftablePtr = &vftable;
|
|
FUN_003d0234(&(this->data).field_0xf);
|
|
wstreambuf::~wstreambuf((wstreambuf *)this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 003c7fcc std::wstringbuf::vfunction2
|
|
|
|
void __thiscall std::wstringbuf::vfunction2(wstringbuf *this)
|
|
|
|
{
|
|
~wstringbuf(this);
|
|
google::protobuf::internal::FieldSkipper::vfunction2((FieldSkipper *)this);
|
|
return;
|
|
}
|
|
|
|
|