// 000fc0e0 std::__numpunct_cache::~__numpunct_cache /* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */ void __thiscall std::__numpunct_cache::~__numpunct_cache(__numpunct_cache *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::vfunction2 /* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */ void __thiscall std::__numpunct_cache::vfunction2(__numpunct_cache *this) { ~__numpunct_cache(this); FUN_000ed6e0(this); return; } // 00101f10 std::__numpunct_cache::~__numpunct_cache /* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */ __numpunct_cache * __thiscall std::__numpunct_cache::~__numpunct_cache (__numpunct_cache *this,undefined4 param_1,__numpunct_cache_vftable *param_2, undefined4 param_3,int param_4,undefined4 param_5,int param_6) { ~__numpunct_cache *p_Var1; code *pcVar2; int iVar3; undefined **ppuVar4; __numpunct_cache_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_vftable *local_38; __numpunct_cache *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; *(int *)(puVar11 + -8) = iVar8; *(undefined1 **)(puVar11 + -0xc) = puVar7; *(__numpunct_cache_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(); }