// 0036d9c0 CFileWriterThread::CLogFileWorkItem::~CLogFileWorkItem /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall CFileWriterThread::CLogFileWorkItem::~CLogFileWorkItem(CLogFileWorkItem *this) { this->vftablePtr = &vftable; (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x28,0); (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x18,0); (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x10,0); return; } // 0036e640 CFileWriterThread::CLogFileWorkItem::~CLogFileWorkItem /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall CFileWriterThread::CLogFileWorkItem::~CLogFileWorkItem(CLogFileWorkItem *this) { this->vftablePtr = &vftable; (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x28,0); (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x18,0); (**(code **)(*_g_pMemAllocSteam + 0x20))(_g_pMemAllocSteam,(this->data).offset_0x10,0); FUN_0039deb8(this,0x40); return; } // 0036e740 CFileWriterThread::CLogFileWorkItem::vfunction4 void __thiscall CFileWriterThread::CLogFileWorkItem::vfunction4(CLogFileWorkItem *this,undefined8 param_1) { long lVar1; FUN_00218930(param_1,"10CUtlString",&(this->data).offset_0x10,"m_strFileName"); lVar1 = (this->data).offset_0x10; if (lVar1 != 0) { FUN_00218cd0(param_1,lVar1,0); } FUN_00218bb0(param_1); FUN_00218930(param_1,"10CUtlString",&(this->data).offset_0x18,"m_strFileNamePrevious"); lVar1 = (this->data).offset_0x18; if (lVar1 != 0) { FUN_00218cd0(param_1,lVar1,0); } FUN_00218bb0(param_1); FUN_00218930(param_1,"10CUtlString",&(this->data).offset_0x28,"m_strLogLine"); lVar1 = (this->data).offset_0x28; if (lVar1 != 0) { FUN_00218cd0(param_1,lVar1,0); } FUN_00218bb0(param_1); return; } // 0037d2b0 CFileWriterThread::CLogFileWorkItem::vfunction3 void __thiscall CFileWriterThread::CLogFileWorkItem::vfunction3(CLogFileWorkItem *this) { long *plVar1; code *pcVar2; bool bVar3; char cVar4; int iVar5; long lVar6; ulong uVar7; undefined8 uVar8; undefined1 *puVar9; undefined1 *puVar10; long in_FS_OFFSET; ulong local_38; long local_30; bVar3 = false; local_30 = *(long *)(in_FS_OFFSET + 0x28); lVar6 = (**(code **)**(undefined8 **)&this->data)(); if ((ulong)*(uint *)&(this->data).field_0x20 <= (ulong)*(uint *)&this[1].vftablePtr + lVar6) { lVar6 = *(long *)&(this->data).field_0x8; CFileWriter::FlushInternal(lVar6,1); pcVar2 = DAT_0046b088; iVar5 = *(int *)(lVar6 + 8); if (iVar5 != -1) { *(undefined4 *)(lVar6 + 8) = 0xffffffff; if (pcVar2 != (code *)0x0) { (*pcVar2)(iVar5,9); } FUN_00218fe0(iVar5); if (*(char *)(lVar6 + 0x24) != '\0') { FUN_0037bdd0(lVar6); } } bVar3 = true; (**(code **)(**(long **)&this->data + 8))(*(long **)&this->data,0); } if (*(int *)(*(long *)&(this->data).field_0x8 + 8) == -1) { LAB_0037d460: cVar4 = (**(code **)(**(long **)&this->data + 0x18))(); if (cVar4 == '\0') { puVar9 = (undefined1 *)(this->data).offset_0x10; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } lVar6 = CPathString::CPathString_Constructor_or_Destructor(puVar9); if ((lVar6 < 0) || (bVar3)) { if (lVar6 == -1) { puVar9 = (undefined1 *)(this->data).offset_0x10; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } uVar7 = CPathString::CPathString_Constructor_or_Destructor(puVar9); if ((char)uVar7 != '\0') goto LAB_0037d58a; } else { LAB_0037d58a: puVar9 = (undefined1 *)(this->data).offset_0x18; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } FUN_00373a50(puVar9); puVar9 = (undefined1 *)(this->data).offset_0x18; puVar10 = (undefined1 *)(this->data).offset_0x10; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } if (puVar10 == (undefined1 *)0x0) { puVar10 = &DAT_0020c965; } CPathString::CPathString_Constructor_or_Destructor(puVar10,puVar9); } uVar8 = 0; } else { uVar8 = 1; if (*(long *)&(this->data).field_0x20 < (long)(lVar6 + (ulong)*(uint *)&this[1].vftablePtr)) goto LAB_0037d58a; } puVar9 = (undefined1 *)(this->data).offset_0x10; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } CFileWriter::BOpenFileInternal(*(CFileWriter **)&(this->data).field_0x8,puVar9,uVar8,1,0,0); plVar1 = *(long **)&this->data; iVar5 = *(int *)(*(long *)&(this->data).field_0x8 + 8); pcVar2 = *(code **)(*plVar1 + 8); if (iVar5 == -1) { (*pcVar2)(plVar1,0); } else { local_38 = 0; iVar5 = FUN_003704b0(iVar5,&local_38); uVar7 = 0xffffffffffffffff; if (iVar5 == 0) { uVar7 = local_38; } (*pcVar2)(plVar1,uVar7); local_38 = local_38 & 0xffffffff00000000; iVar5 = FUN_0036ffc0(*(undefined4 *)(*(long *)&(this->data).field_0x8 + 8),&DAT_0020920d,4, &local_38); if (iVar5 != 0) { (**(code **)(**(long **)&this->data + 0x10))(*(long **)&this->data,(long)(int)local_38); } } } lVar6 = *(long *)&(this->data).field_0x8; iVar5 = *(int *)(lVar6 + 8); if (iVar5 == -1) goto LAB_0037d346; } else { cVar4 = (**(code **)(**(long **)&this->data + 0x18))(); if (cVar4 != '\0') { lVar6 = *(long *)&(this->data).field_0x8; CFileWriter::FlushInternal(lVar6,1); iVar5 = *(int *)(lVar6 + 8); if (iVar5 != -1) { *(undefined4 *)(lVar6 + 8) = 0xffffffff; if (DAT_0046b088 != (code *)0x0) { (*DAT_0046b088)(iVar5,9); } FUN_00218fe0(iVar5); if (*(char *)(lVar6 + 0x24) != '\0') { FUN_0037bdd0(lVar6); } } } iVar5 = *(int *)(*(long *)&(this->data).field_0x8 + 8); if (iVar5 == -1) goto LAB_0037d460; } local_38 = local_38 & 0xffffffff00000000; if (*(int *)&this[1].vftablePtr == 0) { lVar6 = 0; LAB_0037d32b: if (*(char *)((long)&this[1].vftablePtr + 4) != '\0') { FUN_002195c0(*(undefined4 *)(*(long *)&(this->data).field_0x8 + 8)); } (**(code **)(**(long **)&this->data + 0x10))(*(long **)&this->data,lVar6); } else { puVar9 = (undefined1 *)(this->data).offset_0x28; if (puVar9 == (undefined1 *)0x0) { puVar9 = &DAT_0020c965; } FUN_0036ffc0(iVar5,puVar9,*(int *)&this[1].vftablePtr,&local_38); lVar6 = (long)(int)local_38; if ((*(int *)&this[1].vftablePtr == 0) || ((int)local_38 != 0)) goto LAB_0037d32b; (**(code **)(**(long **)&this->data + 8))(*(long **)&this->data,0); lVar6 = *(long *)&(this->data).field_0x8; CFileWriter::FlushInternal(lVar6,1); pcVar2 = DAT_0046b088; iVar5 = *(int *)(lVar6 + 8); if (iVar5 != -1) { *(undefined4 *)(lVar6 + 8) = 0xffffffff; if (pcVar2 != (code *)0x0) { (*pcVar2)(iVar5,9); } FUN_00218fe0(iVar5); if (*(char *)(lVar6 + 0x24) != '\0') { FUN_0037bdd0(lVar6); } } } lVar6 = *(long *)&(this->data).field_0x8; LAB_0037d346: if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) { /* WARNING: Subroutine does not return */ FUN_00219340(); } FUN_00218a80(lVar6 + 0x20); return; }