40acb9:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40acc0:	e8 13 00 00 00       	call   0x40acd8
40acc5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40acc8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40accb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40acd2:	59                   	pop    %ecx
40acd3:	5f                   	pop    %edi
40acd4:	5e                   	pop    %esi
40acd5:	5b                   	pop    %ebx
40acd6:	c9                   	leave
40acd7:	c3                   	ret
40acd8:	6a 08                	push   $0x8
40acda:	e8 f5 32 00 00       	call   0x40dfd4
40acdf:	59                   	pop    %ecx
40ace0:	c3                   	ret
40ace1:	6a 08                	push   $0x8
40ace3:	68 68 00 42 00       	push   $0x420068
40ace8:	e8 b3 91 ff ff       	call   0x403ea0
40aced:	8b 45 08             	mov    0x8(%ebp),%eax
40acf0:	ff 30                	push   (%eax)
40acf2:	e8 f0 b9 ff ff       	call   0x4066e7
40acf7:	59                   	pop    %ecx
40acf8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40acfc:	8b 75 0c             	mov    0xc(%ebp),%esi
40acff:	ff 76 04             	push   0x4(%esi)
40ad02:	8b 06                	mov    (%esi),%eax
40ad04:	ff 30                	push   (%eax)
40ad06:	e8 5b 01 00 00       	call   0x40ae66
40ad0b:	59                   	pop    %ecx
40ad0c:	59                   	pop    %ecx
40ad0d:	84 c0                	test   %al,%al
40ad0f:	74 32                	je     0x40ad43
40ad11:	8b 46 08             	mov    0x8(%esi),%eax
40ad14:	80 38 00             	cmpb   $0x0,(%eax)
40ad17:	75 0e                	jne    0x40ad27
40ad19:	8b 06                	mov    (%esi),%eax
40ad1b:	8b 00                	mov    (%eax),%eax
40ad1d:	8b 40 0c             	mov    0xc(%eax),%eax
40ad20:	90                   	nop
40ad21:	d1 e8                	shr    $1,%eax
40ad23:	a8 01                	test   $0x1,%al
40ad25:	74 1c                	je     0x40ad43
40ad27:	8b 06                	mov    (%esi),%eax
40ad29:	ff 30                	push   (%eax)
40ad2b:	e8 f3 01 00 00       	call   0x40af23
40ad30:	59                   	pop    %ecx
40ad31:	83 f8 ff             	cmp    $0xffffffff,%eax
40ad34:	74 07                	je     0x40ad3d
40ad36:	8b 46 04             	mov    0x4(%esi),%eax
40ad39:	ff 00                	incl   (%eax)
40ad3b:	eb 06                	jmp    0x40ad43
40ad3d:	8b 46 0c             	mov    0xc(%esi),%eax
40ad40:	83 08 ff             	orl    $0xffffffff,(%eax)
40ad43:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ad4a:	e8 12 00 00 00       	call   0x40ad61
40ad4f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ad52:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ad59:	59                   	pop    %ecx
40ad5a:	5f                   	pop    %edi
40ad5b:	5e                   	pop    %esi
40ad5c:	5b                   	pop    %ebx
40ad5d:	c9                   	leave
40ad5e:	c2 0c 00             	ret    $0xc
40ad61:	8b 45 10             	mov    0x10(%ebp),%eax
40ad64:	ff 30                	push   (%eax)
40ad66:	e8 90 b9 ff ff       	call   0x4066fb
40ad6b:	59                   	pop    %ecx
40ad6c:	c3                   	ret
40ad6d:	6a 2c                	push   $0x2c
40ad6f:	68 88 00 42 00       	push   $0x420088
40ad74:	e8 27 91 ff ff       	call   0x403ea0
40ad79:	8b 45 08             	mov    0x8(%ebp),%eax
40ad7c:	ff 30                	push   (%eax)
40ad7e:	e8 09 32 00 00       	call   0x40df8c
40ad83:	59                   	pop    %ecx
40ad84:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ad88:	8b 35 40 1e 42 00    	mov    0x421e40,%esi
40ad8e:	a1 3c 1e 42 00       	mov    0x421e3c,%eax
40ad93:	8d 1c 86             	lea    (%esi,%eax,4),%ebx
40ad96:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ad99:	89 75 d4             	mov    %esi,-0x2c(%ebp)
40ad9c:	3b f3                	cmp    %ebx,%esi
40ad9e:	74 4f                	je     0x40adef
40ada0:	8b 06                	mov    (%esi),%eax
40ada2:	89 45 e0             	mov    %eax,-0x20(%ebp)
40ada5:	ff 37                	push   (%edi)
40ada7:	50                   	push   %eax
40ada8:	e8 b9 00 00 00       	call   0x40ae66
40adad:	59                   	pop    %ecx
40adae:	59                   	pop    %ecx
40adaf:	84 c0                	test   %al,%al
40adb1:	74 37                	je     0x40adea
40adb3:	8b 57 08             	mov    0x8(%edi),%edx
40adb6:	8b 4f 04             	mov    0x4(%edi),%ecx
40adb9:	8b 07                	mov    (%edi),%eax
40adbb:	8d 7d e0             	lea    -0x20(%ebp),%edi
40adbe:	89 7d c4             	mov    %edi,-0x3c(%ebp)
40adc1:	89 45 c8             	mov    %eax,-0x38(%ebp)
40adc4:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40adc7:	89 55 d0             	mov    %edx,-0x30(%ebp)
40adca:	8b 45 e0             	mov    -0x20(%ebp),%eax
40adcd:	89 45 dc             	mov    %eax,-0x24(%ebp)
40add0:	89 45 d8             	mov    %eax,-0x28(%ebp)
40add3:	8d 45 dc             	lea    -0x24(%ebp),%eax
40add6:	50                   	push   %eax
40add7:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40adda:	50                   	push   %eax
40addb:	8d 45 d8             	lea    -0x28(%ebp),%eax
40adde:	50                   	push   %eax
40addf:	8d 4d e7             	lea    -0x19(%ebp),%ecx
40ade2:	e8 fa fe ff ff       	call   0x40ace1
40ade7:	8b 7d 0c             	mov    0xc(%ebp),%edi
40adea:	83 c6 04             	add    $0x4,%esi
40aded:	eb aa                	jmp    0x40ad99
40adef:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40adf6:	e8 12 00 00 00       	call   0x40ae0d
40adfb:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40adfe:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ae05:	59                   	pop    %ecx
40ae06:	5f                   	pop    %edi
40ae07:	5e                   	pop    %esi
40ae08:	5b                   	pop    %ebx
40ae09:	c9                   	leave
40ae0a:	c2 0c 00             	ret    $0xc
40ae0d:	8b 45 10             	mov    0x10(%ebp),%eax
40ae10:	ff 30                	push   (%eax)
40ae12:	e8 bd 31 00 00       	call   0x40dfd4
40ae17:	59                   	pop    %ecx
40ae18:	c3                   	ret
40ae19:	8b ff                	mov    %edi,%edi
40ae1b:	55                   	push   %ebp
40ae1c:	8b ec                	mov    %esp,%ebp
40ae1e:	83 ec 20             	sub    $0x20,%esp
40ae21:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40ae25:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ae28:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40ae2c:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40ae2f:	89 45 e0             	mov    %eax,-0x20(%ebp)
40ae32:	8d 45 08             	lea    0x8(%ebp),%eax
40ae35:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ae38:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ae3b:	6a 08                	push   $0x8
40ae3d:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ae40:	58                   	pop    %eax
40ae41:	89 45 f0             	mov    %eax,-0x10(%ebp)
40ae44:	89 45 ec             	mov    %eax,-0x14(%ebp)
40ae47:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ae4a:	50                   	push   %eax
40ae4b:	8d 45 e0             	lea    -0x20(%ebp),%eax
40ae4e:	50                   	push   %eax
40ae4f:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ae52:	50                   	push   %eax
40ae53:	e8 15 ff ff ff       	call   0x40ad6d
40ae58:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40ae5c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ae5f:	75 03                	jne    0x40ae64
40ae61:	8b 45 f4             	mov    -0xc(%ebp),%eax
40ae64:	c9                   	leave
40ae65:	c3                   	ret
40ae66:	8b ff                	mov    %edi,%edi
40ae68:	55                   	push   %ebp
40ae69:	8b ec                	mov    %esp,%ebp
40ae6b:	8b 45 08             	mov    0x8(%ebp),%eax
40ae6e:	85 c0                	test   %eax,%eax
40ae70:	74 1d                	je     0x40ae8f
40ae72:	8b 48 0c             	mov    0xc(%eax),%ecx
40ae75:	90                   	nop
40ae76:	8b c1                	mov    %ecx,%eax
40ae78:	c1 e8 0d             	shr    $0xd,%eax
40ae7b:	a8 01                	test   $0x1,%al
40ae7d:	74 10                	je     0x40ae8f
40ae7f:	51                   	push   %ecx
40ae80:	e8 12 00 00 00       	call   0x40ae97
40ae85:	59                   	pop    %ecx
40ae86:	84 c0                	test   %al,%al
40ae88:	75 09                	jne    0x40ae93
40ae8a:	8b 45 0c             	mov    0xc(%ebp),%eax
40ae8d:	ff 00                	incl   (%eax)
40ae8f:	32 c0                	xor    %al,%al
40ae91:	5d                   	pop    %ebp
40ae92:	c3                   	ret
40ae93:	b0 01                	mov    $0x1,%al
40ae95:	5d                   	pop    %ebp
40ae96:	c3                   	ret
40ae97:	8b ff                	mov    %edi,%edi
40ae99:	55                   	push   %ebp
40ae9a:	8b ec                	mov    %esp,%ebp
40ae9c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ae9f:	8b c1                	mov    %ecx,%eax
40aea1:	24 03                	and    $0x3,%al
40aea3:	3c 02                	cmp    $0x2,%al
40aea5:	75 09                	jne    0x40aeb0
40aea7:	f6 c1 c0             	test   $0xc0,%cl
40aeaa:	74 04                	je     0x40aeb0
40aeac:	fe c8                	dec    %al
40aeae:	5d                   	pop    %ebp
40aeaf:	c3                   	ret
40aeb0:	c1 e9 0b             	shr    $0xb,%ecx
40aeb3:	80 e1 01             	and    $0x1,%cl
40aeb6:	8a c1                	mov    %cl,%al
40aeb8:	5d                   	pop    %ebp
40aeb9:	c3                   	ret
40aeba:	8b ff                	mov    %edi,%edi
40aebc:	55                   	push   %ebp
40aebd:	8b ec                	mov    %esp,%ebp
40aebf:	8b 4d 08             	mov    0x8(%ebp),%ecx
40aec2:	53                   	push   %ebx
40aec3:	56                   	push   %esi
40aec4:	57                   	push   %edi
40aec5:	8d 71 0c             	lea    0xc(%ecx),%esi
40aec8:	8b 16                	mov    (%esi),%edx
40aeca:	90                   	nop
40aecb:	8b c2                	mov    %edx,%eax
40aecd:	24 03                	and    $0x3,%al
40aecf:	3c 02                	cmp    $0x2,%al
40aed1:	75 49                	jne    0x40af1c
40aed3:	f6 c2 c0             	test   $0xc0,%dl
40aed6:	74 44                	je     0x40af1c
40aed8:	8b 39                	mov    (%ecx),%edi
40aeda:	8b 59 04             	mov    0x4(%ecx),%ebx
40aedd:	2b fb                	sub    %ebx,%edi
40aedf:	89 19                	mov    %ebx,(%ecx)
40aee1:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40aee5:	85 ff                	test   %edi,%edi
40aee7:	7e 33                	jle    0x40af1c
40aee9:	51                   	push   %ecx
40aeea:	e8 d4 02 00 00       	call   0x40b1c3
40aeef:	ff 75 0c             	push   0xc(%ebp)
40aef2:	57                   	push   %edi
40aef3:	53                   	push   %ebx
40aef4:	50                   	push   %eax
40aef5:	e8 c9 0a 00 00       	call   0x40b9c3
40aefa:	83 c4 14             	add    $0x14,%esp
40aefd:	3b f8                	cmp    %eax,%edi
40aeff:	74 0b                	je     0x40af0c
40af01:	6a 10                	push   $0x10
40af03:	58                   	pop    %eax
40af04:	f0 09 06             	lock or %eax,(%esi)
40af07:	83 c8 ff             	or     $0xffffffff,%eax
40af0a:	eb 12                	jmp    0x40af1e
40af0c:	8b 06                	mov    (%esi),%eax
40af0e:	90                   	nop
40af0f:	c1 e8 02             	shr    $0x2,%eax
40af12:	a8 01                	test   $0x1,%al
40af14:	74 06                	je     0x40af1c
40af16:	6a fd                	push   $0xfffffffd
40af18:	58                   	pop    %eax
40af19:	f0 21 06             	lock and %eax,(%esi)
40af1c:	33 c0                	xor    %eax,%eax
40af1e:	5f                   	pop    %edi
40af1f:	5e                   	pop    %esi
40af20:	5b                   	pop    %ebx
40af21:	5d                   	pop    %ebp
40af22:	c3                   	ret
40af23:	8b ff                	mov    %edi,%edi
40af25:	55                   	push   %ebp
40af26:	8b ec                	mov    %esp,%ebp
40af28:	83 ec 28             	sub    $0x28,%esp
40af2b:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40af2e:	56                   	push   %esi
40af2f:	57                   	push   %edi
40af30:	33 f6                	xor    %esi,%esi
40af32:	56                   	push   %esi
40af33:	e8 32 b8 ff ff       	call   0x40676a
40af38:	8b 7d 08             	mov    0x8(%ebp),%edi
40af3b:	85 ff                	test   %edi,%edi
40af3d:	75 0b                	jne    0x40af4a
40af3f:	56                   	push   %esi
40af40:	e8 d4 fe ff ff       	call   0x40ae19
40af45:	59                   	pop    %ecx
40af46:	8b f0                	mov    %eax,%esi
40af48:	eb 30                	jmp    0x40af7a
40af4a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40af4d:	50                   	push   %eax
40af4e:	57                   	push   %edi
40af4f:	e8 66 ff ff ff       	call   0x40aeba
40af54:	59                   	pop    %ecx
40af55:	59                   	pop    %ecx
40af56:	85 c0                	test   %eax,%eax
40af58:	75 1d                	jne    0x40af77
40af5a:	8b 47 0c             	mov    0xc(%edi),%eax
40af5d:	90                   	nop
40af5e:	c1 e8 0b             	shr    $0xb,%eax
40af61:	a8 01                	test   $0x1,%al
40af63:	74 15                	je     0x40af7a
40af65:	57                   	push   %edi
40af66:	e8 58 02 00 00       	call   0x40b1c3
40af6b:	50                   	push   %eax
40af6c:	e8 13 5c 00 00       	call   0x410b84
40af71:	59                   	pop    %ecx
40af72:	59                   	pop    %ecx
40af73:	85 c0                	test   %eax,%eax
40af75:	74 03                	je     0x40af7a
40af77:	83 ce ff             	or     $0xffffffff,%esi
40af7a:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40af7d:	e8 30 b8 ff ff       	call   0x4067b2
40af82:	5f                   	pop    %edi
40af83:	8b c6                	mov    %esi,%eax
40af85:	5e                   	pop    %esi
40af86:	c9                   	leave
40af87:	c3                   	ret
40af88:	6a 01                	push   $0x1
40af8a:	e8 8a fe ff ff       	call   0x40ae19
40af8f:	59                   	pop    %ecx
40af90:	c3                   	ret
40af91:	8b ff                	mov    %edi,%edi
40af93:	55                   	push   %ebp
40af94:	8b ec                	mov    %esp,%ebp
40af96:	56                   	push   %esi
40af97:	8b 75 08             	mov    0x8(%ebp),%esi
40af9a:	57                   	push   %edi
40af9b:	8d 7e 0c             	lea    0xc(%esi),%edi
40af9e:	8b 07                	mov    (%edi),%eax
40afa0:	90                   	nop
40afa1:	c1 e8 0d             	shr    $0xd,%eax
40afa4:	a8 01                	test   $0x1,%al
40afa6:	74 25                	je     0x40afcd
40afa8:	8b 07                	mov    (%edi),%eax
40afaa:	90                   	nop
40afab:	c1 e8 06             	shr    $0x6,%eax
40afae:	a8 01                	test   $0x1,%al
40afb0:	74 1b                	je     0x40afcd
40afb2:	ff 76 04             	push   0x4(%esi)
40afb5:	e8 e5 f7 ff ff       	call   0x40a79f
40afba:	59                   	pop    %ecx
40afbb:	b8 bf fe ff ff       	mov    $0xfffffebf,%eax
40afc0:	f0 21 07             	lock and %eax,(%edi)
40afc3:	33 c0                	xor    %eax,%eax
40afc5:	89 46 04             	mov    %eax,0x4(%esi)
40afc8:	89 06                	mov    %eax,(%esi)
40afca:	89 46 08             	mov    %eax,0x8(%esi)
40afcd:	5f                   	pop    %edi
40afce:	5e                   	pop    %esi
40afcf:	5d                   	pop    %ebp
40afd0:	c3                   	ret
40afd1:	8b ff                	mov    %edi,%edi
40afd3:	55                   	push   %ebp
40afd4:	8b ec                	mov    %esp,%ebp
40afd6:	83 ec 48             	sub    $0x48,%esp
40afd9:	8d 45 b8             	lea    -0x48(%ebp),%eax
40afdc:	50                   	push   %eax
40afdd:	ff 15 18 90 41 00    	call   *0x419018
40afe3:	66 83 7d ea 00       	cmpw   $0x0,-0x16(%ebp)
40afe8:	0f 84 97 00 00 00    	je     0x40b085
40afee:	53                   	push   %ebx
40afef:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40aff2:	85 db                	test   %ebx,%ebx
40aff4:	0f 84 8a 00 00 00    	je     0x40b084
40affa:	56                   	push   %esi
40affb:	8b 33                	mov    (%ebx),%esi