/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14020e280 FUN_14020e280 * Pseudocode, not original source. */ undefined8 FUN_14020e280(byte *param_1,uint param_2,longlong param_3) { uint uVar1; byte bVar2; int iVar3; undefined4 uVar4; undefined8 uVar5; uint uVar6; ulonglong uVar7; uint uVar8; byte *pbVar9; undefined8 local_res18 [2]; if ((param_3 == 0) || (param_1 == (byte *)0x0)) { return 0x10; } if ((param_2 < 3) || ((*param_1 & 0x1f) != 2)) { return 7; } bVar2 = param_1[1]; uVar7 = 2; if ((char)bVar2 < '\0') { uVar6 = bVar2 & 0x7f; if (((uVar6 + 2 <= param_2) && (uVar6 < 5)) && ((bVar2 & 0x7f) != 0)) { uVar8 = 0; pbVar9 = param_1 + 2; uVar1 = uVar6 + 2; uVar7 = (ulonglong)uVar1; do { bVar2 = *pbVar9; pbVar9 = pbVar9 + 1; uVar8 = uVar8 << 8 | (uint)bVar2; uVar6 = uVar6 - 1; } while (uVar6 != 0); if (uVar8 + uVar1 <= param_2) { uVar5 = (*DAT_14039d300)(param_3,param_1 + uVar7); if ((int)uVar5 != 0) { return uVar5; } goto LAB_14020e374; } } } else if (bVar2 + 2 <= param_2) { uVar5 = (*DAT_14039d300)(param_3,param_1 + 2,(uint)bVar2); if ((int)uVar5 != 0) { return uVar5; } LAB_14020e374: if ((param_1[uVar7] & 0x80) == 0) { return 0; } iVar3 = (*DAT_14039d270)(local_res18); if (iVar3 == 0) { uVar4 = (*DAT_14039d2c8)(param_3); iVar3 = (*DAT_14039d2d8)(local_res18[0],uVar4); if ((iVar3 == 0) && (iVar3 = (*DAT_14039d318)(param_3,local_res18[0],param_3), iVar3 == 0)) { (*DAT_14039d280)(local_res18[0]); return 0; } (*DAT_14039d280)(local_res18[0]); } return 0xd; } return 7; }