40b11c:	33 c0                	xor    %eax,%eax
40b11e:	40                   	inc    %eax
40b11f:	d3 e0                	shl    %cl,%eax
40b121:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40b124:	85 c1                	test   %eax,%ecx
40b126:	74 37                	je     0x40b15f
40b128:	6a 04                	push   $0x4
40b12a:	8d 47 18             	lea    0x18(%edi),%eax
40b12d:	50                   	push   %eax
40b12e:	ff 75 08             	push   0x8(%ebp)
40b131:	8b ce                	mov    %esi,%ecx
40b133:	e8 e0 f9 ff ff       	call   0x40ab18
40b138:	83 f8 05             	cmp    $0x5,%eax
40b13b:	75 22                	jne    0x40b15f
40b13d:	6a 14                	push   $0x14
40b13f:	57                   	push   %edi
40b140:	6a 14                	push   $0x14
40b142:	57                   	push   %edi
40b143:	ff 75 08             	push   0x8(%ebp)
40b146:	8b ce                	mov    %esi,%ecx
40b148:	e8 cb f9 ff ff       	call   0x40ab18
40b14d:	2b c3                	sub    %ebx,%eax
40b14f:	25 ff ff 0f 00       	and    $0xfffff,%eax
40b154:	50                   	push   %eax
40b155:	ff 75 08             	push   0x8(%ebp)
40b158:	8b ce                	mov    %esi,%ecx
40b15a:	e8 09 fa ff ff       	call   0x40ab68
40b15f:	ff 45 e4             	incl   -0x1c(%ebp)
40b162:	83 c7 29             	add    $0x29,%edi
40b165:	83 ff 64             	cmp    $0x64,%edi
40b168:	7e af                	jle    0x40b119
40b16a:	83 45 08 10          	addl   $0x10,0x8(%ebp)
40b16e:	43                   	inc    %ebx
40b16f:	ff 4d d4             	decl   -0x2c(%ebp)
40b172:	75 80                	jne    0x40b0f4
40b174:	eb 66                	jmp    0x40b1dc
40b176:	8b 46 24             	mov    0x24(%esi),%eax
40b179:	8b 4e 10             	mov    0x10(%esi),%ecx
40b17c:	8b 76 2c             	mov    0x2c(%esi),%esi
40b17f:	3d 00 c0 03 00       	cmp    $0x3c000,%eax
40b184:	73 56                	jae    0x40b1dc
40b186:	83 f8 04             	cmp    $0x4,%eax
40b189:	7c 51                	jl     0x40b1dc
40b18b:	83 fa 02             	cmp    $0x2,%edx
40b18e:	0f 94 c2             	sete   %dl
40b191:	83 65 08 00          	andl   $0x0,0x8(%ebp)
40b195:	8d 78 fc             	lea    -0x4(%eax),%edi
40b198:	80 c2 e8             	add    $0xe8,%dl
40b19b:	85 ff                	test   %edi,%edi
40b19d:	7e 3d                	jle    0x40b1dc
40b19f:	8a 01                	mov    (%ecx),%al
40b1a1:	41                   	inc    %ecx
40b1a2:	ff 45 08             	incl   0x8(%ebp)
40b1a5:	46                   	inc    %esi
40b1a6:	3c e8                	cmp    $0xe8,%al
40b1a8:	74 04                	je     0x40b1ae
40b1aa:	3a c2                	cmp    %dl,%al
40b1ac:	75 29                	jne    0x40b1d7
40b1ae:	8b 01                	mov    (%ecx),%eax
40b1b0:	85 c0                	test   %eax,%eax
40b1b2:	7d 0e                	jge    0x40b1c2
40b1b4:	8d 1c 06             	lea    (%esi,%eax,1),%ebx
40b1b7:	85 db                	test   %ebx,%ebx
40b1b9:	7c 12                	jl     0x40b1cd
40b1bb:	05 00 00 00 01       	add    $0x1000000,%eax
40b1c0:	eb 09                	jmp    0x40b1cb
40b1c2:	3d 00 00 00 01       	cmp    $0x1000000,%eax
40b1c7:	7d 04                	jge    0x40b1cd
40b1c9:	2b c6                	sub    %esi,%eax
40b1cb:	89 01                	mov    %eax,(%ecx)
40b1cd:	83 45 08 04          	addl   $0x4,0x8(%ebp)
40b1d1:	83 c1 04             	add    $0x4,%ecx
40b1d4:	83 c6 04             	add    $0x4,%esi
40b1d7:	39 7d 08             	cmp    %edi,0x8(%ebp)
40b1da:	7c c3                	jl     0x40b19f
40b1dc:	5f                   	pop    %edi
40b1dd:	5b                   	pop    %ebx
40b1de:	5e                   	pop    %esi
40b1df:	c9                   	leave
40b1e0:	c2 04 00             	ret    $0x4
40b1e3:	8b 44 24 04          	mov    0x4(%esp),%eax
40b1e7:	56                   	push   %esi
40b1e8:	57                   	push   %edi
40b1e9:	be 40 78 7d 01       	mov    $0x17d7840,%esi
40b1ee:	8b 10                	mov    (%eax),%edx
40b1f0:	83 fa 16             	cmp    $0x16,%edx
40b1f3:	74 0b                	je     0x40b200
40b1f5:	83 fa 28             	cmp    $0x28,%edx
40b1f8:	74 38                	je     0x40b232
40b1fa:	83 c0 28             	add    $0x28,%eax
40b1fd:	4e                   	dec    %esi
40b1fe:	eb ee                	jmp    0x40b1ee
40b200:	8b 51 30             	mov    0x30(%ecx),%edx
40b203:	81 fa 00 00 04 00    	cmp    $0x40000,%edx
40b209:	73 2f                	jae    0x40b23a
40b20b:	8b 79 10             	mov    0x10(%ecx),%edi
40b20e:	8b c2                	mov    %edx,%eax
40b210:	25 ff ff 03 00       	and    $0x3ffff,%eax
40b215:	8b 04 38             	mov    (%eax,%edi,1),%eax
40b218:	3b 44 24 10          	cmp    0x10(%esp),%eax
40b21c:	73 1c                	jae    0x40b23a
40b21e:	4e                   	dec    %esi
40b21f:	85 f6                	test   %esi,%esi
40b221:	7e 1b                	jle    0x40b23e
40b223:	6b c0 28             	imul   $0x28,%eax,%eax
40b226:	03 44 24 0c          	add    0xc(%esp),%eax
40b22a:	83 c2 04             	add    $0x4,%edx
40b22d:	89 51 30             	mov    %edx,0x30(%ecx)
40b230:	eb bc                	jmp    0x40b1ee
40b232:	ff 70 0c             	push   0xc(%eax)
40b235:	e8 05 fb ff ff       	call   0x40ad3f
40b23a:	b0 01                	mov    $0x1,%al
40b23c:	eb 02                	jmp    0x40b240
40b23e:	32 c0                	xor    %al,%al
40b240:	5f                   	pop    %edi
40b241:	5e                   	pop    %esi
40b242:	c2 08 00             	ret    $0x8
40b245:	55                   	push   %ebp
40b246:	8b ec                	mov    %esp,%ebp
40b248:	53                   	push   %ebx
40b249:	56                   	push   %esi
40b24a:	8b 75 08             	mov    0x8(%ebp),%esi
40b24d:	57                   	push   %edi
40b24e:	6a 1c                	push   $0x1c
40b250:	8d 46 38             	lea    0x38(%esi),%eax
40b253:	8b f9                	mov    %ecx,%edi
40b255:	50                   	push   %eax
40b256:	8d 47 14             	lea    0x14(%edi),%eax
40b259:	50                   	push   %eax
40b25a:	e8 11 0a 01 00       	call   0x41bc70
40b25f:	8b 46 1c             	mov    0x1c(%esi),%eax
40b262:	bb 00 20 00 00       	mov    $0x2000,%ebx
40b267:	83 c4 0c             	add    $0xc,%esp
40b26a:	89 45 08             	mov    %eax,0x8(%ebp)
40b26d:	3b c3                	cmp    %ebx,%eax
40b26f:	72 03                	jb     0x40b274
40b271:	89 5d 08             	mov    %ebx,0x8(%ebp)
40b274:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40b278:	74 17                	je     0x40b291
40b27a:	ff 75 08             	push   0x8(%ebp)
40b27d:	8b 47 10             	mov    0x10(%edi),%eax
40b280:	ff 76 18             	push   0x18(%esi)
40b283:	05 00 c0 03 00       	add    $0x3c000,%eax
40b288:	50                   	push   %eax
40b289:	e8 e2 09 01 00       	call   0x41bc70
40b28e:	83 c4 0c             	add    $0xc,%esp
40b291:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b294:	8b 46 2c             	mov    0x2c(%esi),%eax
40b297:	2b d9                	sub    %ecx,%ebx
40b299:	3b c3                	cmp    %ebx,%eax
40b29b:	72 02                	jb     0x40b29f
40b29d:	8b c3                	mov    %ebx,%eax
40b29f:	85 c0                	test   %eax,%eax
40b2a1:	74 17                	je     0x40b2ba
40b2a3:	50                   	push   %eax
40b2a4:	8b 47 10             	mov    0x10(%edi),%eax
40b2a7:	ff 76 28             	push   0x28(%esi)
40b2aa:	8d 84 08 00 c0 03 00 	lea    0x3c000(%eax,%ecx,1),%eax
40b2b1:	50                   	push   %eax
40b2b2:	e8 b9 09 01 00       	call   0x41bc70
40b2b7:	83 c4 0c             	add    $0xc,%esp
40b2ba:	83 67 34 00          	andl   $0x0,0x34(%edi)
40b2be:	c7 47 30 00 00 04 00 	movl   $0x40000,0x30(%edi)
40b2c5:	8b 46 10             	mov    0x10(%esi),%eax
40b2c8:	8b d8                	mov    %eax,%ebx
40b2ca:	85 c0                	test   %eax,%eax
40b2cc:	75 02                	jne    0x40b2d0
40b2ce:	8b 1e                	mov    (%esi),%ebx
40b2d0:	8b 46 14             	mov    0x14(%esi),%eax
40b2d3:	85 c0                	test   %eax,%eax
40b2d5:	7e 13                	jle    0x40b2ea
40b2d7:	50                   	push   %eax
40b2d8:	53                   	push   %ebx
40b2d9:	8b cf                	mov    %edi,%ecx
40b2db:	e8 03 ff ff ff       	call   0x40b1e3
40b2e0:	84 c0                	test   %al,%al
40b2e2:	75 06                	jne    0x40b2ea
40b2e4:	c7 03 16 00 00 00    	movl   $0x16,(%ebx)
40b2ea:	8b 57 10             	mov    0x10(%edi),%edx
40b2ed:	8b 8a 20 c0 03 00    	mov    0x3c020(%edx),%ecx
40b2f3:	8b 82 1c c0 03 00    	mov    0x3c01c(%edx),%eax
40b2f9:	bb ff ff 03 00       	mov    $0x3ffff,%ebx
40b2fe:	23 cb                	and    %ebx,%ecx
40b300:	23 c3                	and    %ebx,%eax
40b302:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
40b305:	81 fb 00 00 04 00    	cmp    $0x40000,%ebx
40b30b:	72 04                	jb     0x40b311
40b30d:	33 c0                	xor    %eax,%eax
40b30f:	33 c9                	xor    %ecx,%ecx
40b311:	03 d1                	add    %ecx,%edx
40b313:	89 56 54             	mov    %edx,0x54(%esi)
40b316:	89 46 58             	mov    %eax,0x58(%esi)
40b319:	83 c6 18             	add    $0x18,%esi
40b31c:	8b ce                	mov    %esi,%ecx
40b31e:	e8 56 57 00 00       	call   0x410a79
40b323:	8b 47 10             	mov    0x10(%edi),%eax
40b326:	8b 88 30 c0 03 00    	mov    0x3c030(%eax),%ecx
40b32c:	b8 c0 1f 00 00       	mov    $0x1fc0,%eax
40b331:	3b c8                	cmp    %eax,%ecx
40b333:	73 02                	jae    0x40b337
40b335:	8b c1                	mov    %ecx,%eax
40b337:	85 c0                	test   %eax,%eax
40b339:	74 1f                	je     0x40b35a
40b33b:	8d 58 40             	lea    0x40(%eax),%ebx
40b33e:	53                   	push   %ebx
40b33f:	8b ce                	mov    %esi,%ecx
40b341:	e8 c0 5d ff ff       	call   0x401106
40b346:	8b 47 10             	mov    0x10(%edi),%eax
40b349:	53                   	push   %ebx
40b34a:	05 00 c0 03 00       	add    $0x3c000,%eax
40b34f:	50                   	push   %eax
40b350:	ff 36                	push   (%esi)
40b352:	e8 19 09 01 00       	call   0x41bc70
40b357:	83 c4 0c             	add    $0xc,%esp
40b35a:	5f                   	pop    %edi
40b35b:	5e                   	pop    %esi
40b35c:	5b                   	pop    %ebx
40b35d:	5d                   	pop    %ebp
40b35e:	c2 04 00             	ret    $0x4
40b361:	55                   	push   %ebp
40b362:	8b ec                	mov    %esp,%ebp
40b364:	51                   	push   %ecx
40b365:	53                   	push   %ebx
40b366:	56                   	push   %esi
40b367:	8b f1                	mov    %ecx,%esi
40b369:	33 db                	xor    %ebx,%ebx
40b36b:	39 5e 1c             	cmp    %ebx,0x1c(%esi)
40b36e:	74 60                	je     0x40b3d0
40b370:	8b 5e 04             	mov    0x4(%esi),%ebx
40b373:	8b 56 14             	mov    0x14(%esi),%edx
40b376:	8b 45 08             	mov    0x8(%ebp),%eax
40b379:	8b cb                	mov    %ebx,%ecx
40b37b:	2b ca                	sub    %edx,%ecx
40b37d:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40b380:	3b c1                	cmp    %ecx,%eax
40b382:	76 43                	jbe    0x40b3c7
40b384:	57                   	push   %edi
40b385:	2b c1                	sub    %ecx,%eax
40b387:	8b f8                	mov    %eax,%edi
40b389:	f7 d7                	not    %edi
40b38b:	47                   	inc    %edi
40b38c:	83 e7 0f             	and    $0xf,%edi
40b38f:	03 f8                	add    %eax,%edi
40b391:	57                   	push   %edi
40b392:	8b ce                	mov    %esi,%ecx
40b394:	e8 6d 5d ff ff       	call   0x401106
40b399:	8b 06                	mov    (%esi),%eax
40b39b:	8b 4e 10             	mov    0x10(%esi),%ecx
40b39e:	8b 11                	mov    (%ecx),%edx
40b3a0:	03 c3                	add    %ebx,%eax
40b3a2:	57                   	push   %edi
40b3a3:	50                   	push   %eax
40b3a4:	ff 52 08             	call   *0x8(%edx)
40b3a7:	8b 4e 1c             	mov    0x1c(%esi),%ecx
40b3aa:	8b d8                	mov    %eax,%ebx
40b3ac:	8b 06                	mov    (%esi),%eax
40b3ae:	03 45 fc             	add    -0x4(%ebp),%eax
40b3b1:	57                   	push   %edi
40b3b2:	50                   	push   %eax
40b3b3:	e8 68 ac ff ff       	call   0x406020
40b3b8:	8b c3                	mov    %ebx,%eax
40b3ba:	f7 d8                	neg    %eax
40b3bc:	1b c0                	sbb    %eax,%eax
40b3be:	23 45 08             	and    0x8(%ebp),%eax
40b3c1:	5f                   	pop    %edi
40b3c2:	01 46 14             	add    %eax,0x14(%esi)
40b3c5:	eb 2c                	jmp    0x40b3f3
40b3c7:	03 d0                	add    %eax,%edx
40b3c9:	8b d8                	mov    %eax,%ebx
40b3cb:	89 56 14             	mov    %edx,0x14(%esi)
40b3ce:	eb 23                	jmp    0x40b3f3
40b3d0:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40b3d3:	74 1e                	je     0x40b3f3
40b3d5:	ff 75 08             	push   0x8(%ebp)
40b3d8:	e8 29 5d ff ff       	call   0x401106
40b3dd:	8b 46 14             	mov    0x14(%esi),%eax
40b3e0:	03 06                	add    (%esi),%eax
40b3e2:	ff 75 08             	push   0x8(%ebp)
40b3e5:	8b 4e 10             	mov    0x10(%esi),%ecx
40b3e8:	8b 11                	mov    (%ecx),%edx
40b3ea:	50                   	push   %eax
40b3eb:	ff 52 08             	call   *0x8(%edx)
40b3ee:	8b d8                	mov    %eax,%ebx
40b3f0:	01 5e 14             	add    %ebx,0x14(%esi)
40b3f3:	5e                   	pop    %esi
40b3f4:	8b c3                	mov    %ebx,%eax
40b3f6:	5b                   	pop    %ebx
40b3f7:	c9                   	leave
40b3f8:	c2 04 00             	ret    $0x4
40b3fb:	8b 41 18             	mov    0x18(%ecx),%eax
40b3fe:	3b 41 14             	cmp    0x14(%ecx),%eax
40b401:	73 0d                	jae    0x40b410
40b403:	8d 50 01             	lea    0x1(%eax),%edx
40b406:	89 51 18             	mov    %edx,0x18(%ecx)
40b409:	8b 09                	mov    (%ecx),%ecx
40b40b:	0f b6 04 01          	movzbl (%ecx,%eax,1),%eax
40b40f:	c3                   	ret
40b410:	33 c0                	xor    %eax,%eax
40b412:	c3                   	ret
40b413:	8b 51 18             	mov    0x18(%ecx),%edx
40b416:	8d 42 01             	lea    0x1(%edx),%eax
40b419:	3b 41 14             	cmp    0x14(%ecx),%eax
40b41c:	73 27                	jae    0x40b445
40b41e:	8b 01                	mov    (%ecx),%eax
40b420:	56                   	push   %esi
40b421:	03 c2                	add    %edx,%eax
40b423:	66 0f b6 70 01       	movzbw 0x1(%eax),%si
40b428:	66 0f b6 00          	movzbw (%eax),%ax
40b42c:	57                   	push   %edi
40b42d:	bf 00 01 00 00       	mov    $0x100,%edi
40b432:	66 0f af f7          	imul   %di,%si
40b436:	66 03 f0             	add    %ax,%si
40b439:	83 c2 02             	add    $0x2,%edx
40b43c:	5f                   	pop    %edi
40b43d:	0f b7 c6             	movzwl %si,%eax
40b440:	89 51 18             	mov    %edx,0x18(%ecx)
40b443:	5e                   	pop    %esi
40b444:	c3                   	ret
40b445:	33 c0                	xor    %eax,%eax
40b447:	c3                   	ret
40b448:	56                   	push   %esi
40b449:	8b 71 18             	mov    0x18(%ecx),%esi
40b44c:	8d 46 03             	lea    0x3(%esi),%eax
40b44f:	3b 41 14             	cmp    0x14(%ecx),%eax
40b452:	73 2d                	jae    0x40b481
40b454:	8b 01                	mov    (%ecx),%eax
40b456:	8d 14 06             	lea    (%esi,%eax,1),%edx
40b459:	0f b6 42 03          	movzbl 0x3(%edx),%eax
40b45d:	57                   	push   %edi
40b45e:	0f b6 7a 02          	movzbl 0x2(%edx),%edi
40b462:	c1 e0 08             	shl    $0x8,%eax
40b465:	03 c7                	add    %edi,%eax
40b467:	0f b6 7a 01          	movzbl 0x1(%edx),%edi
40b46b:	0f b6 12             	movzbl (%edx),%edx
40b46e:	c1 e0 08             	shl    $0x8,%eax
40b471:	03 c7                	add    %edi,%eax
40b473:	c1 e0 08             	shl    $0x8,%eax
40b476:	03 c2                	add    %edx,%eax
40b478:	83 c6 04             	add    $0x4,%esi
40b47b:	5f                   	pop    %edi
40b47c:	89 71 18             	mov    %esi,0x18(%ecx)
40b47f:	5e                   	pop    %esi
40b480:	c3                   	ret
40b481:	33 c0                	xor    %eax,%eax
40b483:	5e                   	pop    %esi
40b484:	c3                   	ret
40b485:	56                   	push   %esi
40b486:	e8 bd ff ff ff       	call   0x40b448
40b48b:	8b f0                	mov    %eax,%esi
40b48d:	e8 b6 ff ff ff       	call   0x40b448