40c733:	55                   	push   %ebp
40c734:	8b ec                	mov    %esp,%ebp
40c736:	51                   	push   %ecx
40c737:	51                   	push   %ecx
40c738:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40c73c:	53                   	push   %ebx
40c73d:	56                   	push   %esi
40c73e:	57                   	push   %edi
40c73f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c742:	8b 3f                	mov    (%edi),%edi
40c744:	0f 84 a4 00 00 00    	je     0x40c7ee
40c74a:	8b 5d 10             	mov    0x10(%ebp),%ebx
40c74d:	8b 75 08             	mov    0x8(%ebp),%esi
40c750:	85 db                	test   %ebx,%ebx
40c752:	74 6b                	je     0x40c7bf
40c754:	57                   	push   %edi
40c755:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c758:	e8 65 ff ff ff       	call   0x40c6c2
40c75d:	ff 75 18             	push   0x18(%ebp)
40c760:	ff 75 14             	push   0x14(%ebp)
40c763:	50                   	push   %eax
40c764:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c767:	57                   	push   %edi
40c768:	50                   	push   %eax
40c769:	e8 74 07 00 00       	call   0x40cee2
40c76e:	8b d0                	mov    %eax,%edx
40c770:	83 c4 14             	add    $0x14,%esp
40c773:	83 fa ff             	cmp    $0xffffffff,%edx
40c776:	74 5e                	je     0x40c7d6
40c778:	85 d2                	test   %edx,%edx
40c77a:	74 51                	je     0x40c7cd
40c77c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40c77f:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40c785:	76 2b                	jbe    0x40c7b2
40c787:	83 fb 01             	cmp    $0x1,%ebx
40c78a:	76 33                	jbe    0x40c7bf
40c78c:	81 e9 00 00 01 00    	sub    $0x10000,%ecx
40c792:	4b                   	dec    %ebx
40c793:	8b c1                	mov    %ecx,%eax
40c795:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40c798:	c1 e8 0a             	shr    $0xa,%eax
40c79b:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
40c7a1:	0d 00 d8 00 00       	or     $0xd800,%eax
40c7a6:	66 89 06             	mov    %ax,(%esi)
40c7a9:	83 c6 02             	add    $0x2,%esi
40c7ac:	81 c9 00 dc 00 00    	or     $0xdc00,%ecx
40c7b2:	66 89 0e             	mov    %cx,(%esi)
40c7b5:	03 fa                	add    %edx,%edi
40c7b7:	83 c6 02             	add    $0x2,%esi
40c7ba:	83 eb 01             	sub    $0x1,%ebx
40c7bd:	75 95                	jne    0x40c754
40c7bf:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c7c2:	2b 75 08             	sub    0x8(%ebp),%esi
40c7c5:	d1 fe                	sar    $1,%esi
40c7c7:	89 3b                	mov    %edi,(%ebx)
40c7c9:	8b c6                	mov    %esi,%eax
40c7cb:	eb 67                	jmp    0x40c834
40c7cd:	33 ff                	xor    %edi,%edi
40c7cf:	33 c0                	xor    %eax,%eax
40c7d1:	66 89 06             	mov    %ax,(%esi)
40c7d4:	eb e9                	jmp    0x40c7bf
40c7d6:	8b 45 0c             	mov    0xc(%ebp),%eax
40c7d9:	89 38                	mov    %edi,(%eax)
40c7db:	8b 45 18             	mov    0x18(%ebp),%eax
40c7de:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c7e2:	c7 40 18 2a 00 00 00 	movl   $0x2a,0x18(%eax)
40c7e9:	83 c8 ff             	or     $0xffffffff,%eax
40c7ec:	eb 46                	jmp    0x40c834
40c7ee:	57                   	push   %edi
40c7ef:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c7f2:	33 f6                	xor    %esi,%esi
40c7f4:	e8 c9 fe ff ff       	call   0x40c6c2
40c7f9:	8b 5d 18             	mov    0x18(%ebp),%ebx
40c7fc:	eb 16                	jmp    0x40c814
40c7fe:	85 c0                	test   %eax,%eax
40c800:	74 c7                	je     0x40c7c9
40c802:	83 f8 04             	cmp    $0x4,%eax
40c805:	75 01                	jne    0x40c808
40c807:	46                   	inc    %esi
40c808:	03 f8                	add    %eax,%edi
40c80a:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40c80d:	57                   	push   %edi
40c80e:	46                   	inc    %esi
40c80f:	e8 ae fe ff ff       	call   0x40c6c2
40c814:	53                   	push   %ebx
40c815:	ff 75 14             	push   0x14(%ebp)
40c818:	50                   	push   %eax
40c819:	57                   	push   %edi
40c81a:	6a 00                	push   $0x0
40c81c:	e8 c1 06 00 00       	call   0x40cee2
40c821:	83 c4 14             	add    $0x14,%esp
40c824:	83 f8 ff             	cmp    $0xffffffff,%eax
40c827:	75 d5                	jne    0x40c7fe
40c829:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40c82d:	c7 43 18 2a 00 00 00 	movl   $0x2a,0x18(%ebx)
40c834:	5f                   	pop    %edi
40c835:	5e                   	pop    %esi
40c836:	5b                   	pop    %ebx
40c837:	c9                   	leave
40c838:	c3                   	ret
40c839:	8b ff                	mov    %edi,%edi
40c83b:	55                   	push   %ebp
40c83c:	8b ec                	mov    %esp,%ebp
40c83e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c841:	33 c0                	xor    %eax,%eax
40c843:	38 01                	cmp    %al,(%ecx)
40c845:	74 0c                	je     0x40c853
40c847:	3b 45 0c             	cmp    0xc(%ebp),%eax
40c84a:	74 07                	je     0x40c853
40c84c:	40                   	inc    %eax
40c84d:	80 3c 08 00          	cmpb   $0x0,(%eax,%ecx,1)
40c851:	75 f4                	jne    0x40c847
40c853:	5d                   	pop    %ebp
40c854:	c3                   	ret
40c855:	8b ff                	mov    %edi,%edi
40c857:	55                   	push   %ebp
40c858:	8b ec                	mov    %esp,%ebp
40c85a:	51                   	push   %ecx
40c85b:	51                   	push   %ecx
40c85c:	56                   	push   %esi
40c85d:	8b 75 08             	mov    0x8(%ebp),%esi
40c860:	57                   	push   %edi
40c861:	56                   	push   %esi
40c862:	e8 8b c9 ff ff       	call   0x4091f2
40c867:	83 cf ff             	or     $0xffffffff,%edi
40c86a:	59                   	pop    %ecx
40c86b:	3b c7                	cmp    %edi,%eax
40c86d:	75 14                	jne    0x40c883
40c86f:	8b 45 18             	mov    0x18(%ebp),%eax
40c872:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c876:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40c87d:	8b c7                	mov    %edi,%eax
40c87f:	8b d7                	mov    %edi,%edx
40c881:	eb 51                	jmp    0x40c8d4
40c883:	ff 75 14             	push   0x14(%ebp)
40c886:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40c889:	51                   	push   %ecx
40c88a:	ff 75 10             	push   0x10(%ebp)
40c88d:	ff 75 0c             	push   0xc(%ebp)
40c890:	50                   	push   %eax
40c891:	ff 15 00 f1 40 00    	call   *0x40f100
40c897:	85 c0                	test   %eax,%eax
40c899:	75 13                	jne    0x40c8ae
40c89b:	ff 75 18             	push   0x18(%ebp)
40c89e:	ff 15 58 f0 40 00    	call   *0x40f058
40c8a4:	50                   	push   %eax
40c8a5:	e8 6f b0 ff ff       	call   0x407919
40c8aa:	59                   	pop    %ecx
40c8ab:	59                   	pop    %ecx
40c8ac:	eb cf                	jmp    0x40c87d
40c8ae:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c8b1:	8b 55 fc             	mov    -0x4(%ebp),%edx
40c8b4:	23 c2                	and    %edx,%eax
40c8b6:	3b c7                	cmp    %edi,%eax
40c8b8:	74 c3                	je     0x40c87d
40c8ba:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c8bd:	8b ce                	mov    %esi,%ecx
40c8bf:	83 e6 3f             	and    $0x3f,%esi
40c8c2:	c1 f9 06             	sar    $0x6,%ecx
40c8c5:	6b f6 38             	imul   $0x38,%esi,%esi
40c8c8:	8b 0c 8d 78 70 41 00 	mov    0x417078(,%ecx,4),%ecx
40c8cf:	80 64 31 28 fd       	andb   $0xfd,0x28(%ecx,%esi,1)
40c8d4:	5f                   	pop    %edi
40c8d5:	5e                   	pop    %esi
40c8d6:	c9                   	leave
40c8d7:	c3                   	ret
40c8d8:	8b ff                	mov    %edi,%edi
40c8da:	55                   	push   %ebp
40c8db:	8b ec                	mov    %esp,%ebp
40c8dd:	ff 75 18             	push   0x18(%ebp)
40c8e0:	ff 75 14             	push   0x14(%ebp)
40c8e3:	ff 75 10             	push   0x10(%ebp)
40c8e6:	ff 75 0c             	push   0xc(%ebp)
40c8e9:	ff 75 08             	push   0x8(%ebp)
40c8ec:	e8 64 ff ff ff       	call   0x40c855
40c8f1:	83 c4 14             	add    $0x14,%esp
40c8f4:	5d                   	pop    %ebp
40c8f5:	c3                   	ret
40c8f6:	8b ff                	mov    %edi,%edi
40c8f8:	55                   	push   %ebp
40c8f9:	8b ec                	mov    %esp,%ebp
40c8fb:	51                   	push   %ecx
40c8fc:	e8 1f 08 00 00       	call   0x40d120
40c901:	85 c0                	test   %eax,%eax
40c903:	74 1c                	je     0x40c921
40c905:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c908:	50                   	push   %eax
40c909:	8d 45 08             	lea    0x8(%ebp),%eax
40c90c:	6a 01                	push   $0x1
40c90e:	50                   	push   %eax
40c90f:	e8 42 08 00 00       	call   0x40d156
40c914:	83 c4 0c             	add    $0xc,%esp
40c917:	85 c0                	test   %eax,%eax
40c919:	74 06                	je     0x40c921
40c91b:	66 8b 45 08          	mov    0x8(%ebp),%ax
40c91f:	c9                   	leave
40c920:	c3                   	ret
40c921:	b8 ff ff 00 00       	mov    $0xffff,%eax
40c926:	c9                   	leave
40c927:	c3                   	ret
40c928:	6a 10                	push   $0x10
40c92a:	68 38 4d 41 00       	push   $0x414d38
40c92f:	e8 dc 6a ff ff       	call   0x403410
40c934:	8b 75 08             	mov    0x8(%ebp),%esi
40c937:	89 75 e0             	mov    %esi,-0x20(%ebp)
40c93a:	85 f6                	test   %esi,%esi
40c93c:	75 23                	jne    0x40c961
40c93e:	8b 45 0c             	mov    0xc(%ebp),%eax
40c941:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c945:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40c94c:	50                   	push   %eax
40c94d:	33 ff                	xor    %edi,%edi
40c94f:	57                   	push   %edi
40c950:	57                   	push   %edi
40c951:	57                   	push   %edi
40c952:	57                   	push   %edi
40c953:	57                   	push   %edi
40c954:	e8 46 93 ff ff       	call   0x405c9f
40c959:	83 c4 18             	add    $0x18,%esp
40c95c:	83 c8 ff             	or     $0xffffffff,%eax
40c95f:	eb 40                	jmp    0x40c9a1
40c961:	8b 46 0c             	mov    0xc(%esi),%eax
40c964:	90                   	nop
40c965:	c1 e8 0c             	shr    $0xc,%eax
40c968:	56                   	push   %esi
40c969:	a8 01                	test   $0x1,%al
40c96b:	74 08                	je     0x40c975
40c96d:	e8 0d 0a 00 00       	call   0x40d37f
40c972:	59                   	pop    %ecx
40c973:	eb e7                	jmp    0x40c95c
40c975:	33 ff                	xor    %edi,%edi
40c977:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c97a:	e8 1d de ff ff       	call   0x40a79c
40c97f:	59                   	pop    %ecx
40c980:	89 7d fc             	mov    %edi,-0x4(%ebp)
40c983:	ff 75 0c             	push   0xc(%ebp)
40c986:	56                   	push   %esi
40c987:	e8 33 00 00 00       	call   0x40c9bf
40c98c:	59                   	pop    %ecx
40c98d:	59                   	pop    %ecx
40c98e:	8b f8                	mov    %eax,%edi
40c990:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c993:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c99a:	e8 18 00 00 00       	call   0x40c9b7
40c99f:	8b c7                	mov    %edi,%eax
40c9a1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c9a4:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c9ab:	59                   	pop    %ecx
40c9ac:	5f                   	pop    %edi
40c9ad:	5e                   	pop    %esi
40c9ae:	5b                   	pop    %ebx
40c9af:	c9                   	leave
40c9b0:	c3                   	ret
40c9b1:	8b 75 e0             	mov    -0x20(%ebp),%esi
40c9b4:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40c9b7:	56                   	push   %esi
40c9b8:	e8 f3 dd ff ff       	call   0x40a7b0
40c9bd:	59                   	pop    %ecx
40c9be:	c3                   	ret
40c9bf:	8b ff                	mov    %edi,%edi
40c9c1:	55                   	push   %ebp
40c9c2:	8b ec                	mov    %esp,%ebp
40c9c4:	56                   	push   %esi
40c9c5:	8b 75 08             	mov    0x8(%ebp),%esi
40c9c8:	85 f6                	test   %esi,%esi
40c9ca:	75 23                	jne    0x40c9ef
40c9cc:	8b 45 0c             	mov    0xc(%ebp),%eax
40c9cf:	50                   	push   %eax
40c9d0:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c9d4:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40c9db:	33 c0                	xor    %eax,%eax
40c9dd:	50                   	push   %eax
40c9de:	50                   	push   %eax
40c9df:	50                   	push   %eax
40c9e0:	50                   	push   %eax
40c9e1:	50                   	push   %eax
40c9e2:	e8 b8 92 ff ff       	call   0x405c9f
40c9e7:	83 c4 18             	add    $0x18,%esp
40c9ea:	83 c8 ff             	or     $0xffffffff,%eax
40c9ed:	eb 5b                	jmp    0x40ca4a
40c9ef:	8b 46 0c             	mov    0xc(%esi),%eax
40c9f2:	57                   	push   %edi
40c9f3:	83 cf ff             	or     $0xffffffff,%edi
40c9f6:	90                   	nop
40c9f7:	c1 e8 0d             	shr    $0xd,%eax
40c9fa:	a8 01                	test   $0x1,%al
40c9fc:	74 42                	je     0x40ca40
40c9fe:	ff 75 0c             	push   0xc(%ebp)
40ca01:	56                   	push   %esi
40ca02:	e8 aa db ff ff       	call   0x40a5b1
40ca07:	56                   	push   %esi
40ca08:	8b f8                	mov    %eax,%edi
40ca0a:	e8 ec fa ff ff       	call   0x40c4fb
40ca0f:	83 c4 0c             	add    $0xc,%esp
40ca12:	ff 75 0c             	push   0xc(%ebp)
40ca15:	56                   	push   %esi
40ca16:	e8 de e3 ff ff       	call   0x40adf9
40ca1b:	59                   	pop    %ecx
40ca1c:	50                   	push   %eax
40ca1d:	e8 1a 08 00 00       	call   0x40d23c
40ca22:	59                   	pop    %ecx
40ca23:	59                   	pop    %ecx
40ca24:	85 c0                	test   %eax,%eax
40ca26:	79 05                	jns    0x40ca2d
40ca28:	83 cf ff             	or     $0xffffffff,%edi
40ca2b:	eb 13                	jmp    0x40ca40
40ca2d:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
40ca31:	74 0d                	je     0x40ca40
40ca33:	ff 76 1c             	push   0x1c(%esi)
40ca36:	e8 3e ae ff ff       	call   0x407879
40ca3b:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
40ca3f:	59                   	pop    %ecx
40ca40:	56                   	push   %esi
40ca41:	e8 39 09 00 00       	call   0x40d37f
40ca46:	59                   	pop    %ecx
40ca47:	8b c7                	mov    %edi,%eax
40ca49:	5f                   	pop    %edi
40ca4a:	5e                   	pop    %esi
40ca4b:	5d                   	pop    %ebp
40ca4c:	c3                   	ret
40ca4d:	8b ff                	mov    %edi,%edi
40ca4f:	55                   	push   %ebp
40ca50:	8b ec                	mov    %esp,%ebp
40ca52:	83 ec 28             	sub    $0x28,%esp
40ca55:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40ca58:	56                   	push   %esi
40ca59:	6a 00                	push   $0x0
40ca5b:	e8 b0 8f ff ff       	call   0x405a10
40ca60:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ca63:	50                   	push   %eax
40ca64:	ff 75 08             	push   0x8(%ebp)
40ca67:	e8 bc fe ff ff       	call   0x40c928
40ca6c:	59                   	pop    %ecx
40ca6d:	59                   	pop    %ecx
40ca6e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40ca71:	8b f0                	mov    %eax,%esi
40ca73:	e8 e0 8f ff ff       	call   0x405a58
40ca78:	8b c6                	mov    %esi,%eax
40ca7a:	5e                   	pop    %esi
40ca7b:	c9                   	leave
40ca7c:	c3                   	ret
40ca7d:	cc                   	int3
40ca7e:	cc                   	int3
40ca7f:	cc                   	int3
40ca80:	83 3d bc 73 41 00 00 	cmpl   $0x0,0x4173bc
40ca87:	74 32                	je     0x40cabb
40ca89:	83 ec 08             	sub    $0x8,%esp
40ca8c:	0f ae 5c 24 04       	stmxcsr 0x4(%esp)
40ca91:	8b 44 24 04          	mov    0x4(%esp),%eax
40ca95:	25 80 7f 00 00       	and    $0x7f80,%eax