Function at 0x46dcf4
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, 0x510dac
mov esi, 0x510dd0
mov edi, 0x510dcc
cmp dword [0x4f6bf4], 0
jne 0x46dd25
push 0x10
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x46dd25
xor eax, eax
jmp 0x46eef2
cmp dword [0x4f6c00], 0
je 0x46dd35
xor eax, eax
jmp 0x46eef2
mov dword [0x4f6c00], 1
xor edx, edx
mov dword [0x4f6bf0], edx
push 0
push 0x510dd4
mov ecx, dword [ebp + 8]
push ecx
call fcn.004eb0a8
mov dword [0x510db8], eax
cmp dword [0x510db8], 0
je 0x46dd73
mov eax, dword [0x510db8]
cmp dword [eax + 0x4b8], 0
jne 0x46dd82
xor edx, edx
mov dword [0x4f6c00], edx
xor eax, eax
jmp 0x46eef2
mov edx, dword [0x510db8]
mov ecx, dword [edx + 0x678]
mov dword [0x510d94], ecx
mov eax, dword [0x510db8]
cmp dword [eax + 0x4f4], 1
je 0x46ddba
mov edx, dword [0x510db8]
cmp dword [edx + 0x4f4], 2
jne 0x46ddcd
cmp dword [0x4fb064], 1
jne 0x46ddcd
mov ecx, dword [0x510db8]
mov eax, dword [ecx + 0x678]
dec eax
add dword [0x510d94], eax
mov edx, dword [0x510db8]
cmp byte [edx + 0x4cc], 1
jne 0x46de0a
mov ecx, dword [0x510db8]
cmp dword [ecx + 0x5d4], 0
je 0x46de0a
mov eax, dword [0x510db8]
cmp byte [eax + 0x4e8], 1
jne 0x46de0a
mov edx, dword [0x510dd4]
add edx, 3
mov dword [0x510d90], edx
jmp 0x46de14
mov dword [0x510d90], 2
movzx ecx, word [ebp + 0xc]
mov dword [0x510de4], ecx
mov eax, dword [ebp + 0xc]
shr eax, 0x10
and ax, 0xffff
movzx edx, ax
mov dword [0x510de8], edx
mov ecx, dword [0x510de4]
cmp ecx, dword [0x510d90]
jge 0x46de4d
xor eax, eax
mov dword [0x4f6c00], eax
xor eax, eax
jmp 0x46eef2
mov edx, dword [0x510de8]
cmp edx, dword [0x510de0]
jl 0x46de6a
xor ecx, ecx
mov dword [0x4f6c00], ecx
xor eax, eax
jmp 0x46eef2
cmp dword [0x510de8], 0
jge 0x46de82
xor edx, edx
mov dword [0x4f6c00], edx
xor eax, eax
jmp 0x46eef2
mov edx, dword [0x510db8]
mov ecx, dword [edx + 0x4b8]
mov eax, dword [ecx + 0x34]
mov dword [ebx], eax
mov edx, dword [0x510db8]
mov ecx, dword [edx + 0x4c4]
mov eax, dword [0x510db8]
sub ecx, dword [eax + 0x4c8]
mov dword [0x510d98], ecx
jmp 0x46decf
mov edx, dword [0x510db8]
mov ecx, dword [edx + 0x4b8]
cmp ecx, dword [ebx]
je 0x46ded8
mov eax, dword [ebx]
mov edx, dword [eax + 0x34]
mov dword [ebx], edx
dec dword [0x510d98]
cmp dword [0x510d98], 0
jg 0x46deb2
cmp dword [ebx], 0
jne 0x46deec
xor ecx, ecx
mov dword [0x4f6c00], ecx
xor eax, eax
jmp 0x46eef2
xor edx, edx
mov dword [0x510da4], edx
mov ecx, dword [ebx]
mov eax, dword [ecx + 4]
mov dword [0x510d9c], eax
mov edx, dword [0x510de0]
sub edx, dword [0x510d94]
dec edx
mov dword [0x510da0], edx
mov ecx, dword [0x510db8]
mov eax, dword [ecx + 0x4b8]
cmp eax, dword [ebx]
je 0x46e002
mov edx, dword [0x510d94]
sub dword [0x510da0], edx
inc dword [0x510da4]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x34]
mov dword [ebx], eax
mov edx, dword [ebx]
mov ecx, dword [edx + 4]
cmp ecx, dword [0x510d9c]
je 0x46df11
mov eax, dword [ebx]
mov edx, dword [eax + 4]
mov dword [0x510d9c], edx
mov ecx, dword [0x510db8]
cmp dword [ecx + 0x4f4], 3
je 0x46df7c
mov eax, dword [0x510db8]
cmp dword [eax + 0x4f4], 2
jne 0x46df96
cmp dword [0x4fb064], 2
jne 0x46df96
mov edx, dword [0x510db8]
mov eax, dword [edx + 0x678]
mov ecx, 3
cdq
idiv ecx
sub dword [0x510da0], eax
mov eax, dword [0x510d94]
neg eax
cmp eax, dword [0x510da0]
jle 0x46df11
dec dword [0x510da4]
mov edx, dword [0x510d94]
add dword [0x510da0], edx
mov ecx, dword [0x510db8]
cmp dword [ecx + 0x4f4], 3
je 0x46dfe1
mov eax, dword [0x510db8]
cmp dword [eax + 0x4f4], 2
jne 0x46dffb
cmp dword [0x4fb064], 2
jne 0x46dffb
mov edx, dword [0x510db8]
mov eax, dword [edx + 0x678]
mov ecx, 3
cdq
idiv ecx
add dword [0x510da0], eax
mov eax, dword [ebx]
mov edx, dword [eax + 0x30]
mov dword [ebx], edx
cmp dword [ebx], 0
jne 0x46e016
xor ecx, ecx
mov dword [0x4f6c00], ecx
xor eax, eax
jmp 0x46eef2
mov edx, dword [ebx]
mov ecx, dword [edx + 4]
mov dword [0x510d9c], ecx
mov eax, dword [0x510da0]
mov dword [0x510da8], eax
jmp 0x46eed7
mov edx, dword [0x510da8]
cmp edx, dword [0x510de8]
jg 0x46ee50
mov ecx, dword [0x510da8]
add ecx, dword [0x510d94]
cmp ecx, dword [0x510de8]
jle 0x46ee50
mov eax, dword [0x510de4]
push eax
mov edx, dword [0x510d90]
push edx
mov ecx, dword [ebx]
mov eax, dword [ecx]
push eax
mov edx, dword [0x510db8]
push edx
call fcn.0046d670
mov dword [0x510dc0], eax
cmp dword [0x510dc0], 0
jl 0x46eee0
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [0x510dc0]
cmp byte [eax + edx], 0x20
je 0x46eee0
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [0x510dc0]
cmp byte [eax + edx], 9
je 0x46eee0
mov ecx, dword [ebx]
mov dword [0x510db0], ecx
jmp 0x46e0c4
mov eax, dword [eax + 0x34]
mov dword [0x510db0], eax
mov edx, dword [0x510db8]
mov ecx, dword [edx + 0x4b8]
mov eax, dword [0x510db0]
cmp ecx, eax
je 0x46e0e4
mov edx, dword [eax + 0x34]
mov ecx, dword [edx + 4]
cmp ecx, dword [eax + 4]
je 0x46e0bc
cmp dword [0x510db0], 0
je 0x46eee0
mov byte [0x5111d3], 0
mov eax, dword [0x510db0]
mov dword [0x510db4], eax
jmp 0x46e14d
push 0x5111d3
call fcn.00401318
pop ecx
push eax
mov edx, dword [0x510db4]
mov ecx, dword [edx]
push ecx
call fcn.00401318
pop ecx
pop edx
add edx, eax
cmp edx, 0x3b5
ja 0x46e164
mov eax, dword [0x510db4]
mov ecx, dword [eax]
push ecx
push 0x5111d3
call fcn.0040123c
add esp, 8
mov eax, dword [0x510db4]
mov edx, dword [eax + 0x30]
mov dword [0x510db4], edx
mov eax, dword [0x510db4]
test eax, eax
je 0x46e164
mov edx, dword [eax + 4]
mov ecx, dword [0x510db0]
cmp edx, dword [ecx + 4]
je 0x46e104
mov eax, dword [0x510db0]
mov edx, dword [eax]
push esi
push edi
mov edi, edx
mov esi, 0x510dec
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, dword [0x510db0]
cmp eax, dword [ebx]
jne 0x46e1a6
xor edx, edx
mov dword [0x510dc8], edx
jmp 0x46e1c6
mov dword [0x510dc8], 1
push 0x510dec
call fcn.00401318
pop ecx
add eax, dword [0x510dc0]
mov dword [0x510dc0], eax
mov ecx, dword [0x510db0]
mov eax, dword [ecx + 0x30]
mov dword [0x510db0], eax
jmp 0x46e2ec
cmp eax, dword [ebx]
jne 0x46e1e5
xor edx, edx
mov dword [0x510dc8], edx
mov edx, dword [eax + 0xc]
test edx, edx
jle 0x46e2a5
mov dword [0x510dc4], edx
mov eax, dword [eax]
mov dword [esi], eax
jmp 0x46e204
inc dword [esi]
dec dword [0x510dc4]
mov ecx, dword [esi]
mov al, byte [ecx]
cmp al, 0x20
je 0x46e210
cmp al, 9
jne 0x46e219
cmp dword [0x510dc4], 0
jg 0x46e1fc
mov edx, dword [esi]
cmp byte [edx], 0
je 0x46e272
mov ecx, dword [esi]
push ecx
push 0x510dec
call fcn.0040123c
add esp, 8
cmp dword [0x510dc8], 0
je 0x46e24d
mov eax, dword [esi]
push eax
call fcn.00401318
pop ecx
add eax, dword [0x510dc0]
mov dword [0x510dc0], eax
mov edx, dword [0x510db0]
cmp edx, dword [ebx]
jne 0x46e2de
mov ecx, dword [0x510db0]
mov eax, dword [ecx + 0xc]
sub eax, dword [0x510dc4]
sub dword [0x510dc0], eax
jmp 0x46e2de
push 0x4f6c04
push 0x510dec
call fcn.0040123c
add esp, 8
cmp dword [0x510dc8], 0
je 0x46e293
inc dword [0x510dc0]
mov edx, dword [0x510db0]
cmp edx, dword [ebx]
jne 0x46e2de
dec dword [0x510dc0]
jmp 0x46e2de
mov ecx, dword [0x510db0]
mov eax, dword [ecx]
push eax
push 0x510dec
call fcn.0040123c
add esp, 8
cmp dword [0x510dc8], 0
je 0x46e2de
mov edx, dword [0x510db0]
mov ecx, dword [edx]
push ecx
call fcn.00401318
pop ecx
add eax, dword [0x510dc0]
mov dword [0x510dc0], eax
mov eax, dword [0x510db0]
mov edx, dword [eax + 0x30]
mov dword [0x510db0], edx
mov eax, dword [0x510db0]
test eax, eax
je 0x46e303
mov edx, dword [eax + 4]
mov ecx, dword [ebx]
cmp edx, dword [ecx + 4]
je 0x46e1d9
cmp dword [0x510dc0], 0
jl 0x46eee0
push 0x510dec
call fcn.00401318
pop ecx
cmp eax, dword [0x510dc0]
jle 0x46eee0
mov eax, 0x510dec
add eax, dword [0x510dc0]
mov dword [esi], eax
jmp 0x46e338
dec dword [esi]
mov edx, 0x510dec
cmp edx, dword [esi]
jae 0x46e34d
mov ecx, dword [esi]
mov al, byte [ecx]
cmp al, 0x20
je 0x46e34d
cmp al, 9
jne 0x46e336
mov edx, dword [esi]
cmp byte [edx], 0x20
je 0x46e35b
mov ecx, dword [esi]
cmp byte [ecx], 9
jne 0x46e385
inc dword [esi]
mov eax, dword [esi]
cmp byte [eax], 0
je 0x46eee0
mov edx, dword [esi]
push edx
call fcn.00401318
pop ecx
inc eax
push eax
mov ecx, dword [esi]
push ecx
push 0x510dec
call fcn.0040114c
add esp, 0xc
jmp 0x46e3a0
mov eax, dword [esi]
push eax
call fcn.00401318
pop ecx
inc eax
push eax
mov edx, dword [esi]
push edx
push 0x510dec
call fcn.0040114c
add esp, 0xc
mov dword [esi], 0x510dec
jmp 0x46e3b6
mov ecx, dword [esi]
mov al, byte [ecx]
cmp al, 0x20
je 0x46e3bd
cmp al, 9
je 0x46e3bd
inc dword [esi]
mov edx, dword [esi]
cmp byte [edx], 0
jne 0x46e3a8
mov ecx, dword [esi]
cmp byte [ecx], 0
je 0x46e3cb
mov eax, dword [esi]
mov byte [eax], 0
jmp 0x46e3cf
xor edx, edx
mov dword [esi], edx
push 0xf
push 0x510dec
call fcn.004d7fb8
cmp byte [0x510dec], 0
je 0x46eee0
cmp dword [0x4fb7f4], 0
je 0x46e460
mov ecx, dword [ebp + 8]
mov dword [0x4f5358], ecx
xor eax, eax
mov dword [0x4fba24], eax
push 1
push 0x19
push 0x4f6c07
call fcn.004ca178
test eax, eax
je 0x46e458
cmp dword [ebp + 0x10], 1
jne 0x46e430
mov edx, dword [ebp + 8]
mov dword [0x4f5358], edx
push 0
push 0x19
push 0x4f6c10
call fcn.004ca178
inc dword [0x4f6bf0]
mov ecx, dword [ebp + 8]
mov dword [0x4f6bec], ecx
xor eax, eax
mov dword [0x4f5358], eax
xor edx, edx
mov dword [0x4f6c00], edx
mov eax, 1
jmp 0x46eef2
xor edx, edx
mov dword [0x4f5358], edx
push 0x23
push 0x510dec
call fcn.00401278
add esp, 8
test eax, eax
je 0x46e647
push 0x2c
push 0x510dec
call fcn.00401278
add esp, 8
mov dword [esi], eax
cmp dword [esi], 0
je 0x46e492
mov ecx, dword [esi]
mov byte [ecx], 0
mov dword [esi], 0x510dec
jmp 0x46e4d2
cmp al, 0x23
je 0x46e4da
cmp al, 0x40
je 0x46e4d0
cmp al, 0x2b
je 0x46e4d0
cmp al, 0x25
je 0x46e4da
mov eax, dword [esi]
cmp byte [eax], 0x2e
jne 0x46e4ba
test byte [0x4f9188], 0x20
jne 0x46e4d0
mov edx, dword [esi]
cmp byte [edx], 0x21
jne 0x46e4ca
test byte [0x4f9188], 0x40
jne 0x46e4da
xor ecx, ecx
mov dword [esi], ecx
jmp 0x46e4da
inc dword [esi]
mov eax, dword [esi]
mov al, byte [eax]
test al, al
jne 0x46e49a
mov eax, dword [esi]
test eax, eax
je 0x46e647
cmp byte [eax], 0
je 0x46e647
cmp byte [eax + 1], 0
je 0x46e647
mov dword [esi], 0x510dec
jmp 0x46e525
cmp al, 0x23
je 0x46e52d
mov edx, dword [esi]
cmp byte [edx], 0x25
jne 0x46e513
test byte [0x4f9188], 0x20
jne 0x46e52d
mov ecx, dword [esi]
cmp byte [ecx], 0x21
jne 0x46e523
test byte [0x4f9188], 0x40
jne 0x46e52d
inc dword [esi]
mov eax, dword [esi]
mov al, byte [eax]
test al, al
jne 0x46e4ff
mov edx, dword [esi]
push edx
call fcn.00401318
pop ecx
mov dword [0x510dc0], eax
cmp dword [0x510dc0], 0
jle 0x46e591
mov ecx, dword [esi]
mov eax, dword [0x510dc0]
xor edx, edx
mov dl, byte [ecx + eax - 1]
cmp edx, 0x3a
jge 0x46e56c
sub edx, 0x22
je 0x46e585
sub edx, 7
je 0x46e585
sub edx, 3
je 0x46e585
sub edx, 2
je 0x46e585
jmp 0x46e591
add edx, 0xffffffc6
sub edx, 2
jb 0x46e585
sub edx, 2
je 0x46e585
sub edx, 0x1f
je 0x46e585
sub edx, 0x20
je 0x46e585
jmp 0x46e591
mov ecx, dword [esi]
mov eax, dword [0x510dc0]
mov byte [ecx + eax - 1], 0
mov edx, dword [esi]
cmp byte [edx], 0
je 0x46eee0
mov ecx, dword [0x510db8]
add ecx, 4
push ecx
mov eax, dword [esi]
push eax
call fcn.004014a8
add esp, 8
test eax, eax
je 0x46eee0
inc dword [0x4f6bf0]
mov edx, dword [ebp + 8]
mov dword [0x4f6bec], edx
cmp dword [ebp + 0x10], 1
jne 0x46e5f9
mov ecx, dword [esi]
push ecx
push 0x4f6c19
push 0x515718
call sub.USER32.dll_wsprintfA
add esp, 0xc
push 0
push 0
push 0
push 0x515718
mov eax, dword [ebp + 8]
push eax
call fcn.004864e8
jmp 0x46e635
cmp dword [ebp + 0x10], 2
jne 0x46e635
mov edx, dword [esi]
push edx
call fcn.00401318
pop ecx
inc eax
push eax
mov ecx, dword [esi]
push ecx
push 0x510dec
call fcn.0040114c
add esp, 0xc
call fcn.0049f6e8
push 1
call fcn.0049d15c
mov eax, dword [ebp + 0xc]
push eax
push 0x14
mov edx, dword [ebp + 8]
push edx
call fcn.0049f24c
xor ecx, ecx
mov dword [0x4f6c00], ecx
mov eax, 1
jmp 0x46eef2
push 0x2e
push 0x510dec
call fcn.00401278
add esp, 8
test eax, eax
je 0x46e8fa
xor edx, edx
mov dl, byte [0x510dec]
cmp edx, 0x3c
jg 0x46e67c
je 0x46e688
sub edx, 0x22
je 0x46e688
add edx, 0xfffffffb
sub edx, 2
jb 0x46e688
jmp 0x46e6a6
sub edx, 0x5b
je 0x46e688
sub edx, 0x20
je 0x46e688
jmp 0x46e6a6
push 0x510dec
call fcn.00401318
pop ecx
push eax
push 0x510ded
push 0x510dec
call fcn.0040114c
add esp, 0xc
push 0x510dec
call fcn.00401318
pop ecx
mov dword [0x510dc0], eax
cmp dword [0x510dc0], 0
jle 0x46e708
mov ecx, dword [0x510dc0]
xor eax, eax
mov al, byte [ecx + 0x510deb]
cmp eax, 0x2e
jg 0x46e6ea
je 0x46e6fb
sub eax, 0x22
je 0x46e6fb
sub eax, 5
je 0x46e6fb
sub eax, 2
je 0x46e6fb
sub eax, 3
je 0x46e6fb
jmp 0x46e708
sub eax, 0x3e
je 0x46e6fb
sub eax, 0x1f
je 0x46e6fb
sub eax, 0x20
je 0x46e6fb
jmp 0x46e708
mov edx, dword [0x510dc0]
mov byte [edx + 0x510deb], 0
cmp byte [0x510dec], 0
je 0x46eee0
mov dword [0x510dc0], 0x3e7
xor ecx, ecx
mov dword [0x4f6bf0], ecx
push 0x3a
push 0x510dec
call fcn.00401278
add esp, 8
test eax, eax
je 0x46e7b3
push 7
push 0x4f6c23
push 0x510dec
call fcn.00401540
add esp, 0xc
test eax, eax
jne 0x46e761
mov dword [0x510dc0], 0xb
jmp 0x46e885
push 8
push 0x4f6c2c
push 0x510dec
call fcn.00401540
add esp, 0xc
test eax, eax
jne 0x46e788
mov dword [0x510dc0], 0xc
jmp 0x46e885
push 6
push 0x4f6c36
push 0x510dec
call fcn.00401540
add esp, 0xc
test eax, eax
jne 0x46eee0
mov dword [0x510dc0], 0xa
jmp 0x46e885
push 4
push 0x4f6c3e
push 0x510dec
call fcn.00401540
add esp, 0xc
test eax, eax
jne 0x46e7da
mov dword [0x510dc0], 8
jmp 0x46e862
push 4
push 0x4f6c44
push 0x510dec
call fcn.00401540
add esp, 0xc
test eax, eax
jne 0x46e7fe
mov dword [0x510dc0], 8
jmp 0x46e862
push 0x40
push 0x510dec
call fcn.00401278
add esp, 8
test eax, eax
je 0x46eee0
push 0x10
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x46e852
push 0x4f6c4a
push 0x510dec
call fcn.004015f8
add esp, 8
test eax, eax
je 0x46eee0
push 0x21
push 0x510dec
call fcn.00401278
add esp, 8
test eax, eax
jne 0x46eee0
inc dword [0x4f6bf0]
mov dword [0x510dc0], 6
cmp dword [0x510dc0], 8
jne 0x46e885
push 0x2e
push 0x510df0
call fcn.00401278
add esp, 8
mov dword [esi], eax
cmp dword [esi], 0
je 0x46eee0
push 0x510dec
call fcn.00401318
pop ecx
cmp eax, dword [0x510dc0]
jb 0x46eee0
inc dword [0x4f6bf0]
mov eax, dword [ebp + 8]
mov dword [0x4f6bec], eax
cmp dword [ebp + 0x10], 1
jne 0x46e8e8
cmp dword [0x4f6bf0], 2
jne 0x46e8c5
push 0x510dec
call fcn.004c3060
jmp 0x46e8d6
push 0
push 0x515aff
push 0x510dec
call fcn.004e45f8
xor edx, edx
mov dword [0x4f6c00], edx
mov eax, 1
jmp 0x46eef2
xor edx, edx
mov dword [0x4f6c00], edx
mov eax, 1
jmp 0x46eef2
mov edx, dword [0x510db8]
cmp byte [edx + 0x4cc], 0
je 0x46e92a
mov ecx, dword [0x510db8]
cmp byte [ecx + 0x4cc], 1
je 0x46e92a
mov eax, dword [0x510db8]
cmp byte [eax + 0x4cc], 2
jne 0x46eee0
call fcn.0046d9ac
push 0x511682
push 0x5115ba
call fcn.004014a8
add esp, 8
test eax, eax
jne 0x46e94c
mov byte [0x511682], 0
push 0x5116e6
push 0x51161e
call fcn.004014a8
add esp, 8
test eax, eax
jne 0x46e969
mov byte [0x5116e6], 0
mov edx, dword [0x510db8]
cmp byte [edx + 0x4cc], 1
jne 0x46eb3c
xor ecx, ecx
mov dword [ebx], ecx
xor eax, eax
mov dword [edi], eax
jmp 0x46ea35
mov edx, dword [edi]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
cmp byte [edx*4 + 0x5115ba], 0
je 0x46ea33
xor ecx, ecx
mov dword [0x510dc0], ecx
mov eax, dword [0x510db8]
mov edx, dword [eax + 0x4b0]
mov dword [ebx], edx
jmp 0x46ea29
mov eax, dword [ebx]
mov edx, dword [eax + 8]
mov ecx, dword [edi]
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
movzx ecx, byte [ecx*4 + 0x5115ba]
cmp edx, ecx
jne 0x46ea1c
mov edx, dword [edi]
shl edx, 2
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add edx, 0x5115ba
push edx
mov eax, dword [eax]
push eax
call fcn.004014a8
add esp, 8
test eax, eax
jne 0x46ea1c
mov eax, dword [ebx]
mov edx, dword [eax]
push edi
mov edi, edx
mov esi, 0x510dec
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
jmp 0x46ea2e
mov eax, dword [ebx]
mov edx, dword [eax + 0x30]
mov dword [ebx], edx
inc dword [0x510dc0]
cmp dword [ebx], 0
jne 0x46e9b6
cmp dword [ebx], 0
jne 0x46ea3e
inc dword [edi]
cmp dword [edi], 4
jl 0x46e989
cmp dword [ebx], 0
je 0x46eb3c
inc dword [0x4f6bf0]
mov ecx, dword [ebp + 8]
mov dword [0x4f6bec], ecx
cmp dword [ebp + 0x10], 1
jne 0x46ead1
cmp byte [0x5186d6], 0
je 0x46eb2a
mov esi, 0x510dec
mov edi, 0x5186d6
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx]
mov edx, dword [eax]
mov edi, edx
mov esi, 0x515aff
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0
push 1
push 0x515aff
push 0x510dec
mov eax, dword [ebp + 8]
push eax
call fcn.004864e8
jmp 0x46eb2a
cmp dword [ebp + 0x10], 2
jne 0x46eb0b
call fcn.0049f6e8
push 1
push 1
mov edx, dword [0x510dc0]
push edx
push 0x425
mov ecx, dword [ebp + 8]
push ecx
call fcn.00420294
call fcn.0049d264
mov eax, dword [ebp + 0xc]
push eax
push 3
mov edx, dword [ebp + 8]
push edx
call fcn.0049f24c
jmp 0x46eb2a
cmp dword [ebp + 0x10], 3
jne 0x46eb2a
push 1
push 1
mov ecx, dword [0x510dc0]
push ecx
push 0x425
mov eax, dword [ebp + 8]
push eax
call fcn.00420294
xor edx, edx
mov dword [0x4f6c00], edx
mov eax, 1
jmp 0x46eef2
cmp dword [0x4faa30], 0
je 0x46eccb
xor edx, edx
mov dword [0x510dbc], edx
xor ecx, ecx
mov dword [edi], ecx
jmp 0x46ebf8
mov eax, dword [edi]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
cmp byte [eax*4 + 0x5115ba], 0
je 0x46ebf6
mov edx, dword [0x4faa30]
mov dword [0x510dbc], edx
jmp 0x46ebe4
cmp dword [eax + 0x29c], 0
je 0x46ebd3
mov ecx, dword [edi]
shl ecx, 2
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
add ecx, 0x5115ba
push ecx
push eax
call fcn.004014a8
add esp, 8
test eax, eax
jne 0x46ebd3
mov eax, dword [0x510dbc]
push edi
mov esi, 0x510dec
mov edi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
jmp 0x46ebed
mov eax, dword [0x510dbc]
mov edx, dword [eax + 0x2a8]
mov dword [0x510dbc], edx
mov eax, dword [0x510dbc]
test eax, eax
jne 0x46eb7e
cmp dword [0x510dbc], 0
jne 0x46ec01
inc dword [edi]
cmp dword [edi], 4
jl 0x46eb5a
cmp dword [0x510dbc], 0
je 0x46eccb
inc dword [0x4f6bf0]
mov edx, dword [ebp + 8]
mov dword [0x4f6bec], edx
cmp dword [ebp + 0x10], 1
jne 0x46ec99
cmp byte [0x5187d6], 0
je 0x46ecba
mov esi, 0x510dec
mov edi, 0x5187d6
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x510dbc]
mov esi, 0x515aff
mov edi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0
push 1
push 0x515aff
push 0x510dec
mov eax, dword [ebp + 8]
push eax
call fcn.004864e8
jmp 0x46ecba
cmp dword [ebp + 0x10], 2
jne 0x46ecba
call fcn.0049f6e8
push 0
call fcn.0049d640
mov edx, dword [ebp + 0xc]
push edx
push 7
mov ecx, dword [ebp + 8]
push ecx
call fcn.0049f24c
xor eax, eax
mov dword [0x4f6c00], eax
mov eax, 1
jmp 0x46eef2
cmp dword [0x4fcdb0], 0
je 0x46eee0
mov edx, dword [0x510db8]
cmp byte [edx + 0x4cc], 2
jne 0x46eee0
mov ecx, dword [0x510db8]
cmp byte [ecx + 0x4cd], 2
jne 0x46eee0
xor eax, eax
mov dword [ebx], eax
xor edx, edx
mov dword [edi], edx
jmp 0x46ed84
mov ecx, dword [edi]
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
cmp byte [ecx*4 + 0x5115ba], 0
je 0x46ed82
mov eax, dword [0x4fcdb0]
mov dword [ebx], eax
jmp 0x46ed77
mov edx, dword [edi]
shl edx, 2
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add edx, 0x5115ba
push edx
mov ecx, dword [eax]
push ecx
call fcn.004014a8
add esp, 8
test eax, eax
jne 0x46ed70
mov eax, dword [ebx]
mov edx, dword [eax]
push edi
mov edi, edx
mov esi, 0x510dec
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
jmp 0x46ed7d
mov eax, dword [ebx]
mov edx, dword [eax + 0x30]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
jne 0x46ed23
cmp dword [ebx], 0
jne 0x46ed8d
inc dword [edi]
cmp dword [edi], 4
jl 0x46ed08
cmp dword [ebx], 0
je 0x46eee0
inc dword [0x4f6bf0]
mov edx, dword [ebp + 8]
mov dword [0x4f6bec], edx
cmp dword [ebp + 0x10], 1
jne 0x46ee20
cmp byte [0x5184d6], 0
je 0x46ee3f
mov esi, 0x510dec
mov edi, 0x5184d6
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx]
mov edx, dword [eax]
mov edi, edx
mov esi, 0x515aff
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0
push 1
push 0x515aff
push 0x510dec
mov eax, dword [ebp + 8]
push eax
call fcn.004864e8
jmp 0x46ee3f
cmp dword [ebp + 0x10], 2
jne 0x46ee3f
call fcn.0049f6e8
call fcn.0049d210
mov edx, dword [ebp + 0xc]
push edx
push 2
mov ecx, dword [ebp + 8]
push ecx
call fcn.0049f24c
xor eax, eax
mov dword [0x4f6c00], eax
mov eax, 1
jmp 0x46eef2
mov edx, dword [ebx]
mov ecx, dword [edx + 0x30]
mov dword [ebx], ecx
cmp dword [ebx], 0
je 0x46eee0
mov eax, dword [0x510d94]
add dword [0x510da8], eax
mov edx, dword [ebx]
mov ecx, dword [edx + 4]
cmp ecx, dword [0x510d9c]
je 0x46eec3
mov eax, dword [ebx]
mov edx, dword [eax + 4]
mov dword [0x510d9c], edx
mov ecx, dword [0x510db8]
cmp dword [ecx + 0x4f4], 3
je 0x46eea9
mov eax, dword [0x510db8]
cmp dword [eax + 0x4f4], 2
jne 0x46eec3
cmp dword [0x4fb064], 2
jne 0x46eec3
mov edx, dword [0x510db8]
mov eax, dword [edx + 0x678]
mov ecx, 3
cdq
idiv ecx
add dword [0x510da8], eax
mov eax, dword [0x510de0]
sub eax, dword [0x510d94]
dec eax
cmp eax, dword [0x510da8]
jl 0x46eee0
cmp dword [ebx], 0
jne 0x46e030
xor edx, edx
mov dword [0x4f6bf0], edx
xor ecx, ecx
mov dword [0x4f6c00], ecx
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret 0xc