40cf8a:	57                   	push   %edi
40cf8b:	55                   	push   %ebp
40cf8c:	83 c4 f4             	add    $0xfffffff4,%esp
40cf8f:	e8 f0 6b ff ff       	call   0x403b84
40cf94:	88 14 24             	mov    %dl,(%esp)
40cf97:	8b f8                	mov    %eax,%edi
40cf99:	8d 74 24 04          	lea    0x4(%esp),%esi
40cf9d:	8d 6c 24 08          	lea    0x8(%esp),%ebp
40cfa1:	33 db                	xor    %ebx,%ebx
40cfa3:	8b 44 9f 04          	mov    0x4(%edi,%ebx,4),%eax
40cfa7:	89 06                	mov    %eax,(%esi)
40cfa9:	33 c0                	xor    %eax,%eax
40cfab:	89 44 9f 04          	mov    %eax,0x4(%edi,%ebx,4)
40cfaf:	83 3e 00             	cmpl   $0x0,(%esi)
40cfb2:	74 18                	je     0x40cfcc
40cfb4:	8b 06                	mov    (%esi),%eax
40cfb6:	89 45 00             	mov    %eax,0x0(%ebp)
40cfb9:	8b 06                	mov    (%esi),%eax
40cfbb:	8b 00                	mov    (%eax),%eax
40cfbd:	89 06                	mov    %eax,(%esi)
40cfbf:	8b 45 00             	mov    0x0(%ebp),%eax
40cfc2:	e8 a1 5a ff ff       	call   0x402a68
40cfc7:	83 3e 00             	cmpl   $0x0,(%esi)
40cfca:	75 e8                	jne    0x40cfb4
40cfcc:	43                   	inc    %ebx
40cfcd:	83 fb 10             	cmp    $0x10,%ebx
40cfd0:	75 d1                	jne    0x40cfa3
40cfd2:	8a 14 24             	mov    (%esp),%dl
40cfd5:	80 e2 fc             	and    $0xfc,%dl
40cfd8:	8b c7                	mov    %edi,%eax
40cfda:	e8 0d 68 ff ff       	call   0x4037ec
40cfdf:	80 3c 24 00          	cmpb   $0x0,(%esp)
40cfe3:	7e 07                	jle    0x40cfec
40cfe5:	8b c7                	mov    %edi,%eax
40cfe7:	e8 80 6b ff ff       	call   0x403b6c
40cfec:	83 c4 0c             	add    $0xc,%esp
40cfef:	5d                   	pop    %ebp
40cff0:	5f                   	pop    %edi
40cff1:	5e                   	pop    %esi
40cff2:	5b                   	pop    %ebx
40cff3:	c3                   	ret
40cff4:	55                   	push   %ebp
40cff5:	8b ec                	mov    %esp,%ebp
40cff7:	51                   	push   %ecx
40cff8:	e8 7f 96 ff ff       	call   0x40667c
40cffd:	66 89 45 fe          	mov    %ax,-0x2(%ebp)
40d001:	8a 45 fe             	mov    -0x2(%ebp),%al
40d004:	32 45 ff             	xor    -0x1(%ebp),%al
40d007:	24 0f                	and    $0xf,%al
40d009:	59                   	pop    %ecx
40d00a:	5d                   	pop    %ebp
40d00b:	c3                   	ret
40d00c:	53                   	push   %ebx
40d00d:	56                   	push   %esi
40d00e:	57                   	push   %edi
40d00f:	55                   	push   %ebp
40d010:	83 c4 f8             	add    $0xfffffff8,%esp
40d013:	89 14 24             	mov    %edx,(%esp)
40d016:	8b f0                	mov    %eax,%esi
40d018:	8d 7c 24 04          	lea    0x4(%esp),%edi
40d01c:	8b c6                	mov    %esi,%eax
40d01e:	e8 d1 ff ff ff       	call   0x40cff4
40d023:	8b d8                	mov    %eax,%ebx
40d025:	e8 52 96 ff ff       	call   0x40667c
40d02a:	8b e8                	mov    %eax,%ebp
40d02c:	33 c0                	xor    %eax,%eax
40d02e:	8a c3                	mov    %bl,%al
40d030:	8b 44 86 04          	mov    0x4(%esi,%eax,4),%eax
40d034:	89 07                	mov    %eax,(%edi)
40d036:	eb 06                	jmp    0x40d03e
40d038:	8b 07                	mov    (%edi),%eax
40d03a:	8b 00                	mov    (%eax),%eax
40d03c:	89 07                	mov    %eax,(%edi)
40d03e:	83 3f 00             	cmpl   $0x0,(%edi)
40d041:	74 07                	je     0x40d04a
40d043:	8b 07                	mov    (%edi),%eax
40d045:	3b 68 04             	cmp    0x4(%eax),%ebp
40d048:	75 ee                	jne    0x40d038
40d04a:	83 3f 00             	cmpl   $0x0,(%edi)
40d04d:	75 41                	jne    0x40d090
40d04f:	8b c6                	mov    %esi,%eax
40d051:	e8 5a 00 00 00       	call   0x40d0b0
40d056:	89 07                	mov    %eax,(%edi)
40d058:	83 3f 00             	cmpl   $0x0,(%edi)
40d05b:	75 33                	jne    0x40d090
40d05d:	b8 10 00 00 00       	mov    $0x10,%eax
40d062:	e8 a5 b0 ff ff       	call   0x40810c
40d067:	89 07                	mov    %eax,(%edi)
40d069:	8b 07                	mov    (%edi),%eax
40d06b:	89 68 04             	mov    %ebp,0x4(%eax)
40d06e:	8b 07                	mov    (%edi),%eax
40d070:	c7 40 08 ff ff ff 7f 	movl   $0x7fffffff,0x8(%eax)
40d077:	8b 07                	mov    (%edi),%eax
40d079:	8b 17                	mov    (%edi),%edx
40d07b:	89 10                	mov    %edx,(%eax)
40d07d:	33 c0                	xor    %eax,%eax
40d07f:	8a c3                	mov    %bl,%al
40d081:	8d 44 86 04          	lea    0x4(%esi,%eax,4),%eax
40d085:	8b 17                	mov    (%edi),%edx
40d087:	e8 ec fe ff ff       	call   0x40cf78
40d08c:	8b 17                	mov    (%edi),%edx
40d08e:	89 02                	mov    %eax,(%edx)
40d090:	8b 04 24             	mov    (%esp),%eax
40d093:	8b 17                	mov    (%edi),%edx
40d095:	89 10                	mov    %edx,(%eax)
40d097:	59                   	pop    %ecx
40d098:	5a                   	pop    %edx
40d099:	5d                   	pop    %ebp
40d09a:	5f                   	pop    %edi
40d09b:	5e                   	pop    %esi
40d09c:	5b                   	pop    %ebx
40d09d:	c3                   	ret
40d09e:	8b c0                	mov    %eax,%eax
40d0a0:	8b 02                	mov    (%edx),%eax
40d0a2:	33 c9                	xor    %ecx,%ecx
40d0a4:	89 48 04             	mov    %ecx,0x4(%eax)
40d0a7:	8b 02                	mov    (%edx),%eax
40d0a9:	33 d2                	xor    %edx,%edx
40d0ab:	89 50 08             	mov    %edx,0x8(%eax)
40d0ae:	c3                   	ret
40d0af:	90                   	nop
40d0b0:	53                   	push   %ebx
40d0b1:	56                   	push   %esi
40d0b2:	51                   	push   %ecx
40d0b3:	8b d8                	mov    %eax,%ebx
40d0b5:	8b f4                	mov    %esp,%esi
40d0b7:	8b c3                	mov    %ebx,%eax
40d0b9:	e8 36 ff ff ff       	call   0x40cff4
40d0be:	25 ff 00 00 00       	and    $0xff,%eax
40d0c3:	8b 44 83 04          	mov    0x4(%ebx,%eax,4),%eax
40d0c7:	89 06                	mov    %eax,(%esi)
40d0c9:	83 3e 00             	cmpl   $0x0,(%esi)
40d0cc:	74 30                	je     0x40d0fe
40d0ce:	8b 06                	mov    (%esi),%eax
40d0d0:	83 c0 08             	add    $0x8,%eax
40d0d3:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40d0d8:	e8 9b fe ff ff       	call   0x40cf78
40d0dd:	8b d8                	mov    %eax,%ebx
40d0df:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
40d0e5:	74 0c                	je     0x40d0f3
40d0e7:	e8 90 95 ff ff       	call   0x40667c
40d0ec:	8b 16                	mov    (%esi),%edx
40d0ee:	89 42 04             	mov    %eax,0x4(%edx)
40d0f1:	eb 0b                	jmp    0x40d0fe
40d0f3:	8b 06                	mov    (%esi),%eax
40d0f5:	8b 00                	mov    (%eax),%eax
40d0f7:	89 06                	mov    %eax,(%esi)
40d0f9:	83 3e 00             	cmpl   $0x0,(%esi)
40d0fc:	75 d0                	jne    0x40d0ce
40d0fe:	8b 06                	mov    (%esi),%eax
40d100:	5a                   	pop    %edx
40d101:	5e                   	pop    %esi
40d102:	5b                   	pop    %ebx
40d103:	c3                   	ret
40d104:	53                   	push   %ebx
40d105:	56                   	push   %esi
40d106:	84 d2                	test   %dl,%dl
40d108:	74 08                	je     0x40d112
40d10a:	83 c4 f0             	add    $0xfffffff0,%esp
40d10d:	e8 0a 6a ff ff       	call   0x403b1c
40d112:	8b da                	mov    %edx,%ebx
40d114:	8b f0                	mov    %eax,%esi
40d116:	33 d2                	xor    %edx,%edx
40d118:	8b c6                	mov    %esi,%eax
40d11a:	e8 ad 66 ff ff       	call   0x4037cc
40d11f:	c7 46 0c ff ff 00 00 	movl   $0xffff,0xc(%esi)
40d126:	6a 00                	push   $0x0
40d128:	6a ff                	push   $0xffffffff
40d12a:	6a ff                	push   $0xffffffff
40d12c:	6a 00                	push   $0x0
40d12e:	e8 d1 94 ff ff       	call   0x406604
40d133:	89 46 10             	mov    %eax,0x10(%esi)
40d136:	6a 00                	push   $0x0
40d138:	6a 00                	push   $0x0
40d13a:	6a 00                	push   $0x0
40d13c:	6a 00                	push   $0x0
40d13e:	e8 c1 94 ff ff       	call   0x406604
40d143:	89 46 14             	mov    %eax,0x14(%esi)
40d146:	c7 46 18 ff ff ff ff 	movl   $0xffffffff,0x18(%esi)
40d14d:	b2 01                	mov    $0x1,%dl
40d14f:	a1 7c 7f 40 00       	mov    0x407f7c,%eax
40d154:	e8 73 66 ff ff       	call   0x4037cc
40d159:	89 46 20             	mov    %eax,0x20(%esi)
40d15c:	8b c6                	mov    %esi,%eax
40d15e:	84 db                	test   %bl,%bl
40d160:	74 0f                	je     0x40d171
40d162:	e8 0d 6a ff ff       	call   0x403b74
40d167:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40d16e:	83 c4 0c             	add    $0xc,%esp
40d171:	8b c6                	mov    %esi,%eax
40d173:	5e                   	pop    %esi
40d174:	5b                   	pop    %ebx
40d175:	c3                   	ret
40d176:	8b c0                	mov    %eax,%eax
40d178:	53                   	push   %ebx
40d179:	56                   	push   %esi
40d17a:	e8 05 6a ff ff       	call   0x403b84
40d17f:	8b da                	mov    %edx,%ebx
40d181:	8b f0                	mov    %eax,%esi
40d183:	8b c6                	mov    %esi,%eax
40d185:	e8 7a 00 00 00       	call   0x40d204
40d18a:	8b d3                	mov    %ebx,%edx
40d18c:	80 e2 fc             	and    $0xfc,%dl
40d18f:	8b c6                	mov    %esi,%eax
40d191:	e8 56 66 ff ff       	call   0x4037ec
40d196:	8b 46 10             	mov    0x10(%esi),%eax
40d199:	50                   	push   %eax
40d19a:	e8 55 94 ff ff       	call   0x4065f4
40d19f:	8b 46 14             	mov    0x14(%esi),%eax
40d1a2:	50                   	push   %eax
40d1a3:	e8 4c 94 ff ff       	call   0x4065f4
40d1a8:	8b 46 20             	mov    0x20(%esi),%eax
40d1ab:	e8 4c 66 ff ff       	call   0x4037fc
40d1b0:	84 db                	test   %bl,%bl
40d1b2:	7e 07                	jle    0x40d1bb
40d1b4:	8b c6                	mov    %esi,%eax
40d1b6:	e8 b1 69 ff ff       	call   0x403b6c
40d1bb:	5e                   	pop    %esi
40d1bc:	5b                   	pop    %ebx
40d1bd:	c3                   	ret
40d1be:	8b c0                	mov    %eax,%eax
40d1c0:	8b 40 10             	mov    0x10(%eax),%eax
40d1c3:	50                   	push   %eax
40d1c4:	e8 bb 95 ff ff       	call   0x406784
40d1c9:	c3                   	ret
40d1ca:	8b c0                	mov    %eax,%eax
40d1cc:	8b 40 10             	mov    0x10(%eax),%eax
40d1cf:	50                   	push   %eax
40d1d0:	e8 c7 95 ff ff       	call   0x40679c
40d1d5:	c3                   	ret
40d1d6:	8b c0                	mov    %eax,%eax
40d1d8:	8b 40 14             	mov    0x14(%eax),%eax
40d1db:	50                   	push   %eax
40d1dc:	e8 bb 95 ff ff       	call   0x40679c
40d1e1:	c3                   	ret
40d1e2:	8b c0                	mov    %eax,%eax
40d1e4:	8b 50 18             	mov    0x18(%eax),%edx
40d1e7:	52                   	push   %edx
40d1e8:	8b 40 10             	mov    0x10(%eax),%eax
40d1eb:	50                   	push   %eax
40d1ec:	e8 eb 95 ff ff       	call   0x4067dc
40d1f1:	c3                   	ret
40d1f2:	8b c0                	mov    %eax,%eax
40d1f4:	8b 50 18             	mov    0x18(%eax),%edx
40d1f7:	52                   	push   %edx
40d1f8:	8b 40 14             	mov    0x14(%eax),%eax
40d1fb:	50                   	push   %eax
40d1fc:	e8 db 95 ff ff       	call   0x4067dc
40d201:	c3                   	ret
40d202:	8b c0                	mov    %eax,%eax
40d204:	53                   	push   %ebx
40d205:	56                   	push   %esi
40d206:	57                   	push   %edi
40d207:	55                   	push   %ebp
40d208:	83 c4 f8             	add    $0xfffffff8,%esp
40d20b:	8b e8                	mov    %eax,%ebp
40d20d:	b3 01                	mov    $0x1,%bl
40d20f:	e8 68 94 ff ff       	call   0x40667c
40d214:	8b f8                	mov    %eax,%edi
40d216:	3b 7d 24             	cmp    0x24(%ebp),%edi
40d219:	0f 84 84 00 00 00    	je     0x40d2a3
40d21f:	8b c5                	mov    %ebp,%eax
40d221:	e8 9a ff ff ff       	call   0x40d1c0
40d226:	8b 45 28             	mov    0x28(%ebp),%eax
40d229:	89 44 24 04          	mov    %eax,0x4(%esp)
40d22d:	8b d4                	mov    %esp,%edx
40d22f:	8b 45 20             	mov    0x20(%ebp),%eax
40d232:	e8 d5 fd ff ff       	call   0x40d00c
40d237:	8b 04 24             	mov    (%esp),%eax
40d23a:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40d23e:	0f 97 c3             	seta   %bl
40d241:	84 db                	test   %bl,%bl
40d243:	74 24                	je     0x40d269
40d245:	8d 45 0c             	lea    0xc(%ebp),%eax
40d248:	e8 13 fd ff ff       	call   0x40cf60
40d24d:	eb 1a                	jmp    0x40d269
40d24f:	8d 45 0c             	lea    0xc(%ebp),%eax
40d252:	ba ff ff 00 00       	mov    $0xffff,%edx
40d257:	e8 24 fd ff ff       	call   0x40cf80
40d25c:	8b f0                	mov    %eax,%esi
40d25e:	85 f6                	test   %esi,%esi
40d260:	74 07                	je     0x40d269
40d262:	8b c5                	mov    %ebp,%eax
40d264:	e8 8b ff ff ff       	call   0x40d1f4
40d269:	8d 45 0c             	lea    0xc(%ebp),%eax
40d26c:	ba 01 00 ff ff       	mov    $0xffff0001,%edx
40d271:	e8 0a fd ff ff       	call   0x40cf80
40d276:	3d ff ff 00 00       	cmp    $0xffff,%eax
40d27b:	75 d2                	jne    0x40d24f
40d27d:	8b c5                	mov    %ebp,%eax
40d27f:	e8 3c ff ff ff       	call   0x40d1c0
40d284:	84 db                	test   %bl,%bl
40d286:	74 08                	je     0x40d290
40d288:	8d 45 0c             	lea    0xc(%ebp),%eax
40d28b:	e8 dc fc ff ff       	call   0x40cf6c
40d290:	89 7d 24             	mov    %edi,0x24(%ebp)
40d293:	8d 45 28             	lea    0x28(%ebp),%eax
40d296:	e8 c5 fc ff ff       	call   0x40cf60
40d29b:	48                   	dec    %eax
40d29c:	3b 44 24 04          	cmp    0x4(%esp),%eax
40d2a0:	0f 94 c3             	sete   %bl
40d2a3:	ff 45 1c             	incl   0x1c(%ebp)
40d2a6:	8b c3                	mov    %ebx,%eax
40d2a8:	59                   	pop    %ecx
40d2a9:	5a                   	pop    %edx
40d2aa:	5d                   	pop    %ebp
40d2ab:	5f                   	pop    %edi
40d2ac:	5e                   	pop    %esi
40d2ad:	5b                   	pop    %ebx
40d2ae:	c3                   	ret
40d2af:	90                   	nop
40d2b0:	53                   	push   %ebx
40d2b1:	51                   	push   %ecx
40d2b2:	8b d8                	mov    %eax,%ebx
40d2b4:	8b d4                	mov    %esp,%edx
40d2b6:	8b 43 20             	mov    0x20(%ebx),%eax
40d2b9:	e8 4e fd ff ff       	call   0x40d00c
40d2be:	ff 4b 1c             	decl   0x1c(%ebx)
40d2c1:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
40d2c5:	75 20                	jne    0x40d2e7
40d2c7:	33 c0                	xor    %eax,%eax
40d2c9:	89 43 24             	mov    %eax,0x24(%ebx)
40d2cc:	8d 43 0c             	lea    0xc(%ebx),%eax
40d2cf:	ba ff ff 00 00       	mov    $0xffff,%edx
40d2d4:	e8 a7 fc ff ff       	call   0x40cf80
40d2d9:	8b c3                	mov    %ebx,%eax
40d2db:	e8 f8 fe ff ff       	call   0x40d1d8
40d2e0:	8b c3                	mov    %ebx,%eax
40d2e2:	e8 e5 fe ff ff       	call   0x40d1cc
40d2e7:	8b 04 24             	mov    (%esp),%eax
40d2ea:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40d2ee:	75 0a                	jne    0x40d2fa
40d2f0:	8b d4                	mov    %esp,%edx
40d2f2:	8b 43 20             	mov    0x20(%ebx),%eax
40d2f5:	e8 a6 fd ff ff       	call   0x40d0a0
40d2fa:	5a                   	pop    %edx
40d2fb:	5b                   	pop    %ebx
40d2fc:	c3                   	ret
40d2fd:	8d 40 00             	lea    0x0(%eax),%eax
40d300:	53                   	push   %ebx
40d301:	56                   	push   %esi
40d302:	57                   	push   %edi
40d303:	51                   	push   %ecx
40d304:	8b f8                	mov    %eax,%edi
40d306:	8b d4                	mov    %esp,%edx
40d308:	8b 47 20             	mov    0x20(%edi),%eax
40d30b:	e8 fc fc ff ff       	call   0x40d00c
40d310:	8b 04 24             	mov    (%esp),%eax
40d313:	ff 40 0c             	incl   0xc(%eax)
40d316:	8b 04 24             	mov    (%esp),%eax