// File: /workspace/github_cpp_makefile_star2_O3/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 0x595a(%rip), %rdi      # 0x81a0
callq 0x20f0
xorl %edi, %edi
callq 0x2bb3
movq 0x5777(%rip), %rbx      # 0x7fd0
leaq 0x2871(%rip), %rsi      # 0x50d1
movl $0x21, %edx
movq %rbx, %rdi
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
leaq 0x2858(%rip), %rsi      # 0x50f3
movl $0x17, %edx
movq %rbx, %rdi
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
leaq 0x2835(%rip), %rsi      # 0x510b
movl $0x5b, %edx
movq %rbx, %rdi
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
leaq 0x2856(%rip), %rsi      # 0x5167
movl $0x55, %edx
movq %rbx, %rdi
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
leaq 0x2871(%rip), %rsi      # 0x51bd
movl $0x3b, %edx
movq %rbx, %rdi
callq 0x2150
leaq 0x2899(%rip), %r14      # 0x51f9
movq 0x5679(%rip), %r15      # 0x7fe0
leaq 0x595a(%rip), %r12      # 0x82c8
leaq 0x2890(%rip), %r13      # 0x5205
leaq 0x2906(%rip), %rbp      # 0x5282
movl $0xb, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2150
movq %r15, %rdi
movq %r12, %rsi
callq 0x2170
movq %r12, %rdi
movq %r13, %rsi
callq 0x2070
testl %eax, %eax
je 0x2a41
movq %r12, %rdi
leaq 0x2853(%rip), %rsi      # 0x5207
callq 0x2070
testl %eax, %eax
je 0x2a41
movq %r12, %rdi
leaq 0x2b21(%rip), %rsi      # 0x54ec
callq 0x2070
testl %eax, %eax
je 0x2a4b
movq %r12, %rdi
leaq 0x282b(%rip), %rsi      # 0x5209
callq 0x2070
testl %eax, %eax
je 0x2a55
movq %r12, %rdi
leaq 0x3147(%rip), %rsi      # 0x5b38
callq 0x2070
testl %eax, %eax
je 0x2a5f
movq %r12, %rdi
leaq 0x2811(%rip), %rsi      # 0x5215
callq 0x2070
testl %eax, %eax
je 0x2aa1
movq %r12, %rdi
leaq 0x28c6(%rip), %rsi      # 0x52e1
callq 0x2070
testl %eax, %eax
je 0x2b91
movl $0x64, %edx
movq %rbx, %rdi
leaq 0x28ac(%rip), %rsi      # 0x52e3
callq 0x2150
jmp 0x297c
callq 0x2cb0
jmp 0x297c
callq 0x2dee
jmp 0x297c
callq 0x2edf
jmp 0x297c
leaq 0x27a5(%rip), %rdi      # 0x520b
callq 0x20f0
movq %rsp, %rbx
movq %rbx, %rdi
leaq 0x5d4(%rip), %rsi       # 0x304c
callq 0x40b8
movq %rbx, %rdi
callq 0x21b0
callq 0x3149
cmpq $0x0, (%rsp)
jne 0x2bae
movq 0x5534(%rip), %rbx      # 0x7fd0
jmp 0x297c
movl $0x46, %edi
callq 0x2bb3
movq %rsp, %rbx
movq %rbx, %rdi
leaq 0xc62(%rip), %rsi       # 0x371a
callq 0x40b8
movq %rbx, %rdi
movq 0x5509(%rip), %rbx      # 0x7fd0
callq 0x21b0
callq 0x3be2
movl $0x50, %edi
callq 0x2bb3
movl $0x6a, %edx
movq %rbx, %rdi
leaq 0x272d(%rip), %rsi      # 0x5217
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
movl $0x2, %edi
leaq -0x2f6(%rip), %rsi      # 0x282c
callq 0x2160
cmpb $0x0, 0x57ba(%rip)      # 0x82e8
jne 0x2b3f
callq 0x3e33
movq %rbp, %rdi
callq 0x20f0
jmp 0x2b27
movl $0x5a, %edi
callq 0x2bb3
movl $0x56, %edx
movq %rbx, %rdi
leaq 0x2732(%rip), %rsi      # 0x528a
callq 0x2150
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2120
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20b0
cmpq $0x0, (%rsp)
je 0x297c
jmp 0x2bae
callq 0x3fba
jmp 0x297c
jmp 0x2b9f
jmp 0x2b9f
cmpq $0x0, (%rsp)
jne 0x2bae
movq %rax, %rdi
callq 0x21c0
callq 0x2060