/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400b8600 FUN_1400b8600 * Pseudocode, not original source. */ ulonglong FUN_1400b8600(longlong *param_1,uint *param_2,ulonglong param_3,undefined4 *param_4) { undefined8 *puVar1; longlong *plVar2; longlong *plVar3; undefined8 uVar4; ulonglong uVar5; longlong *plVar6; longlong *plVar7; longlong *plVar8; uint *puVar9; uint ***pppuVar10; int iVar11; SIZE_T SVar12; undefined4 *puVar13; uint **local_res8; undefined8 local_d8; uint *local_d0; longlong *local_c8; undefined8 local_c0; longlong *local_b8; longlong *local_b0; undefined4 local_a8; undefined4 local_a4; longlong *local_a0; longlong *local_98; undefined8 local_90; exception local_88 [80]; local_90 = 0xfffffffffffffffe; uVar5 = param_3; puVar13 = param_4; local_b0 = (longlong *)(**(code **)(*param_1 + 0x38))(); plVar8 = (longlong *)0x0; local_c0 = 0; local_c8 = (longlong *)0x0; local_d0 = (uint *)0x0; local_b8 = (longlong *)0x0; local_d8 = 0; local_a4 = 0; uVar4 = FUN_140080f30(param_2,(uint *)&local_d8,uVar5,puVar13); if ((char)uVar4 == '\0') { if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } else { if ((uint)local_d8 != 1) { if ((uint)local_d8 == 2) { plVar6 = (longlong *) (**(code **)(*(longlong *)(*(longlong *)(param_1[2] + 0x670) + 0x88) + 0x18))(); plVar7 = FUN_14004ded0((longlong *)&local_a0,plVar6,uVar5,puVar13); plVar3 = local_b0; plVar2 = local_b8; plVar6 = (longlong *)*plVar7; if (plVar6 != (longlong *)0x0) { plVar6[1] = plVar6[1] + 1; plVar8 = plVar6; } if (local_b8 != (longlong *)0x0) { plVar6 = local_b8 + 1; *plVar6 = *plVar6 + -1; if (*plVar6 == 0) { puVar1 = (undefined8 *)*local_b8; *puVar1 = Proud::CFastArray::vftable; if ((LPVOID)puVar1[2] != (LPVOID)0x0) { if ((longlong *)puVar1[1] == (longlong *)0x0) { FUN_1400302f0((LPVOID)puVar1[2]); } else { (**(code **)(*(longlong *)puVar1[1] + 0x18))(); } } (**(code **)(*plVar3 + 0x18))(plVar3,puVar1); (**(code **)(*local_b0 + 0x18))(local_b0,plVar2); } } plVar6 = local_98; local_b0 = (longlong *)plVar7[1]; local_b8 = plVar8; if (local_a0 != (longlong *)0x0) { plVar8 = local_a0 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { puVar1 = (undefined8 *)*local_a0; *puVar1 = Proud::CFastArray::vftable; if ((LPVOID)puVar1[2] != (LPVOID)0x0) { if ((longlong *)puVar1[1] == (longlong *)0x0) { FUN_1400302f0((LPVOID)puVar1[2]); } else { (**(code **)(*(longlong *)puVar1[1] + 0x18))(); } } (**(code **)(*plVar6 + 0x18))(plVar6,puVar1); (**(code **)(*local_98 + 0x18))(local_98,local_a0); } } if (local_b8 == (longlong *)0x0) { puVar9 = (uint *)0x0; } else { puVar9 = (uint *)*local_b8; } uVar5 = FUN_1400a2d90(puVar9,param_2,uVar5,puVar13); if ((char)uVar5 == '\0') { if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } else { uVar4 = FUN_140080600(param_2,&local_res8,4); if ((char)uVar4 == '\0') { local_a4 = 0; if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } else { local_a4 = local_res8._0_4_; uVar5 = 4; uVar4 = FUN_140080600(param_2,&local_res8,4); if ((char)uVar4 != '\0') { local_a8 = local_res8._0_4_; goto LAB_1400b8a11; } if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } } goto LAB_1400b8b3d; } LAB_1400b8a11: FUN_1400700b0(param_3,0,uVar5,puVar13); FUN_1400b7be0(param_1[1],&local_d8,uVar5,puVar13); plVar8 = (longlong *)FUN_1400b7b50(param_1[1]); uVar5 = FUN_14009f830(plVar8,param_3,(ulonglong)*(uint *)(param_1[2] + 0x56c), (ulonglong)*(uint *)(*(longlong *)(param_1[2] + 0x670) + 0x6a4),param_4) ; if ((int)uVar5 < 0) { *(undefined1 *)(param_1 + 3) = 1; } if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar4 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } return CONCAT71((int7)((ulonglong)uVar4 >> 8),1); } SVar12 = 4; pppuVar10 = &local_res8; puVar9 = param_2; uVar4 = FUN_140080600(param_2,pppuVar10,4); if ((char)uVar4 == '\0') { local_d8 = local_d8 & 0xffffffff; if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } goto LAB_1400b8b3d; } local_d8 = CONCAT44(local_res8._0_4_,(uint)local_d8); if (local_c8 != (longlong *)0x0) { FUN_14002f1e0(local_88,(wchar_t *)PTR_u_Cannot_use_internal_buffer_becau_140156ba0,SVar12, puVar13); /* WARNING: Subroutine does not return */ _CxxThrowException(local_88,(ThrowInfo *)&DAT_140151b88); } if (local_d0 == (uint *)0x0) { local_d0 = (uint *)FUN_1400952b0(puVar9,pppuVar10,SVar12); local_d0[10] = 1; local_d0[0xb] = 0; } puVar9 = param_2; uVar5 = FUN_140080ca0(param_2,&local_res8,SVar12,puVar13); if ((((char)uVar5 != '\0') && (iVar11 = (int)local_res8, -1 < iVar11)) && (iVar11 <= DAT_140155140)) { if (local_c8 == (longlong *)0x0) { puVar9 = local_d0; if (iVar11 < 1) { if (local_d0 == (uint *)0x0) goto LAB_1400b8ab0; iVar11 = 0; } else if (local_d0 == (uint *)0x0) { /* WARNING: Subroutine does not return */ FUN_140095370(0,0,SVar12,puVar13); } FUN_14001bc70((longlong)local_d0,iVar11,SVar12); } else { if (local_c0._4_4_ < iVar11) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } local_c0 = CONCAT44(local_c0._4_4_,iVar11); } plVar6 = local_c8; if (local_c8 == (longlong *)0x0) { if (local_d0 == (uint *)0x0) { LAB_1400b8ab0: /* WARNING: Subroutine does not return */ FUN_140095370(puVar9,0,SVar12,puVar13); } plVar6 = plVar8; if (local_d0[6] != 0) { plVar6 = *(longlong **)(local_d0 + 4); } } uVar5 = (ulonglong)local_res8 & 0xffffffff; uVar4 = FUN_140080600(param_2,plVar6,uVar5); if ((char)uVar4 != '\0') goto LAB_1400b8a11; } if (local_b8 != (longlong *)0x0) { plVar8 = local_b8 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_140043d50((longlong)&local_b8,local_b8); } } local_res8 = &local_d0; uVar5 = FUN_140095270((longlong *)&local_d0); if ((local_c8 != (longlong *)0x0) && (local_c0 < 0)) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } } LAB_1400b8b3d: return uVar5 & 0xffffffffffffff00; }