Function at 0x4a99c5
Capabilities:
Log keystrokes via polling
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
xor eax, eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x48], eax
cmp edi, dword [0x51ffe8]
jne 0x4a9a15
cmp edi, eax
jne 0x4a9a3c
mov dword [0x51ffd8], eax
mov dword [0x51ffdc], eax
mov dword [0x51ffe0], eax
mov dword [0x51ffe4], eax
mov dword [0x51ffe8], edi
mov dword [0x51fff0], eax
cmp edi, eax
je 0x4aac26
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
xor ebx, ebx
xor esi, esi
call fcn.004a8347
mov esi, edi
call fcn.004a81f1
mov byte [ebp - 0x4c], al
call fcn.004a82f2
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x58]
push eax
lea edi, [ebp - 0x60]
lea ebx, [ebp - 0x20]
call fcn.004a6d3b
add esp, 0x20
call fcn.004a7329
mov dword [ebp - 0x78], eax
call fcn.004a73b6
xor ebx, ebx
mov dword [ebp - 0x5c], ebx
test al, 0x4e
je 0x4a9aa2
mov dword [ebp - 0x5c], 1
movzx eax, al
shr eax, 5
and eax, 1
mov dword [ebp - 0x64], eax
call fcn.004a73a3
push ebx
mov dword [ebp - 0x6c], eax
call fcn.004a7380
pop ecx
cmp dword [0x51fff0], ebx
je 0x4a9adb
mov eax, dword [ebp + 8]
call fcn.004449db
mov dword [0x51fff0], ebx
push 0x77
pop eax
jmp 0x4aac28
cmp dword [0x51ffec], ebx
je 0x4a9b0f
cmp dword [0x5177b8], ebx
jl 0x4a9b0f
cmp dword [0x5177bc], ebx
jle 0x4a9b0f
call fcn.004a725b
cmp dword [0x5177b8], eax
jne 0x4a9b0f
mov eax, dword [0x5177bc]
cmp eax, dword [ebp - 0x38]
jne 0x4a9b0f
xor edi, edi
inc edi
jmp 0x4a9b11
xor edi, edi
cmp dword [ebp + 8], ebx
je 0x4aac26
cmp dword [ebp - 0x14], ebx
je 0x4aac26
cmp dword [ebp - 0x28], ebx
je 0x4aac26
cmp edi, ebx
jne 0x4a9b60
or dword [0x5177b8], 0xffffffff
or dword [0x5177bc], 0xffffffff
mov ecx, 0x51ff38
mov eax, ecx
mov dword [0x51ffec], ebx
call fcn.004449a1
test eax, eax
jne 0x4a9b60
push 0x50
push ebx
push ecx
call fcn.00401f80
add esp, 0xc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.004ab898
mov eax, dword [ebp - 0x28]
inc eax
push eax
xor esi, esi
push esi
push dword [ebp + 8]
call fcn.00401f80
add esp, 0xc
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
cmp edi, esi
je 0x4a9c21
xor ecx, ecx
xor edi, edi
cmp byte [0x51ff38], cl
je 0x4a9bc8
mov esi, dword [ebp + 8]
sub esi, 0x51ff38
cmp ecx, dword [0x5177bc]
jge 0x4a9bc8
cmp ecx, dword [ebp - 0x28]
jge 0x4a9bc8
mov dl, byte [ecx + 0x51ff38]
inc dword [ebp - 4]
mov byte [esi + ecx + 0x51ff38], dl
inc ecx
cmp byte [ecx + 0x51ff38], 0
jne 0x4a9ba1
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov ebx, ecx
sub ebx, eax
mov dword [ebp - 8], ecx
jns 0x4a9bd9
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, ecx
jle 0x4a9be2
mov esi, ecx
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
push edi
sub esi, ebx
add ebx, dword [ebp + 8]
push esi
push ebx
call fcn.004ad683
or dword [0x5177b8], 0xffffffff
or dword [0x5177bc], 0xffffffff
add esp, 0x14
push 0x50
push edi
push 0x51ff38
mov dword [0x51ffec], edi
call fcn.00401f80
add esp, 0xc
and dword [ebp - 0x68], 0
call fcn.0041df75
mov dword [ebp - 0x74], eax
call fcn.004ad765
mov dword [ebp - 0x44], eax
test eax, eax
je 0x4aa8ff
call fcn.0041df75
mov dword [ebp - 0x74], eax
call fcn.004adfdb
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
push 0x1b
pop esi
cmp ebx, esi
je 0x4aaac8
cmp ebx, 0xd
je 0x4aa7fe
push 0xa
pop edi
cmp ebx, edi
je 0x4aa7fe
cmp ebx, 8
je 0x4a9d79
cmp ebx, 0xe0
je 0x4a9e7a
xor eax, eax
cmp ebx, eax
jne 0x4aa593
call fcn.004adfdb
mov ebx, eax
cmp ebx, 0x4b
jg 0x4a9d16
je 0x4a9d0d
cmp ebx, 0x44
jg 0x4a9ce3
cmp ebx, 0x43
jge 0x4aa52b
cmp ebx, 0x3b
jl 0x4aa8ff
cmp ebx, 0x40
jle 0x4a9cca
cmp ebx, 0x41
je 0x4aa433
cmp ebx, 0x42
jne 0x4aa8ff
mov esi, dword [ebp + 0xc]
call fcn.004a7290
cmp eax, 1
jne 0x4aa52b
mov dword [ebp - 0x18], edi
jmp 0x4a9c4d
sub ebx, 0x47
je 0x4a9d04
dec ebx
je 0x4a9cfb
dec ebx
jne 0x4aa8ff
mov dword [ebp - 0x18], 0x39
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x38
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x37
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x34
jmp 0x4a9d6f
sub ebx, 0x4c
je 0x4a9d68
dec ebx
je 0x4a9d5f
dec ebx
dec ebx
je 0x4a9d56
dec ebx
je 0x4a9d4d
dec ebx
je 0x4a9d44
dec ebx
je 0x4a9d3b
dec ebx
jne 0x4aa8ff
mov dword [ebp - 0x18], 0x2e
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x30
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x33
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x32
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x31
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x36
jmp 0x4a9d6f
mov dword [ebp - 0x18], 0x35
call fcn.00499191
jmp 0x4a9c4d
cmp dword [ebp - 8], 0
jle 0x4aa8ff
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
je 0x4a9db5
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004a74e6
pop ecx
pop ecx
mov eax, esi
call fcn.004a8763
call fcn.004a7411
test eax, eax
jne 0x4aa8ff
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004a863e
mov ebx, dword [ebp + 8]
add esp, 0x10
dec dword [ebp - 8]
mov eax, dword [ebp - 8]
call fcn.00445758
dec dword [ebp - 4]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.004ab898
mov edi, dword [ebp - 0x44]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
sub eax, edi
add ecx, eax
mov eax, dword [ebp - 0x14]
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0xc]
lea esi, [ecx + 1]
cmp edi, eax
jg 0x4a9e25
test esi, esi
jle 0x4a9e25
mov esi, ecx
jmp 0x4a9e26
dec edi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp edi, ecx
jne 0x4a9e37
mov edi, 0xffffff22
test esi, esi
jns 0x4a9e3d
xor esi, esi
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x4a9e48
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
push dword [ebp - 0x4c]
sub ebx, esi
add esi, dword [ebp + 8]
push ebx
push esi
call fcn.004ad683
add esp, 0x14
cmp edi, 0xffffff22
je 0x4aa8ff
push dword [ebp - 0x10]
push edi
jmp 0x4aa7d3
call fcn.004adfdb
mov ebx, eax
cmp ebx, 0x86
jg 0x4aa8ff
cmp ebx, 0x85
jge 0x4aa3b8
cmp ebx, 0x4d
jg 0x4aa14e
je 0x4aa057
sub eax, 0x47
je 0x4a9fb5
dec eax
je 0x4a9f77
dec eax
je 0x4a9f5f
dec eax
dec eax
jne 0x4aa8ff
xor esi, esi
cmp dword [ebp - 4], esi
jne 0x4a9eef
mov eax, dword [ebp + 0xc]
call fcn.004a7443
test eax, eax
je 0x4a9eef
cmp dword [ebp - 0x2c], esi
jle 0x4a9eef
dec dword [ebp - 0x2c]
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
jmp 0x4aa8f5
cmp dword [ebp - 8], esi
jle 0x4aa8ff
push dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004a863e
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.004ab898
mov edi, dword [ebp - 0xc]
dec dword [ebp - 8]
cmp dword [ebp - 0x44], edi
jg 0x4a9f51
mov ebx, dword [ebp - 8]
test ebx, ebx
jns 0x4a9f2c
xor ebx, ebx
mov eax, dword [ebp - 0x14]
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x4a9f3a
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push edi
call fcn.004acd0b
push 0
sub esi, ebx
add ebx, dword [ebp + 8]
push esi
push ebx
jmp 0x4a9e5d
push 0
push 0
call fcn.004997b5
jmp 0x4aa7d8
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x40]
xor edi, edi
call fcn.004a70cd
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x1c], eax
jmp 0x4a9ee2
mov esi, dword [ebp + 0xc]
xor ebx, ebx
inc ebx
push ebx
call fcn.004a8110
pop ecx
test eax, eax
je 0x4a9fad
mov eax, esi
call fcn.004a749a
test eax, eax
jne 0x4a9fad
cmp dword [ebp - 4], eax
je 0x4aaae2
push 0
push str.IllegalKey.wav
call fcn.004b4a86
jmp 0x4aa7d8
dec dword [ebp - 0x1c]
jmp 0x4a9ee2
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004a863e
xor edi, edi
add esp, 0x10
cmp dword [ebp - 4], edi
jg 0x4aa047
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
jne 0x4a9ee2
call fcn.004a82cb
cmp dword [ebp - 0x28], eax
jl 0x4a9ee2
mov eax, dword [ebp + 8]
or ecx, 0xffffffff
call fcn.004a7031
push dword [ebp + 8]
call fcn.00401a80
mov esi, dword [ebp - 0x14]
pop ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], edi
cmp esi, eax
jle 0x4aa010
mov esi, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
push edi
push esi
push dword [ebp + 8]
call fcn.004ad683
add esp, 0x14
cmp dword [ebp - 0xc], 0xffffff22
je 0x4a9ee2
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
pop ecx
pop ecx
jmp 0x4a9ee2
mov esi, dword [ebp - 0x14]
mov dword [ebp - 8], edi
cmp esi, dword [ebp - 4]
jle 0x4aa010
mov esi, dword [ebp - 4]
jmp 0x4aa010
mov edi, dword [ebp - 4]
test edi, edi
jne 0x4aa072
mov eax, dword [ebp + 0xc]
call fcn.004a7443
test eax, eax
je 0x4aa072
inc dword [ebp - 0x2c]
jmp 0x4a9ee2
cmp dword [ebp - 8], edi
jge 0x4aa0da
push dword [ebp - 0x20]
and dword [ebp - 0x44], 0
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004a863e
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.004ab898
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
inc dword [ebp - 8]
lea edx, [eax + ecx - 1]
cmp dword [ebp - 0x44], edx
jl 0x4aa0d0
mov ebx, dword [ebp - 8]
sub ebx, eax
jns 0x4aa0b3
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, edi
jle 0x4aa0bc
mov esi, edi
push dword [ebp - 0x10]
push ecx
call fcn.004acd0b
push 0
sub esi, ebx
add ebx, dword [ebp + 8]
push esi
push ebx
jmp 0x4aa141
call fcn.00499760
jmp 0x4aa8ff
test edi, edi
jg 0x4aa8ff
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
jne 0x4aa8ff
call fcn.004a82cb
cmp dword [ebp - 0x28], eax
jl 0x4aa8ff
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.004a7031
push edi
call fcn.00401a80
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x4aa125
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4aa12e
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
push 0
sub ebx, esi
push ebx
add esi, edi
push esi
call fcn.004ad683
add esp, 0x14
jmp 0x4aa8ff
mov eax, ebx
sub eax, 0x4f
je 0x4aa309
dec eax
je 0x4aa298
dec eax
je 0x4aa280
dec eax
dec eax
jne 0x4aa8ff
xor ebx, ebx
cmp dword [ebp - 8], ebx
jl 0x4a9ee2
mov edi, dword [ebp - 4]
cmp edi, ebx
jle 0x4a9ee2
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
je 0x4aa1b5
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x2c], ebx
call fcn.004a74e6
pop ecx
pop ecx
mov eax, esi
call fcn.004a8763
call fcn.004a7411
test eax, eax
jne 0x4a9ee2
cmp dword [ebp - 8], edi
jge 0x4a9ee2
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x58]
push 2
call fcn.004a863e
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
add esp, 0x10
call fcn.00445758
dec edi
mov dword [ebp - 4], edi
mov byte [edi + ebx], 0
cmp dword [ebp - 8], edi
jl 0x4aa1ff
cmp dword [ebp - 8], 0
jle 0x4aa1ff
dec dword [ebp - 8]
mov edi, 0xffffff22
xor ebx, ebx
lea esi, [ebp - 0x18]
mov dword [ebp - 0x18], edi
call fcn.004ab898
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 8]
add ecx, eax
mov eax, dword [ebp - 0x14]
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0xc]
lea ebx, [ecx + 1]
cmp dword [ebp - 0x18], eax
jg 0x4aa237
test ebx, ebx
jle 0x4aa237
mov ebx, ecx
jmp 0x4aa23a
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp dword [ebp - 0x18], ecx
jne 0x4aa24a
mov dword [ebp - 0x18], edi
test ebx, ebx
jns 0x4aa250
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x4aa25b
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
push dword [ebp - 0x4c]
sub esi, ebx
add ebx, dword [ebp + 8]
push esi
push ebx
call fcn.004ad683
add esp, 0x14
cmp dword [ebp - 0x18], edi
jmp 0x4aa7c7
mov esi, dword [ebp + 0xc]
xor ebx, ebx
lea edi, [ebp - 0x40]
call fcn.004a70cd
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], eax
jmp 0x4a9ee2
mov esi, dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.004a8110
pop ecx
test eax, eax
je 0x4aa301
mov eax, esi
call fcn.004a749a
test eax, eax
jne 0x4aa301
cmp dword [ebp - 4], eax
jne 0x4a9f9c
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], al
call fcn.00445b2f
test eax, eax
jne 0x4aa2fa
test esi, esi
je 0x4aa2fa
mov dword [0x51ffec], 1
call fcn.004a725b
mov dword [0x5177b8], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x5177bc], eax
pop ecx
mov eax, 0x51ff38
call fcn.00444961
pop ecx
push 0x28
jmp 0x4aab20
inc dword [ebp - 0x1c]
jmp 0x4a9ee2
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004a863e
mov eax, dword [ebp - 4]
add esp, 0x10
test eax, eax
jg 0x4aa38f
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
jne 0x4a9ee2
call fcn.004a82cb
cmp dword [ebp - 0x28], eax
jl 0x4a9ee2
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.004a7031
push edi
call fcn.00401a80
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x4aa366
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4aa36f
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
sub ebx, esi
add esi, edi
push 0
push ebx
push esi
call fcn.004ad683
add esp, 0x14
jmp 0x4a9ee2
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 8], eax
jns 0x4aa39d
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4aa3a6
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.004acd0b
sub ebx, esi
add esi, dword [ebp + 8]
jmp 0x4aa37e
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x7a]
call fcn.004a8099
test eax, eax
je 0x4aa8ff
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push 1
call fcn.004a863e
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
add esp, 0x10
mov edx, edi
mov byte [eax + edi], 0
call fcn.00445b2f
test eax, eax
jne 0x4aa421
test esi, esi
je 0x4aa421
mov dword [0x51ffec], 1
call fcn.004a725b
mov dword [0x5177b8], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x5177bc], eax
pop ecx
mov eax, 0x51ff38
call fcn.00444961
pop ecx
push 1
mov ecx, esi
call fcn.004a7825
pop ecx
lea eax, [ebx - 0xb]
jmp 0x4aac28
cmp dword [ebp - 4], 0
jle 0x4aa4cd
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
or ecx, 0xffffffff
call fcn.004a7031
and dword [ebp - 0x18], 0
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.004ab898
mov edi, dword [ebp - 0xc]
jmp 0x4aa478
push 1
push dword [ebp - 0x4c]
call fcn.004997b5
and dword [ebp - 0x18], 0
pop ecx
pop ecx
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.004ab898
cmp dword [ebp - 0x18], edi
jg 0x4aa45e
push dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 8], ebx
call fcn.00401a80
mov esi, dword [ebp - 0x14]
pop ecx
cmp esi, eax
jle 0x4aa494
mov esi, eax
push dword [ebp - 0x10]
push edi
call fcn.004acd0b
push esi
push dword [ebp + 8]
call fcn.004adfc4
add esp, 0x10
cmp edi, 0xffffff22
je 0x4aa4bc
push dword [ebp - 0x10]
push edi
call fcn.004acd0b
pop ecx
pop ecx
mov eax, dword [ebp + 8]
call fcn.004449db
mov dword [ebp - 4], ebx
push ebx
jmp 0x4a9ee4
call fcn.0041df75
mov ecx, eax
mov eax, dword [0x51ffe0]
sub ecx, eax
cmp ecx, 0x3e8
jb 0x4aa4eb
test eax, eax
jne 0x4aab23
call fcn.0041df75
mov esi, dword [ebp + 0xc]
mov dword [0x51ffe0], eax
call fcn.004a725b
test eax, eax
jne 0x4aab39
mov eax, esi
call fcn.004a7620
cmp eax, 3
jl 0x4aab39
cmp dword [0x51ffe4], 1
jl 0x4aab59
push 0
push 0
jmp 0x4aa8f2
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x3a]
call fcn.004a8099
test eax, eax
je 0x4aa8ff
push 0
push dword [ebp - 0x20]
xor edi, edi
push dword [ebp - 0x24]
inc edi
push edi
call fcn.004a863e
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.00445b2f
test eax, eax
jne 0x4aab8e
test esi, esi
je 0x4aab8e
cmp ebx, 0x42
jne 0x4aab65
call fcn.004a7290
cmp eax, 2
jne 0x4aab65
mov dword [0x51fff0], edi
jmp 0x4aabd2
cmp ebx, 0x20
jl 0x4aa7df
cmp ebx, 0x7e
jg 0x4aa8ff
mov dword [ebp - 0x68], 1
cmp ebx, 0x3d
jne 0x4aa5bd
cmp dword [ebp - 0x5c], eax
je 0x4aa5bd
mov dword [ebp - 0x18], 0x2b
mov ebx, dword [ebp - 4]
cmp dword [ebp - 0x48], eax
je 0x4aa5c9
cmp ebx, eax
jne 0x4aa5d1
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edi
jmp 0x4aa5d4
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x64], eax
je 0x4aa683
mov al, byte [ebp - 0x18]
call fcn.00444468
test eax, eax
jne 0x4aa610
push dword [ebp - 0x18]
call fcn.004449b1
pop ecx
test eax, eax
je 0x4aa8ff
mov edx, dword [ebp + 8]
mov byte [ebx + edx], 0
call fcn.00445b2f
test eax, eax
je 0x4aa8ff
jmp 0x4aa650
xor esi, esi
test ebx, ebx
jle 0x4aa650
mov eax, dword [ebp + 8]
movsx eax, byte [esi + eax]
push eax
call fcn.004449b1
pop ecx
test eax, eax
je 0x4aa645
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
mov eax, esi
call fcn.00445758
cmp dword [ebp - 8], esi
jle 0x4aa641
dec dword [ebp - 8]
dec dword [ebp - 4]
dec esi
mov ebx, dword [ebp - 4]
inc esi
cmp esi, ebx
jl 0x4aa616
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 8], 0
jle 0x4aa683
mov eax, dword [ebp - 0x38]
dec eax
cmp dword [ebp - 8], eax
jl 0x4aa683
cmp ebx, dword [ebp - 8]
jl 0x4aa683
sub edi, dword [ebp - 0x48]
mov eax, ebx
imul eax, eax, 0x25
cmp edi, eax
jae 0x4aa683
mov esi, dword [ebp + 0xc]
push 1
call fcn.004a7380
pop ecx
push 0xd
pop esi
call fcn.004abd9a
cmp ebx, dword [ebp - 0x28]
jge 0x4aa6c0
call fcn.004ad765
test eax, eax
jne 0x4aa6c0
xor edx, edx
cmp dword [ebp - 0x6c], edx
je 0x4aa69c
cmp ebx, edx
je 0x4aa6c0
push dword [ebp - 0x18]
call fcn.00445490
pop ecx
push edx
test eax, eax
je 0x4aa6b0
push edx
push dword [ebp - 0x20]
jmp 0x4aa6b6
push dword [ebp - 0x20]
push dword [ebp - 0x60]
push 5
call fcn.004a863e
add esp, 0x10
mov esi, dword [ebp + 0xc]
call fcn.004a7411
test eax, eax
je 0x4aa6f2
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004a74e6
pop ecx
pop ecx
mov eax, esi
call fcn.004a8763
call fcn.004a7411
test eax, eax
jne 0x4aa8ff
cmp ebx, dword [ebp - 0x28]
jge 0x4aa8ff
push dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 8]
call fcn.00444563
mov edi, dword [ebp - 8]
inc edi
inc dword [ebp - 4]
pop ecx
mov dword [ebp - 8], edi
cmp edi, dword [ebp - 0x28]
jl 0x4aa737
call fcn.004a72e5
test eax, eax
je 0x4aa737
push 0xd
pop esi
call fcn.004abd9a
mov dword [ebp - 0x18], 0xffffff22
cmp edi, dword [ebp - 4]
jne 0x4aa74d
mov ecx, dword [ebp - 0xc]
mov esi, edi
sub esi, dword [ebp - 0x14]
jmp 0x4aa792
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.004ab898
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov eax, ebx
cdq
mov esi, ebx
sub esi, dword [ebp - 0x18]
sub eax, edx
add esi, ecx
sar eax, 1
cmp esi, eax
jl 0x4aa77d
mov eax, ecx
sub eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
lea esi, [eax + edi - 1]
jmp 0x4aa792
mov esi, ecx
sub esi, dword [ebp - 0x18]
add ebx, ecx
add esi, edi
cmp dword [ebp - 0x18], ebx
jne 0x4aa792
mov dword [ebp - 0x18], 0xffffff22
test esi, esi
jns 0x4aa798
xor esi, esi
mov eax, dword [ebp - 0x14]
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x4aa7a6
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push ecx
call fcn.004acd0b
push 0
sub ebx, esi
add esi, dword [ebp + 8]
push ebx
push esi
call fcn.004ad683
add esp, 0x14
cmp dword [ebp - 0x18], 0xffffff22
je 0x4aa8ff
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call fcn.004acd0b
pop ecx
pop ecx
jmp 0x4aa8ff
cmp ebx, eax
jle 0x4aa8ff
mov esi, dword [ebp + 0xc]
call fcn.004a8190
test eax, eax
je 0x4aa8ff
mov eax, ebx
jmp 0x4aac28
mov edi, dword [ebp - 4]
mov ebx, dword [ebp + 8]
xor eax, eax
mov byte [edi + ebx], 0
cmp dword [ebp - 0x64], eax
je 0x4aa828
cmp edi, eax
jne 0x4aa828
cmp dword [ebp - 0x68], eax
jne 0x4aa828
cmp dword [ebp - 0x6c], eax
je 0x4aa828
mov esi, dword [ebp + 0xc]
push 1
call fcn.004a7380
pop ecx
mov eax, ebx
call fcn.004449a1
test eax, eax
jne 0x4aa86e
mov edx, ebx
call fcn.00445b2f
test eax, eax
je 0x4aa86e
mov esi, dword [ebp + 0xc]
xor eax, eax
or ecx, 0xffffffff
call fcn.004a6fad
mov eax, ebx
call fcn.004449db
mov eax, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
call fcn.004a8763
push esi
push esi
push dword [ebp - 0x70]
push 2
jmp 0x4aa8f7
mov eax, ebx
call fcn.004449a1
test eax, eax
je 0x4aabba
call fcn.0041df75
sub eax, dword [0x51ffd8]
cmp eax, 0x190
jae 0x4aaba7
mov esi, dword [ebp + 0xc]
and dword [ebp - 0x44], 0
and dword [ebp - 0x18], 0
lea ebx, [ebp - 0x18]
lea edi, [ebp - 0x44]
call fcn.004a70cd
call fcn.0041df75
mov dword [0x51ffd8], eax
or eax, 0xffffffff
call fcn.004a6ec0
test eax, eax
je 0x4aab9f
mov eax, esi
call fcn.004a7620
cmp eax, 3
jl 0x4aab9f
xor eax, eax
cmp dword [ebp - 0x44], eax
jne 0x4aa8e3
cmp dword [ebp - 0x18], eax
je 0x4aab9f
cmp dword [0x51ffdc], 2
jl 0x4aabd2
push eax
push eax
push dword [ebp - 0x50]
push 1
call fcn.004a863e
add esp, 0x10
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x4aaa5f
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x4aa9b3
add dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004a74e6
pop ecx
pop ecx
mov eax, esi
call fcn.004a8763
call fcn.004a7411
test eax, eax
jne 0x4aa9af
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.004ab898
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.004ab898
mov ecx, dword [ebp - 0x14]
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x44]
sub esi, ecx
add ecx, eax
cmp edi, ecx
jne 0x4aa96e
mov edi, 0xffffff22
test esi, esi
jns 0x4aa974
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x4aa982
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.004acd0b
push 0
sub ebx, esi
add esi, dword [ebp + 8]
push ebx
push esi
call fcn.004ad683
add esp, 0x14
cmp edi, 0xffffff22
je 0x4aa9af
push dword [ebp - 0x10]
push edi
call fcn.004acd0b
pop ecx
pop ecx
and dword [ebp - 0x2c], 0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4aaa5f
add dword [ebp - 0x34], eax
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004a74e6
pop ecx
pop ecx
mov eax, esi
call fcn.004a8763
call fcn.004a7411
test eax, eax
jne 0x4aaa5b
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.004ab898
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.004ab898
mov ecx, dword [ebp - 0x14]
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x44]
sub esi, ecx
add ecx, eax
cmp edi, ecx
jne 0x4aaa1a
mov edi, 0xffffff22
test esi, esi
jns 0x4aaa20
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x4aaa2e
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.004acd0b
push 0
sub ebx, esi
add esi, dword [ebp + 8]
push ebx
push esi
call fcn.004ad683
add esp, 0x14
cmp edi, 0xffffff22
je 0x4aaa5b
push dword [ebp - 0x10]
push edi
call fcn.004acd0b
pop ecx
pop ecx
and dword [ebp - 0x1c], 0
call fcn.004abcbb
test eax, eax
je 0x4aaa78
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.004adfdb
mov esi, dword [ebp + 0xc]
push 0
mov ecx, esi
call fcn.004a7825
xor ebx, ebx
pop ecx
cmp dword [ebp - 0x78], ebx
jbe 0x4aaa9d
call fcn.0041df75
sub eax, dword [ebp - 0x74]
cmp eax, dword [ebp - 0x78]
ja 0x4aabd9
push 0x76
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x4aaabb
mov dword [0x51ffe4], ebx
mov dword [0x51ffe0], ebx
push 0x19
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4a9c2d
mov eax, dword [ebp + 8]
call fcn.004449db
mov ecx, dword [ebp + 0xc]
push 1
call fcn.004a7825
pop ecx
mov eax, esi
jmp 0x4aac28
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], 0
call fcn.00445b2f
test eax, eax
jne 0x4aab1e
test esi, esi
je 0x4aab1e
mov dword [0x51ffec], ebx
call fcn.004a725b
mov dword [0x5177b8], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x5177bc], eax
pop ecx
mov eax, 0x51ff38
call fcn.00444961
pop ecx
push 0x26
pop esi
jmp 0x4aaad0
call fcn.0041df75
and dword [0x51ffe4], 0
mov esi, dword [ebp + 0xc]
mov dword [0x51ffe0], eax
jmp 0x4aab3f
inc dword [0x51ffe4]
call fcn.004a725b
test eax, eax
jle 0x4aab59
push 0
push 0
push dword [ebp - 0x54]
push 1
call fcn.004a863e
add esp, 0x10
mov eax, dword [ebp + 8]
call fcn.004449db
push 0x76
jmp 0x4aab20
mov dword [0x51ffec], edi
call fcn.004a725b
push dword [ebp + 8]
mov dword [0x5177b8], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x5177bc], eax
pop ecx
mov eax, 0x51ff38
call fcn.00444961
pop ecx
push edi
mov ecx, esi
call fcn.004a7825
pop ecx
lea eax, [ebx + 0x35]
jmp 0x4aac28
inc dword [0x51ffdc]
jmp 0x4aabd2
call fcn.0041df75
and dword [0x51ffdc], 0
mov dword [0x51ffd8], eax
jmp 0x4aabd2
mov eax, dword [ebp - 0x44]
imul edi, edi, 0x25
sub eax, dword [ebp - 0x48]
cmp eax, edi
jae 0x4aabd2
mov esi, dword [ebp + 0xc]
push 1
call fcn.004a7380
pop ecx
push 0xd
jmp 0x4a9ad5
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov edx, edi
mov byte [eax + edi], bl
call fcn.00445b2f
test eax, eax
jne 0x4aac1c
cmp esi, ebx
je 0x4aac1c
mov dword [0x51ffec], 1
call fcn.004a725b
mov dword [0x5177b8], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x5177bc], eax
pop ecx
mov eax, 0x51ff38
call fcn.00444961
pop ecx
mov esi, 0x92
jmp 0x4aaad0
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret