40a728:	8b f2                	mov    %edx,%esi
40a72a:	51                   	push   %ecx
40a72b:	56                   	push   %esi
40a72c:	e8 87 f4 00 00       	call   0x419bb8
40a731:	83 c4 08             	add    $0x8,%esp
40a734:	89 3b                	mov    %edi,(%ebx)
40a736:	8b c3                	mov    %ebx,%eax
40a738:	5f                   	pop    %edi
40a739:	5e                   	pop    %esi
40a73a:	5b                   	pop    %ebx
40a73b:	8b e5                	mov    %ebp,%esp
40a73d:	5d                   	pop    %ebp
40a73e:	c2 14 00             	ret    $0x14
40a741:	53                   	push   %ebx
40a742:	50                   	push   %eax
40a743:	e8 38 0f 01 00       	call   0x41b680
40a748:	8b 75 14             	mov    0x14(%ebp),%esi
40a74b:	83 c4 0c             	add    $0xc,%esp
40a74e:	85 f6                	test   %esi,%esi
40a750:	74 1e                	je     0x40a770
40a752:	8b 45 18             	mov    0x18(%ebp),%eax
40a755:	8b ce                	mov    %esi,%ecx
40a757:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a75a:	0f b7 d0             	movzwl %ax,%edx
40a75d:	8b c2                	mov    %edx,%eax
40a75f:	c1 e2 10             	shl    $0x10,%edx
40a762:	0b c2                	or     %edx,%eax
40a764:	d1 e9                	shr    $1,%ecx
40a766:	f3 ab                	rep stos %eax,%es:(%edi)
40a768:	13 c9                	adc    %ecx,%ecx
40a76a:	66 f3 ab             	rep stos %ax,%es:(%edi)
40a76d:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a770:	8b 55 10             	mov    0x10(%ebp),%edx
40a773:	2b fa                	sub    %edx,%edi
40a775:	8d 04 7d 02 00 00 00 	lea    0x2(,%edi,2),%eax
40a77c:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a77f:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
40a782:	03 cb                	add    %ebx,%ecx
40a784:	50                   	push   %eax
40a785:	51                   	push   %ecx
40a786:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
40a789:	8d 0c 4f             	lea    (%edi,%ecx,2),%ecx
40a78c:	51                   	push   %ecx
40a78d:	e8 ee 0e 01 00       	call   0x41b680
40a792:	83 c4 0c             	add    $0xc,%esp
40a795:	89 3b                	mov    %edi,(%ebx)
40a797:	8b c3                	mov    %ebx,%eax
40a799:	5f                   	pop    %edi
40a79a:	5e                   	pop    %esi
40a79b:	5b                   	pop    %ebx
40a79c:	8b e5                	mov    %ebp,%esp
40a79e:	5d                   	pop    %ebp
40a79f:	c2 14 00             	ret    $0x14
40a7a2:	e8 b9 6b ff ff       	call   0x401360
40a7a7:	e8 e7 51 01 00       	call   0x41f993
40a7ac:	cc                   	int3
40a7ad:	cc                   	int3
40a7ae:	cc                   	int3
40a7af:	cc                   	int3
40a7b0:	55                   	push   %ebp
40a7b1:	8b ec                	mov    %esp,%ebp
40a7b3:	83 ec 10             	sub    $0x10,%esp
40a7b6:	53                   	push   %ebx
40a7b7:	8b d9                	mov    %ecx,%ebx
40a7b9:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
40a7be:	8b c1                	mov    %ecx,%eax
40a7c0:	56                   	push   %esi
40a7c1:	8b 75 08             	mov    0x8(%ebp),%esi
40a7c4:	8b 53 10             	mov    0x10(%ebx),%edx
40a7c7:	2b c2                	sub    %edx,%eax
40a7c9:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a7cc:	57                   	push   %edi
40a7cd:	3b c6                	cmp    %esi,%eax
40a7cf:	0f 82 2a 01 00 00    	jb     0x40a8ff
40a7d5:	8d 04 32             	lea    (%edx,%esi,1),%eax
40a7d8:	8b 73 14             	mov    0x14(%ebx),%esi
40a7db:	8b f8                	mov    %eax,%edi
40a7dd:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a7e0:	83 cf 0f             	or     $0xf,%edi
40a7e3:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a7e6:	3b f9                	cmp    %ecx,%edi
40a7e8:	76 04                	jbe    0x40a7ee
40a7ea:	8b f9                	mov    %ecx,%edi
40a7ec:	eb 18                	jmp    0x40a806
40a7ee:	8b c6                	mov    %esi,%eax
40a7f0:	d1 e8                	shr    $1,%eax
40a7f2:	2b c8                	sub    %eax,%ecx
40a7f4:	3b f1                	cmp    %ecx,%esi
40a7f6:	76 07                	jbe    0x40a7ff
40a7f8:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40a7fd:	eb 07                	jmp    0x40a806
40a7ff:	03 c6                	add    %esi,%eax
40a801:	3b f8                	cmp    %eax,%edi
40a803:	0f 42 f8             	cmovb  %eax,%edi
40a806:	33 c9                	xor    %ecx,%ecx
40a808:	8b c7                	mov    %edi,%eax
40a80a:	83 c0 01             	add    $0x1,%eax
40a80d:	0f 92 c1             	setb   %cl
40a810:	f7 d9                	neg    %ecx
40a812:	0b c8                	or     %eax,%ecx
40a814:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a81a:	72 2a                	jb     0x40a846
40a81c:	8d 41 23             	lea    0x23(%ecx),%eax
40a81f:	3b c1                	cmp    %ecx,%eax
40a821:	0f 86 dd 00 00 00    	jbe    0x40a904
40a827:	50                   	push   %eax
40a828:	e8 99 f3 00 00       	call   0x419bc6
40a82d:	83 c4 04             	add    $0x4,%esp
40a830:	85 c0                	test   %eax,%eax
40a832:	0f 84 d1 00 00 00    	je     0x40a909
40a838:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a83b:	8d 70 23             	lea    0x23(%eax),%esi
40a83e:	83 e6 e0             	and    $0xffffffe0,%esi
40a841:	89 46 fc             	mov    %eax,-0x4(%esi)
40a844:	eb 16                	jmp    0x40a85c
40a846:	85 c9                	test   %ecx,%ecx
40a848:	74 10                	je     0x40a85a
40a84a:	51                   	push   %ecx
40a84b:	e8 76 f3 00 00       	call   0x419bc6
40a850:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a853:	83 c4 04             	add    $0x4,%esp
40a856:	8b f0                	mov    %eax,%esi
40a858:	eb 02                	jmp    0x40a85c
40a85a:	33 f6                	xor    %esi,%esi
40a85c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a85f:	89 43 10             	mov    %eax,0x10(%ebx)
40a862:	0f be 45 14          	movsbl 0x14(%ebp),%eax
40a866:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a869:	8b 45 10             	mov    0x10(%ebp),%eax
40a86c:	89 7b 14             	mov    %edi,0x14(%ebx)
40a86f:	8d 3c 16             	lea    (%esi,%edx,1),%edi
40a872:	03 c7                	add    %edi,%eax
40a874:	89 7d f0             	mov    %edi,-0x10(%ebp)
40a877:	83 7d f4 10          	cmpl   $0x10,-0xc(%ebp)
40a87b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a87e:	52                   	push   %edx
40a87f:	72 55                	jb     0x40a8d6
40a881:	8b 3b                	mov    (%ebx),%edi
40a883:	57                   	push   %edi
40a884:	56                   	push   %esi
40a885:	e8 f6 0d 01 00       	call   0x41b680
40a88a:	ff 75 10             	push   0x10(%ebp)
40a88d:	ff 75 fc             	push   -0x4(%ebp)
40a890:	ff 75 f0             	push   -0x10(%ebp)
40a893:	e8 78 13 01 00       	call   0x41bc10
40a898:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a89b:	83 c4 18             	add    $0x18,%esp
40a89e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a8a1:	41                   	inc    %ecx
40a8a2:	c6 00 00             	movb   $0x0,(%eax)
40a8a5:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a8ab:	72 12                	jb     0x40a8bf
40a8ad:	8b 57 fc             	mov    -0x4(%edi),%edx
40a8b0:	83 c1 23             	add    $0x23,%ecx
40a8b3:	2b fa                	sub    %edx,%edi
40a8b5:	8d 47 fc             	lea    -0x4(%edi),%eax
40a8b8:	83 f8 1f             	cmp    $0x1f,%eax
40a8bb:	77 4c                	ja     0x40a909
40a8bd:	8b fa                	mov    %edx,%edi
40a8bf:	51                   	push   %ecx
40a8c0:	57                   	push   %edi
40a8c1:	e8 f2 f2 00 00       	call   0x419bb8
40a8c6:	83 c4 08             	add    $0x8,%esp
40a8c9:	89 33                	mov    %esi,(%ebx)
40a8cb:	8b c3                	mov    %ebx,%eax
40a8cd:	5f                   	pop    %edi
40a8ce:	5e                   	pop    %esi
40a8cf:	5b                   	pop    %ebx
40a8d0:	8b e5                	mov    %ebp,%esp
40a8d2:	5d                   	pop    %ebp
40a8d3:	c2 10 00             	ret    $0x10
40a8d6:	53                   	push   %ebx
40a8d7:	56                   	push   %esi
40a8d8:	e8 a3 0d 01 00       	call   0x41b680
40a8dd:	ff 75 10             	push   0x10(%ebp)
40a8e0:	ff 75 fc             	push   -0x4(%ebp)
40a8e3:	57                   	push   %edi
40a8e4:	e8 27 13 01 00       	call   0x41bc10
40a8e9:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a8ec:	83 c4 18             	add    $0x18,%esp
40a8ef:	c6 00 00             	movb   $0x0,(%eax)
40a8f2:	8b c3                	mov    %ebx,%eax
40a8f4:	5f                   	pop    %edi
40a8f5:	89 33                	mov    %esi,(%ebx)
40a8f7:	5e                   	pop    %esi
40a8f8:	5b                   	pop    %ebx
40a8f9:	8b e5                	mov    %ebp,%esp
40a8fb:	5d                   	pop    %ebp
40a8fc:	c2 10 00             	ret    $0x10
40a8ff:	e8 5c 6a ff ff       	call   0x401360
40a904:	e8 b7 69 ff ff       	call   0x4012c0
40a909:	e8 85 50 01 00       	call   0x41f993
40a90e:	cc                   	int3
40a90f:	cc                   	int3
40a910:	55                   	push   %ebp
40a911:	8b ec                	mov    %esp,%ebp
40a913:	6a ff                	push   $0xffffffff
40a915:	68 a0 bd 43 00       	push   $0x43bda0
40a91a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a920:	50                   	push   %eax
40a921:	56                   	push   %esi
40a922:	57                   	push   %edi
40a923:	a1 14 50 45 00       	mov    0x455014,%eax
40a928:	33 c5                	xor    %ebp,%eax
40a92a:	50                   	push   %eax
40a92b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a92e:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a934:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a93b:	8b 09                	mov    (%ecx),%ecx
40a93d:	8b 01                	mov    (%ecx),%eax
40a93f:	8b 40 04             	mov    0x4(%eax),%eax
40a942:	8b 7c 08 38          	mov    0x38(%eax,%ecx,1),%edi
40a946:	85 ff                	test   %edi,%edi
40a948:	74 11                	je     0x40a95b
40a94a:	8b 07                	mov    (%edi),%eax
40a94c:	8b 70 08             	mov    0x8(%eax),%esi
40a94f:	8b ce                	mov    %esi,%ecx
40a951:	ff 15 5c e2 43 00    	call   *0x43e25c
40a957:	8b cf                	mov    %edi,%ecx
40a959:	ff d6                	call   *%esi
40a95b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a95e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a965:	59                   	pop    %ecx
40a966:	5f                   	pop    %edi
40a967:	5e                   	pop    %esi
40a968:	8b e5                	mov    %ebp,%esp
40a96a:	5d                   	pop    %ebp
40a96b:	c3                   	ret
40a96c:	cc                   	int3
40a96d:	cc                   	int3
40a96e:	cc                   	int3
40a96f:	cc                   	int3
40a970:	cc                   	int3
40a971:	cc                   	int3
40a972:	cc                   	int3
40a973:	cc                   	int3
40a974:	cc                   	int3
40a975:	cc                   	int3
40a976:	cc                   	int3
40a977:	cc                   	int3
40a978:	cc                   	int3
40a979:	cc                   	int3
40a97a:	cc                   	int3
40a97b:	cc                   	int3
40a97c:	cc                   	int3
40a97d:	cc                   	int3
40a97e:	cc                   	int3
40a97f:	cc                   	int3
40a980:	53                   	push   %ebx
40a981:	8b dc                	mov    %esp,%ebx
40a983:	83 ec 08             	sub    $0x8,%esp
40a986:	83 e4 f8             	and    $0xfffffff8,%esp
40a989:	83 c4 04             	add    $0x4,%esp
40a98c:	55                   	push   %ebp
40a98d:	8b 6b 04             	mov    0x4(%ebx),%ebp
40a990:	89 6c 24 04          	mov    %ebp,0x4(%esp)
40a994:	8b ec                	mov    %esp,%ebp
40a996:	6a ff                	push   $0xffffffff
40a998:	68 31 c2 43 00       	push   $0x43c231
40a99d:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a9a3:	50                   	push   %eax
40a9a4:	53                   	push   %ebx
40a9a5:	81 ec e8 00 00 00    	sub    $0xe8,%esp
40a9ab:	a1 14 50 45 00       	mov    0x455014,%eax
40a9b0:	33 c5                	xor    %ebp,%eax
40a9b2:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a9b5:	56                   	push   %esi
40a9b6:	57                   	push   %edi
40a9b7:	50                   	push   %eax
40a9b8:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a9bb:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a9c1:	8b 43 08             	mov    0x8(%ebx),%eax
40a9c4:	8b 7b 0c             	mov    0xc(%ebx),%edi
40a9c7:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
40a9cd:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40a9d4:	85 c0                	test   %eax,%eax
40a9d6:	0f 84 90 02 00 00    	je     0x40ac6c
40a9dc:	83 38 00             	cmpl   $0x0,(%eax)
40a9df:	0f 85 87 02 00 00    	jne    0x40ac6c
40a9e5:	6a 18                	push   $0x18
40a9e7:	e8 da f1 00 00       	call   0x419bc6
40a9ec:	8b f0                	mov    %eax,%esi
40a9ee:	83 c4 04             	add    $0x4,%esp
40a9f1:	89 75 dc             	mov    %esi,-0x24(%ebp)
40a9f4:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a9fb:	0f 57 c0             	xorps  %xmm0,%xmm0
40a9fe:	0f 11 06             	movups %xmm0,(%esi)
40aa01:	66 0f d6 46 10       	movq   %xmm0,0x10(%esi)
40aa06:	8b 47 04             	mov    0x4(%edi),%eax
40aa09:	85 c0                	test   %eax,%eax
40aa0b:	74 0c                	je     0x40aa19
40aa0d:	8b 78 18             	mov    0x18(%eax),%edi
40aa10:	85 ff                	test   %edi,%edi
40aa12:	75 0a                	jne    0x40aa1e
40aa14:	8d 78 1c             	lea    0x1c(%eax),%edi
40aa17:	eb 05                	jmp    0x40aa1e
40aa19:	bf 67 ed 44 00       	mov    $0x44ed67,%edi
40aa1e:	6a 00                	push   $0x0
40aa20:	8d 8d 6c ff ff ff    	lea    -0x94(%ebp),%ecx
40aa26:	e8 fc e4 00 00       	call   0x418f27
40aa2b:	c7 85 70 ff ff ff 00 	movl   $0x0,-0x90(%ebp)
40aa32:	00 00 00
40aa35:	c6 85 74 ff ff ff 00 	movb   $0x0,-0x8c(%ebp)
40aa3c:	c7 85 78 ff ff ff 00 	movl   $0x0,-0x88(%ebp)
40aa43:	00 00 00
40aa46:	c6 85 7c ff ff ff 00 	movb   $0x0,-0x84(%ebp)
40aa4d:	33 c0                	xor    %eax,%eax
40aa4f:	c7 45 80 00 00 00 00 	movl   $0x0,-0x80(%ebp)
40aa56:	66 89 45 84          	mov    %ax,-0x7c(%ebp)
40aa5a:	89 45 88             	mov    %eax,-0x78(%ebp)
40aa5d:	66 89 45 8c          	mov    %ax,-0x74(%ebp)
40aa61:	89 45 90             	mov    %eax,-0x70(%ebp)
40aa64:	88 45 94             	mov    %al,-0x6c(%ebp)
40aa67:	89 45 98             	mov    %eax,-0x68(%ebp)
40aa6a:	88 45 9c             	mov    %al,-0x64(%ebp)
40aa6d:	c6 45 fc 07          	movb   $0x7,-0x4(%ebp)
40aa71:	85 ff                	test   %edi,%edi
40aa73:	0f 84 16 02 00 00    	je     0x40ac8f
40aa79:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
40aa7f:	57                   	push   %edi
40aa80:	50                   	push   %eax
40aa81:	e8 8e e7 00 00       	call   0x419214
40aa86:	c7 45 e0 01 00 00 00 	movl   $0x1,-0x20(%ebp)
40aa8d:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
40aa94:	c7 45 fc 09 00 00 00 	movl   $0x9,-0x4(%ebp)
40aa9b:	c7 06 f4 f6 43 00    	movl   $0x43f6f4,(%esi)
40aaa1:	e8 94 9e 01 00       	call   0x42493a
40aaa6:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
40aaac:	50                   	push   %eax
40aaad:	e8 23 ec 00 00       	call   0x4196d5
40aab2:	83 c4 0c             	add    $0xc,%esp
40aab5:	89 75 d8             	mov    %esi,-0x28(%ebp)
40aab8:	0f 10 00             	movups (%eax),%xmm0
40aabb:	0f 11 45 a0          	movups %xmm0,-0x60(%ebp)
40aabf:	0f 10 40 10          	movups 0x10(%eax),%xmm0
40aac3:	0f 11 45 b0          	movups %xmm0,-0x50(%ebp)
40aac7:	f3 0f 7e 40 20       	movq   0x20(%eax),%xmm0
40aacc:	66 0f d6 45 c0       	movq   %xmm0,-0x40(%ebp)
40aad1:	8b 40 28             	mov    0x28(%eax),%eax
40aad4:	89 45 c8             	mov    %eax,-0x38(%ebp)
40aad7:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40aade:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40aae5:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
40aaec:	8d 85 08 ff ff ff    	lea    -0xf8(%ebp),%eax
40aaf2:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
40aaf6:	50                   	push   %eax
40aaf7:	e8 d9 eb 00 00       	call   0x4196d5
40aafc:	83 c4 04             	add    $0x4,%esp
40aaff:	6a 01                	push   $0x1
40ab01:	6a 01                	push   $0x1