87 lines
2.4 KiB
C
87 lines
2.4 KiB
C
/* 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;
|
|
}
|
|
|