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
40affd:	8d 43 04             	lea    0x4(%ebx),%eax
40b000:	03 c6                	add    %esi,%eax
40b002:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b005:	b8 00 20 00 00       	mov    $0x2000,%eax
40b00a:	3b f0                	cmp    %eax,%esi
40b00c:	7c 02                	jl     0x40b010
40b00e:	8b f0                	mov    %eax,%esi
40b010:	56                   	push   %esi
40b011:	e8 cb 45 00 00       	call   0x40f5e1
40b016:	a1 a8 23 42 00       	mov    0x4223a8,%eax
40b01b:	59                   	pop    %ecx
40b01c:	3b f0                	cmp    %eax,%esi
40b01e:	7e 02                	jle    0x40b022
40b020:	8b f0                	mov    %eax,%esi
40b022:	57                   	push   %edi
40b023:	33 ff                	xor    %edi,%edi
40b025:	85 f6                	test   %esi,%esi
40b027:	74 59                	je     0x40b082
40b029:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b02c:	8b 08                	mov    (%eax),%ecx
40b02e:	83 f9 ff             	cmp    $0xffffffff,%ecx
40b031:	74 44                	je     0x40b077
40b033:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40b036:	74 3f                	je     0x40b077
40b038:	8a 54 1f 04          	mov    0x4(%edi,%ebx,1),%dl
40b03c:	f6 c2 01             	test   $0x1,%dl
40b03f:	74 36                	je     0x40b077
40b041:	f6 c2 08             	test   $0x8,%dl
40b044:	75 0b                	jne    0x40b051
40b046:	51                   	push   %ecx
40b047:	ff 15 e0 90 41 00    	call   *0x4190e0
40b04d:	85 c0                	test   %eax,%eax
40b04f:	74 23                	je     0x40b074
40b051:	8b c7                	mov    %edi,%eax
40b053:	8b cf                	mov    %edi,%ecx
40b055:	83 e0 3f             	and    $0x3f,%eax
40b058:	c1 f9 06             	sar    $0x6,%ecx
40b05b:	6b d0 38             	imul   $0x38,%eax,%edx
40b05e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b061:	03 14 8d a8 21 42 00 	add    0x4221a8(,%ecx,4),%edx
40b068:	8b 00                	mov    (%eax),%eax
40b06a:	89 42 18             	mov    %eax,0x18(%edx)
40b06d:	8a 44 1f 04          	mov    0x4(%edi,%ebx,1),%al
40b071:	88 42 28             	mov    %al,0x28(%edx)
40b074:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b077:	47                   	inc    %edi
40b078:	83 c0 04             	add    $0x4,%eax
40b07b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b07e:	3b fe                	cmp    %esi,%edi
40b080:	75 aa                	jne    0x40b02c
40b082:	5f                   	pop    %edi
40b083:	5e                   	pop    %esi
40b084:	5b                   	pop    %ebx
40b085:	c9                   	leave
40b086:	c3                   	ret
40b087:	8b ff                	mov    %edi,%edi
40b089:	53                   	push   %ebx
40b08a:	56                   	push   %esi
40b08b:	57                   	push   %edi
40b08c:	33 ff                	xor    %edi,%edi
40b08e:	8b c7                	mov    %edi,%eax
40b090:	8b cf                	mov    %edi,%ecx
40b092:	83 e0 3f             	and    $0x3f,%eax
40b095:	c1 f9 06             	sar    $0x6,%ecx
40b098:	6b f0 38             	imul   $0x38,%eax,%esi
40b09b:	03 34 8d a8 21 42 00 	add    0x4221a8(,%ecx,4),%esi
40b0a2:	83 7e 18 ff          	cmpl   $0xffffffff,0x18(%esi)
40b0a6:	74 0c                	je     0x40b0b4
40b0a8:	83 7e 18 fe          	cmpl   $0xfffffffe,0x18(%esi)
40b0ac:	74 06                	je     0x40b0b4
40b0ae:	80 4e 28 80          	orb    $0x80,0x28(%esi)
40b0b2:	eb 75                	jmp    0x40b129
40b0b4:	8b c7                	mov    %edi,%eax
40b0b6:	c6 46 28 81          	movb   $0x81,0x28(%esi)
40b0ba:	83 e8 00             	sub    $0x0,%eax
40b0bd:	74 10                	je     0x40b0cf
40b0bf:	83 e8 01             	sub    $0x1,%eax
40b0c2:	74 07                	je     0x40b0cb
40b0c4:	83 e8 01             	sub    $0x1,%eax
40b0c7:	6a f4                	push   $0xfffffff4
40b0c9:	eb 06                	jmp    0x40b0d1
40b0cb:	6a f5                	push   $0xfffffff5
40b0cd:	eb 02                	jmp    0x40b0d1
40b0cf:	6a f6                	push   $0xfffffff6
40b0d1:	58                   	pop    %eax
40b0d2:	50                   	push   %eax
40b0d3:	ff 15 bc 90 41 00    	call   *0x4190bc
40b0d9:	8b d8                	mov    %eax,%ebx
40b0db:	83 fb ff             	cmp    $0xffffffff,%ebx
40b0de:	74 2b                	je     0x40b10b
40b0e0:	85 db                	test   %ebx,%ebx
40b0e2:	74 27                	je     0x40b10b
40b0e4:	53                   	push   %ebx
40b0e5:	ff 15 e0 90 41 00    	call   *0x4190e0
40b0eb:	85 c0                	test   %eax,%eax
40b0ed:	74 1c                	je     0x40b10b
40b0ef:	0f b6 c0             	movzbl %al,%eax
40b0f2:	89 5e 18             	mov    %ebx,0x18(%esi)
40b0f5:	83 f8 02             	cmp    $0x2,%eax
40b0f8:	75 06                	jne    0x40b100
40b0fa:	80 4e 28 40          	orb    $0x40,0x28(%esi)
40b0fe:	eb 29                	jmp    0x40b129
40b100:	83 f8 03             	cmp    $0x3,%eax
40b103:	75 24                	jne    0x40b129
40b105:	80 4e 28 08          	orb    $0x8,0x28(%esi)
40b109:	eb 1e                	jmp    0x40b129
40b10b:	80 4e 28 40          	orb    $0x40,0x28(%esi)
40b10f:	c7 46 18 fe ff ff ff 	movl   $0xfffffffe,0x18(%esi)
40b116:	a1 40 1e 42 00       	mov    0x421e40,%eax
40b11b:	85 c0                	test   %eax,%eax
40b11d:	74 0a                	je     0x40b129
40b11f:	8b 04 b8             	mov    (%eax,%edi,4),%eax
40b122:	c7 40 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%eax)
40b129:	47                   	inc    %edi
40b12a:	83 ff 03             	cmp    $0x3,%edi
40b12d:	0f 85 5b ff ff ff    	jne    0x40b08e
40b133:	5f                   	pop    %edi
40b134:	5e                   	pop    %esi
40b135:	5b                   	pop    %ebx
40b136:	c3                   	ret
40b137:	6a 0c                	push   $0xc
40b139:	68 a8 00 42 00       	push   $0x4200a8
40b13e:	e8 5d 8d ff ff       	call   0x403ea0
40b143:	6a 07                	push   $0x7
40b145:	e8 42 2e 00 00       	call   0x40df8c
40b14a:	59                   	pop    %ecx
40b14b:	33 db                	xor    %ebx,%ebx
40b14d:	88 5d e7             	mov    %bl,-0x19(%ebp)
40b150:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40b153:	53                   	push   %ebx
40b154:	e8 88 44 00 00       	call   0x40f5e1
40b159:	59                   	pop    %ecx
40b15a:	85 c0                	test   %eax,%eax
40b15c:	75 0f                	jne    0x40b16d
40b15e:	e8 6e fe ff ff       	call   0x40afd1
40b163:	e8 1f ff ff ff       	call   0x40b087
40b168:	b3 01                	mov    $0x1,%bl
40b16a:	88 5d e7             	mov    %bl,-0x19(%ebp)
40b16d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40b174:	e8 15 00 00 00       	call   0x40b18e
40b179:	8a c3                	mov    %bl,%al
40b17b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b17e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b185:	59                   	pop    %ecx
40b186:	5f                   	pop    %edi
40b187:	5e                   	pop    %esi
40b188:	5b                   	pop    %ebx
40b189:	c9                   	leave
40b18a:	c3                   	ret
40b18b:	8a 5d e7             	mov    -0x19(%ebp),%bl
40b18e:	6a 07                	push   $0x7
40b190:	e8 3f 2e 00 00       	call   0x40dfd4
40b195:	59                   	pop    %ecx
40b196:	c3                   	ret
40b197:	8b ff                	mov    %edi,%edi
40b199:	56                   	push   %esi
40b19a:	33 f6                	xor    %esi,%esi
40b19c:	8b 86 a8 21 42 00    	mov    0x4221a8(%esi),%eax
40b1a2:	85 c0                	test   %eax,%eax
40b1a4:	74 0e                	je     0x40b1b4
40b1a6:	50                   	push   %eax
40b1a7:	e8 00 44 00 00       	call   0x40f5ac
40b1ac:	83 a6 a8 21 42 00 00 	andl   $0x0,0x4221a8(%esi)
40b1b3:	59                   	pop    %ecx
40b1b4:	83 c6 04             	add    $0x4,%esi
40b1b7:	81 fe 00 02 00 00    	cmp    $0x200,%esi
40b1bd:	72 dd                	jb     0x40b19c
40b1bf:	b0 01                	mov    $0x1,%al
40b1c1:	5e                   	pop    %esi
40b1c2:	c3                   	ret
40b1c3:	8b ff                	mov    %edi,%edi
40b1c5:	55                   	push   %ebp
40b1c6:	8b ec                	mov    %esp,%ebp
40b1c8:	8b 45 08             	mov    0x8(%ebp),%eax
40b1cb:	85 c0                	test   %eax,%eax