579 lines
20 KiB
C
579 lines
20 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400cbc40 FUN_1400cbc40
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
void FUN_1400cbc40(undefined8 *param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
LPCWSTR pWVar2;
|
|
longlong lVar3;
|
|
LPCWSTR ****pppppWVar4;
|
|
undefined *puVar5;
|
|
undefined8 *puVar6;
|
|
bool bVar7;
|
|
DWORD DVar8;
|
|
BOOL BVar9;
|
|
int iVar10;
|
|
errno_t eVar11;
|
|
longlong *plVar12;
|
|
int *piVar13;
|
|
undefined8 *puVar14;
|
|
LPCWSTR *****ppppppWVar15;
|
|
wchar_t *pwVar16;
|
|
HANDLE pvVar17;
|
|
undefined1 *puVar18;
|
|
LPCWSTR ******lpFileName;
|
|
int *piVar19;
|
|
LPCWSTR ******pppppppWVar20;
|
|
undefined *lpBuffer;
|
|
LPCWSTR ******lpBuffer_00;
|
|
LPCWSTR ******pppppppWVar21;
|
|
LPCWSTR *****ppppppWVar22;
|
|
LPCWSTR ******pppppppWVar23;
|
|
int iVar24;
|
|
PLONG pLVar25;
|
|
ulonglong uVar26;
|
|
rsize_t rVar27;
|
|
LPDWORD lpNumberOfBytesWritten;
|
|
ulonglong uVar28;
|
|
undefined1 auStackY_3b8 [32];
|
|
undefined2 local_378 [4];
|
|
LPCWSTR ******local_370;
|
|
LPCWSTR ******local_368;
|
|
LPCWSTR *****local_360;
|
|
LPCWSTR ******local_358;
|
|
undefined *local_350;
|
|
ulonglong local_348;
|
|
undefined8 *local_340;
|
|
undefined8 *local_338;
|
|
undefined8 *local_330;
|
|
longlong local_328;
|
|
DWORD local_320;
|
|
DWORD DStack_31c;
|
|
DWORD local_318;
|
|
DWORD DStack_314;
|
|
longlong local_310;
|
|
DWORD local_308 [2];
|
|
undefined8 local_300;
|
|
__time64_t local_2f8;
|
|
undefined8 local_2f0;
|
|
DWORD local_2e8;
|
|
DWORD local_2e4;
|
|
DWORD local_2e0 [2];
|
|
longlong local_2d8;
|
|
LPCWSTR ******local_2d0;
|
|
undefined1 local_2c8;
|
|
__time64_t local_2c0;
|
|
DWORD local_2b8 [2];
|
|
LPCWSTR ****local_2b0;
|
|
int *local_2a8;
|
|
undefined1 local_2a0;
|
|
LPCWSTR ******local_298;
|
|
undefined1 local_290;
|
|
int *local_288;
|
|
undefined1 local_280;
|
|
undefined8 local_278;
|
|
undefined8 *local_270;
|
|
undefined8 *local_268;
|
|
undefined1 *local_258;
|
|
undefined1 local_250 [264];
|
|
undefined1 *local_148;
|
|
undefined1 local_140 [264];
|
|
ulonglong local_38;
|
|
|
|
local_278 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStackY_3b8;
|
|
local_320 = GetFileSize((HANDLE)*param_1,&DStack_31c);
|
|
if ((local_320 != 0xffffffff) || (DVar8 = FUN_1400a0200(), local_2f0 = local_348, -1 < (int)DVar8)
|
|
) {
|
|
local_2f0 = CONCAT44(DStack_31c,local_320);
|
|
}
|
|
rVar27 = 0;
|
|
pLVar25 = (PLONG)((longlong)&local_2f0 + 4);
|
|
uVar26 = local_2f0 & 0xffffffff;
|
|
pvVar17 = (HANDLE)*param_1;
|
|
DVar8 = SetFilePointer(pvVar17,(LONG)local_2f0,pLVar25,0);
|
|
if (DVar8 == 0xffffffff) {
|
|
FUN_1400a0200();
|
|
}
|
|
FUN_14006cb70(pvVar17,uVar26,pLVar25,rVar27);
|
|
local_350 = PTR_DAT_1401ac010;
|
|
local_2c0 = _time64((__time64_t *)0x0);
|
|
plVar12 = FUN_1400b0130(&local_2c0,&local_310,L"%#c");
|
|
pWVar2 = (LPCWSTR)*plVar12;
|
|
local_258 = local_250;
|
|
if (pWVar2 == (LPCWSTR)0x0) {
|
|
local_258 = (undefined1 *)0x0;
|
|
goto LAB_1400cbdff;
|
|
}
|
|
iVar10 = lstrlenW(pWVar2);
|
|
iVar10 = iVar10 + 1;
|
|
if (iVar10 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80070057);
|
|
}
|
|
if (local_258 == local_250) {
|
|
if (0x80 < iVar10) {
|
|
puVar18 = calloc((longlong)iVar10,2);
|
|
goto LAB_1400cbd91;
|
|
}
|
|
LAB_1400cbda5:
|
|
puVar18 = local_250;
|
|
}
|
|
else {
|
|
if (iVar10 < 0x81) {
|
|
free(local_258);
|
|
goto LAB_1400cbda5;
|
|
}
|
|
puVar18 = _recalloc(local_258,(longlong)iVar10,2);
|
|
if (puVar18 == (undefined1 *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
LAB_1400cbd91:
|
|
if (puVar18 == (undefined1 *)0x0) {
|
|
local_258 = puVar18;
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
}
|
|
rVar27 = (longlong)iVar10 * 2;
|
|
local_258 = puVar18;
|
|
eVar11 = memcpy_s(puVar18,rVar27,pWVar2,rVar27);
|
|
if (eVar11 != 0) {
|
|
if (eVar11 == 0xc) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
if ((eVar11 == 0x16) || (eVar11 == 0x22)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80070057);
|
|
}
|
|
if (eVar11 != 0x50) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
}
|
|
LAB_1400cbdff:
|
|
ppppppWVar22 = (LPCWSTR *****)0x0;
|
|
FUN_140053d20((longlong *)&local_350,L"-------- Log start at %s --------\r\n",local_258,rVar27);
|
|
if (local_258 != local_250) {
|
|
free(local_258);
|
|
}
|
|
LOCK();
|
|
piVar19 = (int *)(local_310 + -8);
|
|
iVar10 = *piVar19;
|
|
*piVar19 = *piVar19 + -1;
|
|
UNLOCK();
|
|
if (iVar10 + -1 < 1) {
|
|
(**(code **)(**(longlong **)(local_310 + -0x18) + 8))();
|
|
}
|
|
puVar5 = local_350;
|
|
lpBuffer = PTR_DAT_1401ac010;
|
|
iVar10 = 0;
|
|
if (local_350 != (undefined *)0x0) {
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_350 != PTR_DAT_1401ac010) {
|
|
ppppppWVar15 = (LPCWSTR *****)(ulonglong)*(uint *)(local_350 + -8);
|
|
}
|
|
lpBuffer = local_350;
|
|
iVar10 = (int)ppppppWVar15;
|
|
}
|
|
uVar26 = (ulonglong)(uint)(iVar10 * 2);
|
|
lpNumberOfBytesWritten = &local_2e8;
|
|
pvVar17 = (HANDLE)*param_1;
|
|
BVar9 = WriteFile(pvVar17,lpBuffer,iVar10 * 2,lpNumberOfBytesWritten,(LPOVERLAPPED)0x0);
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
}
|
|
if (((puVar5 != (undefined *)0x0) && (puVar5 != PTR_DAT_1401ac010)) &&
|
|
(puVar5 + -8 != (undefined *)0x0)) {
|
|
piVar13 = (int *)FUN_14006cb70(pvVar17,lpBuffer,uVar26,lpNumberOfBytesWritten);
|
|
local_2a8 = piVar13;
|
|
FUN_14006b350(piVar13);
|
|
local_2a0 = 1;
|
|
piVar19 = (int *)(puVar5 + -4);
|
|
*piVar19 = *piVar19 + -1;
|
|
if (*piVar19 == 0) {
|
|
FUN_14006cc60(puVar5 + -8);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar13);
|
|
local_2a0 = 0;
|
|
}
|
|
cVar1 = *(char *)(param_1 + 0x10);
|
|
local_350 = PTR_DAT_1401ac010;
|
|
uVar28 = local_348;
|
|
do {
|
|
if (cVar1 != '\0') {
|
|
return;
|
|
}
|
|
lpBuffer_00 = (LPCWSTR ******)0x12c;
|
|
bVar7 = FUN_140076c10(param_1 + 2,300);
|
|
if (bVar7) {
|
|
local_340 = (undefined8 *)0x0;
|
|
local_328 = 0;
|
|
local_338 = (undefined8 *)0x0;
|
|
local_330 = (undefined8 *)0x0;
|
|
lpFileName = (LPCWSTR ******)(param_1 + 3);
|
|
local_2d0 = lpFileName;
|
|
FUN_14006b350((int *)lpFileName);
|
|
local_2c8 = 1;
|
|
if (*(char *)(param_1 + 10) == '\0') {
|
|
lVar3 = param_1[0x14];
|
|
while (lVar3 != 0) {
|
|
lpBuffer_00 = &local_360;
|
|
plVar12 = FUN_1400cb580(param_1 + 0x11,(longlong *)lpBuffer_00,uVar26,
|
|
lpNumberOfBytesWritten);
|
|
puVar14 = (undefined8 *)FUN_14006cbf0(0x18);
|
|
local_270 = puVar14;
|
|
local_268 = puVar14;
|
|
if (puVar14 != (undefined8 *)0x0) {
|
|
puVar14[2] = 0;
|
|
if (*plVar12 != 0) {
|
|
*(longlong *)(*plVar12 + 8) = *(longlong *)(*plVar12 + 8) + 1;
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if ((puVar14[2] != 0) &&
|
|
(*(longlong *)(puVar14[2] + 8) = *(longlong *)(puVar14[2] + 8) + -1,
|
|
*(longlong *)(puVar14[2] + 8) == 0)) {
|
|
ppppppWVar15 = (LPCWSTR *****)puVar14[2];
|
|
}
|
|
puVar14[2] = *plVar12;
|
|
if (ppppppWVar15 != (LPCWSTR *****)0x0) {
|
|
pppppWVar4 = *ppppppWVar15;
|
|
if (pppppWVar4 != (LPCWSTR ****)0x0) {
|
|
FUN_1400031e0((longlong *)(pppppWVar4 + 1),lpBuffer_00,uVar26,
|
|
lpNumberOfBytesWritten);
|
|
operator_delete(pppppWVar4);
|
|
}
|
|
FUN_14006cc60(ppppppWVar15);
|
|
}
|
|
}
|
|
}
|
|
ppppppWVar15 = local_360;
|
|
puVar14[1] = local_330;
|
|
*puVar14 = 0;
|
|
local_328 = local_328 + 1;
|
|
puVar6 = puVar14;
|
|
if (local_330 != (undefined8 *)0x0) {
|
|
*local_330 = puVar14;
|
|
puVar6 = local_338;
|
|
}
|
|
local_338 = puVar6;
|
|
local_330 = puVar14;
|
|
if ((local_360 != (LPCWSTR *****)0x0) &&
|
|
(local_360[1] = (LPCWSTR ****)((longlong)local_360[1] + -1),
|
|
local_360[1] == (LPCWSTR ****)0x0)) {
|
|
pppppWVar4 = *local_360;
|
|
if (pppppWVar4 != (LPCWSTR ****)0x0) {
|
|
FUN_1400031e0((longlong *)(pppppWVar4 + 1),lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
operator_delete(pppppWVar4);
|
|
}
|
|
FUN_14006cc60(ppppppWVar15);
|
|
}
|
|
lpFileName = local_2d0;
|
|
lVar3 = param_1[0x14];
|
|
}
|
|
}
|
|
FUN_14006b3e0((longlong)lpFileName);
|
|
local_2c8 = 0;
|
|
FUN_14006cb70(lpFileName,lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
local_370 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
pppppppWVar23 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
while (local_328 != 0) {
|
|
lpBuffer_00 = (LPCWSTR ******)&local_368;
|
|
FUN_1400cb580((longlong *)&local_340,(longlong *)lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
pppppppWVar21 = local_368;
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_368 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *local_368;
|
|
}
|
|
iVar10 = *(int *)ppppppWVar15;
|
|
iVar24 = 0;
|
|
if (iVar10 == 0) {
|
|
if ((HANDLE)*param_1 != (HANDLE)0x0) {
|
|
CloseHandle((HANDLE)*param_1);
|
|
*param_1 = 0;
|
|
}
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (pppppppWVar21 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *pppppppWVar21;
|
|
}
|
|
lpFileName = (LPCWSTR ******)ppppppWVar15[1];
|
|
if ((LPCWSTR ******)ppppppWVar15[1] == (LPCWSTR ******)0x0) {
|
|
lpFileName = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
}
|
|
pppppppWVar20 = (LPCWSTR ******)param_1[1];
|
|
if (pppppppWVar20 == (LPCWSTR ******)0x0) {
|
|
lpNumberOfBytesWritten = (LPDWORD)0x0;
|
|
lpBuffer_00 = (LPCWSTR ******)0x40000000;
|
|
uVar26 = 1;
|
|
pvVar17 = CreateFileW((LPCWSTR)lpFileName,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,4,0x80
|
|
,(HANDLE)0x0);
|
|
}
|
|
else {
|
|
lpNumberOfBytesWritten = (LPDWORD)0x1;
|
|
uVar26 = 0x40000000;
|
|
lpBuffer_00 = lpFileName;
|
|
pvVar17 = FUN_1400a0220((longlong *)pppppppWVar20,(LPCWSTR)lpFileName,0x40000000,1,
|
|
(LPSECURITY_ATTRIBUTES)0x0,4,0x80,0);
|
|
lpFileName = pppppppWVar20;
|
|
}
|
|
if (pvVar17 == (HANDLE)0xffffffffffffffff) {
|
|
DVar8 = FUN_1400a0200();
|
|
if ((int)DVar8 < 0) {
|
|
*(undefined1 *)(param_1 + 10) = 1;
|
|
goto LAB_1400cc559;
|
|
}
|
|
}
|
|
else {
|
|
*param_1 = pvVar17;
|
|
}
|
|
local_378[0] = 0xfeff;
|
|
BVar9 = WriteFile((HANDLE)*param_1,local_378,2,local_308,(LPOVERLAPPED)0x0);
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
}
|
|
local_318 = GetFileSize((HANDLE)*param_1,&DStack_314);
|
|
if ((local_318 != 0xffffffff) || (DVar8 = FUN_1400a0200(), -1 < (int)DVar8)) {
|
|
uVar28 = CONCAT44(DStack_314,local_318);
|
|
}
|
|
rVar27 = 0;
|
|
pLVar25 = (PLONG)((longlong)&local_300 + 4);
|
|
uVar26 = uVar28 & 0xffffffff;
|
|
pvVar17 = (HANDLE)*param_1;
|
|
local_300 = uVar28;
|
|
DVar8 = SetFilePointer(pvVar17,(LONG)uVar28,pLVar25,0);
|
|
if (DVar8 == 0xffffffff) {
|
|
FUN_1400a0200();
|
|
}
|
|
FUN_14006cb70(pvVar17,uVar26,pLVar25,rVar27);
|
|
local_358 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
local_2f8 = _time64((__time64_t *)0x0);
|
|
plVar12 = FUN_1400b0130(&local_2f8,(longlong *)&local_348,L"%#c");
|
|
pWVar2 = (LPCWSTR)*plVar12;
|
|
local_148 = local_140;
|
|
if (pWVar2 == (LPCWSTR)0x0) {
|
|
local_148 = (undefined1 *)0x0;
|
|
}
|
|
else {
|
|
iVar10 = lstrlenW(pWVar2);
|
|
iVar10 = iVar10 + 1;
|
|
if (iVar10 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80070057);
|
|
}
|
|
if (local_148 == local_140) {
|
|
if (0x80 < iVar10) {
|
|
puVar18 = calloc((longlong)iVar10,2);
|
|
goto LAB_1400cc408;
|
|
}
|
|
LAB_1400cc41a:
|
|
puVar18 = local_140;
|
|
}
|
|
else {
|
|
if (iVar10 < 0x81) {
|
|
free(local_148);
|
|
goto LAB_1400cc41a;
|
|
}
|
|
puVar18 = _recalloc(local_148,(longlong)iVar10,2);
|
|
if (puVar18 == (undefined1 *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
LAB_1400cc408:
|
|
if (puVar18 == (undefined1 *)0x0) {
|
|
local_148 = puVar18;
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
}
|
|
rVar27 = (longlong)iVar10 * 2;
|
|
local_148 = puVar18;
|
|
eVar11 = memcpy_s(puVar18,rVar27,pWVar2,rVar27);
|
|
if (eVar11 != 0) {
|
|
if (eVar11 == 0xc) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
if ((eVar11 == 0x16) || (eVar11 == 0x22)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80070057);
|
|
}
|
|
if (eVar11 != 0x50) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
}
|
|
}
|
|
FUN_140053d20((longlong *)&local_358,L"-------- Log start at %s --------\r\n",local_148,
|
|
rVar27);
|
|
if (local_148 != local_140) {
|
|
free(local_148);
|
|
}
|
|
LOCK();
|
|
piVar19 = (int *)(local_348 - 8);
|
|
iVar10 = *piVar19;
|
|
*piVar19 = *piVar19 + -1;
|
|
UNLOCK();
|
|
if (iVar10 + -1 < 1) {
|
|
(**(code **)(**(longlong **)(local_348 - 0x18) + 8))();
|
|
}
|
|
pppppppWVar23 = local_358;
|
|
lpBuffer_00 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
if (local_358 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_358 != (LPCWSTR ******)PTR_DAT_1401ac010) {
|
|
ppppppWVar15 = (LPCWSTR *****)(ulonglong)*(uint *)(local_358 + -1);
|
|
}
|
|
iVar24 = (int)ppppppWVar15;
|
|
lpBuffer_00 = local_358;
|
|
}
|
|
uVar26 = (ulonglong)(uint)(iVar24 * 2);
|
|
lpFileName = (LPCWSTR ******)*param_1;
|
|
lpNumberOfBytesWritten = local_2b8;
|
|
BVar9 = WriteFile(lpFileName,lpBuffer_00,iVar24 * 2,local_2b8,(LPOVERLAPPED)0x0);
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
}
|
|
if (((pppppppWVar23 != (LPCWSTR ******)0x0) &&
|
|
(pppppppWVar23 != (LPCWSTR ******)PTR_DAT_1401ac010)) &&
|
|
(pppppppWVar23 + -1 != (LPCWSTR ******)0x0)) {
|
|
lpFileName = (LPCWSTR ******)
|
|
FUN_14006cb70(lpFileName,lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
local_298 = lpFileName;
|
|
FUN_14006b350((int *)lpFileName);
|
|
local_290 = 1;
|
|
pWVar2 = (LPCWSTR)((longlong)pppppppWVar23 + -4);
|
|
*(int *)pWVar2 = *(int *)pWVar2 + -1;
|
|
if (*(int *)pWVar2 == 0) {
|
|
FUN_14006cc60(pppppppWVar23 + -1);
|
|
}
|
|
FUN_14006b3e0((longlong)lpFileName);
|
|
local_290 = 0;
|
|
}
|
|
local_358 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
pppppppWVar21 = local_368;
|
|
pppppppWVar23 = local_370;
|
|
}
|
|
else if (iVar10 == 1) {
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_368 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *local_368;
|
|
}
|
|
local_2b0 = ppppppWVar15[3];
|
|
plVar12 = FUN_1400b0130((__time64_t *)&local_2b0,&local_2d8,L"%#c");
|
|
lVar3 = *plVar12;
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (pppppppWVar21 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *pppppppWVar21;
|
|
}
|
|
pwVar16 = FUN_1400d9a00(*(int *)(ppppppWVar15 + 2));
|
|
FUN_140053d20((longlong *)&local_370,L"[%s] [%s] %s\r\n",pwVar16,lVar3);
|
|
LOCK();
|
|
piVar19 = (int *)(local_2d8 + -8);
|
|
iVar10 = *piVar19;
|
|
*piVar19 = *piVar19 + -1;
|
|
UNLOCK();
|
|
if (iVar10 + -1 < 1) {
|
|
(**(code **)(**(longlong **)(local_2d8 + -0x18) + 8))();
|
|
}
|
|
pppppppWVar23 = local_370;
|
|
lpBuffer_00 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
if (local_370 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_370 != (LPCWSTR ******)PTR_DAT_1401ac010) {
|
|
ppppppWVar15 = (LPCWSTR *****)(ulonglong)*(uint *)(local_370 + -1);
|
|
}
|
|
iVar24 = (int)ppppppWVar15;
|
|
lpBuffer_00 = local_370;
|
|
}
|
|
uVar26 = (ulonglong)(uint)(iVar24 * 2);
|
|
lpNumberOfBytesWritten = &local_2e4;
|
|
lpFileName = (LPCWSTR ******)*param_1;
|
|
BVar9 = WriteFile(lpFileName,lpBuffer_00,iVar24 * 2,lpNumberOfBytesWritten,
|
|
(LPOVERLAPPED)0x0);
|
|
pppppppWVar21 = local_368;
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
pppppppWVar21 = local_368;
|
|
}
|
|
}
|
|
else {
|
|
lpFileName = (LPCWSTR ******)(ulonglong)(iVar10 - 2U);
|
|
if (iVar10 - 2U == 0) {
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_368 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *local_368;
|
|
}
|
|
pppppWVar4 = ppppppWVar15[1];
|
|
iVar10 = 0;
|
|
if ((pppppWVar4 != (LPCWSTR ****)0x0) &&
|
|
(iVar10 = iVar24, pppppWVar4 != (LPCWSTR ****)PTR_DAT_1401ac010)) {
|
|
iVar10 = *(int *)(pppppWVar4 + -1);
|
|
}
|
|
ppppppWVar15 = ppppppWVar22;
|
|
if (local_368 != (LPCWSTR ******)0x0) {
|
|
ppppppWVar15 = *local_368;
|
|
}
|
|
lpBuffer_00 = (LPCWSTR ******)ppppppWVar15[1];
|
|
if ((LPCWSTR ******)ppppppWVar15[1] == (LPCWSTR ******)0x0) {
|
|
lpBuffer_00 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
}
|
|
uVar26 = (ulonglong)(uint)(iVar10 * 2);
|
|
lpNumberOfBytesWritten = local_2e0;
|
|
lpFileName = (LPCWSTR ******)*param_1;
|
|
BVar9 = WriteFile(lpFileName,lpBuffer_00,iVar10 * 2,lpNumberOfBytesWritten,
|
|
(LPOVERLAPPED)0x0);
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
}
|
|
}
|
|
}
|
|
LAB_1400cc559:
|
|
pppppppWVar20 = local_368;
|
|
if (pppppppWVar21 != (LPCWSTR ******)0x0) {
|
|
pppppppWVar21 = pppppppWVar21 + 1;
|
|
*pppppppWVar21 = (LPCWSTR *****)((longlong)*pppppppWVar21 + -1);
|
|
pppppppWVar23 = local_370;
|
|
if (*pppppppWVar21 == (LPCWSTR *****)0x0) {
|
|
ppppppWVar15 = *local_368;
|
|
if (ppppppWVar15 != (LPCWSTR *****)0x0) {
|
|
FUN_1400031e0((longlong *)(ppppppWVar15 + 1),lpBuffer_00,uVar26,lpNumberOfBytesWritten
|
|
);
|
|
operator_delete(ppppppWVar15);
|
|
}
|
|
FUN_14006cc60(pppppppWVar20);
|
|
lpFileName = pppppppWVar20;
|
|
pppppppWVar23 = local_370;
|
|
}
|
|
}
|
|
}
|
|
if (((pppppppWVar23 != (LPCWSTR ******)0x0) &&
|
|
(pppppppWVar23 != (LPCWSTR ******)PTR_DAT_1401ac010)) &&
|
|
(pppppppWVar23 + -1 != (LPCWSTR ******)0x0)) {
|
|
piVar19 = (int *)FUN_14006cb70(lpFileName,lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
local_288 = piVar19;
|
|
FUN_14006b350(piVar19);
|
|
local_280 = 1;
|
|
pWVar2 = (LPCWSTR)((longlong)pppppppWVar23 + -4);
|
|
*(int *)pWVar2 = *(int *)pWVar2 + -1;
|
|
if (*(int *)pWVar2 == 0) {
|
|
FUN_14006cc60(pppppppWVar23 + -1);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar19);
|
|
local_280 = 0;
|
|
}
|
|
local_370 = (LPCWSTR ******)PTR_DAT_1401ac010;
|
|
FUN_1400cb620((longlong *)&local_340,(longlong *)lpBuffer_00,uVar26,lpNumberOfBytesWritten);
|
|
if (local_340 != (undefined8 *)0x0) {
|
|
(**(code **)*local_340)(local_340,1);
|
|
}
|
|
}
|
|
cVar1 = *(char *)(param_1 + 0x10);
|
|
} while( true );
|
|
}
|
|
|