/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14018c590 FUN_14018c590 * Pseudocode, not original source. */ undefined4 FUN_14018c590(longlong param_1,undefined4 param_2,undefined8 param_3,longlong param_4) { longlong *plVar1; int iVar2; int iVar3; undefined4 uVar4; undefined8 uVar5; longlong *plVar6; longlong lVar7; longlong lVar8; int iVar9; longlong lVar10; int iVar11; longlong lVar12; longlong *local_res8; plVar1 = (longlong *)(param_1 + -0xa8); uVar5 = (**(code **)(*plVar1 + 0x58))(plVar1); FUN_14016db50(uVar5); if (DAT_14034c86f != '\0') { (**(code **)(*plVar1 + 200))(plVar1,L"Proud::CNetServerImpl::GetMostSuitableSuperPeerInGroup"); } plVar6 = (longlong *)FUN_14018bc80(plVar1,&local_res8,param_2); if ((longlong *)*plVar6 == (longlong *)0x0) { lVar12 = 0; } else { lVar12 = *(longlong *)*plVar6; } if ((local_res8 != (longlong *)0x0) && (local_res8[1] = local_res8[1] + -1, local_res8[1] == 0)) { lVar8 = *local_res8; if (lVar8 != 0) { FUN_140178e60(lVar8); FUN_14016d970(lVar8); } FUN_14016d970(local_res8); } if (lVar12 != 0) { FUN_140181600(plVar1); iVar11 = 0; iVar2 = *(int *)(lVar12 + 0x78); lVar8 = 0; if (0 < iVar2) { lVar10 = 0; do { if ((lVar8 < 0) || (iVar2 <= iVar11)) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } iVar9 = 0; lVar7 = 0; iVar3 = *(int *)(param_4 + 0x18); if (iVar3 < 1) { LAB_14018c6eb: if ((-1 < iVar11) && (iVar11 < iVar2)) { uVar4 = *(undefined4 *)((longlong)iVar11 * 0x40 + *(longlong *)(lVar12 + 0x70)); FUN_14016dbe0(uVar5); return uVar4; } /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } while( true ) { if ((lVar7 < 0) || (iVar3 <= iVar9)) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } if (*(int *)(*(longlong *)(param_4 + 0x10) + lVar7 * 4) == *(int *)(lVar10 + *(longlong *)(lVar12 + 0x70))) break; iVar9 = iVar9 + 1; lVar7 = lVar7 + 1; if (iVar3 <= iVar9) goto LAB_14018c6eb; } iVar11 = iVar11 + 1; lVar8 = lVar8 + 1; lVar10 = lVar10 + 0x40; } while (iVar11 < iVar2); } } FUN_14016dbe0(uVar5); return 0; }