/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007e330 FUN_14007e330 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014007e81b) */ /* WARNING: Removing unreachable block (ram,0x00014007e6bf) */ /* WARNING: Removing unreachable block (ram,0x00014007e97b) */ void FUN_14007e330(SIZE_T *param_1,wchar_t *param_2,SIZE_T param_3,undefined *param_4) { code *pcVar1; longlong lVar2; int *piVar3; longlong lVar4; ulonglong uVar5; undefined4 *puVar6; longlong *plVar7; ulonglong uVar8; longlong lVar9; undefined1 *puVar10; undefined1 *puVar11; undefined1 *puVar12; undefined1 *puVar13; int iVar14; longlong lVar15; SIZE_T SVar16; undefined8 *puVar17; longlong *plVar18; double dVar19; undefined1 auStack_a8 [32]; int *local_88; bool local_80; longlong *local_78; int *local_70; undefined1 local_68; SIZE_T local_60; SIZE_T local_58; undefined8 local_50; ulonglong local_48; puVar10 = auStack_a8; puVar13 = auStack_a8; local_50 = 0xfffffffffffffffe; local_48 = DAT_1401ac5a0 ^ (ulonglong)&local_88; piVar3 = (int *)(**(code **)(*param_1 + 0x58))(); local_70 = piVar3; FUN_14006b350(piVar3); local_68 = 1; if (DAT_1401b42cf != '\0') { param_3 = *param_1; param_2 = L"Proud::CNetServerImpl::TcpAndUdp_DoForLongInterval"; (**(code **)(param_3 + 200))(param_1); } lVar4 = (longlong)(int)param_1[0xdc]; puVar17 = (undefined8 *)0x0; if (0 < (int)param_1[0xdc]) { uVar8 = lVar4 * 8 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar4 * 8 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar10 = auStack_a8 + lVar9; puVar6 = (undefined4 *)((longlong)&local_88 + lVar9); puVar17 = (undefined8 *)0x0; puVar13 = auStack_a8 + lVar9; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xcccc; LAB_14007e41e: puVar17 = (undefined8 *)(puVar6 + 4); puVar13 = puVar10; } } else { puVar6 = malloc(uVar8); puVar17 = (undefined8 *)0x0; puVar13 = auStack_a8; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xdddd; goto LAB_14007e41e; } } iVar14 = 0; lVar9 = 0; piVar3 = local_70; if (0 < lVar4) { do { if ((lVar9 < 0) || ((int)param_1[0xdc] <= iVar14)) { /* WARNING: Subroutine does not return */ *(undefined **)(puVar13 + -8) = &UNK_14007e46f; FUN_14006be30(uVar8,param_2,param_3,param_4); } plVar18 = *(longlong **)(param_1[0xdb] + lVar9 * 8); lVar15 = 0; if (plVar18 != (longlong *)0x0) { lVar15 = *plVar18; } uVar8 = lVar15 + 0x40; *(undefined8 *)(puVar13 + -8) = 0x14007e45a; FUN_1400d8960(uVar8); puVar17[lVar9] = lVar15; iVar14 = iVar14 + 1; lVar9 = lVar9 + 1; piVar3 = local_70; } while (lVar9 < lVar4); } } local_58 = param_1[0x193]; plVar18 = (longlong *)0x0; if (0 < (int)local_58) { lVar9 = (longlong)(int)local_58 * 8; uVar8 = lVar9 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar9 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } *(undefined8 *)(puVar13 + -8) = 0x14007e4bc; lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar11 = puVar13 + lVar9; puVar6 = (undefined4 *)(puVar13 + lVar9 + 0x20); plVar18 = (longlong *)0x0; puVar13 = puVar13 + lVar9; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xcccc; puVar13 = puVar11; LAB_14007e4e6: plVar18 = (longlong *)(puVar6 + 4); } } else { *(undefined8 *)(puVar13 + -8) = 0x14007e4d8; puVar6 = malloc(uVar8); plVar18 = (longlong *)0x0; if (puVar6 != (undefined4 *)0x0) { *puVar6 = 0xdddd; goto LAB_14007e4e6; } } plVar7 = plVar18; if (param_1[0x193] == 0) { SVar16 = 0; } else { SVar16 = param_1[0x191]; } for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x10)) { lVar9 = *(longlong *)(SVar16 + 8); *(undefined8 *)(puVar13 + -8) = 0x14007e517; FUN_1400d8960(lVar9 + 0xc0); *plVar7 = lVar9; plVar7 = plVar7 + 1; } } local_60 = param_1[0x2e1]; local_78 = (longlong *)0x0; if ((int)local_60 < 1) goto LAB_14007e5e6; lVar9 = (longlong)(int)local_60 * 8; uVar8 = lVar9 + 0x10; if (uVar8 < 0x401) { uVar5 = lVar9 + 0x1f; if (uVar5 <= uVar8) { uVar5 = 0xffffffffffffff0; } *(undefined8 *)(puVar13 + -8) = 0x14007e571; lVar9 = -(uVar5 & 0xfffffffffffffff0); puVar12 = puVar13 + lVar9; plVar7 = (longlong *)(puVar13 + lVar9 + 0x20); puVar13 = puVar13 + lVar9; local_78 = plVar7; if (plVar7 != (longlong *)0x0) { *(undefined4 *)plVar7 = 0xcccc; puVar13 = puVar12; LAB_14007e59f: local_78 = plVar7 + 2; } } else { *(undefined8 *)(puVar13 + -8) = 0x14007e590; plVar7 = malloc(uVar8); local_78 = plVar7; if (plVar7 != (longlong *)0x0) { *(undefined4 *)plVar7 = 0xdddd; goto LAB_14007e59f; } } plVar7 = local_78; if (param_1[0x2e1] == 0) { SVar16 = 0; } else { SVar16 = param_1[0x2df]; } for (; piVar3 = local_70, SVar16 != 0; SVar16 = *(SIZE_T *)(SVar16 + 0x18)) { lVar9 = *(longlong *)(SVar16 + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14007e5d5; FUN_1400d8960(lVar9 + 0xc0); *plVar7 = lVar9; plVar7 = plVar7 + 1; } LAB_14007e5e6: pcVar1 = *(code **)(param_1[0x23] + 8); *(undefined8 *)(puVar13 + -8) = 0x14007e5f3; dVar19 = (double)(*pcVar1)(); *(undefined8 *)(puVar13 + -8) = 0x14007e5ff; FUN_14006b3e0((longlong)piVar3); local_68 = 0; if (puVar17 != (undefined8 *)0x0) { while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = puVar17[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x88) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14007e631; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14007e68b; FUN_14006b350(piVar3); *(undefined8 *)(puVar13 + -8) = 0x14007e697; FUN_1400d8c60(lVar15,param_2,param_3,param_4); *(undefined8 *)(puVar13 + -8) = 0x14007e69f; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e6af; FUN_1400d8970(lVar15 + 0x40); *puVar17 = puVar17[lVar4 + -1]; LAB_14007e6b7: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14007e649; local_80 = FUN_14006b3a0(piVar3); if (local_80) { *(undefined8 *)(puVar13 + -8) = 0x14007e65f; FUN_1400d8c60(lVar15,param_2,param_3,param_4); *(undefined8 *)(puVar13 + -8) = 0x14007e667; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e677; FUN_1400d8970(lVar15 + 0x40); puVar17[lVar9] = puVar17[lVar4 + -1]; goto LAB_14007e6b7; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if (*(int *)(puVar17 + -2) == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14007e6f2; free(puVar17 + -2); } } if (plVar18 != (longlong *)0x0) { lVar4 = (longlong)(int)local_58; while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = plVar18[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14007e732; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14007e7bc; FUN_14006b350(piVar3); lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14007e7cd; FUN_1400d83e0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14007e7f2; FUN_1400d5d10(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14007e7fa; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e80c; FUN_1400d8970(lVar15 + 0xc0); *plVar18 = plVar18[lVar4 + -1]; LAB_14007e814: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14007e74a; local_80 = FUN_14006b3a0(piVar3); if (local_80) { lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14007e769; FUN_1400d83e0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14007e78e; FUN_1400d5d10(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14007e796; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e7a8; FUN_1400d8970(lVar15 + 0xc0); plVar18[lVar9] = plVar18[lVar4 + -1]; goto LAB_14007e814; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if ((int)plVar18[-2] == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14007e84e; free(plVar18 + -2); } } plVar18 = local_78; if (local_78 != (longlong *)0x0) { lVar4 = (longlong)(int)local_60; while ((0 < lVar4 && (lVar9 = 0, 0 < lVar4))) { do { lVar15 = plVar18[lVar9]; pcVar1 = *(code **)(*(longlong *)(lVar15 + 0x108) + 0x10); *(undefined8 *)(puVar13 + -8) = 0x14007e892; piVar3 = (int *)(*pcVar1)(); local_80 = false; local_88 = piVar3; if (lVar9 == 0) { local_80 = true; *(undefined8 *)(puVar13 + -8) = 0x14007e91c; FUN_14006b350(piVar3); lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14007e92d; FUN_1400d83e0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14007e952; FUN_1400d5d10(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14007e95a; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e96c; FUN_1400d8970(lVar15 + 0xc0); *plVar18 = plVar18[lVar4 + -1]; LAB_14007e974: lVar4 = lVar4 + -1; } else { *(undefined8 *)(puVar13 + -8) = 0x14007e8aa; local_80 = FUN_14006b3a0(piVar3); if (local_80) { lVar2 = *(longlong *)(lVar15 + 0x748); *(undefined8 *)(puVar13 + -8) = 0x14007e8c9; FUN_1400d83e0(lVar2,dVar19); if ((*(longlong **)(lVar15 + 0x760) != (longlong *)0x0) && (lVar2 = **(longlong **)(lVar15 + 0x760), lVar2 != 0)) { lVar2 = *(longlong *)(lVar2 + 0x168); *(undefined8 *)(puVar13 + -8) = 0x14007e8ee; FUN_1400d5d10(lVar2,dVar19,param_3,param_4); } *(undefined8 *)(puVar13 + -8) = 0x14007e8f6; FUN_14006b3e0((longlong)piVar3); local_80 = false; *(undefined8 *)(puVar13 + -8) = 0x14007e908; FUN_1400d8970(lVar15 + 0xc0); plVar18[lVar9] = plVar18[lVar4 + -1]; goto LAB_14007e974; } } lVar9 = lVar9 + 1; } while (lVar9 < lVar4); } if ((int)plVar18[-2] == 0xdddd) { *(undefined8 *)(puVar13 + -8) = 0x14007e9ae; free(plVar18 + -2); } } *(undefined8 *)(puVar13 + -8) = 0x14007e9bb; return; }