/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400db798 FUN_1400db798 * Pseudocode, not original source. */ void FUN_1400db798(longlong param_1,longlong *param_2) { byte bVar1; longlong lVar2; byte bVar3; int iVar4; longlong lVar5; longlong lVar6; int iVar7; int iVar8; int iVar9; ulonglong uVar10; lVar2 = *param_2; iVar4 = *(int *)(param_2[2] + 0x14); uVar10 = (ulonglong)iVar4; lVar6 = *(longlong *)param_2[2]; iVar7 = -1; *(undefined4 *)(param_1 + 0x149c) = 0; *(undefined4 *)(param_1 + 0x14a0) = 0x23d; iVar8 = 0; lVar5 = 0; if (0 < iVar4) { do { if (*(short *)(lVar2 + lVar5 * 4) == 0) { *(undefined2 *)(lVar2 + 2 + lVar5 * 4) = 0; } else { *(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + 1; *(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4) = iVar8; *(undefined1 *)(lVar5 + 0x14a4 + param_1) = 0; iVar7 = iVar8; } lVar5 = lVar5 + 1; iVar8 = iVar8 + 1; } while (lVar5 < (longlong)uVar10); } while (*(int *)(param_1 + 0x149c) < 2) { if (iVar7 < 2) { iVar7 = iVar7 + 1; iVar4 = iVar7; } else { iVar4 = 0; } *(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + 1; *(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4) = iVar4; lVar5 = (longlong)iVar4; *(undefined2 *)(lVar2 + lVar5 * 4) = 1; *(undefined1 *)(lVar5 + 0x14a4 + param_1) = 0; *(int *)(param_1 + 0x1700) = *(int *)(param_1 + 0x1700) + -1; if (lVar6 != 0) { *(int *)(param_1 + 0x1704) = *(int *)(param_1 + 0x1704) - (uint)*(ushort *)(lVar6 + 2 + lVar5 * 4); } } *(int *)(param_2 + 1) = iVar7; for (iVar4 = *(int *)(param_1 + 0x149c) / 2; 0 < iVar4; iVar4 = iVar4 + -1) { FUN_1400da3b8(param_1,lVar2,iVar4); } do { iVar4 = *(int *)(param_1 + 0xbac); lVar5 = (longlong)iVar4; *(undefined4 *)(param_1 + 0xbac) = *(undefined4 *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x149c) * 4); *(int *)(param_1 + 0x149c) = *(int *)(param_1 + 0x149c) + -1; FUN_1400da3b8(param_1,lVar2,1); *(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1; iVar8 = *(int *)(param_1 + 0xbac); lVar6 = (longlong)iVar8; iVar9 = (int)uVar10; *(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) = iVar4; *(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1; *(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) = iVar8; *(short *)(lVar2 + (longlong)iVar9 * 4) = *(short *)(lVar2 + lVar6 * 4) + *(short *)(lVar2 + lVar5 * 4); bVar3 = *(byte *)(lVar5 + 0x14a4 + param_1); bVar1 = *(byte *)(lVar6 + 0x14a4 + param_1); if (bVar3 < bVar1) { bVar3 = bVar1; } *(byte *)((longlong)iVar9 + 0x14a4 + param_1) = bVar3 + 1; *(short *)(lVar2 + 2 + lVar6 * 4) = (short)uVar10; *(short *)(lVar2 + 2 + lVar5 * 4) = (short)uVar10; *(int *)(param_1 + 0xbac) = iVar9; uVar10 = (ulonglong)(iVar9 + 1); lVar6 = param_1; FUN_1400da3b8(param_1,lVar2,1); } while (1 < *(int *)(param_1 + 0x149c)); *(int *)(param_1 + 0x14a0) = *(int *)(param_1 + 0x14a0) + -1; *(undefined4 *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) = *(undefined4 *)(param_1 + 0xbac); FUN_1400da478(lVar6,param_2); FUN_1400db6f8(lVar2,iVar7,param_1 + 0xb88); return; }