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
40f9a5:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f9a8:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40f9ab:	50                   	push   %eax
40f9ac:	51                   	push   %ecx
40f9ad:	6a 01                	push   $0x1
40f9af:	53                   	push   %ebx
40f9b0:	56                   	push   %esi
40f9b1:	8b 35 7c 4d 42 00    	mov    0x424d7c,%esi
40f9b7:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40f9ba:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40f9bd:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40f9c0:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f9c3:	8b ce                	mov    %esi,%ecx
40f9c5:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40f9c8:	ff 15 78 64 42 00    	call   *0x426478
40f9ce:	ff d6                	call   *%esi
40f9d0:	eb 1b                	jmp    0x40f9ed
40f9d2:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40f9d6:	74 15                	je     0x40f9ed
40f9d8:	81 fb fe 00 00 00    	cmp    $0xfe,%ebx
40f9de:	74 0d                	je     0x40f9ed
40f9e0:	ff 75 0c             	push   0xc(%ebp)
40f9e3:	8b 4d c8             	mov    -0x38(%ebp),%ecx
40f9e6:	8b d3                	mov    %ebx,%edx
40f9e8:	e8 a7 87 ff ff       	call   0x408194
40f9ed:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f9f0:	33 c0                	xor    %eax,%eax
40f9f2:	39 45 dc             	cmp    %eax,-0x24(%ebp)
40f9f5:	5f                   	pop    %edi
40f9f6:	0f 94 c0             	sete   %al
40f9f9:	33 cd                	xor    %ebp,%ecx
40f9fb:	5e                   	pop    %esi
40f9fc:	5b                   	pop    %ebx
40f9fd:	e8 6e 1e 01 00       	call   0x421870
40fa02:	c9                   	leave
40fa03:	c2 14 00             	ret    $0x14
40fa06:	8b ff                	mov    %edi,%edi
40fa08:	55                   	push   %ebp
40fa09:	8b ec                	mov    %esp,%ebp
40fa0b:	51                   	push   %ecx
40fa0c:	56                   	push   %esi
40fa0d:	57                   	push   %edi
40fa0e:	6a 03                	push   $0x3
40fa10:	8b f1                	mov    %ecx,%esi
40fa12:	8b fa                	mov    %edx,%edi
40fa14:	8b 55 14             	mov    0x14(%ebp),%edx
40fa17:	59                   	pop    %ecx
40fa18:	51                   	push   %ecx
40fa19:	51                   	push   %ecx
40fa1a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40fa1d:	e8 c7 fb ff ff       	call   0x40f5e9
40fa22:	50                   	push   %eax
40fa23:	ff 75 0c             	push   0xc(%ebp)
40fa26:	8b d7                	mov    %edi,%edx
40fa28:	8b ce                	mov    %esi,%ecx
40fa2a:	ff 75 08             	push   0x8(%ebp)
40fa2d:	e8 0d ff ff ff       	call   0x40f93f
40fa32:	85 c0                	test   %eax,%eax
40fa34:	74 26                	je     0x40fa5c
40fa36:	8b 35 a8 4d 42 00    	mov    0x424da8,%esi
40fa3c:	85 f6                	test   %esi,%esi
40fa3e:	74 1c                	je     0x40fa5c
40fa40:	6a 01                	push   $0x1
40fa42:	33 c9                	xor    %ecx,%ecx
40fa44:	8d 45 fc             	lea    -0x4(%ebp),%eax
40fa47:	51                   	push   %ecx
40fa48:	51                   	push   %ecx
40fa49:	50                   	push   %eax
40fa4a:	ff 75 14             	push   0x14(%ebp)
40fa4d:	51                   	push   %ecx
40fa4e:	ff 75 10             	push   0x10(%ebp)
40fa51:	8b ce                	mov    %esi,%ecx
40fa53:	57                   	push   %edi
40fa54:	ff 15 78 64 42 00    	call   *0x426478
40fa5a:	ff d6                	call   *%esi
40fa5c:	5f                   	pop    %edi
40fa5d:	5e                   	pop    %esi
40fa5e:	c9                   	leave
40fa5f:	c2 18 00             	ret    $0x18
40fa62:	8b ff                	mov    %edi,%edi
40fa64:	55                   	push   %ebp
40fa65:	8b ec                	mov    %esp,%ebp
40fa67:	56                   	push   %esi
40fa68:	8b 75 0c             	mov    0xc(%ebp),%esi
40fa6b:	57                   	push   %edi
40fa6c:	8b fa                	mov    %edx,%edi
40fa6e:	85 f6                	test   %esi,%esi
40fa70:	75 04                	jne    0x40fa76
40fa72:	33 c0                	xor    %eax,%eax
40fa74:	eb 69                	jmp    0x40fadf
40fa76:	85 c9                	test   %ecx,%ecx
40fa78:	75 14                	jne    0x40fa8e
40fa7a:	ff 15 c0 63 42 00    	call   *0x4263c0
40fa80:	6a 16                	push   $0x16
40fa82:	5e                   	pop    %esi
40fa83:	89 30                	mov    %esi,(%eax)
40fa85:	e8 64 2d 01 00       	call   0x4227ee
40fa8a:	8b c6                	mov    %esi,%eax
40fa8c:	eb 51                	jmp    0x40fadf
40fa8e:	53                   	push   %ebx
40fa8f:	8b 5d 08             	mov    0x8(%ebp),%ebx
40fa92:	85 db                	test   %ebx,%ebx
40fa94:	74 13                	je     0x40faa9
40fa96:	3b fe                	cmp    %esi,%edi
40fa98:	72 0f                	jb     0x40faa9
40fa9a:	56                   	push   %esi
40fa9b:	53                   	push   %ebx
40fa9c:	51                   	push   %ecx
40fa9d:	e8 e1 30 01 00       	call   0x422b83
40faa2:	83 c4 0c             	add    $0xc,%esp
40faa5:	33 c0                	xor    %eax,%eax
40faa7:	eb 35                	jmp    0x40fade
40faa9:	57                   	push   %edi
40faaa:	6a 00                	push   $0x0
40faac:	51                   	push   %ecx
40faad:	e8 96 2d 01 00       	call   0x422848
40fab2:	83 c4 0c             	add    $0xc,%esp
40fab5:	85 db                	test   %ebx,%ebx
40fab7:	75 0a                	jne    0x40fac3
40fab9:	ff 15 c0 63 42 00    	call   *0x4263c0
40fabf:	6a 16                	push   $0x16
40fac1:	eb 0c                	jmp    0x40facf
40fac3:	3b fe                	cmp    %esi,%edi
40fac5:	73 14                	jae    0x40fadb
40fac7:	ff 15 c0 63 42 00    	call   *0x4263c0
40facd:	6a 22                	push   $0x22
40facf:	5e                   	pop    %esi
40fad0:	89 30                	mov    %esi,(%eax)
40fad2:	e8 17 2d 01 00       	call   0x4227ee
40fad7:	8b c6                	mov    %esi,%eax
40fad9:	eb 03                	jmp    0x40fade
40fadb:	6a 16                	push   $0x16
40fadd:	58                   	pop    %eax
40fade:	5b                   	pop    %ebx
40fadf:	5f                   	pop    %edi
40fae0:	5e                   	pop    %esi
40fae1:	5d                   	pop    %ebp
40fae2:	c3                   	ret
40fae3:	8b ff                	mov    %edi,%edi
40fae5:	55                   	push   %ebp
40fae6:	8b ec                	mov    %esp,%ebp
40fae8:	51                   	push   %ecx
40fae9:	51                   	push   %ecx
40faea:	89 55 fc             	mov    %edx,-0x4(%ebp)
40faed:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40faf0:	53                   	push   %ebx
40faf1:	56                   	push   %esi
40faf2:	57                   	push   %edi
40faf3:	8b 7d 08             	mov    0x8(%ebp),%edi
40faf6:	85 d2                	test   %edx,%edx
40faf8:	75 05                	jne    0x40faff
40fafa:	83 ff ff             	cmp    $0xffffffff,%edi
40fafd:	74 7e                	je     0x40fb7d
40faff:	8b f7                	mov    %edi,%esi
40fb01:	85 d2                	test   %edx,%edx
40fb03:	74 23                	je     0x40fb28
40fb05:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40fb0a:	3b f8                	cmp    %eax,%edi
40fb0c:	73 02                	jae    0x40fb10
40fb0e:	8b c7                	mov    %edi,%eax
40fb10:	8b f2                	mov    %edx,%esi
40fb12:	85 c0                	test   %eax,%eax
40fb14:	74 0e                	je     0x40fb24
40fb16:	66 83 3e 00          	cmpw   $0x0,(%esi)
40fb1a:	74 08                	je     0x40fb24
40fb1c:	83 c6 02             	add    $0x2,%esi
40fb1f:	83 e8 01             	sub    $0x1,%eax
40fb22:	75 f2                	jne    0x40fb16
40fb24:	2b f2                	sub    %edx,%esi
40fb26:	d1 fe                	sar    $1,%esi
40fb28:	83 ff ff             	cmp    $0xffffffff,%edi
40fb2b:	75 02                	jne    0x40fb2f
40fb2d:	8b fe                	mov    %esi,%edi
40fb2f:	8d 04 7d 02 00 00 00 	lea    0x2(,%edi,2),%eax
40fb36:	50                   	push   %eax