/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140004f00 FUN_140004f00 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_140004f00(longlong param_1,undefined8 param_2,undefined *param_3,char *param_4) { longlong *plVar1; double dVar2; undefined1 auVar3 [16]; undefined1 auVar4 [16]; undefined1 auVar5 [16]; undefined1 auVar6 [16]; bool bVar7; _Container_base0 *p_Var8; DWORD DVar9; DWORD DVar10; int iVar11; _Container_base0 *p_Var12; _Container_base0 *p_Var13; ulonglong uVar14; undefined8 *puVar15; undefined8 uVar16; longlong *plVar17; longlong *plVar18; longlong *plVar19; longlong *plVar20; char *pcVar21; longlong lVar22; short **ppsVar23; char *_Src; undefined *puVar24; char *pcVar25; undefined *puVar26; char *pcVar27; longlong lVar28; undefined4 uVar29; undefined4 uVar30; undefined4 uVar31; undefined4 uVar32; undefined4 uVar33; undefined1 auStack_488 [32]; longlong *local_468; longlong *local_460; _Container_base0 *local_458; _Container_base0 *local_450; _Container_base0 *local_448; longlong *local_440; longlong local_438; _Container_base0 *local_430; longlong *local_428; longlong *local_420; undefined4 local_418 [2]; undefined4 local_410 [2]; undefined4 local_408 [2]; void *local_400; longlong local_3f8; undefined8 local_3f0; undefined8 *local_3e0; undefined8 *local_3d8; undefined8 *local_3d0; undefined8 *local_3c8; undefined8 *local_3c0; undefined8 *local_3b8; undefined8 *local_3b0; undefined8 *local_3a8; undefined8 *local_3a0; _Container_base0 *local_398; undefined1 local_390; int *local_388; undefined1 local_380; char *local_378; DWORD local_370; undefined8 local_368; char *local_360; DWORD local_358; undefined2 local_348; undefined1 local_346 [158]; undefined1 local_2a8 [160]; short *local_208; undefined2 local_200; undefined6 uStack_1fe; undefined8 local_1f0; ulonglong local_1e8; undefined2 local_1d8; undefined6 uStack_1d6; undefined8 local_1c8; ulonglong local_1c0; short *local_1a8; undefined2 local_1a0; undefined6 uStack_19e; undefined8 local_190; ulonglong local_188; undefined2 local_178; undefined6 uStack_176; undefined8 local_168; ulonglong local_160; short *local_148; undefined2 local_140; undefined6 uStack_13e; undefined8 local_130; ulonglong local_128; undefined2 local_118; undefined6 uStack_116; undefined8 local_108; ulonglong local_100; short *local_e8; undefined2 local_e0; undefined6 uStack_de; undefined8 local_d0; ulonglong local_c8; undefined2 local_b8; undefined6 uStack_b6; undefined8 local_a8; ulonglong local_a0; ulonglong local_88; local_368 = 0xfffffffffffffffe; local_88 = DAT_1401ac5a0 ^ (ulonglong)auStack_488; local_438 = param_1; FUN_14000a810(L"# Msg Server Startup #\n\n",param_2,param_3,param_4); CoInitialize((LPVOID)0x0); FUN_14000a950(L"+ Prepare Startup\n",param_2,param_3,param_4); local_428 = operator_new(0x148); p_Var13 = (_Container_base0 *)0x0; p_Var12 = p_Var13; if (local_428 != (undefined8 *)0x0) { p_Var12 = (_Container_base0 *)FUN_140006690(local_428,param_2,param_3,param_4); } if (p_Var12 == (_Container_base0 *)0x0) { local_440 = (longlong *)0x0; } else { local_440 = (longlong *)FUN_14006cbf0(0x10); local_440[1] = 1; *local_440 = (longlong)p_Var12; } local_448 = operator_new(0xf0); p_Var12 = p_Var13; if (local_448 != (_Container_base0 *)0x0) { if ((local_440 != (longlong *)0x0) && (*local_440 != 0)) { p_Var12 = (_Container_base0 *)(*local_440 + 0x28); } p_Var12 = (_Container_base0 *)FUN_140064310((undefined8 *)local_448,p_Var12,param_3,param_4); } if (p_Var12 == (_Container_base0 *)0x0) { local_458 = (_Container_base0 *)0x0; } else { p_Var13 = (_Container_base0 *)FUN_14006cbf0(0x48); local_448 = p_Var13; local_430 = p_Var13; if (p_Var13 != (_Container_base0 *)0x0) { uVar14 = FUN_140079250(); param_3 = (undefined *)CONCAT71((int7)((ulonglong)param_3 >> 8),1); FUN_14006b270((undefined4 *)p_Var13,uVar14 & 0xffffffff,param_3,param_4); } local_458 = p_Var13; FUN_14006b350((int *)p_Var13); *(longlong *)(p_Var13 + 0x40) = 1; *(_Container_base0 **)(p_Var13 + 0x38) = p_Var12; FUN_14006b3e0((longlong)p_Var13); } puVar15 = operator_new(0x20); if (puVar15 == (undefined8 *)0x0) { local_468 = (longlong *)0x0; } else { *puVar15 = 0; puVar15[1] = 0; puVar15[2] = 0; local_468 = (longlong *)FUN_14006cbf0(0x10); local_468[1] = 1; *local_468 = (longlong)puVar15; } plVar17 = local_468; local_420 = local_468; puVar15 = operator_new(0x20); if (puVar15 == (undefined8 *)0x0) { local_460 = (longlong *)0x0; } else { *puVar15 = 0; puVar15[1] = 0; puVar15[2] = 0; local_460 = (longlong *)FUN_14006cbf0(0x10); local_460[1] = 1; *local_460 = (longlong)puVar15; } plVar20 = local_460; local_430 = (_Container_base0 *)local_460; puVar15 = operator_new(0x20); if (puVar15 == (undefined8 *)0x0) { local_450 = (_Container_base0 *)0x0; } else { *puVar15 = 0; puVar15[1] = 0; puVar15[2] = 0; local_450 = (_Container_base0 *)FUN_14006cbf0(0x10); *(longlong *)(local_450 + 8) = 1; *(undefined8 **)local_450 = puVar15; } p_Var12 = local_450; local_448 = local_450; puVar15 = operator_new(0x20); if (puVar15 == (undefined8 *)0x0) { local_428 = (longlong *)0x0; } else { *puVar15 = 0; puVar15[1] = 0; puVar15[2] = 0; local_428 = (longlong *)FUN_14006cbf0(0x10); local_428[1] = 1; *local_428 = (longlong)puVar15; } plVar1 = local_428; lVar22 = 0; lVar28 = lVar22; if (p_Var13 != (_Container_base0 *)0x0) { lVar28 = *(longlong *)(p_Var13 + 0x38); } *(longlong *)(param_1 + 0x30) = lVar28; lVar28 = lVar22; if (local_440 != (longlong *)0x0) { lVar28 = *local_440; } *(longlong *)(param_1 + 0x58) = lVar28; lVar28 = lVar22; if (plVar17 != (longlong *)0x0) { lVar28 = *plVar17; } *(longlong *)(param_1 + 0x60) = lVar28; lVar28 = lVar22; if (plVar20 != (longlong *)0x0) { lVar28 = *plVar20; } *(longlong *)(param_1 + 0x68) = lVar28; lVar28 = lVar22; if (p_Var12 != (_Container_base0 *)0x0) { lVar28 = *(longlong *)p_Var12; } *(longlong *)(param_1 + 0x70) = lVar28; lVar28 = lVar22; if (local_428 != (longlong *)0x0) { lVar28 = *local_428; } *(longlong *)(param_1 + 0x78) = lVar28; local_408[0] = 1; *(undefined4 *)(param_1 + 8) = 1; printf("STEP : AGENT \n"); lVar28 = *(longlong *)(param_1 + 0x30); if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) { param_4 = (char *)local_408; param_3 = &DAT_1401ac5d0; lVar22 = 1; (**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0))(); } if ((*(longlong *)(param_1 + 0x30) == 0) || (uVar16 = FUN_140064850(*(longlong *)(param_1 + 0x30),lVar22,param_3,(longlong)param_4), plVar19 = local_428, (char)uVar16 != '\0')) { FUN_140009330(*(ulonglong **)(param_1 + 0x60),*(uint *)(DAT_1401bd038 + 0x144),0xc, (longlong)param_4); FUN_140009330(*(ulonglong **)(param_1 + 0x68),*(uint *)(DAT_1401bd038 + 0x144),0x11, (longlong)param_4); FUN_140009330(*(ulonglong **)(param_1 + 0x70),*(uint *)(DAT_1401bd038 + 0x144),0x12, (longlong)param_4); uVar16 = 0x13; ppsVar23 = (short **)(ulonglong)*(uint *)(DAT_1401bd038 + 0x144); FUN_140009330(*(ulonglong **)(param_1 + 0x78),*(uint *)(DAT_1401bd038 + 0x144),0x13, (longlong)param_4); FUN_140006b20(*(longlong *)(param_1 + 0x58),ppsVar23,uVar16,(longlong)param_4); *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0xa0) = *(undefined8 *)(param_1 + 0x30); local_418[0] = 3; *(undefined4 *)(param_1 + 8) = 3; printf("STEP : DB_LOAD \n"); lVar28 = *(longlong *)(param_1 + 0x30); if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) { param_4 = (char *)local_418; ppsVar23 = (short **)0x1; (**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0)) ((longlong *)(lVar28 + 0x68),1,&DAT_1401ac5d0); } local_410[0] = 4; *(undefined4 *)(param_1 + 8) = 4; printf("STEP : SESSION_CONNECT \n"); lVar28 = *(longlong *)(param_1 + 0x30); if ((lVar28 != 0) && (*(char *)(lVar28 + 0x1a) != '\0')) { param_4 = (char *)local_410; ppsVar23 = (short **)0x1; (**(code **)(*(longlong *)(lVar28 + 0x68) + 0xb0)) ((longlong *)(lVar28 + 0x68),1,&DAT_1401ac5d0); } local_e8 = (short *)0x0; local_c8 = 7; local_d0 = 0; local_e0 = 0; local_a0 = 7; local_a8 = 0; local_b8 = 0; if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) { auVar3._8_8_ = 0; auVar3._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0); ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xc)) % auVar3,0); local_3e0 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8); for (local_3d8 = (undefined8 *)*local_3e0; local_3d8 != (undefined8 *)0x0; local_3d8 = (undefined8 *)*local_3d8) { if (*(char *)(local_3d8 + 1) == '\f') { if (local_3d8 != (undefined8 *)0x0) goto LAB_140005542; break; } } } local_3e0 = (undefined8 *)0x0; local_3d8 = (undefined8 *)0x0; LAB_140005542: if ((local_3d8 != (undefined8 *)0x0) && (puVar15 = (undefined8 *)local_3d8[2], puVar15 != (undefined8 *)local_3d8[3])) { local_e8 = (short *)*puVar15; FUN_140001750((longlong *)&local_e0,puVar15 + 1,0,0xffffffffffffffff); param_4 = (char *)0xffffffffffffffff; uVar14 = 0; FUN_140001750((longlong *)&local_b8,puVar15 + 6,0,0xffffffffffffffff); plVar19 = (longlong *)0x0; plVar18 = plVar19; if (plVar17 != (longlong *)0x0) { plVar18 = (longlong *)*plVar17; } ppsVar23 = &local_e8; FUN_1400096b0(plVar18,ppsVar23,uVar14,param_4); if (plVar17 != (longlong *)0x0) { plVar19 = (longlong *)*plVar17; } FUN_140009b10(plVar19,(wchar_t *)ppsVar23,uVar14,param_4); } if (7 < local_a0) { operator_delete((void *)CONCAT62(uStack_b6,local_b8)); } local_a0 = 7; local_a8 = 0; local_b8 = 0; if (7 < local_c8) { operator_delete((void *)CONCAT62(uStack_de,local_e0)); } local_c8 = 7; local_d0 = 0; local_e0 = 0; local_1a8 = (short *)0x0; local_188 = 7; local_190 = 0; local_1a0 = 0; local_160 = 7; local_168 = 0; local_178 = 0; if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) { auVar4._8_8_ = 0; auVar4._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0); ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x11)) % auVar4,0); local_3a8 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8); for (local_3a0 = (undefined8 *)*local_3a8; local_3a0 != (undefined8 *)0x0; local_3a0 = (undefined8 *)*local_3a0) { if (*(char *)(local_3a0 + 1) == '\x11') { if (local_3a0 != (undefined8 *)0x0) goto LAB_1400056c2; break; } } } local_3a8 = (undefined8 *)0x0; local_3a0 = (undefined8 *)0x0; LAB_1400056c2: if ((local_3a0 != (undefined8 *)0x0) && (puVar15 = (undefined8 *)local_3a0[2], puVar15 != (undefined8 *)local_3a0[3])) { local_1a8 = (short *)*puVar15; FUN_140001750((longlong *)&local_1a0,puVar15 + 1,0,0xffffffffffffffff); param_4 = (char *)0xffffffffffffffff; uVar14 = 0; FUN_140001750((longlong *)&local_178,puVar15 + 6,0,0xffffffffffffffff); plVar17 = (longlong *)0x0; plVar19 = plVar17; if (plVar20 != (longlong *)0x0) { plVar19 = (longlong *)*plVar20; } ppsVar23 = &local_1a8; FUN_1400096b0(plVar19,ppsVar23,uVar14,param_4); if (plVar20 != (longlong *)0x0) { plVar17 = (longlong *)*plVar20; } FUN_140009b10(plVar17,(wchar_t *)ppsVar23,uVar14,param_4); } if (7 < local_160) { operator_delete((void *)CONCAT62(uStack_176,local_178)); } local_160 = 7; local_168 = 0; local_178 = 0; if (7 < local_188) { operator_delete((void *)CONCAT62(uStack_19e,local_1a0)); } local_188 = 7; local_190 = 0; local_1a0 = 0; local_208 = (short *)0x0; local_1e8 = 7; local_1f0 = 0; local_200 = 0; local_1c0 = 7; local_1c8 = 0; local_1d8 = 0; if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) { auVar5._8_8_ = 0; auVar5._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0); ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x12)) % auVar5,0); local_3b8 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8); for (local_3b0 = (undefined8 *)*local_3b8; local_3b0 != (undefined8 *)0x0; local_3b0 = (undefined8 *)*local_3b0) { if (*(char *)(local_3b0 + 1) == '\x12') { if (local_3b0 != (undefined8 *)0x0) goto LAB_140005842; break; } } } local_3b8 = (undefined8 *)0x0; local_3b0 = (undefined8 *)0x0; LAB_140005842: if ((local_3b0 != (undefined8 *)0x0) && (puVar15 = (undefined8 *)local_3b0[2], puVar15 != (undefined8 *)local_3b0[3])) { local_208 = (short *)*puVar15; FUN_140001750((longlong *)&local_200,puVar15 + 1,0,0xffffffffffffffff); param_4 = (char *)0xffffffffffffffff; uVar16 = 0; FUN_140001750((longlong *)&local_1d8,puVar15 + 6,0,0xffffffffffffffff); plVar17 = (longlong *)0x0; plVar20 = plVar17; if (p_Var12 != (_Container_base0 *)0x0) { plVar20 = *(longlong **)p_Var12; } ppsVar23 = &local_208; FUN_1400096b0(plVar20,ppsVar23,uVar16,param_4); if (p_Var12 != (_Container_base0 *)0x0) { plVar17 = *(longlong **)p_Var12; } FUN_140009890(plVar17,(undefined **)ppsVar23,uVar16,param_4); } if (7 < local_1c0) { operator_delete((void *)CONCAT62(uStack_1d6,local_1d8)); } local_1c0 = 7; local_1c8 = 0; local_1d8 = 0; if (7 < local_1e8) { operator_delete((void *)CONCAT62(uStack_1fe,local_200)); } local_1e8 = 7; local_1f0 = 0; local_200 = 0; local_148 = (short *)0x0; local_128 = 7; local_130 = 0; local_140 = 0; local_100 = 7; local_108 = 0; local_118 = 0; if (*(longlong *)(DAT_1401bd038 + 0x1c8) != 0) { auVar6._8_8_ = 0; auVar6._0_8_ = *(ulonglong *)(DAT_1401bd038 + 0x1b0); ppsVar23 = SUB168((ZEXT816(0) << 0x40 | ZEXT816(0x13)) % auVar6,0); local_3d0 = (undefined8 *)(*(longlong *)(DAT_1401bd038 + 0x1a8) + (longlong)ppsVar23 * 8); for (local_3c8 = (undefined8 *)*local_3d0; local_3c8 != (undefined8 *)0x0; local_3c8 = (undefined8 *)*local_3c8) { if (*(char *)(local_3c8 + 1) == '\x13') { if (local_3c8 != (undefined8 *)0x0) goto LAB_1400059c2; break; } } } local_3d0 = (undefined8 *)0x0; local_3c8 = (undefined8 *)0x0; LAB_1400059c2: if ((local_3c8 != (undefined8 *)0x0) && (puVar15 = (undefined8 *)local_3c8[2], puVar15 != (undefined8 *)local_3c8[3])) { local_148 = (short *)*puVar15; FUN_140001750((longlong *)&local_140,puVar15 + 1,0,0xffffffffffffffff); param_4 = (char *)0xffffffffffffffff; uVar16 = 0; FUN_140001750((longlong *)&local_118,puVar15 + 6,0,0xffffffffffffffff); plVar17 = (longlong *)0x0; plVar20 = plVar17; if (plVar1 != (longlong *)0x0) { plVar20 = (longlong *)*plVar1; } ppsVar23 = &local_148; FUN_1400096b0(plVar20,ppsVar23,uVar16,param_4); if (plVar1 != (longlong *)0x0) { plVar17 = (longlong *)*plVar1; } FUN_140009890(plVar17,(undefined **)ppsVar23,uVar16,param_4); } plVar17 = (longlong *)0x0; uVar14 = local_100; if (7 < local_100) { operator_delete((void *)CONCAT62(uStack_116,local_118)); uVar14 = local_100; } local_100 = 7; local_108 = 0; local_118 = 0; if (7 < local_128) { operator_delete((void *)CONCAT62(uStack_13e,local_140)); } local_128 = 7; local_130 = 0; local_140 = 0; *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x80) = *(undefined8 *)(param_1 + 0x60); *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x88) = *(undefined8 *)(param_1 + 0x68); *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x90) = *(undefined8 *)(param_1 + 0x70); *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x98) = *(undefined8 *)(param_1 + 0x78); FUN_14000a810(L"\n",ppsVar23,uVar14,param_4); FUN_14000a810(L"# Msg Server Running... #\n",ppsVar23,uVar14,param_4); puVar15 = operator_new(0x18); if (puVar15 != (undefined8 *)0x0) { plVar17 = FUN_140118ee0(puVar15); } plVar20 = DAT_1401bd030; if ((undefined8 *)DAT_1401bd030[2] != (undefined8 *)0x0) { (*(code *)**(undefined8 **)DAT_1401bd030[2])(); } plVar20[2] = (longlong)plVar17; if (plVar17 != (longlong *)0x0) { lVar28 = (**(code **)(*plVar17 + 8))(plVar17); plVar20[6] = lVar28; plVar20[7] = lVar28; } plVar20[0x12] = 0x3ff0000000000000; puVar15 = operator_new(0x28); local_3c0 = puVar15; if (puVar15 == (undefined8 *)0x0) { puVar15 = (undefined8 *)0x0; } else { *puVar15 = Magi::Timer::vftable; plVar17 = DAT_1401bd030; puVar15[1] = DAT_1401bd030; puVar15[2] = 0; puVar15[3] = 0; *(undefined1 *)(puVar15 + 4) = 0; *(undefined4 *)((longlong)puVar15 + 0x24) = 0x3f800000; (**(code **)(*plVar17 + 0x10))(); } lVar28 = local_438; *(undefined8 **)(local_438 + 0x48) = puVar15; local_348 = 0; memset(local_346,0,0x9e); puVar26 = (undefined *)0xa0; memset(local_2a8,0,0xa0); uVar29 = 0; uVar30 = 0; _Src = (char *)0x0; if (p_Var13 != (_Container_base0 *)0x0) { _Src = *(char **)(p_Var13 + 0x38); } FUN_140001cd0(lVar28,_Src); plVar17 = (longlong *)(lVar28 + 0x60); lVar22 = 4; do { iVar11 = *(int *)(DAT_1401bd038 + 0x144); pcVar25 = (char *)0x0; if (0 < (longlong)iVar11) { do { if ((longlong *)*plVar17 != (longlong *)0x0) { _Src = *(char **)(*(longlong *)*plVar17 + (longlong)pcVar25 * 8); FUN_140001cd0(lVar28,_Src); } pcVar25 = pcVar25 + 1; } while ((longlong)pcVar25 < (longlong)iVar11); } plVar17 = plVar17 + 1; lVar22 = lVar22 + -1; } while (lVar22 != 0); local_3c0 = (undefined8 *)CONCAT44(local_3c0._4_4_,5); *(undefined4 *)(lVar28 + 8) = 5; if (DAT_1401bcf04 != 0) { printf("********************************\n"); DVar9 = timeGetTime(); _Src = (char *)((ulonglong)(DVar9 - DAT_1401bcf04) / 1000); printf("** Server Load Time : %u sec\n"); printf("********************************\n"); } printf("STEP : SERVER_RUN \n"); lVar22 = *(longlong *)(lVar28 + 0x30); if ((lVar22 != 0) && (*(char *)(lVar22 + 0x1a) != '\0')) { param_4 = (char *)&local_3c0; puVar26 = &DAT_1401ac5d0; _Src = (char *)0x1; (**(code **)(*(longlong *)(lVar22 + 0x68) + 0xb0))(); } puVar15 = (undefined8 *)(lVar28 + 0x60); pcVar25 = (char *)0x0; uVar31 = uVar29; uVar33 = uVar30; while ((DAT_1401bcf14 == 0 && (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x30) == '\0'))) { if (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x34) != '\0') { lVar22 = *(longlong *)(lVar28 + 0x30); if (lVar22 != 0) { printf("Server Lock Check Succeed !!!\n"); puVar26 = &DAT_1401ac5d0; _Src = (char *)0x1; (**(code **)(*(longlong *)(lVar22 + 0x68) + 0x70))(); } *(undefined1 *)(*(longlong *)(lVar28 + 0x58) + 0x34) = 0; } FUN_1401192a0((longlong)DAT_1401bd030); dVar2 = *(double *)(*(longlong *)(lVar28 + 0x48) + 0x10); local_360 = "DBCSessionManager->Process"; DVar9 = timeGetTime(); local_358 = DVar9; if ((longlong *)*puVar15 != (longlong *)0x0) { FUN_140009500((longlong *)*puVar15,dVar2); } if (*(longlong **)(lVar28 + 0x68) != (longlong *)0x0) { FUN_140009500(*(longlong **)(lVar28 + 0x68),dVar2); } DVar10 = timeGetTime(); if (0x32 < DVar10 - DVar9) { param_4 = "DBCSessionManager->Process"; puVar26 = (undefined *)(ulonglong)(DVar10 - DVar9); _Src = "% 9d [ ms ] %s\n"; FUN_14011b2e0(DAT_1401ba9e8,"% 9d [ ms ] %s\n",puVar26,"DBCSessionManager->Process"); } local_378 = "AgentSession->Process"; local_370 = timeGetTime(); if ((*(longlong *)(lVar28 + 0x30) != 0) && (_Src = DAT_1401bd038, DAT_1401bd038[0x150] != '\0')) { FUN_140002540(*(longlong *)(lVar28 + 0x30),dVar2); lVar22 = *(longlong *)(lVar28 + 0x30); if ((lVar22 != 0) && ((*(char *)(lVar22 + 0x1a) != '\0' && (*(double *)(lVar28 + 0x38) + 1.0 <= dVar2)))) { *(double *)(lVar28 + 0x38) = dVar2; FUN_140064b50(lVar22,*(undefined4 *)(*(longlong *)(lVar28 + 0x58) + 0x10c)); } local_400 = (void *)0x0; local_3f8 = 0; local_3f0 = 0; lVar22 = *(longlong *)(lVar28 + 0x30); local_388 = (int *)(lVar22 + 0xb8); FUN_14006b350(local_388); local_380 = 1; FUN_140064d80((longlong *)&local_400,(longlong *)(lVar22 + 0x98)); _Src = *(char **)(lVar22 + 0xa0); pcVar21 = *(char **)(lVar22 + 0x98); if (pcVar21 != _Src) { puVar26 = (undefined *)0x0; memmove(pcVar21,_Src,0); *(char **)(lVar22 + 0xa0) = pcVar21; lVar28 = local_438; } FUN_14006b3e0((longlong)local_388); local_380 = 0; pcVar21 = pcVar25; pcVar27 = pcVar25; if (local_3f8 - (longlong)local_400 >> 2 != 0) { do { param_4 = (char *)(ulonglong)*(uint *)((longlong)local_400 + (longlong)pcVar21); iVar11 = (int)(*(longlong *)(lVar28 + 0x18) - *(longlong *)(lVar28 + 0x10) >> 3); puVar26 = (undefined *)(longlong)iVar11; _Src = pcVar25; if (0 < iVar11) { plVar17 = *(longlong **)(lVar28 + 0x10); do { if ((*plVar17 != 0) && (*(uint *)(*plVar17 + 0x3c) == *(uint *)((longlong)local_400 + (longlong)pcVar21) )) { *(undefined1 *)((*(longlong **)(lVar28 + 0x10))[(longlong)_Src] + 0x1c) = 1; break; } _Src = _Src + 1; plVar17 = plVar17 + 1; } while ((longlong)_Src < (longlong)puVar26); } pcVar27 = (char *)(ulonglong)((int)pcVar27 + 1); pcVar21 = pcVar21 + 4; } while (pcVar27 < (char *)(local_3f8 - (longlong)local_400 >> 2)); } if (local_400 != (void *)0x0) { std::_Container_base0::_Orphan_all((_Container_base0 *)&local_400); operator_delete(local_400); } local_400 = (void *)0x0; local_3f8 = 0; local_3f0 = 0; } DVar9 = timeGetTime(); if (0x32 < DVar9 - local_370) { param_4 = "AgentSession->Process"; puVar26 = (undefined *)(ulonglong)(DVar9 - local_370); _Src = "% 9d [ ms ] %s\n"; FUN_14011b2e0(DAT_1401ba9e8,"% 9d [ ms ] %s\n",puVar26,"AgentSession->Process"); } if (DAT_1401bcf0f != '\0') { printf("RetryConnectSession\n"); iVar11 = (int)(*(longlong *)(lVar28 + 0x18) - *(longlong *)(lVar28 + 0x10) >> 3); _Src = (char *)(longlong)iVar11; pcVar21 = pcVar25; if (0 < iVar11) { do { if (*(longlong *)(*(longlong *)(lVar28 + 0x10) + (longlong)pcVar21 * 8) != 0) { *(undefined1 *) (*(longlong *)(*(longlong *)(lVar28 + 0x10) + (longlong)pcVar21 * 8) + 0x1c) = 1; } pcVar21 = pcVar21 + 1; } while ((longlong)pcVar21 < (longlong)_Src); } DAT_1401bcf0f = DAT_1401bcf0f == '\0'; } uVar32 = (undefined4)((ulonglong)dVar2 >> 0x20); if (0.10000000149011612 <= dVar2 - (double)CONCAT44(uVar33,uVar31)) { DAT_1401bcf1c = DAT_1401bcf1c + 1; FUN_140004960(lVar28); uVar31 = SUB84(dVar2,0); uVar33 = uVar32; } if (1.0 <= dVar2 - (double)CONCAT44(uVar30,uVar29)) { if (DAT_1401bcf18 != 0) { puVar26 = (undefined *)(ulonglong)*(uint *)(*(longlong *)(lVar28 + 0x58) + 0x10c); _Src = (char *)(ulonglong)DAT_1401bcf1c; printf("FPS : [%d], Connect[%d]\n"); } DAT_1401bcf20 = DAT_1401bcf1c; DAT_1401bcf1c = 0; uVar29 = SUB84(dVar2,0); uVar30 = uVar32; } if (DAT_1401bcf10 != 0) { DAT_1401bcf10 = 0; wprintf(L"-MSG SERVER [CODE:%d]----------------------------------------------------\n", (ulonglong)*(uint *)(DAT_1401bd038 + 0x154)); lVar22 = *(longlong *)(lVar28 + 0x58); puVar24 = *(undefined **)(lVar22 + 0x48); if (*(undefined **)(lVar22 + 0x48) == (undefined *)0x0) { puVar24 = PTR_DAT_1401ac010; } puVar26 = (undefined *)(ulonglong)*(uint *)(lVar22 + 0x50); wprintf(L"PRIVATE NETWORK : ADDRESS[ %s ] PORT[ %d ]\n",puVar24); _Src = (char *)(ulonglong)*(uint *)(lVar22 + 0x54); if ((0 < (int)*(uint *)(lVar22 + 0x54)) && (puVar26 = (undefined *)(ulonglong)*(uint *)(lVar22 + 0x58), *(uint *)(lVar22 + 0x58) != 0)) { wprintf(L"UDP : PORT [ %d ] COUNT [ %d ]\n"); } FUN_140001d70(lVar28); } *(double *)(lVar28 + 0x50) = dVar2; Sleep(1); } FUN_14000a950(L"+ Prepare Stop\n",_Src,puVar26,param_4); plVar17 = local_420; p_Var12 = local_430; p_Var13 = local_448; lVar22 = *(longlong *)(lVar28 + 0x58); puVar15 = *(undefined8 **)(lVar22 + 0x40); if (puVar15 != (undefined8 *)0x0) { _Src = (char *)0x1; (**(code **)*puVar15)(); } *(undefined8 *)(lVar22 + 0x40) = 0; CoUninitialize(); FUN_14000a810(L"# Msg Server Stoped... #\n",_Src,puVar26,param_4); if (*(char *)(*(longlong *)(lVar28 + 0x58) + 0x30) == '\0') { FUN_14000a950(L"Press any key... \n",_Src,puVar26,param_4); getchar(); } plVar20 = local_428; if (plVar1 != (longlong *)0x0) { plVar1 = plVar1 + 1; *plVar1 = *plVar1 + -1; plVar17 = local_468; p_Var12 = (_Container_base0 *)local_460; p_Var13 = local_450; if (*plVar1 == 0) { p_Var13 = (_Container_base0 *)*local_428; local_448 = p_Var13; if (p_Var13 != (_Container_base0 *)0x0) { FUN_140009470((longlong *)p_Var13); if (DAT_1401bcf28 != (void *)0x0) { operator_delete__(DAT_1401bcf28); DAT_1401bcf28 = (void *)0x0; } if (*(longlong *)p_Var13 != 0) { std::_Container_base0::_Orphan_all(p_Var13); operator_delete(*(void **)p_Var13); } *(undefined8 *)p_Var13 = 0; *(undefined8 *)(p_Var13 + 8) = 0; *(undefined8 *)(p_Var13 + 0x10) = 0; operator_delete(p_Var13); } FUN_14006cc60(plVar20); plVar17 = local_468; p_Var12 = (_Container_base0 *)local_460; p_Var13 = local_450; } } p_Var8 = local_450; if (p_Var13 != (_Container_base0 *)0x0) { p_Var13 = p_Var13 + 8; *(longlong *)p_Var13 = *(longlong *)p_Var13 + -1; plVar17 = local_468; p_Var12 = (_Container_base0 *)local_460; if (*(longlong *)p_Var13 == 0) { FUN_140006460((undefined8 *)local_450); FUN_14006cc60(p_Var8); plVar17 = local_468; p_Var12 = (_Container_base0 *)local_460; } } plVar20 = local_460; if (p_Var12 != (_Container_base0 *)0x0) { plVar1 = (longlong *)((longlong)p_Var12 + 8); *plVar1 = *plVar1 + -1; plVar17 = local_468; if (*plVar1 == 0) { FUN_140006460(local_460); FUN_14006cc60(plVar20); plVar17 = local_468; } } plVar20 = local_468; if (plVar17 != (longlong *)0x0) { plVar17 = plVar17 + 1; *plVar17 = *plVar17 + -1; if (*plVar17 == 0) { FUN_140006460(local_468); FUN_14006cc60(plVar20); } } FUN_140006360((longlong *)&local_458,_Src,puVar26,param_4); } else { if (plVar1 != (longlong *)0x0) { plVar1 = plVar1 + 1; *plVar1 = *plVar1 + -1; p_Var13 = local_458; plVar17 = local_468; plVar20 = local_460; p_Var12 = local_450; if (*plVar1 == 0) { FUN_140006460(local_428); FUN_14006cc60(plVar19); p_Var13 = local_458; plVar17 = local_468; plVar20 = local_460; p_Var12 = local_450; } } p_Var8 = local_450; if (p_Var12 != (_Container_base0 *)0x0) { p_Var12 = p_Var12 + 8; *(longlong *)p_Var12 = *(longlong *)p_Var12 + -1; p_Var13 = local_458; plVar17 = local_468; plVar20 = local_460; if (*(longlong *)p_Var12 == 0) { FUN_140006460((undefined8 *)local_450); FUN_14006cc60(p_Var8); p_Var13 = local_458; plVar17 = local_468; plVar20 = local_460; } } plVar1 = local_460; if (plVar20 != (longlong *)0x0) { plVar20 = plVar20 + 1; *plVar20 = *plVar20 + -1; p_Var13 = local_458; plVar17 = local_468; if (*plVar20 == 0) { FUN_140006460(local_460); FUN_14006cc60(plVar1); p_Var13 = local_458; plVar17 = local_468; } } plVar20 = local_468; if (plVar17 != (longlong *)0x0) { plVar17 = plVar17 + 1; *plVar17 = *plVar17 + -1; p_Var13 = local_458; if (*plVar17 == 0) { FUN_140006460(local_468); FUN_14006cc60(plVar20); p_Var13 = local_458; } } if (p_Var13 != (_Container_base0 *)0x0) { local_398 = p_Var13; FUN_14006b350((int *)p_Var13); bVar7 = true; local_390 = 1; p_Var12 = p_Var13 + 0x40; *(longlong *)p_Var12 = *(longlong *)p_Var12 + -1; if (*(longlong *)p_Var12 == 0) { FUN_14006b3e0((longlong)p_Var13); bVar7 = false; local_390 = 0; local_448 = p_Var13; if (*(undefined8 **)(p_Var13 + 0x38) != (undefined8 *)0x0) { lVar22 = 1; (**(code **)**(undefined8 **)(p_Var13 + 0x38))(); } FUN_14006b400((undefined4 *)p_Var13,lVar22,param_3,param_4); FUN_14006cc60(p_Var13); } if (bVar7) { FUN_14006b3e0((longlong)p_Var13); local_390 = 0; } } } plVar17 = local_440; if (local_440 != (longlong *)0x0) { plVar20 = local_440 + 1; *plVar20 = *plVar20 + -1; if (*plVar20 == 0) { puVar15 = (undefined8 *)*local_440; if (puVar15 != (undefined8 *)0x0) { (**(code **)*puVar15)(puVar15,1); } FUN_14006cc60(plVar17); } } return 0; }