40c7a0:	8b f9                	mov    %ecx,%edi
40c7a2:	8b 4f 0c             	mov    0xc(%edi),%ecx
40c7a5:	8b 01                	mov    (%ecx),%eax
40c7a7:	83 f8 01             	cmp    $0x1,%eax
40c7aa:	0f 8f 67 57 06 00    	jg     0x471f17
40c7b0:	8b 47 04             	mov    0x4(%edi),%eax
40c7b3:	6a 02                	push   $0x2
40c7b5:	5e                   	pop    %esi
40c7b6:	03 c6                	add    %esi,%eax
40c7b8:	39 47 08             	cmp    %eax,0x8(%edi)
40c7bb:	72 23                	jb     0x40c7e0
40c7bd:	8b 57 04             	mov    0x4(%edi),%edx
40c7c0:	8b 0f                	mov    (%edi),%ecx
40c7c2:	66 8b 45 08          	mov    0x8(%ebp),%ax
40c7c6:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
40c7ca:	ff 47 04             	incl   0x4(%edi)
40c7cd:	8b 07                	mov    (%edi),%eax
40c7cf:	8b 4f 04             	mov    0x4(%edi),%ecx
40c7d2:	33 d2                	xor    %edx,%edx
40c7d4:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40c7d8:	8b c7                	mov    %edi,%eax
40c7da:	5f                   	pop    %edi
40c7db:	5e                   	pop    %esi
40c7dc:	c9                   	leave
40c7dd:	c2 04 00             	ret    $0x4
40c7e0:	3d c2 41 00 00       	cmp    $0x41c2,%eax
40c7e5:	0f 83 72 57 06 00    	jae    0x471f5d
40c7eb:	03 c0                	add    %eax,%eax
40c7ed:	50                   	push   %eax
40c7ee:	89 47 08             	mov    %eax,0x8(%edi)
40c7f1:	e8 00 a3 ff ff       	call   0x406af6
40c7f6:	33 c9                	xor    %ecx,%ecx
40c7f8:	89 47 08             	mov    %eax,0x8(%edi)
40c7fb:	f7 e6                	mul    %esi
40c7fd:	0f 90 c1             	seto   %cl
40c800:	f7 d9                	neg    %ecx
40c802:	0b c8                	or     %eax,%ecx
40c804:	51                   	push   %ecx
40c805:	e8 6b 26 01 00       	call   0x41ee75
40c80a:	83 3f 00             	cmpl   $0x0,(%edi)
40c80d:	59                   	pop    %ecx
40c80e:	8b f0                	mov    %eax,%esi
40c810:	74 1d                	je     0x40c82f
40c812:	8b 4f 04             	mov    0x4(%edi),%ecx
40c815:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40c81c:	51                   	push   %ecx
40c81d:	ff 37                	push   (%edi)
40c81f:	56                   	push   %esi
40c820:	e8 5b 26 01 00       	call   0x41ee80
40c825:	ff 37                	push   (%edi)
40c827:	e8 b4 45 01 00       	call   0x420de0
40c82c:	83 c4 10             	add    $0x10,%esp
40c82f:	89 37                	mov    %esi,(%edi)
40c831:	eb 8a                	jmp    0x40c7bd
40c833:	55                   	push   %ebp
40c834:	8b ec                	mov    %esp,%ebp
40c836:	83 e4 f8             	and    $0xfffffff8,%esp
40c839:	b8 e4 06 01 00       	mov    $0x106e4,%eax
40c83e:	e8 5d 30 02 00       	call   0x42f8a0
40c843:	a1 74 21 4c 00       	mov    0x4c2174,%eax
40c848:	53                   	push   %ebx
40c849:	56                   	push   %esi
40c84a:	40                   	inc    %eax
40c84b:	8b f1                	mov    %ecx,%esi
40c84d:	57                   	push   %edi
40c84e:	89 74 24 1c          	mov    %esi,0x1c(%esp)
40c852:	a3 74 21 4c 00       	mov    %eax,0x4c2174
40c857:	83 f8 30             	cmp    $0x30,%eax
40c85a:	0f 8d 35 68 06 00    	jge    0x473095
40c860:	33 db                	xor    %ebx,%ebx
40c862:	8b c3                	mov    %ebx,%eax
40c864:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40c86b:	89 44 24 14          	mov    %eax,0x14(%esp)
40c86f:	c6 44 24 13 01       	movb   $0x1,0x13(%esp)
40c874:	c6 44 24 23 01       	movb   $0x1,0x23(%esp)
40c879:	88 5c 24 24          	mov    %bl,0x24(%esp)
40c87d:	e8 38 80 ff ff       	call   0x4048ba
40c882:	8b 7d 08             	mov    0x8(%ebp),%edi
40c885:	68 00 20 00 00       	push   $0x2000
40c88a:	57                   	push   %edi
40c88b:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c892:	e8 b9 7c ff ff       	call   0x404550
40c897:	84 c0                	test   %al,%al
40c899:	0f 84 10 68 06 00    	je     0x4730af
40c89f:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40c8a6:	e8 4c 0f 00 00       	call   0x40d7f7
40c8ab:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40c8b2:	e8 b1 20 01 00       	call   0x41e968
40c8b7:	8d 8c 24 88 00 00 00 	lea    0x88(%esp),%ecx
40c8be:	e8 34 0f 00 00       	call   0x40d7f7
40c8c3:	8d 94 24 88 00 00 00 	lea    0x88(%esp),%edx
40c8ca:	8b cf                	mov    %edi,%ecx
40c8cc:	e8 3e 9d ff ff       	call   0x40660f
40c8d1:	8b bc 24 a8 00 00 00 	mov    0xa8(%esp),%edi
40c8d8:	8b b4 24 ac 00 00 00 	mov    0xac(%esp),%esi
40c8df:	8d 44 24 44          	lea    0x44(%esp),%eax
40c8e3:	50                   	push   %eax
40c8e4:	8d 44 24 54          	lea    0x54(%esp),%eax
40c8e8:	50                   	push   %eax
40c8e9:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c8f0:	c7 44 24 4c 18 00 00 	movl   $0x18,0x4c(%esp)
40c8f7:	00
40c8f8:	e8 69 22 01 00       	call   0x41eb66
40c8fd:	53                   	push   %ebx
40c8fe:	56                   	push   %esi
40c8ff:	57                   	push   %edi
40c900:	8d 8c 24 a4 00 00 00 	lea    0xa4(%esp),%ecx
40c907:	e8 c2 7d ff ff       	call   0x4046ce
40c90c:	81 7c 24 60 41 55 33 	cmpl   $0x21335541,0x60(%esp)
40c913:	21
40c914:	0f 84 af 67 06 00    	je     0x4730c9
40c91a:	8d 84 24 f0 02 00 00 	lea    0x2f0(%esp),%eax
40c921:	50                   	push   %eax
40c922:	8d 84 24 f4 04 00 00 	lea    0x4f4(%esp),%eax
40c929:	50                   	push   %eax
40c92a:	8d 84 24 f8 00 00 00 	lea    0xf8(%esp),%eax
40c931:	50                   	push   %eax
40c932:	8d 44 24 40          	lea    0x40(%esp),%eax
40c936:	50                   	push   %eax
40c937:	ff b4 24 98 00 00 00 	push   0x98(%esp)
40c93e:	e8 b9 54 01 00       	call   0x421dfc
40c943:	83 c4 14             	add    $0x14,%esp
40c946:	8d 44 24 34          	lea    0x34(%esp),%eax
40c94a:	50                   	push   %eax
40c94b:	8d 84 24 f4 06 00 00 	lea    0x6f4(%esp),%eax
40c952:	50                   	push   %eax
40c953:	e8 cb 43 01 00       	call   0x420d23
40c958:	8d 84 24 f8 00 00 00 	lea    0xf8(%esp),%eax
40c95f:	50                   	push   %eax
40c960:	8d 84 24 fc 06 00 00 	lea    0x6fc(%esp),%eax
40c967:	50                   	push   %eax
40c968:	e8 87 43 01 00       	call   0x420cf4
40c96d:	83 c4 10             	add    $0x10,%esp
40c970:	8d 84 24 f0 06 00 00 	lea    0x6f0(%esp),%eax
40c977:	50                   	push   %eax
40c978:	ff 15 18 d3 48 00    	call   *0x48d318
40c97e:	68 00 20 00 00       	push   $0x2000
40c983:	e8 62 2b 01 00       	call   0x41f4ea
40c988:	59                   	pop    %ecx
40c989:	50                   	push   %eax
40c98a:	8d 4c 24 48          	lea    0x48(%esp),%ecx
40c98e:	e8 24 7e ff ff       	call   0x4047b7
40c993:	8b 74 24 44          	mov    0x44(%esp),%esi
40c997:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
40c99b:	80 7c 24 23 01       	cmpb   $0x1,0x23(%esp)
40c9a0:	0f 85 f7 00 00 00    	jne    0x40ca9d
40c9a6:	51                   	push   %ecx
40c9a7:	56                   	push   %esi
40c9a8:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
40c9af:	e8 83 e9 ff ff       	call   0x40b337
40c9b4:	84 c0                	test   %al,%al
40c9b6:	0f 84 e1 00 00 00    	je     0x40ca9d
40c9bc:	8b 44 24 14          	mov    0x14(%esp),%eax
40c9c0:	40                   	inc    %eax
40c9c1:	56                   	push   %esi
40c9c2:	89 44 24 18          	mov    %eax,0x18(%esp)
40c9c6:	89 44 24 20          	mov    %eax,0x20(%esp)
40c9ca:	e8 89 f8 00 00       	call   0x41c258
40c9cf:	56                   	push   %esi
40c9d0:	e8 be 01 00 00       	call   0x40cb93
40c9d5:	56                   	push   %esi
40c9d6:	84 c0                	test   %al,%al
40c9d8:	0f 84 8e 6a 06 00    	je     0x47346c
40c9de:	e8 77 01 00 00       	call   0x40cb5a
40c9e3:	56                   	push   %esi
40c9e4:	88 5c 24 26          	mov    %bl,0x26(%esp)
40c9e8:	e8 ee 42 01 00       	call   0x420cdb
40c9ed:	59                   	pop    %ecx
40c9ee:	89 44 24 34          	mov    %eax,0x34(%esp)
40c9f2:	83 f8 02             	cmp    $0x2,%eax
40c9f5:	7e 1d                	jle    0x40ca14
40c9f7:	66 8b 44 46 fc       	mov    -0x4(%esi,%eax,2),%ax
40c9fc:	6a 7f                	push   $0x7f
40c9fe:	59                   	pop    %ecx
40c9ff:	66 23 c1             	and    %cx,%ax
40ca02:	0f b7 c0             	movzwl %ax,%eax
40ca05:	50                   	push   %eax
40ca06:	e8 c5 4c 01 00       	call   0x4216d0
40ca0b:	59                   	pop    %ecx
40ca0c:	85 c0                	test   %eax,%eax
40ca0e:	0f 85 f2 00 00 00    	jne    0x40cb06
40ca14:	80 7c 24 24 01       	cmpb   $0x1,0x24(%esp)
40ca19:	0f 84 40 6a 06 00    	je     0x47345f
40ca1f:	ff b4 24 88 00 00 00 	push   0x88(%esp)
40ca26:	8d 4c 24 6c          	lea    0x6c(%esp),%ecx
40ca2a:	e8 ea 03 00 00       	call   0x40ce19
40ca2f:	8d 84 24 98 00 00 00 	lea    0x98(%esp),%eax
40ca36:	50                   	push   %eax
40ca37:	8d 44 24 20          	lea    0x20(%esp),%eax
40ca3b:	50                   	push   %eax
40ca3c:	8d 44 24 70          	lea    0x70(%esp),%eax
40ca40:	50                   	push   %eax
40ca41:	56                   	push   %esi
40ca42:	8b cf                	mov    %edi,%ecx
40ca44:	e8 db 01 00 00       	call   0x40cc24
40ca49:	8d 4c 24 68          	lea    0x68(%esp),%ecx
40ca4d:	89 44 24 34          	mov    %eax,0x34(%esp)
40ca51:	e8 e1 00 00 00       	call   0x40cb37
40ca56:	8b 44 24 34          	mov    0x34(%esp),%eax
40ca5a:	85 c0                	test   %eax,%eax
40ca5c:	0f 84 cf 00 00 00    	je     0x40cb31
40ca62:	83 f8 01             	cmp    $0x1,%eax
40ca65:	0f 8e b9 00 00 00    	jle    0x40cb24
40ca6b:	83 f8 03             	cmp    $0x3,%eax
40ca6e:	0f 8f a7 00 00 00    	jg     0x40cb1b
40ca74:	ff 75 0c             	push   0xc(%ebp)
40ca77:	8b 44 24 20          	mov    0x20(%esp),%eax
40ca7b:	56                   	push   %esi
40ca7c:	50                   	push   %eax
40ca7d:	8b cf                	mov    %edi,%ecx
40ca7f:	89 44 24 20          	mov    %eax,0x20(%esp)
40ca83:	e8 fa fb 00 00       	call   0x41c682
40ca88:	80 7c 24 22 01       	cmpb   $0x1,0x22(%esp)
40ca8d:	0f 94 44 24 24       	sete   0x24(%esp)
40ca92:	80 7c 24 13 01       	cmpb   $0x1,0x13(%esp)
40ca97:	0f 84 fe fe ff ff    	je     0x40c99b
40ca9d:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40caa4:	e8 5e 7e ff ff       	call   0x404907
40caa9:	ff b4 24 d0 00 00 00 	push   0xd0(%esp)
40cab0:	89 9c 24 c8 00 00 00 	mov    %ebx,0xc8(%esp)
40cab7:	89 9c 24 cc 00 00 00 	mov    %ebx,0xcc(%esp)
40cabe:	ff 15 18 d3 48 00    	call   *0x48d318
40cac4:	8a 5c 24 13          	mov    0x13(%esp),%bl
40cac8:	8d 4c 24 44          	lea    0x44(%esp),%ecx
40cacc:	e8 11 7d ff ff       	call   0x4047e2
40cad1:	8d 8c 24 88 00 00 00 	lea    0x88(%esp),%ecx
40cad8:	e8 5a 00 00 00       	call   0x40cb37
40cadd:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40cae4:	e8 4e 00 00 00       	call   0x40cb37
40cae9:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40caf0:	e8 e8 7d ff ff       	call   0x4048dd
40caf5:	ff 0d 74 21 4c 00    	decl   0x4c2174
40cafb:	5f                   	pop    %edi
40cafc:	5e                   	pop    %esi
40cafd:	8a c3                	mov    %bl,%al
40caff:	5b                   	pop    %ebx
40cb00:	8b e5                	mov    %ebp,%esp
40cb02:	5d                   	pop    %ebp
40cb03:	c2 14 00             	ret    $0x14
40cb06:	8b 44 24 34          	mov    0x34(%esp),%eax
40cb0a:	66 83 7c 46 fe 5f    	cmpw   $0x5f,-0x2(%esi,%eax,2)
40cb10:	0f 85 fe fe ff ff    	jne    0x40ca14
40cb16:	e9 33 69 06 00       	jmp    0x47344e
40cb1b:	83 f8 04             	cmp    $0x4,%eax
40cb1e:	75 04                	jne    0x40cb24
40cb20:	88 5c 24 23          	mov    %bl,0x23(%esp)
40cb24:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40cb28:	89 44 24 14          	mov    %eax,0x14(%esp)
40cb2c:	e9 57 ff ff ff       	jmp    0x40ca88
40cb31:	88 5c 24 13          	mov    %bl,0x13(%esp)
40cb35:	eb ed                	jmp    0x40cb24
40cb37:	56                   	push   %esi
40cb38:	8b f1                	mov    %ecx,%esi
40cb3a:	8b 46 0c             	mov    0xc(%esi),%eax
40cb3d:	ff 08                	decl   (%eax)
40cb3f:	8b 46 0c             	mov    0xc(%esi),%eax
40cb42:	83 38 00             	cmpl   $0x0,(%eax)
40cb45:	75 11                	jne    0x40cb58
40cb47:	ff 36                	push   (%esi)
40cb49:	e8 10 2a 01 00       	call   0x41f55e
40cb4e:	ff 76 0c             	push   0xc(%esi)
40cb51:	e8 08 2a 01 00       	call   0x41f55e
40cb56:	59                   	pop    %ecx
40cb57:	59                   	pop    %ecx
40cb58:	5e                   	pop    %esi
40cb59:	c3                   	ret
40cb5a:	55                   	push   %ebp
40cb5b:	8b ec                	mov    %esp,%ebp
40cb5d:	57                   	push   %edi
40cb5e:	8b 7d 08             	mov    0x8(%ebp),%edi
40cb61:	57                   	push   %edi
40cb62:	e8 74 41 01 00       	call   0x420cdb
40cb67:	59                   	pop    %ecx
40cb68:	85 c0                	test   %eax,%eax
40cb6a:	74 1d                	je     0x40cb89
40cb6c:	56                   	push   %esi
40cb6d:	8d 70 ff             	lea    -0x1(%eax),%esi
40cb70:	85 f6                	test   %esi,%esi
40cb72:	78 0d                	js     0x40cb81
40cb74:	66 8b 0c 77          	mov    (%edi,%esi,2),%cx
40cb78:	e8 a3 08 01 00       	call   0x41d420
40cb7d:	85 c0                	test   %eax,%eax
40cb7f:	75 0d                	jne    0x40cb8e
40cb81:	33 c0                	xor    %eax,%eax
40cb83:	66 89 44 77 02       	mov    %ax,0x2(%edi,%esi,2)
40cb88:	5e                   	pop    %esi
40cb89:	5f                   	pop    %edi
40cb8a:	5d                   	pop    %ebp
40cb8b:	c2 04 00             	ret    $0x4
40cb8e:	4e                   	dec    %esi
40cb8f:	79 e3                	jns    0x40cb74
40cb91:	eb ee                	jmp    0x40cb81
40cb93:	55                   	push   %ebp
40cb94:	8b ec                	mov    %esp,%ebp
40cb96:	53                   	push   %ebx
40cb97:	56                   	push   %esi
40cb98:	57                   	push   %edi
40cb99:	8b 7d 08             	mov    0x8(%ebp),%edi
40cb9c:	33 db                	xor    %ebx,%ebx
40cb9e:	8b f3                	mov    %ebx,%esi
40cba0:	85 ff                	test   %edi,%edi
40cba2:	74 75                	je     0x40cc19
40cba4:	66 83 3f 23          	cmpw   $0x23,(%edi)
40cba8:	74 52                	je     0x40cbfc
40cbaa:	66 39 1f             	cmp    %bx,(%edi)
40cbad:	74 17                	je     0x40cbc6
40cbaf:	0f b7 07             	movzwl (%edi),%eax
40cbb2:	83 f8 22             	cmp    $0x22,%eax
40cbb5:	74 1c                	je     0x40cbd3
40cbb7:	83 f8 27             	cmp    $0x27,%eax
40cbba:	74 34                	je     0x40cbf0
40cbbc:	83 f8 3b             	cmp    $0x3b,%eax
40cbbf:	74 24                	je     0x40cbe5
40cbc1:	83 c7 02             	add    $0x2,%edi
40cbc4:	eb e4                	jmp    0x40cbaa
40cbc6:	85 f6                	test   %esi,%esi
40cbc8:	75 4a                	jne    0x40cc14
40cbca:	b0 01                	mov    $0x1,%al
40cbcc:	5f                   	pop    %edi
40cbcd:	5e                   	pop    %esi
40cbce:	5b                   	pop    %ebx
40cbcf:	5d                   	pop    %ebp
40cbd0:	c2 04 00             	ret    $0x4
40cbd3:	83 fe 02             	cmp    $0x2,%esi
40cbd6:	74 09                	je     0x40cbe1
40cbd8:	85 f6                	test   %esi,%esi
40cbda:	75 e5                	jne    0x40cbc1
40cbdc:	6a 02                	push   $0x2
40cbde:	5e                   	pop    %esi
40cbdf:	eb e0                	jmp    0x40cbc1
40cbe1:	8b f3                	mov    %ebx,%esi
40cbe3:	eb dc                	jmp    0x40cbc1
40cbe5:	85 f6                	test   %esi,%esi
40cbe7:	75 34                	jne    0x40cc1d
40cbe9:	33 c9                	xor    %ecx,%ecx
40cbeb:	66 89 0f             	mov    %cx,(%edi)
40cbee:	eb da                	jmp    0x40cbca
40cbf0:	83 fe 01             	cmp    $0x1,%esi
40cbf3:	74 ec                	je     0x40cbe1
40cbf5:	85 f6                	test   %esi,%esi
40cbf7:	75 c8                	jne    0x40cbc1
40cbf9:	46                   	inc    %esi
40cbfa:	eb c5                	jmp    0x40cbc1
40cbfc:	6a 08                	push   $0x8
40cbfe:	68 b4 dc 49 00       	push   $0x49dcb4
40cc03:	57                   	push   %edi
40cc04:	e8 52 4c 01 00       	call   0x42185b
40cc09:	83 c4 0c             	add    $0xc,%esp
40cc0c:	85 c0                	test   %eax,%eax
40cc0e:	74 9a                	je     0x40cbaa