/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400aa2d0 FUN_1400aa2d0 * Pseudocode, not original source. */ void FUN_1400aa2d0(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4, undefined4 param_5,undefined8 param_6) { void *pvVar1; longlong *plVar2; longlong lVar3; undefined8 uVar4; longlong *plVar5; longlong *local_40; longlong *local_38; longlong *local_30; undefined8 local_28; local_28 = 0xfffffffffffffffe; plVar2 = operator_new(0x18); plVar5 = (longlong *)0x0; local_30 = plVar5; if (plVar2 != (longlong *)0x0) { plVar2[1] = 0; *(undefined4 *)(plVar2 + 2) = 1; local_30 = plVar2; lVar3 = FUN_1402182d0(&DAT_1402a88cc); *plVar2 = lVar3; local_30 = plVar2; } if (local_30 == (longlong *)0x0) { /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } uVar4 = (**(code **)(*param_2 + 8))(param_2); plVar2 = operator_new(0x18); local_38 = plVar5; if (plVar2 != (longlong *)0x0) { plVar2[1] = 0; *(undefined4 *)(plVar2 + 2) = 1; local_38 = plVar2; lVar3 = FUN_1402182d0(uVar4); *plVar2 = lVar3; local_38 = plVar2; } if (local_38 != (longlong *)0x0) { plVar2 = operator_new(0x18); if (plVar2 != (longlong *)0x0) { plVar2[1] = 0; *(undefined4 *)(plVar2 + 2) = 1; local_40 = plVar2; lVar3 = FUN_1402182d0(&DAT_1402a88cc); *plVar2 = lVar3; plVar5 = plVar2; } local_40 = plVar5; if (plVar5 != (longlong *)0x0) { FUN_1400aa6e0(param_1,&local_30,&local_38,&local_40,param_3,param_4,param_5,param_6,1); plVar5 = local_40; if (local_40 != (longlong *)0x0) { LOCK(); plVar2 = local_40 + 2; lVar3 = *plVar2; *(int *)plVar2 = (int)*plVar2 + -1; UNLOCK(); if ((int)lVar3 == 1) { if (*local_40 != 0) { Ordinal_6(); } pvVar1 = (void *)plVar5[1]; if (pvVar1 != (void *)0x0) { operator_delete__(pvVar1); } operator_delete(plVar5); } } plVar5 = local_38; if (local_38 != (longlong *)0x0) { LOCK(); plVar2 = local_38 + 2; lVar3 = *plVar2; *(int *)plVar2 = (int)*plVar2 + -1; UNLOCK(); if ((int)lVar3 == 1) { if (*local_38 != 0) { Ordinal_6(); } pvVar1 = (void *)plVar5[1]; if (pvVar1 != (void *)0x0) { operator_delete__(pvVar1); } operator_delete(plVar5); } } plVar5 = local_30; if (local_30 != (longlong *)0x0) { LOCK(); plVar2 = local_30 + 2; lVar3 = *plVar2; *(int *)plVar2 = (int)*plVar2 + -1; UNLOCK(); if ((int)lVar3 == 1) { if (*local_30 != 0) { Ordinal_6(); } pvVar1 = (void *)plVar5[1]; if (pvVar1 != (void *)0x0) { operator_delete__(pvVar1); } operator_delete(plVar5); } } return; } /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); } /* WARNING: Subroutine does not return */ FUN_140218220(0x8007000e); }