/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14003a75c ATL::CAtlStringMgr::Allocate * Pseudocode, not original source. */ /* Library Function - Single Match public: virtual struct ATL::CStringData * __ptr64 __cdecl ATL::CAtlStringMgr::Allocate(int,int) __ptr64 Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release */ CStringData * __thiscall ATL::CAtlStringMgr::Allocate(CAtlStringMgr *this,int param_1,int param_2) { undefined1 auVar1 [16]; CStringData *pCVar2; uint uVar3; ulonglong uVar4; uVar3 = param_1 + 8U & 0xfffffff8; if (uVar3 == 0) { uVar4 = 0; } else { auVar1._8_8_ = 0; auVar1._0_8_ = (longlong)(int)uVar3; if (SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xffffffffffffffff)) / auVar1,0) < (ulonglong)(longlong)param_2) { return (CStringData *)0x0; } uVar4 = (longlong)(int)uVar3 * (longlong)param_2; if (0xffffffffffffffe7 < uVar4) { return (CStringData *)0x0; } } pCVar2 = (CStringData *) (**(code **)**(undefined8 **)(this + 8))(*(undefined8 **)(this + 8),uVar4 + 0x18); if (pCVar2 == (CStringData *)0x0) { return (CStringData *)0x0; } *(undefined4 *)(pCVar2 + 8) = 0; *(CAtlStringMgr **)pCVar2 = this; *(undefined4 *)(pCVar2 + 0x10) = 1; *(uint *)(pCVar2 + 0xc) = uVar3 - 1; return pCVar2; }