579 lines
12 KiB
C
579 lines
12 KiB
C
// 00116006 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0011601a) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0011637c std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00116390) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00116864 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00116878) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00117ac4 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00117ad8) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0011876c std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00118780) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00119caa std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00119cbe) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0011a840 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0011a854) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0011b660 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0011b680) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0011c280 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0011c2a0) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 0013f9e0 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0013fa00) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00140730 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00140750) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00162c50 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00162c70) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186a90 std::string::_Rep::_S_empty_rep
|
|
|
|
/* std::string::_Rep::_S_empty_rep() */
|
|
|
|
undefined8 * std::string::_Rep::_S_empty_rep(void)
|
|
|
|
{
|
|
return &_S_empty_rep_storage;
|
|
}
|
|
|
|
|
|
// 00186aa0 std::string::_Rep::_M_is_leaked
|
|
|
|
/* std::string::_Rep::_M_is_leaked() const */
|
|
|
|
uint __thiscall std::string::_Rep::_M_is_leaked(_Rep *this)
|
|
|
|
{
|
|
return *(uint *)(this + 0x10) >> 0x1f;
|
|
}
|
|
|
|
|
|
// 00186ab0 std::string::_Rep::_M_is_shared
|
|
|
|
/* std::string::_Rep::_M_is_shared() const */
|
|
|
|
undefined4 __thiscall std::string::_Rep::_M_is_shared(_Rep *this)
|
|
|
|
{
|
|
return CONCAT31((int3)((uint)*(int *)(this + 0x10) >> 8),0 < *(int *)(this + 0x10));
|
|
}
|
|
|
|
|
|
// 00186ac0 std::string::_Rep::_M_set_leaked
|
|
|
|
/* std::string::_Rep::_M_set_leaked() */
|
|
|
|
void __thiscall std::string::_Rep::_M_set_leaked(_Rep *this)
|
|
|
|
{
|
|
*(undefined4 *)(this + 0x10) = 0xffffffff;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186ad0 std::string::_Rep::_M_set_sharable
|
|
|
|
/* std::string::_Rep::_M_set_sharable() */
|
|
|
|
void __thiscall std::string::_Rep::_M_set_sharable(_Rep *this)
|
|
|
|
{
|
|
*(undefined4 *)(this + 0x10) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186ae0 std::string::_Rep::_M_set_length_and_sharable
|
|
|
|
/* std::string::_Rep::_M_set_length_and_sharable(unsigned long) */
|
|
|
|
void __thiscall std::string::_Rep::_M_set_length_and_sharable(_Rep *this,ulong param_1)
|
|
|
|
{
|
|
if (this == (_Rep *)&_S_empty_rep_storage) {
|
|
return;
|
|
}
|
|
*(undefined4 *)(this + 0x10) = 0;
|
|
*(ulong *)this = param_1;
|
|
this[param_1 + 0x18] = (_Rep)0x0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186b00 std::string::_Rep::_M_refdata
|
|
|
|
/* std::string::_Rep::_M_refdata() */
|
|
|
|
_Rep * __thiscall std::string::_Rep::_M_refdata(_Rep *this)
|
|
|
|
{
|
|
return this + 0x18;
|
|
}
|
|
|
|
|
|
// 00186b10 std::string::_Rep::_S_create
|
|
|
|
/* std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) */
|
|
|
|
void std::string::_Rep::_S_create(ulong param_1,ulong param_2,allocator *param_3)
|
|
|
|
{
|
|
void *pvVar1;
|
|
bad_alloc *this;
|
|
|
|
if (0x3ffffffffffffff9 < param_1) {
|
|
/* WARNING: Subroutine does not return */
|
|
__throw_length_error("basic_string::_S_create");
|
|
}
|
|
if (param_2 < param_1) {
|
|
if (param_1 < param_2 * 2) {
|
|
param_1 = param_2 * 2;
|
|
}
|
|
if ((param_1 + 0x39 < 0x1001) || (param_1 <= param_2)) {
|
|
this = (bad_alloc *)(param_1 + 0x19);
|
|
if ((long)this < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
bad_alloc::~bad_alloc(this);
|
|
}
|
|
}
|
|
else {
|
|
param_1 = (param_1 + 0x1000) - (ulong)((uint)(param_1 + 0x39) & 0xfff);
|
|
if (0x3ffffffffffffff9 < param_1) {
|
|
param_1 = 0x3ffffffffffffff9;
|
|
}
|
|
this = (bad_alloc *)(param_1 + 0x19);
|
|
}
|
|
}
|
|
else {
|
|
this = (bad_alloc *)(param_1 + 0x19);
|
|
}
|
|
pvVar1 = operator_new((ulong)this);
|
|
*(ulong *)((long)pvVar1 + 8) = param_1;
|
|
*(undefined4 *)((long)pvVar1 + 0x10) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186d00 std::string::_Rep::_M_destroy
|
|
|
|
/* std::string::_Rep::_M_destroy(std::allocator<char> const&) */
|
|
|
|
void std::string::_Rep::_M_destroy(allocator *param_1)
|
|
|
|
{
|
|
free(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186d10 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00186d30) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00186d50 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00186d80) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 != (allocator *)&_S_empty_rep_storage) {
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (iVar2 < 1) {
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
// 001879c0 std::string::_Rep::_M_refcopy
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x001879e8) */
|
|
/* std::string::_Rep::_M_refcopy() */
|
|
|
|
_Rep * __thiscall std::string::_Rep::_M_refcopy(_Rep *this)
|
|
|
|
{
|
|
if (this != (_Rep *)&_S_empty_rep_storage) {
|
|
LOCK();
|
|
*(int *)(this + 0x10) = *(int *)(this + 0x10) + 1;
|
|
UNLOCK();
|
|
}
|
|
return this + 0x18;
|
|
}
|
|
|
|
|
|
// 001879f0 std::string::_Rep::_M_clone
|
|
|
|
/* std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) */
|
|
|
|
long * __thiscall std::string::_Rep::_M_clone(_Rep *this,allocator *param_1,ulong param_2)
|
|
|
|
{
|
|
size_t __n;
|
|
long lVar1;
|
|
long *plVar2;
|
|
long *__dest;
|
|
|
|
plVar2 = (long *)_S_create(*(long *)this + param_2,*(ulong *)(this + 8),param_1);
|
|
__n = *(size_t *)this;
|
|
__dest = plVar2 + 3;
|
|
lVar1 = 0;
|
|
if (__n != 0) {
|
|
if (__n == 1) {
|
|
*(_Rep *)(plVar2 + 3) = this[0x18];
|
|
lVar1 = *(long *)this;
|
|
}
|
|
else {
|
|
__dest = memcpy(__dest,this + 0x18,__n);
|
|
lVar1 = *(long *)this;
|
|
}
|
|
}
|
|
if (plVar2 != &_S_empty_rep_storage) {
|
|
*(undefined4 *)(plVar2 + 2) = 0;
|
|
*plVar2 = lVar1;
|
|
*(undefined1 *)((long)plVar2 + lVar1 + 0x18) = 0;
|
|
return __dest;
|
|
}
|
|
return __dest;
|
|
}
|
|
|
|
|
|
// 00188060 std::string::_Rep::_M_grab
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x001880a0) */
|
|
/* std::string::_Rep::_M_grab(std::allocator<char> const&, std::allocator<char> const&) */
|
|
|
|
allocator * std::string::_Rep::_M_grab(allocator *param_1,allocator *param_2)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
|
|
if (*(int *)(param_1 + 0x10) < 0) {
|
|
paVar1 = (allocator *)_M_clone((_Rep *)param_1,param_2,0);
|
|
return paVar1;
|
|
}
|
|
if (param_1 != (allocator *)&_S_empty_rep_storage) {
|
|
LOCK();
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
UNLOCK();
|
|
}
|
|
return param_1 + 0x18;
|
|
}
|
|
|
|
|
|
// 00189690 std::string::_Rep::_M_dispose
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x001896b0) */
|
|
/* std::string::_Rep::_M_dispose(std::allocator<char> const&) [clone .part.0] */
|
|
|
|
void std::string::_Rep::_M_dispose(allocator *param_1)
|
|
|
|
{
|
|
allocator *paVar1;
|
|
int iVar2;
|
|
|
|
LOCK();
|
|
paVar1 = param_1 + 0x10;
|
|
iVar2 = *(int *)paVar1;
|
|
*(int *)paVar1 = *(int *)paVar1 + -1;
|
|
UNLOCK();
|
|
if (0 < iVar2) {
|
|
return;
|
|
}
|
|
_M_destroy(param_1);
|
|
return;
|
|
}
|
|
|
|
|