407eb0:	ff 75 08             	push   0x8(%ebp)
407eb3:	e8 4d 0a 00 00       	call   0x408905
407eb8:	59                   	pop    %ecx
407eb9:	89 75 fc             	mov    %esi,-0x4(%ebp)
407ebc:	ff 75 08             	push   0x8(%ebp)
407ebf:	e8 b4 fe ff ff       	call   0x407d78
407ec4:	59                   	pop    %ecx
407ec5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407ec8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407ecf:	e8 09 00 00 00       	call   0x407edd
407ed4:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407ed7:	e8 b1 57 00 00       	call   0x40d68d
407edc:	c3                   	ret
407edd:	ff 75 08             	push   0x8(%ebp)
407ee0:	e8 72 0a 00 00       	call   0x408957
407ee5:	59                   	pop    %ecx
407ee6:	c3                   	ret
407ee7:	6a 01                	push   $0x1
407ee9:	e8 cc fe ff ff       	call   0x407dba
407eee:	59                   	pop    %ecx
407eef:	c3                   	ret
407ef0:	6a 0c                	push   $0xc
407ef2:	68 78 aa 41 00       	push   $0x41aa78
407ef7:	e8 4c 57 00 00       	call   0x40d648
407efc:	33 db                	xor    %ebx,%ebx
407efe:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
407f01:	33 c0                	xor    %eax,%eax
407f03:	8b 75 08             	mov    0x8(%ebp),%esi
407f06:	3b f3                	cmp    %ebx,%esi
407f08:	0f 95 c0             	setne  %al
407f0b:	3b c3                	cmp    %ebx,%eax
407f0d:	75 20                	jne    0x407f2f
407f0f:	e8 e6 14 00 00       	call   0x4093fa
407f14:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407f1a:	53                   	push   %ebx
407f1b:	53                   	push   %ebx
407f1c:	53                   	push   %ebx
407f1d:	53                   	push   %ebx
407f1e:	53                   	push   %ebx
407f1f:	e8 2c f7 ff ff       	call   0x407650
407f24:	83 c4 14             	add    $0x14,%esp
407f27:	83 c8 ff             	or     $0xffffffff,%eax
407f2a:	e9 af 00 00 00       	jmp    0x407fde
407f2f:	8b 45 10             	mov    0x10(%ebp),%eax
407f32:	83 f8 04             	cmp    $0x4,%eax
407f35:	74 09                	je     0x407f40
407f37:	3b c3                	cmp    %ebx,%eax
407f39:	74 0e                	je     0x407f49
407f3b:	83 f8 40             	cmp    $0x40,%eax
407f3e:	75 cf                	jne    0x407f0f
407f40:	3b c3                	cmp    %ebx,%eax
407f42:	74 05                	je     0x407f49
407f44:	83 f8 40             	cmp    $0x40,%eax
407f47:	75 0f                	jne    0x407f58
407f49:	8b 7d 14             	mov    0x14(%ebp),%edi
407f4c:	8d 47 fe             	lea    -0x2(%edi),%eax
407f4f:	3d fd ff ff 7f       	cmp    $0x7ffffffd,%eax
407f54:	76 05                	jbe    0x407f5b
407f56:	eb b7                	jmp    0x407f0f
407f58:	8b 7d 14             	mov    0x14(%ebp),%edi
407f5b:	83 e7 fe             	and    $0xfffffffe,%edi
407f5e:	89 75 08             	mov    %esi,0x8(%ebp)
407f61:	56                   	push   %esi
407f62:	e8 9e 09 00 00       	call   0x408905
407f67:	59                   	pop    %ecx
407f68:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407f6b:	56                   	push   %esi
407f6c:	e8 a5 fd ff ff       	call   0x407d16
407f71:	56                   	push   %esi
407f72:	e8 ad 75 00 00       	call   0x40f524
407f77:	59                   	pop    %ecx
407f78:	59                   	pop    %ecx
407f79:	81 66 0c f3 c2 ff ff 	andl   $0xffffc2f3,0xc(%esi)
407f80:	8b 4e 0c             	mov    0xc(%esi),%ecx
407f83:	f6 45 10 04          	testb  $0x4,0x10(%ebp)
407f87:	74 0b                	je     0x407f94
407f89:	83 c9 04             	or     $0x4,%ecx
407f8c:	8d 46 14             	lea    0x14(%esi),%eax
407f8f:	6a 02                	push   $0x2
407f91:	5f                   	pop    %edi
407f92:	eb 2d                	jmp    0x407fc1
407f94:	8b 45 0c             	mov    0xc(%ebp),%eax
407f97:	3b c3                	cmp    %ebx,%eax
407f99:	75 20                	jne    0x407fbb
407f9b:	57                   	push   %edi
407f9c:	e8 4b 13 00 00       	call   0x4092ec
407fa1:	59                   	pop    %ecx
407fa2:	3b c3                	cmp    %ebx,%eax
407fa4:	75 0c                	jne    0x407fb2
407fa6:	ff 05 f8 d9 41 00    	incl   0x41d9f8
407fac:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
407fb0:	eb 1d                	jmp    0x407fcf
407fb2:	81 4e 0c 08 04 00 00 	orl    $0x408,0xc(%esi)
407fb9:	eb 09                	jmp    0x407fc4
407fbb:	81 c9 00 05 00 00    	or     $0x500,%ecx
407fc1:	89 4e 0c             	mov    %ecx,0xc(%esi)
407fc4:	89 7e 18             	mov    %edi,0x18(%esi)
407fc7:	89 46 08             	mov    %eax,0x8(%esi)
407fca:	89 06                	mov    %eax,(%esi)
407fcc:	89 5e 04             	mov    %ebx,0x4(%esi)
407fcf:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407fd6:	e8 09 00 00 00       	call   0x407fe4
407fdb:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407fde:	e8 aa 56 00 00       	call   0x40d68d
407fe3:	c3                   	ret
407fe4:	ff 75 08             	push   0x8(%ebp)
407fe7:	e8 6b 09 00 00       	call   0x408957
407fec:	59                   	pop    %ecx
407fed:	c3                   	ret
407fee:	53                   	push   %ebx
407fef:	55                   	push   %ebp
407ff0:	56                   	push   %esi
407ff1:	8b 74 24 14          	mov    0x14(%esp),%esi
407ff5:	83 cd ff             	or     $0xffffffff,%ebp
407ff8:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
407ffc:	57                   	push   %edi
407ffd:	0f 85 a8 00 00 00    	jne    0x4080ab
408003:	56                   	push   %esi
408004:	e8 3d 6a 00 00       	call   0x40ea46
408009:	3b c5                	cmp    %ebp,%eax
40800b:	59                   	pop    %ecx
40800c:	bb f0 cb 41 00       	mov    $0x41cbf0,%ebx
408011:	74 2e                	je     0x408041
408013:	56                   	push   %esi
408014:	e8 2d 6a 00 00       	call   0x40ea46
408019:	83 f8 fe             	cmp    $0xfffffffe,%eax
40801c:	59                   	pop    %ecx
40801d:	74 22                	je     0x408041
40801f:	56                   	push   %esi
408020:	e8 21 6a 00 00       	call   0x40ea46
408025:	c1 f8 05             	sar    $0x5,%eax
408028:	56                   	push   %esi
408029:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
408030:	e8 11 6a 00 00       	call   0x40ea46
408035:	83 e0 1f             	and    $0x1f,%eax
408038:	6b c0 28             	imul   $0x28,%eax,%eax
40803b:	03 07                	add    (%edi),%eax
40803d:	59                   	pop    %ecx
40803e:	59                   	pop    %ecx
40803f:	eb 02                	jmp    0x408043
408041:	8b c3                	mov    %ebx,%eax
408043:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
408047:	75 41                	jne    0x40808a
408049:	56                   	push   %esi
40804a:	e8 f7 69 00 00       	call   0x40ea46
40804f:	3b c5                	cmp    %ebp,%eax
408051:	59                   	pop    %ecx
408052:	74 2e                	je     0x408082
408054:	56                   	push   %esi
408055:	e8 ec 69 00 00       	call   0x40ea46
40805a:	83 f8 fe             	cmp    $0xfffffffe,%eax
40805d:	59                   	pop    %ecx
40805e:	74 22                	je     0x408082
408060:	56                   	push   %esi
408061:	e8 e0 69 00 00       	call   0x40ea46
408066:	c1 f8 05             	sar    $0x5,%eax
408069:	56                   	push   %esi
40806a:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
408071:	e8 d0 69 00 00       	call   0x40ea46
408076:	83 e0 1f             	and    $0x1f,%eax
408079:	6b c0 28             	imul   $0x28,%eax,%eax
40807c:	03 07                	add    (%edi),%eax
40807e:	59                   	pop    %ecx
40807f:	59                   	pop    %ecx
408080:	eb 02                	jmp    0x408084
408082:	8b c3                	mov    %ebx,%eax
408084:	f6 40 24 80          	testb  $0x80,0x24(%eax)
408088:	74 21                	je     0x4080ab
40808a:	e8 6b 13 00 00       	call   0x4093fa
40808f:	33 ff                	xor    %edi,%edi
408091:	57                   	push   %edi
408092:	57                   	push   %edi
408093:	57                   	push   %edi
408094:	57                   	push   %edi
408095:	57                   	push   %edi
408096:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40809c:	e8 af f5 ff ff       	call   0x407650
4080a1:	83 c4 14             	add    $0x14,%esp
4080a4:	8b c5                	mov    %ebp,%eax
4080a6:	5f                   	pop    %edi
4080a7:	5e                   	pop    %esi
4080a8:	5d                   	pop    %ebp
4080a9:	5b                   	pop    %ebx
4080aa:	c3                   	ret
4080ab:	8b 5c 24 14          	mov    0x14(%esp),%ebx
4080af:	3b dd                	cmp    %ebp,%ebx
4080b1:	74 f1                	je     0x4080a4
4080b3:	8b 46 0c             	mov    0xc(%esi),%eax
4080b6:	a8 01                	test   $0x1,%al
4080b8:	75 08                	jne    0x4080c2
4080ba:	84 c0                	test   %al,%al
4080bc:	79 e6                	jns    0x4080a4
4080be:	a8 02                	test   $0x2,%al
4080c0:	75 e2                	jne    0x4080a4
4080c2:	33 ff                	xor    %edi,%edi
4080c4:	39 7e 08             	cmp    %edi,0x8(%esi)
4080c7:	75 07                	jne    0x4080d0
4080c9:	56                   	push   %esi
4080ca:	e8 8e 6c 00 00       	call   0x40ed5d
4080cf:	59                   	pop    %ecx
4080d0:	8b 06                	mov    (%esi),%eax
4080d2:	3b 46 08             	cmp    0x8(%esi),%eax
4080d5:	75 08                	jne    0x4080df
4080d7:	39 7e 04             	cmp    %edi,0x4(%esi)
4080da:	75 c8                	jne    0x4080a4
4080dc:	40                   	inc    %eax
4080dd:	89 06                	mov    %eax,(%esi)
4080df:	ff 0e                	decl   (%esi)
4080e1:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4080e5:	8b 06                	mov    (%esi),%eax
4080e7:	74 09                	je     0x4080f2
4080e9:	38 18                	cmp    %bl,(%eax)
4080eb:	74 07                	je     0x4080f4
4080ed:	40                   	inc    %eax
4080ee:	89 06                	mov    %eax,(%esi)
4080f0:	eb b2                	jmp    0x4080a4
4080f2:	88 18                	mov    %bl,(%eax)
4080f4:	8b 46 0c             	mov    0xc(%esi),%eax
4080f7:	ff 46 04             	incl   0x4(%esi)
4080fa:	83 e0 ef             	and    $0xffffffef,%eax
4080fd:	83 c8 01             	or     $0x1,%eax
408100:	89 46 0c             	mov    %eax,0xc(%esi)
408103:	8b c3                	mov    %ebx,%eax
408105:	25 ff 00 00 00       	and    $0xff,%eax
40810a:	eb 9a                	jmp    0x4080a6
40810c:	6a 0c                	push   $0xc
40810e:	68 98 aa 41 00       	push   $0x41aa98
408113:	e8 30 55 00 00       	call   0x40d648
408118:	33 c0                	xor    %eax,%eax
40811a:	33 f6                	xor    %esi,%esi
40811c:	39 75 0c             	cmp    %esi,0xc(%ebp)
40811f:	0f 95 c0             	setne  %al
408122:	3b c6                	cmp    %esi,%eax
408124:	75 1d                	jne    0x408143
408126:	e8 cf 12 00 00       	call   0x4093fa
40812b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408131:	56                   	push   %esi
408132:	56                   	push   %esi
408133:	56                   	push   %esi
408134:	56                   	push   %esi
408135:	56                   	push   %esi
408136:	e8 15 f5 ff ff       	call   0x407650
40813b:	83 c4 14             	add    $0x14,%esp
40813e:	83 c8 ff             	or     $0xffffffff,%eax
408141:	eb 2b                	jmp    0x40816e
408143:	ff 75 0c             	push   0xc(%ebp)
408146:	e8 ba 07 00 00       	call   0x408905
40814b:	59                   	pop    %ecx
40814c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40814f:	ff 75 0c             	push   0xc(%ebp)
408152:	ff 75 08             	push   0x8(%ebp)
408155:	e8 94 fe ff ff       	call   0x407fee
40815a:	59                   	pop    %ecx
40815b:	59                   	pop    %ecx
40815c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40815f:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408166:	e8 09 00 00 00       	call   0x408174
40816b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40816e:	e8 1a 55 00 00       	call   0x40d68d
408173:	c3                   	ret
408174:	ff 75 0c             	push   0xc(%ebp)
408177:	e8 db 07 00 00       	call   0x408957
40817c:	59                   	pop    %ecx
40817d:	c3                   	ret
40817e:	6a 0c                	push   $0xc
408180:	68 b8 aa 41 00       	push   $0x41aab8
408185:	e8 be 54 00 00       	call   0x40d648
40818a:	33 db                	xor    %ebx,%ebx
40818c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40818f:	33 c0                	xor    %eax,%eax
408191:	8b 75 08             	mov    0x8(%ebp),%esi
408194:	3b f3                	cmp    %ebx,%esi
408196:	0f 95 c0             	setne  %al
408199:	3b c3                	cmp    %ebx,%eax
40819b:	75 20                	jne    0x4081bd
40819d:	e8 58 12 00 00       	call   0x4093fa
4081a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4081a8:	53                   	push   %ebx
4081a9:	53                   	push   %ebx
4081aa:	53                   	push   %ebx
4081ab:	53                   	push   %ebx
4081ac:	53                   	push   %ebx
4081ad:	e8 9e f4 ff ff       	call   0x407650
4081b2:	83 c4 14             	add    $0x14,%esp
4081b5:	83 c8 ff             	or     $0xffffffff,%eax
4081b8:	e9 e7 00 00 00       	jmp    0x4082a4
4081bd:	56                   	push   %esi
4081be:	e8 42 07 00 00       	call   0x408905
4081c3:	59                   	pop    %ecx
4081c4:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4081c7:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4081cb:	0f 85 a6 00 00 00    	jne    0x408277
4081d1:	56                   	push   %esi
4081d2:	e8 6f 68 00 00       	call   0x40ea46
4081d7:	59                   	pop    %ecx
4081d8:	83 f8 ff             	cmp    $0xffffffff,%eax
4081db:	74 2e                	je     0x40820b
4081dd:	56                   	push   %esi
4081de:	e8 63 68 00 00       	call   0x40ea46
4081e3:	59                   	pop    %ecx
4081e4:	83 f8 fe             	cmp    $0xfffffffe,%eax
4081e7:	74 22                	je     0x40820b
4081e9:	56                   	push   %esi
4081ea:	e8 57 68 00 00       	call   0x40ea46
4081ef:	c1 f8 05             	sar    $0x5,%eax
4081f2:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
4081f9:	56                   	push   %esi
4081fa:	e8 47 68 00 00       	call   0x40ea46
4081ff:	59                   	pop    %ecx
408200:	59                   	pop    %ecx
408201:	83 e0 1f             	and    $0x1f,%eax
408204:	6b c0 28             	imul   $0x28,%eax,%eax
408207:	03 07                	add    (%edi),%eax
408209:	eb 05                	jmp    0x408210
40820b:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
408210:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
408214:	75 45                	jne    0x40825b
408216:	56                   	push   %esi
408217:	e8 2a 68 00 00       	call   0x40ea46
40821c:	59                   	pop    %ecx
40821d:	83 f8 ff             	cmp    $0xffffffff,%eax
408220:	74 2e                	je     0x408250
408222:	56                   	push   %esi
408223:	e8 1e 68 00 00       	call   0x40ea46
408228:	59                   	pop    %ecx
408229:	83 f8 fe             	cmp    $0xfffffffe,%eax
40822c:	74 22                	je     0x408250
40822e:	56                   	push   %esi
40822f:	e8 12 68 00 00       	call   0x40ea46
408234:	c1 f8 05             	sar    $0x5,%eax
408237:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
40823e:	56                   	push   %esi
40823f:	e8 02 68 00 00       	call   0x40ea46
408244:	59                   	pop    %ecx
408245:	59                   	pop    %ecx
408246:	83 e0 1f             	and    $0x1f,%eax
408249:	6b c0 28             	imul   $0x28,%eax,%eax
40824c:	03 07                	add    (%edi),%eax
40824e:	eb 05                	jmp    0x408255
408250:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
408255:	f6 40 24 80          	testb  $0x80,0x24(%eax)
408259:	74 1c                	je     0x408277
40825b:	e8 9a 11 00 00       	call   0x4093fa
408260:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408266:	53                   	push   %ebx
408267:	53                   	push   %ebx
408268:	53                   	push   %ebx
408269:	53                   	push   %ebx
40826a:	53                   	push   %ebx
40826b:	e8 e0 f3 ff ff       	call   0x407650