Function at 0x401cb5
Capabilities:
Check for time delay via queryperformancecounter
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x154
mov dword [esp + 4], str.Click_anywhere_to_start_recording._Press_left_shift_to_save_recording._n
mov dword [esp], sym.imp.libstdc_6.dll_std::cout
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
lea eax, [ebp - 0x20]
mov dword [esp], eax
call sym._QueryPerformanceFrequency_4
sub esp, 4
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov byte [ebp - 9], 0
mov dword [esp], 0xa0
call sym._GetAsyncKeyState_4
sub esp, 4
not eax
shr ax, 0xf
test al, al
je 0x401ec4
mov dword [esp], 1
call sym._GetAsyncKeyState_4
sub esp, 4
shr ax, 0xf
test al, al
je 0x401d01
movzx eax, byte [ebp - 9]
xor eax, 1
test al, al
je 0x401d6b
mov dword [esp + 4], str.Recording..._n
mov dword [esp], sym.imp.libstdc_6.dll_std::cout
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
lea eax, [ebp - 0x28]
mov dword [esp], eax
call sym._QueryPerformanceCounter_4
sub esp, 4
mov byte [ebp - 9], 1
jmp 0x401ea7
lea eax, [ebp - 0x30]
mov dword [esp], eax
call sym._QueryPerformanceCounter_4
sub esp, 4
mov ecx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
sub ecx, eax
sbb ebx, edx
mov dword [ebp - 0x148], ecx
mov dword [ebp - 0x144], ebx
fild qword [ebp - 0x148]
fstp qword [ebp - 0x130]
fld qword [ebp - 0x130]
fld qword [0x4072c8]
fmulp st(1)
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x144], edx
fild qword [ebp - 0x148]
fstp qword [ebp - 0x130]
fld qword [ebp - 0x130]
fdivp st(1)
fstp dword [ebp - 0x14]
fld dword [0x4072d0]
fld dword [ebp - 0x14]
fxch st(1)
fucompp
fnstsw ax
sahf
jb 0x401e67
fld dword [ebp - 0x14]
fnstcw word [ebp - 0x136]
movzx eax, word [ebp - 0x136]
mov ah, 0xc
mov word [ebp - 0x138], ax
fldcw word [ebp - 0x138]
fistp dword [ebp - 0x13c]
fldcw word [ebp - 0x136]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x18]
mov dword [esp], eax
mov ecx, 0x40a020
call dbg.std::vector<int, std::allocator<int> >::push_back(int&&)
sub esp, 4
mov dword [esp + 4], str.Recorded_delay:
mov dword [esp], sym.imp.libstdc_6.dll_std::cout
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
fld dword [ebp - 0x14]
fstp dword [esp]
mov ecx, eax
call sym.std::ostream::operator___float_
sub esp, 4
mov dword [esp + 4], 0x4070dc
mov dword [esp], eax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
jmp 0x401e9b
mov dword [esp + 4], str.Delay_too_long__
mov dword [esp], sym.imp.libstdc_6.dll_std::cout
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
fld dword [ebp - 0x14]
fstp dword [esp]
mov ecx, eax
call sym.std::ostream::operator___float_
sub esp, 4
mov dword [esp + 4], str.ms_._Ignoring._n
mov dword [esp], eax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov dword [esp], 1
call sym._GetAsyncKeyState_4
sub esp, 4
shr ax, 0xf
test al, al
je 0x401d01
jmp 0x401ea7
mov dword [esp + 4], 0x20
mov dword [esp], 0x10
call dbg.std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea eax, [ebp - 0x128]
mov dword [esp + 4], edx
mov dword [esp], str.click_delays.txt
mov ecx, eax
call sym.std::basic_ofstream_char__std::char_traits_char___::basic_ofstream_char_const__std::_Ios_Openmode_
sub esp, 8
lea eax, [ebp - 0x128]
mov ecx, eax
call sym.std::basic_ofstream_char__std::char_traits_char___::is_open__
test al, al
je 0x401fa3
mov dword [ebp - 0x10], 0
mov ecx, 0x40a020
call dbg.std::vector<int, std::allocator<int> >::size() const
cmp eax, dword [ebp - 0x10]
seta al
test al, al
je 0x401f80
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
mov ecx, 0x40a020
call dbg.std::vector<int, std::allocator<int> >::operator[](unsigned int)
sub esp, 4
mov edx, dword [eax]
lea eax, [ebp - 0x128]
mov dword [esp], edx
mov ecx, eax
call sym.std::ostream::operator___int_
sub esp, 4
mov ecx, 0x40a020
call dbg.std::vector<int, std::allocator<int> >::size() const
sub eax, 1
cmp eax, dword [ebp - 0x10]
setne al
test al, al
je 0x401f7a
mov dword [esp + 4], 0x4070e0
lea eax, [ebp - 0x128]
mov dword [esp], eax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
add dword [ebp - 0x10], 1
jmp 0x401f11
lea eax, [ebp - 0x128]
mov ecx, eax
call sym.std::basic_ofstream_char__std::char_traits_char___::close__
mov dword [esp + 4], str.Recording_saved_to_click_delays.txt._n
mov dword [esp], sym.imp.libstdc_6.dll_std::cout
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
jmp 0x401fb7
mov dword [esp + 4], str.Unable_to_open_file_for_writing._n
mov dword [esp], sym.imp.libstdc_6.dll_std::cerr
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
lea eax, [ebp - 0x128]
mov ecx, eax
call sym.std::basic_ofstream_char__std::char_traits_char___::basic_ofstream__
jmp 0x401fdf
mov ebx, dword [ebp - 4]
leave
ret