/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400d6850 FUN_1400d6850 * Pseudocode, not original source. */ ulonglong FUN_1400d6850(uint *param_1,uint *param_2,undefined8 *param_3,uint *param_4) { int *piVar1; uint uVar2; uint uVar3; int iVar4; undefined8 uVar5; ulonglong uVar6; undefined4 uVar7; undefined4 uVar8; ulonglong uVar9; longlong lVar10; longlong lVar11; int iVar12; longlong lVar13; uint local_d8 [2]; uint local_d0; longlong local_c8; uint local_c0; uint local_bc; uint local_b8 [2]; undefined4 local_b0; longlong local_a8; uint local_a0 [4]; undefined4 *local_90; int local_88 [4]; longlong local_78; uint local_70; int local_68 [4]; undefined4 *local_58; if (*param_2 == 0) { return 0xfffffffd; } uVar5 = FUN_1400ddd70((int *)param_1,(int *)param_2); if ((int)uVar5 == -1) { uVar6 = 0; if (param_4 != (uint *)0x0) { uVar6 = FUN_1400d5ca0(param_1,param_4); uVar6 = uVar6 & 0xffffffff; } if (param_3 != (undefined8 *)0x0) { FUN_1400ddd40((undefined4 *)param_3); } return uVar6; } uVar6 = FUN_1400dfd80(local_88,*param_1 + 2); if ((int)uVar6 != 0) { return uVar6; } local_88[0] = *param_1 + 2; uVar6 = FUN_1400d5ba0(local_a0); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d59; uVar6 = FUN_1400d5ba0(local_68); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 == 0) { uVar3 = FUN_1400ddfa0(local_d8,param_1); uVar9 = (ulonglong)uVar3; if (uVar3 == 0) { uVar3 = FUN_1400ddfa0(local_b8,param_2); uVar9 = (ulonglong)uVar3; if (uVar3 == 0) { local_b0 = 0; local_d0 = 0; local_70 = (uint)(param_1[2] != param_2[2]); iVar4 = FUN_1400d5e50((int *)local_b8); if (iVar4 % 0x1c < 0x1b) { uVar3 = 0x1b - iVar4 % 0x1c; local_c0 = uVar3; uVar6 = FUN_1400ddc40(local_d8,uVar3,local_d8); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 == 0) { uVar6 = FUN_1400ddc40(local_b8,uVar3,local_b8); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 == 0) goto LAB_1400d69ca; } } else { local_c0 = 0; LAB_1400d69ca: iVar4 = local_b8[0] - 1; iVar12 = local_d8[0] - 1; uVar6 = FUN_1400dfcf0((int *)local_b8,iVar12 - iVar4); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 == 0) { lVar11 = (longlong)iVar12; lVar13 = (longlong)iVar4; uVar5 = FUN_1400d5df0((int *)local_d8,(int *)local_b8); if ((int)uVar5 != -1) { do { piVar1 = (int *)(local_78 + (lVar11 - lVar13) * 4); *piVar1 = *piVar1 + 1; uVar3 = FUN_1400d64a0(local_d8,local_b8,local_d8); uVar9 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d6d35; uVar5 = FUN_1400d5df0((int *)local_d8,(int *)local_b8); } while ((int)uVar5 != -1); } FUN_1400dfc70((int *)local_b8,iVar12 - iVar4); local_bc = local_b8[0]; uVar3 = local_b8[0]; if ((int)local_b8[0] <= iVar12) { do { if (iVar12 <= (int)local_d8[0]) { uVar3 = *(uint *)(local_c8 + lVar11 * 4); uVar2 = *(uint *)(local_a8 + lVar13 * 4); if (uVar3 == uVar2) { lVar10 = (lVar11 - lVar13) * 4 + -4; *(undefined4 *)(lVar10 + local_78) = 0xfffffff; } else { uVar6 = ((ulonglong)uVar3 << 0x1c | (ulonglong)*(uint *)(local_c8 + -4 + lVar11 * 4)) / (ulonglong)uVar2; if (0xfffffff < uVar6) { uVar6 = 0xfffffff; } lVar10 = (lVar11 - lVar13) * 4 + -4; *(uint *)(lVar10 + local_78) = (uint)uVar6 & 0xfffffff; } *(uint *)(lVar10 + local_78) = *(int *)(lVar10 + local_78) + 1U & 0xfffffff; do { *(uint *)(lVar10 + local_78) = *(int *)(lVar10 + local_78) - 1U & 0xfffffff; FUN_1400ddd40(local_a0); uVar7 = 0; if (-1 < (int)(local_b8[0] - 2)) { uVar7 = *(undefined4 *)(local_a8 + -4 + lVar13 * 4); } *local_90 = uVar7; local_90[1] = *(undefined4 *)(local_a8 + lVar13 * 4); local_a0[0] = 2; uVar6 = FUN_1400d6710((int *)local_a0,*(uint *)(lVar10 + local_78), (int *)local_a0); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d35; uVar7 = 0; uVar8 = uVar7; if (-1 < iVar12 + -2) { uVar8 = *(undefined4 *)(local_c8 + -8 + lVar11 * 4); } *local_58 = uVar8; if (-1 < iVar12 + -1) { uVar7 = *(undefined4 *)(local_c8 + -4 + lVar11 * 4); } local_58[1] = uVar7; local_58[2] = *(undefined4 *)(local_c8 + lVar11 * 4); local_68[0] = 3; uVar5 = FUN_1400ddd70((int *)local_a0,local_68); } while ((int)uVar5 == 1); uVar6 = FUN_1400d6710((int *)local_b8,*(uint *)(lVar10 + local_78),(int *)local_a0 ); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d35; uVar6 = FUN_1400dfcf0((int *)local_a0,(iVar12 - iVar4) - 1); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d35; uVar3 = FUN_1400d64a0(local_d8,local_a0,local_d8); uVar9 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d6d35; uVar3 = local_bc; if (local_d0 == 1) { uVar6 = FUN_1400d5ca0(local_b8,local_a0); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d35; uVar6 = FUN_1400dfcf0((int *)local_a0,(iVar12 - iVar4) - 1); uVar9 = uVar6 & 0xffffffff; if ((int)uVar6 != 0) goto LAB_1400d6d35; uVar3 = FUN_1400d62e0(local_d8,local_a0,local_d8); uVar9 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d6d35; *(uint *)(lVar10 + local_78) = *(int *)(lVar10 + local_78) - 1U & 0xfffffff; uVar3 = local_bc; } } iVar12 = iVar12 + -1; lVar11 = lVar11 + -1; } while ((int)uVar3 <= iVar12); } if (local_d8[0] == 0) { local_d0 = 0; } else { local_d0 = param_1[2]; } if (param_3 != (undefined8 *)0x0) { FUN_1400ddc00(local_88); FUN_1400dfc40((undefined8 *)local_88,param_3); *(uint *)(param_3 + 1) = local_70; } if (param_4 != (uint *)0x0) { FUN_1400ddfd0(local_d8,local_c0,local_d8,(undefined8 *)0x0); FUN_1400dfc40((undefined8 *)local_d8,(undefined8 *)param_4); } uVar9 = 0; } } LAB_1400d6d35: FUN_1400d5c00((int *)local_b8); } FUN_1400d5c00((int *)local_d8); } FUN_1400d5c00(local_68); } FUN_1400d5c00((int *)local_a0); LAB_1400d6d59: FUN_1400d5c00(local_88); return uVar9; }