40f61f:	1b d2                	sbb    %edx,%edx
40f621:	83 e2 ce             	and    $0xffffffce,%edx
40f624:	81 c2 96 00 00 00    	add    $0x96,%edx
40f62a:	03 c2                	add    %edx,%eax
40f62c:	c3                   	ret
40f62d:	33 c0                	xor    %eax,%eax
40f62f:	85 d2                	test   %edx,%edx
40f631:	0f 94 c0             	sete   %al
40f634:	8d 04 45 09 00 00 00 	lea    0x9(,%eax,2),%eax
40f63b:	c3                   	ret
40f63c:	33 c0                	xor    %eax,%eax
40f63e:	85 d2                	test   %edx,%edx
40f640:	0f 94 c0             	sete   %al
40f643:	8d 04 45 08 00 00 00 	lea    0x8(,%eax,2),%eax
40f64a:	c3                   	ret
40f64b:	33 c0                	xor    %eax,%eax
40f64d:	85 d2                	test   %edx,%edx
40f64f:	0f 94 c0             	sete   %al
40f652:	8d 04 85 03 00 00 00 	lea    0x3(,%eax,4),%eax
40f659:	c3                   	ret
40f65a:	33 c0                	xor    %eax,%eax
40f65c:	85 d2                	test   %edx,%edx
40f65e:	0f 94 c0             	sete   %al
40f661:	8d 04 85 02 00 00 00 	lea    0x2(,%eax,4),%eax
40f668:	c3                   	ret
40f669:	33 c0                	xor    %eax,%eax
40f66b:	85 d2                	test   %edx,%edx
40f66d:	0f 94 c0             	sete   %al
40f670:	8d 04 85 01 00 00 00 	lea    0x1(,%eax,4),%eax
40f677:	c3                   	ret
40f678:	f7 da                	neg    %edx
40f67a:	1b d2                	sbb    %edx,%edx
40f67c:	83 e2 fc             	and    $0xfffffffc,%edx
40f67f:	8d 42 04             	lea    0x4(%edx),%eax
40f682:	c3                   	ret
40f683:	b8 ff 00 00 00       	mov    $0xff,%eax
40f688:	c3                   	ret
40f689:	8b ff                	mov    %edi,%edi
40f68b:	55                   	push   %ebp
40f68c:	8b ec                	mov    %esp,%ebp
40f68e:	83 ec 0c             	sub    $0xc,%esp
40f691:	53                   	push   %ebx
40f692:	8b c2                	mov    %edx,%eax
40f694:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f697:	33 db                	xor    %ebx,%ebx
40f699:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f69c:	83 f8 04             	cmp    $0x4,%eax
40f69f:	56                   	push   %esi
40f6a0:	8b 31                	mov    (%ecx),%esi
40f6a2:	0f 94 c3             	sete   %bl
40f6a5:	57                   	push   %edi
40f6a6:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f6a9:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f6ac:	83 67 04 00          	andl   $0x0,0x4(%edi)
40f6b0:	8b ce                	mov    %esi,%ecx
40f6b2:	83 c9 01             	or     $0x1,%ecx
40f6b5:	8b c1                	mov    %ecx,%eax
40f6b7:	c1 e8 0e             	shr    $0xe,%eax
40f6ba:	83 e0 01             	and    $0x1,%eax
40f6bd:	3b c3                	cmp    %ebx,%eax
40f6bf:	74 33                	je     0x40f6f4
40f6c1:	8b d1                	mov    %ecx,%edx
40f6c3:	c1 ea 05             	shr    $0x5,%edx
40f6c6:	81 e2 ff 01 00 00    	and    $0x1ff,%edx
40f6cc:	76 19                	jbe    0x40f6e7
40f6ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f6d1:	f7 d8                	neg    %eax
40f6d3:	89 57 04             	mov    %edx,0x4(%edi)
40f6d6:	1b c0                	sbb    %eax,%eax
40f6d8:	83 e0 fc             	and    $0xfffffffc,%eax
40f6db:	83 c0 04             	add    $0x4,%eax
40f6de:	81 e1 1f c0 ff ff    	and    $0xffffc01f,%ecx
40f6e4:	89 47 08             	mov    %eax,0x8(%edi)
40f6e7:	8b c3                	mov    %ebx,%eax
40f6e9:	81 e1 ff bf ff ff    	and    $0xffffbfff,%ecx
40f6ef:	c1 e0 0e             	shl    $0xe,%eax
40f6f2:	0b c8                	or     %eax,%ecx
40f6f4:	8b c1                	mov    %ecx,%eax
40f6f6:	c1 e8 05             	shr    $0x5,%eax
40f6f9:	25 ff 01 00 00       	and    $0x1ff,%eax
40f6fe:	8d 50 01             	lea    0x1(%eax),%edx
40f701:	81 fa ff 01 00 00    	cmp    $0x1ff,%edx
40f707:	77 04                	ja     0x40f70d
40f709:	3b d0                	cmp    %eax,%edx
40f70b:	73 0f                	jae    0x40f71c
40f70d:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f710:	33 d2                	xor    %edx,%edx
40f712:	89 5f 08             	mov    %ebx,0x8(%edi)
40f715:	42                   	inc    %edx
40f716:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f719:	89 47 04             	mov    %eax,0x4(%edi)
40f71c:	c1 e2 05             	shl    $0x5,%edx
40f71f:	8b c6                	mov    %esi,%eax
40f721:	33 d1                	xor    %ecx,%edx
40f723:	81 e2 e0 3f 00 00    	and    $0x3fe0,%edx
40f729:	33 ca                	xor    %edx,%ecx
40f72b:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f72e:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
40f732:	3b c6                	cmp    %esi,%eax
40f734:	74 07                	je     0x40f73d
40f736:	8b f0                	mov    %eax,%esi
40f738:	e9 6f ff ff ff       	jmp    0x40f6ac
40f73d:	f7 d6                	not    %esi
40f73f:	83 e6 01             	and    $0x1,%esi
40f742:	83 67 10 00          	andl   $0x0,0x10(%edi)
40f746:	89 37                	mov    %esi,(%edi)
40f748:	5f                   	pop    %edi
40f749:	5e                   	pop    %esi
40f74a:	5b                   	pop    %ebx
40f74b:	c9                   	leave
40f74c:	c2 08 00             	ret    $0x8
40f74f:	8b ff                	mov    %edi,%edi
40f751:	55                   	push   %ebp
40f752:	8b ec                	mov    %esp,%ebp
40f754:	83 ec 0c             	sub    $0xc,%esp
40f757:	53                   	push   %ebx
40f758:	8b c2                	mov    %edx,%eax
40f75a:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f75d:	33 db                	xor    %ebx,%ebx
40f75f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f762:	83 f8 05             	cmp    $0x5,%eax
40f765:	56                   	push   %esi
40f766:	8b 31                	mov    (%ecx),%esi
40f768:	0f 94 c3             	sete   %bl
40f76b:	57                   	push   %edi
40f76c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f76f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f772:	83 67 04 00          	andl   $0x0,0x4(%edi)
40f776:	8b ce                	mov    %esi,%ecx
40f778:	83 c9 01             	or     $0x1,%ecx
40f77b:	8b c1                	mov    %ecx,%eax
40f77d:	c1 e8 16             	shr    $0x16,%eax
40f780:	83 e0 01             	and    $0x1,%eax
40f783:	3b c3                	cmp    %ebx,%eax
40f785:	74 36                	je     0x40f7bd
40f787:	8b d1                	mov    %ecx,%edx
40f789:	c1 ea 0f             	shr    $0xf,%edx
40f78c:	83 e2 7f             	and    $0x7f,%edx
40f78f:	76 1f                	jbe    0x40f7b0
40f791:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f794:	33 c0                	xor    %eax,%eax
40f796:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
40f79a:	0f 94 c0             	sete   %al
40f79d:	81 e1 ff 7f c0 ff    	and    $0xffc07fff,%ecx
40f7a3:	89 57 04             	mov    %edx,0x4(%edi)
40f7a6:	8d 04 85 01 00 00 00 	lea    0x1(,%eax,4),%eax
40f7ad:	89 47 08             	mov    %eax,0x8(%edi)
40f7b0:	8b c3                	mov    %ebx,%eax
40f7b2:	81 e1 ff ff bf ff    	and    $0xffbfffff,%ecx
40f7b8:	c1 e0 16             	shl    $0x16,%eax
40f7bb:	0b c8                	or     %eax,%ecx
40f7bd:	8b c1                	mov    %ecx,%eax
40f7bf:	c1 e8 0f             	shr    $0xf,%eax
40f7c2:	83 e0 7f             	and    $0x7f,%eax
40f7c5:	8d 50 01             	lea    0x1(%eax),%edx
40f7c8:	83 fa 7f             	cmp    $0x7f,%edx
40f7cb:	77 04                	ja     0x40f7d1
40f7cd:	3b d0                	cmp    %eax,%edx
40f7cf:	73 0f                	jae    0x40f7e0
40f7d1:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f7d4:	33 d2                	xor    %edx,%edx
40f7d6:	89 5f 08             	mov    %ebx,0x8(%edi)
40f7d9:	42                   	inc    %edx
40f7da:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f7dd:	89 47 04             	mov    %eax,0x4(%edi)
40f7e0:	c1 e2 0f             	shl    $0xf,%edx
40f7e3:	8b c6                	mov    %esi,%eax
40f7e5:	33 d1                	xor    %ecx,%edx
40f7e7:	81 e2 00 80 3f 00    	and    $0x3f8000,%edx
40f7ed:	33 ca                	xor    %edx,%ecx
40f7ef:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f7f2:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
40f7f6:	3b c6                	cmp    %esi,%eax
40f7f8:	74 07                	je     0x40f801
40f7fa:	8b f0                	mov    %eax,%esi
40f7fc:	e9 71 ff ff ff       	jmp    0x40f772
40f801:	f7 d6                	not    %esi
40f803:	83 e6 01             	and    $0x1,%esi
40f806:	83 67 10 00          	andl   $0x0,0x10(%edi)
40f80a:	89 37                	mov    %esi,(%edi)
40f80c:	5f                   	pop    %edi
40f80d:	5e                   	pop    %esi
40f80e:	5b                   	pop    %ebx
40f80f:	c9                   	leave
40f810:	c2 08 00             	ret    $0x8
40f813:	8b ff                	mov    %edi,%edi
40f815:	55                   	push   %ebp
40f816:	8b ec                	mov    %esp,%ebp
40f818:	83 ec 0c             	sub    $0xc,%esp
40f81b:	53                   	push   %ebx
40f81c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f81f:	33 c0                	xor    %eax,%eax
40f821:	56                   	push   %esi
40f822:	57                   	push   %edi
40f823:	8b f2                	mov    %edx,%esi
40f825:	8b fb                	mov    %ebx,%edi
40f827:	89 75 f4             	mov    %esi,-0xc(%ebp)
40f82a:	8b d1                	mov    %ecx,%edx
40f82c:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f82f:	6a 06                	push   $0x6
40f831:	59                   	pop    %ecx
40f832:	f3 ab                	rep stos %eax,%es:(%edi)
40f834:	83 fe 07             	cmp    $0x7,%esi
40f837:	77 7f                	ja     0x40f8b8
40f839:	0f b6 86 37 f9 40 00 	movzbl 0x40f937(%esi),%eax
40f840:	ff 24 85 2b f9 40 00 	jmp    *0x40f92b(,%eax,4)
40f847:	33 c9                	xor    %ecx,%ecx
40f849:	4e                   	dec    %esi
40f84a:	83 ee 01             	sub    $0x1,%esi
40f84d:	74 1b                	je     0x40f86a
40f84f:	83 ee 01             	sub    $0x1,%esi
40f852:	74 12                	je     0x40f866
40f854:	83 ee 03             	sub    $0x3,%esi
40f857:	74 09                	je     0x40f862
40f859:	83 ee 01             	sub    $0x1,%esi
40f85c:	75 0f                	jne    0x40f86d
40f85e:	6a 10                	push   $0x10
40f860:	eb 0a                	jmp    0x40f86c
40f862:	6a 04                	push   $0x4
40f864:	eb 06                	jmp    0x40f86c
40f866:	6a 08                	push   $0x8
40f868:	eb 02                	jmp    0x40f86c
40f86a:	6a 02                	push   $0x2
40f86c:	59                   	pop    %ecx
40f86d:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f870:	83 c9 01             	or     $0x1,%ecx
40f873:	8b 06                	mov    (%esi),%eax
40f875:	8b d0                	mov    %eax,%edx
40f877:	0b d1                	or     %ecx,%edx
40f879:	f0 0f b1 16          	lock cmpxchg %edx,(%esi)
40f87d:	75 f6                	jne    0x40f875
40f87f:	8b d0                	mov    %eax,%edx
40f881:	83 e1 fe             	and    $0xfffffffe,%ecx
40f884:	23 c1                	and    %ecx,%eax
40f886:	f7 d2                	not    %edx
40f888:	2b c1                	sub    %ecx,%eax
40f88a:	83 e2 01             	and    $0x1,%edx
40f88d:	f7 d8                	neg    %eax
40f88f:	89 13                	mov    %edx,(%ebx)
40f891:	1b c0                	sbb    %eax,%eax
40f893:	40                   	inc    %eax
40f894:	89 43 10             	mov    %eax,0x10(%ebx)
40f897:	e9 86 00 00 00       	jmp    0x40f922
40f89c:	53                   	push   %ebx
40f89d:	51                   	push   %ecx
40f89e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f8a1:	8b d6                	mov    %esi,%edx
40f8a3:	e8 e1 fd ff ff       	call   0x40f689
40f8a8:	eb 78                	jmp    0x40f922
40f8aa:	53                   	push   %ebx
40f8ab:	51                   	push   %ecx
40f8ac:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f8af:	8b d6                	mov    %esi,%edx
40f8b1:	e8 99 fe ff ff       	call   0x40f74f
40f8b6:	eb 6a                	jmp    0x40f922
40f8b8:	8d be c0 fe ff ff    	lea    -0x140(%esi),%edi
40f8be:	83 ff 40             	cmp    $0x40,%edi
40f8c1:	73 51                	jae    0x40f914
40f8c3:	8d 42 04             	lea    0x4(%edx),%eax
40f8c6:	8b 10                	mov    (%eax),%edx
40f8c8:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f8cb:	8b c7                	mov    %edi,%eax
40f8cd:	83 e0 3f             	and    $0x3f,%eax
40f8d0:	c1 e0 05             	shl    $0x5,%eax
40f8d3:	8b f0                	mov    %eax,%esi
40f8d5:	f6 c2 10             	test   $0x10,%dl
40f8d8:	74 11                	je     0x40f8eb
40f8da:	8b c2                	mov    %edx,%eax
40f8dc:	c1 e8 05             	shr    $0x5,%eax
40f8df:	83 e0 3f             	and    $0x3f,%eax
40f8e2:	3b c7                	cmp    %edi,%eax
40f8e4:	75 05                	jne    0x40f8eb
40f8e6:	33 c0                	xor    %eax,%eax
40f8e8:	40                   	inc    %eax
40f8e9:	eb 02                	jmp    0x40f8ed
40f8eb:	33 c0                	xor    %eax,%eax
40f8ed:	8b ca                	mov    %edx,%ecx
40f8ef:	89 43 10             	mov    %eax,0x10(%ebx)
40f8f2:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f8f5:	81 e1 1f f8 ff ff    	and    $0xfffff81f,%ecx
40f8fb:	0b ce                	or     %esi,%ecx
40f8fd:	8b c2                	mov    %edx,%eax
40f8ff:	83 c9 10             	or     $0x10,%ecx
40f902:	f0 0f b1 0b          	lock cmpxchg %ecx,(%ebx)
40f906:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f909:	3b c2                	cmp    %edx,%eax
40f90b:	74 04                	je     0x40f911
40f90d:	8b d0                	mov    %eax,%edx
40f90f:	eb c4                	jmp    0x40f8d5
40f911:	8b 75 f4             	mov    -0xc(%ebp),%esi
40f914:	83 63 0c 00          	andl   $0x0,0xc(%ebx)
40f918:	89 73 08             	mov    %esi,0x8(%ebx)
40f91b:	c7 43 04 01 00 00 00 	movl   $0x1,0x4(%ebx)
40f922:	5f                   	pop    %edi
40f923:	5e                   	pop    %esi
40f924:	8b c3                	mov    %ebx,%eax
40f926:	5b                   	pop    %ebx
40f927:	c9                   	leave
40f928:	c2 0c 00             	ret    $0xc
40f92b:	9c                   	pushf
40f92c:	f8                   	clc
40f92d:	40                   	inc    %eax
40f92e:	00 aa f8 40 00 47    	add    %ch,0x470040f8(%edx)
40f934:	f8                   	clc
40f935:	40                   	inc    %eax
40f936:	00 00                	add    %al,(%eax)
40f938:	01 02                	add    %eax,(%edx)
40f93a:	02 00                	add    (%eax),%al
40f93c:	01 02                	add    %eax,(%edx)
40f93e:	02 8b ff 55 8b ec    	add    -0x1374aa01(%ebx),%cl
40f944:	83 ec 3c             	sub    $0x3c,%esp
40f947:	a1 10 42 42 00       	mov    0x424210,%eax
40f94c:	33 c5                	xor    %ebp,%eax
40f94e:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f951:	53                   	push   %ebx
40f952:	8b 5d 10             	mov    0x10(%ebp),%ebx
40f955:	8b c1                	mov    %ecx,%eax
40f957:	56                   	push   %esi
40f958:	57                   	push   %edi
40f959:	51                   	push   %ecx
40f95a:	51                   	push   %ecx
40f95b:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40f95e:	89 55 c8             	mov    %edx,-0x38(%ebp)
40f961:	51                   	push   %ecx
40f962:	8b d3                	mov    %ebx,%edx
40f964:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40f967:	8b c8                	mov    %eax,%ecx
40f969:	e8 a5 fe ff ff       	call   0x40f813
40f96e:	6a 06                	push   $0x6
40f970:	59                   	pop    %ecx
40f971:	8b f0                	mov    %eax,%esi
40f973:	8d 7d cc             	lea    -0x34(%ebp),%edi
40f976:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40f978:	8b 3d 7c 4d 42 00    	mov    0x424d7c,%edi
40f97e:	85 ff                	test   %edi,%edi
40f980:	74 50                	je     0x40f9d2
40f982:	8b 75 c8             	mov    -0x38(%ebp),%esi
40f985:	8d 45 cc             	lea    -0x34(%ebp),%eax
40f988:	50                   	push   %eax
40f989:	ff 75 c4             	push   -0x3c(%ebp)
40f98c:	8b cf                	mov    %edi,%ecx
40f98e:	6a 01                	push   $0x1
40f990:	53                   	push   %ebx
40f991:	56                   	push   %esi
40f992:	ff 15 78 64 42 00    	call   *0x426478
40f998:	ff d7                	call   *%edi
40f99a:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40f99e:	74 4d                	je     0x40f9ed
40f9a0:	8b 45 0c             	mov    0xc(%ebp),%eax
40f9a3:	33 c9                	xor    %ecx,%ecx