/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14005c2d0 FUN_14005c2d0 * Pseudocode, not original source. */ undefined8 FUN_14005c2d0(ulonglong param_1,uint param_2,undefined8 param_3,uint *param_4,uint *param_5, uint *param_6,char *param_7) { longlong lVar1; LPVOID pvVar2; undefined4 uVar3; undefined2 uVar4; longlong lVar5; int iVar6; undefined8 uVar7; ulonglong uVar8; undefined **ppuVar9; undefined8 *puVar10; undefined8 *puVar11; undefined8 *puVar12; undefined8 *puVar13; longlong **pplVar14; longlong **pplVar15; longlong *plVar16; longlong lVar17; uint uVar18; uint uVar19; undefined **ppuVar20; uint *puVar21; longlong **pplVar22; double dVar23; ulonglong local_res8; uint local_res10 [2]; longlong *local_188; undefined1 local_180; undefined1 local_17f; undefined1 local_17e [6]; longlong *local_178; longlong local_170; longlong local_168 [2]; int *local_158; undefined1 local_150; longlong local_148 [2]; undefined4 local_138; undefined **local_130; undefined4 local_128; undefined2 local_124; undefined **local_120; undefined4 local_118; undefined2 local_114; undefined1 local_110; undefined4 local_108; undefined **local_100; undefined4 local_f8; undefined2 local_f4; undefined **local_f0; undefined4 local_e8; undefined2 local_e4; undefined1 local_e0; undefined4 local_d8; undefined **local_d0; undefined4 local_c8; undefined2 local_c4; undefined **local_c0; undefined4 local_b8; undefined2 local_b4; undefined1 local_b0; undefined8 local_a8; undefined8 local_a0 [2]; undefined8 local_90 [2]; undefined8 local_80 [2]; undefined8 local_70 [2]; undefined8 local_60 [2]; undefined8 local_50 [3]; local_a8 = 0xfffffffffffffffe; local_res8 = param_1; local_res10[0] = param_2; local_158 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); FUN_14002e6e0(local_158); local_150 = 1; if (DAT_14015bfcf != '\0') { (**(code **)(**(longlong **)(param_1 + 0x20) + 200)) (*(longlong **)(param_1 + 0x20), L"Proud::CNetServerImpl::C2SStub::P2PGroup_MemberJoin_Ack"); } FUN_140057180(*(longlong *)(param_1 + 0x20),(longlong *)&local_178,*param_4); pplVar22 = (longlong **)0x0; if (((local_178 != (longlong *)0x0) && (*local_178 != 0)) && (uVar7 = FUN_1400a1820(*local_178 + 200,local_res10[0],(ulonglong)*param_5,*param_6), (char)uVar7 == '\x01')) { pplVar15 = pplVar22; if (local_178 != (longlong *)0x0) { pplVar15 = (longlong **)*local_178; } uVar8 = FUN_1400a1730((longlong)(pplVar15 + 0x19),*param_5,(ulonglong)*param_6); if ((char)uVar8 == '\0') { FUN_14005bc30(*(longlong *)(param_1 + 0x20),(ulonglong)*param_4,(ulonglong)*param_5,0); } } puVar21 = (uint *)(ulonglong)*param_5; uVar8 = (ulonglong)local_res10[0]; pplVar15 = &local_188; FUN_14004ffa0(*(longlong *)(param_1 + 0x20) + 0x2d8,(longlong *)pplVar15,local_res10[0],*param_5); if (local_188 != (longlong *)0x0) { ppuVar20 = (undefined **)*local_188; uVar8 = 0; if (ppuVar20 != (undefined **)0x0) { if (*(char *)(ppuVar20 + 0x34) != '\0') { ppuVar9 = ppuVar20 + 2; pplVar15 = pplVar22; pplVar14 = pplVar22; do { if (*(uint *)ppuVar9 == local_res10[0]) { *(undefined1 *)(ppuVar20 + (longlong)(int)pplVar14 * 6 + 7) = 1; break; } pplVar14 = (longlong **)(ulonglong)((int)pplVar14 + 1); pplVar15 = (longlong **)((longlong)pplVar15 + 1); ppuVar9 = ppuVar9 + 6; } while ((longlong)pplVar15 < 2); uVar8 = (ulonglong)local_res10[0]; pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } dVar23 = 0.0; if (((double)pplVar15[0x32] != 0.0) && (*param_7 != '\0')) { pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } FUN_14003deb0((longlong)pplVar15,local_res10[0]); uVar8 = (ulonglong)local_res10[0]; } pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } pplVar15 = pplVar15 + 7; lVar17 = 2; pplVar14 = pplVar22; do { if (*(char *)pplVar15 != '\0') { pplVar14 = (longlong **)(ulonglong)((int)pplVar14 + 1); } pplVar15 = pplVar15 + 6; lVar17 = lVar17 + -1; } while (lVar17 != 0); pplVar15 = (longlong **)0x0; if ((int)pplVar14 == 2) { pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } if ((double)pplVar15[0x32] == dVar23) { LAB_14005c6c5: local_res8 = local_res8 & 0xffffffffffffff00; plVar16 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8); (**(code **)(*plVar16 + 0x50)) (plVar16,uVar8 & 0xffffffff,&DAT_14015de10,param_5,&local_res8, &PTR_vftable_1401553c8,&PTR_vftable_1401553c8,&PTR_vftable_1401553c8, &PTR_vftable_1401553c8); local_17f = 0; plVar16 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8); puVar21 = local_res10; (**(code **)(*plVar16 + 0x50)) (plVar16,*param_5,&DAT_14015de10,puVar21,&local_17f,&PTR_vftable_1401553c8, &PTR_vftable_1401553c8,&PTR_vftable_1401553c8,&PTR_vftable_1401553c8); uVar4 = DAT_1401553d4; uVar3 = DAT_1401553d0; pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } ppuVar20 = Proud::AddrPort::vftable; if (*(char *)(pplVar15 + 1) != '\x01') { *(undefined4 *)(pplVar15 + 2) = 0; *(undefined4 *)(pplVar15 + 4) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x24) = uVar4; *(undefined4 *)(pplVar15 + 6) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x34) = uVar4; *(undefined1 *)(pplVar15 + 7) = 0; uVar4 = DAT_1401553d4; uVar3 = DAT_1401553d0; local_d0 = Proud::AddrPort::vftable; local_c0 = Proud::AddrPort::vftable; local_d8 = 0; local_b0 = 0; local_c8 = DAT_1401553d0; local_c4 = DAT_1401553d4; local_b8 = DAT_1401553d0; local_b4 = DAT_1401553d4; *(undefined4 *)(pplVar15 + 8) = 0; *(undefined4 *)(pplVar15 + 10) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x54) = uVar4; *(undefined4 *)(pplVar15 + 0xc) = uVar3; *(undefined2 *)((longlong)pplVar15 + 100) = uVar4; *(undefined1 *)(pplVar15 + 0xd) = 0; *(undefined1 *)(pplVar15 + 1) = 1; } uVar4 = DAT_1401553d4; uVar3 = DAT_1401553d0; pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } local_100 = Proud::AddrPort::vftable; local_f0 = Proud::AddrPort::vftable; local_108 = 0; local_e0 = 0; local_f8 = DAT_1401553d0; local_f4 = DAT_1401553d4; local_e8 = DAT_1401553d0; local_e4 = DAT_1401553d4; *(undefined4 *)(pplVar15 + 2) = 0; *(undefined4 *)(pplVar15 + 4) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x24) = uVar4; *(undefined4 *)(pplVar15 + 6) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x34) = uVar4; *(undefined1 *)(pplVar15 + 7) = 0; uVar4 = DAT_1401553d4; uVar3 = DAT_1401553d0; local_130 = Proud::AddrPort::vftable; local_120 = Proud::AddrPort::vftable; local_138 = 0; local_110 = 0; local_128 = DAT_1401553d0; local_124 = DAT_1401553d4; local_118 = DAT_1401553d0; local_114 = DAT_1401553d4; *(undefined4 *)(pplVar15 + 8) = 0; *(undefined4 *)(pplVar15 + 10) = uVar3; *(undefined2 *)((longlong)pplVar15 + 0x54) = uVar4; *(undefined4 *)(pplVar15 + 0xc) = uVar3; *(undefined2 *)((longlong)pplVar15 + 100) = uVar4; *(undefined1 *)(pplVar15 + 0xd) = 0; pplVar14 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar14 = (longlong **)*local_188; } pplVar14[0x33] = (longlong *)0x0; } else { pplVar15 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar15 = (longlong **)*local_188; } plVar16 = local_188; iVar6 = FUN_14003ccb0((longlong)pplVar15); if (iVar6 != 2) goto LAB_14005c6c5; local_180 = 1; if (plVar16 == (longlong *)0x0) { local_148[0] = 0; } else { local_148[0] = *plVar16; } uVar19 = *param_5; lVar17 = *(longlong *)(param_1 + 0x20); lVar1 = *(longlong *)(lVar17 + 0x4a8); uVar18 = local_res10[0]; local_170 = local_148[0]; local_168[0] = local_148[0]; puVar10 = FUN_14003d020(local_148[0],local_50,local_res10[0]); puVar11 = FUN_14003cfa0(local_148[0],local_90,uVar18); puVar12 = FUN_14003cc30(local_170,local_148,uVar19); puVar13 = FUN_14003cb30(local_168[0],local_70,uVar19); (**(code **)(lVar1 + 0x50)) (lVar17 + 0x4a8,local_res10[0],&DAT_14015de10,param_5,&local_180,puVar13, puVar12,puVar11,puVar10); local_17e[0] = 1; if (local_188 == (longlong *)0x0) { local_168[0] = 0; } else { local_168[0] = *local_188; } lVar5 = local_168[0]; uVar19 = *param_5; lVar17 = *(longlong *)(local_res8 + 0x20); lVar1 = *(longlong *)(lVar17 + 0x4a8); uVar18 = uVar19; local_170 = local_168[0]; puVar10 = FUN_14003d020(local_168[0],local_a0,uVar19); puVar11 = FUN_14003cfa0(lVar5,local_80,uVar18); uVar18 = local_res10[0]; puVar12 = FUN_14003cc30(local_168[0],local_60,local_res10[0]); puVar13 = FUN_14003cb30(local_170,local_168,uVar18); puVar21 = local_res10; ppuVar20 = (undefined **)&DAT_14015de10; pplVar15 = (longlong **)(ulonglong)uVar19; (**(code **)(lVar1 + 0x50)) (lVar17 + 0x4a8,pplVar15,&DAT_14015de10,puVar21,local_17e,puVar13,puVar12, puVar11,puVar10); pplVar14 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar14 = (longlong **)*local_188; } if (*(char *)(pplVar14 + 1) != '\0') { *(undefined1 *)(pplVar14 + 1) = 0; } } pplVar14 = pplVar22; if (local_188 != (longlong *)0x0) { pplVar14 = (longlong **)*local_188; } pplVar14[0x32] = (longlong *)0x0; if (local_188 != (longlong *)0x0) { pplVar22 = (longlong **)*local_188; } *(undefined1 *)(pplVar22 + 0x34) = 0; } } if ((local_188 != (longlong *)0x0) && (local_188[1] = local_188[1] + -1, local_188[1] == 0)) { FUN_140041080(local_188); } if ((local_178 != (longlong *)0x0) && (local_178[1] = local_178[1] + -1, local_178[1] == 0)) { pvVar2 = (LPVOID)*local_178; if (pvVar2 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar2,pplVar15,ppuVar20,puVar21); FUN_1400302f0(pvVar2); } FUN_1400302f0(local_178); } goto LAB_14005c986; } } if ((local_188 != (longlong *)0x0) && (local_188[1] = local_188[1] + -1, local_188[1] == 0)) { FUN_140041080(local_188); } if ((local_178 != (longlong *)0x0) && (local_178[1] = local_178[1] + -1, local_178[1] == 0)) { pvVar2 = (LPVOID)*local_178; if (pvVar2 != (LPVOID)0x0) { FUN_1400443d0((longlong)pvVar2,pplVar15,uVar8,puVar21); FUN_1400302f0(pvVar2); } FUN_1400302f0(local_178); } LAB_14005c986: uVar7 = FUN_14002e770((longlong)local_158); return CONCAT71((int7)((ulonglong)uVar7 >> 8),1); }