// 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> ((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> ((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> ((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> ((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,std::_Select1st>,std::less,std::allocator>> ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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,std::_Select1st>,std::less,std::allocator>> ::find((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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> ((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,std::_Select1st>,std::less,std::allocator>> ::find((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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> ((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,std::_Select1st>,std::less,std::allocator>> ::_M_emplace_hint_unique&> ((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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,std::_Select1st>,std::less,std::allocator>> ::equal_range((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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,std::_Select1st>,std::less,std::allocator>> ::_M_erase((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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,std::_Select1st>,std::less,std::allocator>> ::_M_erase_aux((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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> ((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,std::_Select1st>,std::less,std::allocator>> ::_M_emplace_hint_unique&> ((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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> ((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,std::_Select1st>,std::less,std::allocator>> ::_M_emplace_hint_unique&> ((_Rb_tree,std::_Select1st>,std::less,std::allocator>> *)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; }