uint __thiscall CFile::DecryptFile(CFile *this,int buffer,undefined4 length)
{
uint data;
uint character;
int x;
int y;
CheckFileHeader((cFile *)this);
data = Read((CFile *)this,buffer,length);
if ((this[0x20] != (CFile)0x0) && (character = 0, data != 0)) {
do {
y = *(int *)(this + 0x1c);
x = *(int *)(this + 0x18);
*(byte *)(character + buffer) =
*(byte *)(character + buffer) ^ "theocracy sux"[x] ^ "mutant technology"[y];
*(uint *)(this + 0x18) = (x + 1U) % 0xd;
character = character + 1;
*(uint *)(this + 0x1c) = (y + 1U) % 0x11;
} while (character < data);
}
Close(this);
return data;
}
undefined4 __fastcall CFile::CheckFileHeader(cFile *path)
{
undefined4 file;
uint index;
int address;
char file_header [8];
char error_message [1024];
file = OpenR(path);
if ((char)file == '\0') {
return file;
}
Read((CFile *)path,file_header,7);
index = 0;
do {
if (file_header[index] != "RSA4096"[index]) {
path[0x20] = (cFile)0x0;
sprintf(error_message,s_Unknown_textfile_format!_%s_005e01d0,*(undefined4 *)(path + 0x14));
die(error_message);
file = SeekB((CFile *)path,0);
return CONCAT31((int3)((uint)file >> 8),1);
}
index = index + 1;
} while (index < 7);
path[0x20] = (cFile)0x1;
address = SeekIgnoreHeader((CFile *)path,0); //Always uses 0 for "index"
return CONCAT31((int3)((uint)address >> 8),1);
}
int __thiscall CFile::SeekIgnoreHeader(CFile *this,uint start)
{
int index;
if (this[0x20] != (CFile)0x0) {
index = SeekB((CFile *)this,start + 7);
*(uint *)(this + 0x18) = start % 0xd;
*(uint *)(this + 0x1c) = start % 0x11;
return index + -7;
}
index = SeekB((CFile *)this,start);
return index;
}
void __thiscall CFile::SeekB(CFile *this,undefined4 param_1)
{
bool bVar1;
bVar1 = isOpen(this);
if (!bVar1) {
die(s_cFile::SeekB_file_is_not_open_005e0130);
}
(**(code **)(**(int **)(this + 0xc) + 0x10))(param_1,0);
return;
}
void __thiscall CFile::Read(CFile *this,undefined4 buffer,undefined4 length)
{
int iVar1;
bool isOpen;
undefined4 uStack_10;
isOpen = CFile::isOpen(this);
if (!isOpen) {
uStack_10 = 0x54a567;
die(s_cFile::Read_file_is_not_open_005e0190);
}
iVar1 = **(int **)(this + 0xc);
uStack_10 = length;
FUN_005674e0(&uStack_10,buffer);
(**(code **)(iVar1 + 0x14))();
return;
}
void __thiscall FUN_005674e0(void *this,undefined4 param_1)
{
*(undefined4 *)this = param_1;
return;
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎