server-re/decomp/MessageServer_Release_x64/full/functions/0x14006c530.c

41 lines
1.2 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14006c530 FUN_14006c530
* Pseudocode, not original source. */
void FUN_14006c530(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_14006c2e0();
}
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;
}