150 lines
4 KiB
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;
|
|
}
|
|
|