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
40b1cd:	75 15                	jne    0x40b1e4
40b1cf:	e8 5b f5 ff ff       	call   0x40a72f
40b1d4:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b1da:	e8 ea c2 ff ff       	call   0x4074c9
40b1df:	83 c8 ff             	or     $0xffffffff,%eax
40b1e2:	5d                   	pop    %ebp
40b1e3:	c3                   	ret
40b1e4:	8b 40 10             	mov    0x10(%eax),%eax
40b1e7:	90                   	nop
40b1e8:	5d                   	pop    %ebp
40b1e9:	c3                   	ret
40b1ea:	8b ff                	mov    %edi,%edi
40b1ec:	55                   	push   %ebp
40b1ed:	8b ec                	mov    %esp,%ebp
40b1ef:	6a ff                	push   $0xffffffff
40b1f1:	68 98 80 41 00       	push   $0x418098
40b1f6:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40b1fc:	50                   	push   %eax
40b1fd:	83 ec 74             	sub    $0x74,%esp
40b200:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40b205:	33 c5                	xor    %ebp,%eax
40b207:	89 45 f0             	mov    %eax,-0x10(%ebp)
40b20a:	53                   	push   %ebx
40b20b:	56                   	push   %esi
40b20c:	57                   	push   %edi
40b20d:	50                   	push   %eax
40b20e:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b211:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40b217:	8b 45 0c             	mov    0xc(%ebp),%eax
40b21a:	8b d0                	mov    %eax,%edx
40b21c:	8b 75 10             	mov    0x10(%ebp),%esi
40b21f:	83 e0 3f             	and    $0x3f,%eax
40b222:	8b 5d 18             	mov    0x18(%ebp),%ebx
40b225:	6b c8 38             	imul   $0x38,%eax,%ecx
40b228:	c1 fa 06             	sar    $0x6,%edx
40b22b:	89 75 a0             	mov    %esi,-0x60(%ebp)
40b22e:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40b231:	89 55 bc             	mov    %edx,-0x44(%ebp)
40b234:	8b 04 95 a8 21 42 00 	mov    0x4221a8(,%edx,4),%eax
40b23b:	89 4d b0             	mov    %ecx,-0x50(%ebp)
40b23e:	8b 44 01 18          	mov    0x18(%ecx,%eax,1),%eax
40b242:	89 45 9c             	mov    %eax,-0x64(%ebp)
40b245:	8b 45 14             	mov    0x14(%ebp),%eax
40b248:	03 c6                	add    %esi,%eax
40b24a:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b24d:	ff 15 e4 90 41 00    	call   *0x4190e4
40b253:	80 7b 14 00          	cmpb   $0x0,0x14(%ebx)
40b257:	89 45 94             	mov    %eax,-0x6c(%ebp)
40b25a:	75 07                	jne    0x40b263
40b25c:	8b cb                	mov    %ebx,%ecx
40b25e:	e8 3d dc ff ff       	call   0x408ea0
40b263:	8b 43 0c             	mov    0xc(%ebx),%eax
40b266:	8b 75 08             	mov    0x8(%ebp),%esi
40b269:	8b fe                	mov    %esi,%edi
40b26b:	8b 48 08             	mov    0x8(%eax),%ecx
40b26e:	33 c0                	xor    %eax,%eax
40b270:	ab                   	stos   %eax,%es:(%edi)
40b271:	89 4d 90             	mov    %ecx,-0x70(%ebp)
40b274:	ab                   	stos   %eax,%es:(%edi)
40b275:	ab                   	stos   %eax,%es:(%edi)
40b276:	8b 45 a0             	mov    -0x60(%ebp),%eax
40b279:	8b d0                	mov    %eax,%edx
40b27b:	89 55 d4             	mov    %edx,-0x2c(%ebp)
40b27e:	3b 45 ac             	cmp    -0x54(%ebp),%eax
40b281:	0f 83 09 03 00 00    	jae    0x40b590
40b287:	8b 7d b0             	mov    -0x50(%ebp),%edi
40b28a:	33 db                	xor    %ebx,%ebx
40b28c:	89 5d b8             	mov    %ebx,-0x48(%ebp)
40b28f:	8a 02                	mov    (%edx),%al
40b291:	88 45 d3             	mov    %al,-0x2d(%ebp)
40b294:	8b 45 bc             	mov    -0x44(%ebp),%eax
40b297:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40b29a:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
40b2a1:	81 f9 e9 fd 00 00    	cmp    $0xfde9,%ecx
40b2a7:	0f 85 2c 01 00 00    	jne    0x40b3d9
40b2ad:	8b 04 85 a8 21 42 00 	mov    0x4221a8(,%eax,4),%eax
40b2b4:	8b cb                	mov    %ebx,%ecx
40b2b6:	83 c0 2e             	add    $0x2e,%eax
40b2b9:	03 c7                	add    %edi,%eax
40b2bb:	89 45 b8             	mov    %eax,-0x48(%ebp)
40b2be:	80 38 00             	cmpb   $0x0,(%eax)
40b2c1:	74 07                	je     0x40b2ca
40b2c3:	41                   	inc    %ecx
40b2c4:	40                   	inc    %eax
40b2c5:	83 f9 05             	cmp    $0x5,%ecx
40b2c8:	7c f4                	jl     0x40b2be
40b2ca:	8b 7d ac             	mov    -0x54(%ebp),%edi
40b2cd:	2b fa                	sub    %edx,%edi
40b2cf:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40b2d2:	85 c9                	test   %ecx,%ecx
40b2d4:	0f 8e a4 00 00 00    	jle    0x40b37e
40b2da:	8b 45 b8             	mov    -0x48(%ebp),%eax
40b2dd:	0f b6 00             	movzbl (%eax),%eax
40b2e0:	0f be 80 70 18 42 00 	movsbl 0x421870(%eax),%eax
40b2e7:	40                   	inc    %eax
40b2e8:	89 45 c8             	mov    %eax,-0x38(%ebp)
40b2eb:	2b c1                	sub    %ecx,%eax
40b2ed:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40b2f0:	3b c7                	cmp    %edi,%eax
40b2f2:	0f 8f 21 02 00 00    	jg     0x40b519
40b2f8:	8b fb                	mov    %ebx,%edi
40b2fa:	8b 5d b8             	mov    -0x48(%ebp),%ebx
40b2fd:	8a 03                	mov    (%ebx),%al
40b2ff:	88 44 3d e8          	mov    %al,-0x18(%ebp,%edi,1)
40b303:	47                   	inc    %edi
40b304:	43                   	inc    %ebx
40b305:	3b f9                	cmp    %ecx,%edi
40b307:	7c f4                	jl     0x40b2fd
40b309:	8b 75 b4             	mov    -0x4c(%ebp),%esi
40b30c:	33 db                	xor    %ebx,%ebx
40b30e:	85 f6                	test   %esi,%esi
40b310:	7e 13                	jle    0x40b325
40b312:	56                   	push   %esi
40b313:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b316:	03 c1                	add    %ecx,%eax
40b318:	52                   	push   %edx
40b319:	50                   	push   %eax
40b31a:	e8 11 90 ff ff       	call   0x404330
40b31f:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40b322:	83 c4 0c             	add    $0xc,%esp
40b325:	8b 7d b0             	mov    -0x50(%ebp),%edi
40b328:	8b d3                	mov    %ebx,%edx
40b32a:	8b 75 bc             	mov    -0x44(%ebp),%esi
40b32d:	8b 04 b5 a8 21 42 00 	mov    0x4221a8(,%esi,4),%eax
40b334:	03 c7                	add    %edi,%eax
40b336:	88 5c 10 2e          	mov    %bl,0x2e(%eax,%edx,1)
40b33a:	42                   	inc    %edx
40b33b:	3b d1                	cmp    %ecx,%edx
40b33d:	7c ee                	jl     0x40b32d
40b33f:	ff 75 c4             	push   -0x3c(%ebp)
40b342:	8b 75 08             	mov    0x8(%ebp),%esi
40b345:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b348:	89 45 98             	mov    %eax,-0x68(%ebp)
40b34b:	8d 4d 88             	lea    -0x78(%ebp),%ecx
40b34e:	33 c0                	xor    %eax,%eax
40b350:	89 5d 88             	mov    %ebx,-0x78(%ebp)
40b353:	83 7d c8 04          	cmpl   $0x4,-0x38(%ebp)
40b357:	51                   	push   %ecx
40b358:	0f 94 c0             	sete   %al
40b35b:	89 5d 8c             	mov    %ebx,-0x74(%ebp)
40b35e:	40                   	inc    %eax
40b35f:	50                   	push   %eax
40b360:	89 45 cc             	mov    %eax,-0x34(%ebp)
40b363:	8d 45 98             	lea    -0x68(%ebp),%eax
40b366:	50                   	push   %eax
40b367:	8d 45 c0             	lea    -0x40(%ebp),%eax
40b36a:	50                   	push   %eax
40b36b:	e8 9c 5b 00 00       	call   0x410f0c
40b370:	83 c4 14             	add    $0x14,%esp
40b373:	83 f8 ff             	cmp    $0xffffffff,%eax
40b376:	0f 84 14 02 00 00    	je     0x40b590
40b37c:	eb 4f                	jmp    0x40b3cd
40b37e:	0f b6 02             	movzbl (%edx),%eax
40b381:	0f be 88 70 18 42 00 	movsbl 0x421870(%eax),%ecx
40b388:	41                   	inc    %ecx
40b389:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40b38c:	3b cf                	cmp    %edi,%ecx
40b38e:	0f 8f b2 01 00 00    	jg     0x40b546
40b394:	ff 75 c4             	push   -0x3c(%ebp)
40b397:	33 c0                	xor    %eax,%eax
40b399:	89 5d 80             	mov    %ebx,-0x80(%ebp)
40b39c:	83 f9 04             	cmp    $0x4,%ecx
40b39f:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
40b3a2:	8d 4d 80             	lea    -0x80(%ebp),%ecx
40b3a5:	89 55 c8             	mov    %edx,-0x38(%ebp)
40b3a8:	0f 94 c0             	sete   %al
40b3ab:	40                   	inc    %eax
40b3ac:	51                   	push   %ecx
40b3ad:	50                   	push   %eax
40b3ae:	89 45 cc             	mov    %eax,-0x34(%ebp)
40b3b1:	8d 45 c8             	lea    -0x38(%ebp),%eax
40b3b4:	50                   	push   %eax
40b3b5:	8d 45 c0             	lea    -0x40(%ebp),%eax
40b3b8:	50                   	push   %eax
40b3b9:	e8 4e 5b 00 00       	call   0x410f0c