Function at 0x401f20
Capabilities:
Terminate thread

Disassembly:
push 0xffffffffffffffff
push 0x60fe28
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0xc], esi
mov dword [esi], vtable.AlarmSetDlg.0
lea eax, [esi + 0x404]
mov dword [esp + 0x18], 8
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
lea edi, [esi + 0x1700]
mov ebp, 0x24
mov ecx, dword [edi]
test ecx, ecx
je 0x401f72
mov edx, dword [ecx]
push 1
call dword [edx + 4]
add edi, 4
dec ebp
jne 0x401f65
lea edi, [esi + 0x17d0]
mov ebp, 0x10
mov ecx, dword [edi - 0x40]
test ecx, ecx
je 0x401f91
mov eax, dword [ecx]
push 1
call dword [eax + 4]
mov ecx, dword [edi]
test ecx, ecx
je 0x401f9e
mov edx, dword [ecx]
push 1
call dword [edx + 4]
add edi, 4
dec ebp
jne 0x401f83
lea ecx, [esi + 0x44c]
mov byte [esp + 0x18], 7
call fcn.0044d4f0
mov eax, dword [esi + 0x448]
mov edi, dword [sym.imp.MSVCRT.dll_free]
sub eax, 0xc
or ebp, 0xffffffff
mov ecx, dword [eax]
cmp ecx, ebp
je 0x401fd9
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x401fd9
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x444]
sub eax, 0xc
mov ecx, dword [eax]
cmp ecx, ebp
je 0x401ff5
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x401ff5
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x440]
sub eax, 0xc
mov ecx, dword [eax]
cmp ecx, ebp
je 0x402011
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x402011
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x400]
sub eax, 0xc
mov ecx, dword [eax]
cmp ecx, ebp
je 0x40202d
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x40202d
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x3fc]
sub eax, 0xc
mov ecx, dword [eax]
cmp ecx, ebp
je 0x402049
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x402049
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x3f8]
sub eax, 0xc
mov ecx, dword [eax]
cmp ecx, ebp
je 0x402065
dec ecx
test ecx, ecx
mov dword [eax], ecx
jne 0x402065
push eax
call edi
add esp, 4
mov eax, dword [esi + 0x1c0]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, ebp
mov dword [esi + method.cnComm.virtual_0], vtable.cnComm.0
je 0x402114
mov eax, dword [esi + 0x1c0]
push 5
push eax
call dword [sym.imp.KERNEL32.dll_PurgeComm]
mov eax, dword [esi + 0x234]
test eax, eax
je 0x402105
mov byte [esi + 0x244], 0
mov ecx, dword [esi + 0x1c0]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_SetCommMask]
mov edx, dword [esi + 0x258]
push edx
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x234]
push 0x64
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x4020e5
mov ecx, dword [esi + 0x234]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
test eax, eax
je 0x402105
mov edx, dword [esi + 0x234]
push edx
call edi
mov eax, dword [esi + 0x258]
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
mov dword [esi + 0x234], 0
mov ecx, dword [esi + 0x1c0]
push ecx
call edi
mov dword [esi + 0x1c0], ebp
mov eax, dword [esi + 0x21c]
test eax, eax
je 0x402121
push eax
call edi
mov eax, dword [esi + 0x230]
test eax, eax
je 0x40212e
push eax
call edi
mov eax, dword [esi + 0x258]
test eax, eax
je 0x40213b
push eax
call edi
lea edx, [esi + 0x25c]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov ecx, esi
mov dword [esp + 0x18], ebp
call fcn.0044f560
mov ecx, dword [esp + 0x10]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0x10
ret