/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14016f370 FUN_14016f370 * Pseudocode, not original source. */ void FUN_14016f370(undefined8 *param_1,int param_2) { int *piVar1; int iVar2; void *_Src; rsize_t _DstSize; undefined8 *puVar3; longlong lVar4; _Src = (void *)*param_1; iVar2 = *(int *)((longlong)_Src + -0x10); puVar3 = (undefined8 *)(**(code **)(**(longlong **)((longlong)_Src + -0x18) + 0x20))(); lVar4 = (**(code **)*puVar3)(puVar3,param_2,2); if (lVar4 == 0) { /* WARNING: Subroutine does not return */ FUN_14016f0f0(); } if (iVar2 < param_2) { param_2 = iVar2; } _DstSize = (longlong)(param_2 + 1) * 2; memcpy_s((void *)(lVar4 + 0x18),_DstSize,_Src,_DstSize); *(int *)(lVar4 + 8) = iVar2; LOCK(); piVar1 = (int *)((longlong)_Src + -8); iVar2 = *piVar1; *piVar1 = *piVar1 + -1; UNLOCK(); if (iVar2 + -1 < 1) { (**(code **)(**(longlong **)((longlong)_Src + -0x18) + 8)) (*(longlong **)((longlong)_Src + -0x18),(longlong)_Src + -0x18); } *param_1 = (void *)(lVar4 + 0x18); return; }