/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14020ff60 FUN_14020ff60 * Pseudocode, not original source. */ undefined8 FUN_14020ff60(undefined1 *param_1,uint param_2,undefined1 *param_3,uint *param_4) { undefined1 uVar1; undefined1 uVar2; undefined8 uVar3; longlong lVar4; ulonglong uVar5; uint uVar6; undefined1 *puVar7; uint local_res8 [2]; uVar5 = (ulonglong)param_2; if (((param_1 != (undefined1 *)0x0) && (param_3 != (undefined1 *)0x0)) && (param_4 != (uint *)0x0) ) { uVar3 = FUN_14020d940(param_1,uVar5,local_res8); if ((int)uVar3 == 0) { if (*param_4 < local_res8[0]) { *param_4 = local_res8[0]; return 6; } *param_3 = 0x16; uVar2 = (undefined1)param_2; if (param_2 < 0x80) { param_3[1] = uVar2; uVar6 = 2; } else if (param_2 < 0x100) { param_3[1] = 0x81; uVar6 = 3; param_3[2] = uVar2; } else { uVar1 = (undefined1)(param_2 >> 8); if (param_2 < 0x10000) { param_3[1] = 0x82; uVar6 = 4; param_3[2] = uVar1; param_3[3] = uVar2; } else { if (0xffffff < param_2) { return 0x10; } param_3[1] = 0x83; uVar6 = 5; param_3[2] = (char)(param_2 >> 0x10); param_3[3] = uVar1; param_3[4] = uVar2; } } lVar4 = (longlong)(int)uVar6; if (param_2 != 0) { uVar6 = uVar6 + param_2; puVar7 = param_3 + lVar4; do { uVar2 = FUN_14020d8d0(*param_1); param_1 = param_1 + 1; uVar5 = uVar5 - 1; *puVar7 = uVar2; puVar7 = puVar7 + 1; } while (uVar5 != 0); } *param_4 = uVar6; uVar3 = 0; } return uVar3; } return 0x10; }