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
40b492:	6a 01                	push   $0x1
40b494:	6a 00                	push   $0x0
40b496:	6a 00                	push   $0x0
40b498:	50                   	push   %eax
40b499:	e8 12 f1 00 00       	call   0x41a5b0
40b49e:	33 c9                	xor    %ecx,%ecx
40b4a0:	03 c6                	add    %esi,%eax
40b4a2:	13 d1                	adc    %ecx,%edx
40b4a4:	5e                   	pop    %esi
40b4a5:	c3                   	ret
40b4a6:	51                   	push   %ecx
40b4a7:	51                   	push   %ecx
40b4a8:	53                   	push   %ebx
40b4a9:	55                   	push   %ebp
40b4aa:	56                   	push   %esi
40b4ab:	8b f1                	mov    %ecx,%esi
40b4ad:	8b 46 18             	mov    0x18(%esi),%eax
40b4b0:	33 ed                	xor    %ebp,%ebp
40b4b2:	57                   	push   %edi
40b4b3:	89 6c 24 10          	mov    %ebp,0x10(%esp)
40b4b7:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40b4bb:	3b 46 14             	cmp    0x14(%esi),%eax
40b4be:	73 34                	jae    0x40b4f4
40b4c0:	8b 3e                	mov    (%esi),%edi
40b4c2:	8b 46 18             	mov    0x18(%esi),%eax
40b4c5:	8d 48 01             	lea    0x1(%eax),%ecx
40b4c8:	89 4e 18             	mov    %ecx,0x18(%esi)
40b4cb:	8a 1c 07             	mov    (%edi,%eax,1),%bl
40b4ce:	8a c3                	mov    %bl,%al
40b4d0:	24 7f                	and    $0x7f,%al
40b4d2:	0f b6 c0             	movzbl %al,%eax
40b4d5:	99                   	cltd
40b4d6:	8b cd                	mov    %ebp,%ecx
40b4d8:	e8 13 14 01 00       	call   0x41c8f0
40b4dd:	01 44 24 10          	add    %eax,0x10(%esp)
40b4e1:	11 54 24 14          	adc    %edx,0x14(%esp)
40b4e5:	84 db                	test   %bl,%bl
40b4e7:	79 16                	jns    0x40b4ff
40b4e9:	8b 46 18             	mov    0x18(%esi),%eax
40b4ec:	83 c5 07             	add    $0x7,%ebp
40b4ef:	3b 46 14             	cmp    0x14(%esi),%eax
40b4f2:	72 ce                	jb     0x40b4c2
40b4f4:	33 c0                	xor    %eax,%eax
40b4f6:	33 d2                	xor    %edx,%edx
40b4f8:	5f                   	pop    %edi
40b4f9:	5e                   	pop    %esi
40b4fa:	5d                   	pop    %ebp
40b4fb:	5b                   	pop    %ebx
40b4fc:	59                   	pop    %ecx
40b4fd:	59                   	pop    %ecx
40b4fe:	c3                   	ret
40b4ff:	8b 44 24 10          	mov    0x10(%esp),%eax
40b503:	8b 54 24 14          	mov    0x14(%esp),%edx
40b507:	eb ef                	jmp    0x40b4f8
40b509:	8b 51 14             	mov    0x14(%ecx),%edx
40b50c:	56                   	push   %esi
40b50d:	8b 74 24 08          	mov    0x8(%esp),%esi
40b511:	8b c6                	mov    %esi,%eax
40b513:	3b f2                	cmp    %edx,%esi
40b515:	73 0d                	jae    0x40b524
40b517:	8b 09                	mov    (%ecx),%ecx
40b519:	f6 04 01 80          	testb  $0x80,(%ecx,%eax,1)
40b51d:	74 0b                	je     0x40b52a
40b51f:	40                   	inc    %eax
40b520:	3b c2                	cmp    %edx,%eax
40b522:	72 f5                	jb     0x40b519
40b524:	33 c0                	xor    %eax,%eax
40b526:	5e                   	pop    %esi
40b527:	c2 04 00             	ret    $0x4
40b52a:	2b c6                	sub    %esi,%eax
40b52c:	40                   	inc    %eax
40b52d:	eb f7                	jmp    0x40b526
40b52f:	53                   	push   %ebx
40b530:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40b534:	56                   	push   %esi
40b535:	8b f1                	mov    %ecx,%esi
40b537:	8b 46 18             	mov    0x18(%esi),%eax
40b53a:	57                   	push   %edi
40b53b:	8b 7e 14             	mov    0x14(%esi),%edi
40b53e:	2b f8                	sub    %eax,%edi
40b540:	3b fb                	cmp    %ebx,%edi
40b542:	72 02                	jb     0x40b546
40b544:	8b fb                	mov    %ebx,%edi
40b546:	85 ff                	test   %edi,%edi
40b548:	76 12                	jbe    0x40b55c
40b54a:	8b 0e                	mov    (%esi),%ecx
40b54c:	57                   	push   %edi
40b54d:	03 c8                	add    %eax,%ecx
40b54f:	51                   	push   %ecx
40b550:	ff 74 24 18          	push   0x18(%esp)
40b554:	e8 17 07 01 00       	call   0x41bc70
40b559:	83 c4 0c             	add    $0xc,%esp
40b55c:	3b df                	cmp    %edi,%ebx
40b55e:	76 14                	jbe    0x40b574
40b560:	8b 44 24 10          	mov    0x10(%esp),%eax
40b564:	2b df                	sub    %edi,%ebx
40b566:	53                   	push   %ebx
40b567:	03 c7                	add    %edi,%eax
40b569:	6a 00                	push   $0x0
40b56b:	50                   	push   %eax
40b56c:	e8 8f ec 00 00       	call   0x41a200
40b571:	83 c4 0c             	add    $0xc,%esp
40b574:	01 7e 18             	add    %edi,0x18(%esi)
40b577:	8b c7                	mov    %edi,%eax
40b579:	5f                   	pop    %edi
40b57a:	5e                   	pop    %esi
40b57b:	5b                   	pop    %ebx
40b57c:	c2 08 00             	ret    $0x8
40b57f:	8b 51 14             	mov    0x14(%ecx),%edx
40b582:	83 fa 02             	cmp    $0x2,%edx
40b585:	77 04                	ja     0x40b58b
40b587:	33 c0                	xor    %eax,%eax
40b589:	eb 21                	jmp    0x40b5ac
40b58b:	80 7c 24 04 00       	cmpb   $0x0,0x4(%esp)
40b590:	74 03                	je     0x40b595
40b592:	8b 51 18             	mov    0x18(%ecx),%edx
40b595:	8b 01                	mov    (%ecx),%eax
40b597:	40                   	inc    %eax
40b598:	83 c2 fe             	add    $0xfffffffe,%edx
40b59b:	52                   	push   %edx
40b59c:	40                   	inc    %eax
40b59d:	50                   	push   %eax
40b59e:	6a ff                	push   $0xffffffff
40b5a0:	e8 d8 a1 ff ff       	call   0x40577d
40b5a5:	f7 d0                	not    %eax
40b5a7:	25 ff ff 00 00       	and    $0xffff,%eax
40b5ac:	c2 04 00             	ret    $0x4
40b5af:	8b 51 14             	mov    0x14(%ecx),%edx
40b5b2:	83 fa 04             	cmp    $0x4,%edx
40b5b5:	77 04                	ja     0x40b5bb
40b5b7:	83 c8 ff             	or     $0xffffffff,%eax
40b5ba:	c3                   	ret
40b5bb:	8b 01                	mov    (%ecx),%eax
40b5bd:	83 c2 fc             	add    $0xfffffffc,%edx
40b5c0:	52                   	push   %edx
40b5c1:	83 c0 04             	add    $0x4,%eax
40b5c4:	50                   	push   %eax
40b5c5:	6a ff                	push   $0xffffffff
40b5c7:	e8 b1 a1 ff ff       	call   0x40577d
40b5cc:	f7 d0                	not    %eax
40b5ce:	c3                   	ret
40b5cf:	8b 54 24 04          	mov    0x4(%esp),%edx
40b5d3:	8b c1                	mov    %ecx,%eax
40b5d5:	33 c9                	xor    %ecx,%ecx
40b5d7:	89 08                	mov    %ecx,(%eax)
40b5d9:	89 48 08             	mov    %ecx,0x8(%eax)
40b5dc:	89 48 0c             	mov    %ecx,0xc(%eax)
40b5df:	89 50 10             	mov    %edx,0x10(%eax)
40b5e2:	89 48 04             	mov    %ecx,0x4(%eax)
40b5e5:	89 48 18             	mov    %ecx,0x18(%eax)
40b5e8:	89 48 14             	mov    %ecx,0x14(%eax)
40b5eb:	89 48 1c             	mov    %ecx,0x1c(%eax)
40b5ee:	c2 04 00             	ret    $0x4
40b5f1:	83 89 58 18 00 00 ff 	orl    $0xffffffff,0x1858(%ecx)
40b5f8:	33 c0                	xor    %eax,%eax
40b5fa:	33 d2                	xor    %edx,%edx
40b5fc:	88 01                	mov    %al,(%ecx)
40b5fe:	88 41 0c             	mov    %al,0xc(%ecx)
40b601:	89 41 20             	mov    %eax,0x20(%ecx)
40b604:	89 41 24             	mov    %eax,0x24(%ecx)
40b607:	c6 41 28 01          	movb   $0x1,0x28(%ecx)
40b60b:	88 41 29             	mov    %al,0x29(%ecx)
40b60e:	88 41 2a             	mov    %al,0x2a(%ecx)
40b611:	88 81 5e 18 00 00    	mov    %al,0x185e(%ecx)
40b617:	88 81 5f 18 00 00    	mov    %al,0x185f(%ecx)
40b61d:	88 81 60 18 00 00    	mov    %al,0x1860(%ecx)
40b623:	89 41 2c             	mov    %eax,0x2c(%ecx)
40b626:	89 41 30             	mov    %eax,0x30(%ecx)
40b629:	89 41 18             	mov    %eax,0x18(%ecx)
40b62c:	89 41 34             	mov    %eax,0x34(%ecx)
40b62f:	88 81 cc 3a 00 00    	mov    %al,0x3acc(%ecx)
40b635:	88 81 cd 3a 00 00    	mov    %al,0x3acd(%ecx)
40b63b:	89 81 88 18 00 00    	mov    %eax,0x1888(%ecx)
40b641:	89 81 8c 18 00 00    	mov    %eax,0x188c(%ecx)
40b647:	89 81 80 18 00 00    	mov    %eax,0x1880(%ecx)