40d791:	e8 59 7d 03 00       	call   0x4454ef
40d796:	5f                   	pop    %edi
40d797:	8b c6                	mov    %esi,%eax
40d799:	5e                   	pop    %esi
40d79a:	5b                   	pop    %ebx
40d79b:	5d                   	pop    %ebp
40d79c:	c2 1c 00             	ret    $0x1c
40d79f:	55                   	push   %ebp
40d7a0:	8b ec                	mov    %esp,%ebp
40d7a2:	56                   	push   %esi
40d7a3:	8b 75 08             	mov    0x8(%ebp),%esi
40d7a6:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
40d7aa:	74 08                	je     0x40d7b4
40d7ac:	ff 76 14             	push   0x14(%esi)
40d7af:	e8 3b 7d 03 00       	call   0x4454ef
40d7b4:	8d 46 04             	lea    0x4(%esi),%eax
40d7b7:	50                   	push   %eax
40d7b8:	e8 76 f9 ff ff       	call   0x40d133
40d7bd:	6a 44                	push   $0x44
40d7bf:	6a 00                	push   $0x0
40d7c1:	56                   	push   %esi
40d7c2:	e8 a9 1e 02 00       	call   0x42f670
40d7c7:	83 c4 0c             	add    $0xc,%esp
40d7ca:	5e                   	pop    %esi
40d7cb:	5d                   	pop    %ebp
40d7cc:	c2 04 00             	ret    $0x4
40d7cf:	55                   	push   %ebp
40d7d0:	8b ec                	mov    %esp,%ebp
40d7d2:	56                   	push   %esi
40d7d3:	8b 75 08             	mov    0x8(%ebp),%esi
40d7d6:	57                   	push   %edi
40d7d7:	33 ff                	xor    %edi,%edi
40d7d9:	8b 4e 10             	mov    0x10(%esi),%ecx
40d7dc:	85 c9                	test   %ecx,%ecx
40d7de:	74 09                	je     0x40d7e9
40d7e0:	8b 01                	mov    (%ecx),%eax
40d7e2:	51                   	push   %ecx
40d7e3:	ff 50 08             	call   *0x8(%eax)
40d7e6:	21 7e 10             	and    %edi,0x10(%esi)
40d7e9:	39 7e 0c             	cmp    %edi,0xc(%esi)
40d7ec:	74 39                	je     0x40d827
40d7ee:	68 d8 ff 44 00       	push   $0x44ffd8
40d7f3:	ff 76 0c             	push   0xc(%esi)
40d7f6:	ff 15 dc b0 44 00    	call   *0x44b0dc
40d7fc:	85 c0                	test   %eax,%eax
40d7fe:	74 02                	je     0x40d802
40d800:	ff d0                	call   *%eax
40d802:	ff 76 0c             	push   0xc(%esi)
40d805:	ff 15 b0 b1 44 00    	call   *0x44b1b0
40d80b:	85 c0                	test   %eax,%eax
40d80d:	75 14                	jne    0x40d823
40d80f:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d815:	0f b7 f8             	movzwl %ax,%edi
40d818:	81 cf 00 00 07 80    	or     $0x80070000,%edi
40d81e:	85 c0                	test   %eax,%eax
40d820:	0f 4e f8             	cmovle %eax,%edi
40d823:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40d827:	8b c7                	mov    %edi,%eax
40d829:	5f                   	pop    %edi
40d82a:	5e                   	pop    %esi
40d82b:	5d                   	pop    %ebp
40d82c:	c2 04 00             	ret    $0x4
40d82f:	55                   	push   %ebp
40d830:	8b ec                	mov    %esp,%ebp
40d832:	53                   	push   %ebx
40d833:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d836:	56                   	push   %esi
40d837:	33 f6                	xor    %esi,%esi
40d839:	57                   	push   %edi
40d83a:	8b fe                	mov    %esi,%edi
40d83c:	39 73 04             	cmp    %esi,0x4(%ebx)
40d83f:	76 25                	jbe    0x40d866
40d841:	8b 03                	mov    (%ebx),%eax
40d843:	6a ff                	push   $0xffffffff
40d845:	ff 75 0c             	push   0xc(%ebp)
40d848:	6a ff                	push   $0xffffffff
40d84a:	8d 04 f8             	lea    (%eax,%edi,8),%eax
40d84d:	ff 30                	push   (%eax)
40d84f:	89 45 08             	mov    %eax,0x8(%ebp)
40d852:	56                   	push   %esi
40d853:	6a 7f                	push   $0x7f
40d855:	ff 15 28 b1 44 00    	call   *0x44b128
40d85b:	83 f8 02             	cmp    $0x2,%eax
40d85e:	74 14                	je     0x40d874
40d860:	47                   	inc    %edi
40d861:	3b 7b 04             	cmp    0x4(%ebx),%edi
40d864:	72 db                	jb     0x40d841
40d866:	be 90 04 07 80       	mov    $0x80070490,%esi
40d86b:	5f                   	pop    %edi
40d86c:	8b c6                	mov    %esi,%eax
40d86e:	5e                   	pop    %esi
40d86f:	5b                   	pop    %ebx
40d870:	5d                   	pop    %ebp
40d871:	c2 0c 00             	ret    $0xc
40d874:	8b 45 10             	mov    0x10(%ebp),%eax
40d877:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d87a:	89 08                	mov    %ecx,(%eax)
40d87c:	eb ed                	jmp    0x40d86b
40d87e:	55                   	push   %ebp
40d87f:	8b ec                	mov    %esp,%ebp
40d881:	83 ec 0c             	sub    $0xc,%esp
40d884:	56                   	push   %esi
40d885:	57                   	push   %edi
40d886:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d889:	33 ff                	xor    %edi,%edi
40d88b:	50                   	push   %eax
40d88c:	68 f8 08 45 00       	push   $0x4508f8
40d891:	ff 75 0c             	push   0xc(%ebp)
40d894:	89 7d f4             	mov    %edi,-0xc(%ebp)
40d897:	89 7d fc             	mov    %edi,-0x4(%ebp)
40d89a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40d89d:	e8 61 5f 03 00       	call   0x443803
40d8a2:	8b f0                	mov    %eax,%esi
40d8a4:	85 f6                	test   %esi,%esi
40d8a6:	79 12                	jns    0x40d8ba
40d8a8:	68 18 09 45 00       	push   $0x450918
40d8ad:	56                   	push   %esi
40d8ae:	e8 7c 28 03 00       	call   0x44012f
40d8b3:	59                   	pop    %ecx
40d8b4:	59                   	pop    %ecx
40d8b5:	e9 10 01 00 00       	jmp    0x40d9ca
40d8ba:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d8bd:	8d 55 f8             	lea    -0x8(%ebp),%edx
40d8c0:	52                   	push   %edx
40d8c1:	50                   	push   %eax
40d8c2:	8b 08                	mov    (%eax),%ecx
40d8c4:	ff 51 20             	call   *0x20(%ecx)
40d8c7:	8b f0                	mov    %eax,%esi
40d8c9:	85 f6                	test   %esi,%esi
40d8cb:	79 07                	jns    0x40d8d4
40d8cd:	68 40 09 45 00       	push   $0x450940
40d8d2:	eb d9                	jmp    0x40d8ad
40d8d4:	8b 45 f8             	mov    -0x8(%ebp),%eax
40d8d7:	85 c0                	test   %eax,%eax
40d8d9:	75 07                	jne    0x40d8e2
40d8db:	8b f7                	mov    %edi,%esi
40d8dd:	e9 e8 00 00 00       	jmp    0x40d9ca
40d8e2:	53                   	push   %ebx
40d8e3:	6a 01                	push   $0x1
40d8e5:	c1 e0 03             	shl    $0x3,%eax
40d8e8:	50                   	push   %eax
40d8e9:	e8 e6 5f ff ff       	call   0x4038d4
40d8ee:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d8f1:	89 43 18             	mov    %eax,0x18(%ebx)
40d8f4:	85 c0                	test   %eax,%eax
40d8f6:	75 1f                	jne    0x40d917
40d8f8:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40d8fd:	56                   	push   %esi
40d8fe:	68 65 02 00 00       	push   $0x265
40d903:	68 98 01 45 00       	push   $0x450198
40d908:	e8 c6 5e ff ff       	call   0x4037d3
40d90d:	68 6c 09 45 00       	push   $0x45096c
40d912:	e9 aa 00 00 00       	jmp    0x40d9c1
40d917:	8b 45 f8             	mov    -0x8(%ebp),%eax
40d91a:	89 43 1c             	mov    %eax,0x1c(%ebx)
40d91d:	85 c0                	test   %eax,%eax
40d91f:	0f 84 a4 00 00 00    	je     0x40d9c9
40d925:	8b 43 18             	mov    0x18(%ebx),%eax
40d928:	6a 00                	push   $0x0
40d92a:	8d 04 f8             	lea    (%eax,%edi,8),%eax
40d92d:	89 45 08             	mov    %eax,0x8(%ebp)
40d930:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d933:	50                   	push   %eax
40d934:	ff 75 f4             	push   -0xc(%ebp)
40d937:	e8 24 5e 03 00       	call   0x443760
40d93c:	8b f0                	mov    %eax,%esi
40d93e:	85 f6                	test   %esi,%esi
40d940:	78 7a                	js     0x40d9bc
40d942:	ff 75 08             	push   0x8(%ebp)
40d945:	68 a0 09 45 00       	push   $0x4509a0
40d94a:	ff 75 fc             	push   -0x4(%ebp)
40d94d:	e8 75 58 03 00       	call   0x4431c7
40d952:	8b f0                	mov    %eax,%esi
40d954:	85 f6                	test   %esi,%esi
40d956:	78 5d                	js     0x40d9b5
40d958:	8d 45 0c             	lea    0xc(%ebp),%eax
40d95b:	50                   	push   %eax
40d95c:	68 e0 09 45 00       	push   $0x4509e0
40d961:	ff 75 fc             	push   -0x4(%ebp)
40d964:	e8 72 5a 03 00       	call   0x4433db
40d969:	8b f0                	mov    %eax,%esi
40d96b:	81 fe 90 04 07 80    	cmp    $0x80070490,%esi
40d971:	75 09                	jne    0x40d97c
40d973:	33 c9                	xor    %ecx,%ecx
40d975:	33 f6                	xor    %esi,%esi
40d977:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40d97a:	eb 03                	jmp    0x40d97f
40d97c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d97f:	85 f6                	test   %esi,%esi
40d981:	78 2b                	js     0x40d9ae
40d983:	33 c0                	xor    %eax,%eax
40d985:	85 c9                	test   %ecx,%ecx
40d987:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d98a:	0f 94 c0             	sete   %al
40d98d:	40                   	inc    %eax
40d98e:	89 41 04             	mov    %eax,0x4(%ecx)
40d991:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d994:	85 c9                	test   %ecx,%ecx
40d996:	74 0a                	je     0x40d9a2
40d998:	8b 01                	mov    (%ecx),%eax
40d99a:	51                   	push   %ecx
40d99b:	ff 50 08             	call   *0x8(%eax)
40d99e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d9a2:	47                   	inc    %edi
40d9a3:	3b 7d f8             	cmp    -0x8(%ebp),%edi
40d9a6:	0f 82 79 ff ff ff    	jb     0x40d925
40d9ac:	eb 1b                	jmp    0x40d9c9
40d9ae:	68 f0 09 45 00       	push   $0x4509f0
40d9b3:	eb 0c                	jmp    0x40d9c1
40d9b5:	68 b8 09 45 00       	push   $0x4509b8
40d9ba:	eb 05                	jmp    0x40d9c1
40d9bc:	68 48 ca 44 00       	push   $0x44ca48
40d9c1:	56                   	push   %esi
40d9c2:	e8 68 27 03 00       	call   0x44012f
40d9c7:	59                   	pop    %ecx
40d9c8:	59                   	pop    %ecx
40d9c9:	5b                   	pop    %ebx
40d9ca:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d9cd:	85 c9                	test   %ecx,%ecx
40d9cf:	74 06                	je     0x40d9d7
40d9d1:	8b 01                	mov    (%ecx),%eax
40d9d3:	51                   	push   %ecx
40d9d4:	ff 50 08             	call   *0x8(%eax)
40d9d7:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d9da:	85 c9                	test   %ecx,%ecx
40d9dc:	74 06                	je     0x40d9e4
40d9de:	8b 01                	mov    (%ecx),%eax
40d9e0:	51                   	push   %ecx
40d9e1:	ff 50 08             	call   *0x8(%eax)
40d9e4:	5f                   	pop    %edi
40d9e5:	8b c6                	mov    %esi,%eax
40d9e7:	5e                   	pop    %esi
40d9e8:	8b e5                	mov    %ebp,%esp
40d9ea:	5d                   	pop    %ebp
40d9eb:	c2 08 00             	ret    $0x8
40d9ee:	55                   	push   %ebp
40d9ef:	8b ec                	mov    %esp,%ebp
40d9f1:	83 ec 10             	sub    $0x10,%esp
40d9f4:	56                   	push   %esi
40d9f5:	57                   	push   %edi
40d9f6:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d9f9:	33 ff                	xor    %edi,%edi
40d9fb:	50                   	push   %eax
40d9fc:	68 7c 08 45 00       	push   $0x45087c
40da01:	ff 75 10             	push   0x10(%ebp)
40da04:	89 7d f4             	mov    %edi,-0xc(%ebp)
40da07:	89 7d fc             	mov    %edi,-0x4(%ebp)
40da0a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40da0d:	89 7d f0             	mov    %edi,-0x10(%ebp)
40da10:	e8 ee 5d 03 00       	call   0x443803
40da15:	8b f0                	mov    %eax,%esi
40da17:	85 f6                	test   %esi,%esi
40da19:	79 12                	jns    0x40da2d
40da1b:	68 90 02 45 00       	push   $0x450290
40da20:	56                   	push   %esi
40da21:	e8 09 27 03 00       	call   0x44012f
40da26:	59                   	pop    %ecx
40da27:	59                   	pop    %ecx
40da28:	e9 d0 00 00 00       	jmp    0x40dafd
40da2d:	8b 45 f4             	mov    -0xc(%ebp),%eax
40da30:	8d 55 f8             	lea    -0x8(%ebp),%edx
40da33:	52                   	push   %edx
40da34:	50                   	push   %eax
40da35:	8b 08                	mov    (%eax),%ecx
40da37:	ff 51 20             	call   *0x20(%ecx)
40da3a:	8b f0                	mov    %eax,%esi
40da3c:	85 f6                	test   %esi,%esi
40da3e:	79 07                	jns    0x40da47
40da40:	68 b0 02 45 00       	push   $0x4502b0
40da45:	eb d9                	jmp    0x40da20
40da47:	8b 45 f8             	mov    -0x8(%ebp),%eax
40da4a:	85 c0                	test   %eax,%eax
40da4c:	75 07                	jne    0x40da55
40da4e:	8b f7                	mov    %edi,%esi
40da50:	e9 a8 00 00 00       	jmp    0x40dafd
40da55:	53                   	push   %ebx
40da56:	6a 01                	push   $0x1
40da58:	c1 e0 03             	shl    $0x3,%eax
40da5b:	50                   	push   %eax
40da5c:	e8 73 5e ff ff       	call   0x4038d4
40da61:	8b 5d 08             	mov    0x8(%ebp),%ebx
40da64:	89 43 7c             	mov    %eax,0x7c(%ebx)
40da67:	85 c0                	test   %eax,%eax
40da69:	75 1f                	jne    0x40da8a
40da6b:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40da70:	56                   	push   %esi
40da71:	68 2b 02 00 00       	push   $0x22b
40da76:	68 98 01 45 00       	push   $0x450198
40da7b:	e8 53 5d ff ff       	call   0x4037d3
40da80:	68 94 08 45 00       	push   $0x450894
40da85:	e9 b8 00 00 00       	jmp    0x40db42
40da8a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40da8d:	89 83 80 00 00 00    	mov    %eax,0x80(%ebx)
40da93:	85 c0                	test   %eax,%eax
40da95:	74 63                	je     0x40dafa
40da97:	8b 43 7c             	mov    0x7c(%ebx),%eax
40da9a:	6a 00                	push   $0x0
40da9c:	8d 04 f8             	lea    (%eax,%edi,8),%eax
40da9f:	89 45 10             	mov    %eax,0x10(%ebp)
40daa2:	8d 45 fc             	lea    -0x4(%ebp),%eax
40daa5:	50                   	push   %eax
40daa6:	ff 75 f4             	push   -0xc(%ebp)
40daa9:	e8 b2 5c 03 00       	call   0x443760
40daae:	8b f0                	mov    %eax,%esi
40dab0:	85 f6                	test   %esi,%esi
40dab2:	0f 88 85 00 00 00    	js     0x40db3d
40dab8:	8d 45 f0             	lea    -0x10(%ebp),%eax
40dabb:	50                   	push   %eax
40dabc:	68 64 ca 44 00       	push   $0x44ca64
40dac1:	ff 75 fc             	push   -0x4(%ebp)
40dac4:	e8 fe 56 03 00       	call   0x4431c7
40dac9:	8b f0                	mov    %eax,%esi
40dacb:	85 f6                	test   %esi,%esi
40dacd:	78 67                	js     0x40db36
40dacf:	ff 75 10             	push   0x10(%ebp)
40dad2:	ff 75 f0             	push   -0x10(%ebp)
40dad5:	ff 75 0c             	push   0xc(%ebp)
40dad8:	e8 7a f1 ff ff       	call   0x40cc57
40dadd:	8b f0                	mov    %eax,%esi
40dadf:	85 f6                	test   %esi,%esi
40dae1:	78 4c                	js     0x40db2f
40dae3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40dae6:	85 c9                	test   %ecx,%ecx
40dae8:	74 0a                	je     0x40daf4
40daea:	8b 01                	mov    (%ecx),%eax
40daec:	51                   	push   %ecx
40daed:	ff 50 08             	call   *0x8(%eax)
40daf0:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40daf4:	47                   	inc    %edi
40daf5:	3b 7d f8             	cmp    -0x8(%ebp),%edi
40daf8:	72 9d                	jb     0x40da97
40dafa:	33 f6                	xor    %esi,%esi
40dafc:	5b                   	pop    %ebx
40dafd:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40db00:	85 c9                	test   %ecx,%ecx
40db02:	74 06                	je     0x40db0a
40db04:	8b 01                	mov    (%ecx),%eax
40db06:	51                   	push   %ecx
40db07:	ff 50 08             	call   *0x8(%eax)
40db0a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40db0d:	85 c9                	test   %ecx,%ecx
40db0f:	74 06                	je     0x40db17
40db11:	8b 01                	mov    (%ecx),%eax
40db13:	51                   	push   %ecx
40db14:	ff 50 08             	call   *0x8(%eax)
40db17:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40db1b:	74 08                	je     0x40db25
40db1d:	ff 75 f0             	push   -0x10(%ebp)
40db20:	e8 ca 79 03 00       	call   0x4454ef
40db25:	5f                   	pop    %edi