40c8e4:	32 c0                	xor    %al,%al
40c8e6:	eb 44                	jmp    0x40c92c
40c8e8:	ff 76 2c             	push   0x2c(%esi)
40c8eb:	e8 e0 fb ff ff       	call   0x40c4d0
40c8f0:	59                   	pop    %ecx
40c8f1:	83 e8 01             	sub    $0x1,%eax
40c8f4:	74 2b                	je     0x40c921
40c8f6:	83 e8 01             	sub    $0x1,%eax
40c8f9:	74 1d                	je     0x40c918
40c8fb:	48                   	dec    %eax
40c8fc:	83 e8 01             	sub    $0x1,%eax
40c8ff:	74 10                	je     0x40c911
40c901:	83 e8 04             	sub    $0x4,%eax
40c904:	75 ce                	jne    0x40c8d4
40c906:	8b 46 18             	mov    0x18(%esi),%eax
40c909:	99                   	cltd
40c90a:	89 07                	mov    %eax,(%edi)
40c90c:	89 57 04             	mov    %edx,0x4(%edi)
40c90f:	eb 15                	jmp    0x40c926
40c911:	8b 46 18             	mov    0x18(%esi),%eax
40c914:	89 07                	mov    %eax,(%edi)
40c916:	eb 0e                	jmp    0x40c926
40c918:	66 8b 46 18          	mov    0x18(%esi),%ax
40c91c:	66 89 07             	mov    %ax,(%edi)
40c91f:	eb 05                	jmp    0x40c926
40c921:	8a 46 18             	mov    0x18(%esi),%al
40c924:	88 07                	mov    %al,(%edi)
40c926:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40c92a:	b0 01                	mov    $0x1,%al
40c92c:	5f                   	pop    %edi
40c92d:	5e                   	pop    %esi
40c92e:	c3                   	ret
40c92f:	8b 51 20             	mov    0x20(%ecx),%edx
40c932:	8b c2                	mov    %edx,%eax
40c934:	c1 e8 05             	shr    $0x5,%eax
40c937:	a8 01                	test   $0x1,%al
40c939:	74 09                	je     0x40c944
40c93b:	81 ca 80 00 00 00    	or     $0x80,%edx
40c941:	89 51 20             	mov    %edx,0x20(%ecx)
40c944:	6a 00                	push   $0x0
40c946:	6a 08                	push   $0x8
40c948:	e8 1d fe ff ff       	call   0x40c76a
40c94d:	c3                   	ret
40c94e:	6a 01                	push   $0x1
40c950:	6a 10                	push   $0x10
40c952:	c7 41 28 08 00 00 00 	movl   $0x8,0x28(%ecx)
40c959:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40c960:	e8 05 fe ff ff       	call   0x40c76a
40c965:	c3                   	ret
40c966:	8b ff                	mov    %edi,%edi
40c968:	53                   	push   %ebx
40c969:	56                   	push   %esi
40c96a:	8b f1                	mov    %ecx,%esi
40c96c:	57                   	push   %edi
40c96d:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c971:	8b 46 14             	mov    0x14(%esi),%eax
40c974:	8b 5e 28             	mov    0x28(%esi),%ebx
40c977:	8b 78 fc             	mov    -0x4(%eax),%edi
40c97a:	89 7e 34             	mov    %edi,0x34(%esi)
40c97d:	83 fb ff             	cmp    $0xffffffff,%ebx
40c980:	75 05                	jne    0x40c987
40c982:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
40c987:	ff 76 2c             	push   0x2c(%esi)
40c98a:	0f b6 46 31          	movzbl 0x31(%esi),%eax
40c98e:	50                   	push   %eax
40c98f:	ff 76 04             	push   0x4(%esi)
40c992:	ff 36                	push   (%esi)
40c994:	e8 e8 f0 ff ff       	call   0x40ba81
40c999:	83 c4 10             	add    $0x10,%esp
40c99c:	84 c0                	test   %al,%al
40c99e:	74 19                	je     0x40c9b9
40c9a0:	85 ff                	test   %edi,%edi
40c9a2:	75 08                	jne    0x40c9ac
40c9a4:	bf b8 60 42 00       	mov    $0x4260b8,%edi
40c9a9:	89 7e 34             	mov    %edi,0x34(%esi)
40c9ac:	53                   	push   %ebx
40c9ad:	57                   	push   %edi
40c9ae:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40c9b2:	e8 d7 2e 00 00       	call   0x40f88e
40c9b7:	eb 13                	jmp    0x40c9cc
40c9b9:	85 ff                	test   %edi,%edi
40c9bb:	75 08                	jne    0x40c9c5
40c9bd:	bf c8 60 42 00       	mov    $0x4260c8,%edi
40c9c2:	89 7e 34             	mov    %edi,0x34(%esi)
40c9c5:	53                   	push   %ebx
40c9c6:	57                   	push   %edi
40c9c7:	e8 a0 2d 00 00       	call   0x40f76c
40c9cc:	59                   	pop    %ecx
40c9cd:	59                   	pop    %ecx
40c9ce:	5f                   	pop    %edi
40c9cf:	89 46 38             	mov    %eax,0x38(%esi)
40c9d2:	b0 01                	mov    $0x1,%al
40c9d4:	5e                   	pop    %esi
40c9d5:	5b                   	pop    %ebx
40c9d6:	c3                   	ret
40c9d7:	83 39 00             	cmpl   $0x0,(%ecx)
40c9da:	75 13                	jne    0x40c9ef
40c9dc:	e8 1a 24 00 00       	call   0x40edfb
40c9e1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c9e7:	e8 95 06 00 00       	call   0x40d081
40c9ec:	32 c0                	xor    %al,%al
40c9ee:	c3                   	ret
40c9ef:	b0 01                	mov    $0x1,%al
40c9f1:	c3                   	ret
40c9f2:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40c9f6:	74 19                	je     0x40ca11
40c9f8:	83 79 1c 07          	cmpl   $0x7,0x1c(%ecx)
40c9fc:	74 13                	je     0x40ca11
40c9fe:	e8 f8 23 00 00       	call   0x40edfb
40ca03:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ca09:	e8 73 06 00 00       	call   0x40d081
40ca0e:	32 c0                	xor    %al,%al
40ca10:	c3                   	ret
40ca11:	b0 01                	mov    $0x1,%al
40ca13:	c3                   	ret
40ca14:	8b ff                	mov    %edi,%edi
40ca16:	55                   	push   %ebp
40ca17:	8b ec                	mov    %esp,%ebp
40ca19:	8b d1                	mov    %ecx,%edx
40ca1b:	8b 0a                	mov    (%edx),%ecx
40ca1d:	8b 41 08             	mov    0x8(%ecx),%eax
40ca20:	3b 41 04             	cmp    0x4(%ecx),%eax
40ca23:	8b 45 0c             	mov    0xc(%ebp),%eax
40ca26:	75 14                	jne    0x40ca3c
40ca28:	80 79 0c 00          	cmpb   $0x0,0xc(%ecx)
40ca2c:	74 04                	je     0x40ca32
40ca2e:	ff 00                	incl   (%eax)
40ca30:	eb 03                	jmp    0x40ca35
40ca32:	83 08 ff             	orl    $0xffffffff,(%eax)
40ca35:	8b 02                	mov    (%edx),%eax
40ca37:	8a 40 0c             	mov    0xc(%eax),%al
40ca3a:	eb 16                	jmp    0x40ca52
40ca3c:	ff 00                	incl   (%eax)
40ca3e:	8b 02                	mov    (%edx),%eax
40ca40:	ff 40 08             	incl   0x8(%eax)
40ca43:	8b 02                	mov    (%edx),%eax
40ca45:	8b 08                	mov    (%eax),%ecx
40ca47:	8a 45 08             	mov    0x8(%ebp),%al
40ca4a:	88 01                	mov    %al,(%ecx)
40ca4c:	8b 02                	mov    (%edx),%eax
40ca4e:	ff 00                	incl   (%eax)
40ca50:	b0 01                	mov    $0x1,%al
40ca52:	5d                   	pop    %ebp
40ca53:	c2 08 00             	ret    $0x8
40ca56:	8b ff                	mov    %edi,%edi
40ca58:	55                   	push   %ebp
40ca59:	8b ec                	mov    %esp,%ebp
40ca5b:	83 ec 10             	sub    $0x10,%esp
40ca5e:	a1 14 30 43 00       	mov    0x433014,%eax
40ca63:	33 c5                	xor    %ebp,%eax
40ca65:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ca68:	53                   	push   %ebx
40ca69:	56                   	push   %esi
40ca6a:	8b f1                	mov    %ecx,%esi
40ca6c:	57                   	push   %edi
40ca6d:	80 7e 3c 00          	cmpb   $0x0,0x3c(%esi)
40ca71:	74 5c                	je     0x40cacf
40ca73:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40ca77:	7e 56                	jle    0x40cacf
40ca79:	8b 7e 34             	mov    0x34(%esi),%edi
40ca7c:	33 db                	xor    %ebx,%ebx
40ca7e:	ff 76 08             	push   0x8(%esi)
40ca81:	0f b7 07             	movzwl (%edi),%eax
40ca84:	8d 7f 02             	lea    0x2(%edi),%edi
40ca87:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40ca8b:	50                   	push   %eax
40ca8c:	6a 06                	push   $0x6
40ca8e:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ca91:	50                   	push   %eax
40ca92:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ca95:	50                   	push   %eax
40ca96:	e8 9f 72 00 00       	call   0x413d3a
40ca9b:	83 c4 14             	add    $0x14,%esp
40ca9e:	85 c0                	test   %eax,%eax
40caa0:	75 27                	jne    0x40cac9
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