/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c7080 FUN_1400c7080 * Pseudocode, not original source. */ void FUN_1400c7080(IMAGE_DOS_HEADER *param_1,longlong param_2,undefined **param_3, undefined ***param_4) { undefined **ppuVar1; longlong *plVar2; int iVar3; int iVar4; int iVar5; longlong lVar6; longlong lVar7; longlong *plVar8; char cVar9; uint uVar10; uint uVar12; longlong lVar13; uint uVar11; int *piVar14; uint *puVar15; int *piVar16; undefined8 *puVar17; longlong lVar18; longlong *plVar19; ulonglong uVar20; undefined **ppuVar21; longlong lVar22; undefined ***pppuVar23; int iVar24; ulonglong uVar25; uint uVar26; undefined8 uVar27; longlong **pplVar28; uint uVar29; undefined8 uVar30; undefined8 uVar31; undefined **local_res8; undefined **local_res10; longlong *local_res18; undefined **local_50; undefined8 local_48; longlong local_40; undefined8 local_38; undefined4 local_30; undefined4 local_2c; lVar22 = param_2; (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x78) + 0x10))(); lVar18._0_2_ = param_1[2].e_cparhdr; lVar18._2_2_ = param_1[2].e_minalloc; lVar18._4_2_ = param_1[2].e_maxalloc; lVar18._6_2_ = param_1[2].e_ss; lVar13 = FUN_14009c0f0(lVar18); *(undefined1 *)(lVar13 + 0xc0) = 0; if (*(int *)(param_2 + 8) < 1) { FUN_14003e7c0(lVar18,lVar22,param_3,param_4); local_res10 = (undefined **)PTR_DAT_14016f010; FUN_140029b80((longlong *)&local_res10,L"compeltedlength < 0 recvcomplete errorcode:%d", (ulonglong)*(uint *)(param_2 + 0xc),param_4); param_4 = &local_res10; lVar22 = 0xb; param_3 = (undefined **)0x3; plVar19 = *(longlong **)¶m_1[2].e_cparhdr; FUN_1400b4a80(plVar19,0xb,(undefined *)0x3,(longlong **)param_4); iVar24._0_1_ = param_1[2].e_magic[0]; iVar24._1_1_ = param_1[2].e_magic[1]; iVar24._2_2_ = param_1[2].e_cblp; if (iVar24 < 4) { param_1->e_program[0] = 0; param_1->e_program[1] = 0; param_1->e_program[2] = 0; param_1->e_program[3] = 0; param_1[2].e_magic[0] = '\x04'; param_1[2].e_magic[1] = '\0'; param_1[2].e_cblp = 0; plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70); uVar30 = (**(code **)(*plVar19 + 0x1c0))(); param_1[1].e_magic[0] = (char)uVar30; param_1[1].e_magic[1] = (char)((ulonglong)uVar30 >> 8); param_1[1].e_cblp = (short)((ulonglong)uVar30 >> 0x10); param_1[1].e_cp = (short)((ulonglong)uVar30 >> 0x20); param_1[1].e_crlc = (short)((ulonglong)uVar30 >> 0x30); param_1[1].e_program[0] = 0; } ppuVar21 = local_res10; if (((local_res10 != (undefined **)0x0) && (local_res10 != (undefined **)PTR_DAT_14016f010)) && (ppuVar1 = local_res10 + -1, ppuVar1 != (undefined **)0x0)) { piVar14 = (int *)FUN_14003e7c0(plVar19,lVar22,param_3,param_4); FUN_14003d040(piVar14); piVar16 = (int *)((longlong)ppuVar21 + -4); *piVar16 = *piVar16 + -1; if (*piVar16 == 0) { FUN_14003e8b0(ppuVar1); } FUN_14003d0d0((longlong)piVar14); } local_res10 = (undefined **)PTR_DAT_14016f010; goto LAB_1400c7597; } lVar13._0_2_ = param_1[2].e_cparhdr; lVar13._2_2_ = param_1[2].e_minalloc; lVar13._4_2_ = param_1[2].e_maxalloc; lVar13._6_2_ = param_1[2].e_ss; lVar18 = FUN_14009c0f0(lVar13); uVar25 = 0; uVar12 = 0; uVar20 = uVar25; if (*(ulonglong **)(lVar18 + 0x128) != (ulonglong *)0x0) { uVar20 = **(ulonglong **)(lVar18 + 0x128); } cVar9 = FUN_140043cf0(uVar20); uVar26 = 0; if (cVar9 == '\0') { uVar30 = (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70) + 0x1c0))(); *(undefined8 *)(*(longlong *)¶m_1[2].e_cparhdr + 0x18c0) = uVar30; lVar22._0_2_ = param_1[2].e_cparhdr; lVar22._2_2_ = param_1[2].e_minalloc; lVar22._4_2_ = param_1[2].e_maxalloc; lVar22._6_2_ = param_1[2].e_ss; lVar18 = FUN_14009c0f0(lVar22); uVar20 = uVar25; if (*(ulonglong **)(lVar18 + 0x128) != (ulonglong *)0x0) { uVar20 = **(ulonglong **)(lVar18 + 0x128); } puVar17 = (undefined8 *)FUN_140043cd0(uVar20); lVar6._0_2_ = param_1[2].e_cparhdr; lVar6._2_2_ = param_1[2].e_minalloc; lVar6._4_2_ = param_1[2].e_maxalloc; lVar6._6_2_ = param_1[2].e_ss; lVar18 = FUN_14009c0f0(lVar6); param_3 = (undefined **)(ulonglong)*(uint *)(param_2 + 8); FUN_14009ab30((longlong *)(lVar18 + 0x130),puVar17,(SIZE_T)param_3); plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x658); *plVar19 = *plVar19 + (longlong)*(int *)(param_2 + 8); local_48 = 0; local_40 = 0; local_38 = 0; local_50 = Proud::CReceivedMessageList::vftable; local_30 = 1000; local_2c = 1; pppuVar23 = &local_50; plVar19 = *(longlong **)¶m_1[2].e_cparhdr; FUN_1400ab500(plVar19,(longlong)pppuVar23,param_3,param_4); while (iVar24 = (int)uVar25, iVar24 != (int)local_38) { if ((iVar24 < 0) || ((int)local_38 <= iVar24)) { /* WARNING: Subroutine does not return */ FUN_14003def0(plVar19,pppuVar23,param_3,param_4); } pppuVar23 = (undefined ***)(local_40 + (longlong)iVar24 * 0x48); lVar18 = *(longlong *)¶m_1[2].e_cparhdr; param_4 = (undefined ***)0x0; param_3 = *(undefined ***)(lVar18 + 0x6f0); puVar17 = FUN_1400c2180((longlong *)(lVar18 + 0x6e0),(undefined4 *)pppuVar23,param_3,0); plVar19 = *(longlong **)(lVar18 + 0x6f0); if (plVar19 == (longlong *)0x0) { *(undefined8 **)(lVar18 + 0x6e8) = puVar17; } else { *plVar19 = (longlong)puVar17; } *(undefined8 **)(lVar18 + 0x6f0) = puVar17; if ((int)local_38 <= iVar24) { /* WARNING: Subroutine does not return */ FUN_14003def0(plVar19,pppuVar23,param_3,param_4); } uVar25 = (ulonglong)(iVar24 + 1); } lVar22 = 0; FUN_1400c6920(param_1,(IMAGE_DOS_HEADER *)0x0,param_3,param_4); FUN_14007e8f0(&local_50); goto LAB_1400c7597; } iVar3._0_1_ = param_1[2].e_magic[0]; iVar3._1_1_ = param_1[2].e_magic[1]; iVar3._2_2_ = param_1[2].e_cblp; if (3 < iVar3) goto LAB_1400c7597; FUN_14003e7c0(uVar20,lVar22,param_3,param_4); local_res8 = (undefined **)PTR_DAT_14016f010; uVar10 = FUN_14003e620(L"close socket completion"); if ((local_res8 != (undefined **)0x0) && (uVar25 = 0, local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar25 = (ulonglong)*(uint *)(local_res8 + -1); } uVar11 = uVar10; if ((((int)uVar10 <= (int)uVar25) && (uVar11 = uVar26, local_res8 != (undefined **)0x0)) && (local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar11 = *(uint *)(local_res8 + -1); } uVar29 = 1; if (1 < (int)uVar11) { uVar29 = uVar11; } uVar11 = uVar26; if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar11 = *(uint *)(local_res8 + -1); } if ((int)uVar11 < (int)uVar29) { if (local_res8 == (undefined **)0x0) { local_res8 = (undefined **)PTR_DAT_14016f010; } if ((int)uVar29 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (uVar29 == 0) { FUN_140002190((longlong *)&local_res8,PTR_DAT_14016f010,uVar25,param_4); } else { uVar11 = uVar26; if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar11 = *(uint *)(local_res8 + -1); } if (uVar29 != uVar11) { puVar15 = (uint *)FUN_14003e840((longlong)(int)uVar29 * 2 + 10); if (puVar15 != (uint *)0x0) { *puVar15 = 0; puVar15[1] = 1; } *puVar15 = uVar29; uVar11 = uVar26; if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar11 = *(uint *)(local_res8 + -1); } ppuVar21 = (undefined **)PTR_DAT_14016f010; if ((int)uVar29 < (int)uVar11) { LAB_1400c72ec: if (local_res8 != (undefined **)0x0) { ppuVar21 = local_res8; } } else { uVar29 = uVar26; if (local_res8 != (undefined **)0x0) { if (local_res8 != (undefined **)PTR_DAT_14016f010) { uVar29 = *(uint *)(local_res8 + -1); } goto LAB_1400c72ec; } } uVar20 = (ulonglong)uVar29; FUN_14003e650(puVar15 + 2,ppuVar21,uVar29); FUN_140002190((longlong *)&local_res8,ppuVar21,uVar20,param_4); local_res8 = (undefined **)(puVar15 + 2); } } } FUN_140001df0((longlong *)&local_res8); ppuVar21 = local_res8; if (local_res8 == (undefined **)0x0) { ppuVar21 = (undefined **)PTR_DAT_14016f010; } FUN_14003e650(ppuVar21,L"close socket completion",uVar10); ppuVar21 = local_res8; if (local_res8 == (undefined **)0x0) { ppuVar21 = (undefined **)PTR_DAT_14016f010; } uVar10 = FUN_14003e620((short *)ppuVar21); uVar26 = uVar12; if (0 < (int)uVar10) { uVar26 = uVar10; } uVar10 = uVar12; if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) { uVar10 = *(uint *)(local_res8 + -1); } if (((int)uVar26 < (int)uVar10) || (uVar26 = uVar12, local_res8 == (undefined **)0x0)) { LAB_1400c737f: if (((local_res8 != (undefined **)PTR_DAT_14016f010) && (local_res8 != (undefined **)0x0)) && (local_res8 + -1 != (undefined **)0x0)) { *(uint *)(local_res8 + -1) = uVar26; *(undefined2 *)((longlong)local_res8 + (longlong)(int)uVar26 * 2) = 0; } } else if (local_res8 != (undefined **)PTR_DAT_14016f010) { uVar26 = *(uint *)(local_res8 + -1); goto LAB_1400c737f; } param_4 = &local_res8; lVar22 = 0xb; param_3 = (undefined **)0x3; plVar19 = *(longlong **)¶m_1[2].e_cparhdr; FUN_1400b4a80(plVar19,0xb,(undefined *)0x3,(longlong **)param_4); ppuVar21 = local_res8; if (((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) && (ppuVar1 = local_res8 + -1, ppuVar1 != (undefined **)0x0)) { piVar16 = (int *)FUN_14003e7c0(plVar19,lVar22,param_3,param_4); FUN_14003d040(piVar16); puVar15 = (uint *)((longlong)ppuVar21 + -4); *puVar15 = *puVar15 - 1; if (*puVar15 == 0) { FUN_14003e8b0(ppuVar1); } FUN_14003d0d0((longlong)piVar16); } local_res8 = (undefined **)PTR_DAT_14016f010; iVar4._0_1_ = param_1[2].e_magic[0]; iVar4._1_1_ = param_1[2].e_magic[1]; iVar4._2_2_ = param_1[2].e_cblp; if (iVar4 < 4) { param_1->e_program[0] = 0; param_1->e_program[1] = 0; param_1->e_program[2] = 0; param_1->e_program[3] = 0; param_1[2].e_magic[0] = '\x04'; param_1[2].e_magic[1] = '\0'; param_1[2].e_cblp = 0; uVar30 = (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70) + 0x1c0))(); param_1[1].e_magic[0] = (char)uVar30; param_1[1].e_magic[1] = (char)((ulonglong)uVar30 >> 8); param_1[1].e_cblp = (short)((ulonglong)uVar30 >> 0x10); param_1[1].e_cp = (short)((ulonglong)uVar30 >> 0x20); param_1[1].e_crlc = (short)((ulonglong)uVar30 >> 0x30); param_1[1].e_program[0] = 0; } LAB_1400c7597: lVar18 = 0; plVar19 = *(longlong **)(*(longlong *)¶m_1[2].e_cparhdr + 0x5d0); if (plVar19 != (longlong *)0x0) { lVar18 = *plVar19; } if (*(int *)(lVar18 + 0x100) < 4) { lVar7._0_2_ = param_1[2].e_cparhdr; lVar7._2_2_ = param_1[2].e_minalloc; lVar7._4_2_ = param_1[2].e_maxalloc; lVar7._6_2_ = param_1[2].e_ss; lVar18 = FUN_14009c0f0(lVar7); uVar12 = FUN_1400ce810(lVar18,lVar22,param_3,param_4); if (uVar12 != 0) { FUN_14003e7c0(lVar18,lVar22,param_3,param_4); local_res18 = (longlong *)PTR_DAT_14016f010; FUN_140029b80((longlong *)&local_res18,L"%d Tcp issueRecv Failed SocketErrorCode", (ulonglong)uVar12,param_4); pplVar28 = &local_res18; uVar30 = 3; uVar27 = 1; plVar19 = *(longlong **)¶m_1[2].e_cparhdr; FUN_1400b4a80(plVar19,3,(undefined *)0x1,pplVar28); iVar5._0_1_ = param_1[2].e_magic[0]; iVar5._1_1_ = param_1[2].e_magic[1]; iVar5._2_2_ = param_1[2].e_cblp; if (iVar5 < 4) { param_1->e_program[0] = 0; param_1->e_program[1] = 0; param_1->e_program[2] = 0; param_1->e_program[3] = 0; param_1[2].e_magic[0] = '\x04'; param_1[2].e_magic[1] = '\0'; param_1[2].e_cblp = 0; plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70); uVar31 = (**(code **)(*plVar19 + 0x1c0))(); param_1[1].e_magic[0] = (char)uVar31; param_1[1].e_magic[1] = (char)((ulonglong)uVar31 >> 8); param_1[1].e_cblp = (short)((ulonglong)uVar31 >> 0x10); param_1[1].e_cp = (short)((ulonglong)uVar31 >> 0x20); param_1[1].e_crlc = (short)((ulonglong)uVar31 >> 0x30); param_1[1].e_program[0] = 0; } plVar8 = local_res18; if (((local_res18 != (longlong *)0x0) && (local_res18 != (longlong *)PTR_DAT_14016f010)) && (plVar2 = local_res18 + -1, plVar2 != (longlong *)0x0)) { piVar14 = (int *)FUN_14003e7c0(plVar19,uVar30,uVar27,pplVar28); FUN_14003d040(piVar14); piVar16 = (int *)((longlong)plVar8 + -4); *piVar16 = *piVar16 + -1; if (*piVar16 == 0) { FUN_14003e8b0(plVar2); } FUN_14003d0d0((longlong)piVar14); } } } return; }