/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14000c370 FUN_14000c370 * Pseudocode, not original source. */ ulonglong FUN_14000c370(longlong *param_1,char *param_2) { char cVar1; undefined1 auVar2 [16]; FILE *_File; errno_t eVar3; __uint64 _Var4; undefined4 extraout_var; longlong *plVar5; longlong *extraout_RAX; ulonglong uVar6; size_t sVar7; char *pcVar8; size_t *psVar9; FILE *local_res8; size_t *local_38; uVar6 = 0xffffffffffffffff; pcVar8 = param_2; do { if (uVar6 == 0) break; uVar6 = uVar6 - 1; cVar1 = *pcVar8; pcVar8 = pcVar8 + 1; } while (cVar1 != '\0'); uVar6 = ~uVar6; sVar7 = uVar6 - 1; if (sVar7 == 0) { psVar9 = &DAT_1401bcf30; } else { auVar2._8_8_ = 0; auVar2._0_8_ = uVar6 + 0x1a >> 2; _Var4 = SUB168(ZEXT816(4) * auVar2,0); if (SUB168(ZEXT816(4) * auVar2,8) != 0) { _Var4 = 0xffffffffffffffff; } local_38 = operator_new(_Var4); *local_38 = sVar7; *(undefined1 *)((longlong)local_38 + uVar6 + 0xf) = 0; local_38[1] = sVar7; psVar9 = local_38; } memcpy(psVar9 + 2,param_2,*psVar9); FUN_14000af60(param_1 + 7,psVar9 + 2,*psVar9); local_res8 = (FILE *)0x0; eVar3 = fopen_s(&local_res8,(char *)(param_1[7] + 0x10),"rb"); _File = local_res8; plVar5 = (longlong *)CONCAT44(extraout_var,eVar3); if ((eVar3 == 0) && (local_res8 != (FILE *)0x0)) { uVar6 = FUN_14000c4f0(param_1,local_res8); fclose(_File); if (psVar9 != &DAT_1401bcf30) { operator_delete__(local_38); } uVar6 = uVar6 & 0xff; } else { if ((char)param_1[0xb] == '\0') { *(undefined1 *)(param_1 + 0xb) = 1; *(undefined4 *)((longlong)param_1 + 0x5c) = 2; uVar6 = 0xffffffffffffffff; pcVar8 = PTR_s_Failed_to_open_file_1401b3370; do { if (uVar6 == 0) break; uVar6 = uVar6 - 1; cVar1 = *pcVar8; pcVar8 = pcVar8 + 1; } while (cVar1 != '\0'); plVar5 = FUN_14000af60(param_1 + 0xc,PTR_s_Failed_to_open_file_1401b3370,~uVar6 - 1); *(undefined4 *)(param_1 + 0xf) = 0xffffffff; *(undefined4 *)((longlong)param_1 + 0x74) = 0xffffffff; } if (psVar9 != &DAT_1401bcf30) { operator_delete__(local_38); plVar5 = extraout_RAX; } uVar6 = (ulonglong)plVar5 & 0xffffffffffffff00; } return uVar6; }