// File: /workspace/github_cpp_makefile_star2_O2/fuad00[P]wifitool/code.cpp
// Function: main
int main()	{
	system(start_func);                   // Пробуем восстановить работу сетевых карт и зачищаем остаточные файлы (Восстановление после предыдущего запуска)
	progress(0);                          // Выводим строку прогресса
	cout << "\n                   Wifitool v0.1" << endl;
	cout << "\n\n[!] Внимание!" << endl;    // Дисклеймер
	cout << "Данная программа несёт демонстративный характер." << endl;
	cout << "Мы не неёсем ответственности за ваши действия." << endl;
	cout << "\n[?] Введите '0' или '?' для справки.\n\n";
	while(true)	{
		cout << "WiFi Tool: ";        // Создаём иллюзию командной оболочки
		cin >> user_input;            // Ожидаем ввод
		if(user_input == "0" || user_input == "?"){help_func();} // Если ввели 0, Запускаем функцию help_func()
		else if(user_input == "1"){check_func();}                // Если ввели 1, Запускаем функцию check_func()
		else if(user_input == "2"){monitor_func();}              // Если ввели 2, Запускаем функцию monitor_func()
		else if(user_input == "3")	{                        // Если ввели 3
			system("mkdir tmp");			// Создаём папку tmp/
			thread t3(sniff_real_func);             // Инициализируем функцию для работы в многопоточном (параллельном) режиме
			t3.detach();                            // Запускаем функцию и продолжаем работу кода
			sniff_func();                           // Запускаем функцию
		}

		else if(user_input == "4")	{               // Если ввели 4
			progress(70);				// Выводим строку прогресса
			thread t1(deauth_func);                 // Инициализируем функцию для работы в многопоточном (параллельном) режиме
			t1.detach();                            // Запускаем функцию и продолжаем работу кода
			animation();                            // при помощи этой КРАСИВОЙ функции задержки, aireplay-ng не выдает ошибку и начинает деаут на правильном канале!
			progress(80);                           // Выводим строку прогресса
			cout << "\n[!] Как только получите хендшейк, нажмите в этом окне 'ctrl - c'" << endl;
			signal(SIGINT, sigint);                 // Захватываем ctrl - c для остановки aireplay-ng
			for(;;) {
				if (!ctrlc_pressed) {           // Если ctrl - c НЕ нажата
					deauth_func2();         // Запускаем функцию, глушащую сеть
					system("sleep 6");      // переодичность запуска глушилки. Для того, чтобы дать AP отдышаться.
				}
				else {                          // Если ctrl - c нажата
					goto End;               // Выходим из цикла
				}
			}
			End:                                    // Результат выхода из цика
				progress(90);                   // Выводим строку прогресса
			cout << "\n[+] Хендшейк пойман. Для брутфорса запустите [5].\n" << endl;

		}
		else if(user_input == "5"){crack_func();}       // Если ввели 5, Запускаем функцию crack_func()
		else {cout << "[-] Команда не распознана. Введите [0] или [?] для справки.\n\n";}      // Если введена неверная команда
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0x4b22(%rip), %rdi      # 0x71a8
callq 0x20f0
xorl %edi, %edi
callq 0x28d1
movq 0x4937(%rip), %rbx      # 0x6fd0
leaq 0x1a31(%rip), %rsi      # 0x40d1
movq %rbx, %rdi
callq 0x2130
movq %rax, %rdi
callq 0x20a0
leaq 0x1a3c(%rip), %rsi      # 0x40f3
movq %rbx, %rdi
callq 0x2130
movq %rax, %rdi
callq 0x20a0
leaq 0x1a3d(%rip), %rsi      # 0x410b
movq %rbx, %rdi
callq 0x2130
movq %rax, %rdi
callq 0x20a0
leaq 0x1a82(%rip), %rsi      # 0x4167
movq %rbx, %rdi
callq 0x2130
movq %rax, %rdi
callq 0x20a0
leaq 0x1ac1(%rip), %rsi      # 0x41bd
movq %rbx, %rdi
callq 0x2130
leaq 0x1aee(%rip), %r14      # 0x41f9
movq 0x48ce(%rip), %r15      # 0x6fe0
leaq 0x4bb7(%rip), %r12      # 0x72d0
leaq 0x1ae5(%rip), %r13      # 0x4205
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2130
movq %r15, %rdi
movq %r12, %rsi
callq 0x2170
movq %r12, %rdi
movq %r13, %rsi
callq 0x33f5
testb %al, %al
jne 0x2758
movq %r12, %rdi
leaq 0x1ab8(%rip), %rsi      # 0x4207
callq 0x33f5
testb %al, %al
je 0x275f
callq 0x29a1
jmp 0x2720
movq %r12, %rdi
leaq 0x1d83(%rip), %rsi      # 0x44ec
callq 0x33f5
testb %al, %al
je 0x2779
callq 0x2a2b
jmp 0x2720
movq %r12, %rdi
leaq 0x1a86(%rip), %rsi      # 0x4209
callq 0x33f5
testb %al, %al
je 0x2793
callq 0x2ad3
jmp 0x2720
movq %r12, %rdi
leaq 0x239b(%rip), %rsi      # 0x4b38
callq 0x33f5
testb %al, %al
je 0x27d6
leaq 0x1a5e(%rip), %rdi      # 0x420b
callq 0x20f0
movq %rsp, %rbp
movq %rbp, %rdi
leaq 0x3c5(%rip), %rsi       # 0x2b84
callq 0x3402
movq %rbp, %rdi
callq 0x21c0
callq 0x2bf6
jmp 0x2899
movq %r12, %rdi
leaq 0x1a35(%rip), %rsi      # 0x4215
callq 0x33f5
testb %al, %al
je 0x285d
pushq $0x46
popq %rdi
callq 0x28d1
movq %rsp, %rbp
movq %rbp, %rdi
leaq 0x707(%rip), %rsi       # 0x2f05
callq 0x3402
movq %rbp, %rdi
leaq 0x1a75(%rip), %rbp      # 0x4282
callq 0x21c0
callq 0x30c3
pushq $0x50
popq %rdi
callq 0x28d1
movq %rbx, %rdi
leaq 0x19ee(%rip), %rsi      # 0x4217
callq 0x2130
movq %rax, %rdi
callq 0x20a0
pushq $0x2
popq %rdi
leaq -0x1d4(%rip), %rsi      # 0x266c
callq 0x2160
cmpb $0x0, 0x4aa4(%rip)      # 0x72f0
jne 0x287a
callq 0x3219
movq %rbp, %rdi
callq 0x20f0
jmp 0x2845
movq %r12, %rdi
leaq 0x1a7a(%rip), %rsi      # 0x42e1
callq 0x33f5
testb %al, %al
je 0x28a6
callq 0x32b9
jmp 0x2720
pushq $0x5a
popq %rdi
callq 0x28d1
movq %rbx, %rdi
leaq 0x19fe(%rip), %rsi      # 0x428a
callq 0x2130
movq %rax, %rdi
callq 0x20a0
movq %rsp, %rdi
callq 0x3468
jmp 0x2720
movq %rbx, %rdi
leaq 0x1a33(%rip), %rsi      # 0x42e3
callq 0x2130
jmp 0x2720
jmp 0x28be
jmp 0x28be
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3468
movq %rbx, %rdi
callq 0x21d0