2442 lines
84 KiB
C
2442 lines
84 KiB
C
// 0012f280 std::stringbuf::~stringbuf
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0012f2f8) */
|
|
/* std::stringbuf::~stringbuf() */
|
|
|
|
void __thiscall std::stringbuf::~stringbuf(stringbuf *this)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
long lVar4;
|
|
|
|
this->vftablePtr = &vftable;
|
|
lVar4 = *(long *)&(this->data).offset_0x40;
|
|
paVar1 = (allocator *)(lVar4 + -0x18);
|
|
if (paVar1 != (allocator *)&string::_Rep::_S_empty_rep_storage) {
|
|
LOCK();
|
|
piVar2 = (int *)(lVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
string::_Rep::_M_destroy(paVar1);
|
|
}
|
|
}
|
|
this->vftablePtr = (stringbuf_vftable *)&streambuf::vftable;
|
|
locale::~locale((locale *)&(this->data).field_0x30);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0012f310 std::stringbuf::~stringbuf
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0012f398) */
|
|
/* std::stringbuf::~stringbuf() */
|
|
|
|
void __thiscall std::stringbuf::~stringbuf(stringbuf *this)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
long lVar4;
|
|
|
|
this->vftablePtr = &vftable;
|
|
lVar4 = *(long *)&(this->data).offset_0x40;
|
|
paVar1 = (allocator *)(lVar4 + -0x18);
|
|
if (paVar1 != (allocator *)&string::_Rep::_S_empty_rep_storage) {
|
|
LOCK();
|
|
piVar2 = (int *)(lVar4 + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
string::_Rep::_M_destroy(paVar1);
|
|
}
|
|
}
|
|
this->vftablePtr = (stringbuf_vftable *)&streambuf::vftable;
|
|
locale::~locale((locale *)&(this->data).field_0x30);
|
|
operator_delete(this,0x50);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00133400 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::CommentInfo::setComment(char const*, unsigned long) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,char *param_1,ulong param_2)
|
|
|
|
{
|
|
void *__dest;
|
|
stringbuf_vftable *psVar1;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined1 local_198 [8];
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined **local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
if (this->vftablePtr != (stringbuf_vftable *)0x0) {
|
|
free(this->vftablePtr);
|
|
this->vftablePtr = (stringbuf_vftable *)0x0;
|
|
}
|
|
if (param_1 != (char *)0x0) {
|
|
if ((*param_1 != '\0') && (*param_1 != '/')) {
|
|
param_1 = local_198;
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = (undefined1 [8])ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = (undefined1 [8])ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = (undefined **)&DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)param_1,"in Json::Value::setComment(): Comments must start with /",0x38)
|
|
;
|
|
this = (stringbuf *)local_1a0;
|
|
string::string((string *)this,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)this,(string *)&local_148);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError((LogicError *)this);
|
|
param_2 = (ulong)ostream-in-std::ostringstream::construction_vftable;
|
|
}
|
|
if ((undefined **)0x7ffffffe < param_2) {
|
|
param_2 = 0x7ffffffe;
|
|
}
|
|
__dest = malloc(param_2 + 1);
|
|
if (__dest != (void *)0x0) {
|
|
psVar1 = memcpy(__dest,param_1,param_2);
|
|
*(undefined1 *)((long)&psVar1->~stringbuf + param_2) = 0;
|
|
this->vftablePtr = psVar1;
|
|
return;
|
|
}
|
|
string::string((string *)local_198,
|
|
"in Json::Value::duplicateStringValue(): Failed to allocate string value buffer",
|
|
(allocator *)local_1a0);
|
|
Json::RuntimeError::RuntimeError((RuntimeError *)local_198);
|
|
}
|
|
string::string((string *)local_198,"assert json failed",&local_1a1);
|
|
Json::LogicError::LogicError((LogicError *)local_198);
|
|
if (&((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail !=
|
|
(pbackfail **)&string::_Rep::_S_empty_rep_storage) {
|
|
string::_Rep::_M_dispose
|
|
((allocator *)&((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail);
|
|
}
|
|
ios::~ios((ios *)local_198);
|
|
/* WARNING: Subroutine does not return */
|
|
_Unwind_Resume(this);
|
|
}
|
|
|
|
|
|
// 00133750 std::stringbuf::stringbuf
|
|
|
|
/* Json::duplicateAndPrefixStringValue(char const*, unsigned int) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,uint param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined8 extraout_RAX;
|
|
stringbuf *psVar2;
|
|
string *psVar3;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined1 local_198 [8];
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined **local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
psVar3 = (string *)(ulong)param_1;
|
|
if (0x7ffffffa < param_1) {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = (undefined1 [8])ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = (undefined1 [8])ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = (undefined **)&DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)local_198,
|
|
"in Json::Value::duplicateAndPrefixStringValue(): length too big for prefixing",0x4d)
|
|
;
|
|
this = (stringbuf *)local_1a0;
|
|
string::string((string *)this,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
psVar3 = (string *)&local_148;
|
|
string::assign((string *)this,psVar3);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
psVar3 = (string *)0x0;
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
psVar3 = (string *)0x0;
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError((LogicError *)this);
|
|
}
|
|
iVar1 = (int)psVar3;
|
|
psVar2 = malloc((ulong)(iVar1 + 5));
|
|
if (psVar2 != (stringbuf *)0x0) {
|
|
*(int *)&psVar2->vftablePtr = iVar1;
|
|
memcpy((void *)((long)&psVar2->vftablePtr + 4),this,(ulong)psVar3 & 0xffffffff);
|
|
*(undefined1 *)((long)&psVar2->vftablePtr + (ulong)(iVar1 + 4)) = 0;
|
|
return psVar2;
|
|
}
|
|
string::string((string *)local_198,
|
|
"in Json::Value::duplicateAndPrefixStringValue(): Failed to allocate string value buffer"
|
|
,&local_1a1);
|
|
Json::RuntimeError::RuntimeError((RuntimeError *)local_198);
|
|
if ((RuntimeError_vftable *)((long)local_198 + -0x18) !=
|
|
(RuntimeError_vftable *)&string::_Rep::_S_empty_rep_storage) {
|
|
string::_Rep::_M_dispose((allocator *)((long)local_198 + -0x18));
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
_Unwind_Resume(extraout_RAX);
|
|
}
|
|
|
|
|
|
// 00133b70 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::asCString() const */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this)
|
|
|
|
{
|
|
stringbuf *psVar1;
|
|
char *in_RCX;
|
|
~LogicError *extraout_RDX;
|
|
~LogicError *p_Var2;
|
|
ulong in_R8;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
if (*(char *)&(this->data).offset_0x0 != '\x04') {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::asCString(): requires stringValue",0x31);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)local_1a0,(string *)&local_148);
|
|
}
|
|
else {
|
|
p_Var2 = ((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError;
|
|
in_RCX = (char *)local_178._8_8_;
|
|
in_R8 = local_178._0_8_;
|
|
if ((ulong)local_168._0_8_ <= (ulong)local_178._0_8_) goto LAB_00133d38;
|
|
in_R8 = local_168._0_8_ - local_178._8_8_;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,(char *)local_178._8_8_,in_R8);
|
|
}
|
|
do {
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
p_Var2 = extraout_RDX;
|
|
LAB_00133d38:
|
|
in_R8 = in_R8 - (long)in_RCX;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,in_RCX,in_R8);
|
|
} while( true );
|
|
}
|
|
psVar1 = (stringbuf *)this->vftablePtr;
|
|
if (psVar1 != (stringbuf *)0x0) {
|
|
if ((*(byte *)((long)&(this->data).offset_0x0 + 1) & 1) != 0) {
|
|
psVar1 = (stringbuf *)((long)&psVar1->vftablePtr + 4);
|
|
}
|
|
return psVar1;
|
|
}
|
|
return (stringbuf *)0x0;
|
|
}
|
|
|
|
|
|
// 00133e80 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::clear() */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this)
|
|
|
|
{
|
|
byte bVar1;
|
|
Value *this_00;
|
|
stringbuf_vftable *this_01;
|
|
ulong extraout_RAX;
|
|
ulong uVar2;
|
|
char *in_RCX;
|
|
~LogicError *extraout_RDX;
|
|
~LogicError *p_Var3;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
bVar1 = *(byte *)&(this->data).offset_0x0;
|
|
if ((1 < (byte)(bVar1 - 6)) && (bVar1 != 0)) {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::clear(): requires complex value",0x2f);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)local_1a0,(string *)&local_148);
|
|
}
|
|
else {
|
|
p_Var3 = ((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError;
|
|
uVar2 = local_168._0_8_;
|
|
in_RCX = (char *)local_178._8_8_;
|
|
if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) goto LAB_00134088;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var3,(char *)local_178._8_8_,
|
|
local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
do {
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
uVar2 = extraout_RAX;
|
|
p_Var3 = extraout_RDX;
|
|
LAB_00134088:
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var3,in_RCX,uVar2 - (long)in_RCX);
|
|
} while( true );
|
|
}
|
|
this_00 = (Value *)(this->data).offset_0x10;
|
|
(this->data).offset_0x18 = 0;
|
|
(this->data).offset_0x20 = 0;
|
|
if (this_00 != (Value *)0x0) {
|
|
Json::Value::~Value(this_00);
|
|
operator_delete(this_00,0x30);
|
|
bVar1 = *(byte *)&(this->data).offset_0x0;
|
|
}
|
|
(this->data).offset_0x10 = 0;
|
|
if (bVar1 - 6 < 2) {
|
|
this_01 = this->vftablePtr;
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_erase((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this_01,(_Rb_tree_node *)this_01->imbue);
|
|
this_01->imbue = (imbue *)0x0;
|
|
this_01->setbuf = (setbuf *)&this_01->~stringbuf;
|
|
this_01->seekoff = (seekoff *)&this_01->~stringbuf;
|
|
this_01->seekpos = (seekpos *)0x0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 00134110 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::operator[](unsigned int) const */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,uint param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
undefined1 *puVar2;
|
|
string *psVar3;
|
|
undefined1 *puVar4;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
Exception_data local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar1 = *(char *)&(this->data).offset_0x0;
|
|
if ((cVar1 == '\0') || (cVar1 == '\x06')) {
|
|
puVar4 = Json::kNull;
|
|
if (cVar1 == '\0') {
|
|
return (stringbuf *)Json::kNull;
|
|
}
|
|
}
|
|
else {
|
|
puVar4 = (undefined1 *)&local_198;
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198.offset_0x0 = (long)ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198.offset_0x0 = (long)ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)puVar4,"in Json::Value::operator[](ArrayIndex)const: requires arrayValue",
|
|
0x40);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
psVar3 = (string *)&local_148;
|
|
string::assign((string *)local_1a0,psVar3);
|
|
param_1 = (uint)psVar3;
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
param_1 = 0;
|
|
string::replace((string *)local_1a0,0,
|
|
(ulong)((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
param_1 = 0;
|
|
string::replace((string *)local_1a0,0,
|
|
(ulong)((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
this = (stringbuf *)ostream-in-std::ostringstream::construction_vftable;
|
|
}
|
|
psStack_190 = (stringbuf_vftable *)CONCAT44(psStack_190._4_4_,param_1);
|
|
local_198.offset_0x0 = 0;
|
|
puVar2 = (undefined1 *)
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::find((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this->vftablePtr,(CZString *)&local_198);
|
|
if (&this->vftablePtr->~stringbuf != (~stringbuf **)puVar2) {
|
|
puVar4 = (undefined1 *)(puVar2 + 0x30);
|
|
}
|
|
if (((stringbuf_vftable *)local_198.offset_0x0 != (stringbuf_vftable *)0x0) &&
|
|
(((byte)psStack_190._0_1_ & 3) == 1)) {
|
|
free((void *)local_198.offset_0x0);
|
|
}
|
|
return (stringbuf *)puVar4;
|
|
}
|
|
|
|
|
|
// 001343b0 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::operator[](int) const */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,int param_1)
|
|
|
|
{
|
|
ulong extraout_RAX;
|
|
ulong uVar1;
|
|
char *in_RCX;
|
|
~LogicError *extraout_RDX;
|
|
~LogicError *p_Var2;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
if (-1 < param_1) {
|
|
stringbuf(this,param_1);
|
|
return;
|
|
}
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,
|
|
"in Json::Value::operator[](int index) const: index cannot be negative",0x45);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)local_1a0,(string *)&local_148);
|
|
}
|
|
else {
|
|
p_Var2 = ((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError;
|
|
uVar1 = local_168._0_8_;
|
|
in_RCX = (char *)local_178._8_8_;
|
|
if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) goto LAB_00134568;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,(char *)local_178._8_8_,
|
|
local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
do {
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
uVar1 = extraout_RAX;
|
|
p_Var2 = extraout_RDX;
|
|
LAB_00134568:
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,in_RCX,uVar1 - (long)in_RCX);
|
|
} while( true );
|
|
}
|
|
|
|
|
|
// 001345c0 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::find(char const*, char const*) const */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,char *param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
undefined1 *puVar2;
|
|
ulong extraout_RAX;
|
|
ulong uVar3;
|
|
char *in_RCX;
|
|
int in_EDX;
|
|
~LogicError *extraout_RDX;
|
|
~LogicError *p_Var4;
|
|
stringbuf *psVar5;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
Exception_data local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar1 = *(char *)&(this->data).offset_0x0;
|
|
if ((cVar1 != '\0') && (cVar1 != '\a')) {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198.offset_0x0 = (long)ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198.offset_0x0 = (long)ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,
|
|
"in Json::Value::find(key, end, found): requires objectValue or nullValue",0x48);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)local_1a0,(string *)&local_148);
|
|
}
|
|
else {
|
|
p_Var4 = ((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError;
|
|
uVar3 = local_168._0_8_;
|
|
in_RCX = (char *)local_178._8_8_;
|
|
if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) goto LAB_001347e0;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var4,(char *)local_178._8_8_,
|
|
local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
do {
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
uVar3 = extraout_RAX;
|
|
p_Var4 = extraout_RDX;
|
|
LAB_001347e0:
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var4,in_RCX,uVar3 - (long)in_RCX);
|
|
} while( true );
|
|
}
|
|
psVar5 = (stringbuf *)0x0;
|
|
if (cVar1 != '\0') {
|
|
psStack_190 = (stringbuf_vftable *)CONCAT44(psStack_190._4_4_,(in_EDX - (int)param_1) * 4);
|
|
local_198.offset_0x0 = (long)param_1;
|
|
puVar2 = (undefined1 *)
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::find((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this->vftablePtr,(CZString *)&local_198);
|
|
if (&this->vftablePtr->~stringbuf != (~stringbuf **)puVar2) {
|
|
psVar5 = (stringbuf *)(puVar2 + 0x30);
|
|
}
|
|
if (((char *)local_198.offset_0x0 != (char *)0x0) && (((byte)psStack_190._0_1_ & 3) == 1)) {
|
|
free((void *)local_198.offset_0x0);
|
|
}
|
|
}
|
|
return psVar5;
|
|
}
|
|
|
|
|
|
// 00135670 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::removeMember(char const*) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this)
|
|
|
|
{
|
|
size_t sVar1;
|
|
char *in_RDX;
|
|
Value *in_RSI;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined **local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
if (in_RSI[8] != (Value)0x0) {
|
|
if (in_RSI[8] == (Value)0x7) {
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_188 = (undefined1 [16])0x0;
|
|
psStack_190 = (stringbuf_vftable *)((ulong)psStack_190 & 0xffffffffffffc000 | 0x2200);
|
|
sVar1 = strlen(in_RDX);
|
|
Json::Value::removeMember(in_RSI,in_RDX,in_RDX + sVar1,(Value *)&local_198);
|
|
(this->data).offset_0x18 = 0;
|
|
(this->data).offset_0x20 = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
(this->data).offset_0x10 = 0;
|
|
*(ushort *)&(this->data).offset_0x0 = *(ushort *)&(this->data).offset_0x0 & 0xc000 | 0x2200;
|
|
Json::Value::swap((Value *)this,(Value *)&local_198);
|
|
Json::Value::~Value((Value *)&local_198);
|
|
return this;
|
|
}
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = (undefined **)&DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::removeMember(): requires objectValue",0x34);
|
|
this = (stringbuf *)local_1a0;
|
|
string::string((string *)this,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)this,(string *)&local_148);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)this,0,
|
|
(ulong)((stringbuf_vftable *)((long)local_1a0 + -0x70))->pbackfail,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError((LogicError *)this);
|
|
}
|
|
Json::Value::Value((Value *)this,(Value *)Json::kNull);
|
|
return this;
|
|
}
|
|
|
|
|
|
// 00135a40 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::operator[](unsigned int) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,uint param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
allocator *paVar2;
|
|
char cVar3;
|
|
long lVar4;
|
|
allocator *paVar5;
|
|
allocator *paVar6;
|
|
allocator *paVar7;
|
|
bool bVar8;
|
|
allocator local_1a9;
|
|
LogicError local_1a8;
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
Value local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar3 = *(char *)&(this->data).offset_0x0;
|
|
if (cVar3 == '\0') {
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
psStack_190 = (stringbuf_vftable *)((ulong)psStack_190 & 0xffffffffffffc000 | 0x2206);
|
|
Json::Value::Value((Value *)&local_198);
|
|
Json::Value::swap((Value *)this,(Value *)&local_198);
|
|
Json::Value::~Value((Value *)&local_198);
|
|
}
|
|
else if (cVar3 != '\x06') {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
this = (stringbuf *)&psStack_190;
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)this);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::operator[](ArrayIndex): requires arrayValue",
|
|
0x3b);
|
|
paVar7 = &local_1a9;
|
|
string::string((string *)&local_1a8,paVar7);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)&local_1a8,(string *)&local_148);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError(&local_1a8);
|
|
goto LAB_00135c90;
|
|
}
|
|
local_1a8.vftablePtr = (LogicError_vftable *)0x0;
|
|
paVar2 = (allocator *)this->vftablePtr->imbue;
|
|
paVar7 = (allocator *)&this->vftablePtr->~stringbuf;
|
|
paVar5 = paVar7;
|
|
local_1a8.data.offset_0x0._0_4_ = param_1;
|
|
if (paVar2 != (allocator *)0x0) {
|
|
do {
|
|
while (paVar6 = paVar2,
|
|
cVar3 = Json::Value::CZString::operator<
|
|
((CZString *)(paVar6 + 0x20),(CZString *)&local_1a8), cVar3 != '\0') {
|
|
paVar1 = paVar6 + 0x18;
|
|
paVar2 = *(allocator **)paVar1;
|
|
paVar6 = paVar5;
|
|
if (*(allocator **)paVar1 == (allocator *)0x0) goto LAB_00135acd;
|
|
}
|
|
paVar2 = *(allocator **)(paVar6 + 0x10);
|
|
paVar5 = paVar6;
|
|
} while (*(allocator **)(paVar6 + 0x10) != (allocator *)0x0);
|
|
LAB_00135acd:
|
|
bVar8 = paVar7 != paVar6;
|
|
paVar7 = paVar6;
|
|
if ((bVar8) &&
|
|
(cVar3 = Json::Value::CZString::operator==
|
|
((CZString *)(paVar6 + 0x20),(CZString *)&local_1a8), cVar3 != '\0')) {
|
|
return (stringbuf *)(paVar6 + 0x30);
|
|
}
|
|
}
|
|
LAB_00135c90:
|
|
Json::Value::CZString::CZString((CZString *)&local_198,(CZString *)&local_1a8);
|
|
Json::Value::Value(local_188,(Value *)Json::kNull);
|
|
lVar4 = _Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_emplace_hint_unique<std::pair<Json::Value::CZString_const,Json::Value>&>
|
|
((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this->vftablePtr,paVar7,(CZString *)&local_198);
|
|
Json::Value::~Value(local_188);
|
|
if ((local_198 != (undefined **)0x0) && (((byte)psStack_190 & 3) == 1)) {
|
|
free(local_198);
|
|
}
|
|
if ((local_1a8.vftablePtr != (LogicError_vftable *)0x0) &&
|
|
(((byte)local_1a8.data.offset_0x0 & 3) == 1)) {
|
|
free(local_1a8.vftablePtr);
|
|
}
|
|
return (stringbuf *)(lVar4 + 0x30);
|
|
}
|
|
|
|
|
|
// 00135df0 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::resize(unsigned int) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,uint param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
undefined1 auVar2 [16];
|
|
_Rb_tree_node_base *p_Var3;
|
|
undefined8 extraout_RAX;
|
|
_Rb_tree_node_base *p_Var4;
|
|
char *in_RCX;
|
|
undefined8 extraout_RDX;
|
|
stringbuf_vftable *this_00;
|
|
undefined1 auVar5 [16];
|
|
uint local_1bc;
|
|
undefined1 local_1a1 [9];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [232];
|
|
undefined1 local_58 [16];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar1 = *(char *)&(this->data).offset_0x0;
|
|
if (cVar1 == '\0') {
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_188 = (undefined1 [16])0x0;
|
|
psStack_190 = (stringbuf_vftable *)((ulong)psStack_190 & 0xffffffffffffc000 | 0x2206);
|
|
Json::Value::Value((Value *)&local_198);
|
|
Json::Value::swap((Value *)this,(Value *)&local_198);
|
|
Json::Value::~Value((Value *)&local_198);
|
|
}
|
|
else if (cVar1 != '\x06') {
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_58 = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
param_1 = 0x1f28a8;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::resize(): requires arrayValue",0x2d);
|
|
this = (stringbuf *)local_1a1;
|
|
this_00 = (stringbuf_vftable *)(local_1a1 + 1);
|
|
string::string((string *)this_00,(allocator *)this);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)this_00,(string *)&local_148);
|
|
}
|
|
else {
|
|
in_RCX = (char *)local_178._8_8_;
|
|
if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)this_00,0,*(ulong *)(local_1a1._1_8_ + -0x18),
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)this_00,0,*(ulong *)(local_1a1._1_8_ + -0x18),
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
}
|
|
Json::LogicError::LogicError((LogicError *)this_00);
|
|
auVar2._8_8_ = (streambuf *)&psStack_190;
|
|
auVar2._0_8_ = in_RCX;
|
|
auVar5._8_8_ = extraout_RDX;
|
|
auVar5._0_8_ = extraout_RAX;
|
|
goto LAB_00136090;
|
|
}
|
|
if (param_1 == 0) {
|
|
stringbuf(this);
|
|
}
|
|
else {
|
|
local_1bc = Json::Value::size((Value *)this);
|
|
if (local_1bc < param_1) {
|
|
stringbuf(this,param_1 - 1);
|
|
}
|
|
else if (local_1bc != param_1) {
|
|
do {
|
|
this_00 = this->vftablePtr;
|
|
psStack_190 = (stringbuf_vftable *)CONCAT44(psStack_190._4_4_,param_1);
|
|
local_198 = (undefined **)0x0;
|
|
auVar5 = _Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::equal_range((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this_00,(CZString *)&local_198);
|
|
p_Var4 = auVar5._0_8_;
|
|
auVar2 = auVar5;
|
|
if (p_Var4 == (_Rb_tree_node_base *)this_00->setbuf) {
|
|
LAB_00136090:
|
|
p_Var4 = auVar5._0_8_;
|
|
if ((Exception_data *)auVar5._8_8_ != (Exception_data *)&this_00->~stringbuf)
|
|
goto joined_r0x00135e82;
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_erase((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this_00,(_Rb_tree_node *)this_00->imbue);
|
|
this_00->imbue = (imbue *)0x0;
|
|
this_00->setbuf = (setbuf *)auVar2._8_8_;
|
|
this_00->seekoff = auVar2._8_8_;
|
|
this_00->seekpos = (seekpos *)0x0;
|
|
}
|
|
else {
|
|
joined_r0x00135e82:
|
|
while (auVar2._8_8_ != auVar2._0_8_) {
|
|
p_Var3 = (_Rb_tree_node_base *)_Rb_tree_increment(p_Var4);
|
|
auVar2._8_8_ = auVar2._8_8_;
|
|
auVar2._0_8_ = p_Var3;
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_erase_aux((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this_00,p_Var4);
|
|
p_Var4 = p_Var3;
|
|
}
|
|
}
|
|
if ((local_198 != (undefined **)0x0) && (((byte)psStack_190._0_1_ & 3) == 1)) {
|
|
free(local_198);
|
|
}
|
|
param_1 = param_1 + 1;
|
|
} while (param_1 < local_1bc);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 001361b0 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::operator[](int) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,int param_1)
|
|
|
|
{
|
|
ulong extraout_RAX;
|
|
ulong uVar1;
|
|
char *in_RCX;
|
|
~LogicError *extraout_RDX;
|
|
~LogicError *p_Var2;
|
|
allocator local_1a1;
|
|
undefined1 local_1a0 [8];
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
undefined1 local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
if (-1 < param_1) {
|
|
stringbuf(this,param_1);
|
|
return;
|
|
}
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188 = (undefined1 [16])0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::operator[](int index): index cannot be negative"
|
|
,0x3f);
|
|
string::string((string *)local_1a0,&local_1a1);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)local_1a0,(string *)&local_148);
|
|
}
|
|
else {
|
|
p_Var2 = ((LogicError_vftable *)((long)local_1a0 + -0x18))->~LogicError;
|
|
uVar1 = local_168._0_8_;
|
|
in_RCX = (char *)local_178._8_8_;
|
|
if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) goto LAB_00136360;
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,(char *)local_178._8_8_,
|
|
local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
do {
|
|
Json::LogicError::LogicError((LogicError *)local_1a0);
|
|
uVar1 = extraout_RAX;
|
|
p_Var2 = extraout_RDX;
|
|
LAB_00136360:
|
|
string::replace((string *)local_1a0,0,(ulong)p_Var2,in_RCX,uVar1 - (long)in_RCX);
|
|
} while( true );
|
|
}
|
|
|
|
|
|
// 00136710 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::resolveReference(char const*) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,char *param_1)
|
|
|
|
{
|
|
seekoff **ppsVar1;
|
|
~stringbuf **pp_Var2;
|
|
char cVar3;
|
|
size_t sVar4;
|
|
long lVar5;
|
|
~stringbuf **pp_Var6;
|
|
~stringbuf **pp_Var7;
|
|
stringbuf *psVar8;
|
|
bool bVar9;
|
|
~stringbuf **local_1c0;
|
|
allocator local_1a9;
|
|
LogicError local_1a8;
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
Value local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar3 = *(char *)&(this->data).offset_0x0;
|
|
if (cVar3 == '\0') {
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
psStack_190 = (stringbuf_vftable *)((ulong)psStack_190 & 0xffffffffffffc000 | 0x2207);
|
|
Json::Value::Value((Value *)&local_198);
|
|
Json::Value::swap((Value *)this,(Value *)&local_198);
|
|
Json::Value::~Value((Value *)&local_198);
|
|
LAB_00136746:
|
|
sVar4 = strlen(param_1);
|
|
local_1a8.data.offset_0x0._0_4_ = (int)sVar4 << 2;
|
|
pp_Var2 = (~stringbuf **)this->vftablePtr->imbue;
|
|
local_1c0 = &this->vftablePtr->~stringbuf;
|
|
local_1a8.vftablePtr = (LogicError_vftable *)param_1;
|
|
if (pp_Var2 != (~stringbuf **)0x0) {
|
|
pp_Var6 = local_1c0;
|
|
do {
|
|
while (pp_Var7 = pp_Var2,
|
|
cVar3 = Json::Value::CZString::operator<
|
|
((CZString *)(pp_Var7 + 4),(CZString *)&local_1a8), cVar3 != '\0') {
|
|
ppsVar1 = (seekoff **)(pp_Var7 + 3);
|
|
pp_Var7 = pp_Var6;
|
|
pp_Var2 = (~stringbuf **)*ppsVar1;
|
|
if ((~stringbuf **)*ppsVar1 == (~stringbuf **)0x0) goto LAB_001367ad;
|
|
}
|
|
pp_Var6 = pp_Var7;
|
|
pp_Var2 = (~stringbuf **)pp_Var7[2];
|
|
} while ((~stringbuf **)pp_Var7[2] != (~stringbuf **)0x0);
|
|
LAB_001367ad:
|
|
bVar9 = local_1c0 != pp_Var7;
|
|
local_1c0 = pp_Var7;
|
|
if ((bVar9) &&
|
|
(cVar3 = Json::Value::CZString::operator==
|
|
((CZString *)(pp_Var7 + 4),(CZString *)&local_1a8), cVar3 != '\0')) {
|
|
psVar8 = (stringbuf *)(pp_Var7 + 6);
|
|
goto LAB_001367d2;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (cVar3 == '\a') goto LAB_00136746;
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,"in Json::Value::resolveReference(): requires objectValue",0x38
|
|
);
|
|
string::string((string *)&local_1a8,&local_1a9);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)&local_1a8,(string *)&local_148);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError(&local_1a8);
|
|
this = (stringbuf *)ostream-in-std::ostringstream::construction_vftable;
|
|
}
|
|
Json::Value::CZString::CZString((CZString *)&local_198,(CZString *)&local_1a8);
|
|
Json::Value::Value(local_188,(Value *)Json::kNull);
|
|
lVar5 = _Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_emplace_hint_unique<std::pair<Json::Value::CZString_const,Json::Value>&>
|
|
((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this->vftablePtr,local_1c0,(CZString *)&local_198);
|
|
psVar8 = (stringbuf *)(lVar5 + 0x30);
|
|
Json::Value::~Value(local_188);
|
|
if ((local_198 != (undefined **)0x0) && (((byte)psStack_190._0_1_ & 3) == 1)) {
|
|
free(local_198);
|
|
}
|
|
param_1 = (char *)local_1a8.vftablePtr;
|
|
if (local_1a8.vftablePtr == (LogicError_vftable *)0x0) {
|
|
return psVar8;
|
|
}
|
|
LAB_001367d2:
|
|
if (((byte)local_1a8.data.offset_0x0 & 3) == 1) {
|
|
free(param_1);
|
|
}
|
|
return psVar8;
|
|
}
|
|
|
|
|
|
// 00136b10 std::stringbuf::stringbuf
|
|
|
|
/* Json::Value::resolveReference(char const*, char const*) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::stringbuf(stringbuf *this,char *param_1,char *param_2)
|
|
|
|
{
|
|
seekoff **ppsVar1;
|
|
~stringbuf **pp_Var2;
|
|
char cVar3;
|
|
~stringbuf **pp_Var4;
|
|
~stringbuf **pp_Var5;
|
|
bool bVar6;
|
|
~stringbuf **local_1c0;
|
|
allocator local_1a9;
|
|
LogicError local_1a8;
|
|
undefined **local_198;
|
|
stringbuf_vftable *psStack_190;
|
|
Value local_188 [16];
|
|
undefined1 local_178 [16];
|
|
undefined1 local_168 [16];
|
|
locale local_158 [8];
|
|
undefined4 local_150;
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [248];
|
|
undefined1 local_48 [16];
|
|
|
|
cVar3 = *(char *)&(this->data).offset_0x0;
|
|
if (cVar3 == '\0') {
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
psStack_190 = (stringbuf_vftable *)((ulong)psStack_190 & 0xffffffffffffc000 | 0x2207);
|
|
Json::Value::Value((Value *)&local_198);
|
|
Json::Value::swap((Value *)this,(Value *)&local_198);
|
|
Json::Value::~Value((Value *)&local_198);
|
|
LAB_00136b46:
|
|
local_1a8.data.offset_0x0._0_4_ = ((int)param_2 - (int)param_1) * 4 + 2;
|
|
pp_Var2 = (~stringbuf **)this->vftablePtr->imbue;
|
|
local_1c0 = &this->vftablePtr->~stringbuf;
|
|
local_1a8.vftablePtr = (LogicError_vftable *)param_1;
|
|
if (pp_Var2 != (~stringbuf **)0x0) {
|
|
pp_Var5 = local_1c0;
|
|
do {
|
|
while (pp_Var4 = pp_Var2,
|
|
cVar3 = Json::Value::CZString::operator<
|
|
((CZString *)(pp_Var4 + 4),(CZString *)&local_1a8), cVar3 == '\0') {
|
|
pp_Var5 = pp_Var4;
|
|
pp_Var2 = (~stringbuf **)pp_Var4[2];
|
|
if ((~stringbuf **)pp_Var4[2] == (~stringbuf **)0x0) goto LAB_00136bad;
|
|
}
|
|
ppsVar1 = (seekoff **)(pp_Var4 + 3);
|
|
pp_Var4 = pp_Var5;
|
|
pp_Var2 = (~stringbuf **)*ppsVar1;
|
|
} while ((~stringbuf **)*ppsVar1 != (~stringbuf **)0x0);
|
|
LAB_00136bad:
|
|
bVar6 = local_1c0 != pp_Var4;
|
|
local_1c0 = pp_Var4;
|
|
if ((bVar6) &&
|
|
(cVar3 = Json::Value::CZString::operator==
|
|
((CZString *)(pp_Var4 + 4),(CZString *)&local_1a8), cVar3 != '\0'))
|
|
goto LAB_00136bd2;
|
|
}
|
|
}
|
|
else {
|
|
if (cVar3 == '\a') goto LAB_00136b46;
|
|
ios_base::ios_base((ios_base *)local_140);
|
|
local_140._232_16_ = (undefined1 [16])0x0;
|
|
local_140._216_8_ = 0;
|
|
local_48 = (undefined1 [16])0x0;
|
|
local_140._224_2_ = 0;
|
|
local_198 = ostream-in-std::ostringstream::construction_vftable;
|
|
local_140._0_8_ = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
ios::init((ios *)local_140,(streambuf *)0x0);
|
|
local_140._0_8_ = ostringstream::internal_vftable;
|
|
local_198 = ostringstream::vftable;
|
|
psStack_190 = (stringbuf_vftable *)&streambuf::vftable;
|
|
local_188[0] = (Value)0x0;
|
|
local_188[1] = (Value)0x0;
|
|
local_188[2] = (Value)0x0;
|
|
local_188[3] = (Value)0x0;
|
|
local_188[4] = (Value)0x0;
|
|
local_188[5] = (Value)0x0;
|
|
local_188[6] = (Value)0x0;
|
|
local_188[7] = (Value)0x0;
|
|
local_188[8] = (Value)0x0;
|
|
local_188[9] = (Value)0x0;
|
|
local_188[10] = (Value)0x0;
|
|
local_188[0xb] = (Value)0x0;
|
|
local_188[0xc] = (Value)0x0;
|
|
local_188[0xd] = (Value)0x0;
|
|
local_188[0xe] = (Value)0x0;
|
|
local_188[0xf] = (Value)0x0;
|
|
local_178 = (undefined1 [16])0x0;
|
|
local_168 = (undefined1 [16])0x0;
|
|
locale::locale(local_158);
|
|
local_150 = 0x10;
|
|
psStack_190 = &vftable;
|
|
local_148 = &DAT_001f8498;
|
|
ios::init((ios *)local_140,(streambuf *)&psStack_190);
|
|
__ostream_insert<char,std::char_traits<char>>
|
|
((ostream *)&local_198,
|
|
"in Json::Value::resolveReference(key, end): requires objectValue",0x40);
|
|
string::string((string *)&local_1a8,&local_1a9);
|
|
if (local_168._0_8_ == 0) {
|
|
string::assign((string *)&local_1a8,(string *)&local_148);
|
|
}
|
|
else if ((ulong)local_178._0_8_ < (ulong)local_168._0_8_) {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_168._0_8_ - local_178._8_8_);
|
|
}
|
|
else {
|
|
string::replace((string *)&local_1a8,0,(ulong)local_1a8.vftablePtr[-1].~LogicError,
|
|
(char *)local_178._8_8_,local_178._0_8_ - local_178._8_8_);
|
|
}
|
|
Json::LogicError::LogicError(&local_1a8);
|
|
this = (stringbuf *)ostream-in-std::ostringstream::construction_vftable;
|
|
}
|
|
Json::Value::CZString::CZString((CZString *)&local_198,(CZString *)&local_1a8);
|
|
Json::Value::Value(local_188,(Value *)Json::kNull);
|
|
pp_Var4 = (~stringbuf **)
|
|
_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
::_M_emplace_hint_unique<std::pair<Json::Value::CZString_const,Json::Value>&>
|
|
((_Rb_tree<Json::Value::CZString,std::pair<Json::Value::CZString_const,Json::Value>,std::_Select1st<std::pair<Json::Value::CZString_const,Json::Value>>,std::less<Json::Value::CZString>,std::allocator<std::pair<Json::Value::CZString_const,Json::Value>>>
|
|
*)this->vftablePtr,local_1c0,(CZString *)&local_198);
|
|
Json::Value::~Value(local_188);
|
|
param_1 = (char *)local_1a8.vftablePtr;
|
|
if ((local_198 != (undefined **)0x0) && (((byte)psStack_190._0_1_ & 3) == 1)) {
|
|
free(local_198);
|
|
param_1 = (char *)local_1a8.vftablePtr;
|
|
}
|
|
LAB_00136bd2:
|
|
if (((LogicError_vftable *)param_1 != (LogicError_vftable *)0x0) &&
|
|
(((byte)local_1a8.data.offset_0x0 & 3) == 1)) {
|
|
free(param_1);
|
|
}
|
|
return (stringbuf *)(pp_Var4 + 6);
|
|
}
|
|
|
|
|
|
// 0017af50 std::stringbuf::showmanyc
|
|
|
|
/* std::stringbuf::showmanyc() */
|
|
|
|
long __thiscall std::stringbuf::showmanyc(stringbuf *this)
|
|
|
|
{
|
|
ulong uVar1;
|
|
ulong uVar2;
|
|
|
|
if (((ulong)(this->data).offset_0x38 & 8) != 0) {
|
|
uVar1 = (this->data).offset_0x20;
|
|
uVar2 = (this->data).offset_0x10;
|
|
if ((uVar1 != 0) && (uVar2 < uVar1)) {
|
|
(this->data).offset_0x10 = uVar1;
|
|
uVar2 = uVar1;
|
|
}
|
|
return uVar2 - (this->data).offset_0x8;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
// 0017af80 std::stringbuf::underflow
|
|
|
|
/* std::stringbuf::underflow() */
|
|
|
|
ulong __thiscall std::stringbuf::underflow(stringbuf *this)
|
|
|
|
{
|
|
byte *pbVar1;
|
|
byte *pbVar2;
|
|
|
|
if (((ulong)(this->data).offset_0x38 & 8) != 0) {
|
|
pbVar1 = (byte *)(this->data).offset_0x20;
|
|
pbVar2 = (byte *)(this->data).offset_0x10;
|
|
if ((pbVar1 != (byte *)0x0) && (pbVar2 < pbVar1)) {
|
|
(this->data).offset_0x10 = pbVar1;
|
|
pbVar2 = pbVar1;
|
|
}
|
|
pbVar1 = (byte *)(this->data).offset_0x8;
|
|
if (pbVar1 < pbVar2) {
|
|
return (ulong)*pbVar1;
|
|
}
|
|
}
|
|
return 0xffffffff;
|
|
}
|
|
|
|
|
|
// 0017afc0 std::stringbuf::pbackfail
|
|
|
|
/* std::stringbuf::pbackfail(int) */
|
|
|
|
int __thiscall std::stringbuf::pbackfail(stringbuf *this,int param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
ulong uVar2;
|
|
char cVar3;
|
|
|
|
uVar2 = (this->data).offset_0x8;
|
|
cVar3 = (char)param_1;
|
|
if ((ulong)(this->data).offset_0x0 < uVar2) {
|
|
if (param_1 == -1) {
|
|
(this->data).offset_0x8 = uVar2 - 1;
|
|
return 0;
|
|
}
|
|
cVar1 = *(char *)(uVar2 - 1);
|
|
if ((((ulong)(this->data).offset_0x38 & 0x10) != 0) || (cVar1 == cVar3)) {
|
|
(this->data).offset_0x8 = uVar2 - 1;
|
|
if (cVar1 == cVar3) {
|
|
return param_1;
|
|
}
|
|
*(char *)(uVar2 - 1) = cVar3;
|
|
return param_1;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
// 0017c9b0 std::stringbuf::stringbuf
|
|
|
|
/* std::stringbuf::stringbuf() */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this)
|
|
|
|
{
|
|
(this->data).offset_0x0 = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
this->vftablePtr = (stringbuf_vftable *)&streambuf::vftable;
|
|
(this->data).offset_0x10 = 0;
|
|
(this->data).offset_0x18 = 0;
|
|
(this->data).offset_0x20 = 0;
|
|
(this->data).offset_0x28 = 0;
|
|
locale::locale((locale *)&(this->data).field_0x30);
|
|
*(undefined4 *)&(this->data).offset_0x38 = 0x18;
|
|
this->vftablePtr = &vftable;
|
|
*(undefined1 **)&(this->data).offset_0x40 = &DAT_001f8498;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017ca30 std::stringbuf::stringbuf
|
|
|
|
/* std::stringbuf::stringbuf(std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,undefined4 param_1)
|
|
|
|
{
|
|
(this->data).offset_0x0 = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
(this->data).offset_0x10 = 0;
|
|
this->vftablePtr = (stringbuf_vftable *)&streambuf::vftable;
|
|
(this->data).offset_0x18 = 0;
|
|
(this->data).offset_0x20 = 0;
|
|
(this->data).offset_0x28 = 0;
|
|
locale::locale((locale *)&(this->data).field_0x30);
|
|
*(undefined4 *)&(this->data).offset_0x38 = param_1;
|
|
this->vftablePtr = &vftable;
|
|
*(undefined1 **)&(this->data).offset_0x40 = &DAT_001f8498;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017cab0 std::stringbuf::swap
|
|
|
|
/* std::stringbuf::swap(std::stringbuf&) */
|
|
|
|
void __thiscall std::stringbuf::swap(stringbuf *this,stringbuf *param_1)
|
|
|
|
{
|
|
locale *this_00;
|
|
undefined1 *this_01;
|
|
undefined4 uVar1;
|
|
undefined8 uVar2;
|
|
locale local_50 [8];
|
|
locale local_48 [8];
|
|
locale local_40 [16];
|
|
|
|
this_00 = (locale *)(param_1 + 0x38);
|
|
uVar2 = (this->data).offset_0x0;
|
|
(this->data).offset_0x0 = *(undefined8 *)(param_1 + 8);
|
|
*(undefined8 *)(param_1 + 8) = uVar2;
|
|
uVar2 = (this->data).offset_0x8;
|
|
(this->data).offset_0x8 = *(undefined8 *)(param_1 + 0x10);
|
|
*(undefined8 *)(param_1 + 0x10) = uVar2;
|
|
uVar2 = (this->data).offset_0x10;
|
|
(this->data).offset_0x10 = *(undefined8 *)(param_1 + 0x18);
|
|
*(undefined8 *)(param_1 + 0x18) = uVar2;
|
|
uVar2 = (this->data).offset_0x18;
|
|
(this->data).offset_0x18 = *(undefined8 *)(param_1 + 0x20);
|
|
*(undefined8 *)(param_1 + 0x20) = uVar2;
|
|
uVar2 = (this->data).offset_0x20;
|
|
(this->data).offset_0x20 = *(undefined8 *)(param_1 + 0x28);
|
|
*(undefined8 *)(param_1 + 0x28) = uVar2;
|
|
uVar2 = (this->data).offset_0x28;
|
|
(this->data).offset_0x28 = *(undefined8 *)(param_1 + 0x30);
|
|
*(undefined8 *)(param_1 + 0x30) = uVar2;
|
|
this_01 = &(this->data).field_0x30;
|
|
locale::locale(local_40,(locale *)this_01);
|
|
locale::operator=((locale *)this_01,this_00);
|
|
locale::operator=(this_00,local_40);
|
|
locale::~locale(local_40);
|
|
locale::locale(local_50,this_00);
|
|
locale::locale(local_48,(locale *)this_01);
|
|
(*this->vftablePtr->imbue)(this);
|
|
locale::operator=((locale *)this_01,local_50);
|
|
locale::locale(local_40,this_00);
|
|
(**(code **)(*(long *)param_1 + 0x10))(param_1,local_48);
|
|
locale::operator=(this_00,local_48);
|
|
locale::~locale(local_40);
|
|
locale::~locale(local_48);
|
|
locale::~locale(local_50);
|
|
uVar1 = *(undefined4 *)&(this->data).offset_0x38;
|
|
*(undefined4 *)&(this->data).offset_0x38 = *(undefined4 *)(param_1 + 0x40);
|
|
*(undefined4 *)(param_1 + 0x40) = uVar1;
|
|
string::swap((string *)&(this->data).offset_0x40,(string *)(param_1 + 0x48));
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017cc30 std::stringbuf::str
|
|
|
|
/* std::stringbuf::str() const */
|
|
|
|
void std::stringbuf::str(void)
|
|
|
|
{
|
|
ulong uVar1;
|
|
char *pcVar2;
|
|
long in_RSI;
|
|
string *in_RDI;
|
|
allocator local_29 [9];
|
|
|
|
string::string(in_RDI,local_29);
|
|
uVar1 = *(ulong *)(in_RSI + 0x28);
|
|
if (uVar1 == 0) {
|
|
string::assign(in_RDI,(string *)(in_RSI + 0x48));
|
|
return;
|
|
}
|
|
pcVar2 = *(char **)(in_RSI + 0x20);
|
|
if (uVar1 <= *(ulong *)(in_RSI + 0x18)) {
|
|
string::replace(in_RDI,0,*(ulong *)(*(long *)in_RDI + -0x18),pcVar2,
|
|
*(ulong *)(in_RSI + 0x18) - (long)pcVar2);
|
|
return;
|
|
}
|
|
string::replace(in_RDI,0,*(ulong *)(*(long *)in_RDI + -0x18),pcVar2,uVar1 - (long)pcVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017ccf0 std::stringbuf::_M_update_egptr
|
|
|
|
/* std::stringbuf::_M_update_egptr() */
|
|
|
|
void __thiscall std::stringbuf::_M_update_egptr(stringbuf *this)
|
|
|
|
{
|
|
ulong uVar1;
|
|
|
|
uVar1 = (this->data).offset_0x20;
|
|
if ((uVar1 != 0) && ((ulong)(this->data).offset_0x10 < uVar1)) {
|
|
if (((ulong)(this->data).offset_0x38 & 8) == 0) {
|
|
(this->data).offset_0x0 = uVar1;
|
|
(this->data).offset_0x8 = uVar1;
|
|
(this->data).offset_0x10 = uVar1;
|
|
}
|
|
else {
|
|
(this->data).offset_0x10 = uVar1;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017cd20 std::stringbuf::_M_pbump
|
|
|
|
/* std::stringbuf::_M_pbump(char*, char*, long) */
|
|
|
|
void __thiscall std::stringbuf::_M_pbump(stringbuf *this,char *param_1,char *param_2,long param_3)
|
|
|
|
{
|
|
long lVar1;
|
|
char *pcVar2;
|
|
|
|
(this->data).offset_0x18 = param_1;
|
|
(this->data).offset_0x28 = param_2;
|
|
pcVar2 = param_1;
|
|
if (0x7fffffff < param_3) {
|
|
lVar1 = param_3 + 0x7fffffff;
|
|
do {
|
|
pcVar2 = param_1 + (lVar1 - param_3);
|
|
param_3 = param_3 + -0x7fffffff;
|
|
} while (0x7fffffff < param_3);
|
|
}
|
|
(this->data).offset_0x20 = pcVar2 + (int)param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017cd60 std::stringbuf::_M_sync
|
|
|
|
/* std::stringbuf::_M_sync(char*, unsigned long, unsigned long) */
|
|
|
|
void __thiscall std::stringbuf::_M_sync(stringbuf *this,char *param_1,ulong param_2,ulong param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
char *pcVar2;
|
|
uint uVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
|
|
uVar1 = *(uint *)&(this->data).offset_0x38;
|
|
pcVar2 = *(char **)&(this->data).offset_0x40;
|
|
uVar3 = uVar1 & 0x10;
|
|
pcVar4 = param_1 + *(long *)(pcVar2 + -0x18);
|
|
pcVar5 = param_1 + *(long *)(pcVar2 + -0x10);
|
|
if (pcVar2 != param_1) {
|
|
pcVar4 = pcVar4 + param_2;
|
|
param_2 = 0;
|
|
pcVar5 = pcVar4;
|
|
}
|
|
if ((uVar1 & 8) == 0) {
|
|
if (uVar3 != 0) {
|
|
_M_pbump(this,param_1,pcVar5,param_3);
|
|
(this->data).offset_0x0 = pcVar4;
|
|
(this->data).offset_0x8 = pcVar4;
|
|
(this->data).offset_0x10 = pcVar4;
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
(this->data).offset_0x0 = param_1;
|
|
(this->data).offset_0x8 = param_1 + param_2;
|
|
(this->data).offset_0x10 = pcVar4;
|
|
if (uVar3 != 0) {
|
|
_M_pbump(this,param_1,pcVar5,param_3);
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017ce00 std::stringbuf::_M_stringbuf_init
|
|
|
|
/* std::stringbuf::_M_stringbuf_init(std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::stringbuf::_M_stringbuf_init(stringbuf *this,uint param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
ulong uVar2;
|
|
|
|
*(uint *)&(this->data).offset_0x38 = param_2;
|
|
uVar2 = 0;
|
|
pcVar1 = *(char **)&(this->data).offset_0x40;
|
|
if ((param_2 & 3) != 0) {
|
|
uVar2 = *(ulong *)(pcVar1 + -0x18);
|
|
}
|
|
_M_sync(this,pcVar1,0,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017ce20 std::stringbuf::operator=
|
|
|
|
/* std::stringbuf::TEMPNAMEPLACEHOLDERVALUE(std::stringbuf&&) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::operator=(stringbuf *this,stringbuf *param_1)
|
|
|
|
{
|
|
undefined1 *this_00;
|
|
locale alStack_38 [8];
|
|
locale local_30 [8];
|
|
|
|
this_00 = &(this->data).field_0x30;
|
|
streambuf::operator=((streambuf *)this,(streambuf *)param_1);
|
|
locale::locale(alStack_38,(locale *)(param_1 + 0x38));
|
|
locale::locale(local_30,(locale *)this_00);
|
|
(*this->vftablePtr->imbue)(this);
|
|
locale::operator=((locale *)this_00,alStack_38);
|
|
locale::~locale(local_30);
|
|
locale::~locale(alStack_38);
|
|
*(undefined4 *)&(this->data).offset_0x38 = *(undefined4 *)(param_1 + 0x40);
|
|
string::swap((string *)&(this->data).offset_0x40,(string *)(param_1 + 0x48));
|
|
_M_sync((stringbuf *)param_1,*(char **)(param_1 + 0x48),0,0);
|
|
return this;
|
|
}
|
|
|
|
|
|
// 0017cee0 std::stringbuf::overflow
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0017d090) */
|
|
/* std::stringbuf::overflow(int) */
|
|
|
|
int __thiscall std::stringbuf::overflow(stringbuf *this,int param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
undefined1 *puVar4;
|
|
long lVar5;
|
|
char *pcVar6;
|
|
ulong uVar7;
|
|
allocator local_41;
|
|
undefined1 *local_40 [2];
|
|
|
|
if (((ulong)(this->data).offset_0x38 & 0x10) == 0) {
|
|
return -1;
|
|
}
|
|
if (param_1 == -1) {
|
|
param_1 = 0;
|
|
}
|
|
else {
|
|
puVar4 = (undefined1 *)(this->data).offset_0x20;
|
|
if (puVar4 < (undefined1 *)(this->data).offset_0x28) {
|
|
*puVar4 = (char)param_1;
|
|
}
|
|
else {
|
|
lVar5 = *(long *)(*(long *)&(this->data).offset_0x40 + -0x10);
|
|
if (lVar5 == 0x3ffffffffffffff9) {
|
|
return -1;
|
|
}
|
|
string::string((string *)local_40,&local_41);
|
|
uVar7 = lVar5 * 2;
|
|
if (0x3ffffffffffffff9 < uVar7) {
|
|
uVar7 = 0x3ffffffffffffff9;
|
|
}
|
|
if (uVar7 < 0x200) {
|
|
uVar7 = 0x200;
|
|
}
|
|
string::reserve((string *)local_40,uVar7);
|
|
pcVar6 = (char *)(this->data).offset_0x18;
|
|
if (pcVar6 != (char *)0x0) {
|
|
string::assign((string *)local_40,pcVar6,(this->data).offset_0x28 - (long)pcVar6);
|
|
}
|
|
lVar5 = *(long *)(local_40[0] + -0x18);
|
|
uVar7 = lVar5 + 1;
|
|
if ((*(ulong *)(local_40[0] + -0x10) < uVar7) || (0 < *(int *)(local_40[0] + -8))) {
|
|
string::reserve((string *)local_40,uVar7);
|
|
}
|
|
local_40[0][*(long *)(local_40[0] + -0x18)] = (char)param_1;
|
|
if (local_40[0] != &DAT_001f8498) {
|
|
*(undefined4 *)(local_40[0] + -8) = 0;
|
|
*(ulong *)(local_40[0] + -0x18) = uVar7;
|
|
local_40[0][lVar5 + 1] = 0;
|
|
}
|
|
string::swap((string *)&(this->data).offset_0x40,(string *)local_40);
|
|
_M_sync(this,*(char **)&(this->data).offset_0x40,
|
|
(this->data).offset_0x8 - (this->data).offset_0x0,
|
|
(this->data).offset_0x20 - (this->data).offset_0x18);
|
|
if ((allocator *)(local_40[0] + -0x18) != (allocator *)&string::_Rep::_S_empty_rep_storage) {
|
|
LOCK();
|
|
piVar2 = (int *)(local_40[0] + -8);
|
|
iVar3 = *piVar2;
|
|
*piVar2 = *piVar2 + -1;
|
|
UNLOCK();
|
|
if (iVar3 < 1) {
|
|
string::_Rep::_M_destroy((allocator *)(local_40[0] + -0x18));
|
|
}
|
|
}
|
|
}
|
|
puVar1 = &(this->data).offset_0x20;
|
|
*puVar1 = *puVar1 + 1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
// 0017d0d0 std::stringbuf::setbuf
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0017d196) */
|
|
/* std::stringbuf::setbuf(char*, long) */
|
|
|
|
stringbuf * __thiscall std::stringbuf::setbuf(stringbuf *this,char *param_1,long param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
undefined1 *puVar3;
|
|
|
|
if ((param_1 != (char *)0x0) && (-1 < param_2)) {
|
|
puVar3 = *(undefined1 **)&(this->data).offset_0x40;
|
|
if (*(int *)(*(long *)&(this->data).offset_0x40 + -8) < 1) {
|
|
if (puVar3 != &DAT_001f8498) {
|
|
*(undefined4 *)(puVar3 + -8) = 0;
|
|
*(undefined8 *)(puVar3 + -0x18) = 0;
|
|
*puVar3 = 0;
|
|
}
|
|
}
|
|
else {
|
|
if ((allocator *)(puVar3 + -0x18) != (allocator *)&string::_Rep::_S_empty_rep_storage) {
|
|
LOCK();
|
|
piVar1 = (int *)(puVar3 + -8);
|
|
iVar2 = *piVar1;
|
|
*piVar1 = *piVar1 + -1;
|
|
UNLOCK();
|
|
if (iVar2 < 1) {
|
|
string::_Rep::_M_destroy((allocator *)(puVar3 + -0x18));
|
|
}
|
|
}
|
|
*(undefined1 **)&(this->data).offset_0x40 = &DAT_001f8498;
|
|
}
|
|
_M_sync(this,param_1,param_2,0);
|
|
return this;
|
|
}
|
|
return this;
|
|
}
|
|
|
|
|
|
// 0017d1b0 std::stringbuf::stringbuf
|
|
|
|
/* std::stringbuf::stringbuf(std::stringbuf&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,stringbuf *param_1)
|
|
|
|
{
|
|
streambuf::streambuf((streambuf *)this,(streambuf *)param_1);
|
|
this->vftablePtr = &vftable;
|
|
*(undefined4 *)&(this->data).offset_0x38 = *(undefined4 *)(param_1 + 0x40);
|
|
*(undefined8 *)&(this->data).offset_0x40 = *(undefined8 *)(param_1 + 0x48);
|
|
*(undefined1 **)(param_1 + 0x48) = &DAT_001f8498;
|
|
_M_sync((stringbuf *)param_1,&DAT_001f8498,0,0);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017d220 std::stringbuf::str
|
|
|
|
/* std::stringbuf::str(std::string const&) */
|
|
|
|
void __thiscall std::stringbuf::str(stringbuf *this,string *param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
ulong uVar2;
|
|
|
|
string::assign((string *)&(this->data).offset_0x40,*(char **)param_1,
|
|
*(ulong *)(*(char **)param_1 + -0x18));
|
|
uVar2 = 0;
|
|
pcVar1 = *(char **)&(this->data).offset_0x40;
|
|
if (((ulong)(this->data).offset_0x38 & 3) != 0) {
|
|
uVar2 = *(ulong *)(pcVar1 + -0x18);
|
|
}
|
|
_M_sync(this,pcVar1,0,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017d250 std::stringbuf::stringbuf
|
|
|
|
/* std::stringbuf::stringbuf(std::string const&, std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,undefined8 *param_1,uint param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
ulong uVar2;
|
|
allocator local_29;
|
|
|
|
(this->data).offset_0x0 = 0;
|
|
(this->data).offset_0x8 = 0;
|
|
(this->data).offset_0x10 = 0;
|
|
this->vftablePtr = (stringbuf_vftable *)&streambuf::vftable;
|
|
(this->data).offset_0x18 = 0;
|
|
(this->data).offset_0x20 = 0;
|
|
(this->data).offset_0x28 = 0;
|
|
locale::locale((locale *)&(this->data).field_0x30);
|
|
pcVar1 = (char *)*param_1;
|
|
*(undefined4 *)&(this->data).offset_0x38 = 0;
|
|
uVar2 = *(ulong *)(pcVar1 + -0x18);
|
|
this->vftablePtr = &vftable;
|
|
string::string((string *)&(this->data).offset_0x40,pcVar1,uVar2,&local_29);
|
|
*(uint *)&(this->data).offset_0x38 = param_2;
|
|
uVar2 = 0;
|
|
pcVar1 = *(char **)&(this->data).offset_0x40;
|
|
if ((param_2 & 3) != 0) {
|
|
uVar2 = *(ulong *)(pcVar1 + -0x18);
|
|
}
|
|
_M_sync(this,pcVar1,0,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017d340 std::stringbuf::seekoff
|
|
|
|
/* std::stringbuf::seekoff(long, std::_Ios_Seekdir, std::_Ios_Openmode) */
|
|
|
|
undefined1 [16] __thiscall
|
|
std::stringbuf::seekoff(stringbuf *this,ulong param_1,int param_2,uint param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
byte bVar2;
|
|
ulong uVar3;
|
|
byte bVar4;
|
|
uint uVar5;
|
|
long lVar6;
|
|
byte bVar7;
|
|
bool bVar8;
|
|
undefined1 auVar9 [16];
|
|
undefined1 auVar10 [16];
|
|
|
|
uVar1 = *(uint *)&(this->data).offset_0x38;
|
|
uVar5 = uVar1 & 8;
|
|
bVar8 = (param_3 & uVar5) != 0;
|
|
bVar2 = (byte)((uVar1 & param_3) >> 4);
|
|
bVar7 = bVar8 & bVar2 & param_2 != 1;
|
|
bVar2 = ((byte)(param_3 >> 3) ^ 1) & 1 & bVar2;
|
|
bVar4 = bVar8 & ((byte)(param_3 >> 4) ^ 1);
|
|
if (bVar4 == 0) {
|
|
lVar6 = (this->data).offset_0x18;
|
|
if ((lVar6 == 0) && (param_1 != 0)) goto LAB_0017d406;
|
|
if (bVar2 == 0 && bVar7 == 0) {
|
|
auVar10._12_4_ = 0;
|
|
auVar10._0_12_ = ZEXT812(0xffffffffffffffff);
|
|
return auVar10;
|
|
}
|
|
}
|
|
else {
|
|
lVar6 = (this->data).offset_0x0;
|
|
if ((lVar6 == 0) && (param_1 != 0)) {
|
|
LAB_0017d406:
|
|
return ZEXT816(0xffffffffffffffff);
|
|
}
|
|
}
|
|
uVar3 = (this->data).offset_0x20;
|
|
if ((uVar3 != 0) && ((ulong)(this->data).offset_0x10 < uVar3)) {
|
|
if (uVar5 == 0) {
|
|
(this->data).offset_0x0 = uVar3;
|
|
(this->data).offset_0x8 = uVar3;
|
|
}
|
|
(this->data).offset_0x10 = uVar3;
|
|
}
|
|
if (param_2 == 1) {
|
|
uVar3 = (uVar3 - lVar6) + param_1;
|
|
param_1 = param_1 + ((this->data).offset_0x8 - lVar6);
|
|
}
|
|
else {
|
|
uVar3 = param_1;
|
|
if (param_2 == 2) {
|
|
param_1 = param_1 + ((this->data).offset_0x10 - lVar6);
|
|
uVar3 = param_1;
|
|
}
|
|
}
|
|
if (((bVar7 == 0 && bVar4 == 0) || ((long)param_1 < 0)) ||
|
|
((this->data).offset_0x10 - lVar6 < (long)param_1)) {
|
|
param_1 = 0xffffffffffffffff;
|
|
}
|
|
else {
|
|
(this->data).offset_0x8 = (this->data).offset_0x0 + param_1;
|
|
}
|
|
if (((-1 < (long)uVar3) && (bVar2 != 0 || bVar7 != 0)) &&
|
|
((long)uVar3 <= (this->data).offset_0x10 - lVar6)) {
|
|
_M_pbump(this,(char *)(this->data).offset_0x18,(char *)(this->data).offset_0x28,uVar3);
|
|
param_1 = uVar3;
|
|
}
|
|
auVar9._8_8_ = 0;
|
|
auVar9._0_8_ = param_1;
|
|
return auVar9;
|
|
}
|
|
|
|
|
|
// 0017d4a0 std::stringbuf::seekpos
|
|
|
|
/* std::stringbuf::seekpos(std::fpos<__mbstate_t>, std::_Ios_Openmode) */
|
|
|
|
undefined1 [16] __thiscall
|
|
std::stringbuf::seekpos(stringbuf *this,long param_1,ulong param_2,uint param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
long lVar3;
|
|
ulong uVar4;
|
|
uint uVar5;
|
|
undefined1 auVar6 [16];
|
|
|
|
uVar5 = *(uint *)&(this->data).offset_0x38;
|
|
uVar1 = uVar5 & param_3;
|
|
uVar5 = uVar5 & 8;
|
|
uVar2 = param_3 & uVar5;
|
|
if (uVar2 == 0) {
|
|
lVar3 = (this->data).offset_0x18;
|
|
}
|
|
else {
|
|
lVar3 = (this->data).offset_0x0;
|
|
}
|
|
if (((param_1 == 0) || (lVar3 != 0)) && ((uVar1 & 0x18) != 0)) {
|
|
uVar4 = (this->data).offset_0x20;
|
|
if ((uVar4 != 0) && ((ulong)(this->data).offset_0x10 < uVar4)) {
|
|
if (uVar5 == 0) {
|
|
(this->data).offset_0x0 = uVar4;
|
|
(this->data).offset_0x8 = uVar4;
|
|
}
|
|
(this->data).offset_0x10 = uVar4;
|
|
}
|
|
if ((-1 < param_1) && (param_1 <= (this->data).offset_0x10 - lVar3)) {
|
|
if (uVar2 != 0) {
|
|
(this->data).offset_0x8 = (this->data).offset_0x0 + param_1;
|
|
}
|
|
if ((uVar1 & 0x10) != 0) {
|
|
_M_pbump(this,(char *)(this->data).offset_0x18,(char *)(this->data).offset_0x28,param_1);
|
|
}
|
|
uVar5 = (uint)param_2;
|
|
uVar4 = param_2 >> 0x20;
|
|
goto LAB_0017d533;
|
|
}
|
|
}
|
|
uVar4 = 0;
|
|
uVar5 = 0;
|
|
param_1 = -1;
|
|
LAB_0017d533:
|
|
auVar6._8_8_ = (ulong)uVar5 | uVar4 << 0x20;
|
|
auVar6._0_8_ = param_1;
|
|
return auVar6;
|
|
}
|
|
|
|
|
|
// 0017d580 std::stringbuf::stringbuf
|
|
|
|
/* std::stringbuf::stringbuf(std::stringbuf&&, std::stringbuf::__xfer_bufptrs&&) */
|
|
|
|
void __thiscall
|
|
std::stringbuf::stringbuf(stringbuf *this,stringbuf *param_1,__xfer_bufptrs *param_2)
|
|
|
|
{
|
|
streambuf::streambuf((streambuf *)this,(streambuf *)param_1);
|
|
this->vftablePtr = &vftable;
|
|
*(undefined4 *)&(this->data).offset_0x38 = *(undefined4 *)(param_1 + 0x40);
|
|
*(undefined8 *)&(this->data).offset_0x40 = *(undefined8 *)(param_1 + 0x48);
|
|
*(undefined1 **)(param_1 + 0x48) = &DAT_001f8498;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017def0 std::stringbuf::stringbuf
|
|
|
|
/* std::istringstream::istringstream(std::istringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,istringstream *param_1)
|
|
|
|
{
|
|
undefined8 *this_00;
|
|
stringbuf_vftable *psVar1;
|
|
undefined8 uVar2;
|
|
pbackfail *ppVar3;
|
|
undefined8 uVar4;
|
|
long *in_RDX;
|
|
ios *this_01;
|
|
ios_base *piVar5;
|
|
|
|
psVar1 = *(stringbuf_vftable **)(param_1 + 8);
|
|
uVar2 = *(undefined8 *)(param_1 + 0x10);
|
|
ppVar3 = psVar1[-1].pbackfail;
|
|
this->vftablePtr = psVar1;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)ppVar3) = uVar2;
|
|
(this->data).offset_0x0 = in_RDX[1];
|
|
this_01 = (ios *)((long)&this->vftablePtr + (long)psVar1[-1].pbackfail);
|
|
piVar5 = (ios_base *)(*(long *)(*in_RDX + -0x18) + (long)in_RDX);
|
|
ios_base::_M_move((ios_base *)this_01,piVar5);
|
|
ios::_M_cache_locale(this_01,(locale *)&(this_01->data).field_0xc8);
|
|
uVar2 = *(undefined8 *)(piVar5 + 0xd8);
|
|
*(undefined8 *)(piVar5 + 0xd8) = 0;
|
|
(this_01->data).offset_0x17 = (streambuf *)0x0;
|
|
uVar4 = *(undefined8 *)(param_1 + 0x18);
|
|
(this_01->data).offset_0x7 = uVar2;
|
|
(this_01->data).offset_0xf = *(undefined2 *)(piVar5 + 0xe0);
|
|
psVar1 = *(stringbuf_vftable **)param_1;
|
|
this_00 = &(this->data).offset_0x8;
|
|
in_RDX[1] = 0;
|
|
this->vftablePtr = psVar1;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)psVar1[-1].pbackfail) = uVar4;
|
|
streambuf::streambuf((streambuf *)this_00,(streambuf *)(in_RDX + 2));
|
|
(this->data).offset_0x8 = &vftable;
|
|
*(int *)&(this->data).offset_0x4 = (int)in_RDX[10];
|
|
(this->data).offset_0xc = (undefined **)in_RDX[0xb];
|
|
in_RDX[0xb] = (long)&DAT_001f8498;
|
|
_M_sync((stringbuf *)(in_RDX + 2),&DAT_001f8498,0,0);
|
|
*(undefined8 **)(this->vftablePtr[-1].pbackfail + 0x9c + (long)&(this->data).field_0x0) = this_00;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017e030 std::stringbuf::stringbuf
|
|
|
|
/* std::istringstream::istringstream(std::istringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,istringstream *param_1)
|
|
|
|
{
|
|
undefined ***this_00;
|
|
undefined8 *this_01;
|
|
undefined8 uVar1;
|
|
long lVar2;
|
|
ios_base *piVar3;
|
|
|
|
this_00 = &(this->data).offset_0x14;
|
|
ios_base::ios_base((ios_base *)this_00);
|
|
this->vftablePtr = (stringbuf_vftable *)istream-in-std::istringstream::construction_vftable;
|
|
*(undefined2 *)&(this->data).offset_0xf4 = 0;
|
|
(this->data).offset_0x14 = istream-in-std::istringstream::internal_construction_vftable;
|
|
uVar1 = *(undefined8 *)(param_1 + 8);
|
|
(this->data).offset_0xec = 0;
|
|
(this->data).offset_0x0 = uVar1;
|
|
lVar2 = *(long *)param_1;
|
|
(this->data).offset_0xfc = (streambuf *)0x0;
|
|
(this->data).offset_0x104 = (streambuf *)0x0;
|
|
lVar2 = *(long *)(lVar2 + -0x18);
|
|
(this->data).offset_0x10c = 0;
|
|
(this->data).offset_0x114 = 0;
|
|
piVar3 = (ios_base *)(param_1 + lVar2);
|
|
ios_base::_M_move((ios_base *)this_00,piVar3);
|
|
ios::_M_cache_locale((ios *)this_00,(locale *)&(this->data).offset_0xe4);
|
|
uVar1 = *(undefined8 *)(piVar3 + 0xd8);
|
|
*(undefined8 *)(piVar3 + 0xd8) = 0;
|
|
(this->data).offset_0xfc = (streambuf *)0x0;
|
|
(this->data).offset_0xec = uVar1;
|
|
this_01 = &(this->data).offset_0x8;
|
|
*(undefined2 *)&(this->data).offset_0xf4 = *(undefined2 *)(piVar3 + 0xe0);
|
|
*(undefined8 *)(param_1 + 8) = 0;
|
|
this->vftablePtr = (stringbuf_vftable *)istringstream::vftable;
|
|
(this->data).offset_0x14 = istringstream::internal_vftable;
|
|
streambuf::streambuf((streambuf *)this_01,(streambuf *)(param_1 + 0x10));
|
|
(this->data).offset_0x8 = &vftable;
|
|
*(undefined4 *)&(this->data).offset_0x4 = *(undefined4 *)(param_1 + 0x50);
|
|
(this->data).offset_0xc = *(undefined ***)(param_1 + 0x58);
|
|
*(undefined1 **)(param_1 + 0x58) = &DAT_001f8498;
|
|
_M_sync((stringbuf *)(param_1 + 0x10),&DAT_001f8498,0,0);
|
|
(this->data).offset_0xfc = (streambuf *)this_01;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017eee0 std::stringbuf::stringbuf
|
|
|
|
/* std::ostringstream::ostringstream(std::ostringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,ostringstream *param_1)
|
|
|
|
{
|
|
pbackfail *ppVar1;
|
|
undefined8 uVar2;
|
|
undefined8 uVar3;
|
|
stringbuf_vftable *psVar4;
|
|
long *in_RDX;
|
|
ios *this_00;
|
|
ios_base *piVar5;
|
|
|
|
ppVar1 = (*(stringbuf_vftable **)(param_1 + 8))[-1].pbackfail;
|
|
this->vftablePtr = *(stringbuf_vftable **)(param_1 + 8);
|
|
this_00 = (ios *)((long)&this->vftablePtr + (long)ppVar1);
|
|
this_00->vftablePtr = *(ios_vftable **)(param_1 + 0x10);
|
|
piVar5 = (ios_base *)(*(long *)(*in_RDX + -0x18) + (long)in_RDX);
|
|
ios_base::_M_move((ios_base *)this_00,piVar5);
|
|
ios::_M_cache_locale(this_00,(locale *)&(this_00->data).field_0xc8);
|
|
uVar2 = *(undefined8 *)(piVar5 + 0xd8);
|
|
*(undefined8 *)(piVar5 + 0xd8) = 0;
|
|
(this_00->data).offset_0x17 = (streambuf *)0x0;
|
|
uVar3 = *(undefined8 *)(param_1 + 0x18);
|
|
(this_00->data).offset_0x7 = uVar2;
|
|
(this_00->data).offset_0xf = *(undefined2 *)(piVar5 + 0xe0);
|
|
psVar4 = *(stringbuf_vftable **)param_1;
|
|
this->vftablePtr = psVar4;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)psVar4[-1].pbackfail) = uVar3;
|
|
streambuf::streambuf((streambuf *)&this->data,(streambuf *)(in_RDX + 1));
|
|
(this->data).offset_0x0 = &vftable;
|
|
(this->data).offset_0x40 = (int)in_RDX[9];
|
|
(this->data).offset_0x4 = in_RDX[10];
|
|
in_RDX[10] = (long)&DAT_001f8498;
|
|
_M_sync((stringbuf *)(in_RDX + 1),&DAT_001f8498,0,0);
|
|
*(streambuf_data **)(this->vftablePtr[-1].pbackfail + 0x9c + (long)&(this->data).field_0x0) =
|
|
&this->data;
|
|
return;
|
|
}
|
|
|
|
|
|
// 0017f010 std::stringbuf::stringbuf
|
|
|
|
/* std::ostringstream::ostringstream(std::ostringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,ostringstream *param_1)
|
|
|
|
{
|
|
undefined ***this_00;
|
|
long lVar1;
|
|
undefined8 uVar2;
|
|
ios_base *piVar3;
|
|
|
|
this_00 = &(this->data).offset_0xc;
|
|
ios_base::ios_base((ios_base *)this_00);
|
|
this->vftablePtr = (stringbuf_vftable *)ostream-in-std::ostringstream::construction_vftable;
|
|
*(undefined2 *)&(this->data).offset_0xec = 0;
|
|
(this->data).offset_0xc = ostream-in-std::ostringstream::internal_construction_vftable;
|
|
lVar1 = *(long *)param_1;
|
|
(this->data).offset_0xe4 = 0;
|
|
(this->data).offset_0xf4 = (streambuf *)0x0;
|
|
lVar1 = *(long *)(lVar1 + -0x18);
|
|
(this->data).offset_0xfc = (streambuf *)0x0;
|
|
(this->data).offset_0x104 = (streambuf *)0x0;
|
|
piVar3 = (ios_base *)(param_1 + lVar1);
|
|
(this->data).offset_0x10c = 0;
|
|
ios_base::_M_move((ios_base *)this_00,piVar3);
|
|
ios::_M_cache_locale((ios *)this_00,(locale *)&(this->data).field_0xdc);
|
|
uVar2 = *(undefined8 *)(piVar3 + 0xd8);
|
|
*(undefined8 *)(piVar3 + 0xd8) = 0;
|
|
(this->data).offset_0xf4 = (streambuf *)0x0;
|
|
(this->data).offset_0xe4 = uVar2;
|
|
*(undefined2 *)&(this->data).offset_0xec = *(undefined2 *)(piVar3 + 0xe0);
|
|
this->vftablePtr = (stringbuf_vftable *)ostringstream::vftable;
|
|
(this->data).offset_0xc = ostringstream::internal_vftable;
|
|
streambuf::streambuf((streambuf *)&this->data,(streambuf *)(param_1 + 8));
|
|
(this->data).offset_0x0 = &vftable;
|
|
(this->data).offset_0x40 = *(undefined4 *)(param_1 + 0x48);
|
|
(this->data).offset_0x4 = *(long *)(param_1 + 0x50);
|
|
*(undefined1 **)(param_1 + 0x50) = &DAT_001f8498;
|
|
_M_sync((stringbuf *)(param_1 + 8),&DAT_001f8498,0,0);
|
|
(this->data).offset_0xf4 = (streambuf *)&this->data;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00180160 std::stringbuf::stringbuf
|
|
|
|
/* std::stringstream::stringstream(std::stringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,stringstream *param_1)
|
|
|
|
{
|
|
undefined8 *this_00;
|
|
stringbuf_vftable *psVar1;
|
|
undefined8 uVar2;
|
|
pbackfail *ppVar3;
|
|
long lVar4;
|
|
long *in_RDX;
|
|
ios *this_01;
|
|
ios_base *piVar5;
|
|
|
|
psVar1 = *(stringbuf_vftable **)(param_1 + 0x10);
|
|
uVar2 = *(undefined8 *)(param_1 + 0x18);
|
|
ppVar3 = psVar1[-1].pbackfail;
|
|
this->vftablePtr = psVar1;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)ppVar3) = uVar2;
|
|
(this->data).offset_0x0 = in_RDX[1];
|
|
this_01 = (ios *)((long)&this->vftablePtr + (long)psVar1[-1].pbackfail);
|
|
piVar5 = (ios_base *)(*(long *)(*in_RDX + -0x18) + (long)in_RDX);
|
|
ios_base::_M_move((ios_base *)this_01,piVar5);
|
|
ios::_M_cache_locale(this_01,(locale *)&(this_01->data).field_0xc8);
|
|
uVar2 = *(undefined8 *)(piVar5 + 0xd8);
|
|
(this_01->data).offset_0x17 = (streambuf *)0x0;
|
|
*(undefined8 *)(piVar5 + 0xd8) = 0;
|
|
(this_01->data).offset_0x7 = uVar2;
|
|
(this_01->data).offset_0xf = *(undefined2 *)(piVar5 + 0xe0);
|
|
lVar4 = *(long *)(param_1 + 0x20);
|
|
this_00 = &(this->data).offset_0x10;
|
|
in_RDX[1] = 0;
|
|
uVar2 = *(undefined8 *)(param_1 + 0x28);
|
|
(this->data).offset_0x8 = lVar4;
|
|
*(undefined8 *)((long)&(this->data).offset_0x8 + *(long *)(lVar4 + -0x18)) = uVar2;
|
|
psVar1 = *(stringbuf_vftable **)(param_1 + 8);
|
|
uVar2 = *(undefined8 *)(param_1 + 0x30);
|
|
this->vftablePtr = psVar1;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)psVar1[-1].pbackfail) = uVar2;
|
|
(this->data).offset_0x8 = *(undefined8 *)(param_1 + 0x38);
|
|
psVar1 = *(stringbuf_vftable **)param_1;
|
|
uVar2 = *(undefined8 *)(param_1 + 0x40);
|
|
this->vftablePtr = psVar1;
|
|
*(undefined8 *)((long)&this->vftablePtr + (long)psVar1[-1].pbackfail) = uVar2;
|
|
(this->data).offset_0x8 = *(undefined8 *)(param_1 + 0x48);
|
|
streambuf::streambuf((streambuf *)this_00,(streambuf *)(in_RDX + 3));
|
|
(this->data).offset_0x10 = &vftable;
|
|
*(int *)&(this->data).offset_0xc = (int)in_RDX[0xb];
|
|
(this->data).offset_0x14 = (undefined **)in_RDX[0xc];
|
|
in_RDX[0xc] = (long)&DAT_001f8498;
|
|
_M_sync((stringbuf *)(in_RDX + 3),&DAT_001f8498,0,0);
|
|
*(undefined8 **)(this->vftablePtr[-1].pbackfail + 0x9c + (long)&(this->data).field_0x0) = this_00;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00180310 std::stringbuf::stringbuf
|
|
|
|
/* std::stringstream::stringstream(std::stringstream&&) */
|
|
|
|
void __thiscall std::stringbuf::stringbuf(stringbuf *this,stringstream *param_1)
|
|
|
|
{
|
|
undefined ***this_00;
|
|
undefined8 *this_01;
|
|
undefined8 uVar1;
|
|
long lVar2;
|
|
streambuf *psVar3;
|
|
ios_base *piVar4;
|
|
|
|
this_00 = &(this->data).offset_0x1c;
|
|
ios_base::ios_base((ios_base *)this_00);
|
|
this->vftablePtr = (stringbuf_vftable *)istream-in-std::stringstream::construction_vftable;
|
|
*(undefined2 *)&(this->data).offset_0xfc = 0;
|
|
(this->data).offset_0x1c = istream-in-std::stringstream::internal_construction_vftable;
|
|
uVar1 = *(undefined8 *)(param_1 + 8);
|
|
(this->data).offset_0xf4 = (streambuf *)0x0;
|
|
(this->data).offset_0x0 = uVar1;
|
|
lVar2 = *(long *)param_1;
|
|
(this->data).offset_0x104 = (streambuf *)0x0;
|
|
(this->data).offset_0x10c = 0;
|
|
lVar2 = *(long *)(lVar2 + -0x18);
|
|
(this->data).offset_0x114 = 0;
|
|
(this->data).offset_0x11c = 0;
|
|
piVar4 = (ios_base *)(param_1 + lVar2);
|
|
ios_base::_M_move((ios_base *)this_00,piVar4);
|
|
ios::_M_cache_locale((ios *)this_00,(locale *)&(this->data).offset_0xec);
|
|
psVar3 = *(streambuf **)(piVar4 + 0xd8);
|
|
*(undefined8 *)(piVar4 + 0xd8) = 0;
|
|
(this->data).offset_0x104 = (streambuf *)0x0;
|
|
(this->data).offset_0xf4 = psVar3;
|
|
this_01 = &(this->data).offset_0x10;
|
|
*(undefined2 *)&(this->data).offset_0xfc = *(undefined2 *)(piVar4 + 0xe0);
|
|
*(undefined8 *)(param_1 + 8) = 0;
|
|
this->vftablePtr = (stringbuf_vftable *)stringstream::vftable;
|
|
(this->data).offset_0x1c = stringstream::internal_vftable;
|
|
(this->data).offset_0x8 = stringstream::internal_vftable;
|
|
streambuf::streambuf((streambuf *)this_01,(streambuf *)(param_1 + 0x18));
|
|
(this->data).offset_0x10 = &vftable;
|
|
*(undefined4 *)&(this->data).offset_0xc = *(undefined4 *)(param_1 + 0x58);
|
|
(this->data).offset_0x14 = *(undefined ***)(param_1 + 0x60);
|
|
*(undefined1 **)(param_1 + 0x60) = &DAT_001f8498;
|
|
_M_sync((stringbuf *)(param_1 + 0x18),&DAT_001f8498,0,0);
|
|
(this->data).offset_0x104 = (streambuf *)this_01;
|
|
return;
|
|
}
|
|
|
|
|