/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400b8d20 FUN_1400b8d20 * Pseudocode, not original source. */ undefined8 FUN_1400b8d20(longlong param_1,undefined8 param_2,undefined8 param_3,uint *param_4,uint *param_5, longlong param_6,longlong param_7,longlong param_8,longlong param_9) { uint uVar1; undefined4 uVar2; undefined8 *puVar3; int *piVar4; longlong *plVar5; undefined8 uVar6; undefined4 *puVar7; longlong lVar8; uint uVar9; SIZE_T SVar10; undefined4 uVar11; undefined2 uVar12; undefined4 uVar13; undefined2 uVar14; undefined4 local_138 [2]; undefined8 local_130; undefined8 local_120; undefined8 local_118; undefined **local_110; undefined8 local_108; undefined8 local_100; undefined8 local_f8; undefined8 local_f0; undefined8 local_e8; undefined8 local_e0; undefined8 local_d8; uint local_c8; undefined **local_c0; undefined8 local_b8; undefined8 local_b0; undefined8 local_a8; undefined8 local_a0; undefined **local_90; undefined4 local_88; undefined2 local_84; undefined **local_78; undefined8 local_70; undefined8 local_68; undefined8 local_60; undefined8 local_58; undefined8 local_48; local_48 = 0xfffffffffffffffe; uVar9 = *param_4; uVar1 = *param_5; uVar2 = *(undefined4 *)(param_6 + 8); param_5._0_2_ = *(undefined2 *)(param_6 + 0xc); uVar11 = *(undefined4 *)(param_7 + 8); uVar12 = *(undefined2 *)(param_7 + 0xc); uVar13 = *(undefined4 *)(param_8 + 8); uVar14 = *(undefined2 *)(param_8 + 0xc); param_7._0_4_ = *(undefined4 *)(param_9 + 8); param_6 = CONCAT62(param_6._2_6_,*(undefined2 *)(param_9 + 0xc)); piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); FUN_14006b350(piVar4); if (*(uint *)(*(longlong **)(param_1 + 0x20) + 0x2af) != uVar1) { uVar9 = uVar1; uVar11 = (undefined4)param_7; uVar12 = (undefined2)param_6; uVar13 = uVar2; uVar14 = param_5._0_2_; } SVar10 = (SIZE_T)uVar9; plVar5 = FUN_1400aca90(*(longlong **)(param_1 + 0x20),(longlong *)¶m_5,uVar9); lVar8 = 0; if ((longlong *)*plVar5 != (longlong *)0x0) { lVar8 = *(longlong *)*plVar5; } if ((CONCAT62(param_5._2_6_,param_5._0_2_) != 0) && (plVar5 = (longlong *)(CONCAT62(param_5._2_6_,param_5._0_2_) + 8), *plVar5 = *plVar5 + -1, *(longlong *)(CONCAT62(param_5._2_6_,param_5._0_2_) + 8) == 0)) { plVar5 = (longlong *)CONCAT62(param_5._2_6_,param_5._0_2_); puVar3 = (undefined8 *)*plVar5; if (puVar3 != (undefined8 *)0x0) { (**(code **)*puVar3)(); } FUN_14006cc60(plVar5); } if ((lVar8 != 0) && (*(char *)(lVar8 + 0x684) == '\0')) { *(undefined4 *)(lVar8 + 0x598) = uVar13; *(undefined2 *)(lVar8 + 0x59c) = uVar14; *(undefined4 *)(lVar8 + 0x5a8) = uVar11; *(undefined2 *)(lVar8 + 0x5ac) = uVar12; FUN_1400efdc0(lVar8,'\0'); param_6 = 0; FUN_1400ae2a0((longlong *)(lVar8 + 0x28),¶m_6); local_130 = 0; local_120 = 0; local_118 = 0; local_108 = 0; local_100 = 0; local_f8 = 0; local_f0 = 0; local_110 = Proud::ByteArray::vftable; local_d8 = 0; local_e0 = 0; local_e8 = 0; local_b8 = 0; local_b0 = 0; local_a8 = 0; local_a0 = 0; local_c0 = Proud::ByteArray::vftable; local_90 = Proud::AddrPort::vftable; local_88 = 0; local_84 = 0; local_70 = 0; local_68 = 0; local_60 = 0; local_58 = 0; local_78 = Proud::ByteArray::vftable; local_138[0] = 10; puVar7 = local_138; local_c8 = uVar9; FUN_1400b7290(*(longlong **)(param_1 + 0x20),puVar7,SVar10,param_4); FUN_1400933c0((longlong)local_138,puVar7,SVar10,param_4); } uVar6 = FUN_14006b3e0((longlong)piVar4); return CONCAT71((int7)((ulonglong)uVar6 >> 8),1); }