247 lines
7.2 KiB
C
247 lines
7.2 KiB
C
// 000fc0e0 std::__numpunct_cache<char>::~__numpunct_cache<char>
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
|
|
|
|
void __thiscall std::__numpunct_cache<char>::~__numpunct_cache<char>(__numpunct_cache<char> *this)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
|
|
cVar1 = (this->data).offset_0x60;
|
|
this->vftablePtr = &vftable;
|
|
if (cVar1 != '\0') {
|
|
iVar2 = (this->data).offset_0x4;
|
|
if (iVar2 != 0) {
|
|
FUN_000ed720(iVar2);
|
|
}
|
|
iVar2 = (this->data).offset_0x10;
|
|
if (iVar2 != 0) {
|
|
FUN_000ed720(iVar2);
|
|
}
|
|
iVar2 = (this->data).offset_0x18;
|
|
if (iVar2 != 0) {
|
|
FUN_000ed720(iVar2);
|
|
}
|
|
}
|
|
FUN_000f2800(this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 000fc320 std::__numpunct_cache<char>::vfunction2
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
|
|
|
|
void __thiscall std::__numpunct_cache<char>::vfunction2(__numpunct_cache<char> *this)
|
|
|
|
{
|
|
~__numpunct_cache<char>(this);
|
|
FUN_000ed6e0(this);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00101f10 std::__numpunct_cache<char>::~__numpunct_cache<char>
|
|
|
|
/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
|
|
|
|
__numpunct_cache<char> * __thiscall
|
|
std::__numpunct_cache<char>::~__numpunct_cache<char>
|
|
(__numpunct_cache<char> *this,undefined4 param_1,__numpunct_cache<char>_vftable *param_2,
|
|
undefined4 param_3,int param_4,undefined4 param_5,int param_6)
|
|
|
|
{
|
|
~__numpunct_cache<char> *p_Var1;
|
|
code *pcVar2;
|
|
int iVar3;
|
|
undefined **ppuVar4;
|
|
__numpunct_cache<char>_vftable *p_Var5;
|
|
int iVar6;
|
|
undefined1 *puVar7;
|
|
int iVar8;
|
|
undefined1 *puVar9;
|
|
undefined4 *extraout_EAX;
|
|
char cVar10;
|
|
undefined1 *puVar11;
|
|
undefined1 *puVar12;
|
|
int iVar13;
|
|
int in_GS_OFFSET;
|
|
undefined1 *apuStackY_a0 [2];
|
|
int aiStackY_98 [7];
|
|
undefined1 auStackY_7c [12];
|
|
undefined4 uStackY_70;
|
|
undefined1 local_5c [4];
|
|
uint local_58;
|
|
undefined4 local_54;
|
|
undefined4 local_50;
|
|
char local_49;
|
|
uint local_48;
|
|
undefined4 local_44;
|
|
int *local_40;
|
|
undefined **local_3c;
|
|
__numpunct_cache<char>_vftable *local_38;
|
|
__numpunct_cache<char> *local_34;
|
|
int local_30;
|
|
int local_24;
|
|
int local_20;
|
|
|
|
local_3c = &PTR_00127504;
|
|
local_34 = this;
|
|
local_50 = param_1;
|
|
local_38 = param_2;
|
|
local_30 = param_4;
|
|
local_44 = param_3;
|
|
local_54 = param_5;
|
|
local_20 = *(int *)(in_GS_OFFSET + 0x14);
|
|
uStackY_70 = 0x101f63;
|
|
iVar6 = FUN_000f2dd0();
|
|
ppuVar4 = local_3c;
|
|
local_40 = (int *)(*(int *)(*(int *)(param_4 + 0x6c) + 0xc) + iVar6 * 4);
|
|
iVar6 = *local_40;
|
|
if (iVar6 == 0) {
|
|
uStackY_70 = 0x102185;
|
|
bad_alloc::~bad_alloc((bad_alloc *)0x68);
|
|
extraout_EAX[1] = 0;
|
|
extraout_EAX[2] = 0;
|
|
*extraout_EAX = ppuVar4 + -0x143;
|
|
extraout_EAX[3] = 0;
|
|
*(undefined1 *)(extraout_EAX + 4) = 0;
|
|
extraout_EAX[5] = 0;
|
|
extraout_EAX[6] = 0;
|
|
extraout_EAX[7] = 0;
|
|
extraout_EAX[8] = 0;
|
|
*(undefined2 *)(extraout_EAX + 9) = 0;
|
|
*(undefined1 *)(extraout_EAX + 0x19) = 0;
|
|
uStackY_70 = 0x1021e0;
|
|
FUN_000fe020();
|
|
uStackY_70 = 0x1021f0;
|
|
FUN_000f2c80();
|
|
iVar6 = *local_40;
|
|
}
|
|
aiStackY_98[1] = iVar6 + 0x26;
|
|
aiStackY_98[2] = *(uint *)(local_30 + 0xc);
|
|
local_58 = aiStackY_98[2] & 0x4a;
|
|
local_49 = local_58 != 0x40 && local_58 != 8;
|
|
aiStackY_98[0] = param_6;
|
|
if (param_6 < 1) {
|
|
aiStackY_98[0] = -param_6;
|
|
if (local_58 == 0x40 || local_58 == 8) {
|
|
aiStackY_98[0] = param_6;
|
|
}
|
|
}
|
|
aiStackY_98[3] = (int)(byte)local_49;
|
|
apuStackY_a0[1] = local_5c;
|
|
apuStackY_a0[0] = (undefined1 *)0x101fd7;
|
|
local_48 = aiStackY_98[2];
|
|
local_40 = (int *)aiStackY_98[1];
|
|
local_24 = FUN_00101e60();
|
|
puVar11 = auStackY_7c;
|
|
puVar12 = auStackY_7c;
|
|
puVar9 = local_5c + -local_24;
|
|
if (*(char *)(iVar6 + 0x10) == '\0') {
|
|
if (local_49 != '\0') goto LAB_00101ffd;
|
|
LAB_00102134:
|
|
puVar7 = puVar9;
|
|
iVar8 = local_24;
|
|
if (((local_48 & 0x200) != 0) && (param_6 != 0)) {
|
|
if (local_58 == 0x40) {
|
|
iVar8 = local_24 + 1;
|
|
puVar7 = puVar9 + -1;
|
|
local_24 = iVar8;
|
|
*puVar7 = *(undefined1 *)(iVar6 + 0x2a);
|
|
}
|
|
else {
|
|
iVar8 = local_24 + 2;
|
|
puVar7 = puVar9 + -2;
|
|
local_24 = iVar8;
|
|
puVar9[-1] = *(undefined1 *)(iVar6 + 0x28 + (local_48 >> 0xe & 1));
|
|
*puVar7 = *(undefined1 *)(iVar6 + 0x2a);
|
|
}
|
|
}
|
|
LAB_0010200d:
|
|
iVar6 = *(int *)(local_30 + 8);
|
|
puVar11 = puVar12;
|
|
iVar13 = local_30;
|
|
if (iVar6 <= iVar8) goto LAB_00102017;
|
|
}
|
|
else {
|
|
local_40 = (int *)CONCAT31(local_40._1_3_,local_49);
|
|
iVar8 = -(local_24 * 2 + 0x1dU & 0xfffffff0);
|
|
puVar12 = auStackY_7c + iVar8;
|
|
puVar11 = auStackY_7c + iVar8;
|
|
*(int **)((int)aiStackY_98 + iVar8 + 0x18) = &local_24;
|
|
*(undefined1 **)((int)aiStackY_98 + iVar8 + 0x14) = puVar9;
|
|
puVar9 = (undefined1 *)((int)&uStackY_70 + iVar8 + 2);
|
|
*(undefined1 **)((int)aiStackY_98 + iVar8 + 0x10) = puVar9;
|
|
*(int *)((int)aiStackY_98 + iVar8 + 0xc) = local_30;
|
|
*(int *)((int)aiStackY_98 + iVar8 + 8) = (int)*(char *)(iVar6 + 0x25);
|
|
*(undefined4 *)((int)aiStackY_98 + iVar8 + 4) = *(undefined4 *)(iVar6 + 0xc);
|
|
*(undefined4 *)((int)aiStackY_98 + iVar8) = *(undefined4 *)(iVar6 + 8);
|
|
*(undefined4 *)((int)apuStackY_a0 + iVar8 + 4) = local_50;
|
|
*(undefined4 *)((int)apuStackY_a0 + iVar8) = 0x10211d;
|
|
FUN_000ffef0();
|
|
if ((char)local_40 == '\0') goto LAB_00102134;
|
|
LAB_00101ffd:
|
|
iVar13 = local_30;
|
|
puVar12 = puVar11;
|
|
if (param_6 < 0) {
|
|
iVar8 = local_24 + 1;
|
|
local_24 = iVar8;
|
|
puVar9[-1] = *(undefined1 *)(iVar6 + 0x26);
|
|
puVar7 = puVar9 + -1;
|
|
goto LAB_0010200d;
|
|
}
|
|
puVar7 = puVar9;
|
|
iVar8 = local_24;
|
|
if ((local_48 & 0x800) == 0) goto LAB_0010200d;
|
|
iVar8 = local_24 + 1;
|
|
puVar7 = puVar9 + -1;
|
|
local_24 = iVar8;
|
|
*puVar7 = *(undefined1 *)(iVar6 + 0x27);
|
|
iVar6 = *(int *)(iVar13 + 8);
|
|
if (iVar6 <= iVar8) goto LAB_00102017;
|
|
}
|
|
iVar3 = -(iVar6 + 0x1bU & 0xfffffff0);
|
|
*(int **)(puVar11 + iVar3 + -8) = &local_24;
|
|
*(undefined1 **)(puVar11 + iVar3 + -0xc) = puVar7;
|
|
iVar8 = (int)(char)local_54;
|
|
*(undefined1 **)(puVar11 + iVar3 + -0x10) =
|
|
(undefined1 *)((uint)(puVar11 + iVar3 + 0xf) & 0xfffffff0);
|
|
*(int *)(puVar11 + iVar3 + -0x14) = iVar13;
|
|
*(int *)(puVar11 + iVar3 + -0x18) = iVar6;
|
|
*(int *)(puVar11 + iVar3 + -0x1c) = iVar8;
|
|
*(undefined4 *)(puVar11 + iVar3 + -0x20) = local_50;
|
|
*(undefined4 *)(puVar11 + iVar3 + -0x24) = 0x1020bb;
|
|
FUN_001012d0();
|
|
puVar7 = (undefined1 *)((uint)(puVar11 + iVar3 + 0xf) & 0xfffffff0);
|
|
iVar8 = local_24;
|
|
puVar11 = puVar11 + iVar3;
|
|
LAB_00102017:
|
|
p_Var5 = local_38;
|
|
*(undefined4 *)(local_30 + 8) = 0;
|
|
cVar10 = (char)local_44;
|
|
if (cVar10 == '\0') {
|
|
p_Var1 = local_38->~__numpunct_cache<char>;
|
|
*(int *)(puVar11 + -8) = iVar8;
|
|
*(undefined1 **)(puVar11 + -0xc) = puVar7;
|
|
*(__numpunct_cache<char>_vftable **)(puVar11 + -0x10) = p_Var5;
|
|
pcVar2 = *(code **)(p_Var1 + 0x30);
|
|
*(undefined4 *)(puVar11 + -0x14) = 0x102038;
|
|
iVar6 = (*pcVar2)();
|
|
if (iVar6 != iVar8) {
|
|
cVar10 = '\x01';
|
|
}
|
|
}
|
|
local_34->vftablePtr = local_38;
|
|
*(char *)&local_34->data = cVar10;
|
|
if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
|
|
return local_34;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
*(undefined **)(puVar11 + -4) = &UNK_00102216;
|
|
FUN_001238e0();
|
|
}
|
|
|
|
|