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

150 lines
4 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140097fd0 FUN_140097fd0
* Pseudocode, not original source. */
void FUN_140097fd0(longlong param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4)
{
longlong *plVar1;
int *piVar2;
longlong *plVar3;
ulonglong *puVar4;
ulonglong *puVar5;
ulonglong *puVar6;
undefined4 *puVar7;
SIZE_T SVar8;
longlong **pplVar9;
ulonglong *local_158;
longlong *local_150;
ulonglong *local_148;
undefined1 local_140;
undefined **local_138;
undefined8 local_130;
undefined8 local_128;
undefined8 local_120;
undefined8 local_118;
undefined4 local_108 [2];
ulonglong local_100 [2];
longlong local_f0 [2];
undefined **local_e0;
undefined8 local_d8;
undefined8 local_d0;
undefined8 local_c8;
undefined8 local_c0;
longlong local_b8;
longlong local_b0;
ulonglong local_a8;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined **local_90;
undefined8 local_88;
undefined8 local_80;
undefined8 local_78;
undefined8 local_70;
undefined **local_60;
undefined4 local_58;
undefined2 local_54;
undefined **local_48;
undefined8 local_40;
undefined8 local_38;
undefined8 local_30;
undefined8 local_28;
undefined8 local_18;
local_18 = 0xfffffffffffffffe;
local_100[0] = 0;
local_f0[0] = 0;
local_f0[1] = 0;
local_d8 = 0;
local_d0 = 0;
local_c8 = 0;
local_c0 = 0;
local_e0 = Proud::ByteArray::vftable;
local_a8 = 0;
local_b0 = 0;
local_b8 = 0;
local_88 = 0;
local_80 = 0;
local_78 = 0;
local_70 = 0;
local_90 = Proud::ByteArray::vftable;
local_60 = Proud::AddrPort::vftable;
local_58 = 0;
local_54 = 0;
local_40 = 0;
local_38 = 0;
local_30 = 0;
local_28 = 0;
local_48 = Proud::ByteArray::vftable;
local_108[0] = 7;
local_a0 = (undefined4)param_2;
local_9c = (undefined4)param_3;
local_130 = 0;
local_128 = 0;
local_120 = 0;
local_118 = 0;
local_138 = Proud::ByteArray::vftable;
local_98 = local_9c;
FUN_14006cb70(Proud::ByteArray::vftable,param_2,param_3,param_4);
local_150 = (longlong *)PTR_DAT_1401ac010;
pplVar9 = &local_150;
SVar8 = 0;
puVar4 = (ulonglong *)
FUN_140078c10((longlong *)&local_158,param_4 & 0xffffffff,0,(longlong *)pplVar9,
(longlong)&local_138);
puVar5 = local_100;
FUN_140078ae0(puVar5,puVar4,SVar8,pplVar9);
puVar6 = local_158;
if (local_158 != (ulonglong *)0x0) {
local_148 = local_158;
FUN_14006b350((int *)local_158);
local_140 = 1;
local_158[8] = local_158[8] - 1;
if (local_158[8] == 0) {
FUN_14006b3e0((longlong)puVar6);
local_140 = 0;
FUN_1400640e0((undefined4 *)local_158,puVar4,SVar8,pplVar9);
puVar5 = local_158;
}
else {
FUN_14006b3e0((longlong)puVar6);
puVar5 = puVar6;
}
}
plVar3 = local_150;
if (((local_150 != (longlong *)0x0) && (local_150 != (longlong *)PTR_DAT_1401ac010)) &&
(plVar1 = local_150 + -1, plVar1 != (longlong *)0x0)) {
puVar5 = (ulonglong *)FUN_14006cb70(puVar5,puVar4,SVar8,pplVar9);
local_148 = puVar5;
FUN_14006b350((int *)puVar5);
local_140 = 1;
piVar2 = (int *)((longlong)plVar3 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(plVar1);
}
FUN_14006b3e0((longlong)puVar5);
}
local_150 = (longlong *)PTR_DAT_1401ac010;
FUN_140078360(&local_138);
puVar7 = local_108;
FUN_140097e70(param_1,puVar7,SVar8,pplVar9);
FUN_140078360(&local_48);
FUN_140078360(&local_90);
local_150 = &local_b8;
FUN_1400d1800(&local_b8);
if (local_b0 != 0) {
if ((longlong)local_a8 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_a8 = local_a8 & 0xffffffff00000000;
}
FUN_140078360(&local_e0);
FUN_140092fb0(local_f0 + 1,puVar7,SVar8,pplVar9);
FUN_140092f30(local_f0,puVar7,SVar8,pplVar9);
FUN_140064150((longlong *)local_100,puVar7,SVar8,pplVar9);
return;
}