Function at 0x41145d
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 [0x51d18c]
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 0x4114ad
cmp edi, eax
jne 0x4114d4
cmp edi, eax
mov dword [0x51d0dc], eax
mov dword [0x51d180], eax
mov dword [0x51d184], eax
mov dword [0x51d188], eax
mov dword [0x51d18c], edi
mov dword [0x51d194], eax
je 0x4126e7
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
xor ebx, ebx
xor esi, esi
call fcn.0040f683
mov esi, edi
call fcn.0040f822
mov byte [ebp - 0x4c], al
call fcn.0040f725
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.0041351a
add esp, 0x20
call fcn.00411387
mov dword [ebp - 0x78], eax
call fcn.00410d22
xor ebx, ebx
test al, 0x4e
mov dword [ebp - 0x5c], ebx
je 0x41153a
mov dword [ebp - 0x5c], 1
movzx eax, al
shr eax, 5
and eax, 1
mov dword [ebp - 0x64], eax
call fcn.00410d4b
push ebx
mov dword [ebp - 0x6c], eax
call fcn.00410d5e
cmp dword [0x51d194], ebx
pop ecx
je 0x411573
mov eax, dword [ebp + 8]
call fcn.00476abd
mov dword [0x51d194], ebx
push 0x77
pop eax
jmp 0x4126e9
cmp dword [0x51d190], ebx
je 0x4115a7
cmp dword [0x514b3c], ebx
jl 0x4115a7
cmp dword [0x514b40], ebx
jle 0x4115a7
call fcn.0041303f
cmp dword [0x514b3c], eax
jne 0x4115a7
mov eax, dword [0x514b40]
cmp eax, dword [ebp - 0x38]
jne 0x4115a7
xor edi, edi
inc edi
jmp 0x4115a9
xor edi, edi
cmp dword [ebp + 8], ebx
je 0x4126e7
cmp dword [ebp - 0x14], ebx
je 0x4126e7
cmp dword [ebp - 0x28], ebx
je 0x4126e7
cmp edi, ebx
jne 0x4115f8
or dword [0x514b3c], 0xffffffff
or dword [0x514b40], 0xffffffff
mov ecx, 0x51d0e0
mov eax, ecx
mov dword [0x51d190], ebx
call fcn.00476b5c
test eax, eax
jne 0x4115f8
push 0x50
push ebx
push ecx
call fcn.004ab5d0
add esp, 0xc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c241
mov eax, dword [ebp - 0x28]
inc eax
push eax
xor esi, esi
push esi
push dword [ebp + 8]
call fcn.004ab5d0
add esp, 0xc
cmp edi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
je 0x4116b9
xor ecx, ecx
xor edi, edi
cmp byte [0x51d0e0], cl
je 0x41165e
mov esi, dword [ebp + 8]
sub esi, 0x51d0e0
cmp ecx, dword [0x514b40]
jge 0x41165e
cmp ecx, dword [ebp - 0x28]
jge 0x41165e
inc dword [ebp - 4]
lea eax, [ecx + 0x51d0e0]
mov dl, byte [eax]
inc ecx
mov byte [esi + eax], dl
cmp byte [ecx + 0x51d0e0], 0
jne 0x411639
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov ebx, ecx
sub ebx, eax
mov dword [ebp - 8], ecx
jns 0x41166f
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, ecx
jle 0x411678
mov esi, ecx
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
mov eax, dword [ebp + 8]
push edi
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040ace5
or dword [0x514b3c], 0xffffffff
or dword [0x514b40], 0xffffffff
add esp, 0x14
push 0x50
push edi
push 0x51d0e0
mov dword [0x51d190], edi
call fcn.004ab5d0
add esp, 0xc
and dword [ebp - 0x68], 0
call fcn.0049c471
mov dword [ebp - 0x74], eax
call fcn.0040a61f
test eax, eax
mov dword [ebp - 0x44], eax
je 0x4123c0
call fcn.0049c471
mov dword [ebp - 0x74], eax
call fcn.0040a6bc
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
push 0x1b
pop esi
cmp ebx, esi
je 0x412588
cmp ebx, 0xd
je 0x4122bf
push 0xa
pop edi
cmp ebx, edi
je 0x4122bf
cmp ebx, 8
je 0x41182e
cmp ebx, 0xe0
je 0x411931
xor eax, eax
cmp ebx, eax
jne 0x412052
call fcn.0040a6bc
mov ebx, eax
cmp ebx, 0x4b
jg 0x4117be
je 0x4117b2
cmp ebx, 0x44
jg 0x41177f
cmp ebx, 0x43
jge 0x411fea
cmp ebx, 0x3b
jl 0x4123c0
cmp ebx, 0x40
jle 0x411766
cmp ebx, 0x41
je 0x411ef2
cmp ebx, 0x42
jne 0x4123c0
mov esi, dword [ebp + 0xc]
call fcn.00411420
cmp eax, 1
jne 0x411fea
mov dword [ebp - 0x18], edi
jmp 0x4116e5
sub ebx, 0x47
je 0x4117a6
dec ebx
je 0x41179a
dec ebx
jne 0x4123c0
mov dword [ebp - 0x18], 0x39
jmp 0x4116e5
mov dword [ebp - 0x18], 0x38
jmp 0x4116e5
mov dword [ebp - 0x18], 0x37
jmp 0x4116e5
mov dword [ebp - 0x18], 0x34
jmp 0x4116e5
sub ebx, 0x4c
je 0x411822
dec ebx
je 0x411816
dec ebx
dec ebx
je 0x41180a
dec ebx
je 0x4117fe
dec ebx
je 0x4117f2
dec ebx
je 0x4117e6
dec ebx
jne 0x4123c0
mov dword [ebp - 0x18], 0x2e
jmp 0x4116e5
mov dword [ebp - 0x18], 0x30
jmp 0x4116e5
mov dword [ebp - 0x18], 0x33
jmp 0x4116e5
mov dword [ebp - 0x18], 0x32
jmp 0x4116e5
mov dword [ebp - 0x18], 0x31
jmp 0x4116e5
mov dword [ebp - 0x18], 0x36
jmp 0x4116e5
mov dword [ebp - 0x18], 0x35
jmp 0x4116e5
cmp dword [ebp - 8], 0
jle 0x4123c0
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
je 0x41186a
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.00410a3a
pop ecx
pop ecx
mov eax, esi
call fcn.004101c4
call fcn.00410bf8
test eax, eax
jne 0x4123c0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004126ee
mov ebx, dword [ebp + 8]
add esp, 0x10
dec dword [ebp - 8]
mov eax, dword [ebp - 8]
call fcn.0047757f
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.0040c241
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 0x4118da
test esi, esi
jle 0x4118da
mov esi, ecx
jmp 0x4118db
dec edi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp edi, ecx
jne 0x4118ec
mov edi, 0xffffff22
test esi, esi
jge 0x4118f2
xor esi, esi
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x4118fd
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub ebx, esi
push ebx
add esi, eax
push esi
call fcn.0040ace5
add esp, 0x14
cmp edi, 0xffffff22
je 0x4123c0
push dword [ebp - 0x10]
push edi
jmp 0x412294
call fcn.0040a6bc
mov ebx, eax
cmp ebx, 0x86
jg 0x4123c0
cmp ebx, 0x85
jge 0x411e77
cmp ebx, 0x4d
jg 0x411c09
je 0x411b10
sub eax, 0x47
je 0x411a6e
dec eax
je 0x411a30
dec eax
je 0x411a18
dec eax
dec eax
jne 0x4123c0
xor esi, esi
cmp dword [ebp - 4], esi
jne 0x4119a6
mov eax, dword [ebp + 0xc]
call fcn.00410ba1
test eax, eax
je 0x4119a6
cmp dword [ebp - 0x2c], esi
jle 0x4119a6
dec dword [ebp - 0x2c]
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
jmp 0x4123b6
cmp dword [ebp - 8], esi
jle 0x4123c0
push dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004126ee
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040c241
mov edi, dword [ebp - 0xc]
dec dword [ebp - 8]
cmp dword [ebp - 0x44], edi
jg 0x411a0a
mov ebx, dword [ebp - 8]
test ebx, ebx
jge 0x4119e3
xor ebx, ebx
mov eax, dword [ebp - 0x14]
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x4119f1
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push edi
call fcn.0040c199
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x411914
push 0
push 0
call fcn.0042072e
jmp 0x412299
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x40]
xor edi, edi
call fcn.004131ca
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x1c], eax
jmp 0x411999
mov esi, dword [ebp + 0xc]
xor ebx, ebx
inc ebx
push ebx
call fcn.0040f8d8
test eax, eax
pop ecx
je 0x411a66
mov eax, esi
call fcn.00410b55
test eax, eax
jne 0x411a66
cmp dword [ebp - 4], eax
je 0x4125a2
push 0
push str.IllegalKey.wav
call fcn.00474f4f
jmp 0x412299
dec dword [ebp - 0x1c]
jmp 0x411999
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004126ee
xor edi, edi
add esp, 0x10
cmp dword [ebp - 4], edi
jg 0x411b00
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
jne 0x411999
call fcn.0040f74c
cmp dword [ebp - 0x28], eax
jl 0x411999
mov eax, dword [ebp + 8]
or ecx, 0xffffffff
call fcn.00413202
push dword [ebp + 8]
call fcn.004aa880
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], edi
jle 0x411ac9
mov esi, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
push edi
push esi
push dword [ebp + 8]
call fcn.0040ace5
add esp, 0x14
cmp dword [ebp - 0xc], 0xffffff22
je 0x411999
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
pop ecx
pop ecx
jmp 0x411999
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 4]
mov dword [ebp - 8], edi
jle 0x411ac9
mov esi, dword [ebp - 4]
jmp 0x411ac9
mov edi, dword [ebp - 4]
test edi, edi
jne 0x411b2b
mov eax, dword [ebp + 0xc]
call fcn.00410ba1
test eax, eax
je 0x411b2b
inc dword [ebp - 0x2c]
jmp 0x411999
cmp dword [ebp - 8], edi
jge 0x411b95
push dword [ebp - 0x20]
and dword [ebp - 0x44], 0
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004126ee
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040c241
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 0x411b8b
mov ebx, dword [ebp - 8]
sub ebx, eax
jns 0x411b6c
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, edi
jle 0x411b75
mov esi, edi
push dword [ebp - 0x10]
push ecx
call fcn.0040c199
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x411bfc
call fcn.00420798
jmp 0x4123c0
test edi, edi
jg 0x4123c0
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
jne 0x4123c0
call fcn.0040f74c
cmp dword [ebp - 0x28], eax
jl 0x4123c0
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.00413202
push edi
call fcn.004aa880
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x411be0
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411be9
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
push 0
sub ebx, esi
push ebx
add esi, edi
push esi
call fcn.0040ace5
add esp, 0x14
jmp 0x4123c0
mov eax, ebx
sub eax, 0x4f
je 0x411dc6
dec eax
je 0x411d55
dec eax
je 0x411d3d
dec eax
dec eax
jne 0x4123c0
xor ebx, ebx
cmp dword [ebp - 8], ebx
jl 0x411999
mov edi, dword [ebp - 4]
cmp edi, ebx
jle 0x411999
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
je 0x411c70
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.00410a3a
pop ecx
pop ecx
mov eax, esi
call fcn.004101c4
call fcn.00410bf8
test eax, eax
jne 0x411999
cmp dword [ebp - 8], edi
jge 0x411999
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x58]
push 2
call fcn.004126ee
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
add esp, 0x10
call fcn.0047757f
dec edi
cmp dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov byte [edi + ebx], 0
jl 0x411cba
cmp dword [ebp - 8], 0
jle 0x411cba
dec dword [ebp - 8]
mov edi, 0xffffff22
xor ebx, ebx
lea esi, [ebp - 0x18]
mov dword [ebp - 0x18], edi
call fcn.0040c241
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 0x411cf2
test ebx, ebx
jle 0x411cf2
mov ebx, ecx
jmp 0x411cf5
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp dword [ebp - 0x18], ecx
jne 0x411d05
mov dword [ebp - 0x18], edi
test ebx, ebx
jge 0x411d0b
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x411d16
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040ace5
add esp, 0x14
cmp dword [ebp - 0x18], edi
jmp 0x412288
mov esi, dword [ebp + 0xc]
xor ebx, ebx
lea edi, [ebp - 0x40]
call fcn.004131ca
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], eax
jmp 0x411999
mov esi, dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.0040f8d8
test eax, eax
pop ecx
je 0x411dbe
mov eax, esi
call fcn.00410b55
test eax, eax
jne 0x411dbe
cmp dword [ebp - 4], eax
jne 0x411a55
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], al
call fcn.00476b3a
test eax, eax
jne 0x411db7
test esi, esi
je 0x411db7
mov dword [0x51d190], 1
call fcn.0041303f
mov dword [0x514b3c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x514b40], eax
pop ecx
mov eax, 0x51d0e0
call fcn.00476b6c
pop ecx
push 0x28
jmp 0x4125e0
inc dword [ebp - 0x1c]
jmp 0x411999
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.004126ee
mov eax, dword [ebp - 4]
add esp, 0x10
test eax, eax
jg 0x411e4c
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
jne 0x411999
call fcn.0040f74c
cmp dword [ebp - 0x28], eax
jl 0x411999
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.00413202
push edi
call fcn.004aa880
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x411e23
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411e2c
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
sub ebx, esi
add esi, edi
push 0
push ebx
push esi
call fcn.0040ace5
add esp, 0x14
jmp 0x411999
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 8], eax
jns 0x411e5a
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411e63
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040c199
mov eax, dword [ebp + 8]
sub ebx, esi
add esi, eax
jmp 0x411e3b
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x7a]
call fcn.0040f95a
test eax, eax
je 0x4123c0
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push 1
call fcn.004126ee
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
add esp, 0x10
mov edx, edi
mov byte [eax + edi], 0
call fcn.00476b3a
test eax, eax
jne 0x411ee0
test esi, esi
je 0x411ee0
mov dword [0x51d190], 1
call fcn.0041303f
mov dword [0x514b3c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x514b40], eax
pop ecx
mov eax, 0x51d0e0
call fcn.00476b6c
pop ecx
push 1
mov eax, esi
call fcn.0040f9c4
pop ecx
lea eax, [ebx - 0xb]
jmp 0x4126e9
cmp dword [ebp - 4], 0
jle 0x411f8c
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
or ecx, 0xffffffff
call fcn.00413202
and dword [ebp - 0x18], 0
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c241
mov edi, dword [ebp - 0xc]
jmp 0x411f37
push 1
push dword [ebp - 0x4c]
call fcn.0042072e
and dword [ebp - 0x18], 0
pop ecx
pop ecx
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c241
cmp dword [ebp - 0x18], edi
jg 0x411f1d
push dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 8], ebx
call fcn.004aa880
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
jle 0x411f53
mov esi, eax
push dword [ebp - 0x10]
push edi
call fcn.0040c199
push esi
push dword [ebp + 8]
call fcn.0040aee6
add esp, 0x10
cmp edi, 0xffffff22
je 0x411f7b
push dword [ebp - 0x10]
push edi
call fcn.0040c199
pop ecx
pop ecx
mov eax, dword [ebp + 8]
call fcn.00476abd
mov dword [ebp - 4], ebx
push ebx
jmp 0x41199b
call fcn.0049c471
mov ecx, eax
mov eax, dword [0x51d184]
sub ecx, eax
cmp ecx, 0x3e8
jb 0x411faa
test eax, eax
jne 0x4125e3
call fcn.0049c471
mov esi, dword [ebp + 0xc]
mov dword [0x51d184], eax
call fcn.0041303f
test eax, eax
jne 0x4125f9
mov eax, esi
call fcn.00410996
cmp eax, 3
jl 0x4125f9
cmp dword [0x51d188], 1
jl 0x412619
push 0
push 0
jmp 0x4123b3
mov esi, dword [ebp + 0xc]
lea edi, [ebx - 0x3a]
call fcn.0040f95a
test eax, eax
je 0x4123c0
push 0
push dword [ebp - 0x20]
xor edi, edi
push dword [ebp - 0x24]
inc edi
push edi
call fcn.004126ee
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.00476b3a
test eax, eax
jne 0x41264e
test esi, esi
je 0x41264e
cmp ebx, 0x42
jne 0x412625
call fcn.00411420
cmp eax, 2
jne 0x412625
mov dword [0x51d194], edi
jmp 0x412692
cmp ebx, 0x20
jl 0x4122a0
cmp ebx, 0x7e
jg 0x4123c0
cmp ebx, 0x3d
mov dword [ebp - 0x68], 1
jne 0x41207c
cmp dword [ebp - 0x5c], eax
je 0x41207c
mov dword [ebp - 0x18], 0x2b
cmp dword [ebp - 0x48], eax
mov ebx, dword [ebp - 4]
je 0x412088
cmp ebx, eax
jne 0x412090
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edi
jmp 0x412093
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x64], eax
je 0x412142
mov al, byte [ebp - 0x18]
call fcn.00477ba5
test eax, eax
jne 0x4120cf
push dword [ebp - 0x18]
call fcn.00476b14
test eax, eax
pop ecx
je 0x4123c0
mov edx, dword [ebp + 8]
mov byte [ebx + edx], 0
call fcn.00476b3a
test eax, eax
je 0x4123c0
jmp 0x41210f
xor esi, esi
test ebx, ebx
jle 0x41210f
mov eax, dword [ebp + 8]
movsx eax, byte [esi + eax]
push eax
call fcn.00476b14
test eax, eax
pop ecx
je 0x412104
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
mov eax, esi
call fcn.0047757f
cmp dword [ebp - 8], esi
jle 0x412100
dec dword [ebp - 8]
dec dword [ebp - 4]
dec esi
mov ebx, dword [ebp - 4]
inc esi
cmp esi, ebx
jl 0x4120d5
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 8], 0
jle 0x412142
mov eax, dword [ebp - 0x38]
dec eax
cmp dword [ebp - 8], eax
jl 0x412142
cmp ebx, dword [ebp - 8]
jl 0x412142
sub edi, dword [ebp - 0x48]
mov eax, ebx
imul eax, eax, 0x25
cmp edi, eax
jae 0x412142
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410d5e
pop ecx
push 0xd
pop esi
call fcn.0040a6c1
cmp ebx, dword [ebp - 0x28]
jge 0x41217f
call fcn.0040a61f
test eax, eax
jne 0x41217f
xor edx, edx
cmp dword [ebp - 0x6c], edx
je 0x41215b
cmp ebx, edx
je 0x41217f
push dword [ebp - 0x18]
call fcn.00477bc7
test eax, eax
pop ecx
push edx
je 0x41216f
push edx
push dword [ebp - 0x20]
jmp 0x412175
push dword [ebp - 0x20]
push dword [ebp - 0x60]
push 5
call fcn.004126ee
add esp, 0x10
mov esi, dword [ebp + 0xc]
call fcn.00410bf8
test eax, eax
je 0x4121b1
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.00410a3a
pop ecx
pop ecx
mov eax, esi
call fcn.004101c4
call fcn.00410bf8
test eax, eax
jne 0x4123c0
cmp ebx, dword [ebp - 0x28]
jge 0x4123c0
push dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 8]
call fcn.0047797b
mov edi, dword [ebp - 8]
inc edi
inc dword [ebp - 4]
cmp edi, dword [ebp - 0x28]
pop ecx
mov dword [ebp - 8], edi
jl 0x4121f6
call fcn.004113dc
test eax, eax
je 0x4121f6
push 0xd
pop esi
call fcn.0040a6c1
cmp edi, dword [ebp - 4]
mov dword [ebp - 0x18], 0xffffff22
jne 0x41220c
mov ecx, dword [ebp - 0xc]
mov esi, edi
sub esi, dword [ebp - 0x14]
jmp 0x412251
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040c241
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 0x41223c
mov eax, ecx
sub eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
lea esi, [eax + edi - 1]
jmp 0x412251
mov esi, ecx
sub esi, dword [ebp - 0x18]
add ebx, ecx
add esi, edi
cmp dword [ebp - 0x18], ebx
jne 0x412251
mov dword [ebp - 0x18], 0xffffff22
test esi, esi
jge 0x412257
xor esi, esi
mov eax, dword [ebp - 0x14]
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x412265
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push ecx
call fcn.0040c199
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040ace5
add esp, 0x14
cmp dword [ebp - 0x18], 0xffffff22
je 0x4123c0
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call fcn.0040c199
pop ecx
pop ecx
jmp 0x4123c0
cmp ebx, eax
jle 0x4123c0
mov esi, dword [ebp + 0xc]
call fcn.0040f878
test eax, eax
je 0x4123c0
mov eax, ebx
jmp 0x4126e9
mov edi, dword [ebp - 4]
mov ebx, dword [ebp + 8]
xor eax, eax
cmp dword [ebp - 0x64], eax
mov byte [edi + ebx], 0
je 0x4122e9
cmp edi, eax
jne 0x4122e9
cmp dword [ebp - 0x68], eax
jne 0x4122e9
cmp dword [ebp - 0x6c], eax
je 0x4122e9
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410d5e
pop ecx
mov eax, ebx
call fcn.00476b5c
test eax, eax
jne 0x41232f
mov edx, ebx
call fcn.00476b3a
test eax, eax
je 0x41232f
mov esi, dword [ebp + 0xc]
xor eax, eax
or ecx, 0xffffffff
call fcn.0041329e
mov eax, ebx
call fcn.00476abd
mov eax, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
call fcn.004101c4
push esi
push esi
push dword [ebp - 0x70]
push 2
jmp 0x4123b8
mov eax, ebx
call fcn.00476b5c
test eax, eax
je 0x41267a
call fcn.0049c471
sub eax, dword [0x51d0dc]
cmp eax, 0x190
jae 0x412667
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.004131ca
call fcn.0049c471
mov dword [0x51d0dc], eax
or eax, 0xffffffff
call fcn.004133fd
test eax, eax
je 0x41265f
mov eax, esi
call fcn.00410996
cmp eax, 3
jl 0x41265f
xor eax, eax
cmp dword [ebp - 0x44], eax
jne 0x4123a4
cmp dword [ebp - 0x18], eax
je 0x41265f
cmp dword [0x51d180], 2
jl 0x412692
push eax
push eax
push dword [ebp - 0x50]
push 1
call fcn.004126ee
add esp, 0x10
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x412524
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x412476
add dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.00410a3a
pop ecx
pop ecx
mov eax, esi
call fcn.004101c4
call fcn.00410bf8
test eax, eax
jne 0x412472
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c241
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040c241
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 0x41242f
mov edi, 0xffffff22
test esi, esi
jge 0x412435
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x412443
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040c199
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040ace5
add esp, 0x14
cmp edi, 0xffffff22
je 0x412472
push dword [ebp - 0x10]
push edi
call fcn.0040c199
pop ecx
pop ecx
and dword [ebp - 0x2c], 0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x412524
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.00410a3a
pop ecx
pop ecx
mov eax, esi
call fcn.004101c4
call fcn.00410bf8
test eax, eax
jne 0x412520
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040c241
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040c241
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 0x4124dd
mov edi, 0xffffff22
test esi, esi
jge 0x4124e3
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x4124f1
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040c199
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040ace5
add esp, 0x14
cmp edi, 0xffffff22
je 0x412520
push dword [ebp - 0x10]
push edi
call fcn.0040c199
pop ecx
pop ecx
and dword [ebp - 0x1c], 0
call fcn.0040aa55
test eax, eax
je 0x41253d
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.0040a6bc
mov esi, dword [ebp + 0xc]
push 0
mov eax, esi
call fcn.0040f9c4
xor ebx, ebx
cmp dword [ebp - 0x78], ebx
pop ecx
jbe 0x412562
call fcn.0049c471
sub eax, dword [ebp - 0x74]
cmp eax, dword [ebp - 0x78]
ja 0x412699
push 0x76
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x41257b
mov dword [0x51d188], ebx
mov dword [0x51d184], ebx
push 0x19
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4116c5
mov eax, dword [ebp + 8]
call fcn.00476abd
mov eax, dword [ebp + 0xc]
push 1
call fcn.0040f9c4
pop ecx
mov eax, esi
jmp 0x4126e9
mov edi, dword [ebp + 8]
mov edx, edi
mov byte [edi], 0
call fcn.00476b3a
test eax, eax
jne 0x4125de
test esi, esi
je 0x4125de
mov dword [0x51d190], ebx
call fcn.0041303f
mov dword [0x514b3c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x514b40], eax
pop ecx
mov eax, 0x51d0e0
call fcn.00476b6c
pop ecx
push 0x26
pop esi
jmp 0x412590
call fcn.0049c471
and dword [0x51d188], 0
mov esi, dword [ebp + 0xc]
mov dword [0x51d184], eax
jmp 0x4125ff
inc dword [0x51d188]
call fcn.0041303f
test eax, eax
jle 0x412619
push 0
push 0
push dword [ebp - 0x54]
push 1
call fcn.004126ee
add esp, 0x10
mov eax, dword [ebp + 8]
call fcn.00476abd
push 0x76
jmp 0x4125e0
mov dword [0x51d190], edi
call fcn.0041303f
push dword [ebp + 8]
mov dword [0x514b3c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x514b40], eax
pop ecx
mov eax, 0x51d0e0
call fcn.00476b6c
pop ecx
push edi
mov eax, esi
call fcn.0040f9c4
pop ecx
lea eax, [ebx + 0x35]
jmp 0x4126e9
inc dword [0x51d180]
jmp 0x412692
call fcn.0049c471
and dword [0x51d180], 0
mov dword [0x51d0dc], eax
jmp 0x412692
mov eax, dword [ebp - 0x44]
imul edi, edi, 0x25
sub eax, dword [ebp - 0x48]
cmp eax, edi
jae 0x412692
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410d5e
pop ecx
push 0xd
jmp 0x41156d
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov edx, edi
mov byte [eax + edi], 0
call fcn.00476b3a
test eax, eax
jne 0x4126dd
cmp esi, ebx
je 0x4126dd
mov dword [0x51d190], 1
call fcn.0041303f
mov dword [0x514b3c], eax
mov eax, dword [ebp - 0x38]
push edi
push 0x50
mov dword [0x514b40], eax
pop ecx
mov eax, 0x51d0e0
call fcn.00476b6c
pop ecx
mov esi, 0x92
jmp 0x412590
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret