Function at 0x523325
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x158
mov dword [ebp - 0x134], ecx
mov eax, dword [ebp - 0x134]
cmp dword [eax + 0x1c8], 0
je 0x523348
jmp 0x524483
cmp dword [ebp + 8], 0
jne 0x523353
jmp 0x524483
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x20], 0
jb 0x523374
mov edx, dword [ebp + 8]
cmp dword [edx + 0x20], 0x3e8
jae 0x523374
mov dword [ebp - 0x138], 1
jmp 0x52337e
mov dword [ebp - 0x138], 0
cmp dword [ebp - 0x138], 0
jne 0x523398
mov ecx, dword [ebp + 8]
call fcn.0051e99d
test eax, eax
je 0x523398
jmp 0x524483
mov eax, dword [ebp - 0x134]
xor ecx, ecx
mov cl, byte [eax + 0x3fe]
and ecx, 0xf
cmp ecx, 0xf
jne 0x5233f9
mov edx, dword [0x684bb0]
mov eax, dword [edx + 0x4c]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x134]
movsx edx, byte [ecx + 0x77e]
test edx, edx
jle 0x5233f9
mov eax, dword [ebp - 0x14]
movsx ecx, byte [eax + 0x77e]
test ecx, ecx
jle 0x5233f9
mov edx, dword [ebp - 0x134]
movsx eax, byte [edx + 0x77e]
mov ecx, dword [ebp - 0x14]
movsx edx, byte [ecx + 0x77e]
cmp eax, edx
jne 0x5233f9
jmp 0x524483
mov eax, dword [ebp - 0x134]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x134]
call dword [edx + 0x50]
cmp eax, 1
je 0x52341f
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
call dword [edx + 0x50]
cmp eax, 1
jne 0x523424
jmp 0x524483
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x28]
call fcn.00599ab0
cmp eax, 0x93a
jl 0x523484
mov ecx, dword [ebp - 0x134]
fld dword [ecx + 0x28]
call fcn.00599ab0
cmp eax, 0x942
jg 0x523484
mov edx, dword [ebp - 0x134]
fld dword [edx + 0x2c]
call fcn.00599ab0
cmp eax, 0xf57
jl 0x523484
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x2c]
call fcn.00599ab0
cmp eax, 0xf5f
jg 0x523484
mov dword [ebp - 0x13c], 1
jmp 0x52348e
mov dword [ebp - 0x13c], 0
cmp dword [ebp - 0x13c], 0
je 0x5234a3
mov dword [ebp + 8], 0
jmp 0x524483
mov ecx, dword [0x684bb0]
cmp dword [ecx + 0x24], 0x7530
je 0x5234b7
jmp 0x524483
mov edx, dword [0x684bb0]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x27124], 0
je 0x5234d1
jmp 0x524483
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0x27120], 0
je 0x5234e2
jmp 0x524483
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x27118], 0
je 0x5234f3
jmp 0x524483
cmp dword [0x13c1ae4], 0
je 0x523501
jmp 0x524483
cmp dword [0x5d807c], 0
jne 0x523617
mov eax, dword [ebp + 8]
movsx ecx, byte [eax + 0x1fd]
cmp ecx, 1
jne 0x523617
mov edx, dword [0x13c1aac]
xor eax, eax
mov ax, word [edx + 0xf10]
mov ecx, dword [ebp + 8]
xor edx, edx
mov dx, word [ecx + 0x648]
cmp eax, edx
je 0x523617
mov eax, dword [ebp + 8]
xor ecx, ecx
mov cx, word [eax + 0x648]
test ecx, ecx
je 0x523617
cmp dword [0x5d8068], 0
jne 0x5235ce
mov edx, dword [ebp - 0x134]
fld dword [edx + 0x28]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x10
jle 0x5235af
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x28]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x14
jge 0x5235af
mov ecx, dword [ebp - 0x134]
fld dword [ecx + 0x2c]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x1d
jle 0x5235af
mov dword [ebp - 0x140], 1
jmp 0x5235b9
mov dword [ebp - 0x140], 0
cmp dword [ebp - 0x140], 0
jne 0x5235ce
mov dword [ebp - 0x144], 1
jmp 0x5235d8
mov dword [ebp - 0x144], 0
cmp dword [ebp - 0x144], 0
je 0x5235e6
jmp 0x524483
mov edx, dword [ebp - 0x134]
movsx eax, byte [edx + 0x77e]
test eax, eax
jle 0x523617
mov ecx, dword [ebp + 8]
movsx edx, byte [ecx + 0x77e]
mov eax, dword [ebp - 0x134]
movsx ecx, byte [eax + 0x77e]
cmp edx, ecx
jne 0x523617
jmp 0x524483
cmp dword [0x5d807c], 0
jne 0x523791
cmp dword [0x5d8068], 0
jne 0x52369a
mov edx, dword [ebp - 0x134]
fld dword [edx + 0x28]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x10
jle 0x52367b
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x28]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x14
jge 0x52367b
mov ecx, dword [ebp - 0x134]
fld dword [ecx + 0x2c]
call fcn.00599ab0
sar eax, 7
cmp eax, 0x1d
jle 0x52367b
mov dword [ebp - 0x148], 1
jmp 0x523685
mov dword [ebp - 0x148], 0
cmp dword [ebp - 0x148], 0
jne 0x52369a
mov dword [ebp - 0x14c], 1
jmp 0x5236a4
mov dword [ebp - 0x14c], 0
cmp dword [ebp - 0x14c], 0
je 0x523760
mov edx, dword [ebp + 8]
xor eax, eax
mov ax, word [edx + 0x648]
test eax, eax
je 0x5236e5
mov ecx, dword [0x13c1aac]
xor edx, edx
mov dx, word [ecx + 0xf10]
mov eax, dword [ebp + 8]
xor ecx, ecx
mov cx, word [eax + 0x648]
cmp edx, ecx
je 0x5236e5
jmp 0x524483
mov edx, dword [ebp - 0xc]
movsx eax, byte [edx + 0x26e94]
cmp eax, 1
jne 0x52375e
mov ecx, dword [0x13c1aac]
xor edx, edx
mov dx, word [ecx + 0xf10]
test edx, edx
je 0x52375e
mov eax, dword [0x13c1aac]
xor ecx, ecx
mov cx, word [eax + 0xf10]
mov edx, dword [ebp + 8]
xor eax, eax
mov ax, word [edx + 0x648]
cmp ecx, eax
je 0x52375e
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x20], 0
jb 0x523746
mov edx, dword [ebp + 8]
cmp dword [edx + 0x20], 0x3e8
jae 0x523746
mov dword [ebp - 0x150], 1
jmp 0x523750
mov dword [ebp - 0x150], 0
cmp dword [ebp - 0x150], 1
jne 0x52375e
jmp 0x524483
jmp 0x523791
mov eax, dword [ebp - 0x134]
movsx ecx, byte [eax + 0x77e]
test ecx, ecx
jle 0x523791
mov edx, dword [ebp + 8]
movsx eax, byte [edx + 0x77e]
mov ecx, dword [ebp - 0x134]
movsx edx, byte [ecx + 0x77e]
cmp eax, edx
jne 0x523791
jmp 0x524483
mov eax, dword [0x9362cc]
mov edx, dword [eax]
mov ecx, dword [0x9362cc]
call dword [edx + 8]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov dword [eax + 0x26e70], ecx
mov edx, dword [0x13c1aac]
add edx, 0x6ec
mov dword [ebp - 0x10], edx
mov dword [ebp - 8], 0
cmp dword [ebp - 0x10], 0
je 0x5237e6
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x2dc]
and ecx, 0x20000000
test ecx, ecx
je 0x5237e6
mov dword [ebp - 8], 1
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 0x27440]
add eax, 0x3e8
cmp dword [ebp - 4], eax
jbe 0x524483
mov ecx, dword [ebp - 0x134]
fld dword [ecx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x134]
fld dword [edx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 8]
fld dword [eax + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x34]
push ecx
mov edx, dword [ebp - 0x28]
push edx
call fcn.00560b76
add esp, 0x10
mov dword [ebp - 0x30], eax
push 0x1b
mov eax, dword [0x13c1aac]
add eax, 0x6ec
push eax
call fcn.00558ff0
add esp, 8
add eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
push 8
mov ecx, dword [ebp - 0xc]
add ecx, 0x94
push ecx
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x34]
push ecx
mov edx, dword [ebp - 0x28]
push edx
call fcn.00560bec
add esp, 0x18
mov eax, dword [ebp + 8]
cmp dword [eax + 0x200], 0x38
jne 0x5238e3
mov ecx, dword [ebp + 8]
xor edx, edx
mov dx, word [ecx + 0x166]
test edx, edx
jne 0x5238e3
mov eax, dword [ebp - 0x30]
sub eax, 0xc
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
jge 0x5238c7
mov dword [ebp - 0x30], 0
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x18], eax
mov edx, dword [ebp + 8]
fld dword [edx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], 3
mov eax, dword [ebp - 0x134]
movsx ecx, byte [eax + 0x76a]
test ecx, ecx
je 0x523902
mov dword [ebp - 0x20], 3
mov edx, dword [0x13c1aac]
add edx, 0x6ec
mov dword [ebp - 0x24], edx
mov eax, dword [0x936778]
add eax, 1
mov dword [0x936778], eax
mov eax, dword [0x936778]
cdq
idiv dword [ebp - 0x20]
mov dword [0x936778], edx
mov ecx, dword [ebp - 0x30]
cmp ecx, dword [ebp - 0x2c]
jg 0x5242a7
mov edx, dword [ebp + 8]
fld dword [edx + 0x28]
call fcn.00599ab0
cmp dword [ebp - 0x18], eax
jne 0x5242a7
mov eax, dword [ebp + 8]
fld dword [eax + 0x2c]
call fcn.00599ab0
cmp dword [ebp - 0x1c], eax
jne 0x5242a7
push 0x60
push 0
lea ecx, [ebp - 0x100]
push ecx
call fcn.005998e0
add esp, 0xc
mov word [ebp - 0xfc], 0x39d
mov edx, dword [ebp - 0x134]
mov ax, word [edx + 0x20]
mov word [ebp - 0xfa], ax
mov ecx, dword [ebp - 0x134]
mov dx, word [ecx + 0x20]
mov word [ebp - 0xf4], dx
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x28]
call fcn.00599ab0
mov word [ebp - 0xf0], ax
mov ecx, dword [ebp - 0x134]
fld dword [ecx + 0x2c]
call fcn.00599ab0
mov word [ebp - 0xee], ax
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x287c4], 0
je 0x5239f7
mov eax, dword [ebp - 0xc]
mov cx, word [eax + 0x287c4]
mov word [ebp - 0xf0], cx
mov edx, dword [ebp - 0xc]
mov ax, word [edx + 0x287c8]
mov word [ebp - 0xee], ax
mov word [ebp - 0xe6], 0xffff
mov word [ebp - 0xe8], 0xffff
mov byte [ebp - 0xe3], 0
mov ecx, dword [0x936778]
add ecx, 4
mov byte [ebp - 0xe4], cl
push 0x15
mov edx, dword [ebp - 0x24]
add edx, 0x8c
push edx
call fcn.00556f5b
add esp, 8
cmp eax, 0x65
jne 0x523a46
mov word [ebp - 0xe8], 0x97
jmp 0x523d43
push 0x15
mov eax, dword [ebp - 0x24]
add eax, 0x8c
push eax
call fcn.00556f5b
add esp, 8
cmp eax, 0x66
jne 0x523ab8
mov word [ebp - 0xe8], 0x98
mov ecx, dword [ebp - 0x24]
movsx edx, word [ecx + 0x8c]
imul edx, edx, 0x8c
movsx eax, word [edx + 0xd4e268]
cmp eax, 0x367
jne 0x523a8e
mov byte [ebp - 0xe3], 0
jmp 0x523ab3
mov ecx, dword [ebp - 0x24]
movsx edx, word [ecx + 0x8c]
imul edx, edx, 0x8c
movsx eax, word [edx + 0xd4e268]
cmp eax, 0x368
jne 0x523ab3
mov byte [ebp - 0xe3], 1
jmp 0x523d43
push 0x15
mov ecx, dword [ebp - 0x24]
add ecx, 0x8c
push ecx
call fcn.00556f5b
add esp, 8
cmp eax, 0x67
jne 0x523cd3
mov word [ebp - 0xe8], 0x99
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x369
jne 0x523b09
mov byte [ebp - 0xe3], 0
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x36a
jne 0x523b34
mov byte [ebp - 0xe3], 1
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x36b
jne 0x523b5f
mov byte [ebp - 0xe3], 2
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x36c
jne 0x523b8a
mov byte [ebp - 0xe3], 3
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x36d
jne 0x523bb5
mov byte [ebp - 0xe3], 4
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x37c
jne 0x523be0
mov byte [ebp - 0xe3], 5
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x38b
jne 0x523c0b
mov byte [ebp - 0xe3], 6
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x38c
jne 0x523c36
mov byte [ebp - 0xe3], 7
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x38d
jne 0x523c5e
mov byte [ebp - 0xe3], 8
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x25
jne 0x523c83
mov byte [ebp - 0xe3], 9
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0x2ff
jne 0x523cab
mov byte [ebp - 0xe3], 0xa
jmp 0x523cd1
mov edx, dword [ebp - 0x24]
movsx eax, word [edx + 0x8c]
imul eax, eax, 0x8c
movsx ecx, word [eax + 0xd4e268]
cmp ecx, 0xafe
jne 0x523cd1
mov byte [ebp - 0xe3], 0xb
jmp 0x523d43
push 0x15
mov edx, dword [ebp - 0x24]
add edx, 0x8c
push edx
call fcn.00556f5b
add esp, 8
cmp eax, 0x68
jne 0x523d43
mov word [ebp - 0xe8], 0x68
mov eax, dword [ebp - 0x24]
movsx ecx, word [eax + 0x8c]
imul ecx, ecx, 0x8c
movsx edx, word [ecx + 0xd4e268]
cmp edx, 0x36e
jne 0x523d1d
mov byte [ebp - 0xe3], 0
jmp 0x523d43
mov eax, dword [ebp - 0x24]
movsx ecx, word [eax + 0x8c]
imul ecx, ecx, 0x8c
movsx edx, word [ecx + 0xd4e268]
cmp edx, 0x36f
jne 0x523d43
mov byte [ebp - 0xe3], 1
mov eax, dword [ebp + 8]
mov cx, word [eax + 0x20]
mov word [ebp - 0xd4], cx
mov edx, dword [ebp - 0xd4]
and edx, 0xffff
push edx
mov eax, dword [0x13c1aac]
mov edx, dword [eax]
mov ecx, dword [0x13c1aac]
call dword [edx + 0x34]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jne 0x523d7c
jmp 0x524483
mov eax, dword [0x13c1aac]
xor ecx, ecx
mov cl, byte [eax + 0x9d2]
mov dword [ebp - 0xa0], ecx
mov word [ebp - 0xd2], 0xfffe
mov dx, word [0x5d8078]
mov word [ebp - 0xf2], dx
lea eax, [ebp - 0xe1]
push eax
push 0x5d8078
push 0
mov ecx, dword [0x13c1aac]
add ecx, 0x6ec
push ecx
call fcn.0055fed6
add esp, 0x10
mov edx, dword [ebp - 0x3c]
fld dword [edx + 0x28]
call fcn.00599ab0
mov word [ebp - 0xec], ax
mov eax, dword [ebp - 0x3c]
fld dword [eax + 0x2c]
call fcn.00599ab0
mov word [ebp - 0xea], ax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x38], 0x60
mov ecx, dword [ebp - 0x24]
xor edx, edx
mov dl, byte [ecx + 0x14]
cmp edx, 3
jne 0x523e2b
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax + 0x2dc]
and ecx, 0x200000
test ecx, ecx
je 0x523e2b
mov word [ebp - 0xfc], 0x39e
mov dword [ebp - 0x38], 0x34
mov edx, dword [ebp - 0x24]
xor eax, eax
mov al, byte [edx + 0x14]
cmp eax, 3
jne 0x524225
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx + 0x2dc]
and edx, 0x40
test edx, edx
je 0x524225
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 0x4c]
mov edx, dword [ebp - 0x3c]
fld dword [edx + 0x28]
fsub dword [ecx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 0x4c]
mov edx, dword [ebp - 0x3c]
fld dword [edx + 0x2c]
fsub dword [ecx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x108], eax
cmp dword [ebp - 0x104], 0
jle 0x523e99
mov dword [ebp - 0x104], 1
jmp 0x523eac
cmp dword [ebp - 0x104], 0
jge 0x523eac
mov dword [ebp - 0x104], 0xffffffff
cmp dword [ebp - 0x108], 0
jle 0x523ec1
mov dword [ebp - 0x108], 1
jmp 0x523ed4
cmp dword [ebp - 0x108], 0
jge 0x523ed4
mov dword [ebp - 0x108], 0xffffffff
mov eax, dword [ebp - 0x3c]
fld dword [eax + 0x28]
call fcn.00599ab0
add eax, dword [ebp - 0x104]
mov dword [ebp - 0x110], eax
mov ecx, dword [ebp - 0x3c]
fld dword [ecx + 0x2c]
call fcn.00599ab0
add eax, dword [ebp - 0x108]
mov dword [ebp - 0x114], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x10c], ecx
mov edx, dword [ebp - 0x10c]
cmp dword [edx + 0xc], 0
je 0x5241e0
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10c]
cmp ecx, dword [eax + 0x4c]
je 0x5241cc
mov edx, dword [ebp - 0x10c]
cmp edx, dword [ebp - 0x3c]
je 0x5241cc
mov eax, dword [ebp - 0x10c]
fld dword [eax + 0x28]
call fcn.00599ab0
cmp eax, dword [ebp - 0x110]
jne 0x5241cc
mov ecx, dword [ebp - 0x10c]
fld dword [ecx + 0x2c]
call fcn.00599ab0
cmp eax, dword [ebp - 0x114]
jne 0x5241cc
mov edx, dword [ebp - 0x10c]
cmp dword [edx + 0x20], 0
jb 0x523f9d
mov eax, dword [ebp - 0x10c]
cmp dword [eax + 0x20], 0x3e8
jae 0x523f9d
mov dword [ebp - 0x154], 1
jmp 0x523fa7
mov dword [ebp - 0x154], 0
cmp dword [ebp - 0x154], 1
jne 0x524139
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x10c]
call dword [edx + 0x54]
test eax, eax
je 0x523fdb
mov eax, dword [ebp - 0x10c]
movsx ecx, byte [eax + 0x1fc]
cmp ecx, 1
jne 0x523fef
mov edx, dword [ebp - 0x10c]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x10c], eax
jmp 0x523f11
cmp dword [0x5d807c], 0
jne 0x524137
mov ecx, dword [0x13c1aac]
xor edx, edx
mov dx, word [ecx + 0xf10]
mov eax, dword [ebp - 0x10c]
xor ecx, ecx
mov cx, word [eax + 0x648]
cmp edx, ecx
je 0x52403b
cmp dword [0x5d8068], 0
jne 0x52403b
mov edx, dword [ebp - 0x10c]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x10c], eax
jmp 0x523f11
cmp dword [0x5d8068], 0
jle 0x524137
mov ecx, dword [ebp - 0x134]
movsx edx, byte [ecx + 0x77e]
test edx, edx
jle 0x52408b
mov eax, dword [ebp - 0x134]
movsx ecx, byte [eax + 0x77e]
mov edx, dword [ebp - 0x10c]
movsx eax, byte [edx + 0x77e]
cmp ecx, eax
jne 0x52408b
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x10c], edx
jmp 0x523f11
mov eax, dword [ebp - 0x134]
movsx ecx, byte [eax + 0x77e]
cmp ecx, 3
jne 0x52410e
mov edx, dword [ebp - 0x10c]
cmp dword [edx + 0x20], 0
jb 0x5240c4
mov eax, dword [ebp - 0x10c]
cmp dword [eax + 0x20], 0x3e8
jae 0x5240c4
mov dword [ebp - 0x158], 1
jmp 0x5240ce
mov dword [ebp - 0x158], 0
cmp dword [ebp - 0x158], 0
jne 0x5240fa
mov ecx, dword [ebp - 0x10c]
movsx edx, byte [ecx + 0x77e]
test edx, edx
jle 0x52410e
mov eax, dword [ebp - 0x10c]
movsx ecx, byte [eax + 0x77e]
cmp ecx, 4
je 0x52410e
mov edx, dword [ebp - 0x10c]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x10c], eax
jmp 0x523f11
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x10c]
call dword [edx + 0x58]
test eax, eax
jne 0x524137
mov eax, dword [ebp - 0x10c]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x10c], ecx
jmp 0x523f11
jmp 0x5241b0
cmp dword [0x5d807c], 0
jne 0x5241b0
mov edx, dword [ebp - 0x10c]
movsx eax, byte [edx + 0x1fd]
cmp eax, 1
jne 0x5241b0
mov ecx, dword [0x13c1aac]
xor edx, edx
mov dx, word [ecx + 0xf10]
mov eax, dword [ebp - 0x10c]
xor ecx, ecx
mov cx, word [eax + 0x648]
cmp edx, ecx
je 0x524189
mov edx, dword [ebp - 0x10c]
xor eax, eax
mov ax, word [edx + 0x648]
test eax, eax
jne 0x52419c
mov ecx, dword [ebp - 0x10c]
xor edx, edx
mov dx, word [ecx + 0x648]
test edx, edx
jne 0x5241b0
mov eax, dword [ebp - 0x10c]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x10c], ecx
jmp 0x523f11
mov edx, dword [ebp - 0x10c]
mov ax, word [edx + 0x20]
mov word [ebp - 0xd0], ax
mov word [ebp - 0xce], 0xfffe
jmp 0x5241e0
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x10c], edx
jmp 0x523f11
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax + 0x2dc]
and ecx, 0x200000
cmp ecx, 0x200000
je 0x524215
movsx edx, word [ebp - 0xce]
cmp edx, 0xfffffffe
je 0x524215
mov word [ebp - 0xfc], 0x39d
mov dword [ebp - 0x38], 0x30
jmp 0x524225
mov word [ebp - 0xfc], 0x39e
mov dword [ebp - 0x38], 0x34
mov eax, dword [ebp - 0x38]
push eax
lea ecx, [ebp - 0x100]
push ecx
call fcn.00569b76
add esp, 8
mov edx, dword [ebp - 0x38]
push edx
lea eax, [ebp - 0x100]
push eax
lea ecx, [ebp - 0x9c]
push ecx
call fcn.00599ae0
add esp, 0xc
mov edx, dword [ebp - 0xc]
mov ax, word [edx + 0x20]
mov word [ebp - 0x96], ax
mov byte [ebp - 0x7e], 1
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx + 0x2dc]
and edx, 0x20000000
test edx, edx
je 0x52427f
mov al, byte [ebp - 0x7d]
or al, 4
mov byte [ebp - 0x7d], al
lea ecx, [ebp - 0x9c]
push ecx
push 0x39d
mov edx, dword [ebp - 0xc]
mov eax, dword [edx]
mov ecx, dword [ebp - 0xc]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 4]
mov dword [ecx + 0x27440], edx
jmp 0x524483
mov eax, dword [ebp - 0xc]
movsx ecx, byte [eax + 0x26e94]
cmp ecx, 1
jne 0x524483
mov edx, dword [ebp - 0x134]
cmp dword [edx + 0x708], 0
je 0x5242dc
mov eax, dword [ebp - 0x134]
cmp dword [eax + 0x708], 1
jne 0x524483
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 0x120], ax
mov ecx, dword [ebp - 0x120]
and ecx, 0xffff
sar ecx, 8
test ecx, ecx
jle 0x524303
jmp 0x524483
mov edx, dword [ebp - 0x134]
fld dword [edx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x12c], eax
mov eax, dword [ebp - 0x134]
fld dword [eax + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x130], eax
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x18], eax
mov edx, dword [ebp + 8]
fld dword [edx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 0x18]
push ecx
mov edx, dword [ebp - 0x130]
push edx
mov eax, dword [ebp - 0x12c]
push eax
call fcn.00560b76
add esp, 0x10
mov dword [ebp - 0x118], eax
mov dword [ebp - 0x124], 1
mov dword [ebp - 0x128], 1
mov ecx, dword [ebp - 0x12c]
cmp ecx, dword [ebp - 0x18]
jle 0x524394
mov dword [ebp - 0x124], 0xffffffff
mov edx, dword [ebp - 0x130]
cmp edx, dword [ebp - 0x1c]
jle 0x5243a9
mov dword [ebp - 0x128], 0xffffffff
mov dword [ebp - 0x11c], 0
mov eax, dword [ebp - 0x118]
cmp eax, dword [ebp - 0x2c]
jle 0x524445
cmp dword [ebp - 0x11c], 0x1f4
jle 0x5243d3
jmp 0x524483
mov ecx, dword [ebp - 0x12c]
cmp ecx, dword [ebp - 0x18]
je 0x5243f0
mov edx, dword [ebp - 0x12c]
add edx, dword [ebp - 0x124]
mov dword [ebp - 0x12c], edx
mov eax, dword [ebp - 0x130]
cmp eax, dword [ebp - 0x1c]
je 0x52440d
mov ecx, dword [ebp - 0x130]
add ecx, dword [ebp - 0x128]
mov dword [ebp - 0x130], ecx
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x130]
push ecx
mov edx, dword [ebp - 0x12c]
push edx
call fcn.00560b76
add esp, 0x10
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x11c]
add eax, 1
mov dword [ebp - 0x11c], eax
jmp 0x5243b3
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x12c]
mov dword [ecx + 0x27590], edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x130]
mov dword [eax + 0x27594], ecx
push 0
push 0
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 0x27594]
push eax
mov ecx, dword [edx + 0x27590]
push ecx
mov ecx, dword [ebp - 0x134]
call fcn.005290e3
mov esp, ebp
pop ebp
ret 4