Function at 0x42fb10
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4433fd
push eax
mov eax, dword [ebx + 8]
mov dword fs:[0], esp
push ebx
sub esp, 0x168
push esi
push edi
cmp eax, 0x32
jne 0x42fb6c
push 0
push 0xffffffffffffffff
push dword [0x45ed9c]
mov ecx, dword [0x45ed48]
push dword [0x45ed98]
call fcn.00440de0
jmp 0x4300da
cmp eax, 0x33
jne 0x42fb77
push 0
push 0
jmp 0x42fb50
cmp eax, 0x34
jne 0x42fb82
push 0
push 1
jmp 0x42fb50
cmp eax, 0x36
jne 0x42fc6e
mov eax, dword [0x45ed48]
xor edi, edi
mov edx, dword [0x45ed98]
and edx, 0x1ffff
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
mov eax, dword [eax]
lea ecx, [edx + edx*2]
lea esi, [eax + ecx*4]
test esi, esi
je 0x42fbec
mov ecx, dword [0x45ed98]
mov eax, 0xffff8ad0
nop dword [eax + eax]
cmp word [esi + 0xa], ax
je 0x42fbec
mov edx, dword [0x45ed9c]
cmp dword [esi + 4], edx
mov edx, dword [ebp - 0x1c]
jne 0x42fbe4
mov eax, ecx
shr eax, 0x10
cmp word [esi + 8], ax
je 0x42fc11
mov eax, 0xffff8ad0
mov edi, esi
mov esi, dword [esi]
test esi, esi
jne 0x42fbc0
push edx
lea eax, [ebp - 0x178]
push str.Position_does_not_exist.__d_n
push eax
call fcn.00402b50
add esp, 0xc
lea ecx, [ebp - 0x178]
call fcn.00430f70
jmp 0x4300da
mov eax, dword [ebp - 0x14]
dec dword [eax + 0xc]
movsx eax, word [esi + 0xa]
push eax
push edx
lea eax, [ebp - 0x178]
push str.Position_Removed.__d_nValue_was__d
push eax
call fcn.00402b50
add esp, 0x10
lea ecx, [ebp - 0x178]
call fcn.00430f70
mov eax, dword [esi]
test edi, edi
je 0x42fc49
mov dword [edi], eax
jmp 0x4300da
test eax, eax
je 0x42fc60
movq xmm0, qword [eax]
movq qword [esi], xmm0
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
jmp 0x4300da
mov eax, 0xffff8ad0
mov word [esi + 0xa], ax
jmp 0x4300da
cmp eax, 0x53
jne 0x42fe76
mov eax, dword [0x45ed48]
xor esi, esi
push 0x4513f4
push str.opening.gbk
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], esi
call fcn.00411fd3
mov edi, eax
add esp, 8
test edi, edi
je 0x42fd94
xor eax, eax
mov dword [ebp - 0x24], 0xffff8ad0
xor ecx, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x20]
mov esi, dword [edx]
movzx edx, word [esi + ecx + 0xa]
add esi, ecx
cmp dx, word [ebp - 0x24]
je 0x42fd72
cmp dx, 0x64
jge 0x42fd17
push edi
movzx eax, ax
push 1
mov dword [ebp - 0x28], eax
lea eax, [esi + 4]
push 4
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [esi + 8]
push 2
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [esi + 0xa]
push 2
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [ebp - 0x28]
push 2
push eax
call fcn.00412fbe
mov eax, dword [ebp - 0x14]
add esp, 0x40
inc dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
mov esi, dword [esi]
test esi, esi
je 0x42fd72
nop dword [eax]
push edi
movzx eax, ax
push 1
mov dword [ebp - 0x2c], eax
lea eax, [esi + 4]
push 4
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [esi + 8]
push 2
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [esi + 0xa]
push 2
push eax
call fcn.00412fbe
push edi
push 1
lea eax, [ebp - 0x2c]
push 2
push eax
call fcn.00412fbe
mov eax, dword [esi]
add esp, 0x40
inc dword [ebp - 0x18]
mov esi, eax
test eax, eax
mov eax, dword [ebp - 0x14]
jne 0x42fd20
mov ecx, dword [ebp - 0x1c]
add ecx, 0xc
inc eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x180000
jb 0x42fcb1
push edi
call fcn.0041210f
mov esi, dword [ebp - 0x18]
add esp, 4
mov edx, esi
lea ecx, [ebp - 0x5c]
call fcn.004012f0
push str._Positions_Saved
mov edx, eax
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x44]
call fcn.00401bc0
mov edx, dword [ebp - 0x48]
add esp, 4
cmp edx, 0x10
jb 0x42fdeb
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x42fde1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4300ef
push edx
push ecx
call fcn.0040a81d
add esp, 8
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x44]
mov esi, dword [ebp - 0x44]
cmp eax, 0x10
cmovae ecx, esi
cmp byte [0x45ebe8], 0
je 0x42fe20
mov edx, dword [0x45ebf0]
test edx, edx
je 0x42fe3d
nop dword [eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x42fe10
jmp 0x42fe37
mov edx, dword [0x456bdc]
test edx, edx
je 0x42fe3d
push ecx
push 0x96
push edx
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov esi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x30]
cmp eax, 0x10
jb 0x4300da
lea ecx, [eax + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x42fe67
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4300f4
push ecx
push esi
call fcn.0040a81d
add esp, 8
jmp 0x4300da
cmp eax, 0x56
jne 0x42ff60
push 0x200
push 0x456be8
call fcn.00431d10
test eax, eax
je 0x42ff29
cmp byte [0x45ebe8], 0
je 0x42fec0
mov ecx, dword [0x45ebf0]
test ecx, ecx
je 0x42feda
mov edx, 0x456be8
nop
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x42feb0
jmp 0x42feda
mov eax, dword [0x456bdc]
test eax, eax
je 0x42feda
push 0x456be8
push 0x96
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 0x456be8
mov ecx, 0x45ed88
call fcn.00432990
test eax, eax
je 0x42ff29
push 1
push 0x45ed88
mov ecx, 0x45ed10
call fcn.00434e60
mov eax, dword [0x456b30]
mov ecx, 0x456b30
push 1
call dword [eax + 0xc]
mov eax, dword [0x456b30]
mov ecx, 0x456b30
call dword [eax + 0x34]
push 0x45ed88
mov ecx, 0x456b30
call fcn.00431a40
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x4300da
push 0x3ffc
push 0x456be8
call fcn.00431d10
test eax, eax
je 0x4300da
mov ecx, 0x456be8
call fcn.0042e1a0
jmp 0x4300da
cmp eax, 0x43
jne 0x42ff8f
mov ecx, 0x456b30
call fcn.00431020
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x4300da
mov ecx, 0x456b30
call fcn.00430fb0
jmp 0x4300da
cmp eax, 0x47
jne 0x42ffa6
mov eax, dword [0x456b30]
mov ecx, 0x456b30
call dword [eax + 4]
jmp 0x4300da
cmp eax, 0x4d
jne 0x42ffba
mov ecx, 0x45ed10
call fcn.00434e40
jmp 0x4300da
cmp eax, 0x48
jne 0x43001e
mov eax, dword [0x45ed1c]
shl eax, 5
push eax
push 0
push dword [0x45ed18]
call fcn.0040c7a0
add esp, 0xc
cmp byte [0x45ebe8], 0
je 0x430007
mov ecx, dword [0x45ebf0]
test ecx, ecx
je 0x4300da
mov edx, str.Hash_Cleared
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x42fff4
jmp 0x4300da
mov eax, dword [0x456bdc]
test eax, eax
je 0x4300da
push str.Hash_Cleared
jmp 0x4300ce
cmp eax, 0x45
jne 0x43003a
mov eax, dword [0x456b30]
mov ecx, 0x456b30
push 0x45ed88
call dword [eax + 0x2c]
jmp 0x4300da
cmp eax, 0x54
jne 0x4300da
movzx eax, byte [0x45ed14]
mov ecx, 0x45ed18
push eax
push 0x45ed88
call fcn.00401980
mov edx, eax
test edx, edx
je 0x430096
mov ecx, dword [0x45ed9c]
cmp dword [edx], ecx
jne 0x430096
movzx eax, byte [0x45eda0]
lea ecx, [ebp - 0x74]
push eax
call fcn.00430100
add esp, 4
cmp dword [eax + 0x14], 0x10
jb 0x430085
mov eax, dword [eax]
mov ecx, eax
call fcn.00430f70
lea ecx, [ebp - 0x74]
call fcn.00401490
jmp 0x4300da
cmp byte [0x45ebe8], 0
je 0x4300c0
mov ecx, dword [0x45ebf0]
test ecx, ecx
je 0x4300da
mov edx, str.No_TT_Entry_for_board
nop
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x4300b0
jmp 0x4300da
mov eax, dword [0x456bdc]
test eax, eax
je 0x4300da
push str.No_TT_Entry_for_board
push 0x96
push eax
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
call fcn.00411e41
call fcn.00411e41
int3