Function at 0x49c580
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x17ec
call fcn.005925e0
mov eax, dword [0x5edb18]
test eax, eax
push ebx
push esi
mov ebx, edx
mov esi, ecx
push edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], esi
jne 0x49d786
mov eax, dword [0x5bfbc4]
test eax, eax
mov edi, 1
mov dword [0x5edb18], edi
jne 0x49c5d0
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
jns 0x49d77c
push 0
lea edx, [esp + 0x44]
mov ecx, esi
mov dword [0x5ed97c], 0
call fcn.00562fa0
mov esi, eax
test esi, esi
mov dword [esp + 0x28], esi
je 0x49d77c
mov eax, dword [esi + 0x87c]
test eax, eax
je 0x49d77c
mov eax, dword [esi + 0x6cc]
test eax, eax
je 0x49d77c
mov ecx, dword [esi + 0xbe8]
mov dword [esp + 0x20], ecx
call fcn.004f0af0
test eax, eax
je 0x49d77c
mov eax, dword [esi + 0x76c]
cmp eax, edi
mov ecx, dword [esi + 0xa04]
mov dword [esp + 0x24], ecx
je 0x49c649
cmp eax, 2
jne 0x49c651
cmp dword [0x5f1964], edi
jne 0x49c651
lea eax, [ecx + ecx - 1]
mov dword [esp + 0x24], eax
movzx ecx, bx
push edi
mov dword [esp + 0x3c], ecx
shr ebx, 0x10
mov dword [esp + 0x40], ebx
mov eax, dword [esi + 0x87c]
mov ecx, dword [esi]
lea edx, [esp + 0x3c]
push edx
push eax
push ecx
call dword [sym.imp.USER32.dll_MapWindowPoints]
cmp dword [esp + 0x38], 2
jl 0x49d77c
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x4c]
cmp eax, ecx
jge 0x49d77c
xor edi, edi
cmp eax, edi
jl 0x49c6cb
mov eax, dword [esi + 0x710]
mov edx, dword [esi + 0x6cc]
sub eax, dword [esi + 0x714]
mov ebx, dword [edx + 0x44]
cmp eax, edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ebx
jle 0x49c6c7
cmp ebx, edx
je 0x49c6c3
mov ebx, dword [ebx + 0x44]
dec eax
cmp eax, edi
jg 0x49c6b7
mov dword [esp + 0x14], ebx
cmp ebx, edi
jne 0x49c6dc
mov dword [0x5edb18], edi
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
mov edi, dword [ebx + 8]
sub ecx, edx
dec ecx
cmp ebx, eax
mov dword [esp + 0x1c], ecx
je 0x49c78f
mov ebx, dword [ebx + 0x44]
mov eax, dword [ebx + 8]
sub ecx, edx
cmp edi, eax
je 0x49c74b
mov edi, eax
mov eax, dword [esi + 0x76c]
cmp eax, 3
je 0x49c71d
cmp eax, 2
jne 0x49c743
cmp dword [0x5f1964], 2
jne 0x49c743
mov edx, dword [esp + 0x28]
mov esi, dword [edx + 0xa04]
mov eax, 0x55555555
imul esi
sub edx, esi
mov esi, dword [esp + 0x28]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
add ecx, edx
mov edx, dword [esp + 0x24]
mov eax, edx
neg eax
cmp ecx, eax
jl 0x49c753
cmp ebx, dword [esp + 0x2c]
jne 0x49c6f6
jmp 0x49c78b
mov eax, dword [esi + 0x76c]
add ecx, edx
cmp eax, 3
mov dword [esp + 0x14], ebx
je 0x49c772
cmp eax, 2
jne 0x49c788
cmp dword [0x5f1964], 2
jne 0x49c788
mov edx, dword [esi + 0xa04]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add edx, eax
add ecx, edx
mov ebx, dword [ebx + 0x40]
mov dword [esp + 0x14], ebx
test ebx, ebx
je 0x49d77c
mov esi, dword [ebx + 8]
mov edi, dword [esp + 0x24]
mov edi, edi
mov eax, dword [esp + 0x3c]
cmp eax, ecx
jl 0x49c7af
lea edx, [ecx + edi]
cmp eax, edx
jl 0x49c80e
mov ebx, dword [ebx + 0x40]
test ebx, ebx
mov dword [esp + 0x14], ebx
je 0x49d767
mov eax, ebx
mov eax, dword [eax + 8]
add ecx, edi
cmp esi, eax
je 0x49c7fe
mov edx, dword [esp + 0x28]
mov esi, eax
mov eax, dword [edx + 0x76c]
cmp eax, 3
je 0x49c7e8
cmp eax, 2
jne 0x49c7fe
cmp dword [0x5f1964], 2
jne 0x49c7fe
mov edx, dword [edx + 0xa04]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add edx, eax
add ecx, edx
cmp ecx, dword [esp + 0x1c]
jg 0x49d767
mov ebx, dword [esp + 0x14]
jmp 0x49c7a0
mov ecx, dword [esp + 0x38]
mov edx, dword [ebx]
push ecx
mov ecx, dword [esp + 0x2c]
call fcn.0049c040
test eax, eax
mov dword [esp + 0x10], eax
jl 0x49d767
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + eax]
cmp al, 0x20
je 0x49d767
cmp al, 9
je 0x49d767
mov ecx, edx
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x6cc]
cmp ecx, eax
mov esi, ecx
mov dword [esp + 0x18], esi
je 0x49c875
lea ecx, [ecx]
mov ecx, dword [esi + 0x44]
mov edx, dword [ecx + 8]
cmp edx, dword [esi + 8]
jne 0x49c871
mov esi, ecx
cmp esi, eax
jne 0x49c860
mov dword [esp + 0x18], esi
test esi, esi
je 0x49d767
test eax, eax
mov edx, 1
mov dword [esp + 0x1c], edx
je 0x49c8a3
lea ebx, [ebx]
cmp eax, esi
je 0x49c8ab
mov ecx, dword [eax + 8]
cmp dword [eax + 8], ecx
jne 0x49c8c0
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x49c897
cmp eax, esi
je 0x49c8ab
mov dword [esp + 0x1c], edx
mov edx, 0x3e7
lea ecx, [esp + 0xc08]
call fcn.00420e60
mov ebx, esi
jmp 0x49c8d0
inc dword [esp + 0x1c]
jmp 0x49c890
mov esi, dword [esp + 0x18]
lea ebx, [ebx]
mov eax, dword [ebx + 8]
cmp eax, dword [esi + 8]
jne 0x49c977
mov eax, dword [ebx + 0x10]
test eax, eax
mov ecx, dword [ebx]
jle 0x49c908
cmp byte [ecx], 0x20
jne 0x49c8fe
lea ebx, [ebx]
test eax, eax
jle 0x49c8fe
mov dl, byte [ecx + 1]
inc ecx
dec eax
cmp dl, 0x20
je 0x49c8f0
cmp byte [ecx], 0
jne 0x49c908
mov ecx, 0x5a5348
lea eax, [esp + 0xc08]
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x49c912
sub eax, esi
mov esi, eax
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x49c922
sub eax, edi
add eax, esi
cmp eax, 0x3b5
ja 0x49c973
mov eax, ecx
mov edx, ecx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49c938
lea edi, [esp + 0xc08]
sub eax, edx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x49c950
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ebx, dword [ebx + 0x40]
test ebx, ebx
jne 0x49c8c6
mov esi, dword [esp + 0x18]
mov ecx, dword [esi]
mov edx, 0x5ed590
mov edi, edi
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x49c980
cmp esi, dword [esp + 0x14]
jne 0x49c99a
mov dword [esp + 0x24], 0
jmp 0x49c9c3
mov eax, 0x5ed590
mov dword [esp + 0x24], 1
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49c9b0
mov ecx, dword [esp + 0x10]
sub eax, edx
add ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esi + 0x40]
test eax, eax
mov dword [esp + 0x18], eax
je 0x49cb96
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 8]
mov eax, dword [esp + 0x14]
cmp edx, dword [eax + 8]
jne 0x49cb96
mov edi, dword [esp + 0x18]
cmp edi, eax
jne 0x49c9f6
mov dword [esp + 0x24], 0
mov eax, dword [edi + 0x10]
test eax, eax
jle 0x49cb05
mov edx, dword [esp + 0x18]
mov ebx, dword [edx]
mov ecx, eax
mov dword [esp + 0x2c], ecx
lea ecx, [ecx]
mov al, byte [ebx]
cmp al, 0x20
je 0x49ca1a
cmp al, 9
jne 0x49ca22
test ecx, ecx
jle 0x49ca22
inc ebx
dec ecx
jmp 0x49ca10
cmp byte [ebx], 0
mov dword [esp + 0x2c], ecx
je 0x49cac4
mov eax, 0x5ed590
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49ca37
sub eax, edx
mov edx, eax
mov eax, ebx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49ca47
sub eax, esi
add eax, edx
cmp eax, 0x3b5
ja 0x49cb96
mov eax, ebx
mov edx, ebx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49ca61
mov edi, 0x5ed590
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x49ca70
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x24]
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
je 0x49caa8
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49ca95
mov ecx, dword [esp + 0x10]
sub eax, edx
add ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jne 0x49cb83
mov eax, dword [esp + 0x2c]
mov edx, dword [ecx + 0x10]
jmp 0x49cb77
mov edi, 0x5ed590
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x49cad0
mov eax, dword [esp + 0x24]
test eax, eax
mov dx, word [0x5a5348]
mov word [edi], dx
je 0x49caee
inc dword [esp + 0x10]
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x18], eax
jne 0x49cb83
dec dword [esp + 0x10]
jmp 0x49cb83
mov eax, 0x5ed590
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cb10
sub eax, edx
mov edx, dword [edi]
mov esi, eax
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cb22
sub eax, edi
add eax, esi
cmp eax, 0x3b5
ja 0x49cb96
mov eax, edx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cb36
mov edi, 0x5ed590
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x49cb45
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x24]
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
je 0x49cb83
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cb70
mov ecx, dword [esp + 0x10]
sub eax, edx
add ecx, eax
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x40]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x49c9d2
mov esi, dword [esp + 0x10]
test esi, esi
jl 0x49d767
mov eax, 0x5ed590
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cbb0
sub eax, edx
cmp esi, eax
jge 0x49d767
mov cl, byte [0x5ed590]
xor ebx, ebx
xor eax, eax
test cl, cl
je 0x49cc17
nop
mov cl, byte [eax + 0x5ed590]
cmp cl, 0x20
je 0x49cbe0
cmp cl, 9
jne 0x49cbe3
inc eax
jmp 0x49cbd0
mov cl, byte [eax + 0x5ed590]
test cl, cl
je 0x49cc17
cmp eax, esi
jg 0x49cc20
inc ebx
mov cl, byte [eax + 0x5ed590]
cmp cl, 0x20
je 0x49cc0d
cmp cl, 9
je 0x49cc0d
mov cl, byte [eax + 0x5ed591]
inc eax
test cl, cl
jne 0x49cbf2
mov cl, byte [eax + 0x5ed590]
test cl, cl
jne 0x49cbd0
cmp eax, esi
jg 0x49cc20
mov ebx, 1
lea esi, [esi + 0x5ed590]
cmp esi, 0x5ed590
jbe 0x49cc43
mov edi, edi
mov al, byte [esi]
cmp al, 0x20
je 0x49cc4d
cmp al, 9
je 0x49cc43
dec esi
cmp esi, 0x5ed590
ja 0x49cc30
mov al, byte [esi]
cmp al, 0x20
je 0x49cc4d
cmp al, 9
jne 0x49cc59
mov al, byte [esi + 1]
inc esi
test al, al
je 0x49d767
mov edx, 0x3e7
lea ecx, [esp + 0x820]
call fcn.00420e60
mov eax, esi
sub eax, 0x5ed590
test eax, eax
mov dword [esp + 0x10], eax
jle 0x49cc8f
push eax
lea eax, [esp + 0x824]
push 0x5ed590
push eax
call fcn.005911a0
add esp, 0xc
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cc94
sub eax, edx
inc eax
push eax
push esi
push 0x5ed590
call fcn.00592290
mov cl, byte [0x5ed590]
add esp, 0xc
test cl, cl
mov eax, 0x5ed590
je 0x49ccd9
lea esp, [esp]
mov cl, byte [eax]
cmp cl, 0x20
je 0x49ccd6
cmp cl, 9
je 0x49ccd6
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x49ccc0
jmp 0x49ccd9
mov byte [eax], 0
mov edx, 0xf
mov ecx, 0x5ed590
call fcn.00537560
mov al, byte [0x5ed590]
test al, al
je 0x49d767
mov eax, dword [0x5f35d0]
test eax, eax
je 0x49cdd7
xor eax, eax
mov ecx, 0x202
lea edi, [esp + 0xff0]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0xc08]
push ecx
xor esi, esi
mov edx, 0x3e7
lea ecx, [esp + 0x1020]
mov dword [esp + 0x30], esi
call fcn.00420d70
push 0x5ed590
mov edx, 0x3e7
lea ecx, [esp + 0x1407]
call fcn.00420d70
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xff0]
push eax
lea ecx, [esp + 0x30]
push ecx
push 1
push 0x1d
mov dword [esp + 0x17fc], ebx
mov ebx, dword [esp + 0x38]
mov ecx, dword [ebx + 0xbe8]
push str.HOTLINK
mov dword [esp + 0x1804], edx
push esi
mov edx, ebx
call fcn.0051fbb0
test eax, eax
je 0x49cddb
cmp dword [ebp + 8], 1
jne 0x49cdae
mov ecx, dword [ebx + 0xbe8]
lea edx, [esp + 0xff0]
push edx
lea eax, [esp + 0x30]
push eax
push esi
push 0x1d
push str.HOTLINK
push esi
mov edx, ebx
call fcn.0051fbb0
mov eax, dword [0x5ed97c]
mov ecx, dword [esp + 0x30]
inc eax
mov dword [0x5ed97c], eax
mov dword [0x5ed978], ecx
mov dword [0x5edb18], esi
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ebx, dword [esp + 0x28]
mov al, byte [0x5ed590]
test al, al
mov edi, dword [esp + 0x20]
mov esi, 0x5ed590
je 0x49d012
mov edx, edi
mov ecx, esi
call fcn.0050faa0
test al, al
je 0x49ce08
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x49cdf1
jmp 0x49ce19
mov edx, edi
mov ecx, esi
call fcn.0050fa60
test al, al
je 0x49d012
test esi, esi
je 0x49d012
cmp byte [esi], 0
je 0x49d012
push 0x2c
push esi
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49ce3c
mov byte [eax], 0
cmp byte [esi], 0
je 0x49d012
mov al, byte [esi + 1]
test al, al
je 0x49d012
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49ce55
sub eax, edx
test eax, eax
jle case.0x49ce7e.35
movzx ecx, byte [esi + eax - 1]
lea edx, [ecx - 0x22]
cmp edx, 0x5b
ja case.0x49ce7e.35
movzx edx, byte [edx + 0x49d7a0]
jmp dword [edx*4 + 0x49d794]
mov byte [esi + eax - 1], 0
jmp case.0x49ce7e.35
push ecx
push 0x5a8658
call fcn.005912e0
mov edi, eax
add esp, 8
test edi, edi
mov dword [esp + 0x1c], edi
je case.0x49ce7e.35
mov cl, byte [esp + 0x820]
xor eax, eax
test cl, cl
lea edx, [esp + 0x820]
je 0x49cede
mov bl, byte [edi + 1]
cmp cl, bl
jne 0x49cec9
inc eax
jmp 0x49ced2
mov edi, dword [esp + 0x1c]
cmp cl, byte [edi]
jne 0x49ced2
dec eax
mov cl, byte [edx + 1]
inc edx
test cl, cl
jne 0x49cec2
mov edi, dword [esp + 0x1c]
mov cl, byte [edi]
cmp cl, 0x27
jne 0x49cef1
and eax, reloc.WSOCK32.dll_accept
jns 0x49cef1
dec eax
or eax, 0xfffffffe
inc eax
cmp cl, 0x22
jne 0x49cf02
and eax, reloc.WSOCK32.dll_accept
jns 0x49cf02
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
jle 0x49cf39
mov ecx, esi
lea edi, [ecx + 1]
jmp 0x49cf10
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x49cf10
sub ecx, edi
test ecx, ecx
jle 0x49cf33
mov edi, dword [esp + 0x1c]
mov dl, byte [esi + ecx - 1]
cmp dl, byte [edi]
jne 0x49cf33
dec eax
test eax, eax
mov byte [esi + ecx - 1], 0
jg 0x49cf06
mov edi, dword [esp + 0x1c]
test eax, eax
je case.0x49ce7e.35
mov ecx, esi
lea eax, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x49cf40
sub ecx, eax
test ecx, ecx
jle case.0x49ce7e.35
mov al, byte [esi + ecx - 1]
cmp al, byte [edi]
jne case.0x49ce7e.35
mov byte [esi + ecx - 1], 0
cmp byte [esi], 0
je 0x49d767
mov edx, dword [0x5ed97c]
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x30]
inc edx
cmp eax, 1
mov dword [0x5ed97c], edx
mov dword [0x5ed978], edi
jne 0x49cfcb
call fcn.0041f130
push esi
lea ecx, [esp + 0x54]
push str._join__s
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
add esp, 0xc
push eax
push 0
push 0
push 0
push 0
lea edx, [esp + 0x64]
call fcn.00440db0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x49d74f
mov eax, esi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49cfe0
sub eax, edx
inc eax
push eax
push esi
push 0x5ed590
call fcn.00592290
add esp, 0xc
mov ecx, 1
call fcn.004e3b60
mov edx, dword [esp + 0x34]
push edx
mov edx, 0x14
jmp 0x49d748
mov eax, 0x5ed590
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d020
sub eax, edx
cmp eax, 2
jb 0x49d28e
push 0x2e
push 0x5ed592
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d28e
movzx eax, byte [0x5ed590]
add eax, 0xffffffde
xor edi, edi
cmp eax, 0x59
ja case.0x49d061.35
movzx eax, byte [eax + 0x49d808]
jmp dword [eax*4 + 0x49d7fc]
mov edi, 1
mov eax, 0x5ed591
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d075
sub eax, edx
inc eax
push eax
push 0x5ed591
push 0x5ed590
call fcn.00592290
add esp, 0xc
mov eax, 0x5ed590
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d0a0
sub eax, edx
mov esi, eax
test esi, esi
jle case.0x49d0c5.35
movzx eax, byte [esi + 0x5ed58f]
add eax, 0xffffffde
cmp eax, 0x5b
ja case.0x49d0c5.35
movzx ecx, byte [eax + 0x49d874]
jmp dword [ecx*4 + 0x49d864]
xor edi, edi
jmp case.0x49d0c5.34
push 0x5a8654
push 0x5ed590
call fcn.00591d90
add esp, 8
test eax, eax
jne case.0x49d0c5.35
mov byte [esi + 0x5ed58f], 0
test edi, edi
je 0x49d107
push 0x3e
push 0x5ed590
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d107
mov byte [eax], 0
mov al, byte [0x5ed590]
test al, al
je 0x49d767
mov eax, dword [0x5c000c]
xor ebx, ebx
cmp eax, ebx
mov dword [0x5ed97c], ebx
mov edi, 0x5c0008
je 0x49d767
mov edi, edi
mov eax, dword [edi + 4]
cmp eax, 1
jne 0x49d1d1
mov edx, dword [edi]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d143
sub eax, esi
mov esi, eax
push esi
push edx
push 0x5ed590
call fcn.005a2a05
add esp, 0xc
test eax, eax
jne 0x49d251
lea ebx, [esi + 4]
test ebx, ebx
je 0x49d767
mov eax, 0x5ed590
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d178
sub eax, edx
cmp eax, ebx
jl 0x49d767
mov edx, dword [0x5ed97c]
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x30]
inc edx
cmp eax, 1
mov dword [0x5ed97c], edx
mov dword [0x5ed978], esi
jne 0x49d264
push eax
xor edx, edx
mov ecx, 0x5ed590
call fcn.00554e40
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x49d21e
mov edx, dword [edi]
mov eax, edx
lea esi, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x49d1e0
sub eax, esi
mov esi, eax
push esi
push edx
push 0x5ed590
call fcn.005a2a05
add esp, 0xc
test eax, eax
jne 0x49d251
lea edx, [esi + 0x5ed590]
push 0x2e
push edx
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d168
mov ebx, 8
jmp 0x49d251
cmp eax, 4
jne 0x49d251
push 0x40
push 0x5ed590
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d251
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
jns 0x49d168
inc dword [0x5ed97c]
mov ebx, 6
mov eax, dword [edi + 0x10]
add edi, 0xc
test eax, eax
jne 0x49d130
jmp 0x49d168
cmp eax, 2
jne 0x49d6a6
cmp dword [0x5ed97c], 1
jne 0x49d6a6
mov ecx, 1
call fcn.004e5140
mov edx, 0x1b
jmp 0x49d69a
mov eax, dword [ebx + 0x71c]
test eax, eax
je 0x49d2ae
cmp eax, 1
je 0x49d2ae
cmp eax, 2
jne 0x49d767
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov ecx, edi
call fcn.0049c280
push 0x5eda48
push 0x5ed980
call fcn.005a299c
add esp, 8
test eax, eax
jne 0x49d2d0
mov byte [0x5eda48], al
push 0x5edaac
push 0x5ed9e4
call fcn.005a299c
add esp, 8
test eax, eax
jne 0x49d2eb
mov byte [0x5edaac], al
cmp dword [ebx + 0x71c], 1
jne 0x49d47a
xor esi, esi
mov edi, 0x5ed980
nop
cmp byte [edi], 0
je 0x49d34a
lea ecx, [ebx + 0x6c4]
push ecx
xor esi, esi
xor edx, edx
mov ecx, edi
mov dword [esp + 0x14], esi
call fcn.00495040
test eax, eax
je 0x49d34a
mov esi, dword [ebx + 0x6b8]
test esi, esi
je 0x49d34a
mov ecx, dword [esp + 0x10]
lea ecx, [ecx]
cmp esi, eax
je 0x49d342
mov esi, dword [esi + 0x40]
inc ecx
test esi, esi
jne 0x49d330
mov dword [esp + 0x10], ecx
jmp 0x49d34a
test esi, esi
mov dword [esp + 0x10], ecx
jne 0x49d357
add edi, 0x64
cmp edi, 0x5edb10
jl 0x49d300
jmp 0x49d36a
mov ecx, dword [esi]
mov edx, 0x5ed590
mov edi, edi
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x49d360
test esi, esi
je 0x49d47a
mov edx, dword [0x5ed97c]
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x30]
inc edx
cmp eax, 1
mov dword [0x5ed97c], edx
mov dword [0x5ed978], edi
jne 0x49d400
mov al, byte [0x5c851c]
test al, al
je 0x49d462
call fcn.0041f130
xor eax, eax
mov cl, byte [eax + 0x5c851c]
mov byte [esp + eax + 0x50], cl
inc eax
test cl, cl
jne 0x49d3a5
mov esi, dword [esi]
lea ecx, [esp + 0x438]
lea ecx, [ecx]
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
test al, al
jne 0x49d3c0
mov edx, dword [esp + 0x20]
push edx
push 0
push 0
push 1
lea eax, [esp + 0x448]
push eax
lea edx, [esp + 0x64]
mov ecx, edi
call fcn.00440db0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x49d448
mov ecx, dword [esp + 0x10]
push 1
push 1
push ecx
mov edx, 0x8098
mov ecx, edi
call fcn.004202a0
call fcn.004e3cf0
mov edx, dword [esp + 0x34]
push edx
mov edx, 3
mov ecx, edi
call fcn.004e65c0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 3
jne 0x49d462
mov eax, dword [esp + 0x10]
push 1
push 1
push eax
mov edx, 0x8098
mov ecx, edi
call fcn.004202a0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x2238]
test eax, eax
je 0x49d4bb
mov esi, 0x5ed980
lea ecx, [ecx]
cmp byte [esi], 0
je 0x49d4b0
mov edx, dword [esp + 0x20]
push edx
mov edx, 1
mov ecx, esi
call fcn.004f5470
mov edi, eax
test edi, edi
jne 0x49d585
add esi, 0x64
cmp esi, 0x5edb10
jl 0x49d490
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x21bc]
test eax, eax
je 0x49d767
xor esi, esi
mov edi, 0x5ed980
mov ebx, ecx
cmp byte [edi], 0
je 0x49d500
mov esi, dword [ebx + 0x21bc]
test esi, esi
je 0x49d500
mov edx, dword [esi]
push edi
push edx
call fcn.005a299c
add esp, 8
test eax, eax
je 0x49d6be
mov esi, dword [esi + 0x40]
test esi, esi
jne 0x49d4e5
add edi, 0x64
cmp edi, 0x5edb10
jl 0x49d4d6
test esi, esi
je 0x49d767
mov ebx, dword [esp + 0x20]
mov edx, dword [0x5ed97c]
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x30]
inc edx
cmp eax, 1
mov dword [0x5ed97c], edx
mov dword [0x5ed978], edi
jne 0x49d734
mov al, byte [0x5c8314]
test al, al
je 0x49d74f
call fcn.0041f130
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x71c]
mov ecx, 2
cmp edx, ecx
jne 0x49d6d4
cmp dword [eax + 0x720], ecx
jne 0x49d6d4
xor eax, eax
mov cl, byte [eax + 0x5c8724]
mov byte [esp + eax + 0x50], cl
inc eax
test cl, cl
jne 0x49d571
jmp 0x49d6ef
mov edx, 0x5ed590
mov eax, edi
sub edx, edi
mov edi, edi
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x49d590
push 0x21
push 0x5ed590
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d5b0
mov byte [eax], 0
mov edx, dword [0x5ed97c]
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x30]
inc edx
cmp eax, 1
mov dword [0x5ed97c], edx
mov dword [0x5ed978], esi
jne 0x49d689
mov al, byte [0x5c8620]
test al, al
je 0x49d6a6
call fcn.0041f130
cmp dword [ebx + 0x71c], 2
jne 0x49d611
cmp dword [ebx + 0x720], 2
jne 0x49d611
xor eax, eax
lea esp, [esp]
mov cl, byte [eax + 0x5c8724]
mov byte [esp + eax + 0x50], cl
inc eax
test cl, cl
jne 0x49d600
jmp 0x49d622
xor eax, eax
mov cl, byte [eax + 0x5c8620]
mov byte [esp + eax + 0x50], cl
inc eax
test cl, cl
jne 0x49d613
lea edx, [esp + 0x438]
mov eax, edi
sub edx, edi
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x49d630
lea eax, [esp + 0x438]
push 0x21
push eax
call fcn.005912e0
add esp, 8
test eax, eax
je 0x49d653
mov byte [eax], 0
mov ecx, dword [esp + 0x20]
push ecx
push 0
push 0
push 1
lea edx, [esp + 0x448]
push edx
lea edx, [esp + 0x64]
mov ecx, esi
call fcn.00440db0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x49d6a6
mov ecx, eax
call fcn.004e3ea0
mov edx, 7
mov eax, dword [esp + 0x34]
push eax
mov ecx, esi
call fcn.004e65c0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esi]
mov edx, 0x5ed590
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x49d6c5
jmp 0x49d517
xor eax, eax
jmp 0x49d6e0
mov cl, byte [eax + 0x5c8314]
mov byte [esp + eax + 0x50], cl
inc eax
test cl, cl
jne 0x49d6e0
mov esi, dword [esi]
lea ecx, [esp + 0x438]
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
test al, al
jne 0x49d6f8
push ebx
push 0
push 0
push 1
lea eax, [esp + 0x448]
push eax
lea edx, [esp + 0x64]
mov ecx, edi
call fcn.00440db0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x49d74f
call fcn.004e3c60
mov ecx, dword [esp + 0x34]
push ecx
mov edx, 2
mov ecx, edi
call fcn.004e65c0
mov dword [0x5edb18], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
xor eax, eax
mov dword [0x5ed97c], eax
mov dword [0x5edb18], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [0x5edb18], 0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 4