/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400da710 FUN_1400da710 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1400da710(longlong param_1,short **param_2,undefined *param_3,ulonglong param_4) { int *piVar1; int iVar2; int iVar3; int iVar4; int iVar5; int *piVar6; short *psVar7; uint uVar8; int iVar9; double dVar10; undefined1 auStack_ab8 [32]; short *local_a98; short *local_a90; int *local_a88; undefined1 local_a80; int local_a7c; int *local_a78; undefined1 local_a70; undefined8 local_a68; undefined8 local_a58 [324]; ulonglong local_38; local_a68 = 0xfffffffffffffffe; local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_ab8; FUN_1400766e0(local_a58,param_2,param_3,param_4); FUN_140076800((longlong)local_a58); if (*(char *)(param_1 + 0x1040) == '\0') { do { dVar10 = (double)FUN_140076d50((longlong)local_a58); piVar1 = (int *)(param_1 + 0x28); iVar9 = 0; iVar5 = 0; param_3 = (undefined *)0x0; if (dVar10 <= 0.9) { piVar6 = piVar1; local_a88 = piVar1; local_a7c = FUN_1400da540(piVar1); local_a80 = 1; param_2 = (short **)(param_1 + 0x80); uVar8 = *(uint *)param_2; param_4 = (ulonglong)uVar8; do { if (uVar8 != *(uint *)param_2) { FUN_14006cb70(piVar6,param_2,param_3,param_4); local_a98 = (short *)PTR_DAT_1401ac010; iVar2 = FUN_14006c9f0((short *)&DAT_140148290); iVar4 = iVar5; if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_a98 + -4); } iVar3 = iVar2; if (((iVar2 <= iVar4) && (iVar3 = iVar9, local_a98 != (short *)0x0)) && (local_a98 != (short *)PTR_DAT_1401ac010)) { iVar3 = *(int *)(local_a98 + -4); } iVar9 = 1; if (1 < iVar3) { iVar9 = iVar3; } iVar4 = iVar5; if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_a98 + -4); } if (iVar4 < iVar9) { FUN_140002d60((longlong *)&local_a98,iVar9); } FUN_140002e40((longlong *)&local_a98); psVar7 = local_a98; if (local_a98 == (short *)0x0) { psVar7 = (short *)PTR_DAT_1401ac010; } FUN_14006ca20(psVar7,&DAT_140148290,iVar2); psVar7 = local_a98; if (local_a98 == (short *)0x0) { psVar7 = (short *)PTR_DAT_1401ac010; } iVar4 = FUN_14006c9f0(psVar7); param_3 = PTR_DAT_1401ac010; iVar9 = 0; if (0 < iVar4) { iVar9 = iVar4; } iVar4 = iVar5; if ((local_a98 != (short *)0x0) && (local_a98 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_a98 + -4); } if ((iVar9 < iVar4) || (iVar9 = iVar5, local_a98 == (short *)0x0)) { LAB_1400daa7e: if (((local_a98 != (short *)PTR_DAT_1401ac010) && (local_a98 != (short *)0x0)) && ((int *)(local_a98 + -4) != (int *)0x0)) { *(int *)(local_a98 + -4) = iVar9; local_a98[iVar9] = 0; } } else if (local_a98 != (short *)PTR_DAT_1401ac010) { iVar9 = *(int *)(local_a98 + -4); goto LAB_1400daa7e; } param_2 = &local_a98; FUN_14009b550(*(SIZE_T **)(param_1 + 0x1088),(wchar_t *)param_2,(SIZE_T)param_3,param_4) ; *(undefined1 *)(param_1 + 0x1040) = 1; FUN_1400da5c0(piVar1); goto LAB_1400daabf; } param_3 = param_3 + 1; param_2 = (short **)((longlong)param_2 + 4); } while ((longlong)param_3 < 1000); if (1 < local_a7c) { *(undefined1 *)(param_1 + 0x1080) = 1; } FUN_1400da5c0(piVar1); local_a80 = 0; } else { piVar6 = piVar1; local_a78 = piVar1; FUN_1400da5f0(piVar1); local_a70 = 1; param_2 = (short **)(param_1 + 0x80); iVar4 = *(int *)param_2; param_4 = (ulonglong)(iVar4 + 1U); do { iVar2 = *(int *)param_2; *(uint *)param_2 = iVar2 + 1U; if (iVar4 + 1U != iVar2 + 1U) { FUN_14006cb70(piVar6,param_2,param_3,param_4); local_a90 = (short *)PTR_DAT_1401ac010; iVar2 = FUN_14006c9f0((short *)&DAT_140148300); iVar4 = iVar9; if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) { iVar4 = *(int *)(local_a90 + -4); } iVar3 = iVar2; if (((iVar2 <= iVar4) && (iVar3 = iVar9, local_a90 != (short *)0x0)) && (local_a90 != (short *)PTR_DAT_1401ac010)) { iVar3 = *(int *)(local_a90 + -4); } iVar4 = 1; if (1 < iVar3) { iVar4 = iVar3; } iVar3 = iVar9; if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) { iVar3 = *(int *)(local_a90 + -4); } if (iVar3 < iVar4) { FUN_140002d60((longlong *)&local_a90,iVar4); } FUN_140002e40((longlong *)&local_a90); psVar7 = local_a90; if (local_a90 == (short *)0x0) { psVar7 = (short *)PTR_DAT_1401ac010; } FUN_14006ca20(psVar7,&DAT_140148300,iVar2); psVar7 = local_a90; if (local_a90 == (short *)0x0) { psVar7 = (short *)PTR_DAT_1401ac010; } iVar2 = FUN_14006c9f0(psVar7); param_3 = PTR_DAT_1401ac010; iVar4 = 0; if (0 < iVar2) { iVar4 = iVar2; } if ((local_a90 != (short *)0x0) && (local_a90 != (short *)PTR_DAT_1401ac010)) { iVar9 = *(int *)(local_a90 + -4); } if ((iVar4 < iVar9) || (iVar4 = iVar5, local_a90 == (short *)0x0)) { LAB_1400da94d: if (((local_a90 != (short *)PTR_DAT_1401ac010) && (local_a90 != (short *)0x0)) && ((int *)(local_a90 + -4) != (int *)0x0)) { *(int *)(local_a90 + -4) = iVar4; local_a90[iVar4] = 0; } } else if (local_a90 != (short *)PTR_DAT_1401ac010) { iVar4 = *(int *)(local_a90 + -4); goto LAB_1400da94d; } param_2 = &local_a90; FUN_14009b550(*(SIZE_T **)(param_1 + 0x1088),(wchar_t *)param_2,(SIZE_T)param_3,param_4) ; *(undefined1 *)(param_1 + 0x1040) = 1; FUN_1400da680(piVar1); goto LAB_1400daabf; } uVar8 = (int)param_3 + 1; param_3 = (undefined *)(ulonglong)uVar8; param_2 = (short **)((longlong)param_2 + 4); } while ((int)uVar8 < 1000); FUN_1400da680(piVar1); local_a70 = 0; } Sleep(0); } while (*(char *)(param_1 + 0x1040) == '\0'); } LAB_1400daabf: FUN_140076720(local_a58,param_2,param_3,param_4); return; }