146 lines
3.9 KiB
C
146 lines
3.9 KiB
C
int main(int param_1, char **argv, char **envp)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
undefined4 *puVar4;
|
|
char *pcVar5;
|
|
byte *pbVar6;
|
|
int in_GS_OFFSET;
|
|
bool bVar7;
|
|
bool bVar8;
|
|
bool bVar9;
|
|
byte bVar10;
|
|
char **local_1c8;
|
|
char **local_1c4;
|
|
undefined4 storage_service_data_array [100];
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined4 local_24;
|
|
undefined4 local_20;
|
|
undefined4 local_1c;
|
|
undefined4 local_18;
|
|
int local_14;
|
|
|
|
bVar10 = 0;
|
|
local_1c4 = param_2;
|
|
local_1c8 = param_3;
|
|
local_14 = *(int *)(in_GS_OFFSET + 0x14);
|
|
local_2c = 0;
|
|
local_28 = 0;
|
|
local_24 = 0;
|
|
local_20 = 0;
|
|
local_1c = 0;
|
|
local_18 = 0;
|
|
puVar4 = storage_service_data_array;
|
|
for (int i = 100; i != 0; i--) {
|
|
storage_service_data_array[i] = 0;
|
|
}
|
|
while ( *argv )
|
|
{
|
|
memset((void *)*argv, 0, strlen(*argv));
|
|
++argv;
|
|
}
|
|
while ( *envp )
|
|
{
|
|
memset((void *)*envp, 0, strlen(*envp));
|
|
++envp;
|
|
}
|
|
|
|
puts(
|
|
"----------------------------------------------------"
|
|
"Welcome to wil\'s crappy number stora ge service! "
|
|
"----------------------------------------------------"
|
|
"Commands: "
|
|
" store - store a number into the data storage "
|
|
" read - read a number from the data storage "
|
|
" quit - exit the program "
|
|
"----------------------------------------------------"
|
|
" wil has reserved some storage :> "
|
|
"----------------------------------------------------"
|
|
);
|
|
do {
|
|
printf("Input command: ");
|
|
local_2c = 1;
|
|
fgets((char *)&local_28,0x14,stdin);
|
|
uVar3 = 0xffffffff;
|
|
puVar4 = &local_28;
|
|
do {
|
|
if (uVar3 == 0) break;
|
|
uVar3 = uVar3 - 1;
|
|
cVar1 = *(char *)puVar4;
|
|
puVar4 = (undefined4 *)((int)puVar4 + (uint)bVar10 * -2 + 1);
|
|
} while (cVar1 != '\0');
|
|
uVar3 = ~uVar3;
|
|
bVar7 = uVar3 == 1;
|
|
bVar9 = uVar3 == 2;
|
|
*(undefined *)((int)&local_2c + uVar3 + 2) = 0;
|
|
iVar2 = 5;
|
|
puVar4 = &local_28;
|
|
pbVar6 = (byte *)"store";
|
|
do {
|
|
if (iVar2 == 0) break;
|
|
iVar2 = iVar2 + -1;
|
|
bVar7 = *(byte *)puVar4 < *pbVar6;
|
|
bVar9 = *(byte *)puVar4 == *pbVar6;
|
|
puVar4 = (undefined4 *)((int)puVar4 + (uint)bVar10 * -2 + 1);
|
|
pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
|
|
} while (bVar9);
|
|
bVar8 = false;
|
|
bVar7 = (!bVar7 && !bVar9) == bVar7;
|
|
if (bVar7) {
|
|
local_2c = store_number(storage_service_data_array);
|
|
}
|
|
else {
|
|
iVar2 = 4;
|
|
puVar4 = &local_28;
|
|
pbVar6 = &DAT_08048d61;
|
|
do {
|
|
if (iVar2 == 0) break;
|
|
iVar2 = iVar2 + -1;
|
|
bVar8 = *(byte *)puVar4 < *pbVar6;
|
|
bVar7 = *(byte *)puVar4 == *pbVar6;
|
|
puVar4 = (undefined4 *)((int)puVar4 + (uint)bVar10 * -2 + 1);
|
|
pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
|
|
} while (bVar7);
|
|
bVar9 = false;
|
|
bVar7 = (!bVar8 && !bVar7) == bVar8;
|
|
if (bVar7) {
|
|
local_2c = read_number(storage_service_data_array);
|
|
}
|
|
else {
|
|
iVar2 = 4;
|
|
puVar4 = &local_28;
|
|
pbVar6 = &DAT_08048d66;
|
|
do {
|
|
if (iVar2 == 0) break;
|
|
iVar2 = iVar2 + -1;
|
|
bVar9 = *(byte *)puVar4 < *pbVar6;
|
|
bVar7 = *(byte *)puVar4 == *pbVar6;
|
|
puVar4 = (undefined4 *)((int)puVar4 + (uint)bVar10 * -2 + 1);
|
|
pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
|
|
} while (bVar7);
|
|
if ((!bVar9 && !bVar7) == bVar9) {
|
|
if (local_14 == *(int *)(in_GS_OFFSET + 0x14)) {
|
|
return 0;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
__stack_chk_fail();
|
|
}
|
|
}
|
|
}
|
|
if (local_2c == 0) {
|
|
printf(" Completed %s command successfully\n",&local_28);
|
|
}
|
|
else {
|
|
printf(" Failed to do %s command\n",&local_28);
|
|
}
|
|
local_28 = 0;
|
|
local_24 = 0;
|
|
local_20 = 0;
|
|
local_1c = 0;
|
|
local_18 = 0;
|
|
} while( true );
|
|
}
|