Function at 0x411975
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 [0x517390]
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 0x4119c5
cmp edi, eax
jne 0x4119ec
cmp edi, eax
mov dword [0x517380], eax
mov dword [0x517384], eax
mov dword [0x517388], eax
mov dword [0x51738c], eax
mov dword [0x517390], edi
mov dword [0x517398], eax
je 0x412be2
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
xor ebx, ebx
xor esi, esi
call fcn.0040fb9b
mov esi, edi
call fcn.0040fd3a
mov byte [ebp - 0x4c], al
call fcn.0040fc3d
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.00413a15
add esp, 0x20
call fcn.0041189f
mov dword [ebp - 0x78], eax
call fcn.0041123a
xor ebx, ebx
test al, 0x4e
mov dword [ebp - 0x5c], ebx
je 0x411a52
mov dword [ebp - 0x5c], 1
movzx eax, al
shr eax, 5
and eax, 1
mov dword [ebp - 0x64], eax
call fcn.00411263
push ebx
mov dword [ebp - 0x6c], eax
call fcn.00411276
cmp dword [0x517398], ebx
pop ecx
je 0x411a8b
mov eax, dword [ebp + 8]
call fcn.004757d4
mov dword [0x517398], ebx
push 0x77
pop eax
jmp 0x412be4
cmp dword [0x517394], ebx
je 0x411abf
cmp dword [0x50eb4c], ebx
jl 0x411abf
cmp dword [0x50eb50], ebx
jle 0x411abf
call fcn.0041353a
cmp dword [0x50eb4c], eax
jne 0x411abf
mov eax, dword [0x50eb50]
cmp eax, dword [ebp - 0x38]
jne 0x411abf
xor edi, edi
inc edi
jmp 0x411ac1
xor edi, edi
cmp dword [ebp + 8], ebx
je 0x412be2
cmp dword [ebp - 0x14], ebx
je 0x412be2
cmp dword [ebp - 0x28], ebx
je 0x412be2
cmp edi, ebx
jne 0x411b10
or dword [0x50eb4c], 0xffffffff
or dword [0x50eb50], 0xffffffff
mov ecx, 0x5172e0
mov eax, ecx
mov dword [0x517394], ebx
call fcn.00475873
test eax, eax
jne 0x411b10
push 0x50
push ebx
push ecx
call fcn.004a7110
add esp, 0xc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c05c
mov eax, dword [ebp - 0x28]
inc eax
push eax
xor esi, esi
push esi
push dword [ebp + 8]
call fcn.004a7110
add esp, 0xc
cmp edi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
je 0x411bd1
xor ecx, ecx
xor edi, edi
cmp byte [0x5172e0], cl
je 0x411b76
mov esi, dword [ebp + 8]
sub esi, 0x5172e0
cmp ecx, dword [0x50eb50]
jge 0x411b76
cmp ecx, dword [ebp - 0x28]
jge 0x411b76
inc dword [ebp - 4]
lea eax, [ecx + 0x5172e0]
mov dl, byte [eax]
inc ecx
mov byte [esi + eax], dl
cmp byte [ecx + 0x5172e0], 0
jne 0x411b51
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov ebx, ecx
sub ebx, eax
mov dword [ebp - 8], ecx
jns 0x411b87
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, ecx
jle 0x411b90
mov esi, ecx
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push edi
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040a889
or dword [0x50eb4c], 0xffffffff
or dword [0x50eb50], 0xffffffff
add esp, 0x14
push 0x50
push edi
push 0x5172e0
mov dword [0x517394], edi
call fcn.004a7110
add esp, 0xc
and dword [ebp - 0x68], 0
call fcn.00498efc
mov dword [ebp - 0x74], eax
call fcn.0040a1b9
test eax, eax
mov dword [ebp - 0x44], eax
je 0x4128bb
call fcn.00498efc
mov dword [ebp - 0x74], eax
call fcn.0040a25d
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
push 0x1b
pop esi
cmp ebx, esi
je 0x412a83
cmp ebx, 0xd
je 0x4127ba
push 0xa
pop edi
cmp ebx, edi
je 0x4127ba
cmp ebx, 8
je 0x411d29
cmp ebx, 0xe0
je 0x411e2c
xor eax, eax
cmp ebx, eax
jne 0x41254d
call fcn.0040a25d
mov ebx, eax
cmp ebx, 0x4b
jg 0x411cc6
je 0x411cbd
cmp ebx, 0x44
jg 0x411c93
cmp ebx, 0x43
jge 0x4124e5
cmp ebx, 0x3b
jl 0x4128bb
cmp ebx, 0x40
jle 0x411c7a
cmp ebx, 0x41
je 0x4123ed
cmp ebx, 0x42
jne 0x4128bb
mov esi, dword [ebp + 0xc]
call fcn.00411938
cmp eax, 1
jne 0x4124e5
mov dword [ebp - 0x18], edi
jmp 0x411bfd
sub ebx, 0x47
je 0x411cb4
dec ebx
je 0x411cab
dec ebx
jne 0x4128bb
mov dword [ebp - 0x18], 0x39
jmp 0x411d1f
mov dword [ebp - 0x18], 0x38
jmp 0x411d1f
mov dword [ebp - 0x18], 0x37
jmp 0x411d1f
mov dword [ebp - 0x18], 0x34
jmp 0x411d1f
sub ebx, 0x4c
je 0x411d18
dec ebx
je 0x411d0f
dec ebx
dec ebx
je 0x411d06
dec ebx
je 0x411cfd
dec ebx
je 0x411cf4
dec ebx
je 0x411ceb
dec ebx
jne 0x4128bb
mov dword [ebp - 0x18], 0x2e
jmp 0x411d1f
mov dword [ebp - 0x18], 0x30
jmp 0x411d1f
mov dword [ebp - 0x18], 0x33
jmp 0x411d1f
mov dword [ebp - 0x18], 0x32
jmp 0x411d1f
mov dword [ebp - 0x18], 0x31
jmp 0x411d1f
mov dword [ebp - 0x18], 0x36
jmp 0x411d1f
mov dword [ebp - 0x18], 0x35
call fcn.0041cef9
jmp 0x411bfd
cmp dword [ebp - 8], 0
jle 0x4128bb
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
je 0x411d65
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.00410f52
pop ecx
pop ecx
mov eax, esi
call fcn.004106dc
call fcn.00411110
test eax, eax
jne 0x4128bb
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412be9
mov ebx, dword [ebp + 8]
add esp, 0x10
dec dword [ebp - 8]
mov eax, dword [ebp - 8]
call fcn.004761d8
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.0040c05c
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 0x411dd5
test esi, esi
jle 0x411dd5
mov esi, ecx
jmp 0x411dd6
dec edi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp edi, ecx
jne 0x411de7
mov edi, 0xffffff22
test esi, esi
jge 0x411ded
xor esi, esi
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x411df8
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub ebx, esi
push ebx
add esi, eax
push esi
call fcn.0040a889
add esp, 0x14
cmp edi, 0xffffff22
je 0x4128bb
push dword [ebp - 0x10]
push edi
jmp 0x41278f
call fcn.0040a25d
mov ebx, eax
cmp ebx, 0x86
jg 0x4128bb
cmp ebx, 0x85
jge 0x412372
cmp ebx, 0x4d
jg 0x412104
je 0x41200b
sub eax, 0x47
je 0x411f69
dec eax
je 0x411f2b
dec eax
je 0x411f13
dec eax
dec eax
jne 0x4128bb
xor esi, esi
cmp dword [ebp - 4], esi
jne 0x411ea1
mov eax, dword [ebp + 0xc]
call fcn.004110b9
test eax, eax
je 0x411ea1
cmp dword [ebp - 0x2c], esi
jle 0x411ea1
dec dword [ebp - 0x2c]
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
jmp 0x4128b1
cmp dword [ebp - 8], esi
jle 0x4128bb
push dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412be9
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040c05c
mov edi, dword [ebp - 0xc]
dec dword [ebp - 8]
cmp dword [ebp - 0x44], edi
jg 0x411f05
mov ebx, dword [ebp - 8]
test ebx, ebx
jge 0x411ede
xor ebx, ebx
mov eax, dword [ebp - 0x14]
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x411eec
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push edi
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x411e0f
push 0
push 0
call fcn.0041cffe
jmp 0x412794
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x40]
xor edi, edi
call fcn.004136c5
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x1c], eax
jmp 0x411e94
mov esi, dword [ebp + 0xc]
xor ebx, ebx
inc ebx
push ebx
call fcn.0040fdf0
test eax, eax
pop ecx
je 0x411f61
mov eax, esi
call fcn.0041106d
test eax, eax
jne 0x411f61
cmp dword [ebp - 4], eax
je 0x412a9d
push 0
push str.IllegalKey.wav
call fcn.004738e6
jmp 0x412794
dec dword [ebp - 0x1c]
jmp 0x411e94
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412be9
xor edi, edi
add esp, 0x10
cmp dword [ebp - 4], edi
jg 0x411ffb
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
jne 0x411e94
call fcn.0040fc64
cmp dword [ebp - 0x28], eax
jl 0x411e94
mov eax, dword [ebp + 8]
or ecx, 0xffffffff
call fcn.004136fd
push dword [ebp + 8]
call fcn.004a63c0
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], edi
jle 0x411fc4
mov esi, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
push edi
push esi
push dword [ebp + 8]
call fcn.0040a889
add esp, 0x14
cmp dword [ebp - 0xc], 0xffffff22
je 0x411e94
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
pop ecx
pop ecx
jmp 0x411e94
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 4]
mov dword [ebp - 8], edi
jle 0x411fc4
mov esi, dword [ebp - 4]
jmp 0x411fc4
mov edi, dword [ebp - 4]
test edi, edi
jne 0x412026
mov eax, dword [ebp + 0xc]
call fcn.004110b9
test eax, eax
je 0x412026
inc dword [ebp - 0x2c]
jmp 0x411e94
cmp dword [ebp - 8], edi
jge 0x412090
push dword [ebp - 0x20]
and dword [ebp - 0x44], 0
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412be9
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040c05c
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 0x412086
mov ebx, dword [ebp - 8]
sub ebx, eax
jns 0x412067
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, edi
jle 0x412070
mov esi, edi
push dword [ebp - 0x10]
push ecx
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x4120f7
call fcn.0041d068
jmp 0x4128bb
test edi, edi
jg 0x4128bb
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
jne 0x4128bb
call fcn.0040fc64
cmp dword [ebp - 0x28], eax
jl 0x4128bb
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.004136fd
push edi
call fcn.004a63c0
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x4120db
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x4120e4
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
push 0
sub ebx, esi
push ebx
add esi, edi
push esi
call fcn.0040a889
add esp, 0x14
jmp 0x4128bb
mov eax, ebx
sub eax, 0x4f
je 0x4122c1
dec eax
je 0x412250
dec eax
je 0x412238
dec eax
dec eax
jne 0x4128bb
xor ebx, ebx
cmp dword [ebp - 8], ebx
jl 0x411e94
mov edi, dword [ebp - 4]
cmp edi, ebx
jle 0x411e94
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
je 0x41216b
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.00410f52
pop ecx
pop ecx
mov eax, esi
call fcn.004106dc
call fcn.00411110
test eax, eax
jne 0x411e94
cmp dword [ebp - 8], edi
jge 0x411e94
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x58]
push 2
call fcn.00412be9
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
add esp, 0x10
call fcn.004761d8
dec edi
cmp dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov byte [edi + ebx], 0
jl 0x4121b5
cmp dword [ebp - 8], 0
jle 0x4121b5
dec dword [ebp - 8]
mov edi, 0xffffff22
xor ebx, ebx
lea esi, [ebp - 0x18]
mov dword [ebp - 0x18], edi
call fcn.0040c05c
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 0x4121ed
test ebx, ebx
jle 0x4121ed
mov ebx, ecx
jmp 0x4121f0
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp dword [ebp - 0x18], ecx
jne 0x412200
mov dword [ebp - 0x18], edi
test ebx, ebx
jge 0x412206
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x412211
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040a889
add esp, 0x14
cmp dword [ebp - 0x18], edi
jmp 0x412783
mov esi, dword [ebp + 0xc]
xor ebx, ebx
lea edi, [ebp - 0x40]
call fcn.004136c5
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], eax
jmp 0x411e94
mov esi, dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.0040fdf0
test eax, eax
pop ecx
je 0x4122b9
mov eax, esi
call fcn.0041106d
test eax, eax
jne 0x4122b9
cmp dword [ebp - 4], eax
jne 0x411f50
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], al
call fcn.00475851
test eax, eax
jne 0x4122b2
test esi, esi
je 0x4122b2
mov dword [0x517394], 1
call fcn.0041353a
mov dword [0x50eb4c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x50eb50], eax
pop ecx
mov eax, 0x5172e0
call fcn.00475883
pop ecx
push 0x28
jmp 0x412adb
inc dword [ebp - 0x1c]
jmp 0x411e94
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412be9
mov eax, dword [ebp - 4]
add esp, 0x10
test eax, eax
jg 0x412347
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
jne 0x411e94
call fcn.0040fc64
cmp dword [ebp - 0x28], eax
jl 0x411e94
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.004136fd
push edi
call fcn.004a63c0
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x41231e
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x412327
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
sub ebx, esi
add esi, edi
push 0
push ebx
push esi
call fcn.0040a889
add esp, 0x14
jmp 0x411e94
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 8], eax
jns 0x412355
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x41235e
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bfb4
mov eax, dword [ebp + 8]
sub ebx, esi
add esi, eax
jmp 0x412336
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x7a]
call fcn.0040fe72
test eax, eax
je 0x4128bb
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push 1
call fcn.00412be9
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
add esp, 0x10
mov edx, edi
mov byte [eax + edi], 0
call fcn.00475851
test eax, eax
jne 0x4123db
test esi, esi
je 0x4123db
mov dword [0x517394], 1
call fcn.0041353a
mov dword [0x50eb4c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x50eb50], eax
pop ecx
mov eax, 0x5172e0
call fcn.00475883
pop ecx
push 1
mov eax, esi
call fcn.0040fedc
pop ecx
lea eax, [ebx - 0xb]
jmp 0x412be4
cmp dword [ebp - 4], 0
jle 0x412487
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
or ecx, 0xffffffff
call fcn.004136fd
and dword [ebp - 0x18], 0
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c05c
mov edi, dword [ebp - 0xc]
jmp 0x412432
push 1
push dword [ebp - 0x4c]
call fcn.0041cffe
and dword [ebp - 0x18], 0
pop ecx
pop ecx
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c05c
cmp dword [ebp - 0x18], edi
jg 0x412418
push dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 8], ebx
call fcn.004a63c0
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
jle 0x41244e
mov esi, eax
push dword [ebp - 0x10]
push edi
call fcn.0040bfb4
push esi
push dword [ebp + 8]
call fcn.0040aa8a
add esp, 0x10
cmp edi, 0xffffff22
je 0x412476
push dword [ebp - 0x10]
push edi
call fcn.0040bfb4
pop ecx
pop ecx
mov eax, dword [ebp + 8]
call fcn.004757d4
mov dword [ebp - 4], ebx
push ebx
jmp 0x411e96
call fcn.00498efc
mov ecx, eax
mov eax, dword [0x517388]
sub ecx, eax
cmp ecx, 0x3e8
jb 0x4124a5
test eax, eax
jne 0x412ade
call fcn.00498efc
mov esi, dword [ebp + 0xc]
mov dword [0x517388], eax
call fcn.0041353a
test eax, eax
jne 0x412af4
mov eax, esi
call fcn.00410eae
cmp eax, 3
jl 0x412af4
cmp dword [0x51738c], 1
jl 0x412b14
push 0
push 0
jmp 0x4128ae
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x3a]
call fcn.0040fe72
test eax, eax
je 0x4128bb
push 0
push dword [ebp - 0x20]
xor edi, edi
push dword [ebp - 0x24]
inc edi
push edi
call fcn.00412be9
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.00475851
test eax, eax
jne 0x412b49
test esi, esi
je 0x412b49
cmp ebx, 0x42
jne 0x412b20
call fcn.00411938
cmp eax, 2
jne 0x412b20
mov dword [0x517398], edi
jmp 0x412b8d
cmp ebx, 0x20
jl 0x41279b
cmp ebx, 0x7e
jg 0x4128bb
cmp ebx, 0x3d
mov dword [ebp - 0x68], 1
jne 0x412577
cmp dword [ebp - 0x5c], eax
je 0x412577
mov dword [ebp - 0x18], 0x2b
cmp dword [ebp - 0x48], eax
mov ebx, dword [ebp - 4]
je 0x412583
cmp ebx, eax
jne 0x41258b
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edi
jmp 0x41258e
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x64], eax
je 0x41263d
mov al, byte [ebp - 0x18]
call fcn.004767fe
test eax, eax
jne 0x4125ca
push dword [ebp - 0x18]
call fcn.0047582b
test eax, eax
pop ecx
je 0x4128bb
mov edx, dword [ebp + 8]
mov byte [ebx + edx], 0
call fcn.00475851
test eax, eax
je 0x4128bb
jmp 0x41260a
xor esi, esi
test ebx, ebx
jle 0x41260a
mov eax, dword [ebp + 8]
movsx eax, byte [esi + eax]
push eax
call fcn.0047582b
test eax, eax
pop ecx
je 0x4125ff
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
mov eax, esi
call fcn.004761d8
cmp dword [ebp - 8], esi
jle 0x4125fb
dec dword [ebp - 8]
dec dword [ebp - 4]
dec esi
mov ebx, dword [ebp - 4]
inc esi
cmp esi, ebx
jl 0x4125d0
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 8], 0
jle 0x41263d
mov eax, dword [ebp - 0x38]
dec eax
cmp dword [ebp - 8], eax
jl 0x41263d
cmp ebx, dword [ebp - 8]
jl 0x41263d
sub edi, dword [ebp - 0x48]
mov eax, ebx
imul eax, eax, 0x25
cmp edi, eax
jae 0x41263d
mov esi, dword [ebp + 0xc]
push 1
call fcn.00411276
pop ecx
push 0xd
pop esi
call fcn.0040a262
cmp ebx, dword [ebp - 0x28]
jge 0x41267a
call fcn.0040a1b9
test eax, eax
jne 0x41267a
xor edx, edx
cmp dword [ebp - 0x6c], edx
je 0x412656
cmp ebx, edx
je 0x41267a
push dword [ebp - 0x18]
call fcn.00476820
test eax, eax
pop ecx
push edx
je 0x41266a
push edx
push dword [ebp - 0x20]
jmp 0x412670
push dword [ebp - 0x20]
push dword [ebp - 0x60]
push 5
call fcn.00412be9
add esp, 0x10
mov esi, dword [ebp + 0xc]
call fcn.00411110
test eax, eax
je 0x4126ac
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.00410f52
pop ecx
pop ecx
mov eax, esi
call fcn.004106dc
call fcn.00411110
test eax, eax
jne 0x4128bb
cmp ebx, dword [ebp - 0x28]
jge 0x4128bb
push dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 8]
call fcn.004765d4
mov edi, dword [ebp - 8]
inc edi
inc dword [ebp - 4]
cmp edi, dword [ebp - 0x28]
pop ecx
mov dword [ebp - 8], edi
jl 0x4126f1
call fcn.004118f4
test eax, eax
je 0x4126f1
push 0xd
pop esi
call fcn.0040a262
cmp edi, dword [ebp - 4]
mov dword [ebp - 0x18], 0xffffff22
jne 0x412707
mov ecx, dword [ebp - 0xc]
mov esi, edi
sub esi, dword [ebp - 0x14]
jmp 0x41274c
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c05c
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 0x412737
mov eax, ecx
sub eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
lea esi, [eax + edi - 1]
jmp 0x41274c
mov esi, ecx
sub esi, dword [ebp - 0x18]
add ebx, ecx
add esi, edi
cmp dword [ebp - 0x18], ebx
jne 0x41274c
mov dword [ebp - 0x18], 0xffffff22
test esi, esi
jge 0x412752
xor esi, esi
mov eax, dword [ebp - 0x14]
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x412760
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push ecx
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a889
add esp, 0x14
cmp dword [ebp - 0x18], 0xffffff22
je 0x4128bb
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call fcn.0040bfb4
pop ecx
pop ecx
jmp 0x4128bb
cmp ebx, eax
jle 0x4128bb
mov esi, dword [ebp + 0xc]
call fcn.0040fd90
test eax, eax
je 0x4128bb
mov eax, ebx
jmp 0x412be4
mov edi, dword [ebp - 4]
mov ebx, dword [ebp + 8]
xor eax, eax
cmp dword [ebp - 0x64], eax
mov byte [edi + ebx], 0
je 0x4127e4
cmp edi, eax
jne 0x4127e4
cmp dword [ebp - 0x68], eax
jne 0x4127e4
cmp dword [ebp - 0x6c], eax
je 0x4127e4
mov esi, dword [ebp + 0xc]
push 1
call fcn.00411276
pop ecx
mov eax, ebx
call fcn.00475873
test eax, eax
jne 0x41282a
mov edx, ebx
call fcn.00475851
test eax, eax
je 0x41282a
mov esi, dword [ebp + 0xc]
xor eax, eax
or ecx, 0xffffffff
call fcn.00413799
mov eax, ebx
call fcn.004757d4
mov eax, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
call fcn.004106dc
push esi
push esi
push dword [ebp - 0x70]
push 2
jmp 0x4128b3
mov eax, ebx
call fcn.00475873
test eax, eax
je 0x412b75
call fcn.00498efc
sub eax, dword [0x517380]
cmp eax, 0x190
jae 0x412b62
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.004136c5
call fcn.00498efc
mov dword [0x517380], eax
or eax, 0xffffffff
call fcn.004138f8
test eax, eax
je 0x412b5a
mov eax, esi
call fcn.00410eae
cmp eax, 3
jl 0x412b5a
xor eax, eax
cmp dword [ebp - 0x44], eax
jne 0x41289f
cmp dword [ebp - 0x18], eax
je 0x412b5a
cmp dword [0x517384], 2
jl 0x412b8d
push eax
push eax
push dword [ebp - 0x50]
push 1
call fcn.00412be9
add esp, 0x10
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x412a1f
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x412971
add dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.00410f52
pop ecx
pop ecx
mov eax, esi
call fcn.004106dc
call fcn.00411110
test eax, eax
jne 0x41296d
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c05c
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040c05c
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 0x41292a
mov edi, 0xffffff22
test esi, esi
jge 0x412930
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x41293e
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a889
add esp, 0x14
cmp edi, 0xffffff22
je 0x41296d
push dword [ebp - 0x10]
push edi
call fcn.0040bfb4
pop ecx
pop ecx
and dword [ebp - 0x2c], 0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x412a1f
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.00410f52
pop ecx
pop ecx
mov eax, esi
call fcn.004106dc
call fcn.00411110
test eax, eax
jne 0x412a1b
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c05c
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040c05c
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 0x4129d8
mov edi, 0xffffff22
test esi, esi
jge 0x4129de
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x4129ec
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040bfb4
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a889
add esp, 0x14
cmp edi, 0xffffff22
je 0x412a1b
push dword [ebp - 0x10]
push edi
call fcn.0040bfb4
pop ecx
pop ecx
and dword [ebp - 0x1c], 0
call fcn.0040a5f9
test eax, eax
je 0x412a38
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.0040a25d
mov esi, dword [ebp + 0xc]
push 0
mov eax, esi
call fcn.0040fedc
xor ebx, ebx
cmp dword [ebp - 0x78], ebx
pop ecx
jbe 0x412a5d
call fcn.00498efc
sub eax, dword [ebp - 0x74]
cmp eax, dword [ebp - 0x78]
ja 0x412b94
push 0x76
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x412a76
mov dword [0x51738c], ebx
mov dword [0x517388], ebx
push 0x19
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x411bdd
mov eax, dword [ebp + 8]
call fcn.004757d4
mov eax, dword [ebp + 0xc]
push 1
call fcn.0040fedc
pop ecx
mov eax, esi
jmp 0x412be4
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], 0
call fcn.00475851
test eax, eax
jne 0x412ad9
test esi, esi
je 0x412ad9
mov dword [0x517394], ebx
call fcn.0041353a
mov dword [0x50eb4c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x50eb50], eax
pop ecx
mov eax, 0x5172e0
call fcn.00475883
pop ecx
push 0x26
pop esi
jmp 0x412a8b
call fcn.00498efc
and dword [0x51738c], 0
mov esi, dword [ebp + 0xc]
mov dword [0x517388], eax
jmp 0x412afa
inc dword [0x51738c]
call fcn.0041353a
test eax, eax
jle 0x412b14
push 0
push 0
push dword [ebp - 0x54]
push 1
call fcn.00412be9
add esp, 0x10
mov eax, dword [ebp + 8]
call fcn.004757d4
push 0x76
jmp 0x412adb
mov dword [0x517394], edi
call fcn.0041353a
push dword [ebp + 8]
mov dword [0x50eb4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x50eb50], eax
pop ecx
mov eax, 0x5172e0
call fcn.00475883
pop ecx
push edi
mov eax, esi
call fcn.0040fedc
pop ecx
lea eax, [ebx + 0x35]
jmp 0x412be4
inc dword [0x517384]
jmp 0x412b8d
call fcn.00498efc
and dword [0x517384], 0
mov dword [0x517380], eax
jmp 0x412b8d
mov eax, dword [ebp - 0x44]
imul edi, edi, 0x25
sub eax, dword [ebp - 0x48]
cmp eax, edi
jae 0x412b8d
mov esi, dword [ebp + 0xc]
push 1
call fcn.00411276
pop ecx
push 0xd
jmp 0x411a85
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov edx, edi
mov byte [eax + edi], 0
call fcn.00475851
test eax, eax
jne 0x412bd8
cmp esi, ebx
je 0x412bd8
mov dword [0x517394], 1
call fcn.0041353a
mov dword [0x50eb4c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x50eb50], eax
pop ecx
mov eax, 0x5172e0
call fcn.00475883
pop ecx
mov esi, 0x92
jmp 0x412a8b
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret