/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14020ce70 FUN_14020ce70 * Pseudocode, not original source. */ undefined8 FUN_14020ce70(longlong param_1,uint param_2,int *param_3) { undefined4 uVar1; undefined4 *puVar2; undefined8 uVar3; uint uVar4; int iVar5; uint uVar6; undefined8 *puVar7; int local_res8 [2]; uint local_res10; if ((param_1 == 0) || (param_3 == (int *)0x0)) { return 0x10; } uVar6 = 0; uVar4 = 0; if (param_2 != 0) { puVar7 = (undefined8 *)(param_1 + 8); local_res10 = param_2; do { uVar1 = *(undefined4 *)(puVar7 + 1); puVar2 = (undefined4 *)*puVar7; if (*(int *)(puVar7 + -1) == 0) break; switch(*(int *)(puVar7 + -1)) { case 1: uVar3 = FUN_14020e410(local_res8); break; case 2: uVar3 = FUN_14020e180(puVar2,local_res8); break; case 3: uVar3 = FUN_14020e0d0(*puVar2,local_res8); break; case 4: uVar3 = FUN_14020df20(uVar1,local_res8); break; case 5: uVar3 = FUN_14020ddd0(uVar1,local_res8); break; case 6: uVar4 = uVar4 + 2; goto LAB_14020cfb7; case 7: uVar3 = FUN_14020db20(puVar2,uVar1,local_res8); break; case 8: uVar3 = FUN_14020d940(puVar2,uVar1,local_res8); break; case 9: uVar3 = FUN_14020d700(puVar2,uVar1,local_res8); break; case 10: uVar3 = FUN_14020d3f0(puVar2,uVar1,local_res8); break; case 0xb: uVar3 = FUN_14020f3f0(puVar2,local_res8); break; default: goto LAB_14020d005; case 0xd: case 0xe: case 0xf: uVar3 = FUN_14020ce70(puVar2,uVar1,local_res8); } if ((int)uVar3 != 0) { return uVar3; } uVar4 = uVar4 + local_res8[0]; LAB_14020cfb7: uVar6 = uVar6 + 1; puVar7 = puVar7 + 7; } while (uVar6 < local_res10); if (0x7f < uVar4) { if (uVar4 < 0x100) { iVar5 = uVar4 + 3; } else if (uVar4 < 0x10000) { iVar5 = uVar4 + 4; } else { if (0xffffff < uVar4) { LAB_14020d005: return 0x10; } iVar5 = uVar4 + 5; } goto LAB_14020d000; } } iVar5 = uVar4 + 2; LAB_14020d000: *param_3 = iVar5; return 0; }