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

121 lines
3.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400e8b00 FUN_1400e8b00
* Pseudocode, not original source. */
undefined8 *
FUN_1400e8b00(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
undefined8 *puVar1;
UINT uDelay;
undefined8 *puVar2;
MMRESULT MVar3;
ulonglong uVar4;
longlong *plVar5;
undefined8 *puVar6;
undefined8 **ppuVar7;
longlong *plVar8;
undefined8 uVar9;
undefined8 *puVar10;
double dVar11;
undefined8 *local_res10;
char *local_res18;
*param_1 = Proud::CNetClientManager::vftable;
param_1[1] = Proud::CNetClientManager::vftable;
uVar4 = FUN_140079250();
uVar9 = CONCAT71((int7)((ulonglong)param_3 >> 8),1);
FUN_14006b270((undefined4 *)(param_1 + 2),uVar4 & 0xffffffff,uVar9,param_4);
FUN_140076e70((undefined2 *)(param_1 + 9));
plVar8 = (longlong *)0x0;
param_1[0xf] = 0;
uVar4 = FUN_140079250();
uVar9 = CONCAT71((int7)((ulonglong)uVar9 >> 8),1);
FUN_14006b270((undefined4 *)(param_1 + 0x11),uVar4 & 0xffffffff,uVar9,param_4);
uVar4 = FUN_140079250();
uVar4 = uVar4 & 0xffffffff;
puVar6 = param_1 + 0x39;
uVar9 = CONCAT71((int7)((ulonglong)uVar9 >> 8),1);
FUN_14006b270((undefined4 *)puVar6,uVar4,uVar9,param_4);
param_1[0x41] = 0;
param_1[0x44] = 0;
param_1[0x42] = 0;
param_1[0x43] = 0;
param_1[0x45] = 0;
param_1[0x48] = 0;
param_1[0x46] = 0;
param_1[0x47] = 0;
param_1[0x52] = 0;
param_1[0x53] = 0;
param_1[0x54] = 0;
*(undefined4 *)(param_1 + 0x55) = 0;
param_1[0x56] = 0;
param_1[0x57] = 0;
FUN_1400e0490(puVar6,uVar4,uVar9,param_4);
*(undefined1 *)(param_1 + 0x38) = 0;
FUN_140076ec0((char *)(param_1 + 9));
dVar11 = FUN_140076f50((char *)(param_1 + 9));
param_1[0x18] = dVar11;
param_1[0x20] = 0;
param_1[0x30] = 0;
*(undefined1 *)(param_1 + 0x38) = 1;
param_1[0x4a] = 0;
param_1[0x4b] = 0;
param_1[0x40] = 0;
param_1[0x49] = 0;
local_res18 = operator_new(0xa8);
plVar5 = plVar8;
if (local_res18 != (char *)0x0) {
plVar5 = (longlong *)
FUN_1400761a0(local_res18,param_1,CONCAT71((int7)((ulonglong)uVar9 >> 8),1),param_4);
}
param_1[0x57] = plVar5;
*(undefined1 *)(param_1 + 0x10) = 0;
puVar6 = param_1 + 0x50;
*(undefined1 *)puVar6 = 0;
*(undefined8 *)((longlong)param_1 + 0x284) = 0;
param_1[0xe] = 0;
uDelay = 1;
if (1 < DAT_1401ac074) {
uDelay = DAT_1401ac074;
}
puVar10 = (undefined8 *)&LAB_1400dfdb0;
MVar3 = timeSetEvent(uDelay,uDelay,&LAB_1400dfdb0,(DWORD_PTR)puVar6,1);
*(MMRESULT *)(param_1 + 0x4c) = MVar3;
local_res10 = operator_new(0x28);
plVar5 = plVar8;
if (local_res10 != (undefined8 *)0x0) {
puVar10 = param_1;
plVar5 = FUN_140074090(local_res10,&LAB_1400e8af0,param_1);
}
if (plVar5 == (longlong *)0x0) {
local_res10 = (undefined8 *)0x0;
}
else {
local_res10 = (undefined8 *)FUN_14006cbf0(0x10);
local_res10[1] = 1;
*local_res10 = plVar5;
}
puVar1 = local_res10;
ppuVar7 = &local_res10;
FUN_1400c2980(param_1 + 0xf,(longlong *)ppuVar7);
puVar2 = local_res10;
if (puVar1 != (undefined8 *)0x0) {
plVar5 = puVar1 + 1;
*plVar5 = *plVar5 + -1;
if (*plVar5 == 0) {
puVar1 = (undefined8 *)*local_res10;
if (puVar1 != (undefined8 *)0x0) {
FUN_1400741a0(puVar1);
operator_delete(puVar1);
}
FUN_14006cc60(puVar2);
}
}
if ((undefined8 *)param_1[0xf] != (undefined8 *)0x0) {
plVar8 = *(longlong **)param_1[0xf];
}
FUN_140074290(plVar8,ppuVar7,puVar10,puVar6);
return param_1;
}