Files
steam/decomp/linux32_crashhandler.so/src/std____numpunct_cache_char_.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();
}