Files

204 lines
5.8 KiB
C

// 0011aa34 std::Catalogs::_M_erase
/* std::Catalogs::_M_erase(int) [clone .cold] */
void std::Catalogs::_M_erase(int param_1)
{
undefined8 *puVar1;
puVar1 = (undefined8 *)__cxa_allocate_exception(8);
*puVar1 = &__gnu_cxx::__concurrence_unlock_error::vftable;
/* WARNING: Subroutine does not return */
__cxa_throw(puVar1,&__gnu_cxx::__concurrence_unlock_error::typeinfo,
__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error);
}
// 0011ab0c std::Catalogs::_M_add
/* std::Catalogs::_M_add(char const*, std::locale) [clone .cold] */
void std::Catalogs::_M_add(__concurrence_lock_error *param_1)
{
void *unaff_RBP;
locale *unaff_R13;
__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(param_1);
free(*(void **)((long)unaff_RBP + 8));
locale::~locale(unaff_R13);
operator_delete(unaff_RBP);
__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
((__concurrence_unlock_error *)&stack0x00000000);
/* WARNING: Subroutine does not return */
_Unwind_Resume();
}
// 001aaf20 std::Catalogs::~Catalogs
/* std::Catalogs::~Catalogs() */
void __thiscall std::Catalogs::~Catalogs(Catalogs *this)
{
void *pvVar1;
undefined8 *puVar2;
undefined8 *puVar3;
puVar2 = *(undefined8 **)(this + 0x30);
puVar3 = *(undefined8 **)(this + 0x38);
if (puVar2 != puVar3) {
do {
pvVar1 = (void *)*puVar2;
if (pvVar1 != (void *)0x0) {
free(*(void **)((long)pvVar1 + 8));
locale::~locale((locale *)((long)pvVar1 + 0x10));
operator_delete(pvVar1);
}
puVar2 = puVar2 + 1;
} while (*(undefined8 **)(this + 0x38) != puVar2);
puVar3 = *(undefined8 **)(this + 0x30);
}
if (puVar3 != (undefined8 *)0x0) {
operator_delete(puVar3);
return;
}
return;
}
// 001ab280 std::Catalogs::_M_erase
/* std::Catalogs::_M_erase(int) */
void __thiscall std::Catalogs::_M_erase(Catalogs *this,int param_1)
{
int *piVar1;
int iVar2;
undefined8 *puVar3;
long lVar4;
long lVar5;
undefined8 *__src;
Catalogs *this_00;
this_00 = this;
iVar2 = pthread_mutex_lock((pthread_mutex_t *)this);
if (iVar2 == 0) {
puVar3 = *(undefined8 **)(this + 0x30);
lVar4 = (long)*(undefined8 **)(this + 0x38) - (long)puVar3 >> 3;
while (lVar5 = lVar4, 0 < lVar4) {
while( true ) {
lVar4 = lVar5 >> 1;
if (param_1 <= *(int *)puVar3[lVar4]) break;
puVar3 = puVar3 + lVar4 + 1;
lVar5 = (lVar5 - lVar4) + -1;
if (lVar5 < 1) goto LAB_001ab2e8;
}
}
LAB_001ab2e8:
if ((puVar3 != *(undefined8 **)(this + 0x38)) && (piVar1 = (int *)*puVar3, *piVar1 == param_1))
{
free(*(void **)(piVar1 + 2));
locale::~locale((locale *)(piVar1 + 4));
operator_delete(piVar1);
__src = puVar3 + 1;
if (*(undefined8 **)(this + 0x38) != __src) {
memmove(puVar3,__src,(long)*(undefined8 **)(this + 0x38) - (long)__src);
__src = *(undefined8 **)(this + 0x38);
}
*(undefined8 **)(this + 0x38) = __src + -1;
if (*(int *)(this + 0x28) + -1 == param_1) {
*(int *)(this + 0x28) = param_1;
}
iVar2 = pthread_mutex_unlock((pthread_mutex_t *)this);
if (iVar2 == 0) {
return;
}
puVar3 = (undefined8 *)__cxa_allocate_exception(8);
*puVar3 = &__gnu_cxx::__concurrence_unlock_error::vftable;
/* WARNING: Subroutine does not return */
__cxa_throw(puVar3,&__gnu_cxx::__concurrence_unlock_error::typeinfo,
__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error);
}
iVar2 = pthread_mutex_unlock((pthread_mutex_t *)this);
if (iVar2 == 0) {
return;
}
}
else {
__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
((__concurrence_lock_error *)this_00);
}
puVar3 = (undefined8 *)__cxa_allocate_exception(8);
*puVar3 = &__gnu_cxx::__concurrence_unlock_error::vftable;
/* WARNING: Subroutine does not return */
__cxa_throw(puVar3,&__gnu_cxx::__concurrence_unlock_error::typeinfo,
__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error);
}
// 001ab3a0 std::Catalogs::_M_get
/* std::Catalogs::_M_get(int) const */
int * __thiscall std::Catalogs::_M_get(Catalogs *this,int param_1)
{
int iVar1;
undefined8 *puVar2;
undefined8 extraout_RAX;
long lVar3;
long lVar4;
long extraout_RDX;
Catalogs *this_00;
int *piVar5;
this_00 = this;
iVar1 = pthread_mutex_lock((pthread_mutex_t *)this);
if (iVar1 != 0) {
__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
((__concurrence_lock_error *)this_00);
if (extraout_RDX == -1) {
/* WARNING: Subroutine does not return */
__cxa_call_unexpected();
}
/* WARNING: Subroutine does not return */
_Unwind_Resume(extraout_RAX);
}
puVar2 = *(undefined8 **)(this + 0x30);
lVar3 = (long)*(undefined8 **)(this + 0x38) - (long)puVar2 >> 3;
while (lVar4 = lVar3, 0 < lVar3) {
while( true ) {
lVar3 = lVar4 >> 1;
if (param_1 <= *(int *)puVar2[lVar3]) break;
puVar2 = puVar2 + lVar3 + 1;
lVar4 = (lVar4 - lVar3) + -1;
if (lVar4 < 1) goto LAB_001ab407;
}
}
LAB_001ab407:
if (*(undefined8 **)(this + 0x38) == puVar2) {
piVar5 = (int *)0x0;
}
else {
piVar5 = (int *)*puVar2;
if (*piVar5 != param_1) {
piVar5 = (int *)0x0;
}
}
iVar1 = pthread_mutex_unlock((pthread_mutex_t *)this);
if (iVar1 != 0) {
puVar2 = (undefined8 *)__cxa_allocate_exception(8);
*puVar2 = &__gnu_cxx::__concurrence_unlock_error::vftable;
/* WARNING: Subroutine does not return */
__cxa_throw(puVar2,&__gnu_cxx::__concurrence_unlock_error::typeinfo,
__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error);
}
return piVar5;
}