/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 pseudocode via REA, ev_e87b1dd73483b4679d62c8af5a049a4eba2945ad39d8d854566eb6f8725e1200 * Decompiler output, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Type propagation algorithm not settling */ void FUN_140008ea0(undefined8 param_1,uint *param_2,undefined8 param_3,uint *param_4) { char cVar1; wchar_t wVar2; ulonglong uVar3; DWORD DVar4; char *pcVar5; wchar_t *******pppppppwVar6; longlong lVar7; ulonglong uVar8; undefined8 uVar9; char *pcVar10; wchar_t *pwVar11; undefined8 *puVar12; short *psVar13; wchar_t *pwVar14; undefined1 auStack_488 [32]; void **local_468; undefined8 *local_460; uint local_458 [2]; undefined8 *local_450; undefined1 *local_448; undefined8 local_440; basic_ostream_> local_438 [136]; basic_ios_> local_3b0 [104]; uint *local_348; wchar_t *******local_340 [2]; wchar_t ******local_330; wchar_t ******local_328; undefined2 local_318; undefined6 uStack_316; undefined8 local_308; ulonglong local_300; ulonglong local_2f0 [2]; undefined8 local_2e0; ulonglong local_2d8; void *local_2c8; undefined8 local_2c0; undefined8 local_2b8; ulonglong local_2b0; ulonglong local_2a0 [2]; undefined8 local_290; ulonglong local_288; ulonglong local_278 [2]; undefined8 local_268; ulonglong local_260; wchar_t local_248; undefined1 local_246 [526]; ulonglong local_38; local_440 = 0xfffffffffffffffe; local_38 = DAT_1401555a0 ^ (ulonglong)auStack_488; pwVar11 = (wchar_t *)0x0; DVar4 = 0; pwVar14 = pwVar11; if (*(longlong *)(DAT_140162d60 + 0x58) != 0) { for (puVar12 = *(undefined8 **) (*(longlong *)(DAT_140162d60 + 0x38) + ((ulonglong)(longlong)(int)param_2[1] % *(ulonglong *)(DAT_140162d60 + 0x40)) * 8); puVar12 != (undefined8 *)0x0; puVar12 = (undefined8 *)*puVar12) { if (param_2[1] == *(uint *)(puVar12 + 1)) { if (puVar12 != (undefined8 *)0x0) { pwVar14 = (wchar_t *)puVar12[2]; } break; } } } local_348 = param_2; if (*(int *)(pwVar14 + 0x62) == 0) { pwVar14[0x62] = L'\x01'; pwVar14[99] = L'\0'; uVar3 = *(ulonglong *)(DAT_1401626f8 + 0xa8); local_248 = L'\0'; memset(local_246,0,0x206); FUN_14000a4b0(local_438); std::basic_ostream_>::operator<<(local_438,param_2[1]); FUN_14000a600((longlong)local_438,(void **)&local_318); for (pcVar5 = *(char **)(DAT_140162d58 + 8); pcVar5 != *(char **)(DAT_140162d58 + 0x10); pcVar5 = pcVar5 + 0x30) { if (*pcVar5 == (char)param_2[3]) { pwVar11 = (wchar_t *)(pcVar5 + 8); if (7 < *(ulonglong *)(pcVar5 + 0x20)) { pwVar11 = *(wchar_t **)pwVar11; } break; } } wcscpy_s(&local_248,0x104,pwVar11); wcscat_s(&local_248,0x104,L" "); if (*(char *)(DAT_140162d68 + 0x152) == '\0') { local_2d8 = 0xf; local_2e0 = 0; local_2f0[0]._0_1_ = '\0'; local_328 = (wchar_t ******)0x7; local_330 = (wchar_t ******)0x0; local_340[0] = (wchar_t *******)((ulonglong)local_340[0] & 0xffffffffffff0000); FUN_140027540(DAT_140162d68,local_2f0,param_2); pcVar5 = (char *)local_2f0; if (0xf < local_2d8) { pcVar5 = (char *)CONCAT71(local_2f0[0]._1_7_,(char)local_2f0[0]); } local_288 = 0xf; local_290 = 0; local_2a0[0]._0_1_ = '\0'; uVar8 = 0xffffffffffffffff; pcVar10 = pcVar5; do { if (uVar8 == 0) break; uVar8 = uVar8 - 1; cVar1 = *pcVar10; pcVar10 = pcVar10 + 1; } while (cVar1 != '\0'); FUN_14000b810(local_2a0,pcVar5,~uVar8 - 1); pppppppwVar6 = (wchar_t *******)FUN_1400dc8f0((ulonglong *)&local_2c8,(LPCSTR)local_2a0); if (local_340 != (wchar_t ********)pppppppwVar6) { if ((wchar_t ******)0x7 < local_328) { operator_delete(local_340[0]); } local_328 = (wchar_t ******)0x7; local_330 = (wchar_t ******)0x0; local_340[0] = (wchar_t *******)((ulonglong)local_340[0] & 0xffffffffffff0000); if (pppppppwVar6[3] < (wchar_t ******)0x8) { memmove(local_340,pppppppwVar6,((longlong)pppppppwVar6[2] + 1U) * 2); } else { local_340[0] = (wchar_t *******)*pppppppwVar6; *pppppppwVar6 = (wchar_t ******)0x0; } local_330 = pppppppwVar6[2]; local_328 = pppppppwVar6[3]; pppppppwVar6[3] = (wchar_t ******)0x7; pppppppwVar6[2] = (wchar_t ******)0x0; *(undefined2 *)pppppppwVar6 = 0; } if (7 < local_2b0) { operator_delete(local_2c8); } local_2b0 = 7; local_2b8 = 0; local_2c8 = (void *)((ulonglong)local_2c8 & 0xffffffffffff0000); if (0xf < local_288) { operator_delete((void *)CONCAT71(local_2a0[0]._1_7_,(CHAR)local_2a0[0])); } pppppppwVar6 = (wchar_t *******)local_340; if ((wchar_t ******)0x7 < local_328) { pppppppwVar6 = local_340[0]; } uVar9 = 0x104; wcscat_s(&local_248,0x104,(wchar_t *)pppppppwVar6); if ((wchar_t ******)0x7 < local_328) { operator_delete(local_340[0]); } local_328 = (wchar_t ******)0x7; local_330 = (wchar_t ******)0x0; local_340[0] = (wchar_t *******)((ulonglong)local_340[0] & 0xffffffffffff0000); if (0xf < local_2d8) { operator_delete((void *)CONCAT71(local_2f0[0]._1_7_,(char)local_2f0[0])); } local_2d8 = 0xf; local_2e0 = 0; local_2f0[0]._0_1_ = '\0'; } else { pppppppwVar6 = (wchar_t *******)&local_318; if (7 < local_300) { pppppppwVar6 = (wchar_t *******)CONCAT62(uStack_316,local_318); } uVar9 = 0x104; wcscat_s(&local_248,0x104,(wchar_t *)pppppppwVar6); } uVar8 = 0xffffffffffffffff; pwVar11 = &local_248; do { if (uVar8 == 0) break; uVar8 = uVar8 - 1; wVar2 = *pwVar11; pwVar11 = pwVar11 + 1; } while (wVar2 != L'\0'); if ((~uVar8 < 0x104) && (DVar4 = FUN_1400094e0(&local_248,uVar9,pppppppwVar6,param_4), 0 < (int)DVar4)) { *(DWORD *)(pwVar14 + 0x52) = DVar4; pwVar14[0x62] = L'\x01'; pwVar14[99] = L'\0'; local_448 = (undefined1 *)local_2a0; puVar12 = FUN_140006c30((longlong)pwVar14,local_2a0); local_2c8 = *(void **)(pwVar14 + 0x5c); local_2c0 = *(undefined8 *)(pwVar14 + 0x60); local_2b8 = *(undefined8 *)(pwVar14 + 100); local_2b0 = *(ulonglong *)(pwVar14 + 0x68); local_458[0] = *(uint *)(pwVar14 + 2); local_450 = puVar12; lVar7 = FUN_140007fa0(uVar3); local_468 = &local_2c8; param_4 = local_458; local_460 = puVar12; (**(code **)(*(longlong *)(lVar7 + 0x68) + 0x40))((longlong *)(lVar7 + 0x68),1,&DAT_1401555d0) ; if ((void *)*puVar12 != (void *)0x0) { operator_delete((void *)*puVar12); } *puVar12 = 0; puVar12[1] = 0; puVar12[2] = 0; } else { pwVar14[0x62] = L'\0'; pwVar14[99] = L'\0'; } if (uVar3 == 0) { if (7 < local_300) { operator_delete((void *)CONCAT62(uStack_316,local_318)); } local_300 = 7; local_308 = 0; local_318 = 0; FUN_14000a550((longlong)local_3b0); std::basic_ios_>:: ~basic_ios_>(local_3b0); } else if ((int)DVar4 < 1) { puVar12 = (undefined8 *)(DAT_140162d68 + 0x30); if (7 < *(ulonglong *)(DAT_140162d68 + 0x48)) { puVar12 = (undefined8 *)*puVar12; } FUN_1400dc9d0(local_278,L"FAILED SERVER ON %s ",puVar12,param_4); psVar13 = (short *)local_278; if (7 < local_260) { psVar13 = (short *)CONCAT62(local_278[0]._2_6_,(short)local_278[0]); } FUN_1400080a0(uVar3,1,psVar13,param_4); if (7 < local_260) { operator_delete((void *)CONCAT62(local_278[0]._2_6_,(short)local_278[0])); } local_260 = 7; local_268 = 0; local_278[0]._0_2_ = 0; if (7 < local_300) { operator_delete((void *)CONCAT62(uStack_316,local_318)); } local_300 = 7; local_308 = 0; local_318 = 0; FUN_14000a550((longlong)local_3b0); std::basic_ios_>:: ~basic_ios_>(local_3b0); } else { if (7 < local_300) { operator_delete((void *)CONCAT62(uStack_316,local_318)); } local_300 = 7; local_308 = 0; local_318 = 0; FUN_14000a550((longlong)local_3b0); std::basic_ios_>:: ~basic_ios_>(local_3b0); } } FUN_140004e10((longlong)param_2); return; }