40b1df:	eb c1                	jmp    0x40b1a2
40b1e1:	8d 04 37             	lea    (%edi,%esi,1),%eax
40b1e4:	3b 43 04             	cmp    0x4(%ebx),%eax
40b1e7:	76 ca                	jbe    0x40b1b3
40b1e9:	eb c3                	jmp    0x40b1ae
40b1eb:	55                   	push   %ebp
40b1ec:	8b ec                	mov    %esp,%ebp
40b1ee:	83 e4 f8             	and    $0xfffffff8,%esp
40b1f1:	83 ec 1c             	sub    $0x1c,%esp
40b1f4:	53                   	push   %ebx
40b1f5:	56                   	push   %esi
40b1f6:	57                   	push   %edi
40b1f7:	8b d9                	mov    %ecx,%ebx
40b1f9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b1fc:	33 c0                	xor    %eax,%eax
40b1fe:	68 00 dc 49 00       	push   $0x49dc00
40b203:	89 44 24 14          	mov    %eax,0x14(%esp)
40b207:	e8 ad 1b 00 00       	call   0x40cdb9
40b20c:	8b 7d 08             	mov    0x8(%ebp),%edi
40b20f:	83 7f 08 02          	cmpl   $0x2,0x8(%edi)
40b213:	75 22                	jne    0x40b237
40b215:	8b 47 04             	mov    0x4(%edi),%eax
40b218:	8b 48 04             	mov    0x4(%eax),%ecx
40b21b:	e8 66 20 00 00       	call   0x40d286
40b220:	8b f0                	mov    %eax,%esi
40b222:	89 74 24 10          	mov    %esi,0x10(%esp)
40b226:	83 fe ff             	cmp    $0xffffffff,%esi
40b229:	0f 84 26 ae 06 00    	je     0x476055
40b22f:	85 f6                	test   %esi,%esi
40b231:	0f 8e 34 ae 06 00    	jle    0x47606b
40b237:	8b 47 04             	mov    0x4(%edi),%eax
40b23a:	6a 04                	push   $0x4
40b23c:	8b 30                	mov    (%eax),%esi
40b23e:	8b ce                	mov    %esi,%ecx
40b240:	e8 9f 23 00 00       	call   0x40d5e4
40b245:	84 c0                	test   %al,%al
40b247:	0f 84 39 ae 06 00    	je     0x476086
40b24d:	6a 38                	push   $0x38
40b24f:	e8 96 42 01 00       	call   0x41f4ea
40b254:	59                   	pop    %ecx
40b255:	85 c0                	test   %eax,%eax
40b257:	0f 84 d3 00 00 00    	je     0x40b330
40b25d:	8b c8                	mov    %eax,%ecx
40b25f:	e8 56 96 ff ff       	call   0x4048ba
40b264:	8b f8                	mov    %eax,%edi
40b266:	8b 45 08             	mov    0x8(%ebp),%eax
40b269:	8b 40 04             	mov    0x4(%eax),%eax
40b26c:	8b 30                	mov    (%eax),%esi
40b26e:	8b ce                	mov    %esi,%ecx
40b270:	e8 f7 e0 ff ff       	call   0x40936c
40b275:	68 00 20 00 00       	push   $0x2000
40b27a:	ff 76 08             	push   0x8(%esi)
40b27d:	8b cf                	mov    %edi,%ecx
40b27f:	e8 cc 92 ff ff       	call   0x404550
40b284:	84 c0                	test   %al,%al
40b286:	0f 84 f4 ad 06 00    	je     0x476080
40b28c:	68 00 04 00 00       	push   $0x400
40b291:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
40b295:	e8 75 b8 ff ff       	call   0x406b0f
40b29a:	8b 74 24 10          	mov    0x10(%esp),%esi
40b29e:	32 c0                	xor    %al,%al
40b2a0:	88 44 24 0f          	mov    %al,0xf(%esp)
40b2a4:	8b cf                	mov    %edi,%ecx
40b2a6:	85 f6                	test   %esi,%esi
40b2a8:	0f 84 28 ae 06 00    	je     0x4760d6
40b2ae:	e8 0b 93 ff ff       	call   0x4045be
40b2b3:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40b2b8:	85 f6                	test   %esi,%esi
40b2ba:	7e 29                	jle    0x40b2e5
40b2bc:	8d 44 24 18          	lea    0x18(%esp),%eax
40b2c0:	50                   	push   %eax
40b2c1:	8b cf                	mov    %edi,%ecx
40b2c3:	e8 e7 0c 00 00       	call   0x40bfaf
40b2c8:	84 c0                	test   %al,%al
40b2ca:	0f 84 e0 ad 06 00    	je     0x4760b0
40b2d0:	8b 44 24 10          	mov    0x10(%esp),%eax
40b2d4:	40                   	inc    %eax
40b2d5:	89 44 24 10          	mov    %eax,0x10(%esp)
40b2d9:	3b c6                	cmp    %esi,%eax
40b2db:	7c df                	jl     0x40b2bc
40b2dd:	8a 44 24 0f          	mov    0xf(%esp),%al
40b2e1:	84 c0                	test   %al,%al
40b2e3:	75 0d                	jne    0x40b2f2
40b2e5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b2e8:	8d 44 24 18          	lea    0x18(%esp),%eax
40b2ec:	50                   	push   %eax
40b2ed:	e8 76 b8 ff ff       	call   0x406b68
40b2f2:	8b 45 08             	mov    0x8(%ebp),%eax
40b2f5:	6a 04                	push   $0x4
40b2f7:	8b 48 04             	mov    0x4(%eax),%ecx
40b2fa:	8b 09                	mov    (%ecx),%ecx
40b2fc:	e8 e3 22 00 00       	call   0x40d5e4
40b301:	84 c0                	test   %al,%al
40b303:	74 17                	je     0x40b31c
40b305:	8b cf                	mov    %edi,%ecx
40b307:	e8 fb 95 ff ff       	call   0x404907
40b30c:	83 67 2c 00          	andl   $0x0,0x2c(%edi)
40b310:	83 67 30 00          	andl   $0x0,0x30(%edi)
40b314:	51                   	push   %ecx
40b315:	8b cf                	mov    %edi,%ecx
40b317:	e8 1f 92 ff ff       	call   0x40453b
40b31c:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40b320:	e8 12 18 00 00       	call   0x40cb37
40b325:	5f                   	pop    %edi
40b326:	5e                   	pop    %esi
40b327:	33 c0                	xor    %eax,%eax
40b329:	5b                   	pop    %ebx
40b32a:	8b e5                	mov    %ebp,%esp
40b32c:	5d                   	pop    %ebp
40b32d:	c2 08 00             	ret    $0x8
40b330:	33 ff                	xor    %edi,%edi
40b332:	e9 2f ff ff ff       	jmp    0x40b266
40b337:	55                   	push   %ebp
40b338:	8b ec                	mov    %esp,%ebp
40b33a:	51                   	push   %ecx
40b33b:	53                   	push   %ebx
40b33c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b33f:	56                   	push   %esi
40b340:	8b f1                	mov    %ecx,%esi
40b342:	57                   	push   %edi
40b343:	33 c0                	xor    %eax,%eax
40b345:	8d 7e 18             	lea    0x18(%esi),%edi
40b348:	8b cf                	mov    %edi,%ecx
40b34a:	66 89 03             	mov    %ax,(%ebx)
40b34d:	e8 7c 09 00 00       	call   0x40bcce
40b352:	57                   	push   %edi
40b353:	8b ce                	mov    %esi,%ecx
40b355:	e8 55 0c 00 00       	call   0x40bfaf
40b35a:	84 c0                	test   %al,%al
40b35c:	74 22                	je     0x40b380
40b35e:	6a ff                	push   $0xffffffff
40b360:	68 fe 0f 00 00       	push   $0xffe
40b365:	8b cf                	mov    %edi,%ecx
40b367:	e8 1f fe ff ff       	call   0x40b18b
40b36c:	ff 37                	push   (%edi)
40b36e:	53                   	push   %ebx
40b36f:	e8 af 59 01 00       	call   0x420d23
40b374:	59                   	pop    %ecx
40b375:	59                   	pop    %ecx
40b376:	b0 01                	mov    $0x1,%al
40b378:	5f                   	pop    %edi
40b379:	5e                   	pop    %esi
40b37a:	5b                   	pop    %ebx
40b37b:	59                   	pop    %ecx
40b37c:	5d                   	pop    %ebp
40b37d:	c2 08 00             	ret    $0x8
40b380:	32 c0                	xor    %al,%al
40b382:	eb f4                	jmp    0x40b378
40b384:	55                   	push   %ebp
40b385:	8b ec                	mov    %esp,%ebp
40b387:	53                   	push   %ebx
40b388:	8b 5d 10             	mov    0x10(%ebp),%ebx
40b38b:	57                   	push   %edi
40b38c:	8b f9                	mov    %ecx,%edi
40b38e:	85 db                	test   %ebx,%ebx
40b390:	74 63                	je     0x40b3f5
40b392:	8b 55 08             	mov    0x8(%ebp),%edx
40b395:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b398:	3b 4a 04             	cmp    0x4(%edx),%ecx
40b39b:	73 58                	jae    0x40b3f5
40b39d:	83 fb ff             	cmp    $0xffffffff,%ebx
40b3a0:	0f 85 01 6b 06 00    	jne    0x471ea7
40b3a6:	8b 5a 04             	mov    0x4(%edx),%ebx
40b3a9:	2b d9                	sub    %ecx,%ebx
40b3ab:	8b 4f 0c             	mov    0xc(%edi),%ecx
40b3ae:	56                   	push   %esi
40b3af:	8b 01                	mov    (%ecx),%eax
40b3b1:	33 f6                	xor    %esi,%esi
40b3b3:	46                   	inc    %esi
40b3b4:	3b c6                	cmp    %esi,%eax
40b3b6:	7f 45                	jg     0x40b3fd
40b3b8:	8b 47 04             	mov    0x4(%edi),%eax
40b3bb:	03 c3                	add    %ebx,%eax
40b3bd:	50                   	push   %eax
40b3be:	8b cf                	mov    %edi,%ecx
40b3c0:	e8 c0 07 00 00       	call   0x40bb85
40b3c5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b3c8:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40b3cb:	50                   	push   %eax
40b3cc:	8b 45 08             	mov    0x8(%ebp),%eax
40b3cf:	8b 00                	mov    (%eax),%eax
40b3d1:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40b3d4:	8b 4f 04             	mov    0x4(%edi),%ecx
40b3d7:	50                   	push   %eax
40b3d8:	8b 07                	mov    (%edi),%eax
40b3da:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40b3dd:	50                   	push   %eax
40b3de:	e8 9d 3a 01 00       	call   0x41ee80
40b3e3:	01 5f 04             	add    %ebx,0x4(%edi)
40b3e6:	8b 4f 04             	mov    0x4(%edi),%ecx
40b3e9:	8b 07                	mov    (%edi),%eax
40b3eb:	83 c4 0c             	add    $0xc,%esp
40b3ee:	33 d2                	xor    %edx,%edx
40b3f0:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40b3f4:	5e                   	pop    %esi
40b3f5:	8b c7                	mov    %edi,%eax
40b3f7:	5f                   	pop    %edi
40b3f8:	5b                   	pop    %ebx
40b3f9:	5d                   	pop    %ebp
40b3fa:	c2 0c 00             	ret    $0xc
40b3fd:	48                   	dec    %eax
40b3fe:	6a 04                	push   $0x4
40b400:	89 01                	mov    %eax,(%ecx)
40b402:	e8 e3 40 01 00       	call   0x41f4ea
40b407:	59                   	pop    %ecx
40b408:	85 c0                	test   %eax,%eax
40b40a:	74 4c                	je     0x40b458
40b40c:	89 30                	mov    %esi,(%eax)
40b40e:	89 47 0c             	mov    %eax,0xc(%edi)
40b411:	8b 47 04             	mov    0x4(%edi),%eax
40b414:	40                   	inc    %eax
40b415:	03 c3                	add    %ebx,%eax
40b417:	89 47 08             	mov    %eax,0x8(%edi)
40b41a:	74 40                	je     0x40b45c
40b41c:	83 c0 07             	add    $0x7,%eax
40b41f:	83 e0 f8             	and    $0xfffffff8,%eax
40b422:	33 c9                	xor    %ecx,%ecx
40b424:	6a 02                	push   $0x2
40b426:	5a                   	pop    %edx
40b427:	89 47 08             	mov    %eax,0x8(%edi)
40b42a:	f7 e2                	mul    %edx
40b42c:	0f 90 c1             	seto   %cl
40b42f:	f7 d9                	neg    %ecx
40b431:	0b c8                	or     %eax,%ecx
40b433:	51                   	push   %ecx
40b434:	e8 b1 40 01 00       	call   0x41f4ea
40b439:	8b 4f 04             	mov    0x4(%edi),%ecx
40b43c:	8b f0                	mov    %eax,%esi
40b43e:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40b445:	51                   	push   %ecx
40b446:	ff 37                	push   (%edi)
40b448:	56                   	push   %esi
40b449:	e8 32 3a 01 00       	call   0x41ee80
40b44e:	83 c4 10             	add    $0x10,%esp
40b451:	89 37                	mov    %esi,(%edi)
40b453:	e9 6d ff ff ff       	jmp    0x40b3c5
40b458:	33 c0                	xor    %eax,%eax
40b45a:	eb b2                	jmp    0x40b40e
40b45c:	6a 08                	push   $0x8
40b45e:	58                   	pop    %eax
40b45f:	eb c1                	jmp    0x40b422
40b461:	cc                   	int3
40b462:	cc                   	int3
40b463:	cc                   	int3
40b464:	cc                   	int3
40b465:	cc                   	int3
40b466:	cc                   	int3
40b467:	cc                   	int3
40b468:	cc                   	int3
40b469:	cc                   	int3
40b46a:	cc                   	int3
40b46b:	cc                   	int3
40b46c:	cc                   	int3
40b46d:	cc                   	int3
40b46e:	cc                   	int3
40b46f:	cc                   	int3
40b470:	55                   	push   %ebp
40b471:	8b ec                	mov    %esp,%ebp
40b473:	83 ec 28             	sub    $0x28,%esp
40b476:	53                   	push   %ebx
40b477:	56                   	push   %esi
40b478:	83 c8 ff             	or     $0xffffffff,%eax
40b47b:	57                   	push   %edi
40b47c:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
40b480:	33 c0                	xor    %eax,%eax
40b482:	33 ff                	xor    %edi,%edi
40b484:	6a 64                	push   $0x64
40b486:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b489:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b48c:	66 89 45 f2          	mov    %ax,-0xe(%ebp)
40b490:	e8 7a b6 ff ff       	call   0x406b0f
40b495:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b498:	e8 93 9a ff ff       	call   0x404f30
40b49d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b4a0:	66 39 3b             	cmp    %di,(%ebx)
40b4a3:	0f 84 f2 01 00 00    	je     0x40b69b
40b4a9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b4b0:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
40b4b4:	83 f8 20             	cmp    $0x20,%eax
40b4b7:	0f 84 91 00 00 00    	je     0x40b54e
40b4bd:	83 f8 09             	cmp    $0x9,%eax
40b4c0:	0f 84 88 00 00 00    	je     0x40b54e
40b4c6:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
40b4ca:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b4cd:	66 85 c0             	test   %ax,%ax
40b4d0:	0f 84 c5 01 00 00    	je     0x40b69b
40b4d6:	8b f0                	mov    %eax,%esi
40b4d8:	66 89 7d f2          	mov    %di,-0xe(%ebp)
40b4dc:	83 fe 30             	cmp    $0x30,%esi
40b4df:	73 73                	jae    0x40b554
40b4e1:	83 fe 2e             	cmp    $0x2e,%esi
40b4e4:	74 73                	je     0x40b559
40b4e6:	83 fe 41             	cmp    $0x41,%esi
40b4e9:	0f 83 c6 00 00 00    	jae    0x40b5b5
40b4ef:	83 fe 61             	cmp    $0x61,%esi
40b4f2:	0f 83 da 01 00 00    	jae    0x40b6d2
40b4f8:	83 fe 5f             	cmp    $0x5f,%esi
40b4fb:	0f 84 da 01 00 00    	je     0x40b6db
40b501:	8b c6                	mov    %esi,%eax
40b503:	83 f8 24             	cmp    $0x24,%eax
40b506:	0f 84 b7 00 00 00    	je     0x40b5c3
40b50c:	83 f8 3d             	cmp    $0x3d,%eax
40b50f:	0f 84 02 02 00 00    	je     0x40b717
40b515:	83 e8 1a             	sub    $0x1a,%eax
40b518:	83 f8 44             	cmp    $0x44,%eax
40b51b:	0f 87 5a 84 06 00    	ja     0x47397b
40b521:	0f b6 80 40 ba 40 00 	movzbl 0x40ba40(%eax),%eax
40b528:	ff 24 85 f4 b9 40 00 	jmp    *0x40b9f4(,%eax,4)
40b52f:	6a 4f                	push   $0x4f
40b531:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b534:	e8 c3 06 00 00       	call   0x40bbfc
40b539:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b53c:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b53f:	50                   	push   %eax
40b540:	e8 40 05 00 00       	call   0x40ba85
40b545:	47                   	inc    %edi
40b546:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b549:	e9 42 01 00 00       	jmp    0x40b690
40b54e:	47                   	inc    %edi
40b54f:	e9 5c ff ff ff       	jmp    0x40b4b0
40b554:	83 fe 39             	cmp    $0x39,%esi
40b557:	77 88                	ja     0x40b4e1
40b559:	8b 7d 10             	mov    0x10(%ebp),%edi
40b55c:	b8 40 00 00 00       	mov    $0x40,%eax
40b561:	8b 4f 08             	mov    0x8(%edi),%ecx
40b564:	89 45 0c             	mov    %eax,0xc(%ebp)
40b567:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40b56a:	85 c9                	test   %ecx,%ecx
40b56c:	74 0e                	je     0x40b57c
40b56e:	8b 47 04             	mov    0x4(%edi),%eax
40b571:	8b 44 88 fc          	mov    -0x4(%eax,%ecx,4),%eax
40b575:	0f b7 40 08          	movzwl 0x8(%eax),%eax
40b579:	89 45 0c             	mov    %eax,0xc(%ebp)
40b57c:	50                   	push   %eax
40b57d:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b580:	50                   	push   %eax
40b581:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b584:	50                   	push   %eax
40b585:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b588:	50                   	push   %eax
40b589:	53                   	push   %ebx
40b58a:	e8 84 0e 00 00       	call   0x40c413
40b58f:	3c 01                	cmp    $0x1,%al
40b591:	0f 85 c9 03 00 00    	jne    0x40b960
40b597:	66 83 7d 0c 4a       	cmpw   $0x4a,0xc(%ebp)
40b59c:	0f 84 5a 03 00 00    	je     0x40b8fc
40b5a2:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b5a5:	50                   	push   %eax
40b5a6:	8b cf                	mov    %edi,%ecx
40b5a8:	e8 d8 04 00 00       	call   0x40ba85