/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14010d940 FUN_14010d940 * Pseudocode, not original source. */ ulonglong FUN_14010d940(longlong param_1,uint param_2,int *param_3) { uint uVar1; uint *puVar2; undefined4 uVar3; undefined4 extraout_var; ulonglong uVar4; uint uVar5; int iVar6; uint uVar7; undefined8 *puVar8; int local_res8 [2]; uint local_res10; if ((param_1 == 0) || (param_3 == (int *)0x0)) { return 0x10; } uVar7 = 0; uVar5 = 0; if (param_2 != 0) { puVar8 = (undefined8 *)(param_1 + 8); local_res10 = param_2; do { uVar1 = *(uint *)(puVar8 + 1); puVar2 = (uint *)*puVar8; if (*(int *)(puVar8 + -1) == 0) break; switch(*(int *)(puVar8 + -1)) { case 1: uVar4 = FUN_14010eee0(local_res8); break; case 2: uVar4 = FUN_14010ec50((longlong)puVar2,local_res8); break; case 3: uVar3 = FUN_14010eba0(*puVar2,local_res8); uVar4 = CONCAT44(extraout_var,uVar3); break; case 4: uVar4 = FUN_14010e9f0((ulonglong)uVar1,local_res8); break; case 5: uVar4 = FUN_14010e8a0(uVar1,local_res8); break; case 6: uVar5 = uVar5 + 2; goto LAB_14010da87; case 7: uVar4 = FUN_14010e5f0(puVar2,uVar1,local_res8); break; case 8: uVar4 = FUN_14010e410((byte *)puVar2,uVar1,local_res8); break; case 9: uVar4 = FUN_14010e1d0((byte *)puVar2,uVar1,local_res8); break; case 10: uVar4 = FUN_14010dec0((ushort *)puVar2,uVar1,local_res8); break; case 0xb: uVar4 = FUN_14010fec0((longlong)puVar2,local_res8); break; default: goto LAB_14010dad5; case 0xd: case 0xe: case 0xf: uVar4 = FUN_14010d940((longlong)puVar2,uVar1,local_res8); } if ((int)uVar4 != 0) { return uVar4; } uVar5 = uVar5 + local_res8[0]; LAB_14010da87: uVar7 = uVar7 + 1; puVar8 = puVar8 + 7; } while (uVar7 < local_res10); if (0x7f < uVar5) { if (uVar5 < 0x100) { iVar6 = uVar5 + 3; } else if (uVar5 < 0x10000) { iVar6 = uVar5 + 4; } else { if (0xffffff < uVar5) { LAB_14010dad5: return 0x10; } iVar6 = uVar5 + 5; } goto LAB_14010dad0; } } iVar6 = uVar5 + 2; LAB_14010dad0: *param_3 = iVar6; return 0; }