/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14000d480 FUN_14000d480 * Pseudocode, not original source. */ void FUN_14000d480(wchar_t *param_1,ulonglong param_2,ulonglong param_3,ulonglong param_4, short *param_5) { uint uVar1; uint uVar2; uint uVar3; int *piVar4; uint *puVar5; wchar_t *pwVar6; ulonglong uVar7; uint *puVar8; undefined8 uVar9; uint uVar10; undefined *puVar11; undefined4 *puVar12; uint uVar13; undefined4 local_res10 [2]; undefined1 local_res18; undefined4 local_res20; uint *local_48; undefined8 local_40; int *local_38; undefined1 local_30; local_res20 = (undefined4)param_4; local_res18 = (undefined1)param_3; local_res10[0] = (undefined4)param_2; local_40 = 0xfffffffffffffffe; uVar7 = param_4 & 0xffffffff; pwVar6 = param_1; if (*(char *)(DAT_140162d48 + 0x46) != '\0') { param_4 = param_3 & 0xff; param_3 = param_2 & 0xffffffff; pwVar6 = L"sendPWE_RESP_RESULT_CODE : CLIENT [ %d ] RESULTCODE [ %d ] SUCCEED [ %d ] NAME [ %s ] \n"; wprintf( L"sendPWE_RESP_RESULT_CODE : CLIENT [ %d ] RESULTCODE [ %d ] SUCCEED [ %d ] NAME [ %s ] \n" ); param_2 = uVar7; } FUN_140030200(pwVar6,param_2,param_3,param_4); local_48 = (uint *)PTR_DAT_140155010; uVar1 = FUN_140030080(param_5); uVar13 = 0; uVar3 = 0; uVar7 = 0; if ((local_48 != (uint *)0x0) && (uVar7 = 0, local_48 != (uint *)PTR_DAT_140155010)) { uVar7 = (ulonglong)local_48[-2]; } uVar2 = uVar1; if ((((int)uVar1 <= (int)uVar7) && (uVar2 = uVar3, local_48 != (uint *)0x0)) && (local_48 != (uint *)PTR_DAT_140155010)) { uVar2 = local_48[-2]; } uVar10 = 1; if (1 < (int)uVar2) { uVar10 = uVar2; } uVar2 = uVar3; if ((local_48 != (uint *)0x0) && (local_48 != (uint *)PTR_DAT_140155010)) { uVar2 = local_48[-2]; } if ((int)uVar2 < (int)uVar10) { puVar5 = local_48; if (local_48 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } local_48 = puVar5; if ((int)uVar10 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } if (uVar10 == 0) { local_48 = (uint *)PTR_DAT_140155010; if (((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) && (puVar5 + -2 != (uint *)0x0)) { local_48 = puVar5; piVar4 = (int *)FUN_140030200(puVar5,PTR_DAT_140155010,uVar7,param_4); local_38 = piVar4; FUN_14002e6e0(piVar4); local_30 = 1; puVar8 = puVar5 + -1; *puVar8 = *puVar8 - 1; if (*puVar8 == 0) { FUN_1400302f0(puVar5 + -2); } FUN_14002e770((longlong)piVar4); local_48 = (uint *)PTR_DAT_140155010; } } else { uVar2 = uVar3; if ((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) { uVar2 = puVar5[-2]; } if (uVar10 != uVar2) { puVar5 = (uint *)FUN_140030280((longlong)(int)uVar10 * 2 + 10); if (puVar5 != (uint *)0x0) { *puVar5 = 0; puVar5[1] = 1; } *puVar5 = uVar10; uVar2 = uVar3; if ((local_48 != (uint *)0x0) && (local_48 != (uint *)PTR_DAT_140155010)) { uVar2 = local_48[-2]; } puVar8 = (uint *)PTR_DAT_140155010; if ((int)uVar10 < (int)uVar2) { LAB_14000d61f: if (local_48 != (uint *)0x0) { puVar8 = local_48; } } else { uVar10 = uVar3; if (local_48 != (uint *)0x0) { if (local_48 != (uint *)PTR_DAT_140155010) { uVar10 = local_48[-2]; } goto LAB_14000d61f; } } uVar7 = (ulonglong)uVar10; FUN_1400300b0(puVar5 + 2,puVar8,uVar10); FUN_140003240((longlong *)&local_48,puVar8,uVar7,param_4); local_48 = puVar5 + 2; } } } FUN_140002ea0((longlong *)&local_48); puVar5 = local_48; if (local_48 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } FUN_1400300b0(puVar5,param_5,uVar1); puVar5 = local_48; if (local_48 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } uVar3 = FUN_140030080((short *)puVar5); uVar1 = uVar13; if (0 < (int)uVar3) { uVar1 = uVar3; } uVar3 = uVar13; if ((local_48 != (uint *)0x0) && (local_48 != (uint *)PTR_DAT_140155010)) { uVar3 = local_48[-2]; } if (((int)uVar3 <= (int)uVar1) && (uVar1 = uVar13, local_48 != (uint *)0x0)) { if (local_48 == (uint *)PTR_DAT_140155010) goto LAB_14000d6d5; uVar1 = local_48[-2]; } if (((local_48 != (uint *)PTR_DAT_140155010) && (local_48 != (uint *)0x0)) && (local_48 + -2 != (uint *)0x0)) { local_48[-2] = uVar1; *(undefined2 *)((longlong)local_48 + (longlong)(int)uVar1 * 2) = 0; } LAB_14000d6d5: pwVar6 = param_1 + 0x34; puVar12 = local_res10; puVar11 = &DAT_1401555d0; uVar9 = 1; (**(code **)(*(longlong *)pwVar6 + 0x60))(); puVar5 = local_48; if (((local_48 != (uint *)0x0) && (local_48 != (uint *)PTR_DAT_140155010)) && (puVar8 = local_48 + -2, puVar8 != (uint *)0x0)) { piVar4 = (int *)FUN_140030200(pwVar6,uVar9,puVar11,puVar12); local_38 = piVar4; FUN_14002e6e0(piVar4); local_30 = 1; puVar5 = puVar5 + -1; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_1400302f0(puVar8); } FUN_14002e770((longlong)piVar4); } return; }