40c623:	74 43                	je     0x40c668
40c625:	83 bd ec fb ff ff 00 	cmpl   $0x0,-0x414(%ebp)
40c62c:	b8 00 00 02 00       	mov    $0x20000,%eax
40c631:	8b f8                	mov    %eax,%edi
40c633:	50                   	push   %eax
40c634:	74 10                	je     0x40c646
40c636:	6a 00                	push   $0x0
40c638:	ff b5 e4 fb ff ff    	push   -0x41c(%ebp)
40c63e:	ff 15 4c 00 41 00    	call   *0x41004c
40c644:	eb 12                	jmp    0x40c658
40c646:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
40c64c:	ff b5 f8 fb ff ff    	push   -0x408(%ebp)
40c652:	ff 15 3c 00 41 00    	call   *0x41003c
40c658:	8b d8                	mov    %eax,%ebx
40c65a:	85 db                	test   %ebx,%ebx
40c65c:	75 29                	jne    0x40c687
40c65e:	ff 15 40 f0 40 00    	call   *0x40f040
40c664:	85 c0                	test   %eax,%eax
40c666:	74 1f                	je     0x40c687
40c668:	83 bd ec fb ff ff 00 	cmpl   $0x0,-0x414(%ebp)
40c66f:	b9 68 3c 40 00       	mov    $0x403c68,%ecx
40c674:	75 05                	jne    0x40c67b
40c676:	b9 88 14 40 00       	mov    $0x401488,%ecx
40c67b:	8b d0                	mov    %eax,%edx
40c67d:	e8 fe c2 ff ff       	call   0x408980
40c682:	e9 69 01 00 00       	jmp    0x40c7f0
40c687:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
40c68d:	81 e7 00 00 00 01    	and    $0x1000000,%edi
40c693:	50                   	push   %eax
40c694:	68 00 04 00 00       	push   $0x400
40c699:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c69f:	81 cf 00 00 80 00    	or     $0x800000,%edi
40c6a5:	50                   	push   %eax
40c6a6:	c1 ef 15             	shr    $0x15,%edi
40c6a9:	57                   	push   %edi
40c6aa:	53                   	push   %ebx
40c6ab:	ff 15 6c 00 41 00    	call   *0x41006c
40c6b1:	85 c0                	test   %eax,%eax
40c6b3:	0f 85 a0 00 00 00    	jne    0x40c759
40c6b9:	ff 15 40 f0 40 00    	call   *0x40f040
40c6bf:	89 85 f8 fb ff ff    	mov    %eax,-0x408(%ebp)
40c6c5:	83 f8 7a             	cmp    $0x7a,%eax
40c6c8:	75 5c                	jne    0x40c726
40c6ca:	ff b5 f0 fb ff ff    	push   -0x410(%ebp)
40c6d0:	6a 00                	push   $0x0
40c6d2:	ff 15 64 f0 40 00    	call   *0x40f064
40c6d8:	8b f0                	mov    %eax,%esi
40c6da:	85 f6                	test   %esi,%esi
40c6dc:	75 22                	jne    0x40c700
40c6de:	ff 15 40 f0 40 00    	call   *0x40f040
40c6e4:	8b d0                	mov    %eax,%edx
40c6e6:	b9 18 47 40 00       	mov    $0x404718,%ecx
40c6eb:	e8 90 c2 ff ff       	call   0x408980
40c6f0:	53                   	push   %ebx
40c6f1:	8b f0                	mov    %eax,%esi
40c6f3:	ff 15 48 00 41 00    	call   *0x410048
40c6f9:	8b c6                	mov    %esi,%eax
40c6fb:	e9 f0 00 00 00       	jmp    0x40c7f0
40c700:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
40c706:	50                   	push   %eax
40c707:	ff b5 f0 fb ff ff    	push   -0x410(%ebp)
40c70d:	56                   	push   %esi
40c70e:	57                   	push   %edi
40c70f:	53                   	push   %ebx
40c710:	ff 15 6c 00 41 00    	call   *0x41006c
40c716:	85 c0                	test   %eax,%eax
40c718:	75 3f                	jne    0x40c759
40c71a:	ff 15 40 f0 40 00    	call   *0x40f040
40c720:	89 85 f8 fb ff ff    	mov    %eax,-0x408(%ebp)
40c726:	85 c0                	test   %eax,%eax
40c728:	74 2f                	je     0x40c759
40c72a:	8b d0                	mov    %eax,%edx
40c72c:	b9 18 47 40 00       	mov    $0x404718,%ecx
40c731:	e8 4a c2 ff ff       	call   0x408980
40c736:	53                   	push   %ebx
40c737:	ff 15 48 00 41 00    	call   *0x410048
40c73d:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c743:	3b f0                	cmp    %eax,%esi
40c745:	74 07                	je     0x40c74e
40c747:	56                   	push   %esi
40c748:	ff 15 68 f0 40 00    	call   *0x40f068
40c74e:	8b 85 f8 fb ff ff    	mov    -0x408(%ebp),%eax
40c754:	e9 97 00 00 00       	jmp    0x40c7f0
40c759:	6a 00                	push   $0x0
40c75b:	8d 85 dc fb ff ff    	lea    -0x424(%ebp),%eax
40c761:	50                   	push   %eax
40c762:	57                   	push   %edi
40c763:	6a 01                	push   $0x1
40c765:	56                   	push   %esi
40c766:	ff 15 0c 00 41 00    	call   *0x41000c
40c76c:	85 c0                	test   %eax,%eax
40c76e:	75 30                	jne    0x40c7a0
40c770:	ff 15 40 f0 40 00    	call   *0x40f040
40c776:	8b d0                	mov    %eax,%edx
40c778:	b9 50 47 40 00       	mov    $0x404750,%ecx
40c77d:	e8 fe c1 ff ff       	call   0x408980
40c782:	53                   	push   %ebx
40c783:	8b f8                	mov    %eax,%edi
40c785:	ff 15 48 00 41 00    	call   *0x410048
40c78b:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c791:	3b f0                	cmp    %eax,%esi
40c793:	74 07                	je     0x40c79c
40c795:	56                   	push   %esi
40c796:	ff 15 68 f0 40 00    	call   *0x40f068
40c79c:	8b c7                	mov    %edi,%eax
40c79e:	eb 50                	jmp    0x40c7f0
40c7a0:	6a 25                	push   $0x25
40c7a2:	8d 95 dc fb ff ff    	lea    -0x424(%ebp),%edx
40c7a8:	59                   	pop    %ecx
40c7a9:	e8 01 de ff ff       	call   0x40a5af
40c7ae:	ff b5 dc fb ff ff    	push   -0x424(%ebp)
40c7b4:	ff 15 68 f0 40 00    	call   *0x40f068
40c7ba:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40c7be:	74 16                	je     0x40c7d6
40c7c0:	33 d2                	xor    %edx,%edx
40c7c2:	39 95 ec fb ff ff    	cmp    %edx,-0x414(%ebp)
40c7c8:	74 04                	je     0x40c7ce
40c7ca:	6a 7f                	push   $0x7f
40c7cc:	eb 02                	jmp    0x40c7d0
40c7ce:	6a 7e                	push   $0x7e
40c7d0:	59                   	pop    %ecx
40c7d1:	e8 d9 dd ff ff       	call   0x40a5af
40c7d6:	53                   	push   %ebx
40c7d7:	ff 15 48 00 41 00    	call   *0x410048
40c7dd:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c7e3:	3b f0                	cmp    %eax,%esi
40c7e5:	74 07                	je     0x40c7ee
40c7e7:	56                   	push   %esi
40c7e8:	ff 15 68 f0 40 00    	call   *0x40f068
40c7ee:	33 c0                	xor    %eax,%eax
40c7f0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c7f3:	5f                   	pop    %edi
40c7f4:	5e                   	pop    %esi
40c7f5:	33 cd                	xor    %ebp,%ecx
40c7f7:	5b                   	pop    %ebx
40c7f8:	e8 23 98 ff ff       	call   0x406020
40c7fd:	c9                   	leave
40c7fe:	c2 08 00             	ret    $0x8
40c801:	8b ff                	mov    %edi,%edi
40c803:	55                   	push   %ebp
40c804:	8b ec                	mov    %esp,%ebp
40c806:	d1 ea                	shr    $1,%edx
40c808:	8b c2                	mov    %edx,%eax
40c80a:	f7 d8                	neg    %eax
40c80c:	56                   	push   %esi
40c80d:	1b c0                	sbb    %eax,%eax
40c80f:	be 57 00 07 80       	mov    $0x80070057,%esi
40c814:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
40c819:	03 c6                	add    %esi,%eax
40c81b:	85 d2                	test   %edx,%edx
40c81d:	74 1f                	je     0x40c83e
40c81f:	8b 45 0c             	mov    0xc(%ebp),%eax
40c822:	d1 e8                	shr    $1,%eax
40c824:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
40c829:	76 09                	jbe    0x40c834
40c82b:	33 d2                	xor    %edx,%edx
40c82d:	8b c6                	mov    %esi,%eax
40c82f:	66 89 11             	mov    %dx,(%ecx)
40c832:	eb 0a                	jmp    0x40c83e
40c834:	50                   	push   %eax
40c835:	ff 75 08             	push   0x8(%ebp)
40c838:	51                   	push   %ecx
40c839:	e8 af 00 00 00       	call   0x40c8ed
40c83e:	5e                   	pop    %esi
40c83f:	5d                   	pop    %ebp
40c840:	c2 08 00             	ret    $0x8
40c843:	8b ff                	mov    %edi,%edi
40c845:	55                   	push   %ebp
40c846:	8b ec                	mov    %esp,%ebp
40c848:	d1 ea                	shr    $1,%edx
40c84a:	8b c2                	mov    %edx,%eax
40c84c:	f7 d8                	neg    %eax
40c84e:	1b c0                	sbb    %eax,%eax
40c850:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
40c855:	05 57 00 07 80       	add    $0x80070057,%eax
40c85a:	85 d2                	test   %edx,%edx
40c85c:	74 0e                	je     0x40c86c
40c85e:	68 fe ff ff 7f       	push   $0x7ffffffe
40c863:	ff 75 08             	push   0x8(%ebp)
40c866:	51                   	push   %ecx
40c867:	e8 81 00 00 00       	call   0x40c8ed
40c86c:	5d                   	pop    %ebp
40c86d:	c2 04 00             	ret    $0x4
40c870:	8b ff                	mov    %edi,%edi
40c872:	55                   	push   %ebp
40c873:	8b ec                	mov    %esp,%ebp
40c875:	33 c0                	xor    %eax,%eax
40c877:	85 d2                	test   %edx,%edx
40c879:	74 08                	je     0x40c883
40c87b:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40c881:	76 05                	jbe    0x40c888
40c883:	b8 57 00 07 80       	mov    $0x80070057,%eax
40c888:	85 c0                	test   %eax,%eax
40c88a:	78 10                	js     0x40c89c
40c88c:	68 fe ff ff 7f       	push   $0x7ffffffe
40c891:	ff 75 08             	push   0x8(%ebp)
40c894:	51                   	push   %ecx
40c895:	e8 53 00 00 00       	call   0x40c8ed
40c89a:	eb 09                	jmp    0x40c8a5
40c89c:	85 d2                	test   %edx,%edx
40c89e:	74 05                	je     0x40c8a5
40c8a0:	33 d2                	xor    %edx,%edx
40c8a2:	66 89 11             	mov    %dx,(%ecx)
40c8a5:	5d                   	pop    %ebp
40c8a6:	c2 04 00             	ret    $0x4
40c8a9:	8b ff                	mov    %edi,%edi
40c8ab:	55                   	push   %ebp
40c8ac:	8b ec                	mov    %esp,%ebp
40c8ae:	8b 45 0c             	mov    0xc(%ebp),%eax
40c8b1:	33 c9                	xor    %ecx,%ecx
40c8b3:	85 c0                	test   %eax,%eax
40c8b5:	74 07                	je     0x40c8be
40c8b7:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40c8bc:	76 05                	jbe    0x40c8c3
40c8be:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40c8c3:	85 c9                	test   %ecx,%ecx
40c8c5:	78 16                	js     0x40c8dd
40c8c7:	8d 4d 14             	lea    0x14(%ebp),%ecx
40c8ca:	8b d0                	mov    %eax,%edx
40c8cc:	51                   	push   %ecx
40c8cd:	ff 75 10             	push   0x10(%ebp)
40c8d0:	51                   	push   %ecx
40c8d1:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c8d4:	e8 62 00 00 00       	call   0x40c93b
40c8d9:	8b c8                	mov    %eax,%ecx
40c8db:	eb 0c                	jmp    0x40c8e9
40c8dd:	85 c0                	test   %eax,%eax
40c8df:	74 08                	je     0x40c8e9
40c8e1:	8b 45 08             	mov    0x8(%ebp),%eax
40c8e4:	33 d2                	xor    %edx,%edx
40c8e6:	66 89 10             	mov    %dx,(%eax)
40c8e9:	8b c1                	mov    %ecx,%eax
40c8eb:	5d                   	pop    %ebp
40c8ec:	c3                   	ret
40c8ed:	8b ff                	mov    %edi,%edi
40c8ef:	55                   	push   %ebp
40c8f0:	8b ec                	mov    %esp,%ebp
40c8f2:	85 d2                	test   %edx,%edx
40c8f4:	74 29                	je     0x40c91f
40c8f6:	8b 45 0c             	mov    0xc(%ebp),%eax
40c8f9:	56                   	push   %esi
40c8fa:	8b 75 10             	mov    0x10(%ebp),%esi
40c8fd:	2b c1                	sub    %ecx,%eax
40c8ff:	57                   	push   %edi
40c900:	85 f6                	test   %esi,%esi
40c902:	74 15                	je     0x40c919
40c904:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
40c908:	66 85 ff             	test   %di,%di
40c90b:	74 0c                	je     0x40c919
40c90d:	66 89 39             	mov    %di,(%ecx)
40c910:	83 c1 02             	add    $0x2,%ecx
40c913:	4e                   	dec    %esi
40c914:	83 ea 01             	sub    $0x1,%edx
40c917:	75 e7                	jne    0x40c900
40c919:	5f                   	pop    %edi
40c91a:	5e                   	pop    %esi
40c91b:	85 d2                	test   %edx,%edx
40c91d:	75 03                	jne    0x40c922
40c91f:	83 e9 02             	sub    $0x2,%ecx
40c922:	f7 da                	neg    %edx
40c924:	1b d2                	sbb    %edx,%edx
40c926:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
40c92c:	33 c0                	xor    %eax,%eax
40c92e:	66 89 01             	mov    %ax,(%ecx)
40c931:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
40c937:	5d                   	pop    %ebp
40c938:	c2 0c 00             	ret    $0xc
40c93b:	8b ff                	mov    %edi,%edi
40c93d:	55                   	push   %ebp
40c93e:	8b ec                	mov    %esp,%ebp
40c940:	53                   	push   %ebx
40c941:	56                   	push   %esi
40c942:	57                   	push   %edi
40c943:	ff 75 10             	push   0x10(%ebp)
40c946:	8d 72 ff             	lea    -0x1(%edx),%esi
40c949:	8b f9                	mov    %ecx,%edi
40c94b:	ff 75 0c             	push   0xc(%ebp)
40c94e:	33 db                	xor    %ebx,%ebx
40c950:	56                   	push   %esi
40c951:	57                   	push   %edi
40c952:	ff 15 f4 f0 40 00    	call   *0x40f0f4
40c958:	83 c4 10             	add    $0x10,%esp
40c95b:	85 c0                	test   %eax,%eax
40c95d:	78 08                	js     0x40c967
40c95f:	3b c6                	cmp    %esi,%eax
40c961:	77 04                	ja     0x40c967
40c963:	75 0d                	jne    0x40c972
40c965:	eb 05                	jmp    0x40c96c
40c967:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
40c96c:	33 c0                	xor    %eax,%eax
40c96e:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
40c972:	5f                   	pop    %edi
40c973:	5e                   	pop    %esi
40c974:	8b c3                	mov    %ebx,%eax
40c976:	5b                   	pop    %ebx
40c977:	5d                   	pop    %ebp
40c978:	c2 0c 00             	ret    $0xc
40c97b:	8b ff                	mov    %edi,%edi
40c97d:	55                   	push   %ebp
40c97e:	8b ec                	mov    %esp,%ebp
40c980:	8d 04 11             	lea    (%ecx,%edx,1),%eax
40c983:	3b c1                	cmp    %ecx,%eax
40c985:	72 04                	jb     0x40c98b
40c987:	8b d0                	mov    %eax,%edx
40c989:	eb 03                	jmp    0x40c98e
40c98b:	83 ca ff             	or     $0xffffffff,%edx
40c98e:	3b c1                	cmp    %ecx,%eax
40c990:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c993:	1b c0                	sbb    %eax,%eax
40c995:	25 16 02 07 80       	and    $0x80070216,%eax
40c99a:	89 11                	mov    %edx,(%ecx)
40c99c:	5d                   	pop    %ebp
40c99d:	c2 04 00             	ret    $0x4
40c9a0:	8b ff                	mov    %edi,%edi
40c9a2:	55                   	push   %ebp
40c9a3:	8b ec                	mov    %esp,%ebp
40c9a5:	51                   	push   %ecx
40c9a6:	80 3d c4 eb 40 00 00 	cmpb   $0x0,0x40ebc4
40c9ad:	c7 45 fc 8c 4e 40 00 	movl   $0x404e8c,-0x4(%ebp)
40c9b4:	75 09                	jne    0x40c9bf
40c9b6:	c6 05 c4 eb 40 00 01 	movb   $0x1,0x40ebc4
40c9bd:	eb 22                	jmp    0x40c9e1
40c9bf:	33 c9                	xor    %ecx,%ecx
40c9c1:	33 d2                	xor    %edx,%edx
40c9c3:	41                   	inc    %ecx
40c9c4:	e8 e6 db ff ff       	call   0x40a5af
40c9c9:	6a 02                	push   $0x2
40c9cb:	8d 55 fc             	lea    -0x4(%ebp),%edx
40c9ce:	59                   	pop    %ecx
40c9cf:	e8 db db ff ff       	call   0x40a5af
40c9d4:	33 d2                	xor    %edx,%edx
40c9d6:	b9 98 4e 40 00       	mov    $0x404e98,%ecx
40c9db:	42                   	inc    %edx
40c9dc:	e8 76 f0 ff ff       	call   0x40ba57
40c9e1:	b8 67 06 00 00       	mov    $0x667,%eax
40c9e6:	c9                   	leave
40c9e7:	c3                   	ret
40c9e8:	6a 40                	push   $0x40
40c9ea:	68 78 ce 40 00       	push   $0x40ce78
40c9ef:	e8 b8 9d ff ff       	call   0x4067ac
40c9f4:	8b 75 0c             	mov    0xc(%ebp),%esi
40c9f7:	8b 5d 14             	mov    0x14(%ebp),%ebx
40c9fa:	8b 45 18             	mov    0x18(%ebp),%eax
40c9fd:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40ca00:	8b 45 1c             	mov    0x1c(%ebp),%eax
40ca03:	89 45 bc             	mov    %eax,-0x44(%ebp)
40ca06:	8b 7d 20             	mov    0x20(%ebp),%edi
40ca09:	8b 45 10             	mov    0x10(%ebp),%eax
40ca0c:	85 f6                	test   %esi,%esi
40ca0e:	74 0a                	je     0x40ca1a