40a7c9:	3b d0                	cmp    %eax,%edx
40a7cb:	76 07                	jbe    0x40a7d4
40a7cd:	bb aa aa aa 0a       	mov    $0xaaaaaaa,%ebx
40a7d2:	eb 08                	jmp    0x40a7dc
40a7d4:	8d 1c 11             	lea    (%ecx,%edx,1),%ebx
40a7d7:	3b de                	cmp    %esi,%ebx
40a7d9:	0f 42 de             	cmovb  %esi,%ebx
40a7dc:	8b 0f                	mov    (%edi),%ecx
40a7de:	85 c9                	test   %ecx,%ecx
40a7e0:	74 66                	je     0x40a848
40a7e2:	8b 57 04             	mov    0x4(%edi),%edx
40a7e5:	51                   	push   %ecx
40a7e6:	e8 e5 88 ff ff       	call   0x4030d0
40a7eb:	8b 4f 08             	mov    0x8(%edi),%ecx
40a7ee:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40a7f3:	8b 37                	mov    (%edi),%esi
40a7f5:	83 c4 04             	add    $0x4,%esp
40a7f8:	2b ce                	sub    %esi,%ecx
40a7fa:	f7 e9                	imul   %ecx
40a7fc:	c1 fa 02             	sar    $0x2,%edx
40a7ff:	8b c2                	mov    %edx,%eax
40a801:	c1 e8 1f             	shr    $0x1f,%eax
40a804:	03 c2                	add    %edx,%eax
40a806:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
40a809:	c1 e1 03             	shl    $0x3,%ecx
40a80c:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a812:	72 16                	jb     0x40a82a
40a814:	8b 56 fc             	mov    -0x4(%esi),%edx
40a817:	83 c1 23             	add    $0x23,%ecx
40a81a:	2b f2                	sub    %edx,%esi
40a81c:	8d 46 fc             	lea    -0x4(%esi),%eax
40a81f:	83 f8 1f             	cmp    $0x1f,%eax
40a822:	0f 87 c4 00 00 00    	ja     0x40a8ec
40a828:	8b f2                	mov    %edx,%esi
40a82a:	51                   	push   %ecx
40a82b:	56                   	push   %esi
40a82c:	e8 d7 f1 05 00       	call   0x469a08
40a831:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40a837:	83 c4 08             	add    $0x8,%esp
40a83a:	c7 47 04 00 00 00 00 	movl   $0x0,0x4(%edi)
40a841:	c7 47 08 00 00 00 00 	movl   $0x0,0x8(%edi)
40a848:	53                   	push   %ebx
40a849:	e8 f2 88 ff ff       	call   0x403140
40a84e:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a851:	8d 34 5b             	lea    (%ebx,%ebx,2),%esi
40a854:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a857:	89 07                	mov    %eax,(%edi)
40a859:	8d 34 f0             	lea    (%eax,%esi,8),%esi
40a85c:	89 47 04             	mov    %eax,0x4(%edi)
40a85f:	57                   	push   %edi
40a860:	50                   	push   %eax
40a861:	89 77 08             	mov    %esi,0x8(%edi)
40a864:	e8 97 00 00 00       	call   0x40a900
40a869:	83 c4 08             	add    $0x8,%esp
40a86c:	89 47 04             	mov    %eax,0x4(%edi)
40a86f:	5f                   	pop    %edi
40a870:	5e                   	pop    %esi
40a871:	5b                   	pop    %ebx
40a872:	8b e5                	mov    %ebp,%esp
40a874:	5d                   	pop    %ebp
40a875:	c2 0c 00             	ret    $0xc
40a878:	8b 4f 04             	mov    0x4(%edi),%ecx
40a87b:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40a880:	2b cb                	sub    %ebx,%ecx
40a882:	f7 e9                	imul   %ecx
40a884:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a887:	c1 fa 02             	sar    $0x2,%edx
40a88a:	8b c2                	mov    %edx,%eax
40a88c:	c1 e8 1f             	shr    $0x1f,%eax
40a88f:	03 c2                	add    %edx,%eax
40a891:	53                   	push   %ebx
40a892:	3b f0                	cmp    %eax,%esi
40a894:	76 2a                	jbe    0x40a8c0
40a896:	8d 04 40             	lea    (%eax,%eax,2),%eax
40a899:	8d 34 c1             	lea    (%ecx,%eax,8),%esi
40a89c:	8b d6                	mov    %esi,%edx
40a89e:	e8 fd 00 00 00       	call   0x40a9a0
40a8a3:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a8a6:	8b ce                	mov    %esi,%ecx
40a8a8:	57                   	push   %edi
40a8a9:	ff 77 04             	push   0x4(%edi)
40a8ac:	e8 4f 00 00 00       	call   0x40a900
40a8b1:	83 c4 0c             	add    $0xc,%esp
40a8b4:	89 47 04             	mov    %eax,0x4(%edi)
40a8b7:	5f                   	pop    %edi
40a8b8:	5e                   	pop    %esi
40a8b9:	5b                   	pop    %ebx
40a8ba:	8b e5                	mov    %ebp,%esp
40a8bc:	5d                   	pop    %ebp
40a8bd:	c2 0c 00             	ret    $0xc
40a8c0:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a8c3:	8d 04 76             	lea    (%esi,%esi,2),%eax
40a8c6:	8d 34 c3             	lea    (%ebx,%eax,8),%esi
40a8c9:	e8 d2 00 00 00       	call   0x40a9a0
40a8ce:	8b 57 04             	mov    0x4(%edi),%edx
40a8d1:	8b ce                	mov    %esi,%ecx
40a8d3:	e8 f8 87 ff ff       	call   0x4030d0
40a8d8:	83 c4 04             	add    $0x4,%esp
40a8db:	89 77 04             	mov    %esi,0x4(%edi)
40a8de:	5f                   	pop    %edi
40a8df:	5e                   	pop    %esi
40a8e0:	5b                   	pop    %ebx
40a8e1:	8b e5                	mov    %ebp,%esp
40a8e3:	5d                   	pop    %ebp
40a8e4:	c2 0c 00             	ret    $0xc
40a8e7:	e8 e4 8b ff ff       	call   0x4034d0
40a8ec:	e8 40 ed 06 00       	call   0x479631
40a8f1:	cc                   	int3
40a8f2:	cc                   	int3
40a8f3:	cc                   	int3
40a8f4:	cc                   	int3
40a8f5:	cc                   	int3
40a8f6:	cc                   	int3
40a8f7:	cc                   	int3
40a8f8:	cc                   	int3
40a8f9:	cc                   	int3
40a8fa:	cc                   	int3
40a8fb:	cc                   	int3
40a8fc:	cc                   	int3
40a8fd:	cc                   	int3
40a8fe:	cc                   	int3
40a8ff:	cc                   	int3
40a900:	55                   	push   %ebp
40a901:	8b ec                	mov    %esp,%ebp
40a903:	6a ff                	push   $0xffffffff
40a905:	68 bd 7e 49 00       	push   $0x497ebd
40a90a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a910:	50                   	push   %eax
40a911:	83 ec 10             	sub    $0x10,%esp
40a914:	a1 14 40 4c 00       	mov    0x4c4014,%eax
40a919:	33 c5                	xor    %ebp,%eax
40a91b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a91e:	53                   	push   %ebx
40a91f:	56                   	push   %esi
40a920:	57                   	push   %edi
40a921:	50                   	push   %eax
40a922:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a925:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a92b:	8b da                	mov    %edx,%ebx
40a92d:	8b f1                	mov    %ecx,%esi
40a92f:	8b 7d 08             	mov    0x8(%ebp),%edi
40a932:	0f 57 c0             	xorps  %xmm0,%xmm0
40a935:	8b 45 0c             	mov    0xc(%ebp),%eax
40a938:	66 0f d6 45 e4       	movq   %xmm0,-0x1c(%ebp)
40a93d:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
40a944:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40a947:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a94a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a94d:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a954:	3b f3                	cmp    %ebx,%esi
40a956:	74 15                	je     0x40a96d
40a958:	56                   	push   %esi
40a959:	8b cf                	mov    %edi,%ecx
40a95b:	e8 10 8c ff ff       	call   0x403570
40a960:	83 c7 18             	add    $0x18,%edi
40a963:	83 c6 18             	add    $0x18,%esi
40a966:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a969:	3b f3                	cmp    %ebx,%esi
40a96b:	75 eb                	jne    0x40a958
40a96d:	51                   	push   %ecx
40a96e:	8b d7                	mov    %edi,%edx
40a970:	8b cf                	mov    %edi,%ecx
40a972:	e8 59 87 ff ff       	call   0x4030d0
40a977:	83 c4 04             	add    $0x4,%esp
40a97a:	8b c7                	mov    %edi,%eax
40a97c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a97f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a986:	59                   	pop    %ecx
40a987:	5f                   	pop    %edi
40a988:	5e                   	pop    %esi
40a989:	5b                   	pop    %ebx
40a98a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a98d:	33 cd                	xor    %ebp,%ecx
40a98f:	e8 36 f0 05 00       	call   0x4699ca
40a994:	8b e5                	mov    %ebp,%esp
40a996:	5d                   	pop    %ebp
40a997:	c3                   	ret
40a998:	cc                   	int3
40a999:	cc                   	int3
40a99a:	cc                   	int3
40a99b:	cc                   	int3
40a99c:	cc                   	int3
40a99d:	cc                   	int3
40a99e:	cc                   	int3
40a99f:	cc                   	int3
40a9a0:	55                   	push   %ebp
40a9a1:	8b ec                	mov    %esp,%ebp
40a9a3:	53                   	push   %ebx
40a9a4:	56                   	push   %esi
40a9a5:	8b da                	mov    %edx,%ebx
40a9a7:	8b f1                	mov    %ecx,%esi
40a9a9:	3b f3                	cmp    %ebx,%esi
40a9ab:	74 2e                	je     0x40a9db
40a9ad:	57                   	push   %edi
40a9ae:	8b 7d 08             	mov    0x8(%ebp),%edi
40a9b1:	3b fe                	cmp    %esi,%edi
40a9b3:	74 15                	je     0x40a9ca
40a9b5:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a9b9:	8b c6                	mov    %esi,%eax
40a9bb:	72 02                	jb     0x40a9bf
40a9bd:	8b 06                	mov    (%esi),%eax
40a9bf:	ff 76 10             	push   0x10(%esi)
40a9c2:	8b cf                	mov    %edi,%ecx
40a9c4:	50                   	push   %eax
40a9c5:	e8 36 84 ff ff       	call   0x402e00
40a9ca:	83 c6 18             	add    $0x18,%esi
40a9cd:	83 c7 18             	add    $0x18,%edi
40a9d0:	3b f3                	cmp    %ebx,%esi
40a9d2:	75 dd                	jne    0x40a9b1
40a9d4:	8b c7                	mov    %edi,%eax
40a9d6:	5f                   	pop    %edi
40a9d7:	5e                   	pop    %esi
40a9d8:	5b                   	pop    %ebx
40a9d9:	5d                   	pop    %ebp
40a9da:	c3                   	ret
40a9db:	8b 45 08             	mov    0x8(%ebp),%eax
40a9de:	5e                   	pop    %esi
40a9df:	5b                   	pop    %ebx
40a9e0:	5d                   	pop    %ebp
40a9e1:	c3                   	ret
40a9e2:	cc                   	int3
40a9e3:	cc                   	int3
40a9e4:	cc                   	int3
40a9e5:	cc                   	int3
40a9e6:	cc                   	int3
40a9e7:	cc                   	int3
40a9e8:	cc                   	int3
40a9e9:	cc                   	int3
40a9ea:	cc                   	int3
40a9eb:	cc                   	int3
40a9ec:	cc                   	int3
40a9ed:	cc                   	int3
40a9ee:	cc                   	int3
40a9ef:	cc                   	int3
40a9f0:	55                   	push   %ebp
40a9f1:	8b ec                	mov    %esp,%ebp
40a9f3:	6a ff                	push   $0xffffffff
40a9f5:	68 05 7f 49 00       	push   $0x497f05
40a9fa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40aa00:	50                   	push   %eax
40aa01:	83 ec 1c             	sub    $0x1c,%esp
40aa04:	53                   	push   %ebx
40aa05:	56                   	push   %esi
40aa06:	57                   	push   %edi
40aa07:	a1 14 40 4c 00       	mov    0x4c4014,%eax
40aa0c:	33 c5                	xor    %ebp,%eax
40aa0e:	50                   	push   %eax
40aa0f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40aa12:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40aa18:	8b f9                	mov    %ecx,%edi
40aa1a:	89 7d ec             	mov    %edi,-0x14(%ebp)
40aa1d:	8b 5d 08             	mov    0x8(%ebp),%ebx
40aa20:	8d 45 d8             	lea    -0x28(%ebp),%eax
40aa23:	53                   	push   %ebx
40aa24:	50                   	push   %eax
40aa25:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40aa28:	e8 c3 90 ff ff       	call   0x403af0
40aa2d:	8b 75 e0             	mov    -0x20(%ebp),%esi
40aa30:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40aa34:	75 2c                	jne    0x40aa62
40aa36:	83 7e 24 08          	cmpl   $0x8,0x24(%esi)
40aa3a:	8d 56 10             	lea    0x10(%esi),%edx
40aa3d:	72 03                	jb     0x40aa42
40aa3f:	8b 56 10             	mov    0x10(%esi),%edx
40aa42:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
40aa46:	8b cb                	mov    %ebx,%ecx
40aa48:	72 02                	jb     0x40aa4c
40aa4a:	8b 0b                	mov    (%ebx),%ecx
40aa4c:	ff 76 20             	push   0x20(%esi)
40aa4f:	52                   	push   %edx
40aa50:	8b 53 10             	mov    0x10(%ebx),%edx
40aa53:	e8 c8 91 ff ff       	call   0x403c20
40aa58:	c1 e8 1f             	shr    $0x1f,%eax
40aa5b:	83 c4 08             	add    $0x8,%esp
40aa5e:	84 c0                	test   %al,%al
40aa60:	74 71                	je     0x40aad3
40aa62:	81 7f 04 ff ff ff 03 	cmpl   $0x3ffffff,0x4(%edi)
40aa69:	74 7f                	je     0x40aaea
40aa6b:	8b 1f                	mov    (%edi),%ebx
40aa6d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40aa70:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40aa77:	6a 40                	push   $0x40
40aa79:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40aa80:	e8 53 ef 05 00       	call   0x4699d8
40aa85:	8b f8                	mov    %eax,%edi
40aa87:	83 c4 04             	add    $0x4,%esp
40aa8a:	89 7d e8             	mov    %edi,-0x18(%ebp)
40aa8d:	ff 75 f0             	push   -0x10(%ebp)
40aa90:	8d 4f 10             	lea    0x10(%edi),%ecx
40aa93:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40aa9a:	e8 d1 8a ff ff       	call   0x403570
40aa9f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40aaa2:	57                   	push   %edi
40aaa3:	ff 75 dc             	push   -0x24(%ebp)
40aaa6:	c7 47 28 00 00 00 00 	movl   $0x0,0x28(%edi)
40aaad:	ff 75 d8             	push   -0x28(%ebp)
40aab0:	c7 47 38 00 00 00 00 	movl   $0x0,0x38(%edi)
40aab7:	c7 47 3c 07 00 00 00 	movl   $0x7,0x3c(%edi)
40aabe:	89 1f                	mov    %ebx,(%edi)
40aac0:	89 5f 04             	mov    %ebx,0x4(%edi)
40aac3:	89 5f 08             	mov    %ebx,0x8(%edi)
40aac6:	66 c7 47 0c 00 00    	movw   $0x0,0xc(%edi)
40aacc:	e8 0f 8e ff ff       	call   0x4038e0
40aad1:	8b f0                	mov    %eax,%esi
40aad3:	8d 46 28             	lea    0x28(%esi),%eax
40aad6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40aad9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40aae0:	59                   	pop    %ecx
40aae1:	5f                   	pop    %edi
40aae2:	5e                   	pop    %esi
40aae3:	5b                   	pop    %ebx
40aae4:	8b e5                	mov    %ebp,%esp
40aae6:	5d                   	pop    %ebp
40aae7:	c2 04 00             	ret    $0x4
40aaea:	e8 d1 8b ff ff       	call   0x4036c0
40aaef:	cc                   	int3
40aaf0:	55                   	push   %ebp
40aaf1:	8b ec                	mov    %esp,%ebp
40aaf3:	83 ec 08             	sub    $0x8,%esp
40aaf6:	56                   	push   %esi
40aaf7:	8b 75 08             	mov    0x8(%ebp),%esi
40aafa:	57                   	push   %edi
40aafb:	8b f9                	mov    %ecx,%edi
40aafd:	89 75 f8             	mov    %esi,-0x8(%ebp)
40ab00:	3b fe                	cmp    %esi,%edi
40ab02:	0f 84 b7 00 00 00    	je     0x40abbf
40ab08:	8b 07                	mov    (%edi),%eax
40ab0a:	53                   	push   %ebx
40ab0b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ab0e:	8b 58 04             	mov    0x4(%eax),%ebx
40ab11:	80 7b 0d 00          	cmpb   $0x0,0xd(%ebx)
40ab15:	75 2e                	jne    0x40ab45
40ab17:	ff 73 08             	push   0x8(%ebx)
40ab1a:	8b cf                	mov    %edi,%ecx
40ab1c:	57                   	push   %edi
40ab1d:	e8 6e 8d ff ff       	call   0x403890
40ab22:	8b f3                	mov    %ebx,%esi
40ab24:	8b 1b                	mov    (%ebx),%ebx
40ab26:	8d 4e 10             	lea    0x10(%esi),%ecx
40ab29:	e8 52 90 ff ff       	call   0x403b80
40ab2e:	6a 40                	push   $0x40
40ab30:	56                   	push   %esi
40ab31:	e8 d2 ee 05 00       	call   0x469a08
40ab36:	83 c4 08             	add    $0x8,%esp
40ab39:	80 7b 0d 00          	cmpb   $0x0,0xd(%ebx)
40ab3d:	74 d8                	je     0x40ab17
40ab3f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ab42:	8b 75 f8             	mov    -0x8(%ebp),%esi
40ab45:	89 40 04             	mov    %eax,0x4(%eax)
40ab48:	8b cf                	mov    %edi,%ecx