40d782:	e9 4f ff ff ff       	jmp    0x40d6d6
40d787:	e8 7b a5 ff ff       	call   0x407d07
40d78c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d792:	e8 97 a4 ff ff       	call   0x407c2e
40d797:	5f                   	pop    %edi
40d798:	5e                   	pop    %esi
40d799:	8b c3                	mov    %ebx,%eax
40d79b:	5b                   	pop    %ebx
40d79c:	8b e5                	mov    %ebp,%esp
40d79e:	5d                   	pop    %ebp
40d79f:	c3                   	ret
40d7a0:	8b ff                	mov    %edi,%edi
40d7a2:	55                   	push   %ebp
40d7a3:	8b ec                	mov    %esp,%ebp
40d7a5:	83 ec 1c             	sub    $0x1c,%esp
40d7a8:	56                   	push   %esi
40d7a9:	57                   	push   %edi
40d7aa:	ff 75 0c             	push   0xc(%ebp)
40d7ad:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40d7b0:	50                   	push   %eax
40d7b1:	e8 a6 fd ff ff       	call   0x40d55c
40d7b6:	8b f0                	mov    %eax,%esi
40d7b8:	8d 7d f0             	lea    -0x10(%ebp),%edi
40d7bb:	59                   	pop    %ecx
40d7bc:	59                   	pop    %ecx
40d7bd:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40d7be:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40d7bf:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40d7c0:	80 7d f8 00          	cmpb   $0x0,-0x8(%ebp)
40d7c4:	5f                   	pop    %edi
40d7c5:	5e                   	pop    %esi
40d7c6:	75 04                	jne    0x40d7cc
40d7c8:	33 c0                	xor    %eax,%eax
40d7ca:	eb 55                	jmp    0x40d821
40d7cc:	68 80 01 00 00       	push   $0x180
40d7d1:	ff 75 10             	push   0x10(%ebp)
40d7d4:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d7d7:	ff 75 f0             	push   -0x10(%ebp)
40d7da:	ff 75 08             	push   0x8(%ebp)
40d7dd:	50                   	push   %eax
40d7de:	e8 cb 6e 00 00       	call   0x4146ae
40d7e3:	83 c4 14             	add    $0x14,%esp
40d7e6:	85 c0                	test   %eax,%eax
40d7e8:	75 de                	jne    0x40d7c8
40d7ea:	8b 45 14             	mov    0x14(%ebp),%eax
40d7ed:	ff 05 ac 41 42 00    	incl   0x4241ac
40d7f3:	83 c0 0c             	add    $0xc,%eax
40d7f6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d7f9:	f0 09 08             	lock or %ecx,(%eax)
40d7fc:	8b 45 14             	mov    0x14(%ebp),%eax
40d7ff:	33 c9                	xor    %ecx,%ecx
40d801:	89 48 08             	mov    %ecx,0x8(%eax)
40d804:	8b 45 14             	mov    0x14(%ebp),%eax
40d807:	89 48 1c             	mov    %ecx,0x1c(%eax)
40d80a:	8b 45 14             	mov    0x14(%ebp),%eax
40d80d:	89 48 04             	mov    %ecx,0x4(%eax)
40d810:	8b 45 14             	mov    0x14(%ebp),%eax
40d813:	89 08                	mov    %ecx,(%eax)
40d815:	8b 4d 14             	mov    0x14(%ebp),%ecx
40d818:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d81b:	89 41 10             	mov    %eax,0x10(%ecx)
40d81e:	8b 45 14             	mov    0x14(%ebp),%eax
40d821:	8b e5                	mov    %ebp,%esp
40d823:	5d                   	pop    %ebp
40d824:	c3                   	ret
40d825:	8b ff                	mov    %edi,%edi
40d827:	55                   	push   %ebp
40d828:	8b ec                	mov    %esp,%ebp
40d82a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d82d:	8b 01                	mov    (%ecx),%eax
40d82f:	a8 40                	test   $0x40,%al
40d831:	74 04                	je     0x40d837
40d833:	32 c0                	xor    %al,%al
40d835:	5d                   	pop    %ebp
40d836:	c3                   	ret
40d837:	83 c8 40             	or     $0x40,%eax
40d83a:	89 01                	mov    %eax,(%ecx)
40d83c:	b0 01                	mov    $0x1,%al
40d83e:	5d                   	pop    %ebp
40d83f:	c3                   	ret
40d840:	8b ff                	mov    %edi,%edi
40d842:	55                   	push   %ebp
40d843:	8b ec                	mov    %esp,%ebp
40d845:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d848:	ba 00 10 00 00       	mov    $0x1000,%edx
40d84d:	8b 01                	mov    (%ecx),%eax
40d84f:	85 c2                	test   %eax,%edx
40d851:	74 04                	je     0x40d857
40d853:	32 c0                	xor    %al,%al
40d855:	5d                   	pop    %ebp
40d856:	c3                   	ret
40d857:	0b c2                	or     %edx,%eax
40d859:	89 01                	mov    %eax,(%ecx)
40d85b:	b0 01                	mov    $0x1,%al
40d85d:	5d                   	pop    %ebp
40d85e:	c3                   	ret
40d85f:	8b ff                	mov    %edi,%edi
40d861:	55                   	push   %ebp
40d862:	8b ec                	mov    %esp,%ebp
40d864:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d867:	8b 01                	mov    (%ecx),%eax
40d869:	a9 00 c0 00 00       	test   $0xc000,%eax
40d86e:	74 04                	je     0x40d874
40d870:	32 c0                	xor    %al,%al
40d872:	5d                   	pop    %ebp
40d873:	c3                   	ret
40d874:	0d 00 80 00 00       	or     $0x8000,%eax
40d879:	89 01                	mov    %eax,(%ecx)
40d87b:	b0 01                	mov    $0x1,%al
40d87d:	5d                   	pop    %ebp
40d87e:	c3                   	ret
40d87f:	8b ff                	mov    %edi,%edi
40d881:	55                   	push   %ebp
40d882:	8b ec                	mov    %esp,%ebp
40d884:	8b 45 0c             	mov    0xc(%ebp),%eax
40d887:	80 38 00             	cmpb   $0x0,(%eax)
40d88a:	74 04                	je     0x40d890
40d88c:	32 c0                	xor    %al,%al
40d88e:	5d                   	pop    %ebp
40d88f:	c3                   	ret
40d890:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d893:	c6 00 01             	movb   $0x1,(%eax)
40d896:	b0 01                	mov    $0x1,%al
40d898:	81 49 04 00 08 00 00 	orl    $0x800,0x4(%ecx)
40d89f:	5d                   	pop    %ebp
40d8a0:	c3                   	ret
40d8a1:	8b ff                	mov    %edi,%edi
40d8a3:	55                   	push   %ebp
40d8a4:	8b ec                	mov    %esp,%ebp
40d8a6:	8b 45 0c             	mov    0xc(%ebp),%eax
40d8a9:	80 38 00             	cmpb   $0x0,(%eax)
40d8ac:	74 04                	je     0x40d8b2
40d8ae:	32 c0                	xor    %al,%al
40d8b0:	5d                   	pop    %ebp
40d8b1:	c3                   	ret
40d8b2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d8b5:	c6 00 01             	movb   $0x1,(%eax)
40d8b8:	b0 01                	mov    $0x1,%al
40d8ba:	81 61 04 ff f7 ff ff 	andl   $0xfffff7ff,0x4(%ecx)
40d8c1:	5d                   	pop    %ebp
40d8c2:	c3                   	ret
40d8c3:	8b ff                	mov    %edi,%edi
40d8c5:	55                   	push   %ebp
40d8c6:	8b ec                	mov    %esp,%ebp
40d8c8:	8b 45 0c             	mov    0xc(%ebp),%eax
40d8cb:	80 38 00             	cmpb   $0x0,(%eax)
40d8ce:	74 04                	je     0x40d8d4
40d8d0:	32 c0                	xor    %al,%al
40d8d2:	5d                   	pop    %ebp
40d8d3:	c3                   	ret
40d8d4:	8b 55 08             	mov    0x8(%ebp),%edx
40d8d7:	c6 00 01             	movb   $0x1,(%eax)
40d8da:	8b 02                	mov    (%edx),%eax
40d8dc:	a8 02                	test   $0x2,%al
40d8de:	75 f0                	jne    0x40d8d0
40d8e0:	8b 4a 04             	mov    0x4(%edx),%ecx
40d8e3:	83 e0 fe             	and    $0xfffffffe,%eax
40d8e6:	83 c8 02             	or     $0x2,%eax
40d8e9:	83 e1 fc             	and    $0xfffffffc,%ecx
40d8ec:	83 c9 04             	or     $0x4,%ecx
40d8ef:	89 02                	mov    %eax,(%edx)
40d8f1:	89 4a 04             	mov    %ecx,0x4(%edx)
40d8f4:	b0 01                	mov    $0x1,%al
40d8f6:	5d                   	pop    %ebp
40d8f7:	c3                   	ret
40d8f8:	8b ff                	mov    %edi,%edi
40d8fa:	55                   	push   %ebp
40d8fb:	8b ec                	mov    %esp,%ebp
40d8fd:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d900:	8b 01                	mov    (%ecx),%eax
40d902:	a9 00 c0 00 00       	test   $0xc000,%eax
40d907:	74 04                	je     0x40d90d
40d909:	32 c0                	xor    %al,%al
40d90b:	5d                   	pop    %ebp
40d90c:	c3                   	ret
40d90d:	0d 00 40 00 00       	or     $0x4000,%eax
40d912:	89 01                	mov    %eax,(%ecx)
40d914:	b0 01                	mov    $0x1,%al
40d916:	5d                   	pop    %ebp
40d917:	c3                   	ret
40d918:	8b ff                	mov    %edi,%edi
40d91a:	55                   	push   %ebp
40d91b:	8b ec                	mov    %esp,%ebp
40d91d:	5d                   	pop    %ebp
40d91e:	e9 7d fe ff ff       	jmp    0x40d7a0
40d923:	6a 0c                	push   $0xc
40d925:	68 e0 1d 42 00       	push   $0x421de0
40d92a:	e8 21 62 ff ff       	call   0x403b50
40d92f:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40d933:	8b 45 08             	mov    0x8(%ebp),%eax
40d936:	ff 30                	push   (%eax)
40d938:	e8 7b ea ff ff       	call   0x40c3b8
40d93d:	59                   	pop    %ecx
40d93e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d942:	8b 45 0c             	mov    0xc(%ebp),%eax
40d945:	8b 00                	mov    (%eax),%eax
40d947:	8b 30                	mov    (%eax),%esi
40d949:	8b d6                	mov    %esi,%edx
40d94b:	c1 fa 06             	sar    $0x6,%edx
40d94e:	8b c6                	mov    %esi,%eax
40d950:	83 e0 3f             	and    $0x3f,%eax
40d953:	6b c8 30             	imul   $0x30,%eax,%ecx
40d956:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40d95d:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40d962:	74 0b                	je     0x40d96f
40d964:	56                   	push   %esi
40d965:	e8 e2 00 00 00       	call   0x40da4c
40d96a:	59                   	pop    %ecx
40d96b:	8b f0                	mov    %eax,%esi
40d96d:	eb 0e                	jmp    0x40d97d
40d96f:	e8 93 a3 ff ff       	call   0x407d07
40d974:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40d97a:	83 ce ff             	or     $0xffffffff,%esi
40d97d:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d980:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40d987:	e8 0d 00 00 00       	call   0x40d999
40d98c:	8b c6                	mov    %esi,%eax
40d98e:	e8 03 62 ff ff       	call   0x403b96
40d993:	c2 0c 00             	ret    $0xc
40d996:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40d999:	8b 45 10             	mov    0x10(%ebp),%eax
40d99c:	ff 30                	push   (%eax)
40d99e:	e8 cc ea ff ff       	call   0x40c46f
40d9a3:	59                   	pop    %ecx
40d9a4:	c3                   	ret
40d9a5:	8b ff                	mov    %edi,%edi
40d9a7:	55                   	push   %ebp
40d9a8:	8b ec                	mov    %esp,%ebp
40d9aa:	83 ec 0c             	sub    $0xc,%esp
40d9ad:	8b 45 08             	mov    0x8(%ebp),%eax
40d9b0:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40d9b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d9b6:	89 45 f4             	mov    %eax,-0xc(%ebp)
40d9b9:	8d 45 f8             	lea    -0x8(%ebp),%eax
40d9bc:	50                   	push   %eax
40d9bd:	ff 75 0c             	push   0xc(%ebp)
40d9c0:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d9c3:	50                   	push   %eax
40d9c4:	e8 5a ff ff ff       	call   0x40d923
40d9c9:	8b e5                	mov    %ebp,%esp
40d9cb:	5d                   	pop    %ebp
40d9cc:	c3                   	ret
40d9cd:	8b ff                	mov    %edi,%edi
40d9cf:	55                   	push   %ebp
40d9d0:	8b ec                	mov    %esp,%ebp
40d9d2:	51                   	push   %ecx
40d9d3:	56                   	push   %esi
40d9d4:	8b 75 08             	mov    0x8(%ebp),%esi
40d9d7:	83 fe fe             	cmp    $0xfffffffe,%esi
40d9da:	75 15                	jne    0x40d9f1
40d9dc:	e8 13 a3 ff ff       	call   0x407cf4
40d9e1:	83 20 00             	andl   $0x0,(%eax)
40d9e4:	e8 1e a3 ff ff       	call   0x407d07
40d9e9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40d9ef:	eb 53                	jmp    0x40da44
40d9f1:	85 f6                	test   %esi,%esi
40d9f3:	78 37                	js     0x40da2c
40d9f5:	3b 35 c0 43 42 00    	cmp    0x4243c0,%esi
40d9fb:	73 2f                	jae    0x40da2c
40d9fd:	8b c6                	mov    %esi,%eax
40d9ff:	8b d6                	mov    %esi,%edx
40da01:	83 e0 3f             	and    $0x3f,%eax
40da04:	c1 fa 06             	sar    $0x6,%edx
40da07:	6b c8 30             	imul   $0x30,%eax,%ecx
40da0a:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40da11:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40da16:	74 14                	je     0x40da2c
40da18:	8d 45 08             	lea    0x8(%ebp),%eax
40da1b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40da1e:	8d 45 fc             	lea    -0x4(%ebp),%eax
40da21:	50                   	push   %eax
40da22:	56                   	push   %esi
40da23:	e8 7d ff ff ff       	call   0x40d9a5
40da28:	59                   	pop    %ecx
40da29:	59                   	pop    %ecx
40da2a:	eb 1b                	jmp    0x40da47
40da2c:	e8 c3 a2 ff ff       	call   0x407cf4
40da31:	83 20 00             	andl   $0x0,(%eax)
40da34:	e8 ce a2 ff ff       	call   0x407d07
40da39:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40da3f:	e8 ea a1 ff ff       	call   0x407c2e
40da44:	83 c8 ff             	or     $0xffffffff,%eax
40da47:	5e                   	pop    %esi
40da48:	8b e5                	mov    %ebp,%esp
40da4a:	5d                   	pop    %ebp
40da4b:	c3                   	ret
40da4c:	8b ff                	mov    %edi,%edi
40da4e:	55                   	push   %ebp
40da4f:	8b ec                	mov    %esp,%ebp
40da51:	56                   	push   %esi
40da52:	57                   	push   %edi
40da53:	8b 7d 08             	mov    0x8(%ebp),%edi
40da56:	57                   	push   %edi
40da57:	e8 d9 eb ff ff       	call   0x40c635
40da5c:	59                   	pop    %ecx
40da5d:	83 f8 ff             	cmp    $0xffffffff,%eax
40da60:	75 04                	jne    0x40da66
40da62:	33 f6                	xor    %esi,%esi
40da64:	eb 4e                	jmp    0x40dab4
40da66:	a1 c0 41 42 00       	mov    0x4241c0,%eax
40da6b:	83 ff 01             	cmp    $0x1,%edi
40da6e:	75 09                	jne    0x40da79
40da70:	f6 80 88 00 00 00 01 	testb  $0x1,0x88(%eax)
40da77:	75 0b                	jne    0x40da84
40da79:	83 ff 02             	cmp    $0x2,%edi
40da7c:	75 1c                	jne    0x40da9a
40da7e:	f6 40 58 01          	testb  $0x1,0x58(%eax)
40da82:	74 16                	je     0x40da9a
40da84:	6a 02                	push   $0x2
40da86:	e8 aa eb ff ff       	call   0x40c635
40da8b:	6a 01                	push   $0x1
40da8d:	8b f0                	mov    %eax,%esi
40da8f:	e8 a1 eb ff ff       	call   0x40c635
40da94:	59                   	pop    %ecx
40da95:	59                   	pop    %ecx
40da96:	3b c6                	cmp    %esi,%eax
40da98:	74 c8                	je     0x40da62
40da9a:	57                   	push   %edi
40da9b:	e8 95 eb ff ff       	call   0x40c635
40daa0:	59                   	pop    %ecx
40daa1:	50                   	push   %eax
40daa2:	ff 15 8c b0 41 00    	call   *0x41b08c
40daa8:	85 c0                	test   %eax,%eax
40daaa:	75 b6                	jne    0x40da62
40daac:	ff 15 48 b0 41 00    	call   *0x41b048
40dab2:	8b f0                	mov    %eax,%esi
40dab4:	57                   	push   %edi
40dab5:	e8 ea ea ff ff       	call   0x40c5a4
40daba:	59                   	pop    %ecx
40dabb:	8b cf                	mov    %edi,%ecx
40dabd:	83 e7 3f             	and    $0x3f,%edi
40dac0:	c1 f9 06             	sar    $0x6,%ecx
40dac3:	6b d7 30             	imul   $0x30,%edi,%edx
40dac6:	8b 0c 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%ecx
40dacd:	c6 44 11 28 00       	movb   $0x0,0x28(%ecx,%edx,1)
40dad2:	85 f6                	test   %esi,%esi
40dad4:	74 0c                	je     0x40dae2
40dad6:	56                   	push   %esi
40dad7:	e8 f5 a1 ff ff       	call   0x407cd1
40dadc:	59                   	pop    %ecx
40dadd:	83 c8 ff             	or     $0xffffffff,%eax
40dae0:	eb 02                	jmp    0x40dae4
40dae2:	33 c0                	xor    %eax,%eax
40dae4:	5f                   	pop    %edi
40dae5:	5e                   	pop    %esi
40dae6:	5d                   	pop    %ebp
40dae7:	c3                   	ret
40dae8:	8b ff                	mov    %edi,%edi
40daea:	55                   	push   %ebp
40daeb:	8b ec                	mov    %esp,%ebp