/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14004d2b0 FUN_14004d2b0 * Pseudocode, not original source. */ void FUN_14004d2b0(longlong param_1,wchar_t *param_2,longlong param_3,longlong param_4) { uint uVar1; undefined4 uVar2; int iVar3; longlong lVar4; undefined8 *puVar5; undefined8 uVar6; longlong *plVar7; int *piVar8; undefined8 *puVar9; longlong lVar10; longlong lVar11; wchar_t *pwVar12; longlong lVar13; longlong lVar14; longlong lVar15; int iVar16; longlong lVar17; int iVar18; undefined4 uStack_3c; pwVar12 = param_2; piVar8 = (int *)(**(code **)(*(longlong *)(param_1 + -0xa8) + 0x58))(param_1 + -0xa8); FUN_14002e6e0(piVar8); if (DAT_14015bfcf != '\0') { param_3 = *(longlong *)(param_1 + -0xa8); pwVar12 = L"Proud::CNetServerImpl::GetNetWorkerThreadInfo"; (**(code **)(param_3 + 200))(param_1 + -0xa8); } lVar4 = *(longlong *)(param_1 + 0x338); iVar18 = 0; uVar1 = *(uint *)(lVar4 + 0x50); lVar14 = 0; if (0 < (int)uVar1) { do { if ((lVar14 < 0) || ((int)uVar1 <= iVar18)) { /* WARNING: Subroutine does not return */ FUN_14002f5c0((ulonglong)uVar1,pwVar12,param_3,param_4); } lVar13 = *(longlong *)(lVar4 + 0x48); puVar5 = *(undefined8 **)(lVar13 + lVar14 * 8); puVar9 = (undefined8 *)0x0; if (puVar5 != (undefined8 *)0x0) { puVar9 = (undefined8 *)*puVar5; } uVar6 = *puVar9; if ((int)uVar1 <= iVar18) { /* WARNING: Subroutine does not return */ FUN_14002f5c0((ulonglong)uVar1,lVar13,param_3,param_4); } plVar7 = *(longlong **)(lVar13 + lVar14 * 8); if (plVar7 == (longlong *)0x0) { lVar13 = 0; } else { lVar13 = *plVar7; } uVar2 = *(undefined4 *)(lVar13 + 8); iVar3 = *(int *)(param_2 + 0xc); lVar13 = (longlong)iVar3; if (iVar3 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } iVar16 = *(int *)(param_2 + 0xc); uVar1 = iVar16 + 1; pwVar12 = (wchar_t *)(ulonglong)uVar1; FUN_14003f800((longlong)param_2,uVar1,param_3,param_4); iVar16 = iVar16 - iVar3; if ((0 < iVar16) && (iVar16 = iVar16 + -1, lVar15 = (longlong)iVar16, -1 < iVar16)) { lVar17 = (lVar15 + 1 + lVar13) * 0x10; do { lVar10 = FUN_14003d690((longlong)param_2); lVar11 = FUN_14003d690((longlong)param_2); *(undefined8 *)(lVar11 + lVar17) = *(undefined8 *)(lVar10 + -0x10 + lVar17); *(undefined8 *)(lVar11 + 8 + lVar17) = *(undefined8 *)(lVar10 + -8 + lVar17); lVar17 = lVar17 + -0x10; lVar15 = lVar15 + -1; } while (-1 < lVar15); } lVar15 = FUN_14003d690((longlong)param_2); *(ulonglong *)(lVar15 + lVar13 * 0x10) = CONCAT44(uStack_3c,uVar2); *(undefined8 *)(lVar15 + 8 + lVar13 * 0x10) = uVar6; iVar18 = iVar18 + 1; lVar14 = lVar14 + 1; uVar1 = *(uint *)(lVar4 + 0x50); } while (iVar18 < (int)uVar1); } FUN_14002e770((longlong)piVar8); return; }