Function at 0x459680
Capabilities:
Initialize winsock library
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x270
mov eax, dword [0x55b598]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x10]
push edi
call fcn.004580b0
call fcn.00457120
test al, al
je 0x4596bc
push str.Detected_duplicate_instance__quitting...
call fcn.004580c0
add esp, 4
jmp 0x459cfa
call dword [sym.imp.USER32.dll_SetProcessDPIAware]
test eax, eax
jne 0x4596d3
push str.Cant_set_process_as_DPI_aware
call fcn.004580c0
add esp, 4
push 0x458290
call fcn.004f01f3
add esp, 4
push 0
call dword [sym.imp.USER32.dll_SetDoubleClickTime]
lea eax, [ebp - 0x1c]
push eax
call fcn.004571a0
add esp, 4
mov ecx, eax
call fcn.00403930
push eax
call fcn.004fccfe
add esp, 4
lea ecx, [ebp - 0x1c]
call fcn.00401c10
push 1
sub esp, 0x18
mov dword [0x560a68], ebx
mov ecx, esp
push str.log.txt
call fcn.00401a60
call fcn.0045a500
add esp, 0x1c
cmp byte [esi], 0
je 0x4597c2
push 0x52a420
lea ecx, [ebp - 0x1c]
call fcn.00401a60
push esi
lea ecx, [ebp - 0x38]
call fcn.00401a60
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x248]
push eax
call fcn.00453120
add esp, 0xc
lea ecx, [ebp - 0x38]
call fcn.00401c10
lea ecx, [ebp - 0x1c]
call fcn.00401c10
lea ecx, [ebp - 0x248]
xor edi, edi
call fcn.00442de0
test eax, eax
je 0x4597b7
sub esp, 0x18
lea ecx, [ebp - 0x248]
mov esi, esp
push edi
call fcn.00445680
push eax
mov ecx, esi
call fcn.00401a10
call fcn.0045ad00
mov ecx, eax
call fcn.004068d0
lea ecx, [ebp - 0x248]
inc edi
call fcn.00442de0
cmp edi, eax
jb 0x459782
lea ecx, [ebp - 0x248]
call fcn.00405c10
call fcn.004577d0
lea eax, [ebp - 0x234]
push eax
push 0x202
call dword [sym.imp.WSOCK32.dll_WSAStartup]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.004fc360
add esp, 4
mov dword [ebp - 0x270], 8
mov dword [ebp - 0x26c], 0x4584d0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 0
push 0x7f00
push 0
mov dword [ebp - 0x260], ebx
mov dword [ebp - 0x25c], 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push 4
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x250], 0
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0x254], eax
lea eax, [ebp - 0x270]
push eax
mov dword [ebp - 0x24c], str.ReGrowtopiaClass_nxSCyusGsZZ5s5Wysqde
call dword [sym.imp.USER32.dll_RegisterClassA]
movzx eax, byte [0x560a29]
push ecx
mov dword [esp], 0
push eax
call fcn.004572b0
push eax
call fcn.004572a0
push eax
call fcn.004573f0
add esp, 0x10
test al, al
je 0x459cc9
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
jne 0x4598b9
push 0
push str.Unable_to_load_stuff
push str.Error_initializing_the_game.__Did_you_unzip_everything_right_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x459cc9
mov ecx, 0x560938
call fcn.00449520
test al, al
jne 0x4598e0
push 0
push str.Missing_GL_Extensions
push str.Error_initializing_GL_extensions._Update_your_GL_drivers_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x459cc9
push 0x10
call sub.KERNEL32.dll_WerSetFlags
test eax, eax
jns 0x4598f8
push str.Cant_enable_UI_for_Win_error_reporting__wish_me_luck_without_crashes_
call fcn.004580c0
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
mov edi, dword [sym.imp.USER32.dll_PeekMessageA]
mov ebx, dword [sym.imp.USER32.dll_GetMessageA]
nop word [eax + eax]
push 0
call fcn.004582c0
add esp, 4
cmp byte [0x560a2a], 0
je 0x45996e
push 0xd
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x45996e
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x45996e
push str.Toggle_fullscreen
call fcn.004580c0
add esp, 4
push 0
push 0
sub esp, 8
mov dword [esp + 4], 0
mov dword [esp], 0
push 9
call fcn.0045ae30
mov ecx, eax
call fcn.00441590
cmp byte [0x560a28], 0
jne 0x459cc9
cmp byte [0x55b02f], 0
je 0x4599ac
call fcn.00456ee0
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x14]
cmp byte [0x560a50], 0
jne 0x4599b0
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
jmp 0x4599b0
push 0x32
call esi
cmp dword [0x560a4c], 0
je 0x459a70
cmp byte [0x55b030], 0
jne 0x459a70
movss xmm0, dword [0x560bd4]
subss xmm0, dword [0x528764]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x23c], xmm0
call fcn.0045a220
movsd xmm0, qword [ebp - 0x23c]
fstp qword [ebp - 0x244]
comisd xmm0, xmmword [ebp - 0x244]
jbe 0x459a3e
push 1
call esi
movss xmm0, dword [0x560bd4]
subss xmm0, dword [0x528764]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x244], xmm0
call fcn.0045a220
movsd xmm0, qword [ebp - 0x244]
fstp qword [ebp - 0x23c]
comisd xmm0, xmmword [ebp - 0x23c]
ja 0x459a02
call fcn.0045a220
movd xmm0, dword [0x560a4c]
movss xmm1, dword [0x52b964]
cvtdq2ps xmm0, xmm0
fstp dword [ebp - 0x238]
divss xmm1, xmm0
addss xmm1, dword [ebp - 0x238]
movss dword [0x560bd4], xmm1
call fcn.0045ad00
mov ecx, eax
call fcn.00457290
mov ecx, eax
call fcn.004090d0
test al, al
jne 0x459b57
nop dword [eax + eax]
call fcn.0045ad00
mov ecx, eax
call fcn.00457290
mov ecx, eax
call fcn.0042a0b0
push eax
lea ecx, [ebp - 0xa4]
call fcn.00405580
call fcn.0045ad00
mov ecx, eax
call fcn.00457290
mov ecx, eax
call fcn.004595d0
mov eax, dword [ebp - 0xa4]
add eax, 0xfffffffe
cmp eax, 0x20
ja case.0x459ad7.5
movzx eax, byte [eax + 0x459d28]
jmp dword [eax*4 + 0x459d10]
push 0
push 0
sub esp, 8
mov dword [esp + 4], 0
mov dword [esp], 0x3f800000
push 0x11
call fcn.0045ae30
mov ecx, eax
call fcn.00441590
jmp case.0x459ad7.5
push 0
call fcn.00454540
add esp, 4
jmp case.0x459ad7.5
push 0
push 0
push 0x10
push dword [0x560a60]
call dword [sym.imp.USER32.dll_PostMessageA]
jmp case.0x459ad7.5
cvttss2si eax, dword [ebp - 0x9c]
mov dword [0x560a4c], eax
lea ecx, [ebp - 0xa4]
call fcn.00405dd0
call fcn.0045ad00
mov ecx, eax
call fcn.00457290
mov ecx, eax
call fcn.004090d0
test al, al
je 0x459a90
cmp byte [0x55b02f], 0
je 0x459b7b
cmp byte [0x560a50], 0
jne 0x459b7b
call dword [sym.imp.OPENGL32.dll_glFinish]
push dword [0x560a64]
call dword [sym.imp.GDI32.dll_SwapBuffers]
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
call edi
cmp eax, 1
jne 0x459ca1
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
call ebx
test eax, eax
jle 0x459c7d
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x459c8a
push dword [0x560a64]
call dword [sym.imp.GDI32.dll_SwapBuffers]
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp byte [0x560a50], 0
mov byte [0x55b02f], 1
je 0x459bf4
lea ecx, [ebp - 0xa4]
call fcn.00405dd0
jmp 0x459b7b
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x18]
call fcn.0045ad00
lea ecx, [eax + 0x11c]
call fcn.004064b0
push 0
call fcn.00457050
cvttss2si eax, dword [ebp - 0x98]
mov byte [0x55b02f], 0
movss xmm0, dword [ebp - 0x8c]
movss dword [esp], xmm0
push dword [ebp - 0x6c]
push eax
cvttss2si eax, dword [ebp - 0x9c]
push eax
call fcn.004573f0
add esp, 0x10
test al, al
je 0x459caa
call fcn.00451db0
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
call fcn.0045ad00
lea ecx, [eax + 0x130]
call fcn.004064b0
lea ecx, [ebp - 0xa4]
call fcn.00405dd0
jmp 0x459b7b
push str.Error_
call fcn.004580c0
add esp, 4
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
call edi
cmp eax, 1
je 0x459b92
push 0
call esi
jmp 0x459910
push 0
push str.Error
push str.Error_changing_video_mode
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [ebp - 0xa4]
call fcn.00405dd0
call fcn.00407270
test al, al
je 0x459cea
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x18]
call fcn.0045ad00
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 8]
push 1
call fcn.00457050
add esp, 4
call dword [sym.imp.WSOCK32.dll_WSACleanup]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004ee2fb
mov esp, ebp
pop ebp
ret 0x10