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

43 lines
1.1 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14000ae90 FUN_14000ae90
* Pseudocode, not original source. */
void FUN_14000ae90(longlong *param_1,longlong param_2)
{
longlong lVar1;
void *pvVar2;
undefined8 *puVar3;
undefined1 auVar4 [16];
__uint64 _Var5;
longlong *plVar6;
longlong *local_28;
lVar1 = *(longlong *)*param_1;
if (param_2 == 0) {
plVar6 = &DAT_1401bcf30;
}
else {
auVar4._8_8_ = 0;
auVar4._0_8_ = param_2 + 0x1bU >> 2;
_Var5 = SUB168(ZEXT816(4) * auVar4,0);
if (SUB168(ZEXT816(4) * auVar4,8) != 0) {
_Var5 = 0xffffffffffffffff;
}
plVar6 = operator_new(_Var5);
*plVar6 = lVar1;
*(undefined1 *)((longlong)plVar6 + lVar1 + 0x10) = 0;
plVar6[1] = param_2;
local_28 = plVar6;
}
memcpy(plVar6 + 2,(size_t *)*param_1 + 2,*(size_t *)*param_1);
pvVar2 = (void *)param_1[1];
puVar3 = (undefined8 *)*param_1;
*param_1 = (longlong)plVar6;
param_1[1] = (longlong)local_28;
if (puVar3 != &DAT_1401bcf30) {
operator_delete__(pvVar2);
}
return;
}