/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400ad5b0 FUN_1400ad5b0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400ad5b0(wchar_t *param_1,wchar_t *param_2) { bool bVar1; bool bVar2; wchar_t *pwVar3; wchar_t wVar4; int iVar5; longlong lVar6; undefined8 uVar7; ulonglong uVar8; wchar_t *pwVar9; ulonglong uVar10; ulonglong uVar11; undefined1 auStack_188 [32]; int local_168; int local_164; wchar_t *local_160; undefined8 local_158; wchar_t local_148 [136]; ulonglong local_38; local_158 = 0xfffffffffffffffe; local_38 = DAT_1401555a0 ^ (ulonglong)auStack_188; if (param_2 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } bVar2 = false; bVar1 = false; local_164 = 0; local_168 = 0; lVar6 = (**(code **)(PTR_PTR_140155508 + 0x18))(&PTR_PTR_140155508); local_160 = (wchar_t *)(lVar6 + 0x18); if ((int)(*(int *)(lVar6 + 0xc) - 0x82aU | 1U - *(int *)(lVar6 + 0x10)) < 0) { FUN_14000b2c0((longlong *)&local_160,0x82a); } pwVar3 = local_160; uVar8 = 0; wVar4 = *param_2; pwVar9 = local_160; uVar11 = uVar8; if (wVar4 != L'\0') { LAB_1400ad672: uVar10 = 0; if (0x828 < uVar8) goto LAB_1400ada0c; if (wVar4 == L':') { if ((int)uVar11 == 0) { *pwVar9 = L'\0'; if (bVar2) { if ((!bVar1) || (local_168 == 0)) { *pwVar9 = L'\0'; pwVar9 = local_148; param_2 = param_2 + 1; wVar4 = *param_2; uVar8 = uVar10; while (((wVar4 != L'/' && (wVar4 != L'@')) && (wVar4 != L'\0'))) { if (0x7f < (int)uVar8) goto LAB_1400ada0c; *pwVar9 = wVar4; pwVar9 = pwVar9 + 1; uVar8 = (ulonglong)((int)uVar8 + 1); param_2 = param_2 + 1; wVar4 = *param_2; } *pwVar9 = L'\0'; uVar8 = uVar10; if ((local_168 == 0) && ((wVar4 == L'/' || (wVar4 == L'\0')))) { uVar7 = FUN_1400acab0((longlong)param_1,pwVar3); if ((int)uVar7 == 0) goto LAB_1400ada0c; iVar5 = _wtoi(local_148); param_1[0x1226] = (wchar_t)iVar5; local_164 = 1; local_168 = 1; pwVar9 = pwVar3; } else { if ((bVar1) || (((wVar4 != L'@' || (uVar7 = FUN_1400acb60((longlong)param_1,pwVar3), (int)uVar7 == 0)) || (uVar7 = FUN_1400acc10((longlong)param_1,local_148), (int)uVar7 == 0)))) goto LAB_1400ada0c; bVar1 = true; param_2 = param_2 + 1; pwVar9 = pwVar3; } } } else { uVar7 = FUN_1400acda0(param_1,pwVar3); if ((int)uVar7 == 0) goto LAB_1400ada0c; bVar2 = true; pwVar9 = param_2; if (param_2[1] == L'/') { pwVar9 = param_2 + 2; if (*pwVar9 != L'/') { param_2 = param_2 + 1; uVar8 = 0; pwVar9 = pwVar3; goto LAB_1400ad8f0; } if (*(int *)(param_1 + 0x1228) == 6) goto LAB_1400ada0c; } uVar8 = 0; param_2 = pwVar9 + 1; pwVar9 = pwVar3; if (*(int *)(param_1 + 0x1228) == 4) goto LAB_1400ad8f0; } } else { LAB_1400ad842: if (param_2[1] == L'\0') { LAB_1400ad89c: if ((wVar4 != L'/') && (wVar4 != L'?')) { if (uVar8 < 0x828) { *pwVar9 = wVar4; pwVar9 = pwVar9 + 1; param_2 = param_2 + 1; goto LAB_1400ad8c0; } goto LAB_1400ada0c; } goto LAB_1400ad8c0; } if (wVar4 == L'[') { if ((bVar2) && (local_164 == 0)) { uVar11 = 1; } } else if (wVar4 == L']') { uVar11 = uVar10; } *pwVar9 = wVar4; param_2 = param_2 + 1; uVar8 = uVar8 + 1; pwVar9 = pwVar9 + 1; } } else { if (wVar4 != L'@') { if ((wVar4 != L'/') && (wVar4 != L'?')) goto LAB_1400ad842; if (param_2[1] == L'\0') goto LAB_1400ad89c; LAB_1400ad8c0: *pwVar9 = L'\0'; if ((local_164 == 0) && (uVar7 = FUN_1400acab0((longlong)param_1,pwVar3), (int)uVar7 == 0)) goto LAB_1400ada0c; uVar8 = 0; pwVar9 = pwVar3; goto LAB_1400ad8e7; } if (bVar1) goto LAB_1400ada0c; *pwVar9 = L'\0'; uVar7 = FUN_1400acb60((longlong)param_1,pwVar3); if ((int)uVar7 == 0) goto LAB_1400ada0c; uVar11 = 0; bVar1 = true; param_2 = param_2 + 1; uVar8 = 0; pwVar9 = pwVar3; } wVar4 = *param_2; if (wVar4 == L'\0') goto LAB_1400ad8e7; goto LAB_1400ad672; } goto LAB_1400ada0c; LAB_1400ad8e7: if (bVar2) { LAB_1400ad8f0: wVar4 = *param_2; while (wVar4 != L'\0') { if (0x828 < uVar8) goto LAB_1400ada0c; if ((*(int *)(param_1 + 0x1228) != 4) && ((wVar4 == L'#' || (wVar4 == L'?')))) break; *pwVar9 = wVar4; pwVar9 = pwVar9 + 1; uVar8 = uVar8 + 1; param_2 = param_2 + 1; wVar4 = *param_2; } *pwVar9 = L'\0'; if ((*pwVar3 == L'\0') || (uVar7 = FUN_1400313b0((longlong)param_1,pwVar3), (int)uVar7 != 0)) { uVar8 = 0; wVar4 = *param_2; pwVar9 = pwVar3; while (wVar4 != L'\0') { param_2 = param_2 + 1; if (0x828 < uVar8) goto LAB_1400ada0c; *pwVar9 = wVar4; pwVar9 = pwVar9 + 1; uVar8 = uVar8 + 1; wVar4 = *param_2; } *pwVar9 = L'\0'; if ((*pwVar3 == L'\0') || (uVar7 = FUN_1400accf0((longlong)param_1,pwVar3), (int)uVar7 != 0)) { iVar5 = *(int *)(param_1 + 0x1228); if ((iVar5 == 4) || ((iVar5 == 5 || (iVar5 == 6)))) { param_1[0x1226] = L'\0'; } else if (local_168 == 0) { uVar7 = FUN_1400ac900(iVar5); param_1[0x1226] = (wchar_t)uVar7; } LOCK(); pwVar9 = pwVar3 + -4; iVar5 = *(int *)pwVar9; *(int *)pwVar9 = *(int *)pwVar9 + -1; UNLOCK(); if (iVar5 + -1 < 1) { (**(code **)(**(longlong **)(pwVar3 + -0xc) + 8))(); } return 1; } } } LAB_1400ada0c: FUN_140031460(param_1); LOCK(); pwVar9 = pwVar3 + -4; iVar5 = *(int *)pwVar9; *(int *)pwVar9 = *(int *)pwVar9 + -1; UNLOCK(); if (iVar5 + -1 < 1) { (**(code **)(**(longlong **)(pwVar3 + -0xc) + 8))(); } return 0; }