Function at 0x409030
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x18
mov eax, dword [0x5a32dc]
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov edi, ecx
cmp eax, ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ebx
je 0x4090b7
push 0x2000
push str.Demo_Version
push str.Changes_made_in_this_dialog_box_do_not_apply_in_the_Demo_version_of_nHoyle_Board_Games.
push ebx
call fcn.004f0710
add esp, 0x10
mov ecx, edi
push ebx
call fcn.00527c50
mov ecx, dword [edi + 8]
call fcn.004491c0
mov ecx, dword [0x59ffec]
call fcn.004496c0
mov ecx, dword [0x59ffe8]
mov dword [0x59ffec], ebx
cmp ecx, ebx
je 0x40909a
call fcn.004496c0
mov dword [0x59ffe8], ebx
mov ecx, dword [0x5a0004]
cmp ecx, ebx
je 0x409444
call fcn.004b6720
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 4
mov eax, dword [0x59ffec]
cmp dword [eax + 0x1414], ebx
je 0x4092cd
cmp dword [eax + 0x1418], ebx
jne 0x4092cd
mov ebp, eax
mov esi, 0x586b28
mov ecx, dword [ebp + 0x88]
mov eax, dword [ecx]
call dword [eax + 0x40]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40910a
test cl, cl
je 0x409106
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40910a
add eax, 2
add esi, 2
test cl, cl
jne 0x4090e6
xor eax, eax
jmp 0x40910f
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x409127
mov ecx, dword [ebp + 0x8c]
call fcn.0049af70
cmp eax, 0xffffffff
je 0x4091b2
mov ecx, dword [ebp + 0x8c]
call fcn.0049af70
cmp eax, 0xffffffff
jne 0x409452
mov ecx, dword [ebp + 0x88]
push 1
mov eax, dword [ecx]
call dword [eax + 0x40]
mov ecx, dword [ebp + 0x8c]
push eax
call fcn.0049b330
test eax, eax
jne 0x409452
cmp dword [0x59ffe8], ebx
je 0x4091b2
mov ecx, dword [ebp + 0x88]
mov edx, dword [ecx]
call dword [edx + 0x40]
mov ebp, dword [0x59ffe8]
mov ebx, eax
xor esi, esi
mov eax, dword [ebp + 0x13e0]
test eax, eax
jle 0x4091b2
lea edi, [ebp + 0xb0]
mov eax, dword [edi]
add eax, 4
push eax
push ebx
call fcn.005360f0
add esp, 8
test eax, eax
je 0x40944e
mov eax, dword [ebp + 0x13e0]
inc esi
add edi, 4
cmp esi, eax
jl 0x409189
mov edi, dword [esp + 0x14]
mov ecx, dword [0x59ffec]
mov ecx, dword [ecx + 0x88]
mov edx, dword [ecx]
call dword [edx + 0x40]
mov ebp, eax
mov esi, 0x586b28
mov ecx, ebp
mov al, byte [ecx]
mov bl, byte [esi]
mov dl, al
cmp al, bl
jne 0x4091f4
test dl, dl
je 0x4091f0
mov al, byte [ecx + 1]
mov bl, byte [esi + 1]
mov dl, al
cmp al, bl
jne 0x4091f4
add ecx, 2
add esi, 2
test dl, dl
jne 0x4091cc
xor ecx, ecx
jmp 0x4091f9
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
je 0x40928b
movsx ecx, byte [ebp]
push ecx
call fcn.00530f40
add esp, 4
test eax, eax
je 0x40928b
mov edx, dword [0x59ffec]
cmp dword [edx + 0xe0], 0x64
jne 0x409232
push 0x2000
push str.New_Player
push str.There_are_too_many_players_to_create_another.__Delete_an_old_player_in_order_to_create_a_new_one.
jmp 0x40929a
push 0x2004
push str.New_Player_
push str.Create_this_new_player_
push 0
call fcn.004f0710
add esp, 0x10
cmp eax, 6
jne 0x4092a4
mov ecx, dword [0x59ffec]
call fcn.00408180
test eax, eax
je 0x40927a
push 0
mov ecx, edi
call fcn.00527c50
mov ecx, dword [edi + 8]
call fcn.004491c0
mov dword [esp + 0x10], 1
jmp 0x4092a4
push 0x2000
push str.Error
push str.Unable_to_create_the_new_player.
jmp 0x40929a
push 0x2000
push str.Invalid_name_
push str.You_must_enter_a_name__or_select_a_name_from_the_list__to_create_or_sign_in_a_player.
push 0
call fcn.004f0710
add esp, 0x10
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x11
call esi
test ah, 0x80
je 0x4092c6
push 0x10
call esi
test ah, 0x80
je 0x4092c6
mov dword [0x586b24], 1
mov eax, dword [0x59ffec]
xor ebx, ebx
mov ecx, dword [eax + 0x1414]
cmp ecx, ebx
je 0x40933b
cmp dword [eax + 0x1418], ebx
je 0x409383
cmp ecx, ebx
je 0x40933b
mov ecx, dword [0x59ffe8]
mov eax, dword [eax + 0x9c]
mov edx, dword [ecx + 0x13dc]
mov eax, dword [eax + 0x70]
push eax
mov eax, dword [ecx + edx*4 + 0xb0]
add eax, 4
push eax
push edx
call fcn.00404000
mov ecx, dword [0x59ffec]
mov edx, dword [ecx + 0x9c]
mov eax, dword [edx + 0x70]
push eax
mov eax, dword [0x59ffe8]
mov edx, dword [eax + 0x13dc]
mov eax, dword [eax + edx*4 + 0xb0]
add eax, 4
push eax
call fcn.004086d0
jmp 0x409366
mov ecx, dword [eax + 0x8c]
push 0xfffffffffffffffe
call fcn.0049b3e0
mov ecx, dword [0x59ffe8]
push eax
mov edx, dword [ecx + 0x13dc]
push edx
call fcn.00404000
mov ecx, dword [0x59ffec]
call fcn.00408880
push ebx
mov ecx, edi
call fcn.00527c50
mov ecx, dword [edi + 8]
call fcn.004491c0
mov eax, dword [0x59ffec]
mov dword [esp + 0x10], 1
mov edx, dword [0x59ffe8]
cmp edx, ebx
je 0x409431
cmp dword [edx + 0x13dc], ebx
jne 0x4093d0
mov edi, dword [edx + 0xb0]
or ecx, 0xffffffff
add edi, 4
xor eax, eax
add edx, 0x13ec
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x59ffec]
mov edx, dword [0x59ffe8]
cmp dword [eax + 0x140c], ebx
jne 0x409431
cmp dword [eax + 0x1418], ebx
jne 0x4093e8
cmp dword [eax + 0x1414], ebx
jne 0x409431
mov esi, dword [edx + 0x13dc]
mov ecx, dword [0x5a32bc]
mov edx, dword [edx + esi*4 + 0xb0]
mov ecx, dword [ecx + 8]
movsx edx, byte [edx + 0x14]
mov eax, dword [ecx]
push edx
call dword [eax + 0x74]
mov eax, dword [0x5a32bc]
mov ecx, dword [eax + 8]
mov eax, dword [0x59ffe8]
mov esi, dword [eax + 0x13dc]
mov edx, dword [ecx]
mov eax, dword [eax + esi*4 + 0xb0]
movsx eax, byte [eax + 0x14]
push eax
call dword [edx + 0x78]
mov eax, dword [0x59ffec]
cmp dword [esp + 0x10], ebx
je 0x409444
mov ecx, eax
call fcn.004496c0
mov dword [0x59ffec], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 4
mov edi, dword [esp + 0x14]
mov ecx, dword [0x59ffec]
call fcn.00408490
test eax, eax
je 0x4092a4
mov ecx, dword [0x59ffec]
mov eax, dword [ecx + 0x140c]
test eax, eax
je 0x4094a4
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [0x5a32bc]
call fcn.004f3a30
mov ecx, dword [0x59ffec]
mov edx, dword [ecx + 0x9c]
mov eax, dword [edx + 0x70]
lea edx, [esp + 0x18]
push eax
push edx
call fcn.004086d0
jmp 0x40925f
mov eax, dword [ecx + 0x9c]
mov edx, dword [eax + 0x70]
mov eax, dword [0x59ffe8]
push edx
mov edx, dword [eax + 0x13dc]
mov eax, dword [eax + edx*4 + 0xb0]
add eax, 4
push eax
call fcn.004086d0
jmp 0x40925f