Function at 0x412c07
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]
cmp edi, dword [0x5298b8]
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
jne 0x412c57
cmp edi, eax
jne 0x412c7e
cmp edi, eax
mov dword [0x5298a8], eax
mov dword [0x5298ac], eax
mov dword [0x5298b0], eax
mov dword [0x5298b4], eax
mov dword [0x5298b8], edi
mov dword [0x5298c0], eax
je 0x413e74
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
xor ebx, ebx
xor esi, esi
call fcn.00410e2d
mov esi, edi
call fcn.00410fcc
mov byte [ebp - 0x4c], al
call fcn.00410ecf
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.00414ca7
add esp, 0x20
call fcn.00412b31
mov dword [ebp - 0x78], eax
call fcn.004124cc
xor ebx, ebx
test al, 0x4e
mov dword [ebp - 0x5c], ebx
je 0x412ce4
mov dword [ebp - 0x5c], 1
movzx eax, al
shr eax, 5
and eax, 1
mov dword [ebp - 0x64], eax
call fcn.004124f5
push ebx
mov dword [ebp - 0x6c], eax
call fcn.00412508
cmp dword [0x5298c0], ebx
pop ecx
je 0x412d1d
mov eax, dword [ebp + 8]
call fcn.004856d7
mov dword [0x5298c0], ebx
push 0x77
pop eax
jmp 0x413e76
cmp dword [0x5298bc], ebx
je 0x412d51
cmp dword [0x521074], ebx
jl 0x412d51
cmp dword [0x521078], ebx
jle 0x412d51
call fcn.004147cc
cmp dword [0x521074], eax
jne 0x412d51
mov eax, dword [0x521078]
cmp eax, dword [ebp - 0x38]
jne 0x412d51
xor edi, edi
inc edi
jmp 0x412d53
xor edi, edi
cmp dword [ebp + 8], ebx
je 0x413e74
cmp dword [ebp - 0x14], ebx
je 0x413e74
cmp dword [ebp - 0x28], ebx
je 0x413e74
cmp edi, ebx
jne 0x412da2
or dword [0x521074], 0xffffffff
or dword [0x521078], 0xffffffff
mov ecx, 0x529808
mov eax, ecx
mov dword [0x5298bc], ebx
call fcn.00485776
test eax, eax
jne 0x412da2
push 0x50
push ebx
push ecx
call fcn.004c05d0
add esp, 0xc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040cfd7
mov eax, dword [ebp - 0x28]
inc eax
push eax
xor esi, esi
push esi
push dword [ebp + 8]
call fcn.004c05d0
add esp, 0xc
cmp edi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
je 0x412e63
xor ecx, ecx
xor edi, edi
cmp byte [0x529808], cl
je 0x412e08
mov esi, dword [ebp + 8]
sub esi, 0x529808
cmp ecx, dword [0x521078]
jge 0x412e08
cmp ecx, dword [ebp - 0x28]
jge 0x412e08
inc dword [ebp - 4]
lea eax, [ecx + 0x529808]
mov dl, byte [eax]
inc ecx
mov byte [esi + eax], dl
cmp byte [ecx + 0x529808], 0
jne 0x412de3
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov ebx, ecx
sub ebx, eax
mov dword [ebp - 8], ecx
jns 0x412e19
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, ecx
jle 0x412e22
mov esi, ecx
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push edi
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040b0e8
or dword [0x521074], 0xffffffff
or dword [0x521078], 0xffffffff
add esp, 0x14
push 0x50
push edi
push 0x529808
mov dword [0x5298bc], edi
call fcn.004c05d0
add esp, 0xc
and dword [ebp - 0x68], 0
call fcn.004af84c
mov dword [ebp - 0x74], eax
call fcn.0040a9bc
test eax, eax
mov dword [ebp - 0x44], eax
je 0x413b4d
call fcn.004af84c
mov dword [ebp - 0x74], eax
call fcn.0040aa60
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
push 0x1b
pop esi
cmp ebx, esi
je 0x413d15
cmp ebx, 0xd
je 0x413a4c
push 0xa
pop edi
cmp ebx, edi
je 0x413a4c
cmp ebx, 8
je 0x412fbb
cmp ebx, 0xe0
je 0x4130be
xor eax, eax
cmp ebx, eax
jne 0x4137df
call fcn.0040aa60
mov ebx, eax
cmp ebx, 0x4b
jg 0x412f58
je 0x412f4f
cmp ebx, 0x44
jg 0x412f25
cmp ebx, 0x43
jge 0x413777
cmp ebx, 0x3b
jl 0x413b4d
cmp ebx, 0x40
jle 0x412f0c
cmp ebx, 0x41
je 0x41367f
cmp ebx, 0x42
jne 0x413b4d
mov esi, dword [ebp + 0xc]
call fcn.00412bca
cmp eax, 1
jne 0x413777
mov dword [ebp - 0x18], edi
jmp 0x412e8f
sub ebx, 0x47
je 0x412f46
dec ebx
je 0x412f3d
dec ebx
jne 0x413b4d
mov dword [ebp - 0x18], 0x39
jmp 0x412fb1
mov dword [ebp - 0x18], 0x38
jmp 0x412fb1
mov dword [ebp - 0x18], 0x37
jmp 0x412fb1
mov dword [ebp - 0x18], 0x34
jmp 0x412fb1
sub ebx, 0x4c
je 0x412faa
dec ebx
je 0x412fa1
dec ebx
dec ebx
je 0x412f98
dec ebx
je 0x412f8f
dec ebx
je 0x412f86
dec ebx
je 0x412f7d
dec ebx
jne 0x413b4d
mov dword [ebp - 0x18], 0x2e
jmp 0x412fb1
mov dword [ebp - 0x18], 0x30
jmp 0x412fb1
mov dword [ebp - 0x18], 0x33
jmp 0x412fb1
mov dword [ebp - 0x18], 0x32
jmp 0x412fb1
mov dword [ebp - 0x18], 0x31
jmp 0x412fb1
mov dword [ebp - 0x18], 0x36
jmp 0x412fb1
mov dword [ebp - 0x18], 0x35
call fcn.0041ea49
jmp 0x412e8f
cmp dword [ebp - 8], 0
jle 0x413b4d
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
je 0x412ff7
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.004121e4
pop ecx
pop ecx
mov eax, esi
call fcn.0041196e
call fcn.004123a2
test eax, eax
jne 0x413b4d
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00413e7b
mov ebx, dword [ebp + 8]
add esp, 0x10
dec dword [ebp - 8]
mov eax, dword [ebp - 8]
call fcn.004861ac
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.0040cfd7
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 0x413067
test esi, esi
jle 0x413067
mov esi, ecx
jmp 0x413068
dec edi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp edi, ecx
jne 0x413079
mov edi, 0xffffff22
test esi, esi
jge 0x41307f
xor esi, esi
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x41308a
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub ebx, esi
push ebx
add esi, eax
push esi
call fcn.0040b0e8
add esp, 0x14
cmp edi, 0xffffff22
je 0x413b4d
push dword [ebp - 0x10]
push edi
jmp 0x413a21
call fcn.0040aa60
mov ebx, eax
cmp ebx, 0x86
jg 0x413b4d
cmp ebx, 0x85
jge 0x413604
cmp ebx, 0x4d
jg 0x413396
je 0x41329d
sub eax, 0x47
je 0x4131fb
dec eax
je 0x4131bd
dec eax
je 0x4131a5
dec eax
dec eax
jne 0x413b4d
xor esi, esi
cmp dword [ebp - 4], esi
jne 0x413133
mov eax, dword [ebp + 0xc]
call fcn.0041234b
test eax, eax
je 0x413133
cmp dword [ebp - 0x2c], esi
jle 0x413133
dec dword [ebp - 0x2c]
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
jmp 0x413b43
cmp dword [ebp - 8], esi
jle 0x413b4d
push dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00413e7b
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040cfd7
mov edi, dword [ebp - 0xc]
dec dword [ebp - 8]
cmp dword [ebp - 0x44], edi
jg 0x413197
mov ebx, dword [ebp - 8]
test ebx, ebx
jge 0x413170
xor ebx, ebx
mov eax, dword [ebp - 0x14]
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x41317e
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push edi
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x4130a1
push 0
push 0
call fcn.0041eb4e
jmp 0x413a26
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x40]
xor edi, edi
call fcn.00414957
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x1c], eax
jmp 0x413126
mov esi, dword [ebp + 0xc]
xor ebx, ebx
inc ebx
push ebx
call fcn.00411082
test eax, eax
pop ecx
je 0x4131f3
mov eax, esi
call fcn.004122ff
test eax, eax
jne 0x4131f3
cmp dword [ebp - 4], eax
je 0x413d2f
push 0
push str.IllegalKey.wav
call fcn.004837c0
jmp 0x413a26
dec dword [ebp - 0x1c]
jmp 0x413126
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00413e7b
xor edi, edi
add esp, 0x10
cmp dword [ebp - 4], edi
jg 0x41328d
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
jne 0x413126
call fcn.00410ef6
cmp dword [ebp - 0x28], eax
jl 0x413126
mov eax, dword [ebp + 8]
or ecx, 0xffffffff
call fcn.0041498f
push dword [ebp + 8]
call fcn.004bf880
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], edi
jle 0x413256
mov esi, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
push edi
push esi
push dword [ebp + 8]
call fcn.0040b0e8
add esp, 0x14
cmp dword [ebp - 0xc], 0xffffff22
je 0x413126
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
pop ecx
pop ecx
jmp 0x413126
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 4]
mov dword [ebp - 8], edi
jle 0x413256
mov esi, dword [ebp - 4]
jmp 0x413256
mov edi, dword [ebp - 4]
test edi, edi
jne 0x4132b8
mov eax, dword [ebp + 0xc]
call fcn.0041234b
test eax, eax
je 0x4132b8
inc dword [ebp - 0x2c]
jmp 0x413126
cmp dword [ebp - 8], edi
jge 0x413322
push dword [ebp - 0x20]
and dword [ebp - 0x44], 0
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00413e7b
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040cfd7
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 0x413318
mov ebx, dword [ebp - 8]
sub ebx, eax
jns 0x4132f9
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, edi
jle 0x413302
mov esi, edi
push dword [ebp - 0x10]
push ecx
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x413389
call fcn.0041ebb8
jmp 0x413b4d
test edi, edi
jg 0x413b4d
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
jne 0x413b4d
call fcn.00410ef6
cmp dword [ebp - 0x28], eax
jl 0x413b4d
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.0041498f
push edi
call fcn.004bf880
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x41336d
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x413376
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
push 0
sub ebx, esi
push ebx
add esi, edi
push esi
call fcn.0040b0e8
add esp, 0x14
jmp 0x413b4d
mov eax, ebx
sub eax, 0x4f
je 0x413553
dec eax
je 0x4134e2
dec eax
je 0x4134ca
dec eax
dec eax
jne 0x413b4d
xor ebx, ebx
cmp dword [ebp - 8], ebx
jl 0x413126
mov edi, dword [ebp - 4]
cmp edi, ebx
jle 0x413126
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
je 0x4133fd
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.004121e4
pop ecx
pop ecx
mov eax, esi
call fcn.0041196e
call fcn.004123a2
test eax, eax
jne 0x413126
cmp dword [ebp - 8], edi
jge 0x413126
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x58]
push 2
call fcn.00413e7b
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
add esp, 0x10
call fcn.004861ac
dec edi
cmp dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov byte [edi + ebx], 0
jl 0x413447
cmp dword [ebp - 8], 0
jle 0x413447
dec dword [ebp - 8]
mov edi, 0xffffff22
xor ebx, ebx
lea esi, [ebp - 0x18]
mov dword [ebp - 0x18], edi
call fcn.0040cfd7
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 0x41347f
test ebx, ebx
jle 0x41347f
mov ebx, ecx
jmp 0x413482
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp dword [ebp - 0x18], ecx
jne 0x413492
mov dword [ebp - 0x18], edi
test ebx, ebx
jge 0x413498
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x4134a3
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040b0e8
add esp, 0x14
cmp dword [ebp - 0x18], edi
jmp 0x413a15
mov esi, dword [ebp + 0xc]
xor ebx, ebx
lea edi, [ebp - 0x40]
call fcn.00414957
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], eax
jmp 0x413126
mov esi, dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.00411082
test eax, eax
pop ecx
je 0x41354b
mov eax, esi
call fcn.004122ff
test eax, eax
jne 0x41354b
cmp dword [ebp - 4], eax
jne 0x4131e2
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], al
call fcn.00485754
test eax, eax
jne 0x413544
test esi, esi
je 0x413544
mov dword [0x5298bc], 1
call fcn.004147cc
mov dword [0x521074], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x521078], eax
pop ecx
mov eax, 0x529808
call fcn.00485786
pop ecx
push 0x28
jmp 0x413d6d
inc dword [ebp - 0x1c]
jmp 0x413126
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00413e7b
mov eax, dword [ebp - 4]
add esp, 0x10
test eax, eax
jg 0x4135d9
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
jne 0x413126
call fcn.00410ef6
cmp dword [ebp - 0x28], eax
jl 0x413126
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.0041498f
push edi
call fcn.004bf880
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x4135b0
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4135b9
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
sub ebx, esi
add esi, edi
push 0
push ebx
push esi
call fcn.0040b0e8
add esp, 0x14
jmp 0x413126
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 8], eax
jns 0x4135e7
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4135f0
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040cf2f
mov eax, dword [ebp + 8]
sub ebx, esi
add esi, eax
jmp 0x4135c8
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x7a]
call fcn.00411104
test eax, eax
je 0x413b4d
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push 1
call fcn.00413e7b
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
add esp, 0x10
mov edx, edi
mov byte [eax + edi], 0
call fcn.00485754
test eax, eax
jne 0x41366d
test esi, esi
je 0x41366d
mov dword [0x5298bc], 1
call fcn.004147cc
mov dword [0x521074], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x521078], eax
pop ecx
mov eax, 0x529808
call fcn.00485786
pop ecx
push 1
mov eax, esi
call fcn.0041116e
pop ecx
lea eax, [ebx - 0xb]
jmp 0x413e76
cmp dword [ebp - 4], 0
jle 0x413719
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
or ecx, 0xffffffff
call fcn.0041498f
and dword [ebp - 0x18], 0
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040cfd7
mov edi, dword [ebp - 0xc]
jmp 0x4136c4
push 1
push dword [ebp - 0x4c]
call fcn.0041eb4e
and dword [ebp - 0x18], 0
pop ecx
pop ecx
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040cfd7
cmp dword [ebp - 0x18], edi
jg 0x4136aa
push dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 8], ebx
call fcn.004bf880
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
jle 0x4136e0
mov esi, eax
push dword [ebp - 0x10]
push edi
call fcn.0040cf2f
push esi
push dword [ebp + 8]
call fcn.0040b2e9
add esp, 0x10
cmp edi, 0xffffff22
je 0x413708
push dword [ebp - 0x10]
push edi
call fcn.0040cf2f
pop ecx
pop ecx
mov eax, dword [ebp + 8]
call fcn.004856d7
mov dword [ebp - 4], ebx
push ebx
jmp 0x413128
call fcn.004af84c
mov ecx, eax
mov eax, dword [0x5298b0]
sub ecx, eax
cmp ecx, 0x3e8
jb 0x413737
test eax, eax
jne 0x413d70
call fcn.004af84c
mov esi, dword [ebp + 0xc]
mov dword [0x5298b0], eax
call fcn.004147cc
test eax, eax
jne 0x413d86
mov eax, esi
call fcn.00412140
cmp eax, 3
jl 0x413d86
cmp dword [0x5298b4], 1
jl 0x413da6
push 0
push 0
jmp 0x413b40
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x3a]
call fcn.00411104
test eax, eax
je 0x413b4d
push 0
push dword [ebp - 0x20]
xor edi, edi
push dword [ebp - 0x24]
inc edi
push edi
call fcn.00413e7b
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.00485754
test eax, eax
jne 0x413ddb
test esi, esi
je 0x413ddb
cmp ebx, 0x42
jne 0x413db2
call fcn.00412bca
cmp eax, 2
jne 0x413db2
mov dword [0x5298c0], edi
jmp 0x413e1f
cmp ebx, 0x20
jl 0x413a2d
cmp ebx, 0x7e
jg 0x413b4d
cmp ebx, 0x3d
mov dword [ebp - 0x68], 1
jne 0x413809
cmp dword [ebp - 0x5c], eax
je 0x413809
mov dword [ebp - 0x18], 0x2b
cmp dword [ebp - 0x48], eax
mov ebx, dword [ebp - 4]
je 0x413815
cmp ebx, eax
jne 0x41381d
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edi
jmp 0x413820
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x64], eax
je 0x4138cf
mov al, byte [ebp - 0x18]
call fcn.00486804
test eax, eax
jne 0x41385c
push dword [ebp - 0x18]
call fcn.0048572e
test eax, eax
pop ecx
je 0x413b4d
mov edx, dword [ebp + 8]
mov byte [ebx + edx], 0
call fcn.00485754
test eax, eax
je 0x413b4d
jmp 0x41389c
xor esi, esi
test ebx, ebx
jle 0x41389c
mov eax, dword [ebp + 8]
movsx eax, byte [esi + eax]
push eax
call fcn.0048572e
test eax, eax
pop ecx
je 0x413891
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
mov eax, esi
call fcn.004861ac
cmp dword [ebp - 8], esi
jle 0x41388d
dec dword [ebp - 8]
dec dword [ebp - 4]
dec esi
mov ebx, dword [ebp - 4]
inc esi
cmp esi, ebx
jl 0x413862
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 8], 0
jle 0x4138cf
mov eax, dword [ebp - 0x38]
dec eax
cmp dword [ebp - 8], eax
jl 0x4138cf
cmp ebx, dword [ebp - 8]
jl 0x4138cf
sub edi, dword [ebp - 0x48]
mov eax, ebx
imul eax, eax, 0x25
cmp edi, eax
jae 0x4138cf
mov esi, dword [ebp + 0xc]
push 1
call fcn.00412508
pop ecx
push 0xd
pop esi
call fcn.0040aa65
cmp ebx, dword [ebp - 0x28]
jge 0x41390c
call fcn.0040a9bc
test eax, eax
jne 0x41390c
xor edx, edx
cmp dword [ebp - 0x6c], edx
je 0x4138e8
cmp ebx, edx
je 0x41390c
push dword [ebp - 0x18]
call fcn.00486826
test eax, eax
pop ecx
push edx
je 0x4138fc
push edx
push dword [ebp - 0x20]
jmp 0x413902
push dword [ebp - 0x20]
push dword [ebp - 0x60]
push 5
call fcn.00413e7b
add esp, 0x10
mov esi, dword [ebp + 0xc]
call fcn.004123a2
test eax, eax
je 0x41393e
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.004121e4
pop ecx
pop ecx
mov eax, esi
call fcn.0041196e
call fcn.004123a2
test eax, eax
jne 0x413b4d
cmp ebx, dword [ebp - 0x28]
jge 0x413b4d
push dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 8]
call fcn.004865da
mov edi, dword [ebp - 8]
inc edi
inc dword [ebp - 4]
cmp edi, dword [ebp - 0x28]
pop ecx
mov dword [ebp - 8], edi
jl 0x413983
call fcn.00412b86
test eax, eax
je 0x413983
push 0xd
pop esi
call fcn.0040aa65
cmp edi, dword [ebp - 4]
mov dword [ebp - 0x18], 0xffffff22
jne 0x413999
mov ecx, dword [ebp - 0xc]
mov esi, edi
sub esi, dword [ebp - 0x14]
jmp 0x4139de
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040cfd7
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 0x4139c9
mov eax, ecx
sub eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
lea esi, [eax + edi - 1]
jmp 0x4139de
mov esi, ecx
sub esi, dword [ebp - 0x18]
add ebx, ecx
add esi, edi
cmp dword [ebp - 0x18], ebx
jne 0x4139de
mov dword [ebp - 0x18], 0xffffff22
test esi, esi
jge 0x4139e4
xor esi, esi
mov eax, dword [ebp - 0x14]
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x4139f2
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push ecx
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040b0e8
add esp, 0x14
cmp dword [ebp - 0x18], 0xffffff22
je 0x413b4d
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call fcn.0040cf2f
pop ecx
pop ecx
jmp 0x413b4d
cmp ebx, eax
jle 0x413b4d
mov esi, dword [ebp + 0xc]
call fcn.00411022
test eax, eax
je 0x413b4d
mov eax, ebx
jmp 0x413e76
mov edi, dword [ebp - 4]
mov ebx, dword [ebp + 8]
xor eax, eax
cmp dword [ebp - 0x64], eax
mov byte [edi + ebx], 0
je 0x413a76
cmp edi, eax
jne 0x413a76
cmp dword [ebp - 0x68], eax
jne 0x413a76
cmp dword [ebp - 0x6c], eax
je 0x413a76
mov esi, dword [ebp + 0xc]
push 1
call fcn.00412508
pop ecx
mov eax, ebx
call fcn.00485776
test eax, eax
jne 0x413abc
mov edx, ebx
call fcn.00485754
test eax, eax
je 0x413abc
mov esi, dword [ebp + 0xc]
xor eax, eax
or ecx, 0xffffffff
call fcn.00414a2b
mov eax, ebx
call fcn.004856d7
mov eax, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
call fcn.0041196e
push esi
push esi
push dword [ebp - 0x70]
push 2
jmp 0x413b45
mov eax, ebx
call fcn.00485776
test eax, eax
je 0x413e07
call fcn.004af84c
sub eax, dword [0x5298a8]
cmp eax, 0x190
jae 0x413df4
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.00414957
call fcn.004af84c
mov dword [0x5298a8], eax
or eax, 0xffffffff
call fcn.00414b8a
test eax, eax
je 0x413dec
mov eax, esi
call fcn.00412140
cmp eax, 3
jl 0x413dec
xor eax, eax
cmp dword [ebp - 0x44], eax
jne 0x413b31
cmp dword [ebp - 0x18], eax
je 0x413dec
cmp dword [0x5298ac], 2
jl 0x413e1f
push eax
push eax
push dword [ebp - 0x50]
push 1
call fcn.00413e7b
add esp, 0x10
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x413cb1
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x413c03
add dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004121e4
pop ecx
pop ecx
mov eax, esi
call fcn.0041196e
call fcn.004123a2
test eax, eax
jne 0x413bff
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040cfd7
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040cfd7
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 0x413bbc
mov edi, 0xffffff22
test esi, esi
jge 0x413bc2
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x413bd0
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040b0e8
add esp, 0x14
cmp edi, 0xffffff22
je 0x413bff
push dword [ebp - 0x10]
push edi
call fcn.0040cf2f
pop ecx
pop ecx
and dword [ebp - 0x2c], 0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x413cb1
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.004121e4
pop ecx
pop ecx
mov eax, esi
call fcn.0041196e
call fcn.004123a2
test eax, eax
jne 0x413cad
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040cfd7
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040cfd7
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 0x413c6a
mov edi, 0xffffff22
test esi, esi
jge 0x413c70
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x413c7e
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040cf2f
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040b0e8
add esp, 0x14
cmp edi, 0xffffff22
je 0x413cad
push dword [ebp - 0x10]
push edi
call fcn.0040cf2f
pop ecx
pop ecx
and dword [ebp - 0x1c], 0
call fcn.0040ae33
test eax, eax
je 0x413cca
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.0040aa60
mov esi, dword [ebp + 0xc]
push 0
mov eax, esi
call fcn.0041116e
xor ebx, ebx
cmp dword [ebp - 0x78], ebx
pop ecx
jbe 0x413cef
call fcn.004af84c
sub eax, dword [ebp - 0x74]
cmp eax, dword [ebp - 0x78]
ja 0x413e26
push 0x76
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x413d08
mov dword [0x5298b4], ebx
mov dword [0x5298b0], ebx
push 0x19
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x412e6f
mov eax, dword [ebp + 8]
call fcn.004856d7
mov eax, dword [ebp + 0xc]
push 1
call fcn.0041116e
pop ecx
mov eax, esi
jmp 0x413e76
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], 0
call fcn.00485754
test eax, eax
jne 0x413d6b
test esi, esi
je 0x413d6b
mov dword [0x5298bc], ebx
call fcn.004147cc
mov dword [0x521074], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x521078], eax
pop ecx
mov eax, 0x529808
call fcn.00485786
pop ecx
push 0x26
pop esi
jmp 0x413d1d
call fcn.004af84c
and dword [0x5298b4], 0
mov esi, dword [ebp + 0xc]
mov dword [0x5298b0], eax
jmp 0x413d8c
inc dword [0x5298b4]
call fcn.004147cc
test eax, eax
jle 0x413da6
push 0
push 0
push dword [ebp - 0x54]
push 1
call fcn.00413e7b
add esp, 0x10
mov eax, dword [ebp + 8]
call fcn.004856d7
push 0x76
jmp 0x413d6d
mov dword [0x5298bc], edi
call fcn.004147cc
push dword [ebp + 8]
mov dword [0x521074], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x521078], eax
pop ecx
mov eax, 0x529808
call fcn.00485786
pop ecx
push edi
mov eax, esi
call fcn.0041116e
pop ecx
lea eax, [ebx + 0x35]
jmp 0x413e76
inc dword [0x5298ac]
jmp 0x413e1f
call fcn.004af84c
and dword [0x5298ac], 0
mov dword [0x5298a8], eax
jmp 0x413e1f
mov eax, dword [ebp - 0x44]
imul edi, edi, 0x25
sub eax, dword [ebp - 0x48]
cmp eax, edi
jae 0x413e1f
mov esi, dword [ebp + 0xc]
push 1
call fcn.00412508
pop ecx
push 0xd
jmp 0x412d17
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov edx, edi
mov byte [eax + edi], 0
call fcn.00485754
test eax, eax
jne 0x413e6a
cmp esi, ebx
je 0x413e6a
mov dword [0x5298bc], 1
call fcn.004147cc
mov dword [0x521074], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x521078], eax
pop ecx
mov eax, 0x529808
call fcn.00485786
pop ecx
mov esi, 0x92
jmp 0x413d1d
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret