/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007ef00 FUN_14007ef00 * Pseudocode, not original source. */ void FUN_14007ef00(longlong param_1,undefined8 *param_2) { int *piVar1; longlong lVar2; longlong lVar3; longlong lVar4; undefined8 local_60; undefined8 local_58; undefined8 local_50; undefined8 local_48; undefined8 local_40; undefined8 local_38; undefined8 local_30; undefined8 local_28; undefined8 local_20; undefined8 local_18; undefined4 local_10; piVar1 = (int *)(**(code **)(*(longlong *)(param_1 + -0xa8) + 0x58))(param_1 + -0xa8); FUN_14006b350(piVar1); if (DAT_1401b42cf != '\0') { (**(code **)(*(longlong *)(param_1 + -0xa8) + 200)) (param_1 + -0xa8,L"Proud::CNetServerImpl::GetStats"); } lVar4 = 0; local_20 = 0; local_58 = 0; local_60 = 0; local_48 = 0; local_50 = 0; local_28 = 0; local_30 = 0; local_38 = 0; local_40 = 0; local_18 = 0; local_10 = 0; memcpy(param_2,&local_60,0x58); *param_2 = *(undefined8 *)(param_1 + 0x458); param_2[1] = *(undefined8 *)(param_1 + 0x498); param_2[2] = *(undefined8 *)(param_1 + 0x4d8); param_2[3] = *(undefined8 *)(param_1 + 0x518); param_2[6] = *(undefined8 *)(param_1 + 0x558); param_2[7] = *(undefined8 *)(param_1 + 0x598); param_2[4] = *(undefined8 *)(param_1 + 0x618); param_2[5] = *(undefined8 *)(param_1 + 0x5d8); *(int *)(param_2 + 9) = (int)*(undefined8 *)(param_1 + 0xbf0); *(undefined4 *)((longlong)param_2 + 0x4c) = 0; *(undefined4 *)(param_2 + 10) = *(undefined4 *)(param_1 + 0x638); lVar2 = lVar4; if (*(longlong *)(param_1 + 0xbf0) != 0) { lVar2 = *(longlong *)(param_1 + 0xbe0); } for (; lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x10)) { if (*(char *)(*(longlong *)(lVar2 + 8) + 0x700) != '\0') { *(int *)((longlong)param_2 + 0x4c) = *(int *)((longlong)param_2 + 0x4c) + 1; } } lVar2 = lVar4; if (*(longlong *)(param_1 + 0x250) != 0) { lVar2 = *(longlong *)(param_1 + 0x240); } for (; lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x10)) { lVar3 = lVar4; if (*(longlong **)(lVar2 + 8) != (longlong *)0x0) { lVar3 = **(longlong **)(lVar2 + 8); } if ((*(char *)(lVar3 + 0x110) != '\0') && (*(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1, *(char *)(lVar3 + 8) == '\0')) { *(int *)((longlong)param_2 + 0x44) = *(int *)((longlong)param_2 + 0x44) + 1; } } FUN_14006b3e0((longlong)piVar1); return; }