/* 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; }