40caa2:	39 45 f0             	cmp    %eax,-0x10(%ebp)
40caa5:	74 22                	je     0x40cac9
40caa7:	8d 46 0c             	lea    0xc(%esi),%eax
40caaa:	50                   	push   %eax
40caab:	8d 46 18             	lea    0x18(%esi),%eax
40caae:	50                   	push   %eax
40caaf:	ff 75 f0             	push   -0x10(%ebp)
40cab2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40cab5:	50                   	push   %eax
40cab6:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40cabc:	e8 3a 00 00 00       	call   0x40cafb
40cac1:	43                   	inc    %ebx
40cac2:	3b 5e 38             	cmp    0x38(%esi),%ebx
40cac5:	75 b7                	jne    0x40ca7e
40cac7:	eb 1f                	jmp    0x40cae8
40cac9:	83 4e 18 ff          	orl    $0xffffffff,0x18(%esi)
40cacd:	eb 19                	jmp    0x40cae8
40cacf:	8d 46 0c             	lea    0xc(%esi),%eax
40cad2:	50                   	push   %eax
40cad3:	8d 46 18             	lea    0x18(%esi),%eax
40cad6:	50                   	push   %eax
40cad7:	ff 76 38             	push   0x38(%esi)
40cada:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40cae0:	ff 76 34             	push   0x34(%esi)
40cae3:	e8 13 00 00 00       	call   0x40cafb
40cae8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40caeb:	b0 01                	mov    $0x1,%al
40caed:	5f                   	pop    %edi
40caee:	5e                   	pop    %esi
40caef:	33 cd                	xor    %ebp,%ecx
40caf1:	5b                   	pop    %ebx
40caf2:	e8 15 a9 ff ff       	call   0x40740c
40caf7:	c9                   	leave
40caf8:	c2 04 00             	ret    $0x4
40cafb:	8b ff                	mov    %edi,%edi
40cafd:	55                   	push   %ebp
40cafe:	8b ec                	mov    %esp,%ebp
40cb00:	53                   	push   %ebx
40cb01:	57                   	push   %edi
40cb02:	8b 7d 0c             	mov    0xc(%ebp),%edi
40cb05:	8b d9                	mov    %ecx,%ebx
40cb07:	85 ff                	test   %edi,%edi
40cb09:	74 51                	je     0x40cb5c
40cb0b:	8b 03                	mov    (%ebx),%eax
40cb0d:	56                   	push   %esi
40cb0e:	8b 70 04             	mov    0x4(%eax),%esi
40cb11:	39 70 08             	cmp    %esi,0x8(%eax)
40cb14:	75 0b                	jne    0x40cb21
40cb16:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40cb1a:	8b 45 10             	mov    0x10(%ebp),%eax
40cb1d:	74 35                	je     0x40cb54
40cb1f:	eb 2b                	jmp    0x40cb4c
40cb21:	2b 70 08             	sub    0x8(%eax),%esi
40cb24:	3b f7                	cmp    %edi,%esi
40cb26:	72 02                	jb     0x40cb2a
40cb28:	8b f7                	mov    %edi,%esi
40cb2a:	56                   	push   %esi
40cb2b:	ff 75 08             	push   0x8(%ebp)
40cb2e:	ff 30                	push   (%eax)
40cb30:	e8 3b be ff ff       	call   0x408970
40cb35:	8b 03                	mov    (%ebx),%eax
40cb37:	83 c4 0c             	add    $0xc,%esp
40cb3a:	01 30                	add    %esi,(%eax)
40cb3c:	8b 03                	mov    (%ebx),%eax
40cb3e:	01 70 08             	add    %esi,0x8(%eax)
40cb41:	8b 03                	mov    (%ebx),%eax
40cb43:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40cb47:	8b 45 10             	mov    0x10(%ebp),%eax
40cb4a:	74 04                	je     0x40cb50
40cb4c:	01 38                	add    %edi,(%eax)
40cb4e:	eb 0b                	jmp    0x40cb5b
40cb50:	3b f7                	cmp    %edi,%esi
40cb52:	74 05                	je     0x40cb59
40cb54:	83 08 ff             	orl    $0xffffffff,(%eax)
40cb57:	eb 02                	jmp    0x40cb5b
40cb59:	01 30                	add    %esi,(%eax)
40cb5b:	5e                   	pop    %esi
40cb5c:	5f                   	pop    %edi
40cb5d:	5b                   	pop    %ebx
40cb5e:	5d                   	pop    %ebp
40cb5f:	c2 10 00             	ret    $0x10
40cb62:	8b ff                	mov    %edi,%edi
40cb64:	55                   	push   %ebp
40cb65:	8b ec                	mov    %esp,%ebp
40cb67:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40cb6a:	8d 41 01             	lea    0x1(%ecx),%eax
40cb6d:	3d 00 01 00 00       	cmp    $0x100,%eax
40cb72:	77 0c                	ja     0x40cb80
40cb74:	8b 45 08             	mov    0x8(%ebp),%eax
40cb77:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
40cb7b:	23 45 10             	and    0x10(%ebp),%eax
40cb7e:	5d                   	pop    %ebp
40cb7f:	c3                   	ret
40cb80:	33 c0                	xor    %eax,%eax
40cb82:	5d                   	pop    %ebp
40cb83:	c3                   	ret
40cb84:	8b ff                	mov    %edi,%edi
40cb86:	55                   	push   %ebp
40cb87:	8b ec                	mov    %esp,%ebp
40cb89:	ff 75 20             	push   0x20(%ebp)
40cb8c:	ff 75 1c             	push   0x1c(%ebp)
40cb8f:	ff 75 18             	push   0x18(%ebp)
40cb92:	ff 75 14             	push   0x14(%ebp)
40cb95:	ff 75 10             	push   0x10(%ebp)
40cb98:	ff 75 0c             	push   0xc(%ebp)
40cb9b:	ff 75 08             	push   0x8(%ebp)
40cb9e:	e8 d1 ed ff ff       	call   0x40b974
40cba3:	83 c4 1c             	add    $0x1c,%esp
40cba6:	5d                   	pop    %ebp
40cba7:	c3                   	ret
40cba8:	8b ff                	mov    %edi,%edi
40cbaa:	55                   	push   %ebp
40cbab:	8b ec                	mov    %esp,%ebp
40cbad:	8b 4d 10             	mov    0x10(%ebp),%ecx
40cbb0:	57                   	push   %edi
40cbb1:	8b 7d 08             	mov    0x8(%ebp),%edi
40cbb4:	85 c9                	test   %ecx,%ecx
40cbb6:	74 2d                	je     0x40cbe5
40cbb8:	8b 55 0c             	mov    0xc(%ebp),%edx
40cbbb:	2b d7                	sub    %edi,%edx
40cbbd:	0f b7 04 3a          	movzwl (%edx,%edi,1),%eax
40cbc1:	66 89 07             	mov    %ax,(%edi)
40cbc4:	83 c7 02             	add    $0x2,%edi
40cbc7:	66 85 c0             	test   %ax,%ax
40cbca:	74 05                	je     0x40cbd1
40cbcc:	83 e9 01             	sub    $0x1,%ecx
40cbcf:	75 ec                	jne    0x40cbbd
40cbd1:	85 c9                	test   %ecx,%ecx
40cbd3:	74 10                	je     0x40cbe5
40cbd5:	83 e9 01             	sub    $0x1,%ecx
40cbd8:	74 0b                	je     0x40cbe5
40cbda:	33 c0                	xor    %eax,%eax
40cbdc:	d1 e9                	shr    $1,%ecx
40cbde:	f3 ab                	rep stos %eax,%es:(%edi)
40cbe0:	13 c9                	adc    %ecx,%ecx
40cbe2:	66 f3 ab             	rep stos %ax,%es:(%edi)
40cbe5:	8b 45 08             	mov    0x8(%ebp),%eax
40cbe8:	5f                   	pop    %edi
40cbe9:	5d                   	pop    %ebp
40cbea:	c3                   	ret
40cbeb:	8b ff                	mov    %edi,%edi
40cbed:	55                   	push   %ebp
40cbee:	8b ec                	mov    %esp,%ebp
40cbf0:	51                   	push   %ecx
40cbf1:	e8 dd 75 00 00       	call   0x4141d3
40cbf6:	8b 48 4c             	mov    0x4c(%eax),%ecx
40cbf9:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40cbfc:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40cbff:	51                   	push   %ecx
40cc00:	50                   	push   %eax
40cc01:	e8 1f 78 00 00       	call   0x414425
40cc06:	8b 45 fc             	mov    -0x4(%ebp),%eax
40cc09:	59                   	pop    %ecx
40cc0a:	59                   	pop    %ecx
40cc0b:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40cc11:	c9                   	leave
40cc12:	c3                   	ret
40cc13:	8b ff                	mov    %edi,%edi
40cc15:	55                   	push   %ebp
40cc16:	8b ec                	mov    %esp,%ebp
40cc18:	51                   	push   %ecx
40cc19:	ff 75 08             	push   0x8(%ebp)
40cc1c:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40cc23:	8b 45 fc             	mov    -0x4(%ebp),%eax
40cc26:	e8 e0 64 00 00       	call   0x41310b
40cc2b:	59                   	pop    %ecx
40cc2c:	c9                   	leave
40cc2d:	c3                   	ret
40cc2e:	8b ff                	mov    %edi,%edi
40cc30:	55                   	push   %ebp
40cc31:	8b ec                	mov    %esp,%ebp
40cc33:	51                   	push   %ecx
40cc34:	51                   	push   %ecx
40cc35:	56                   	push   %esi
40cc36:	8b 75 10             	mov    0x10(%ebp),%esi
40cc39:	85 f6                	test   %esi,%esi
40cc3b:	75 17                	jne    0x40cc54
40cc3d:	e8 b9 21 00 00       	call   0x40edfb
40cc42:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40cc48:	e8 34 04 00 00       	call   0x40d081
40cc4d:	d9 ee                	fldz
40cc4f:	e9 d1 00 00 00       	jmp    0x40cd25
40cc54:	53                   	push   %ebx
40cc55:	57                   	push   %edi
40cc56:	bb ff ff 00 00       	mov    $0xffff,%ebx
40cc5b:	53                   	push   %ebx
40cc5c:	68 3f 13 00 00       	push   $0x133f
40cc61:	e8 58 8d 00 00       	call   0x4159be
40cc66:	dd 45 08             	fldl   0x8(%ebp)
40cc69:	8b f8                	mov    %eax,%edi
40cc6b:	59                   	pop    %ecx
40cc6c:	59                   	pop    %ecx
40cc6d:	0f b7 4d 0e          	movzwl 0xe(%ebp),%ecx
40cc71:	b8 f0 7f 00 00       	mov    $0x7ff0,%eax
40cc76:	23 c8                	and    %eax,%ecx
40cc78:	66 3b c8             	cmp    %ax,%cx
40cc7b:	75 48                	jne    0x40ccc5
40cc7d:	83 0e ff             	orl    $0xffffffff,(%esi)
40cc80:	51                   	push   %ecx
40cc81:	51                   	push   %ecx
40cc82:	dd 1c 24             	fstpl  (%esp)
40cc85:	e8 45 8c 00 00       	call   0x4158cf
40cc8a:	59                   	pop    %ecx
40cc8b:	59                   	pop    %ecx
40cc8c:	83 e8 01             	sub    $0x1,%eax
40cc8f:	74 26                	je     0x40ccb7
40cc91:	83 e8 01             	sub    $0x1,%eax
40cc94:	74 21                	je     0x40ccb7
40cc96:	83 e8 01             	sub    $0x1,%eax
40cc99:	74 1c                	je     0x40ccb7
40cc9b:	dd 45 08             	fldl   0x8(%ebp)
40cc9e:	dd 05 d0 60 42 00    	fldl   0x4260d0
40cca4:	57                   	push   %edi
40cca5:	83 ec 10             	sub    $0x10,%esp
40cca8:	d8 c1                	fadd   %st(1),%st
40ccaa:	dd 5c 24 08          	fstpl  0x8(%esp)
40ccae:	dd 1c 24             	fstpl  (%esp)
40ccb1:	6a 17                	push   $0x17
40ccb3:	6a 08                	push   $0x8
40ccb5:	eb 44                	jmp    0x40ccfb
40ccb7:	53                   	push   %ebx
40ccb8:	57                   	push   %edi
40ccb9:	e8 00 8d 00 00       	call   0x4159be
40ccbe:	dd 45 08             	fldl   0x8(%ebp)
40ccc1:	59                   	pop    %ecx
40ccc2:	59                   	pop    %ecx
40ccc3:	eb 5e                	jmp    0x40cd23
40ccc5:	d9 ee                	fldz
40ccc7:	dd e9                	fucomp %st(1)
40ccc9:	df e0                	fnstsw %ax
40cccb:	f6 c4 44             	test   $0x44,%ah
40ccce:	7a 38                	jp     0x40cd08
40ccd0:	51                   	push   %ecx
40ccd1:	51                   	push   %ecx
40ccd2:	dd 1c 24             	fstpl  (%esp)
40ccd5:	e8 11 84 00 00       	call   0x4150eb
40ccda:	59                   	pop    %ecx
40ccdb:	59                   	pop    %ecx
40ccdc:	85 c0                	test   %eax,%eax
40ccde:	74 25                	je     0x40cd05
40cce0:	83 26 00             	andl   $0x0,(%esi)
40cce3:	dd 05 d8 60 42 00    	fldl   0x4260d8
40cce9:	57                   	push   %edi
40ccea:	83 ec 10             	sub    $0x10,%esp
40cced:	dd 5c 24 08          	fstpl  0x8(%esp)
40ccf1:	dd 45 08             	fldl   0x8(%ebp)
40ccf4:	dd 1c 24             	fstpl  (%esp)
40ccf7:	6a 17                	push   $0x17
40ccf9:	6a 00                	push   $0x0
40ccfb:	e8 2f 84 00 00       	call   0x41512f
40cd00:	83 c4 1c             	add    $0x1c,%esp
40cd03:	eb 1e                	jmp    0x40cd23
40cd05:	dd 45 08             	fldl   0x8(%ebp)
40cd08:	56                   	push   %esi
40cd09:	51                   	push   %ecx
40cd0a:	51                   	push   %ecx
40cd0b:	dd 1c 24             	fstpl  (%esp)
40cd0e:	e8 bd 8a 00 00       	call   0x4157d0
40cd13:	53                   	push   %ebx
40cd14:	57                   	push   %edi
40cd15:	dd 5d f8             	fstpl  -0x8(%ebp)
40cd18:	e8 a1 8c 00 00       	call   0x4159be
40cd1d:	dd 45 f8             	fldl   -0x8(%ebp)
40cd20:	83 c4 14             	add    $0x14,%esp
40cd23:	5f                   	pop    %edi
40cd24:	5b                   	pop    %ebx
40cd25:	5e                   	pop    %esi
40cd26:	c9                   	leave
40cd27:	c3                   	ret
40cd28:	8b ff                	mov    %edi,%edi
40cd2a:	55                   	push   %ebp
40cd2b:	8b ec                	mov    %esp,%ebp
40cd2d:	8b 4d 10             	mov    0x10(%ebp),%ecx
40cd30:	85 c9                	test   %ecx,%ecx
40cd32:	75 04                	jne    0x40cd38
40cd34:	33 c0                	xor    %eax,%eax
40cd36:	5d                   	pop    %ebp
40cd37:	c3                   	ret
40cd38:	53                   	push   %ebx
40cd39:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40cd3c:	56                   	push   %esi
40cd3d:	57                   	push   %edi
40cd3e:	8b 7d 08             	mov    0x8(%ebp),%edi
40cd41:	0f b7 17             	movzwl (%edi),%edx
40cd44:	8d 42 bf             	lea    -0x41(%edx),%eax
40cd47:	83 f8 19             	cmp    $0x19,%eax
40cd4a:	77 03                	ja     0x40cd4f
40cd4c:	83 c2 20             	add    $0x20,%edx
40cd4f:	0f b7 33             	movzwl (%ebx),%esi
40cd52:	83 c7 02             	add    $0x2,%edi
40cd55:	8d 46 bf             	lea    -0x41(%esi),%eax
40cd58:	83 f8 19             	cmp    $0x19,%eax
40cd5b:	77 03                	ja     0x40cd60
40cd5d:	83 c6 20             	add    $0x20,%esi
40cd60:	8b c2                	mov    %edx,%eax
40cd62:	83 c3 02             	add    $0x2,%ebx
40cd65:	2b c6                	sub    %esi,%eax
40cd67:	75 09                	jne    0x40cd72
40cd69:	85 d2                	test   %edx,%edx
40cd6b:	74 05                	je     0x40cd72
40cd6d:	83 e9 01             	sub    $0x1,%ecx
40cd70:	75 cf                	jne    0x40cd41
40cd72:	5f                   	pop    %edi
40cd73:	5e                   	pop    %esi
40cd74:	5b                   	pop    %ebx
40cd75:	5d                   	pop    %ebp
40cd76:	c3                   	ret
40cd77:	8b ff                	mov    %edi,%edi
40cd79:	55                   	push   %ebp
40cd7a:	8b ec                	mov    %esp,%ebp
40cd7c:	8b 45 08             	mov    0x8(%ebp),%eax
40cd7f:	b9 00 01 00 00       	mov    $0x100,%ecx
40cd84:	66 3b c1             	cmp    %cx,%ax
40cd87:	73 20                	jae    0x40cda9
40cd89:	0f b6 c8             	movzbl %al,%ecx
40cd8c:	f6 04 4d e2 66 42 00 	testb  $0x1,0x4266e2(,%ecx,2)
40cd93:	01
40cd94:	74 0e                	je     0x40cda4
40cd96:	8b 45 0c             	mov    0xc(%ebp),%eax
40cd99:	8b 00                	mov    (%eax),%eax
40cd9b:	8b 80 94 00 00 00    	mov    0x94(%eax),%eax
40cda1:	8a 04 01             	mov    (%ecx,%eax,1),%al
40cda4:	0f b6 c0             	movzbl %al,%eax
40cda7:	5d                   	pop    %ebp
40cda8:	c3                   	ret
40cda9:	ff 75 0c             	push   0xc(%ebp)
40cdac:	50                   	push   %eax
40cdad:	e8 9f 8c 00 00       	call   0x415a51
40cdb2:	59                   	pop    %ecx
40cdb3:	59                   	pop    %ecx
40cdb4:	5d                   	pop    %ebp
40cdb5:	c3                   	ret
40cdb6:	8b ff                	mov    %edi,%edi
40cdb8:	55                   	push   %ebp
40cdb9:	8b ec                	mov    %esp,%ebp
40cdbb:	83 3d bc 49 43 00 00 	cmpl   $0x0,0x4349bc
40cdc2:	75 29                	jne    0x40cded
40cdc4:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40cdc8:	75 17                	jne    0x40cde1
40cdca:	e8 2c 20 00 00       	call   0x40edfb
40cdcf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40cdd5:	e8 a7 02 00 00       	call   0x40d081
40cdda:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40cddf:	5d                   	pop    %ebp
40cde0:	c3                   	ret
40cde1:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40cde5:	74 e3                	je     0x40cdca
40cde7:	5d                   	pop    %ebp
40cde8:	e9 3b ff ff ff       	jmp    0x40cd28
40cded:	6a 00                	push   $0x0