/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d0a70 FUN_1400d0a70 * Pseudocode, not original source. */ ulonglong FUN_1400d0a70(longlong *param_1,uint *param_2,undefined8 param_3,undefined8 param_4) { uint uVar1; uint uVar2; int iVar3; DWORD DVar4; DWORD DVar5; undefined8 uVar6; undefined8 uVar7; short *psVar8; longlong *plVar9; undefined **ppuVar10; int *piVar11; int *piVar12; undefined *puVar13; undefined **ppuVar14; ulonglong uVar15; undefined4 uVar16; undefined **ppuVar17; undefined *puVar18; undefined *puVar19; undefined *local_res10; undefined8 local_res18; uint local_res20 [2]; undefined *local_118; int *local_110; undefined *local_108; uint local_100; undefined8 local_f8; int local_f0; undefined *local_e8; undefined *local_e0; undefined *local_d8; undefined *local_d0; undefined *local_c8; undefined **local_c0; undefined1 local_b8; undefined *local_b0; undefined8 local_a8; undefined1 local_98 [4]; uint local_94; undefined8 local_60; local_a8 = 0xfffffffffffffffe; uVar1 = param_2[10]; uVar7 = param_3; local_res18 = param_3; if (uVar1 == 0) { FUN_1400cf890(); } uVar2 = *param_2; uVar6 = FUN_1400bd2e0(param_2,local_res20,uVar7,param_4); if ((char)uVar6 == '\0') { LAB_1400d1272: uVar15 = FUN_1400bc600((int *)param_2, (ulonglong)(uint)((int)(((int)uVar2 >> 0x1f & 7U) + uVar2) >> 3),uVar7, param_4); uVar15 = uVar15 & 0xffffffffffffff00; } else { local_60 = param_3; if (local_res20[0] == 0x7d1) { FUN_140078060(local_98); local_94 = param_2[10]; local_98[0] = (undefined1)param_2[0x10]; plVar9 = (longlong *)param_1[2]; puVar18 = PTR_u_NotifyLoginOk_1401ada88; (**(code **)(*plVar9 + 0x48))(); DVar4 = 0; if (*(char *)((longlong)param_1 + 0x19) == '\0') { if ((char)param_1[3] == '\0') { (**(code **)(*(longlong *)param_1[2] + 0x70)) ((longlong *)param_1[2],uVar1,0x7d1,PTR_u_NotifyLoginOk_1401ada88,&DAT_14015cd00 ); } } else if ((char)param_1[3] == '\0') { FUN_14006cb70(plVar9,param_2,puVar18,param_4); puVar18 = PTR_DAT_1401ac010; local_res10 = PTR_DAT_1401ac010; uVar7 = 0xfffffffe; ppuVar17 = &local_b0; plVar9 = FUN_140014170((longlong *)&local_res10,(longlong *)ppuVar17,0xfffffffe); if (puVar18 == (undefined *)0x0) { puVar18 = PTR_DAT_1401ac010; } local_res10 = puVar18; if ((undefined *)*plVar9 != puVar18) { piVar11 = (int *)FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar7,param_4); piVar12 = piVar11; local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); if (((puVar18 != (undefined *)0x0) && (puVar18 != PTR_DAT_1401ac010)) && (puVar18 + -8 != (undefined *)0x0)) { ppuVar14 = (undefined **)FUN_14006cb70(piVar12,ppuVar17,uVar7,param_4); local_c0 = ppuVar14; FUN_14006b350((int *)ppuVar14); local_b8 = 1; piVar12 = (int *)(puVar18 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(puVar18 + -8); } FUN_14006b3e0((longlong)ppuVar14); } puVar18 = (undefined *)*plVar9; if (((puVar18 != PTR_DAT_1401ac010) && (puVar18 != (undefined *)0x0)) && (puVar18 != (undefined *)0x8)) { *(int *)(puVar18 + -4) = *(int *)(puVar18 + -4) + 1; } local_res10 = puVar18; FUN_14006b3e0((longlong)piVar11); } if (((local_b0 != (undefined *)0x0) && (local_b0 != PTR_DAT_1401ac010)) && (local_b0 + -8 != (undefined *)0x0)) { piVar11 = (int *)FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar7,param_4); local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); piVar12 = (int *)(local_b0 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(local_b0 + -8); } FUN_14006b3e0((longlong)piVar11); } local_c0 = &local_e8; piVar12 = (int *)PTR_DAT_1401ac010; local_b0 = PTR_DAT_1401ac010; FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar7,param_4); local_e8 = PTR_DAT_1401ac010; if (PTR_DAT_1401ac010 == (undefined *)0x0) { local_e8 = (undefined *)0x0; } if (puVar18 != PTR_DAT_1401ac010) { piVar12 = (int *)FUN_14006cb70(piVar12,ppuVar17,uVar7,param_4); local_110 = piVar12; FUN_14006b350(piVar12); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); FUN_1400031e0((longlong *)&local_e8,ppuVar17,uVar7,param_4); if (((puVar18 != PTR_DAT_1401ac010) && (puVar18 != (undefined *)0x0)) && (puVar18 != (undefined *)0x8)) { *(int *)(puVar18 + -4) = *(int *)(puVar18 + -4) + 1; } local_e8 = puVar18; FUN_14006b3e0((longlong)piVar12); } puVar19 = PTR_u_NotifyLoginOk_1401ada88; FUN_14006cb70(piVar12,ppuVar17,uVar7,param_4); local_d8 = PTR_DAT_1401ac010; iVar3 = FUN_14006c9f0((short *)puVar19); puVar13 = FUN_140002f30((longlong *)&local_d8,iVar3); FUN_14006ca20(puVar13,puVar19,iVar3); FUN_140003010((longlong *)&local_d8); (**(code **)(*param_1 + 0x28))(param_1,0x7d1,&local_d8,&local_e8); plVar9 = (longlong *)param_1[2]; uVar7 = 0x7d1; uVar15 = (ulonglong)uVar1; puVar19 = PTR_u_NotifyLoginOk_1401ada88; (**(code **)(*plVar9 + 0x70))(); param_3 = local_res18; if (((puVar18 != (undefined *)0x0) && (puVar18 != PTR_DAT_1401ac010)) && (puVar18 + -8 != (undefined *)0x0)) { piVar11 = (int *)FUN_14006cb70(plVar9,uVar15,uVar7,puVar19); local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); piVar12 = (int *)(puVar18 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(puVar18 + -8); } FUN_14006b3e0((longlong)piVar11); param_3 = local_res18; } } if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) { local_110 = (int *)CONCAT44(local_110._4_4_,0x7d1); local_108 = PTR_u_NotifyLoginOk_1401ada88; local_100 = uVar1; local_f8 = param_3; (**(code **)(*param_1 + 0x20))(param_1,&local_110); DVar4 = GetTickCount(); } uVar7 = (**(code **)(*param_1 + 0x38))(param_1,uVar1,local_98); if ((char)uVar7 == '\0') { uVar7 = (**(code **)(*(longlong *)param_1[2] + 0x40)) ((longlong *)param_1[2],PTR_u_NotifyLoginOk_1401ada88); } if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) { local_110 = (int *)CONCAT44(local_110._4_4_,0x7d1); local_108 = PTR_u_NotifyLoginOk_1401ada88; LAB_1400d1243: local_100 = uVar1; local_f8 = param_3; DVar5 = GetTickCount(); local_f0 = DVar5 - DVar4; uVar7 = (**(code **)(*param_1 + 0x18))(param_1,&local_110); } } else { if (local_res20[0] != 0x7d2) goto LAB_1400d1272; FUN_140078060(local_98); local_94 = param_2[10]; local_98[0] = (undefined1)param_2[0x10]; uVar7 = FUN_1400bc930(param_2,&local_118,4); uVar16 = local_res10._0_4_; if ((char)uVar7 != '\0') { uVar16 = local_118._0_4_; } local_res10 = (undefined *)CONCAT44(local_res10._4_4_,uVar16); plVar9 = (longlong *)param_1[2]; puVar18 = PTR_u_NotifyLoginFailed_1401ada90; (**(code **)(*plVar9 + 0x48))(); DVar4 = 0; if (*(char *)((longlong)param_1 + 0x19) == '\0') { if ((char)param_1[3] == '\0') { (**(code **)(*(longlong *)param_1[2] + 0x70)) ((longlong *)param_1[2],uVar1,0x7d2,PTR_u_NotifyLoginFailed_1401ada90, &DAT_14015cd00); } } else if ((char)param_1[3] == '\0') { FUN_14006cb70(plVar9,param_2,puVar18,param_4); local_118 = PTR_DAT_1401ac010; psVar8 = (short *)FUN_1400789a0(local_res10._0_4_); FUN_1400141f0((longlong *)&local_118,psVar8); FUN_1400141f0((longlong *)&local_118,(short *)&DAT_14015cacc); puVar18 = local_118; iVar3 = 0; if ((local_118 != (undefined *)0x0) && (local_118 != PTR_DAT_1401ac010)) { iVar3 = *(int *)(local_118 + -8); } uVar15 = (ulonglong)(iVar3 - 2U); ppuVar17 = &local_c8; plVar9 = FUN_140014170((longlong *)&local_118,(longlong *)ppuVar17,iVar3 - 2U); if (puVar18 == (undefined *)0x0) { puVar18 = PTR_DAT_1401ac010; } local_118 = puVar18; if ((undefined *)*plVar9 != puVar18) { ppuVar10 = (undefined **)FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar15,param_4); ppuVar14 = ppuVar10; local_c0 = ppuVar10; FUN_14006b350((int *)ppuVar10); local_b8 = 1; if (((puVar18 != (undefined *)0x0) && (puVar18 != PTR_DAT_1401ac010)) && (puVar18 + -8 != (undefined *)0x0)) { piVar11 = (int *)FUN_14006cb70(ppuVar14,ppuVar17,uVar15,param_4); local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); piVar12 = (int *)(puVar18 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(puVar18 + -8); } FUN_14006b3e0((longlong)piVar11); } puVar18 = (undefined *)*plVar9; if (((puVar18 != PTR_DAT_1401ac010) && (puVar18 != (undefined *)0x0)) && (puVar18 != (undefined *)0x8)) { *(int *)(puVar18 + -4) = *(int *)(puVar18 + -4) + 1; } local_118 = puVar18; FUN_14006b3e0((longlong)ppuVar10); } if (((local_c8 != (undefined *)0x0) && (local_c8 != PTR_DAT_1401ac010)) && (local_c8 + -8 != (undefined *)0x0)) { piVar11 = (int *)FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar15,param_4); local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); piVar12 = (int *)(local_c8 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(local_c8 + -8); } FUN_14006b3e0((longlong)piVar11); } local_c0 = &local_e0; piVar12 = (int *)PTR_DAT_1401ac010; local_c8 = PTR_DAT_1401ac010; FUN_14006cb70(PTR_DAT_1401ac010,ppuVar17,uVar15,param_4); local_e0 = PTR_DAT_1401ac010; if (PTR_DAT_1401ac010 == (undefined *)0x0) { local_e0 = (undefined *)0x0; } if (puVar18 != PTR_DAT_1401ac010) { piVar12 = (int *)FUN_14006cb70(piVar12,ppuVar17,uVar15,param_4); local_110 = piVar12; FUN_14006b350(piVar12); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); FUN_1400031e0((longlong *)&local_e0,ppuVar17,uVar15,param_4); if (((puVar18 != PTR_DAT_1401ac010) && (puVar18 != (undefined *)0x0)) && (puVar18 != (undefined *)0x8)) { *(int *)(puVar18 + -4) = *(int *)(puVar18 + -4) + 1; } local_e0 = puVar18; FUN_14006b3e0((longlong)piVar12); } puVar19 = PTR_u_NotifyLoginFailed_1401ada90; FUN_14006cb70(piVar12,ppuVar17,uVar15,param_4); local_d0 = PTR_DAT_1401ac010; iVar3 = FUN_14006c9f0((short *)puVar19); puVar13 = FUN_140002f30((longlong *)&local_d0,iVar3); FUN_14006ca20(puVar13,puVar19,iVar3); FUN_140003010((longlong *)&local_d0); (**(code **)(*param_1 + 0x28))(param_1,0x7d2,&local_d0,&local_e0); plVar9 = (longlong *)param_1[2]; uVar7 = 0x7d2; uVar15 = (ulonglong)uVar1; puVar19 = PTR_u_NotifyLoginFailed_1401ada90; (**(code **)(*plVar9 + 0x70))(); param_3 = local_res18; if (((puVar18 != (undefined *)0x0) && (puVar18 != PTR_DAT_1401ac010)) && (puVar18 + -8 != (undefined *)0x0)) { piVar11 = (int *)FUN_14006cb70(plVar9,uVar15,uVar7,puVar19); local_110 = piVar11; FUN_14006b350(piVar11); local_108 = (undefined *)CONCAT71(local_108._1_7_,1); piVar12 = (int *)(puVar18 + -4); *piVar12 = *piVar12 + -1; if (*piVar12 == 0) { FUN_14006cc60(puVar18 + -8); } FUN_14006b3e0((longlong)piVar11); param_3 = local_res18; } } if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) { local_110 = (int *)CONCAT44(local_110._4_4_,0x7d2); local_108 = PTR_u_NotifyLoginFailed_1401ada90; local_100 = uVar1; local_f8 = param_3; (**(code **)(*param_1 + 0x20))(param_1,&local_110); DVar4 = GetTickCount(); } uVar7 = (**(code **)(*param_1 + 0x40))(param_1,uVar1,local_98,&local_res10); if ((char)uVar7 == '\0') { uVar7 = (**(code **)(*(longlong *)param_1[2] + 0x40)) ((longlong *)param_1[2],PTR_u_NotifyLoginFailed_1401ada90); } if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) { local_110 = (int *)CONCAT44(local_110._4_4_,0x7d2); local_108 = PTR_u_NotifyLoginFailed_1401ada90; goto LAB_1400d1243; } } uVar15 = CONCAT71((int7)((ulonglong)uVar7 >> 8),1); } return uVar15; }