40f1af:	83 7d a8 04          	cmpl   $0x4,-0x58(%ebp)
40f1b3:	0f 85 d9 f9 ff ff    	jne    0x40eb92
40f1b9:	8b 4e 08             	mov    0x8(%esi),%ecx
40f1bc:	8b 75 a4             	mov    -0x5c(%ebp),%esi
40f1bf:	3b ce                	cmp    %esi,%ecx
40f1c1:	0f 84 fa f9 ff ff    	je     0x40ebc1
40f1c7:	56                   	push   %esi
40f1c8:	e8 0a 8f ff ff       	call   0x4080d7
40f1cd:	e9 ef f9 ff ff       	jmp    0x40ebc1
40f1d2:	83 c6 02             	add    $0x2,%esi
40f1d5:	83 c2 02             	add    $0x2,%edx
40f1d8:	49                   	dec    %ecx
40f1d9:	0f 85 41 fb ff ff    	jne    0x40ed20
40f1df:	e9 84 fa ff ff       	jmp    0x40ec68
40f1e4:	8b 47 0c             	mov    0xc(%edi),%eax
40f1e7:	ff 08                	decl   (%eax)
40f1e9:	8b 47 0c             	mov    0xc(%edi),%eax
40f1ec:	83 38 00             	cmpl   $0x0,(%eax)
40f1ef:	75 15                	jne    0x40f206
40f1f1:	ff 37                	push   (%edi)
40f1f3:	e8 74 1e 01 00       	call   0x42106c
40f1f8:	83 c4 04             	add    $0x4,%esp
40f1fb:	ff 77 0c             	push   0xc(%edi)
40f1fe:	e8 69 1e 01 00       	call   0x42106c
40f203:	83 c4 04             	add    $0x4,%esp
40f206:	57                   	push   %edi
40f207:	e8 60 1e 01 00       	call   0x42106c
40f20c:	83 c4 04             	add    $0x4,%esp
40f20f:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40f216:	e9 82 f9 ff ff       	jmp    0x40eb9d
40f21b:	8b c7                	mov    %edi,%eax
40f21d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40f220:	e9 9c fe ff ff       	jmp    0x40f0c1
40f225:	8b f8                	mov    %eax,%edi
40f227:	e9 f6 fd ff ff       	jmp    0x40f022
40f22c:	ff 36                	push   (%esi)
40f22e:	e8 39 1e 01 00       	call   0x42106c
40f233:	83 c4 04             	add    $0x4,%esp
40f236:	ff 76 0c             	push   0xc(%esi)
40f239:	e8 2e 1e 01 00       	call   0x42106c
40f23e:	83 c4 04             	add    $0x4,%esp
40f241:	e9 22 ff ff ff       	jmp    0x40f168
40f246:	83 c7 02             	add    $0x2,%edi
40f249:	83 c2 02             	add    $0x2,%edx
40f24c:	49                   	dec    %ecx
40f24d:	0f 85 ed fe ff ff    	jne    0x40f140
40f253:	e9 0c f7 ff ff       	jmp    0x40e964
40f258:	83 c0 fb             	add    $0xfffffffb,%eax
40f25b:	83 f8 0a             	cmp    $0xa,%eax
40f25e:	0f 87 74 f9 ff ff    	ja     0x40ebd8
40f264:	ff 24 85 3c f3 40 00 	jmp    *0x40f33c(,%eax,4)
40f26b:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
40f26e:	85 c9                	test   %ecx,%ecx
40f270:	0f 84 62 f9 ff ff    	je     0x40ebd8
40f276:	51                   	push   %ecx
40f277:	e8 b8 9b ff ff       	call   0x408e34
40f27c:	5f                   	pop    %edi
40f27d:	5e                   	pop    %esi
40f27e:	5b                   	pop    %ebx
40f27f:	8b e5                	mov    %ebp,%esp
40f281:	5d                   	pop    %ebp
40f282:	c2 04 00             	ret    $0x4
40f285:	83 e8 05             	sub    $0x5,%eax
40f288:	83 f8 0a             	cmp    $0xa,%eax
40f28b:	0f 87 18 f9 ff ff    	ja     0x40eba9
40f291:	ff 24 85 68 f3 40 00 	jmp    *0x40f368(,%eax,4)
40f298:	8b 0e                	mov    (%esi),%ecx
40f29a:	85 c9                	test   %ecx,%ecx
40f29c:	0f 84 07 f9 ff ff    	je     0x40eba9
40f2a2:	51                   	push   %ecx
40f2a3:	e8 8c 9b ff ff       	call   0x408e34
40f2a8:	e9 fc f8 ff ff       	jmp    0x40eba9
40f2ad:	8b 45 ac             	mov    -0x54(%ebp),%eax
40f2b0:	33 f6                	xor    %esi,%esi
40f2b2:	e9 03 f8 ff ff       	jmp    0x40eaba
40f2b7:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f2ba:	e9 5a f8 ff ff       	jmp    0x40eb19
40f2bf:	8b 55 f0             	mov    -0x10(%ebp),%edx
40f2c2:	80 ba ff 00 00 00 00 	cmpb   $0x0,0xff(%edx)
40f2c9:	0f 85 85 52 03 00    	jne    0x444554
40f2cf:	83 ff 41             	cmp    $0x41,%edi
40f2d2:	0f 85 7c 52 03 00    	jne    0x444554
40f2d8:	6a 00                	push   $0x0
40f2da:	6a 00                	push   $0x0
40f2dc:	8d 45 9c             	lea    -0x64(%ebp),%eax
40f2df:	50                   	push   %eax
40f2e0:	ff 75 ec             	push   -0x14(%ebp)
40f2e3:	e8 38 93 ff ff       	call   0x408620
40f2e8:	e9 d4 f8 ff ff       	jmp    0x40ebc1
40f2ed:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40f2f0:	e9 87 f9 ff ff       	jmp    0x40ec7c
40f2f5:	33 d2                	xor    %edx,%edx
40f2f7:	e9 22 fb ff ff       	jmp    0x40ee1e
40f2fc:	ff 75 ac             	push   -0x54(%ebp)
40f2ff:	6a 7b                	push   $0x7b
40f301:	e9 41 4f 03 00       	jmp    0x444247
40f306:	ff 75 e4             	push   -0x1c(%ebp)
40f309:	6a 7a                	push   $0x7a
40f30b:	e9 37 4f 03 00       	jmp    0x444247
40f310:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40f313:	e9 4c 4f 03 00       	jmp    0x444264
40f318:	33 d2                	xor    %edx,%edx
40f31a:	e9 69 fc ff ff       	jmp    0x40ef88
40f31f:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40f322:	e9 3d 4f 03 00       	jmp    0x444264
40f327:	90                   	nop
40f328:	9f                   	lahf
40f329:	f1                   	int1
40f32a:	40                   	inc    %eax
40f32b:	00 69 45             	add    %ch,0x45(%ecx)
40f32e:	44                   	inc    %esp
40f32f:	00 79 45             	add    %bh,0x45(%ecx)
40f332:	44                   	inc    %esp
40f333:	00 89 45 44 00 99    	add    %cl,-0x66ffbbbb(%ecx)
40f339:	45                   	inc    %ebp
40f33a:	44                   	inc    %esp
40f33b:	00 6b f2             	add    %ch,-0xe(%ebx)
40f33e:	40                   	inc    %eax
40f33f:	00 d8                	add    %bl,%al
40f341:	eb 40                	jmp    0x40f383
40f343:	00 d8                	add    %bl,%al
40f345:	eb 40                	jmp    0x40f387
40f347:	00 27                	add    %ah,(%edi)
40f349:	46                   	inc    %esi
40f34a:	44                   	inc    %esp
40f34b:	00 d8                	add    %bl,%al
40f34d:	eb 40                	jmp    0x40f38f
40f34f:	00 3e                	add    %bh,(%esi)
40f351:	46                   	inc    %esi
40f352:	44                   	inc    %esp
40f353:	00 4e 46             	add    %cl,0x46(%esi)
40f356:	44                   	inc    %esp
40f357:	00 61 46             	add    %ah,0x46(%ecx)
40f35a:	44                   	inc    %esp
40f35b:	00 8d 46 44 00 8d    	add    %cl,-0x72ffbbba(%ebp)
40f361:	46                   	inc    %esi
40f362:	44                   	inc    %esp
40f363:	00 77 46             	add    %dh,0x46(%edi)
40f366:	44                   	inc    %esp
40f367:	00 98 f2 40 00 a9    	add    %bl,-0x56ffbf0e(%eax)
40f36d:	eb 40                	jmp    0x40f3af
40f36f:	00 a9 eb 40 00 a9    	add    %ch,-0x56ffbf15(%ecx)
40f375:	45                   	inc    %ebp
40f376:	44                   	inc    %esp
40f377:	00 a9 eb 40 00 be    	add    %ch,-0x41ffbf15(%ecx)
40f37d:	45                   	inc    %ebp
40f37e:	44                   	inc    %esp
40f37f:	00 cd                	add    %cl,%ch
40f381:	45                   	inc    %ebp
40f382:	44                   	inc    %esp
40f383:	00 de                	add    %bl,%dh
40f385:	45                   	inc    %ebp
40f386:	44                   	inc    %esp
40f387:	00 08                	add    %cl,(%eax)
40f389:	46                   	inc    %esi
40f38a:	44                   	inc    %esp
40f38b:	00 08                	add    %cl,(%eax)
40f38d:	46                   	inc    %esi
40f38e:	44                   	inc    %esp
40f38f:	00 f3                	add    %dh,%bl
40f391:	45                   	inc    %ebp
40f392:	44                   	inc    %esp
40f393:	00 55 8b             	add    %dl,-0x75(%ebp)
40f396:	ec                   	in     (%dx),%al
40f397:	51                   	push   %ecx
40f398:	8b 45 10             	mov    0x10(%ebp),%eax
40f39b:	53                   	push   %ebx
40f39c:	56                   	push   %esi
40f39d:	8b 75 0c             	mov    0xc(%ebp),%esi
40f3a0:	8b d9                	mov    %ecx,%ebx
40f3a2:	57                   	push   %edi
40f3a3:	ff 06                	incl   (%esi)
40f3a5:	33 ff                	xor    %edi,%edi
40f3a7:	8b 16                	mov    (%esi),%edx
40f3a9:	89 10                	mov    %edx,(%eax)
40f3ab:	8b 45 08             	mov    0x8(%ebp),%eax
40f3ae:	8b 48 04             	mov    0x4(%eax),%ecx
40f3b1:	8b 04 91             	mov    (%ecx,%edx,4),%eax
40f3b4:	0f bf 40 08          	movswl 0x8(%eax),%eax
40f3b8:	83 e8 47             	sub    $0x47,%eax
40f3bb:	74 2c                	je     0x40f3e9
40f3bd:	48                   	dec    %eax
40f3be:	74 0e                	je     0x40f3ce
40f3c0:	83 e8 37             	sub    $0x37,%eax
40f3c3:	0f 84 de 53 03 00    	je     0x4447a7
40f3c9:	42                   	inc    %edx
40f3ca:	89 16                	mov    %edx,(%esi)
40f3cc:	eb e3                	jmp    0x40f3b1
40f3ce:	85 ff                	test   %edi,%edi
40f3d0:	75 14                	jne    0x40f3e6
40f3d2:	8b 45 14             	mov    0x14(%ebp),%eax
40f3d5:	89 10                	mov    %edx,(%eax)
40f3d7:	8d 42 01             	lea    0x1(%edx),%eax
40f3da:	89 06                	mov    %eax,(%esi)
40f3dc:	33 c0                	xor    %eax,%eax
40f3de:	5f                   	pop    %edi
40f3df:	5e                   	pop    %esi
40f3e0:	5b                   	pop    %ebx
40f3e1:	59                   	pop    %ecx
40f3e2:	5d                   	pop    %ebp
40f3e3:	c2 10 00             	ret    $0x10
40f3e6:	4f                   	dec    %edi
40f3e7:	eb e0                	jmp    0x40f3c9
40f3e9:	47                   	inc    %edi
40f3ea:	eb dd                	jmp    0x40f3c9
40f3ec:	cc                   	int3
40f3ed:	cc                   	int3
40f3ee:	cc                   	int3
40f3ef:	cc                   	int3
40f3f0:	55                   	push   %ebp
40f3f1:	8b ec                	mov    %esp,%ebp
40f3f3:	83 ec 1c             	sub    $0x1c,%esp
40f3f6:	8b 55 14             	mov    0x14(%ebp),%edx
40f3f9:	53                   	push   %ebx
40f3fa:	56                   	push   %esi
40f3fb:	8b 75 10             	mov    0x10(%ebp),%esi
40f3fe:	8b d9                	mov    %ecx,%ebx
40f400:	ff 02                	incl   (%edx)
40f402:	57                   	push   %edi
40f403:	8b 3a                	mov    (%edx),%edi
40f405:	8b 76 04             	mov    0x4(%esi),%esi
40f408:	8b 04 be             	mov    (%esi,%edi,4),%eax
40f40b:	8d 0c be             	lea    (%esi,%edi,4),%ecx
40f40e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f411:	66 83 78 08 47       	cmpw   $0x47,0x8(%eax)
40f416:	0f 85 7e 01 00 00    	jne    0x40f59a
40f41c:	8d 47 01             	lea    0x1(%edi),%eax
40f41f:	33 ff                	xor    %edi,%edi
40f421:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f424:	89 45 14             	mov    %eax,0x14(%ebp)
40f427:	8b c8                	mov    %eax,%ecx
40f429:	89 02                	mov    %eax,(%edx)
40f42b:	8b 04 8e             	mov    (%esi,%ecx,4),%eax
40f42e:	0f bf 40 08          	movswl 0x8(%eax),%eax
40f432:	83 f8 47             	cmp    $0x47,%eax
40f435:	7c 15                	jl     0x40f44c
40f437:	83 e8 47             	sub    $0x47,%eax
40f43a:	0f 84 54 01 00 00    	je     0x40f594
40f440:	48                   	dec    %eax
40f441:	74 0e                	je     0x40f451
40f443:	83 e8 37             	sub    $0x37,%eax
40f446:	0f 84 75 53 03 00    	je     0x4447c1
40f44c:	8d 41 01             	lea    0x1(%ecx),%eax
40f44f:	eb d6                	jmp    0x40f427
40f451:	85 ff                	test   %edi,%edi
40f453:	0f 85 32 01 00 00    	jne    0x40f58b
40f459:	8b 5d 18             	mov    0x18(%ebp),%ebx
40f45c:	8b f9                	mov    %ecx,%edi
40f45e:	8b 75 0c             	mov    0xc(%ebp),%esi
40f461:	8d 47 01             	lea    0x1(%edi),%eax
40f464:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
40f46a:	89 02                	mov    %eax,(%edx)
40f46c:	39 7d f8             	cmp    %edi,-0x8(%ebp)
40f46f:	0f 83 c8 00 00 00    	jae    0x40f53d
40f475:	8b 46 0c             	mov    0xc(%esi),%eax
40f478:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40f47f:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
40f486:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
40f48d:	39 46 08             	cmp    %eax,0x8(%esi)
40f490:	0f 84 b8 00 00 00    	je     0x40f54e
40f496:	6a 10                	push   $0x10
40f498:	e8 59 1b 01 00       	call   0x420ff6
40f49d:	8b d8                	mov    %eax,%ebx
40f49f:	83 c4 04             	add    $0x4,%esp
40f4a2:	85 db                	test   %ebx,%ebx
40f4a4:	0f 84 f8 00 00 00    	je     0x40f5a2
40f4aa:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f4ad:	c7 43 08 00 00 00 00 	movl   $0x0,0x8(%ebx)
40f4b4:	50                   	push   %eax
40f4b5:	8b cb                	mov    %ebx,%ecx
40f4b7:	e8 04 a6 ff ff       	call   0x409ac0
40f4bc:	8b 4e 08             	mov    0x8(%esi),%ecx
40f4bf:	8b 46 04             	mov    0x4(%esi),%eax
40f4c2:	57                   	push   %edi
40f4c3:	89 1c 88             	mov    %ebx,(%eax,%ecx,4)
40f4c6:	ff 46 08             	incl   0x8(%esi)
40f4c9:	80 7d 1c 00          	cmpb   $0x0,0x1c(%ebp)
40f4cd:	8b 4e 08             	mov    0x8(%esi),%ecx
40f4d0:	8b 46 04             	mov    0x4(%esi),%eax
40f4d3:	0f 85 4a 53 03 00    	jne    0x444823
40f4d9:	ff 74 88 fc          	push   -0x4(%eax,%ecx,4)
40f4dd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f4e0:	8d 45 14             	lea    0x14(%ebp),%eax
40f4e3:	50                   	push   %eax
40f4e4:	ff 75 10             	push   0x10(%ebp)
40f4e7:	e8 14 ab ff ff       	call   0x40a000
40f4ec:	85 c0                	test   %eax,%eax
40f4ee:	0f 88 f6 52 03 00    	js     0x4447ea
40f4f4:	8b 5d 18             	mov    0x18(%ebp),%ebx
40f4f7:	8b 4d 14             	mov    0x14(%ebp),%ecx
40f4fa:	ff 03                	incl   (%ebx)
40f4fc:	3b cf                	cmp    %edi,%ecx
40f4fe:	74 35                	je     0x40f535
40f500:	8b 55 10             	mov    0x10(%ebp),%edx
40f503:	8b 42 04             	mov    0x4(%edx),%eax
40f506:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40f509:	66 83 78 08 40       	cmpw   $0x40,0x8(%eax)
40f50e:	0f 85 c1 52 03 00    	jne    0x4447d5
40f514:	8d 41 01             	lea    0x1(%ecx),%eax
40f517:	3b c7                	cmp    %edi,%eax
40f519:	0f 84 b6 52 03 00    	je     0x4447d5
40f51f:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40f522:	89 45 14             	mov    %eax,0x14(%ebp)
40f525:	e8 f6 a4 ff ff       	call   0x409a20
40f52a:	39 7d 14             	cmp    %edi,0x14(%ebp)
40f52d:	0f 82 42 ff ff ff    	jb     0x40f475
40f533:	eb 08                	jmp    0x40f53d
40f535:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40f538:	e8 e3 a4 ff ff       	call   0x409a20
40f53d:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40f541:	75 66                	jne    0x40f5a9
40f543:	33 c0                	xor    %eax,%eax
40f545:	5f                   	pop    %edi
40f546:	5e                   	pop    %esi
40f547:	5b                   	pop    %ebx
40f548:	8b e5                	mov    %ebp,%esp
40f54a:	5d                   	pop    %ebp
40f54b:	c2 18 00             	ret    $0x18
40f54e:	03 c0                	add    %eax,%eax
40f550:	83 f8 08             	cmp    $0x8,%eax
40f553:	73 05                	jae    0x40f55a
40f555:	b8 08 00 00 00       	mov    $0x8,%eax
40f55a:	33 c9                	xor    %ecx,%ecx
40f55c:	89 46 0c             	mov    %eax,0xc(%esi)
40f55f:	ba 04 00 00 00       	mov    $0x4,%edx
40f564:	f7 e2                	mul    %edx
40f566:	0f 90 c1             	seto   %cl
40f569:	f7 d9                	neg    %ecx
40f56b:	0b c8                	or     %eax,%ecx
40f56d:	51                   	push   %ecx
40f56e:	e8 83 1a 01 00       	call   0x420ff6
40f573:	8b d8                	mov    %eax,%ebx
40f575:	83 c4 04             	add    $0x4,%esp
40f578:	8b 46 04             	mov    0x4(%esi),%eax
40f57b:	85 c0                	test   %eax,%eax
40f57d:	0f 85 77 52 03 00    	jne    0x4447fa
40f583:	89 5e 04             	mov    %ebx,0x4(%esi)
40f586:	e9 0b ff ff ff       	jmp    0x40f496
40f58b:	4f                   	dec    %edi
40f58c:	8d 41 01             	lea    0x1(%ecx),%eax
40f58f:	e9 93 fe ff ff       	jmp    0x40f427
40f594:	47                   	inc    %edi
40f595:	e9 b2 fe ff ff       	jmp    0x40f44c
40f59a:	8b 41 fc             	mov    -0x4(%ecx),%eax
40f59d:	e9 23 52 03 00       	jmp    0x4447c5
40f5a2:	33 db                	xor    %ebx,%ebx
40f5a4:	e9 13 ff ff ff       	jmp    0x40f4bc
40f5a9:	53                   	push   %ebx
40f5aa:	56                   	push   %esi
40f5ab:	e8 3e b0 06 00       	call   0x47a5ee