Function at 0x40d590
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x830
push ebx
push ebp
push esi
mov esi, dword [esp + 0x840]
xor ebx, ebx
push edi
mov al, byte [esi + 0x874]
lea ebp, [esi + 0x874]
cmp al, bl
je 0x40da85
mov eax, dword [esi + 0x19c]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebx
push ebx
push 0x1009
push eax
call edi
mov edx, dword [esi + 0x19c]
lea ecx, [esp + 0x18]
push ecx
push ebx
push 0x1007
push edx
mov dword [esp + 0x28], 3
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x3c], str.__________
call edi
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
jne 0x40d61f
push ebp
call fcn.00445110
add esp, 4
test eax, eax
jne 0x40da28
lea eax, [esp + 0x40]
push eax
push str.Type
push ebp
call fcn.00444cd0
add esp, 0xc
test eax, eax
jne 0x40da28
lea ecx, [esp + 0x10]
lea edx, [esp + 0x40]
push ecx
push 0x49f190
push edx
call fcn.0047e1c0
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, 0x23
je 0x40d667
mov dword [esp + 0x10], 0x199
jmp 0x40da30
lea eax, [esp + 0x40]
push eax
push str.Volume
push ebp
call fcn.00444cd0
add esp, 0xc
test eax, eax
jne 0x40da28
lea edi, [esp + 0x40]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0x20
ja 0x40da28
mov edx, dword [esi + 0x1a0]
mov edi, dword [sym.imp.USER32.dll_SetDlgItemTextA]
lea ecx, [esp + 0x40]
push ecx
push 0x4a6
push edx
call edi
lea eax, [esp + 0x10]
push eax
push str.Link
push ebp
call fcn.00444e60
add esp, 0xc
test eax, eax
jne 0x40da28
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x40d6dc
cmp eax, 1
jne 0x40da28
mov edx, dword [esi + 0x1a0]
xor ecx, ecx
cmp eax, ebx
setne cl
push ecx
push 0x49f
push edx
call dword [sym.imp.USER32.dll_CheckDlgButton]
lea eax, [esp + 0x10]
push eax
push str.ShowDVD
push ebp
call fcn.00444e60
add esp, 0xc
test eax, eax
je 0x40d711
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x1a0]
push ebx
push ecx
push 0x130c
push 0x53e
push edx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea eax, [esp + 0x10]
push eax
push str.RecTypeCD
push ebp
call fcn.00444e60
add esp, 0xc
test eax, eax
je 0x40d754
mov dword [esp + 0x10], 0x2101
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x1a0]
push 0x2101
push ecx
push 0x53c
push edx
call fcn.00471c30
lea eax, [esp + 0x20]
push eax
push str.FileSystemCD
push ebp
call fcn.00444e60
add esp, 0x1c
test eax, eax
je 0x40d78e
mov dword [esp + 0x10], 0x90
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x1a0]
push 0x90
push ecx
push 0x49e
push edx
call fcn.00471c30
lea eax, [esp + 0x20]
push eax
push str.RecTypeDVD
push ebp
call fcn.00444e60
add esp, 0x1c
test eax, eax
je 0x40d7c8
mov dword [esp + 0x10], 0x1220
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x1a0]
push 0x1220
push ecx
push 0x53d
push edx
call fcn.00471c30
lea eax, [esp + 0x20]
push eax
push str.FileSystemDVD
push ebp
call fcn.00444e60
add esp, 0x1c
test eax, eax
je 0x40d802
mov dword [esp + 0x10], 0x1010
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0x1a0]
push 0x1010
push ecx
push 0x4a0
push edx
call fcn.00471c30
push esi
call fcn.0045ff60
add esp, 0x14
test eax, eax
je 0x40da28
lea eax, [esp + 0x14]
push eax
push str.NumEntries
push ebp
call fcn.00444e60
add esp, 0xc
test eax, eax
jne 0x40da28
cmp dword [esp + 0x14], ebx
jl 0x40da28
push ebx
push ebx
push esi
mov dword [esi + 0x98c], ebx
mov dword [esi + 0x988], ebx
mov dword [esi + 0x984], ebx
call fcn.0040bf30
push 0x78
call fcn.0046b600
mov ecx, dword [esi + 0x1b0]
add esp, 0x10
push eax
push 0x449
push ecx
call edi
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 0x1b0]
push edx
push ebx
push 0x406
push 0x407
push eax
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esp + 0x14]
mov ecx, 1
cmp eax, ecx
mov dword [esi + 0x6cc], ebx
mov dword [esp + 0x10], ecx
jl 0x40d99c
push ecx
lea ecx, [esp + 0x44]
push str.Entry_07d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x44c]
lea eax, [esp + 0x4c]
push edx
push eax
push ebp
call fcn.00444cd0
add esp, 0x18
test eax, eax
jne 0x40da1c
lea ecx, [esp + 0x440]
push 0x49f89c
push ecx
call fcn.0047e534
mov edi, eax
add esp, 8
cmp edi, ebx
je 0x40da1c
push 0x49f89c
push ebx
call fcn.0047e534
add esp, 8
cmp eax, ebx
je 0x40da1c
mov edx, dword [esp + 0x10]
push edi
dec edx
push eax
push edx
push esi
call fcn.0040ca80
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
sub eax, ecx
add esp, 0x10
cmp eax, 0xa
jl 0x40d950
mov eax, ecx
mov edi, 0xa
cdq
idiv edi
test edx, edx
jne 0x40d983
push esi
call fcn.0040c100
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x1b0]
add esp, 4
push ebx
push ecx
push 0x402
push 0x407
push edx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
push ebx
call fcn.00445c60
mov ecx, dword [esp + 0x14]
add esp, 4
cmp dword [esi + 0x6cc], ebx
jne 0x40d99c
mov eax, dword [esp + 0x14]
inc ecx
cmp ecx, eax
mov dword [esp + 0x10], ecx
jle 0x40d8be
push 0x64
call fcn.00445c60
mov ecx, dword [esi + 0x1b0]
add esp, 4
push ebx
push ebx
push 0x402
push 0x407
push ecx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov edx, dword [esi + 0x1b0]
push 0x4b32f0
push 0x449
push edx
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push ebx
push 1
push esi
call fcn.0040bf30
mov eax, dword [esi + 0x19c]
add esp, 0xc
push ebx
push ebx
push 0x1013
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push esi
call fcn.0040c070
push esi
call fcn.0040bdc0
push ebx
push esi
call fcn.0045b0a0
add esp, 0x10
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x830
ret
push ebx
push 1
push esi
call fcn.0040bf30
add esp, 0xc
mov dword [esp + 0x10], 0x19a
mov eax, dword [esi + 0x1a0]
push 0x4b32f0
push 0x449
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov ecx, dword [esi + 0x1b0]
push ebx
push ebx
push 0x402
push 0x407
push ecx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov edx, dword [esp + 0x10]
push 0x30
push 0x4d44b8
push ebp
push edx
call fcn.0046b4e0
add esp, 8
push eax
mov eax, dword [esi + 0x18]
push eax
call fcn.0046b480
add esp, 0x10
mov byte [ebp], bl
mov ecx, dword [esi + 0x19c]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebx
push ebx
push 0x1009
push ecx
call edi
mov eax, dword [esi + 0x19c]
lea edx, [esp + 0x18]
push edx
push ebx
push 0x1007
push eax
mov dword [esp + 0x28], 3
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x3c], str.__________
call edi
push esi
mov dword [esi + 0x98c], ebx
mov dword [esi + 0x988], ebx
mov dword [esi + 0x984], ebx
call fcn.0040c100
lea ecx, [esp + 0x44]
push ecx
call fcn.0046eac0
mov eax, dword [esi + 0x1a0]
add esp, 8
lea edx, [esp + 0x40]
push edx
push 0x4a6
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov ecx, dword [0x4fef98]
mov edx, dword [esi + 0x1a0]
push ecx
push 0x49f
push edx
call fcn.00471500
mov eax, dword [0x4fef9c]
mov ecx, dword [esi + 0x1a0]
add esp, 0xc
push ebx
push eax
push 0x130c
push 0x53e
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call edi
mov edx, dword [0x4fefa0]
mov eax, dword [esi + 0x1a0]
push ebx
push edx
push 0x53c
push eax
call fcn.00471c30
mov ecx, dword [0x4fefa4]
mov edx, dword [esi + 0x1a0]
push ebx
push ecx
push 0x49e
push edx
call fcn.00471c30
mov eax, dword [0x4fefa8]
mov ecx, dword [esi + 0x1a0]
push ebx
push eax
push 0x53d
push ecx
call fcn.00471c30
mov edx, dword [0x4fefac]
mov eax, dword [esi + 0x1a0]
push ebx
push edx
push 0x4a0
push eax
call fcn.00471c30
add esp, 0x40
jmp 0x40d9f6