40e907:	55                   	push   %ebp
40e908:	8b ec                	mov    %esp,%ebp
40e90a:	51                   	push   %ecx
40e90b:	51                   	push   %ecx
40e90c:	53                   	push   %ebx
40e90d:	56                   	push   %esi
40e90e:	57                   	push   %edi
40e90f:	51                   	push   %ecx
40e910:	8d 45 f8             	lea    -0x8(%ebp),%eax
40e913:	89 55 fc             	mov    %edx,-0x4(%ebp)
40e916:	50                   	push   %eax
40e917:	33 f6                	xor    %esi,%esi
40e919:	8b d9                	mov    %ecx,%ebx
40e91b:	56                   	push   %esi
40e91c:	e8 cb fc ff ff       	call   0x40e5ec
40e921:	8b f8                	mov    %eax,%edi
40e923:	83 c4 0c             	add    $0xc,%esp
40e926:	85 ff                	test   %edi,%edi
40e928:	74 29                	je     0x40e953
40e92a:	8b 47 20             	mov    0x20(%edi),%eax
40e92d:	03 c3                	add    %ebx,%eax
40e92f:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e932:	39 77 18             	cmp    %esi,0x18(%edi)
40e935:	76 1c                	jbe    0x40e953
40e937:	8b 04 b0             	mov    (%eax,%esi,4),%eax
40e93a:	ff 75 fc             	push   -0x4(%ebp)
40e93d:	03 c3                	add    %ebx,%eax
40e93f:	50                   	push   %eax
40e940:	ff 15 f0 21 41 00    	call   *0x4121f0
40e946:	85 c0                	test   %eax,%eax
40e948:	74 10                	je     0x40e95a
40e94a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e94d:	46                   	inc    %esi
40e94e:	3b 77 18             	cmp    0x18(%edi),%esi
40e951:	72 e4                	jb     0x40e937
40e953:	33 c0                	xor    %eax,%eax
40e955:	5f                   	pop    %edi
40e956:	5e                   	pop    %esi
40e957:	5b                   	pop    %ebx
40e958:	c9                   	leave
40e959:	c3                   	ret
40e95a:	8b 47 24             	mov    0x24(%edi),%eax
40e95d:	8b 4f 1c             	mov    0x1c(%edi),%ecx
40e960:	03 cb                	add    %ebx,%ecx
40e962:	8d 04 70             	lea    (%eax,%esi,2),%eax
40e965:	0f b7 04 18          	movzwl (%eax,%ebx,1),%eax
40e969:	8b 04 81             	mov    (%ecx,%eax,4),%eax
40e96c:	03 c3                	add    %ebx,%eax
40e96e:	eb e5                	jmp    0x40e955
40e970:	55                   	push   %ebp
40e971:	8b ec                	mov    %esp,%ebp
40e973:	83 ec 14             	sub    $0x14,%esp
40e976:	53                   	push   %ebx
40e977:	56                   	push   %esi
40e978:	8b f1                	mov    %ecx,%esi
40e97a:	89 55 f0             	mov    %edx,-0x10(%ebp)
40e97d:	57                   	push   %edi
40e97e:	89 75 f4             	mov    %esi,-0xc(%ebp)
40e981:	e8 dc fc ff ff       	call   0x40e662
40e986:	8b d8                	mov    %eax,%ebx
40e988:	85 db                	test   %ebx,%ebx
40e98a:	0f 84 ca 00 00 00    	je     0x40ea5a
40e990:	6a 40                	push   $0x40
40e992:	68 00 30 00 00       	push   $0x3000
40e997:	ff 73 50             	push   0x50(%ebx)
40e99a:	6a 00                	push   $0x0
40e99c:	ff 15 d8 21 41 00    	call   *0x4121d8
40e9a2:	8b f8                	mov    %eax,%edi
40e9a4:	85 ff                	test   %edi,%edi
40e9a6:	0f 84 ae 00 00 00    	je     0x40ea5a
40e9ac:	0f b7 43 14          	movzwl 0x14(%ebx),%eax
40e9b0:	83 c0 18             	add    $0x18,%eax
40e9b3:	03 c3                	add    %ebx,%eax
40e9b5:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e9b8:	ff 70 14             	push   0x14(%eax)
40e9bb:	56                   	push   %esi
40e9bc:	57                   	push   %edi
40e9bd:	e8 6a 26 ff ff       	call   0x40102c
40e9c2:	33 c9                	xor    %ecx,%ecx
40e9c4:	83 c4 0c             	add    $0xc,%esp
40e9c7:	33 c0                	xor    %eax,%eax
40e9c9:	66 3b 4b 06          	cmp    0x6(%ebx),%cx
40e9cd:	eb 44                	jmp    0x40ea13
40e9cf:	0f b7 c0             	movzwl %ax,%eax
40e9d2:	6b f0 28             	imul   $0x28,%eax,%esi
40e9d5:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e9d8:	ff 74 06 08          	push   0x8(%esi,%eax,1)
40e9dc:	8b 44 06 0c          	mov    0xc(%esi,%eax,1),%eax
40e9e0:	03 c7                	add    %edi,%eax
40e9e2:	6a 00                	push   $0x0
40e9e4:	50                   	push   %eax
40e9e5:	e8 68 26 ff ff       	call   0x401052
40e9ea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e9ed:	83 c4 0c             	add    $0xc,%esp
40e9f0:	ff 74 0e 10          	push   0x10(%esi,%ecx,1)
40e9f4:	8b 44 0e 14          	mov    0x14(%esi,%ecx,1),%eax
40e9f8:	03 45 f4             	add    -0xc(%ebp),%eax
40e9fb:	50                   	push   %eax
40e9fc:	8b 44 0e 0c          	mov    0xc(%esi,%ecx,1),%eax
40ea00:	03 c7                	add    %edi,%eax
40ea02:	50                   	push   %eax
40ea03:	e8 24 26 ff ff       	call   0x40102c
40ea08:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ea0b:	83 c4 0c             	add    $0xc,%esp
40ea0e:	40                   	inc    %eax
40ea0f:	66 3b 43 06          	cmp    0x6(%ebx),%ax
40ea13:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ea16:	72 b7                	jb     0x40e9cf
40ea18:	8b cf                	mov    %edi,%ecx
40ea1a:	e8 7c fe ff ff       	call   0x40e89b
40ea1f:	8b c8                	mov    %eax,%ecx
40ea21:	8b f2                	mov    %edx,%esi
40ea23:	8b c7                	mov    %edi,%eax
40ea25:	99                   	cltd
40ea26:	2b c1                	sub    %ecx,%eax
40ea28:	8b cf                	mov    %edi,%ecx
40ea2a:	1b d6                	sbb    %esi,%edx
40ea2c:	52                   	push   %edx
40ea2d:	50                   	push   %eax
40ea2e:	e8 c1 fc ff ff       	call   0x40e6f4
40ea33:	59                   	pop    %ecx
40ea34:	59                   	pop    %ecx
40ea35:	84 c0                	test   %al,%al
40ea37:	74 1d                	je     0x40ea56
40ea39:	8b cf                	mov    %edi,%ecx
40ea3b:	e8 22 fd ff ff       	call   0x40e762
40ea40:	84 c0                	test   %al,%al
40ea42:	74 12                	je     0x40ea56
40ea44:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40ea48:	74 0c                	je     0x40ea56
40ea4a:	8b 43 28             	mov    0x28(%ebx),%eax
40ea4d:	6a 00                	push   $0x0
40ea4f:	6a 01                	push   $0x1
40ea51:	57                   	push   %edi
40ea52:	03 c7                	add    %edi,%eax
40ea54:	ff d0                	call   *%eax
40ea56:	8b c7                	mov    %edi,%eax
40ea58:	eb 02                	jmp    0x40ea5c
40ea5a:	33 c0                	xor    %eax,%eax
40ea5c:	5f                   	pop    %edi
40ea5d:	5e                   	pop    %esi
40ea5e:	5b                   	pop    %ebx
40ea5f:	c9                   	leave
40ea60:	c3                   	ret
40ea61:	55                   	push   %ebp
40ea62:	8b ec                	mov    %esp,%ebp
40ea64:	8b 55 0c             	mov    0xc(%ebp),%edx
40ea67:	56                   	push   %esi
40ea68:	57                   	push   %edi
40ea69:	8b f9                	mov    %ecx,%edi
40ea6b:	6a 28                	push   $0x28
40ea6d:	83 67 28 00          	andl   $0x0,0x28(%edi)
40ea71:	83 67 2c 00          	andl   $0x0,0x2c(%edi)
40ea75:	e8 1e 70 ff ff       	call   0x405a98
40ea7a:	8b 45 08             	mov    0x8(%ebp),%eax
40ea7d:	8d 4f 28             	lea    0x28(%edi),%ecx
40ea80:	03 47 0c             	add    0xc(%edi),%eax
40ea83:	83 c4 04             	add    $0x4,%esp
40ea86:	ff 77 10             	push   0x10(%edi)
40ea89:	50                   	push   %eax
40ea8a:	e8 32 43 ff ff       	call   0x402dc1
40ea8f:	8b c7                	mov    %edi,%eax
40ea91:	5f                   	pop    %edi
40ea92:	5e                   	pop    %esi
40ea93:	5d                   	pop    %ebp
40ea94:	c2 0c 00             	ret    $0xc
40ea97:	55                   	push   %ebp
40ea98:	8b ec                	mov    %esp,%ebp
40ea9a:	8b 45 08             	mov    0x8(%ebp),%eax
40ea9d:	53                   	push   %ebx
40ea9e:	56                   	push   %esi
40ea9f:	8b d9                	mov    %ecx,%ebx
40eaa1:	8b f0                	mov    %eax,%esi
40eaa3:	57                   	push   %edi
40eaa4:	6a 0a                	push   $0xa
40eaa6:	59                   	pop    %ecx
40eaa7:	83 63 28 00          	andl   $0x0,0x28(%ebx)
40eaab:	8b fb                	mov    %ebx,%edi
40eaad:	83 63 2c 00          	andl   $0x0,0x2c(%ebx)
40eab1:	83 c0 28             	add    $0x28,%eax
40eab4:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40eab6:	50                   	push   %eax
40eab7:	8d 4b 28             	lea    0x28(%ebx),%ecx
40eaba:	e8 0d 42 ff ff       	call   0x402ccc
40eabf:	5f                   	pop    %edi
40eac0:	5e                   	pop    %esi
40eac1:	8b c3                	mov    %ebx,%eax
40eac3:	5b                   	pop    %ebx
40eac4:	5d                   	pop    %ebp
40eac5:	c2 04 00             	ret    $0x4
40eac8:	55                   	push   %ebp
40eac9:	8b ec                	mov    %esp,%ebp
40eacb:	83 ec 2c             	sub    $0x2c,%esp
40eace:	56                   	push   %esi
40eacf:	e8 18 fe ff ff       	call   0x40e8ec
40ead4:	51                   	push   %ecx
40ead5:	ba cc 43 41 00       	mov    $0x4143cc,%edx
40eada:	8b c8                	mov    %eax,%ecx
40eadc:	e8 26 fe ff ff       	call   0x40e907
40eae1:	59                   	pop    %ecx
40eae2:	85 c0                	test   %eax,%eax
40eae4:	0f 84 8a 00 00 00    	je     0x40eb74
40eaea:	6a 1c                	push   $0x1c
40eaec:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40eaef:	51                   	push   %ecx
40eaf0:	68 c8 ea 40 00       	push   $0x40eac8
40eaf5:	ff d0                	call   *%eax
40eaf7:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40eafa:	85 c9                	test   %ecx,%ecx
40eafc:	74 76                	je     0x40eb74
40eafe:	e8 5f fc ff ff       	call   0x40e762
40eb03:	33 f6                	xor    %esi,%esi
40eb05:	b8 dc 43 41 00       	mov    $0x4143dc,%eax
40eb0a:	56                   	push   %esi
40eb0b:	50                   	push   %eax
40eb0c:	50                   	push   %eax
40eb0d:	56                   	push   %esi
40eb0e:	ff 15 84 22 41 00    	call   *0x412284
40eb14:	51                   	push   %ecx
40eb15:	8d 45 f8             	lea    -0x8(%ebp),%eax
40eb18:	89 75 f8             	mov    %esi,-0x8(%ebp)
40eb1b:	50                   	push   %eax
40eb1c:	68 e8 43 41 00       	push   $0x4143e8
40eb21:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40eb24:	e8 e9 48 ff ff       	call   0x403412
40eb29:	50                   	push   %eax
40eb2a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40eb2d:	e8 45 00 00 00       	call   0x40eb77
40eb32:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eb35:	e8 f3 6e ff ff       	call   0x405a2d
40eb3a:	33 c9                	xor    %ecx,%ecx
40eb3c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40eb3f:	e8 e9 6e ff ff       	call   0x405a2d
40eb44:	51                   	push   %ecx
40eb45:	8d 45 f8             	lea    -0x8(%ebp),%eax
40eb48:	89 75 f8             	mov    %esi,-0x8(%ebp)
40eb4b:	50                   	push   %eax
40eb4c:	68 a8 44 41 00       	push   $0x4144a8
40eb51:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40eb54:	e8 b9 48 ff ff       	call   0x403412
40eb59:	50                   	push   %eax
40eb5a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40eb5d:	e8 15 00 00 00       	call   0x40eb77
40eb62:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eb65:	e8 c3 6e ff ff       	call   0x405a2d
40eb6a:	33 c9                	xor    %ecx,%ecx
40eb6c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40eb6f:	e8 b9 6e ff ff       	call   0x405a2d
40eb74:	5e                   	pop    %esi
40eb75:	c9                   	leave
40eb76:	c3                   	ret
40eb77:	55                   	push   %ebp
40eb78:	8b ec                	mov    %esp,%ebp
40eb7a:	83 ec 54             	sub    $0x54,%esp
40eb7d:	53                   	push   %ebx
40eb7e:	56                   	push   %esi
40eb7f:	6a 44                	push   $0x44
40eb81:	33 db                	xor    %ebx,%ebx
40eb83:	8d 45 ac             	lea    -0x54(%ebp),%eax
40eb86:	53                   	push   %ebx
40eb87:	50                   	push   %eax
40eb88:	8b f1                	mov    %ecx,%esi
40eb8a:	e8 c3 24 ff ff       	call   0x401052
40eb8f:	8b 45 0c             	mov    0xc(%ebp),%eax
40eb92:	8d 55 f0             	lea    -0x10(%ebp),%edx
40eb95:	83 c4 0c             	add    $0xc,%esp
40eb98:	c7 45 ac 44 00 00 00 	movl   $0x44,-0x54(%ebp)
40eb9f:	8b 08                	mov    (%eax),%ecx
40eba1:	8b 45 08             	mov    0x8(%ebp),%eax
40eba4:	52                   	push   %edx
40eba5:	8d 55 ac             	lea    -0x54(%ebp),%edx
40eba8:	52                   	push   %edx
40eba9:	53                   	push   %ebx
40ebaa:	53                   	push   %ebx
40ebab:	53                   	push   %ebx
40ebac:	53                   	push   %ebx
40ebad:	53                   	push   %ebx
40ebae:	53                   	push   %ebx
40ebaf:	51                   	push   %ecx
40ebb0:	ff 30                	push   (%eax)
40ebb2:	ff 15 00 21 41 00    	call   *0x412100
40ebb8:	85 c0                	test   %eax,%eax
40ebba:	74 0a                	je     0x40ebc6
40ebbc:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ebbf:	89 06                	mov    %eax,(%esi)
40ebc1:	33 c0                	xor    %eax,%eax
40ebc3:	40                   	inc    %eax
40ebc4:	eb 02                	jmp    0x40ebc8
40ebc6:	33 c0                	xor    %eax,%eax
40ebc8:	5e                   	pop    %esi
40ebc9:	5b                   	pop    %ebx
40ebca:	c9                   	leave
40ebcb:	c2 0c 00             	ret    $0xc
40ebce:	83 21 00             	andl   $0x0,(%ecx)
40ebd1:	8b c1                	mov    %ecx,%eax
40ebd3:	c3                   	ret
40ebd4:	55                   	push   %ebp
40ebd5:	8b ec                	mov    %esp,%ebp
40ebd7:	51                   	push   %ecx
40ebd8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ebdc:	56                   	push   %esi
40ebdd:	68 b0 43 41 00       	push   $0x4143b0
40ebe2:	68 c0 43 41 00       	push   $0x4143c0
40ebe7:	8b f1                	mov    %ecx,%esi
40ebe9:	ff 15 ac 21 41 00    	call   *0x4121ac
40ebef:	50                   	push   %eax
40ebf0:	ff 15 b4 21 41 00    	call   *0x4121b4
40ebf6:	85 c0                	test   %eax,%eax
40ebf8:	74 08                	je     0x40ec02
40ebfa:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40ebfd:	51                   	push   %ecx
40ebfe:	ff 36                	push   (%esi)
40ec00:	ff d0                	call   *%eax
40ec02:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ec05:	5e                   	pop    %esi
40ec06:	c9                   	leave
40ec07:	c3                   	ret
40ec08:	c3                   	ret
40ec09:	55                   	push   %ebp
40ec0a:	8b ec                	mov    %esp,%ebp
40ec0c:	8b 45 08             	mov    0x8(%ebp),%eax
40ec0f:	89 01                	mov    %eax,(%ecx)
40ec11:	8b c1                	mov    %ecx,%eax
40ec13:	5d                   	pop    %ebp
40ec14:	c2 04 00             	ret    $0x4
40ec17:	55                   	push   %ebp
40ec18:	8b ec                	mov    %esp,%ebp
40ec1a:	81 ec 2c 02 00 00    	sub    $0x22c,%esp
40ec20:	53                   	push   %ebx
40ec21:	56                   	push   %esi
40ec22:	57                   	push   %edi
40ec23:	6a 00                	push   $0x0
40ec25:	6a 02                	push   $0x2
40ec27:	8b da                	mov    %edx,%ebx
40ec29:	c7 85 d4 fd ff ff 2c 	movl   $0x22c,-0x22c(%ebp)
40ec30:	02 00 00
40ec33:	8b f1                	mov    %ecx,%esi
40ec35:	ff 15 5c 21 41 00    	call   *0x41215c
40ec3b:	8b f8                	mov    %eax,%edi
40ec3d:	83 ff ff             	cmp    $0xffffffff,%edi
40ec40:	74 31                	je     0x40ec73
40ec42:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40ec48:	50                   	push   %eax
40ec49:	57                   	push   %edi
40ec4a:	ff 15 64 21 41 00    	call   *0x412164
40ec50:	eb 16                	jmp    0x40ec68
40ec52:	39 9d dc fd ff ff    	cmp    %ebx,-0x224(%ebp)
40ec58:	74 23                	je     0x40ec7d
40ec5a:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40ec60:	50                   	push   %eax