Function at 0x4112b8
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 [0x54b188]
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 0x411308
cmp edi, eax
jne 0x41132f
cmp edi, eax
mov dword [0x54b178], eax
mov dword [0x54b17c], eax
mov dword [0x54b180], eax
mov dword [0x54b184], eax
mov dword [0x54b188], edi
mov dword [0x54b190], eax
je 0x41254a
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
xor ebx, ebx
xor esi, esi
call fcn.0040f336
mov esi, edi
call fcn.0040f51a
mov byte [ebp - 0x4c], al
call fcn.0040f3ea
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.004133d3
add esp, 0x20
call fcn.004111b1
mov dword [ebp - 0x78], eax
call fcn.00410ae3
xor ebx, ebx
test al, 0x4e
mov dword [ebp - 0x5c], ebx
je 0x411395
mov dword [ebp - 0x5c], 1
movzx eax, al
shr eax, 5
and eax, 1
mov dword [ebp - 0x64], eax
call fcn.00410b15
push ebx
mov dword [ebp - 0x6c], eax
call fcn.00410b31
cmp dword [0x54b190], ebx
pop ecx
je 0x4113ce
mov eax, dword [ebp + 8]
call fcn.0047c34d
mov dword [0x54b190], ebx
push 0x77
pop eax
jmp 0x41254c
cmp dword [0x54b18c], ebx
je 0x411406
cmp dword [0x542b4c], ebx
jl 0x411406
cmp dword [0x542b50], ebx
jle 0x411406
mov edi, esi
call fcn.00412ea2
cmp dword [0x542b4c], eax
jne 0x411406
mov eax, dword [0x542b50]
cmp eax, dword [ebp - 0x38]
mov dword [ebp - 0x44], 1
je 0x411409
mov dword [ebp - 0x44], ebx
cmp dword [ebp + 8], ebx
je 0x41254a
cmp dword [ebp - 0x14], ebx
je 0x41254a
cmp dword [ebp - 0x28], ebx
je 0x41254a
cmp dword [ebp - 0x44], ebx
mov edi, 0x54b0d8
jne 0x411459
or dword [0x542b4c], 0xffffffff
or dword [0x542b50], 0xffffffff
mov eax, edi
mov dword [0x54b18c], ebx
call fcn.0047c3ec
test eax, eax
jne 0x411459
push 0x50
push ebx
push edi
call fcn.004b53e0
add esp, 0xc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040bd3e
mov eax, dword [ebp - 0x28]
inc eax
push eax
xor esi, esi
push esi
push dword [ebp + 8]
call fcn.004b53e0
add esp, 0xc
cmp dword [ebp - 0x44], esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
je 0x411514
xor ecx, ecx
cmp byte [0x54b0d8], cl
je 0x4114ba
mov esi, dword [ebp + 8]
sub esi, edi
cmp ecx, dword [0x542b50]
jge 0x4114ba
cmp ecx, dword [ebp - 0x28]
jge 0x4114ba
inc dword [ebp - 4]
lea eax, [ecx + 0x54b0d8]
mov dl, byte [eax]
inc ecx
mov byte [esi + eax], dl
cmp byte [ecx + 0x54b0d8], 0
jne 0x411495
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov ebx, ecx
sub ebx, eax
mov dword [ebp - 8], ecx
jns 0x4114cb
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, ecx
jle 0x4114d4
mov esi, ecx
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040a645
and dword [0x54b18c], 0
or dword [0x542b4c], 0xffffffff
or dword [0x542b50], 0xffffffff
add esp, 0x14
push 0x50
push 0
push edi
call fcn.004b53e0
add esp, 0xc
xor edi, edi
mov dword [ebp - 0x68], edi
call fcn.004a4ba8
mov dword [ebp - 0x74], eax
call fcn.00409e81
cmp eax, edi
mov dword [ebp - 0x44], eax
je 0x41221a
call fcn.004a4ba8
mov dword [ebp - 0x74], eax
call fcn.00409f25
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
push 0x1b
pop esi
cmp ebx, esi
je 0x4123e1
cmp ebx, 0xd
je 0x41211a
push 0xa
pop edi
cmp ebx, edi
je 0x41211a
cmp ebx, 8
je 0x41168a
cmp ebx, 0xe0
je 0x41178d
xor esi, esi
cmp ebx, esi
jne 0x411eaf
call fcn.00409f25
mov ebx, eax
cmp ebx, 0x4b
jg 0x41161a
je 0x41160e
cmp ebx, 0x44
jg 0x4115db
cmp ebx, 0x43
jge 0x411e47
cmp ebx, 0x3b
jl 0x41221a
cmp ebx, 0x40
jle 0x4115c2
cmp ebx, 0x41
je 0x411d4f
cmp ebx, 0x42
jne 0x41221a
mov esi, dword [ebp + 0xc]
call fcn.00411272
cmp eax, 1
jne 0x411e47
mov dword [ebp - 0x18], edi
jmp 0x411541
sub ebx, 0x47
je 0x411602
dec ebx
je 0x4115f6
dec ebx
jne 0x41221a
mov dword [ebp - 0x18], 0x39
jmp 0x411541
mov dword [ebp - 0x18], 0x38
jmp 0x411541
mov dword [ebp - 0x18], 0x37
jmp 0x411541
mov dword [ebp - 0x18], 0x34
jmp 0x411541
sub ebx, 0x4c
je 0x41167e
dec ebx
je 0x411672
dec ebx
dec ebx
je 0x411666
dec ebx
je 0x41165a
dec ebx
je 0x41164e
dec ebx
je 0x411642
dec ebx
jne 0x41221a
mov dword [ebp - 0x18], 0x2e
jmp 0x411541
mov dword [ebp - 0x18], 0x30
jmp 0x411541
mov dword [ebp - 0x18], 0x33
jmp 0x411541
mov dword [ebp - 0x18], 0x32
jmp 0x411541
mov dword [ebp - 0x18], 0x31
jmp 0x411541
mov dword [ebp - 0x18], 0x36
jmp 0x411541
mov dword [ebp - 0x18], 0x35
jmp 0x411541
cmp dword [ebp - 8], 0
jle 0x41221a
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
je 0x4116c6
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.004107ca
pop ecx
pop ecx
mov eax, esi
call fcn.0040ff12
call fcn.004109a4
test eax, eax
jne 0x41221a
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412551
mov ebx, dword [ebp + 8]
add esp, 0x10
dec dword [ebp - 8]
mov eax, dword [ebp - 8]
call fcn.0047ce0f
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.0040bd3e
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 0x411736
test esi, esi
jle 0x411736
mov esi, ecx
jmp 0x411737
dec edi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp edi, ecx
jne 0x411748
mov edi, 0xffffff22
test esi, esi
jge 0x41174e
xor esi, esi
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x411759
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub ebx, esi
push ebx
add esi, eax
push esi
call fcn.0040a645
add esp, 0x14
cmp edi, 0xffffff22
je 0x41221a
push dword [ebp - 0x10]
push edi
jmp 0x4120ef
call fcn.00409f25
mov ebx, eax
cmp ebx, 0x86
jg 0x41221a
cmp ebx, 0x85
jge 0x411cd5
cmp ebx, 0x4d
jg 0x411a65
je 0x41196c
sub eax, 0x47
je 0x4118ca
dec eax
je 0x41188c
dec eax
je 0x411874
dec eax
dec eax
jne 0x41221a
xor esi, esi
cmp dword [ebp - 4], esi
jne 0x411802
mov eax, dword [ebp + 0xc]
call fcn.00410943
test eax, eax
je 0x411802
cmp dword [ebp - 0x2c], esi
jle 0x411802
dec dword [ebp - 0x2c]
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
jmp 0x412210
cmp dword [ebp - 8], esi
jle 0x41221a
push dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412551
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040bd3e
mov edi, dword [ebp - 0xc]
dec dword [ebp - 8]
cmp dword [ebp - 0x44], edi
jg 0x411866
mov ebx, dword [ebp - 8]
test ebx, ebx
jge 0x41183f
xor ebx, ebx
mov eax, dword [ebp - 0x14]
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x41184d
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push edi
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x411770
push 0
push 0
call fcn.00421261
jmp 0x4120f4
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x40]
xor edi, edi
call fcn.0041304b
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x1c], eax
jmp 0x4117f5
mov esi, dword [ebp + 0xc]
xor edi, edi
inc edi
push edi
call fcn.0040f5f6
test eax, eax
pop ecx
je 0x4118c2
mov eax, esi
call fcn.004108ed
test eax, eax
jne 0x4118c2
cmp dword [ebp - 4], eax
je 0x4123fb
push 0
push str.IllegalKey.wav
call fcn.0047a67b
jmp 0x4120f4
dec dword [ebp - 0x1c]
jmp 0x4117f5
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412551
xor edi, edi
add esp, 0x10
cmp dword [ebp - 4], edi
jg 0x41195c
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
jne 0x4117f5
call fcn.0040f41a
cmp dword [ebp - 0x28], eax
jl 0x4117f5
mov eax, dword [ebp + 8]
or ecx, 0xffffffff
call fcn.0041308c
push dword [ebp + 8]
call fcn.004b4450
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], edi
jle 0x411925
mov esi, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
push edi
push esi
push dword [ebp + 8]
call fcn.0040a645
add esp, 0x14
cmp dword [ebp - 0xc], 0xffffff22
je 0x4117f5
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
pop ecx
pop ecx
jmp 0x4117f5
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 4]
mov dword [ebp - 8], edi
jle 0x411925
mov esi, dword [ebp - 4]
jmp 0x411925
mov edi, dword [ebp - 4]
test edi, edi
jne 0x411987
mov eax, dword [ebp + 0xc]
call fcn.00410943
test eax, eax
je 0x411987
inc dword [ebp - 0x2c]
jmp 0x4117f5
cmp dword [ebp - 8], edi
jge 0x4119f1
push dword [ebp - 0x20]
and dword [ebp - 0x44], 0
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412551
add esp, 0x10
xor ebx, ebx
lea esi, [ebp - 0x44]
call fcn.0040bd3e
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 0x4119e7
mov ebx, dword [ebp - 8]
sub ebx, eax
jns 0x4119c8
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, edi
jle 0x4119d1
mov esi, edi
push dword [ebp - 0x10]
push ecx
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub esi, ebx
push esi
add ebx, eax
push ebx
jmp 0x411a58
call fcn.004212cb
jmp 0x41221a
test edi, edi
jg 0x41221a
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
jne 0x41221a
call fcn.0040f41a
cmp dword [ebp - 0x28], eax
jl 0x41221a
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.0041308c
push edi
call fcn.004b4450
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x411a3c
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411a45
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
push 0
sub ebx, esi
push ebx
add esi, edi
push esi
call fcn.0040a645
add esp, 0x14
jmp 0x41221a
mov eax, ebx
sub eax, 0x4f
je 0x411c24
dec eax
je 0x411bb1
dec eax
je 0x411b99
dec eax
dec eax
jne 0x41221a
xor ebx, ebx
cmp dword [ebp - 8], ebx
jl 0x4117f5
mov edi, dword [ebp - 4]
cmp edi, ebx
jle 0x4117f5
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
je 0x411acc
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.004107ca
pop ecx
pop ecx
mov eax, esi
call fcn.0040ff12
call fcn.004109a4
test eax, eax
jne 0x4117f5
cmp dword [ebp - 8], edi
jge 0x4117f5
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x58]
push 2
call fcn.00412551
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
add esp, 0x10
call fcn.0047ce0f
dec edi
cmp dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov byte [edi + ebx], 0
jl 0x411b16
cmp dword [ebp - 8], 0
jle 0x411b16
dec dword [ebp - 8]
mov edi, 0xffffff22
xor ebx, ebx
lea esi, [ebp - 0x18]
mov dword [ebp - 0x18], edi
call fcn.0040bd3e
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 0x411b4e
test ebx, ebx
jle 0x411b4e
mov ebx, ecx
jmp 0x411b51
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, eax
cmp dword [ebp - 0x18], ecx
jne 0x411b61
mov dword [ebp - 0x18], edi
test ebx, ebx
jge 0x411b67
xor ebx, ebx
lea esi, [ebx + eax]
cmp esi, dword [ebp - 4]
jle 0x411b72
mov esi, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
push dword [ebp - 0x4c]
mov eax, dword [ebp + 8]
sub esi, ebx
add ebx, eax
push esi
push ebx
call fcn.0040a645
add esp, 0x14
cmp dword [ebp - 0x18], edi
jmp 0x4120e3
mov esi, dword [ebp + 0xc]
xor ebx, ebx
lea edi, [ebp - 0x40]
call fcn.0041304b
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], eax
jmp 0x4117f5
mov esi, dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.0040f5f6
test eax, eax
pop ecx
je 0x411c1c
mov eax, esi
call fcn.004108ed
test eax, eax
jne 0x411c1c
cmp dword [ebp - 4], eax
jne 0x4118b1
mov edx, dword [ebp + 8]
mov byte [edx], al
call fcn.0047c3ca
test eax, eax
jne 0x411c15
test esi, esi
je 0x411c15
mov edi, esi
mov dword [0x54b18c], 1
call fcn.00412ea2
push dword [ebp + 8]
mov dword [0x542b4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x542b50], eax
pop ecx
mov eax, 0x54b0d8
call fcn.0047c3fc
pop ecx
push 0x28
jmp 0x41243b
inc dword [ebp - 0x1c]
jmp 0x4117f5
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x3c]
push 2
call fcn.00412551
mov eax, dword [ebp - 4]
add esp, 0x10
test eax, eax
jg 0x411caa
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
jne 0x4117f5
call fcn.0040f41a
cmp dword [ebp - 0x28], eax
jl 0x4117f5
mov edi, dword [ebp + 8]
mov eax, edi
or ecx, 0xffffffff
call fcn.0041308c
push edi
call fcn.004b4450
pop ecx
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
jns 0x411c81
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411c8a
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
sub ebx, esi
add esi, edi
push 0
push ebx
push esi
call fcn.0040a645
add esp, 0x14
jmp 0x4117f5
mov ecx, dword [ebp - 0x14]
mov esi, eax
sub esi, ecx
mov dword [ebp - 8], eax
jns 0x411cb8
xor esi, esi
lea ebx, [esi + ecx]
cmp ebx, eax
jle 0x411cc1
mov ebx, eax
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call fcn.0040bc78
mov eax, dword [ebp + 8]
sub ebx, esi
add esi, eax
jmp 0x411c99
mov edi, dword [ebp + 0xc]
lea eax, [ebx - 0x7a]
mov esi, edi
call fcn.0040f68c
test eax, eax
je 0x41221a
push 0
push dword [ebp - 0x20]
xor esi, esi
push dword [ebp - 0x24]
inc esi
push esi
call fcn.00412551
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.0047c3ca
test eax, eax
jne 0x411d3e
test edi, edi
je 0x411d3e
mov dword [0x54b18c], esi
call fcn.00412ea2
push dword [ebp + 8]
mov dword [0x542b4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x542b50], eax
pop ecx
mov eax, 0x54b0d8
call fcn.0047c3fc
pop ecx
push esi
mov eax, edi
call fcn.0040f70a
pop ecx
lea eax, [ebx - 0xb]
jmp 0x41254c
cmp dword [ebp - 4], 0
jle 0x411de9
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
or ecx, 0xffffffff
call fcn.0041308c
and dword [ebp - 0x18], 0
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040bd3e
mov edi, dword [ebp - 0xc]
jmp 0x411d94
push 1
push dword [ebp - 0x4c]
call fcn.00421261
and dword [ebp - 0x18], 0
pop ecx
pop ecx
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040bd3e
cmp dword [ebp - 0x18], edi
jg 0x411d7a
push dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 8], ebx
call fcn.004b4450
mov esi, dword [ebp - 0x14]
cmp esi, eax
pop ecx
jle 0x411db0
mov esi, eax
push dword [ebp - 0x10]
push edi
call fcn.0040bc78
push esi
push dword [ebp + 8]
call fcn.0040a8cd
add esp, 0x10
cmp edi, 0xffffff22
je 0x411dd8
push dword [ebp - 0x10]
push edi
call fcn.0040bc78
pop ecx
pop ecx
mov eax, dword [ebp + 8]
call fcn.0047c34d
mov dword [ebp - 4], ebx
push ebx
jmp 0x4117f7
call fcn.004a4ba8
mov ecx, eax
mov eax, dword [0x54b180]
sub ecx, eax
cmp ecx, 0x3e8
jb 0x411e07
test eax, eax
jne 0x41243e
call fcn.004a4ba8
mov edi, dword [ebp + 0xc]
mov dword [0x54b180], eax
call fcn.00412ea2
test eax, eax
jne 0x412454
mov eax, edi
call fcn.0041070d
cmp eax, 3
jl 0x412454
cmp dword [0x54b184], 1
jl 0x412474
push 0
push 0
jmp 0x41220d
mov esi, dword [ebp + 0xc]
lea eax, [ebx - 0x3a]
call fcn.0040f68c
test eax, eax
je 0x41221a
push 0
push dword [ebp - 0x20]
xor edi, edi
push dword [ebp - 0x24]
inc edi
push edi
call fcn.00412551
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
add esp, 0x10
mov byte [eax + edx], 0
call fcn.0047c3ca
test eax, eax
jne 0x4124af
test esi, esi
je 0x4124af
cmp ebx, 0x42
jne 0x412480
call fcn.00411272
cmp eax, 2
jne 0x412480
mov dword [0x54b190], edi
jmp 0x4124f3
cmp ebx, 0x20
jl 0x4120fb
cmp ebx, 0x7e
jg 0x41221a
cmp ebx, 0x3d
mov dword [ebp - 0x68], 1
jne 0x411ed9
cmp dword [ebp - 0x5c], esi
je 0x411ed9
mov dword [ebp - 0x18], 0x2b
cmp dword [ebp - 0x48], esi
mov ebx, dword [ebp - 4]
je 0x411ee5
cmp ebx, esi
jne 0x411eed
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edi
jmp 0x411ef0
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x64], esi
je 0x411f9d
mov al, byte [ebp - 0x18]
call fcn.0047d434
test eax, eax
jne 0x411f2c
push dword [ebp - 0x18]
call fcn.0047c3a4
test eax, eax
pop ecx
je 0x41221a
mov edx, dword [ebp + 8]
mov byte [ebx + edx], 0
call fcn.0047c3ca
test eax, eax
je 0x41221a
jmp 0x411f6a
cmp ebx, esi
jle 0x411f6a
mov eax, dword [ebp + 8]
movsx eax, byte [esi + eax]
push eax
call fcn.0047c3a4
test eax, eax
pop ecx
je 0x411f5f
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov byte [eax + ebx], 0
mov eax, esi
call fcn.0047ce0f
cmp dword [ebp - 8], esi
jle 0x411f5b
dec dword [ebp - 8]
dec dword [ebp - 4]
dec esi
mov ebx, dword [ebp - 4]
inc esi
cmp esi, ebx
jl 0x411f30
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 8], 0
jle 0x411f9d
mov eax, dword [ebp - 0x38]
dec eax
cmp dword [ebp - 8], eax
jl 0x411f9d
cmp ebx, dword [ebp - 8]
jl 0x411f9d
sub edi, dword [ebp - 0x48]
mov eax, ebx
imul eax, eax, 0x25
cmp edi, eax
jae 0x411f9d
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410b31
pop ecx
push 0xd
pop esi
call fcn.00409f2a
cmp ebx, dword [ebp - 0x28]
jge 0x411fda
call fcn.00409e81
test eax, eax
jne 0x411fda
cmp dword [ebp - 0x6c], eax
je 0x411fb4
test ebx, ebx
je 0x411fda
push dword [ebp - 0x18]
call fcn.0047d456
test eax, eax
pop ecx
push 0
je 0x411fca
push 0
push dword [ebp - 0x20]
jmp 0x411fd0
push dword [ebp - 0x20]
push dword [ebp - 0x60]
push 5
call fcn.00412551
add esp, 0x10
mov esi, dword [ebp + 0xc]
call fcn.004109a4
test eax, eax
je 0x41200c
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.004107ca
pop ecx
pop ecx
mov eax, esi
call fcn.0040ff12
call fcn.004109a4
test eax, eax
jne 0x41221a
cmp ebx, dword [ebp - 0x28]
jge 0x41221a
push dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 8]
call fcn.0047d20a
mov edi, dword [ebp - 8]
inc edi
inc dword [ebp - 4]
cmp edi, dword [ebp - 0x28]
pop ecx
mov dword [ebp - 8], edi
jl 0x412051
call fcn.0041121a
test eax, eax
je 0x412051
push 0xd
pop esi
call fcn.00409f2a
cmp edi, dword [ebp - 4]
mov dword [ebp - 0x18], 0xffffff22
jne 0x412067
mov ecx, dword [ebp - 0xc]
mov esi, edi
sub esi, dword [ebp - 0x14]
jmp 0x4120ac
xor ebx, ebx
lea esi, [ebp - 0x18]
call fcn.0040bd3e
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 0x412097
mov eax, ecx
sub eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
lea esi, [eax + edi - 1]
jmp 0x4120ac
mov esi, ecx
sub esi, dword [ebp - 0x18]
add ebx, ecx
add esi, edi
cmp dword [ebp - 0x18], ebx
jne 0x4120ac
mov dword [ebp - 0x18], 0xffffff22
test esi, esi
jge 0x4120b2
xor esi, esi
mov eax, dword [ebp - 0x14]
lea ebx, [esi + eax]
cmp ebx, dword [ebp - 4]
jle 0x4120c0
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push ecx
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a645
add esp, 0x14
cmp dword [ebp - 0x18], 0xffffff22
je 0x41221a
push dword [ebp - 0x10]
push dword [ebp - 0x18]
call fcn.0040bc78
pop ecx
pop ecx
jmp 0x41221a
cmp ebx, esi
jle 0x41221a
mov esi, dword [ebp + 0xc]
call fcn.0040f582
test eax, eax
je 0x41221a
mov eax, ebx
jmp 0x41254c
mov edi, dword [ebp - 4]
mov eax, dword [ebp + 8]
xor ebx, ebx
cmp dword [ebp - 0x64], ebx
mov byte [edi + eax], 0
je 0x412144
cmp edi, ebx
jne 0x412144
cmp dword [ebp - 0x68], ebx
jne 0x412144
cmp dword [ebp - 0x6c], ebx
je 0x412144
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410b31
pop ecx
mov eax, dword [ebp + 8]
call fcn.0047c3ec
test eax, eax
jne 0x41218a
mov edx, dword [ebp + 8]
call fcn.0047c3ca
test eax, eax
je 0x41218a
mov esi, dword [ebp + 0xc]
xor eax, eax
or ecx, 0xffffffff
call fcn.00413130
mov eax, dword [ebp + 8]
call fcn.0047c34d
mov eax, esi
mov dword [ebp - 4], ebx
mov dword [ebp - 8], ebx
call fcn.0040ff12
push ebx
push ebx
push dword [ebp - 0x70]
push 2
jmp 0x412212
mov eax, dword [ebp + 8]
call fcn.0047c3ec
test eax, eax
je 0x4124db
call fcn.004a4ba8
sub eax, dword [0x54b178]
cmp eax, 0x190
jae 0x4124c9
and dword [ebp - 0x44], ebx
and dword [ebp - 0x18], ebx
mov esi, dword [ebp + 0xc]
lea ebx, [ebp - 0x18]
lea edi, [ebp - 0x44]
call fcn.0041304b
call fcn.004a4ba8
mov dword [0x54b178], eax
or eax, 0xffffffff
call fcn.004132a8
test eax, eax
je 0x4124c1
mov eax, esi
call fcn.0041070d
cmp eax, 3
jl 0x4124c1
xor eax, eax
cmp dword [ebp - 0x44], eax
jne 0x4121fe
cmp dword [ebp - 0x18], eax
je 0x4124c1
cmp dword [0x54b17c], 2
jl 0x4124f3
push eax
push eax
push dword [ebp - 0x50]
push 1
call fcn.00412551
add esp, 0x10
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x412381
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x4122d3
add dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004107ca
pop ecx
pop ecx
mov eax, esi
call fcn.0040ff12
call fcn.004109a4
test eax, eax
jne 0x4122cc
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040bd3e
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040bd3e
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 0x412289
mov edi, 0xffffff22
test esi, esi
jge 0x41228f
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x41229d
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a645
add esp, 0x14
cmp edi, 0xffffff22
je 0x4122cc
push dword [ebp - 0x10]
push edi
call fcn.0040bc78
pop ecx
pop ecx
and dword [ebp - 0x2c], 0
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x412381
add dword [ebp - 0x34], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, esi
call fcn.004107ca
pop ecx
pop ecx
mov eax, esi
call fcn.0040ff12
call fcn.004109a4
test eax, eax
jne 0x41237a
lea ebx, [ebp - 0x10]
lea esi, [ebp - 0xc]
call fcn.0040bd3e
xor ebx, ebx
lea esi, [ebp - 0x44]
mov dword [ebp - 0x44], 0xffffff22
call fcn.0040bd3e
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 0x412337
mov edi, 0xffffff22
test esi, esi
jge 0x41233d
xor esi, esi
mov ecx, dword [ebp - 0x14]
lea ebx, [esi + ecx]
cmp ebx, dword [ebp - 4]
jle 0x41234b
mov ebx, dword [ebp - 4]
push dword [ebp - 0x10]
push eax
call fcn.0040bc78
mov eax, dword [ebp + 8]
push 0
sub ebx, esi
add esi, eax
push ebx
push esi
call fcn.0040a645
add esp, 0x14
cmp edi, 0xffffff22
je 0x41237a
push dword [ebp - 0x10]
push edi
call fcn.0040bc78
pop ecx
pop ecx
and dword [ebp - 0x1c], 0
mov esi, dword [ebp + 0xc]
call fcn.0040a381
test eax, eax
je 0x41239a
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.00409f25
xor edi, edi
push edi
mov eax, esi
call fcn.0040f70a
cmp dword [ebp - 0x78], edi
pop ecx
jbe 0x4123bb
call fcn.004a4ba8
sub eax, dword [ebp - 0x74]
cmp eax, dword [ebp - 0x78]
ja 0x4124fa
push 0x76
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x4123d4
mov dword [0x54b184], edi
mov dword [0x54b180], edi
push 0x19
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x411521
mov eax, dword [ebp + 8]
call fcn.0047c34d
mov eax, dword [ebp + 0xc]
push 1
call fcn.0040f70a
pop ecx
mov eax, esi
jmp 0x41254c
mov edx, dword [ebp + 8]
mov byte [edx], 0
call fcn.0047c3ca
test eax, eax
jne 0x412439
test esi, esi
je 0x412439
mov dword [0x54b18c], edi
mov edi, esi
call fcn.00412ea2
push dword [ebp + 8]
mov dword [0x542b4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x542b50], eax
pop ecx
mov eax, 0x54b0d8
call fcn.0047c3fc
pop ecx
push 0x26
pop esi
jmp 0x4123e9
call fcn.004a4ba8
and dword [0x54b184], 0
mov edi, dword [ebp + 0xc]
mov dword [0x54b180], eax
jmp 0x41245a
inc dword [0x54b184]
call fcn.00412ea2
test eax, eax
jle 0x412474
push 0
push 0
push dword [ebp - 0x54]
push 1
call fcn.00412551
add esp, 0x10
mov eax, dword [ebp + 8]
call fcn.0047c34d
push 0x76
jmp 0x41243b
mov edi, esi
mov dword [0x54b18c], 1
call fcn.00412ea2
push dword [ebp + 8]
mov dword [0x542b4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x542b50], eax
pop ecx
mov eax, 0x54b0d8
call fcn.0047c3fc
pop ecx
push 1
mov eax, esi
call fcn.0040f70a
pop ecx
lea eax, [ebx + 0x35]
jmp 0x41254c
inc dword [0x54b17c]
jmp 0x4124f3
call fcn.004a4ba8
mov dword [0x54b178], eax
mov dword [0x54b17c], ebx
jmp 0x4124f3
mov eax, dword [ebp - 0x44]
imul edi, edi, 0x25
sub eax, dword [ebp - 0x48]
cmp eax, edi
jae 0x4124f3
mov esi, dword [ebp + 0xc]
push 1
call fcn.00410b31
pop ecx
push 0xd
jmp 0x4113c8
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 8]
mov byte [eax + edx], 0
call fcn.0047c3ca
test eax, eax
jne 0x412540
cmp esi, edi
je 0x412540
mov edi, esi
mov dword [0x54b18c], 1
call fcn.00412ea2
push dword [ebp + 8]
mov dword [0x542b4c], eax
mov eax, dword [ebp - 0x38]
push 0x50
mov dword [0x542b50], eax
pop ecx
mov eax, 0x54b0d8
call fcn.0047c3fc
pop ecx
mov esi, 0x92
jmp 0x4123e9
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret