/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400da678 scan_tree * Pseudocode, not original source. */ /* Library Function - Single Match scan_tree Libraries: Visual Studio 2010 Release, Visual Studio 2015 Release */ void scan_tree(longlong param_1,longlong param_2,int param_3) { short *psVar1; ushort uVar2; int iVar3; longlong lVar4; ushort *puVar5; uint uVar6; uint uVar7; uint uVar8; int iVar9; int iVar10; uVar2 = *(ushort *)(param_2 + 2); uVar6 = 0xffffffff; iVar10 = 0; iVar3 = 7; iVar9 = 4; if (uVar2 == 0) { iVar3 = 0x8a; iVar9 = 3; } lVar4 = (longlong)param_3; *(undefined2 *)(param_2 + 6 + lVar4 * 4) = 0xffff; if (-1 < lVar4) { puVar5 = (ushort *)(param_2 + 6); lVar4 = lVar4 + 1; uVar7 = (uint)uVar2; do { iVar10 = iVar10 + 1; uVar2 = *puVar5; uVar8 = (uint)uVar2; if ((iVar3 <= iVar10) || (uVar7 != uVar8)) { if (iVar10 < iVar9) { psVar1 = (short *)(param_1 + 0xaa4 + (longlong)(int)uVar7 * 4); *psVar1 = *psVar1 + (short)iVar10; } else if (uVar7 == 0) { if (iVar10 < 0xb) { *(short *)(param_1 + 0xae8) = *(short *)(param_1 + 0xae8) + 1; } else { *(short *)(param_1 + 0xaec) = *(short *)(param_1 + 0xaec) + 1; } } else { if (uVar7 != uVar6) { psVar1 = (short *)(param_1 + 0xaa4 + (longlong)(int)uVar7 * 4); *psVar1 = *psVar1 + 1; } *(short *)(param_1 + 0xae4) = *(short *)(param_1 + 0xae4) + 1; } iVar10 = 0; uVar6 = uVar7; if (uVar2 == 0) { iVar3 = 0x8a; } else { if (uVar7 != uVar8) { iVar3 = 7; iVar9 = 4; goto LAB_1400da74c; } iVar3 = 6; } iVar9 = 3; } LAB_1400da74c: puVar5 = puVar5 + 2; lVar4 = lVar4 + -1; uVar7 = uVar8; } while (lVar4 != 0); } return; }