247 lines
8.9 KiB
C
247 lines
8.9 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400b7b20 FUN_1400b7b20
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7e58) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7d59) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7d69) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7e63) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7d7d) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7d85) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7d8f) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b7e4d) */
|
|
|
|
void FUN_1400b7b20(longlong param_1,char param_2,SIZE_T param_3,undefined8 param_4)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
int *piVar2;
|
|
longlong *plVar3;
|
|
longlong *plVar4;
|
|
undefined8 *puVar5;
|
|
int *piVar6;
|
|
double *pdVar7;
|
|
longlong lVar8;
|
|
longlong *plVar9;
|
|
undefined8 uVar10;
|
|
longlong lVar11;
|
|
double dVar12;
|
|
undefined1 auStack_1a8 [40];
|
|
longlong local_180;
|
|
longlong *local_178;
|
|
longlong local_170 [5];
|
|
int *local_148;
|
|
undefined1 local_140;
|
|
undefined8 local_138;
|
|
undefined4 local_100;
|
|
uint uStack_fc;
|
|
undefined4 local_f8;
|
|
uint uStack_f4;
|
|
double local_f0 [3];
|
|
double local_d8 [3];
|
|
undefined4 local_c0 [14];
|
|
undefined *local_88 [4];
|
|
undefined8 local_68 [6];
|
|
ulonglong local_38;
|
|
|
|
local_138 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_1a8;
|
|
(**(code **)(*(longlong *)(param_1 + 0x78) + 0x10))();
|
|
lVar11 = 0;
|
|
local_170[3] = 0;
|
|
FUN_1400a2a00((longlong *)(param_1 + 0x1570),local_170 + 3);
|
|
if ((*(longlong **)(param_1 + 0x15d8) != (longlong *)0x0) &&
|
|
(lVar8 = **(longlong **)(param_1 + 0x15d8), lVar8 != 0)) {
|
|
if (*(char *)(lVar8 + 0x40) == '\0') {
|
|
lVar8 = lVar11;
|
|
if (*(longlong **)(param_1 + 0x15d8) != (longlong *)0x0) {
|
|
lVar8 = **(longlong **)(param_1 + 0x15d8);
|
|
}
|
|
if (*(char *)(lVar8 + 0x80) == '\0') goto LAB_1400b7bfb;
|
|
}
|
|
local_170[0] = 0;
|
|
FUN_1400a2a80(local_170,(longlong *)(param_1 + 0x15d8));
|
|
lVar8 = lVar11;
|
|
if (*(longlong *)(param_1 + 0x5d8) != 0) {
|
|
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
|
|
}
|
|
FUN_1400e5830(lVar8,local_170);
|
|
}
|
|
LAB_1400b7bfb:
|
|
if ((*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) &&
|
|
(lVar8 = **(longlong **)(param_1 + 0x1520), lVar8 != 0)) {
|
|
if (*(char *)(lVar8 + 0x40) == '\0') {
|
|
lVar8 = lVar11;
|
|
if (*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) {
|
|
lVar8 = **(longlong **)(param_1 + 0x1520);
|
|
}
|
|
if (*(char *)(lVar8 + 0x80) == '\0') goto LAB_1400b7c6f;
|
|
}
|
|
local_170[1] = 0;
|
|
FUN_1400a2a80(local_170 + 1,(longlong *)(param_1 + 0x1520));
|
|
lVar8 = lVar11;
|
|
if (*(longlong *)(param_1 + 0x5d8) != 0) {
|
|
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
|
|
}
|
|
FUN_1400e5830(lVar8,local_170 + 1);
|
|
}
|
|
LAB_1400b7c6f:
|
|
local_170[4] = 0;
|
|
FUN_1400a2a80((longlong *)(param_1 + 0x15d8),local_170 + 4);
|
|
local_170[2] = 0;
|
|
plVar9 = local_170 + 2;
|
|
FUN_1400a2a80((longlong *)(param_1 + 0x1520),plVar9);
|
|
FUN_1400b2be0(param_1);
|
|
plVar3 = *(longlong **)(param_1 + 0x1708);
|
|
do {
|
|
if (plVar3 == (longlong *)0x0) {
|
|
FUN_1400ae340((longlong *)(param_1 + 0x1700));
|
|
if (param_2 != '\0') {
|
|
FUN_1400b5fc0((longlong *)(param_1 + 0x15e0),plVar9,param_3,param_4);
|
|
}
|
|
FUN_1400cd510(param_1 + 0xd8);
|
|
uVar10 = 0;
|
|
FUN_1400146f0(param_1 + 0x4a8,0,param_3);
|
|
*(undefined4 *)(param_1 + 0x4d8) = 0;
|
|
*(undefined1 *)(param_1 + 0x4e8) = 0;
|
|
*(undefined4 *)(param_1 + 0x4ec) = 0;
|
|
*(undefined8 *)(param_1 + 0x4f0) = 0;
|
|
*(undefined8 *)(param_1 + 0x4f8) = 0;
|
|
*(undefined8 *)(param_1 + 0x500) = 0;
|
|
*(undefined8 *)(param_1 + 0x5c8) = 0;
|
|
FUN_1400b5820((char *)(param_1 + 0x5e0));
|
|
dVar12 = FUN_14006cd20();
|
|
*(double *)(param_1 + 0x640) = dVar12;
|
|
*(undefined8 *)(param_1 + 0x648) = DAT_1401ac090;
|
|
*(undefined8 *)(param_1 + 0x510) = DAT_1401ac100;
|
|
*(undefined1 *)(param_1 + 0x650) = 0;
|
|
uStack_fc = uStack_fc & 0xffffff00;
|
|
local_100 = 0;
|
|
local_f8 = 0;
|
|
*(undefined8 *)(param_1 + 0x658) = 0;
|
|
*(undefined8 *)(param_1 + 0x660) = 0;
|
|
*(undefined8 *)(param_1 + 0x668) = 0;
|
|
*(undefined8 *)(param_1 + 0x670) = 0;
|
|
*(undefined8 *)(param_1 + 0x678) = 0;
|
|
*(undefined8 *)(param_1 + 0x680) = 0;
|
|
*(ulonglong *)(param_1 + 0x688) = (ulonglong)uStack_fc << 0x20;
|
|
*(ulonglong *)(param_1 + 0x690) = (ulonglong)uStack_f4 << 0x20;
|
|
*(undefined4 *)(param_1 + 0x698) = DAT_1401ac110;
|
|
puVar5 = (undefined8 *)FUN_1400defb0(local_c0);
|
|
*(undefined8 *)(param_1 + 0x6a0) = *puVar5;
|
|
*(undefined8 *)(param_1 + 0x6a8) = puVar5[1];
|
|
*(undefined8 *)(param_1 + 0x6b0) = puVar5[2];
|
|
*(undefined8 *)(param_1 + 0x6b8) = puVar5[3];
|
|
*(undefined8 *)(param_1 + 0x6c0) = puVar5[4];
|
|
*(undefined8 *)(param_1 + 0x6c8) = puVar5[5];
|
|
*(undefined4 *)(param_1 + 0x6d0) = 0;
|
|
*(undefined4 *)(param_1 + 0x6d4) = 0;
|
|
*(undefined4 *)(param_1 + 0x6d8) = 0;
|
|
*(undefined4 *)(param_1 + 0x6dc) = 0;
|
|
FUN_1400ae510((longlong *)(param_1 + 0x6e0));
|
|
*(undefined4 *)(param_1 + 0x700) = 0;
|
|
*(undefined1 *)(param_1 + 0x1528) = 0;
|
|
FUN_1400ae510((longlong *)(param_1 + 0x1530));
|
|
*(undefined4 *)(param_1 + 0x1578) = 0;
|
|
plVar9 = FUN_1400780f0(local_88,uVar10,param_3,param_4);
|
|
FUN_1400a2e90((longlong *)(param_1 + 0x1588),plVar9,param_3,param_4);
|
|
puVar5 = local_68;
|
|
FUN_140078360(puVar5);
|
|
if (((local_88[0] != (undefined *)0x0) && (local_88[0] != PTR_DAT_1401ac010)) &&
|
|
(local_88[0] + -8 != (undefined *)0x0)) {
|
|
piVar6 = (int *)FUN_14006cb70(puVar5,plVar9,param_3,param_4);
|
|
local_148 = piVar6;
|
|
FUN_14006b350(piVar6);
|
|
local_140 = 1;
|
|
piVar2 = (int *)(local_88[0] + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14006cc60(local_88[0] + -8);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar6);
|
|
local_140 = 0;
|
|
}
|
|
local_88[0] = PTR_DAT_1401ac010;
|
|
FUN_1400b5fc0((longlong *)(param_1 + 0x1600),plVar9,param_3,param_4);
|
|
FUN_140076f10((char *)(param_1 + 0x1620));
|
|
*(undefined8 *)(param_1 + 0x1648) = 0;
|
|
FUN_1400afeb0((char *)(param_1 + 0x1650));
|
|
FUN_1400afeb0((char *)(param_1 + 0x16a8));
|
|
pdVar7 = FUN_1400f45d0(local_f0,DAT_1401ac180);
|
|
*(double *)(param_1 + 0x1778) = *pdVar7;
|
|
*(double *)(param_1 + 0x1780) = pdVar7[1];
|
|
*(double *)(param_1 + 0x1788) = pdVar7[2];
|
|
pdVar7 = FUN_1400f45d0(local_d8,DAT_1401ac1a0);
|
|
*(double *)(param_1 + 0x1878) = *pdVar7;
|
|
*(double *)(param_1 + 0x1880) = pdVar7[1];
|
|
*(double *)(param_1 + 0x1888) = pdVar7[2];
|
|
*(undefined8 *)(param_1 + 0x1798) = 0x3ff0000000000000;
|
|
*(undefined8 *)(param_1 + 0x1890) = 0;
|
|
*(undefined8 *)(param_1 + 0x18c0) = 0;
|
|
*(undefined2 *)(param_1 + 0x18c8) = 0;
|
|
*(undefined1 *)(param_1 + 0x18ca) = 0;
|
|
*(undefined8 *)(param_1 + 0x1870) = 0;
|
|
*(undefined8 *)(param_1 + 0x17a0) = 0;
|
|
*(undefined8 *)(param_1 + 0x17a8) = 0;
|
|
*(undefined8 *)(param_1 + 0xd0) = 0;
|
|
return;
|
|
}
|
|
local_178 = (longlong *)0x0;
|
|
if (plVar3[2] != 0) {
|
|
*(longlong *)(plVar3[2] + 8) = *(longlong *)(plVar3[2] + 8) + 1;
|
|
local_178 = (longlong *)plVar3[2];
|
|
}
|
|
lVar8 = lVar11;
|
|
if (local_178 != (longlong *)0x0) {
|
|
lVar8 = *local_178;
|
|
}
|
|
if (*(char *)(lVar8 + 0x40) == '\0') {
|
|
lVar8 = lVar11;
|
|
if (local_178 != (longlong *)0x0) {
|
|
lVar8 = *local_178;
|
|
}
|
|
if (*(char *)(lVar8 + 0x80) != '\0') goto code_r0x0001400b7d2f;
|
|
}
|
|
else {
|
|
code_r0x0001400b7d2f:
|
|
local_180 = 0;
|
|
if (plVar3[2] != 0) {
|
|
*(longlong *)(plVar3[2] + 8) = *(longlong *)(plVar3[2] + 8) + 1;
|
|
local_180 = plVar3[2];
|
|
}
|
|
lVar8 = lVar11;
|
|
if (*(longlong *)(param_1 + 0x5d8) != 0) {
|
|
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
|
|
}
|
|
FUN_1400e5830(lVar8,&local_180);
|
|
}
|
|
if (plVar3 == *(longlong **)(param_1 + 0x1708)) {
|
|
*(longlong *)(param_1 + 0x1708) = *plVar3;
|
|
}
|
|
else {
|
|
*(longlong *)plVar3[1] = *plVar3;
|
|
}
|
|
if (plVar3 == *(longlong **)(param_1 + 0x1710)) {
|
|
*(longlong *)(param_1 + 0x1710) = plVar3[1];
|
|
}
|
|
else {
|
|
*(longlong *)(*plVar3 + 8) = plVar3[1];
|
|
}
|
|
plVar9 = plVar3;
|
|
FUN_1400ac500((longlong *)(param_1 + 0x1700),plVar3);
|
|
plVar4 = local_178;
|
|
if (local_178 != (longlong *)0x0) {
|
|
plVar1 = local_178 + 1;
|
|
*plVar1 = *plVar1 + -1;
|
|
if (*plVar1 == 0) {
|
|
if ((undefined8 *)*local_178 != (undefined8 *)0x0) {
|
|
plVar9 = (longlong *)0x1;
|
|
(*(code *)**(undefined8 **)*local_178)();
|
|
}
|
|
FUN_14006cc60(plVar4);
|
|
}
|
|
}
|
|
} while( true );
|
|
}
|
|
|