Function at 0x54bfbd
Capabilities:
Get keyboard layout
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
push edi
mov dword [ebp - 0x190], ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x194], eax
cmp dword [ebp - 0x194], 0x10f
ja 0x54c071
cmp dword [ebp - 0x194], 0x10f
je 0x54c9a8
cmp dword [ebp - 0x194], 0x51
ja 0x54c03d
cmp dword [ebp - 0x194], 0x51
je 0x54ca00
mov ecx, dword [ebp - 0x194]
sub ecx, 1
mov dword [ebp - 0x194], ecx
cmp dword [ebp - 0x194], 0x2a
ja case.0x54c0bd.4
mov eax, dword [ebp - 0x194]
xor edx, edx
mov dl, byte [eax + 0x54d3ce]
jmp dword [edx*4 + 0x54d3b2]
mov ecx, dword [ebp - 0x194]
sub ecx, 0x100
mov dword [ebp - 0x194], ecx
cmp dword [ebp - 0x194], 0xe
ja case.0x54c0bd.4
mov eax, dword [ebp - 0x194]
xor edx, edx
mov dl, byte [eax + 0x54d415]
jmp dword [edx*4 + 0x54d3f9]
cmp dword [ebp - 0x194], 0x206
ja 0x54c0c4
cmp dword [ebp - 0x194], 0x206
je case.0x54c0bd.3
mov ecx, dword [ebp - 0x194]
sub ecx, 0x111
mov dword [ebp - 0x194], ecx
cmp dword [ebp - 0x194], 0xf4
ja case.0x54c0bd.4
mov eax, dword [ebp - 0x194]
xor edx, edx
mov dl, byte [eax + 0x54d438]
jmp dword [edx*4 + 0x54d424]
cmp dword [ebp - 0x194], 0x40d
ja 0x54c115
cmp dword [ebp - 0x194], 0x40d
je 0x54c181
cmp dword [ebp - 0x194], 0x281
je 0x54c492
cmp dword [ebp - 0x194], 0x282
je 0x54ca55
cmp dword [ebp - 0x194], 0x401
je 0x54ccf1
jmp case.0x54c0bd.4
cmp dword [ebp - 0x194], 0x464
je 0x54cf50
cmp dword [ebp - 0x194], 0x465
je 0x54d1e0
jmp case.0x54c0bd.4
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x190]
call dword [edx + 0x10]
jmp case.0x54c0bd.4
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x168], 0
je 0x54c17c
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x168]
call fcn.00438adc
jmp case.0x54c0bd.4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x168], 0
je 0x54c24f
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x168]
call fcn.00438f10
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 1
jne 0x54c223
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x168], 0
je 0x54c218
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x168]
mov dword [ebp - 0x17c], eax
mov ecx, dword [ebp - 0x17c]
mov dword [ebp - 0x178], ecx
cmp dword [ebp - 0x178], 0
je 0x54c1fe
push 1
mov edx, dword [ebp - 0x178]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x178]
call dword [eax]
mov dword [ebp - 0x198], eax
jmp 0x54c208
mov dword [ebp - 0x198], 0
mov ecx, dword [ebp - 0x190]
mov dword [ecx + 0x168], 0
mov ecx, dword [ebp - 0x190]
call fcn.0054b031
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x1c], 0
jne 0x54c24f
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x168], 0
je 0x54c24f
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x168]
call fcn.00438adc
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0x12
jne 0x54c28a
cmp dword [0x277c068], 0
jne 0x54c288
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c288
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
mov dword [ecx + 0x434], 1
jmp 0x54c2b4
cmp dword [ebp + 0x10], 0x79
jne 0x54c2b4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c2b4
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b5803
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0x12
jne 0x54c2ef
cmp dword [0x277c068], 0
jne 0x54c2ef
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c2ef
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
mov dword [ecx + 0x434], 0
jmp 0x54c319
cmp dword [ebp + 0x10], 0x79
jne 0x54c319
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c319
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b584b
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0xf100
jne 0x54c344
push 0
push 0xa4
push 0x100
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
xor eax, eax
jmp 0x54d3ab
cmp dword [ebp + 0x10], 0xf020
jne 0x54c35e
mov eax, dword [0x277c018]
mov dword [eax + 0x190], 0
jmp 0x54c377
cmp dword [ebp + 0x10], 0xf030
jne 0x54c377
mov ecx, dword [0x277c018]
mov dword [ecx + 0x190], 1
jmp case.0x54c0bd.4
push 0xc000000f
push 0
push 0x281
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
cmp dword [ebp + 0x10], 0
jne 0x54c42a
cmp dword [0x277c064], 0
jne 0x54c3cf
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x160], 0
je 0x54c3cf
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x1c], 1
jne 0x54c3cf
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_CloseWindow]
jmp case.0x54c0bd.4
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x170], 0
je 0x54c3f4
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x170]
mov dword [edx + 0x434], 0
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x16c], 0
je 0x54c41b
push 0xffffd8f0
push 0
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x16c]
call fcn.0042c220
mov edx, dword [0x277c018]
mov byte [edx + 0x194], 0
jmp 0x54c48d
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x170], 0
je 0x54c44f
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x170]
mov dword [edx + 0x434], 0
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x16c], 0
je 0x54c480
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x16c]
mov eax, dword [edx]
push eax
push 0
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x16c]
call fcn.0042c220
mov edx, dword [0x277c018]
mov byte [edx + 0x194], 1
jmp case.0x54c0bd.4
cmp dword [ebp + 0x14], 0xffffffff
jne 0x54c4a1
mov dword [ebp + 0x10], 1
jmp 0x54c4a8
mov dword [ebp + 0x10], 0
mov dword [ebp + 0x14], send
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_DefWindowProcA]
jmp 0x54d3ab
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x168], 0
je 0x54c57c
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x168]
cmp dword [eax + 0x10c], 2
jne 0x54c57c
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x168]
call fcn.00438c7b
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x168], 0
je 0x54c571
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x168]
mov dword [ebp - 0x184], ecx
mov edx, dword [ebp - 0x184]
mov dword [ebp - 0x180], edx
cmp dword [ebp - 0x180], 0
je 0x54c557
push 1
mov eax, dword [ebp - 0x180]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x180]
call dword [edx]
mov dword [ebp - 0x19c], eax
jmp 0x54c561
mov dword [ebp - 0x19c], 0
mov eax, dword [ebp - 0x190]
mov dword [eax + 0x168], 0
mov ecx, dword [ebp - 0x190]
call fcn.0054b031
jmp case.0x54c0bd.4
cmp dword [0x636618], 0
jne 0x54c594
push 0
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x54c5df
cmp dword [0x636618], 2
jne 0x54c5df
cmp dword [0x636610], 0
je 0x54c5df
mov ecx, dword [0x636610]
cmp dword [ecx + 0xa4], 0
jne 0x54c5c4
mov edx, dword [0x63661c]
push edx
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x54c5df
mov eax, dword [0x636610]
cmp dword [eax + 0xa4], 1
jne 0x54c5df
mov ecx, dword [0x636620]
push ecx
call dword [sym.imp.USER32.dll_SetCursor]
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c623
mov eax, dword [ebp + 0x14]
shr eax, 0x10
and eax, 0xffff
push eax
mov ecx, dword [ebp + 0x14]
and ecx, 0xffff
and ecx, 0xffff
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b5d98
jmp case.0x54c0bd.4
xor eax, eax
jmp 0x54d3ab
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x168], 0
je 0x54c6e1
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x168]
cmp dword [ecx + 0x10c], 2
jne 0x54c6e1
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x168]
call fcn.00438c7b
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x168], 0
je 0x54c6d6
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x168]
mov dword [ebp - 0x18c], edx
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x188], eax
cmp dword [ebp - 0x188], 0
je 0x54c6bc
push 1
mov ecx, dword [ebp - 0x188]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x188]
call dword [edx]
mov dword [ebp - 0x1a0], eax
jmp 0x54c6c6
mov dword [ebp - 0x1a0], 0
mov eax, dword [ebp - 0x190]
mov dword [eax + 0x168], 0
mov ecx, dword [ebp - 0x190]
call fcn.0054b031
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x170], 0
je 0x54c88a
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 0xc], ax
mov edx, dword [ebp - 0xc]
and edx, 0xffff
sar edx, 8
test edx, edx
jle 0x54c728
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
mov dword [ecx + 0x438], 1
jmp 0x54c73e
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x170]
mov dword [eax + 0x438], 0
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 8], ax
mov ecx, dword [ebp - 8]
and ecx, 0xffff
sar ecx, 8
test ecx, ecx
jle 0x54c772
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x170]
mov dword [eax + 0x440], 1
jmp 0x54c788
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x170]
mov dword [edx + 0x440], 0
cmp dword [ebp + 0x10], 0x11
je 0x54c875
cmp dword [0x6f0ab0], 0
je 0x54c875
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
cmp dword [ecx + 0x438], 0
je 0x54c875
cmp dword [ebp + 0x10], 0xbd
je 0x54c7c7
cmp dword [ebp + 0x10], 0x6d
jne 0x54c7e2
push 0x9c70
mov edx, dword [0x6f0ab0]
mov eax, dword [edx]
mov ecx, dword [0x6f0ab0]
call dword [eax + 0x5c]
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0xbb
je 0x54c7f1
cmp dword [ebp + 0x10], 0x6b
jne 0x54c80c
push 0x9c6f
mov ecx, dword [0x6f0ab0]
mov edx, dword [ecx]
mov ecx, dword [0x6f0ab0]
call dword [edx + 0x5c]
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0xdb
jne 0x54c82f
push 0x9c5b
mov eax, dword [0x6f0ab0]
mov edx, dword [eax]
mov ecx, dword [0x6f0ab0]
call dword [edx + 0x5c]
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0xdd
jne 0x54c852
push 0x9c5c
mov eax, dword [0x6f0ab0]
mov edx, dword [eax]
mov ecx, dword [0x6f0ab0]
call dword [edx + 0x5c]
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0xde
jne 0x54c875
push 0x9c5d
mov eax, dword [0x6f0ab0]
mov edx, dword [eax]
mov ecx, dword [0x6f0ab0]
call dword [edx + 0x5c]
jmp case.0x54c0bd.4
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b5803
jmp case.0x54c0bd.4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c961
cmp dword [ebp + 0x10], 0x2c
jne 0x54c8b9
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x160]
call fcn.00428157
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 0x14], ax
mov ecx, dword [ebp - 0x14]
and ecx, 0xffff
sar ecx, 8
test ecx, ecx
jle 0x54c8ed
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x170]
mov dword [eax + 0x438], 1
jmp 0x54c903
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x170]
mov dword [edx + 0x438], 0
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 0x10], ax
mov eax, dword [ebp - 0x10]
and eax, 0xffff
sar eax, 8
test eax, eax
jle 0x54c936
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x170]
mov dword [edx + 0x440], 1
jmp 0x54c94c
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
mov dword [ecx + 0x440], 0
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
call fcn.004b584b
jmp case.0x54c0bd.4
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x170], 0
je 0x54c9a3
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x170]
cmp dword [eax + 0x438], 0
jne 0x54c9a3
mov ecx, dword [ebp + 0x14]
push ecx
mov dl, byte [ebp + 0x10]
push edx
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
call fcn.004b5893
jmp case.0x54c0bd.4
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x170], 0
je 0x54c9d0
mov edx, dword [ebp + 0x14]
push edx
mov al, byte [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b58cf
jmp case.0x54c0bd.4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x170], 0
je 0x54c9fb
push 0
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b5975
jmp case.0x54c0bd.4
mov byte [ebp - 0x114], 0
mov ecx, 0x3f
xor eax, eax
lea edi, [ebp - 0x113]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea edx, [ebp - 0x114]
push edx
call dword [sym.imp.USER32.dll_GetKeyboardLayoutNameA]
push 4
push str.0804
lea eax, [ebp - 0x110]
push eax
call fcn.005c5f20
add esp, 0xc
test eax, eax
jne 0x54ca50
push 0
push 0
push 0x10
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp case.0x54c0bd.4
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x1a4], edx
mov eax, dword [ebp - 0x1a4]
sub eax, 3
mov dword [ebp - 0x1a4], eax
cmp dword [ebp - 0x1a4], 3
ja case.default.0x54ca80
mov ecx, dword [ebp - 0x1a4]
jmp dword [ecx*4 + 0x54d52d]
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x178], 0
je 0x54cab3
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x178]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x178]
mov edx, dword [eax]
call dword [edx + 0x1c]
jmp case.default.0x54ca80
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x170], 0
je 0x54caec
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x170]
call fcn.004b596a
push 1
mov edx, dword [ebp + 0x14]
push edx
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
call fcn.004b5975
jmp case.default.0x54ca80
mov ecx, dword [ebp - 0x190]
cmp dword [ecx + 0x170], 0
je case.default.0x54ca80
push 0
mov edx, dword [ebp + 0x14]
push edx
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x170]
call fcn.004b5975
jmp case.0x54c0bd.4
cmp dword [ebp + 0x10], 0x3e7
jne 0x54cb34
push 0
mov ecx, dword [ebp - 0x190]
call fcn.0054d59f
jmp case.0x54c0bd.4
mov ecx, dword [ebp + 0x10]
and ecx, 0xffff
and ecx, 0xffff
mov dword [ebp - 0x11c], ecx
mov edx, dword [ebp + 0x10]
shr edx, 0x10
and edx, 0xffff
mov dword [ebp - 0x120], edx
call dword [sym.imp.USER32.dll_GetFocus]
mov dword [ebp - 0x118], eax
mov eax, dword [0x277c018]
mov ecx, dword [ebp - 0x118]
cmp ecx, dword [eax + 4]
je 0x54cbff
cmp dword [ebp - 0x11c], 0x9c96
jne 0x54cba7
push 0
push 0
push 0x301
mov edx, dword [ebp - 0x118]
push edx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x54d3ab
cmp dword [ebp - 0x11c], 0x9ca4
jne 0x54cbd3
push 0
push 0
push 0x302
mov eax, dword [ebp - 0x118]
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x54d3ab
cmp dword [ebp - 0x11c], 0x9ca6
jne 0x54cbff
push 0
push 0
push 0x300
mov ecx, dword [ebp - 0x118]
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x54d3ab
cmp dword [0x6f0ab0], 0
je 0x54cc1f
mov edx, dword [ebp - 0x11c]
push edx
mov eax, dword [0x6f0ab0]
mov edx, dword [eax]
mov ecx, dword [0x6f0ab0]
call dword [edx + 0x5c]
jmp case.0x54c0bd.4
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x124], eax
mov ecx, dword [ebp - 0x124]
mov edx, dword [ecx + 0x18]
push edx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x128], 0
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x198]
push ecx
mov edx, dword [ebp - 0x12c]
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [ebp - 0x128], eax
push 0xcc0020
push 0x15
push 0x56
push 0
push 0
mov eax, dword [ebp - 0x12c]
push eax
mov ecx, dword [ebp - 0x124]
mov edx, dword [ebp - 0x124]
mov eax, dword [ecx + 0x28]
sub eax, dword [edx + 0x20]
push eax
mov ecx, dword [ebp - 0x124]
mov edx, dword [ebp - 0x124]
mov eax, dword [ecx + 0x24]
sub eax, dword [edx + 0x1c]
push eax
mov ecx, dword [ebp - 0x124]
mov edx, dword [ecx + 0x20]
push edx
mov eax, dword [ebp - 0x124]
mov ecx, dword [eax + 0x1c]
push ecx
mov edx, dword [ebp - 0x124]
mov eax, dword [edx + 0x18]
push eax
call dword [sym.imp.GDI32.dll_StretchBlt]
mov ecx, dword [ebp - 0x128]
push ecx
mov edx, dword [ebp - 0x12c]
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [ebp - 0x12c]
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp case.0x54c0bd.4
cmp dword [0x277c020], 0
je 0x54cf4b
mov ecx, dword [ebp + 0x14]
and ecx, 0xffff
and ecx, 0xffff
cmp ecx, 1
je 0x54cd43
mov ecx, dword [0x277c020]
call fcn.0042465e
push 0
push 0
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x178]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x178]
mov eax, dword [edx]
call dword [eax + 8]
jmp case.0x54c0bd.4
mov ecx, dword [0x277c020]
call fcn.00424ee8
test eax, eax
jne 0x54cd62
mov ecx, dword [0x277c020]
call fcn.0042465e
jmp case.0x54c0bd.4
mov dword [ebp - 0x130], 0
mov dword [ebp - 0x134], 0
lea ecx, [ebp - 0x134]
push ecx
lea edx, [ebp - 0x130]
push edx
mov ecx, dword [0x277c020]
call fcn.00424f4f
mov dword [ebp - 0x140], eax
cmp dword [ebp - 0x140], 0
jne 0x54cda3
jmp 0x54cf4b
cmp dword [ebp - 0x130], 0
je 0x54cdb1
jmp 0x54cf4b
mov eax, dword [ebp - 0x140]
mov dword [ebp - 0x13c], eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x174]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x174]
mov edx, dword [eax]
call dword [edx + 8]
mov dword [ebp - 0x138], eax
mov eax, dword [ebp - 0x13c]
mov ecx, dword [eax + 8]
mov dword [0x277c050], ecx
mov eax, dword [ebp - 0x138]
xor edx, edx
mov ecx, 0x3e8
div ecx
mov dword [0x277c054], eax
cmp dword [0x277c02c], 0
jle 0x54ce58
mov edx, dword [ebp - 0x138]
sub edx, dword [0x277c03c]
mov dword [ebp - 0x144], edx
push 4
lea eax, [ebp - 0x144]
push eax
mov ecx, dword [0x277c02c]
push ecx
call fcn.005c7f91
add esp, 0xc
mov edx, dword [ebp - 0x13c]
xor eax, eax
mov ax, word [edx]
push eax
mov ecx, dword [ebp - 0x13c]
push ecx
mov edx, dword [0x277c02c]
push edx
call fcn.005c7f91
add esp, 0xc
mov eax, dword [0x277c058]
add eax, 0x2710
cmp dword [ebp - 0x138], eax
jbe 0x54cf0d
cmp dword [0x6f0ab0], 0
je 0x54cf01
mov ecx, dword [0x6f0ab0]
cmp dword [ecx + 0x200ec], 0
je 0x54cf01
mov edx, dword [ebp - 0x138]
add edx, 0x1f4
cmp dword [0x277c050], edx
jbe 0x54cec7
mov eax, dword [ebp - 0x138]
add eax, 0x55
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x174]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x174]
mov edx, dword [eax]
call dword [edx + 4]
jmp 0x54cf01
mov eax, dword [ebp - 0x138]
sub eax, 0x1f4
cmp dword [0x277c050], eax
jae 0x54cf01
mov ecx, dword [ebp - 0x138]
sub ecx, 0x55
push ecx
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x174]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x174]
mov eax, dword [edx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x138]
mov dword [0x277c058], ecx
mov edx, dword [ebp - 0x140]
push edx
mov eax, dword [ebp - 0x13c]
xor ecx, ecx
mov cx, word [eax + 4]
push ecx
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x178]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x178]
mov eax, dword [edx]
call dword [eax + 8]
mov ecx, 1
test ecx, ecx
jne 0x54cd76
jmp case.0x54c0bd.4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x17c], 0
je 0x54d1db
mov eax, dword [ebp + 0x14]
and eax, 0xffff
and eax, 0xffff
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp + 0x14]
and ecx, 0xffff
and ecx, 0xffff
cmp ecx, 1
je 0x54cfc1
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x17c]
call fcn.0042465e
push 0
push 0
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x178]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x178]
mov edx, dword [eax]
call dword [edx + 8]
jmp case.0x54c0bd.4
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x17c]
call fcn.00424ee8
test eax, eax
jne 0x54cfec
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x17c]
call fcn.0042465e
jmp case.0x54c0bd.4
mov dword [ebp - 0x148], 0
mov dword [ebp - 0x150], 0
lea edx, [ebp - 0x150]
push edx
lea eax, [ebp - 0x148]
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x17c]
call fcn.00424f4f
mov dword [ebp - 0x15c], eax
cmp dword [ebp - 0x15c], 0
jne 0x54d033
jmp 0x54d1db
cmp dword [ebp - 0x148], 0
je 0x54d041
jmp 0x54d1db
mov edx, dword [ebp - 0x15c]
mov dword [ebp - 0x158], edx
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x174]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x174]
mov edx, dword [eax]
call dword [edx + 8]
mov dword [ebp - 0x154], eax
mov eax, dword [ebp - 0x158]
mov ecx, dword [eax + 8]
mov dword [0x277c050], ecx
mov eax, dword [ebp - 0x154]
xor edx, edx
mov ecx, 0x3e8
div ecx
mov dword [0x277c054], eax
cmp dword [0x277c02c], 0
jle 0x54d0e8
mov edx, dword [ebp - 0x154]
sub edx, dword [0x277c03c]
mov dword [ebp - 0x160], edx
push 4
lea eax, [ebp - 0x160]
push eax
mov ecx, dword [0x277c02c]
push ecx
call fcn.005c7f91
add esp, 0xc
mov edx, dword [ebp - 0x158]
xor eax, eax
mov ax, word [edx]
push eax
mov ecx, dword [ebp - 0x158]
push ecx
mov edx, dword [0x277c02c]
push edx
call fcn.005c7f91
add esp, 0xc
mov eax, dword [0x277c058]
add eax, 0x2710
cmp dword [ebp - 0x154], eax
jbe 0x54d19d
cmp dword [0x6f0ab0], 0
je 0x54d191
mov ecx, dword [0x6f0ab0]
cmp dword [ecx + 0x200ec], 0
je 0x54d191
mov edx, dword [ebp - 0x154]
add edx, 0x1f4
cmp dword [0x277c050], edx
jbe 0x54d157
mov eax, dword [ebp - 0x154]
add eax, 0x55
push eax
mov ecx, dword [ebp - 0x190]
mov ecx, dword [ecx + 0x174]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x174]
mov edx, dword [eax]
call dword [edx + 4]
jmp 0x54d191
mov eax, dword [ebp - 0x154]
sub eax, 0x1f4
cmp dword [0x277c050], eax
jae 0x54d191
mov ecx, dword [ebp - 0x154]
sub ecx, 0x55
push ecx
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x174]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x174]
mov eax, dword [edx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x154]
mov dword [0x277c058], ecx
mov edx, dword [ebp - 0x15c]
push edx
mov eax, dword [ebp - 0x158]
xor ecx, ecx
mov cx, word [eax + 4]
push ecx
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x178]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x178]
mov eax, dword [edx]
call dword [eax + 8]
mov ecx, 1
test ecx, ecx
jne 0x54d000
jmp case.0x54c0bd.4
mov edx, dword [ebp - 0x190]
cmp dword [edx + 0x16c], 0
je 0x54d200
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x16c]
call fcn.0042bd21
jmp case.0x54c0bd.4
cmp dword [0x6f0ab0], 0
je 0x54d2d2
mov ecx, dword [0x6f0ab0]
cmp dword [ecx + 0x24], 0x7530
jne 0x54d2d2
cmp dword [0x277c05c], 0
jne 0x54d29e
mov edx, dword [ebp - 0x190]
mov ecx, dword [edx + 0x174]
mov eax, dword [ebp - 0x190]
mov edx, dword [eax + 0x174]
mov eax, dword [edx]
call dword [eax + 8]
mov dword [0x277c05c], eax
mov ecx, dword [0x6f0ab0]
mov dword [ebp - 0x174], ecx
mov edx, dword [ebp - 0x174]
mov eax, dword [edx + 0x4c]
mov cx, word [eax + 0x20]
mov word [ebp - 0x16a], cx
mov word [ebp - 0x16c], 0x3ae
mov dword [ebp - 0x164], 0
push 0x10
lea edx, [ebp - 0x170]
push edx
mov ecx, dword [0x277c01c]
call fcn.00425df0
xor eax, eax
jmp 0x54d3ab
mov eax, dword [ebp - 0x190]
mov ecx, dword [eax + 0x174]
mov edx, dword [ebp - 0x190]
mov eax, dword [edx + 0x174]
mov edx, dword [eax]
call dword [edx + 8]
mov ecx, dword [0x277c05c]
add ecx, 0xbb8
cmp eax, ecx
jae 0x54d2d2
xor eax, eax
jmp 0x54d3ab
mov edx, dword [ebp - 0x190]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x190]
call dword [eax + 8]
cmp dword [0x277c02c], 0
jle 0x54d305
mov ecx, dword [0x277c02c]
push ecx
call fcn.005c655f
add esp, 4
mov dword [0x277c02c], 0
mov dword [0x277c064], 1
call fcn.004244d1
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov dword [0x277c05c], 0
xor eax, eax
jmp 0x54d3ab
mov eax, dword [ebp - 0x190]
cmp dword [eax + 0x168], 0
je 0x54d395
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x168]
cmp dword [edx + 0x11c], 0
je 0x54d395
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x168]
mov eax, dword [edx + 0x11c]
mov ecx, dword [ebp - 0x190]
mov edx, dword [ecx + 0x168]
mov ecx, dword [edx + 0x11c]
mov edx, dword [ecx]
push eax
call dword [edx + 0x98]
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_DefWindowProcA]
pop edi
mov esp, ebp
pop ebp
ret 0x10