/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400a7f00 FUN_1400a7f00 * Pseudocode, not original source. */ void FUN_1400a7f00(undefined8 *param_1) { void *pvVar1; longlong *plVar2; undefined8 *puVar3; if (*(int *)((longlong)param_1 + 0x10c) != 0) { pvVar1 = (void *)param_1[0x24]; if (pvVar1 != (void *)0x0) { FUN_140002200(pvVar1); operator_delete(pvVar1); } plVar2 = (longlong *)param_1[0x25]; if (plVar2 != (longlong *)0x0) { if ((longlong *)*plVar2 != (longlong *)0x0) { (**(code **)(*(longlong *)*plVar2 + 0x10))(); } operator_delete(plVar2); } plVar2 = (longlong *)*param_1; if (plVar2 != (longlong *)0x0) { FUN_140001eb0(plVar2); if ((longlong *)*plVar2 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x80004003); } (**(code **)(*(longlong *)*plVar2 + 0x10))(); *plVar2 = 0; plVar2[1] = (longlong)&DAT_14029e010; plVar2[2] = (longlong)&DAT_14029e010; *(undefined4 *)(plVar2 + 3) = 0; operator_delete(plVar2); } *param_1 = 0; puVar3 = (undefined8 *)param_1[0x23]; if (puVar3 != (undefined8 *)0x0) { EnterCriticalSection((LPCRITICAL_SECTION)(puVar3 + 0x21)); if ((FILE *)*puVar3 != (FILE *)0x0) { fclose((FILE *)*puVar3); } LeaveCriticalSection((LPCRITICAL_SECTION)(puVar3 + 0x21)); DeleteCriticalSection((LPCRITICAL_SECTION)(puVar3 + 0x21)); operator_delete(puVar3); } param_1[0x23] = 0; CoUninitialize(); *(undefined4 *)((longlong)param_1 + 0x10c) = 0; } return; }