Files

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;
}