/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400d2a10 FUN_1400d2a10 * Pseudocode, not original source. */ ulonglong FUN_1400d2a10(uint param_1,longlong param_2,undefined4 param_3,undefined1 *param_4, int param_5) { uint uVar1; int iVar2; uint uVar3; ulonglong uVar4; undefined1 *_Memory; undefined1 *_Memory_00; longlong lVar5; undefined1 *puVar6; longlong lVar7; int iVar8; if ((param_2 == 0) || (param_4 == (undefined1 *)0x0)) { return 0x10; } uVar4 = FUN_1400cc940(param_1); if ((int)uVar4 != 0) { return uVar4; } lVar7 = (longlong)(int)param_1 * 0x80; uVar1 = *(uint *)(&DAT_14015fe7c + lVar7); _Memory = malloc(0x70); _Memory_00 = malloc((ulonglong)uVar1); if (_Memory == (undefined1 *)0x0) { _Memory = _Memory_00; if (_Memory_00 == (undefined1 *)0x0) { return 0xd; } } else if (_Memory_00 != (undefined1 *)0x0) { iVar2 = 0; while (param_5 != 0) { _Memory_00[3] = (char)iVar2; *_Memory_00 = (char)((uint)iVar2 >> 0x18); _Memory_00[1] = (char)((uint)iVar2 >> 0x10); iVar8 = iVar2 + 1; _Memory_00[2] = (char)((uint)iVar2 >> 8); uVar3 = (**(code **)(lVar7 + 0x14015fec8))(_Memory); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d2b7c; uVar3 = (**(code **)(lVar7 + 0x14015fed0))(_Memory,param_2,param_3); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d2b7c; uVar3 = (**(code **)(lVar7 + 0x14015fed0))(_Memory,_Memory_00,4); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d2b7c; uVar3 = (**(code **)(lVar7 + 0x14015fed8))(_Memory,_Memory_00); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_1400d2b7c; uVar3 = 0; iVar2 = iVar8; if (uVar1 != 0) { lVar5 = (longlong)_Memory_00 - (longlong)param_4; puVar6 = param_4; do { if (param_5 == 0) goto LAB_1400d2b7a; uVar3 = uVar3 + 1; param_4 = puVar6 + 1; *puVar6 = puVar6[lVar5]; param_5 = param_5 + -1; puVar6 = param_4; } while (uVar3 < uVar1); } } LAB_1400d2b7a: uVar4 = 0; LAB_1400d2b7c: free(_Memory_00); free(_Memory); return uVar4; } free(_Memory); return 0xd; }