406205:	55                   	push   %ebp
406206:	8b ec                	mov    %esp,%ebp
406208:	83 ec 0c             	sub    $0xc,%esp
40620b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40620e:	8b 41 10             	mov    0x10(%ecx),%eax
406211:	53                   	push   %ebx
406212:	56                   	push   %esi
406213:	8b 75 10             	mov    0x10(%ebp),%esi
406216:	57                   	push   %edi
406217:	8b 7d 0c             	mov    0xc(%ebp),%edi
40621a:	8b d7                	mov    %edi,%edx
40621c:	2b 51 0c             	sub    0xc(%ecx),%edx
40621f:	83 c6 17             	add    $0x17,%esi
406222:	c1 ea 0f             	shr    $0xf,%edx
406225:	8b ca                	mov    %edx,%ecx
406227:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40622d:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
406234:	89 4d f4             	mov    %ecx,-0xc(%ebp)
406237:	8b 4f fc             	mov    -0x4(%edi),%ecx
40623a:	83 e6 f0             	and    $0xfffffff0,%esi
40623d:	49                   	dec    %ecx
40623e:	3b f1                	cmp    %ecx,%esi
406240:	8d 7c 39 fc          	lea    -0x4(%ecx,%edi,1),%edi
406244:	8b 1f                	mov    (%edi),%ebx
406246:	89 4d 10             	mov    %ecx,0x10(%ebp)
406249:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40624c:	0f 8e 55 01 00 00    	jle    0x4063a7
406252:	f6 c3 01             	test   $0x1,%bl
406255:	0f 85 45 01 00 00    	jne    0x4063a0
40625b:	03 d9                	add    %ecx,%ebx
40625d:	3b f3                	cmp    %ebx,%esi
40625f:	0f 8f 3b 01 00 00    	jg     0x4063a0
406265:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406268:	c1 f9 04             	sar    $0x4,%ecx
40626b:	49                   	dec    %ecx
40626c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40626f:	83 f9 3f             	cmp    $0x3f,%ecx
406272:	76 06                	jbe    0x40627a
406274:	6a 3f                	push   $0x3f
406276:	59                   	pop    %ecx
406277:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40627a:	8b 5f 04             	mov    0x4(%edi),%ebx
40627d:	3b 5f 08             	cmp    0x8(%edi),%ebx
406280:	75 43                	jne    0x4062c5
406282:	bb 00 00 00 80       	mov    $0x80000000,%ebx
406287:	83 f9 20             	cmp    $0x20,%ecx
40628a:	73 1a                	jae    0x4062a6
40628c:	d3 eb                	shr    %cl,%ebx
40628e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406291:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
406295:	f7 d3                	not    %ebx
406297:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40629b:	fe 09                	decb   (%ecx)
40629d:	75 26                	jne    0x4062c5
40629f:	8b 4d 08             	mov    0x8(%ebp),%ecx
4062a2:	21 19                	and    %ebx,(%ecx)
4062a4:	eb 1f                	jmp    0x4062c5
4062a6:	83 c1 e0             	add    $0xffffffe0,%ecx
4062a9:	d3 eb                	shr    %cl,%ebx
4062ab:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4062ae:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
4062b2:	f7 d3                	not    %ebx
4062b4:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
4062bb:	fe 09                	decb   (%ecx)
4062bd:	75 06                	jne    0x4062c5
4062bf:	8b 4d 08             	mov    0x8(%ebp),%ecx
4062c2:	21 59 04             	and    %ebx,0x4(%ecx)
4062c5:	8b 4f 08             	mov    0x8(%edi),%ecx
4062c8:	8b 5f 04             	mov    0x4(%edi),%ebx
4062cb:	89 59 04             	mov    %ebx,0x4(%ecx)
4062ce:	8b 4f 04             	mov    0x4(%edi),%ecx
4062d1:	8b 7f 08             	mov    0x8(%edi),%edi
4062d4:	89 79 08             	mov    %edi,0x8(%ecx)
4062d7:	8b 4d 10             	mov    0x10(%ebp),%ecx
4062da:	2b ce                	sub    %esi,%ecx
4062dc:	01 4d fc             	add    %ecx,-0x4(%ebp)
4062df:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4062e3:	0f 8e a5 00 00 00    	jle    0x40638e
4062e9:	8b 7d fc             	mov    -0x4(%ebp),%edi
4062ec:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4062ef:	c1 ff 04             	sar    $0x4,%edi
4062f2:	4f                   	dec    %edi
4062f3:	8d 4c 31 fc          	lea    -0x4(%ecx,%esi,1),%ecx
4062f7:	83 ff 3f             	cmp    $0x3f,%edi
4062fa:	76 03                	jbe    0x4062ff
4062fc:	6a 3f                	push   $0x3f
4062fe:	5f                   	pop    %edi
4062ff:	8b 5d f4             	mov    -0xc(%ebp),%ebx
406302:	8d 1c fb             	lea    (%ebx,%edi,8),%ebx
406305:	89 5d 10             	mov    %ebx,0x10(%ebp)
406308:	8b 5b 04             	mov    0x4(%ebx),%ebx
40630b:	89 59 04             	mov    %ebx,0x4(%ecx)
40630e:	8b 5d 10             	mov    0x10(%ebp),%ebx
406311:	89 59 08             	mov    %ebx,0x8(%ecx)
406314:	89 4b 04             	mov    %ecx,0x4(%ebx)
406317:	8b 59 04             	mov    0x4(%ecx),%ebx
40631a:	89 4b 08             	mov    %ecx,0x8(%ebx)
40631d:	8b 59 04             	mov    0x4(%ecx),%ebx
406320:	3b 59 08             	cmp    0x8(%ecx),%ebx
406323:	75 57                	jne    0x40637c
406325:	8a 4c 07 04          	mov    0x4(%edi,%eax,1),%cl
406329:	88 4d 13             	mov    %cl,0x13(%ebp)
40632c:	fe c1                	inc    %cl
40632e:	88 4c 07 04          	mov    %cl,0x4(%edi,%eax,1)
406332:	83 ff 20             	cmp    $0x20,%edi
406335:	73 1c                	jae    0x406353
406337:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
40633b:	75 0e                	jne    0x40634b
40633d:	8b cf                	mov    %edi,%ecx
40633f:	bb 00 00 00 80       	mov    $0x80000000,%ebx
406344:	d3 eb                	shr    %cl,%ebx
406346:	8b 4d 08             	mov    0x8(%ebp),%ecx
406349:	09 19                	or     %ebx,(%ecx)
40634b:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
40634f:	8b cf                	mov    %edi,%ecx
406351:	eb 20                	jmp    0x406373
406353:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
406357:	75 10                	jne    0x406369
406359:	8d 4f e0             	lea    -0x20(%edi),%ecx
40635c:	bb 00 00 00 80       	mov    $0x80000000,%ebx
406361:	d3 eb                	shr    %cl,%ebx
406363:	8b 4d 08             	mov    0x8(%ebp),%ecx
406366:	09 59 04             	or     %ebx,0x4(%ecx)
406369:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
406370:	8d 4f e0             	lea    -0x20(%edi),%ecx
406373:	ba 00 00 00 80       	mov    $0x80000000,%edx
406378:	d3 ea                	shr    %cl,%edx
40637a:	09 10                	or     %edx,(%eax)
40637c:	8b 55 0c             	mov    0xc(%ebp),%edx
40637f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406382:	8d 44 32 fc          	lea    -0x4(%edx,%esi,1),%eax
406386:	89 08                	mov    %ecx,(%eax)
406388:	89 4c 01 fc          	mov    %ecx,-0x4(%ecx,%eax,1)
40638c:	eb 03                	jmp    0x406391
40638e:	8b 55 0c             	mov    0xc(%ebp),%edx
406391:	8d 46 01             	lea    0x1(%esi),%eax
406394:	89 42 fc             	mov    %eax,-0x4(%edx)
406397:	89 44 32 f8          	mov    %eax,-0x8(%edx,%esi,1)
40639b:	e9 3c 01 00 00       	jmp    0x4064dc
4063a0:	33 c0                	xor    %eax,%eax
4063a2:	e9 38 01 00 00       	jmp    0x4064df
4063a7:	0f 8d 2f 01 00 00    	jge    0x4064dc
4063ad:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4063b0:	29 75 10             	sub    %esi,0x10(%ebp)
4063b3:	8d 4e 01             	lea    0x1(%esi),%ecx
4063b6:	89 4b fc             	mov    %ecx,-0x4(%ebx)
4063b9:	8d 5c 33 fc          	lea    -0x4(%ebx,%esi,1),%ebx
4063bd:	8b 75 10             	mov    0x10(%ebp),%esi
4063c0:	c1 fe 04             	sar    $0x4,%esi
4063c3:	4e                   	dec    %esi
4063c4:	89 5d 0c             	mov    %ebx,0xc(%ebp)
4063c7:	89 4b fc             	mov    %ecx,-0x4(%ebx)
4063ca:	83 fe 3f             	cmp    $0x3f,%esi
4063cd:	76 03                	jbe    0x4063d2
4063cf:	6a 3f                	push   $0x3f
4063d1:	5e                   	pop    %esi
4063d2:	f6 45 fc 01          	testb  $0x1,-0x4(%ebp)
4063d6:	0f 85 80 00 00 00    	jne    0x40645c
4063dc:	8b 75 fc             	mov    -0x4(%ebp),%esi
4063df:	c1 fe 04             	sar    $0x4,%esi
4063e2:	4e                   	dec    %esi
4063e3:	83 fe 3f             	cmp    $0x3f,%esi
4063e6:	76 03                	jbe    0x4063eb
4063e8:	6a 3f                	push   $0x3f
4063ea:	5e                   	pop    %esi
4063eb:	8b 4f 04             	mov    0x4(%edi),%ecx
4063ee:	3b 4f 08             	cmp    0x8(%edi),%ecx
4063f1:	75 42                	jne    0x406435
4063f3:	bb 00 00 00 80       	mov    $0x80000000,%ebx
4063f8:	83 fe 20             	cmp    $0x20,%esi
4063fb:	73 19                	jae    0x406416
4063fd:	8b ce                	mov    %esi,%ecx
4063ff:	d3 eb                	shr    %cl,%ebx
406401:	8d 74 06 04          	lea    0x4(%esi,%eax,1),%esi
406405:	f7 d3                	not    %ebx
406407:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40640b:	fe 0e                	decb   (%esi)
40640d:	75 23                	jne    0x406432
40640f:	8b 4d 08             	mov    0x8(%ebp),%ecx
406412:	21 19                	and    %ebx,(%ecx)
406414:	eb 1c                	jmp    0x406432
406416:	8d 4e e0             	lea    -0x20(%esi),%ecx
406419:	d3 eb                	shr    %cl,%ebx
40641b:	8d 4c 06 04          	lea    0x4(%esi,%eax,1),%ecx
40641f:	f7 d3                	not    %ebx
406421:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
406428:	fe 09                	decb   (%ecx)
40642a:	75 06                	jne    0x406432
40642c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40642f:	21 59 04             	and    %ebx,0x4(%ecx)
406432:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406435:	8b 4f 08             	mov    0x8(%edi),%ecx
406438:	8b 77 04             	mov    0x4(%edi),%esi
40643b:	89 71 04             	mov    %esi,0x4(%ecx)
40643e:	8b 77 08             	mov    0x8(%edi),%esi
406441:	8b 4f 04             	mov    0x4(%edi),%ecx
406444:	89 71 08             	mov    %esi,0x8(%ecx)
406447:	8b 75 10             	mov    0x10(%ebp),%esi
40644a:	03 75 fc             	add    -0x4(%ebp),%esi
40644d:	89 75 10             	mov    %esi,0x10(%ebp)
406450:	c1 fe 04             	sar    $0x4,%esi
406453:	4e                   	dec    %esi
406454:	83 fe 3f             	cmp    $0x3f,%esi
406457:	76 03                	jbe    0x40645c
406459:	6a 3f                	push   $0x3f
40645b:	5e                   	pop    %esi
40645c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40645f:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
406462:	8b 79 04             	mov    0x4(%ecx),%edi
406465:	89 4b 08             	mov    %ecx,0x8(%ebx)
406468:	89 7b 04             	mov    %edi,0x4(%ebx)
40646b:	89 59 04             	mov    %ebx,0x4(%ecx)
40646e:	8b 4b 04             	mov    0x4(%ebx),%ecx
406471:	89 59 08             	mov    %ebx,0x8(%ecx)
406474:	8b 4b 04             	mov    0x4(%ebx),%ecx
406477:	3b 4b 08             	cmp    0x8(%ebx),%ecx
40647a:	75 57                	jne    0x4064d3
40647c:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
406480:	88 4d 0f             	mov    %cl,0xf(%ebp)
406483:	fe c1                	inc    %cl
406485:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
406489:	83 fe 20             	cmp    $0x20,%esi
40648c:	73 1c                	jae    0x4064aa
40648e:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
406492:	75 0e                	jne    0x4064a2
406494:	8b ce                	mov    %esi,%ecx
406496:	bf 00 00 00 80       	mov    $0x80000000,%edi
40649b:	d3 ef                	shr    %cl,%edi
40649d:	8b 4d 08             	mov    0x8(%ebp),%ecx
4064a0:	09 39                	or     %edi,(%ecx)
4064a2:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
4064a6:	8b ce                	mov    %esi,%ecx
4064a8:	eb 20                	jmp    0x4064ca
4064aa:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
4064ae:	75 10                	jne    0x4064c0
4064b0:	8d 4e e0             	lea    -0x20(%esi),%ecx
4064b3:	bf 00 00 00 80       	mov    $0x80000000,%edi
4064b8:	d3 ef                	shr    %cl,%edi
4064ba:	8b 4d 08             	mov    0x8(%ebp),%ecx
4064bd:	09 79 04             	or     %edi,0x4(%ecx)
4064c0:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
4064c7:	8d 4e e0             	lea    -0x20(%esi),%ecx
4064ca:	ba 00 00 00 80       	mov    $0x80000000,%edx
4064cf:	d3 ea                	shr    %cl,%edx
4064d1:	09 10                	or     %edx,(%eax)
4064d3:	8b 45 10             	mov    0x10(%ebp),%eax
4064d6:	89 03                	mov    %eax,(%ebx)
4064d8:	89 44 18 fc          	mov    %eax,-0x4(%eax,%ebx,1)
4064dc:	33 c0                	xor    %eax,%eax
4064de:	40                   	inc    %eax
4064df:	5f                   	pop    %edi
4064e0:	5e                   	pop    %esi
4064e1:	5b                   	pop    %ebx
4064e2:	c9                   	leave
4064e3:	c3                   	ret
4064e4:	8b ff                	mov    %edi,%edi
4064e6:	55                   	push   %ebp
4064e7:	8b ec                	mov    %esp,%ebp
4064e9:	83 ec 14             	sub    $0x14,%esp
4064ec:	a1 c4 0a 89 00       	mov    0x890ac4,%eax
4064f1:	8b 4d 08             	mov    0x8(%ebp),%ecx
4064f4:	6b c0 14             	imul   $0x14,%eax,%eax
4064f7:	03 05 c8 0a 89 00    	add    0x890ac8,%eax
4064fd:	83 c1 17             	add    $0x17,%ecx
406500:	83 e1 f0             	and    $0xfffffff0,%ecx
406503:	89 4d f0             	mov    %ecx,-0x10(%ebp)
406506:	c1 f9 04             	sar    $0x4,%ecx
406509:	53                   	push   %ebx
40650a:	49                   	dec    %ecx
40650b:	83 f9 20             	cmp    $0x20,%ecx
40650e:	56                   	push   %esi
40650f:	57                   	push   %edi
406510:	7d 0b                	jge    0x40651d
406512:	83 ce ff             	or     $0xffffffff,%esi
406515:	d3 ee                	shr    %cl,%esi
406517:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
40651b:	eb 0d                	jmp    0x40652a
40651d:	83 c1 e0             	add    $0xffffffe0,%ecx
406520:	83 ca ff             	or     $0xffffffff,%edx
406523:	33 f6                	xor    %esi,%esi
406525:	d3 ea                	shr    %cl,%edx
406527:	89 55 f8             	mov    %edx,-0x8(%ebp)
40652a:	8b 0d d0 0a 89 00    	mov    0x890ad0,%ecx
406530:	8b d9                	mov    %ecx,%ebx
406532:	eb 11                	jmp    0x406545
406534:	8b 53 04             	mov    0x4(%ebx),%edx
406537:	8b 3b                	mov    (%ebx),%edi
406539:	23 55 f8             	and    -0x8(%ebp),%edx
40653c:	23 fe                	and    %esi,%edi
40653e:	0b d7                	or     %edi,%edx
406540:	75 0a                	jne    0x40654c
406542:	83 c3 14             	add    $0x14,%ebx
406545:	89 5d 08             	mov    %ebx,0x8(%ebp)
406548:	3b d8                	cmp    %eax,%ebx
40654a:	72 e8                	jb     0x406534
40654c:	3b d8                	cmp    %eax,%ebx
40654e:	75 7f                	jne    0x4065cf
406550:	8b 1d c8 0a 89 00    	mov    0x890ac8,%ebx
406556:	eb 11                	jmp    0x406569
406558:	8b 53 04             	mov    0x4(%ebx),%edx
40655b:	8b 3b                	mov    (%ebx),%edi
40655d:	23 55 f8             	and    -0x8(%ebp),%edx
406560:	23 fe                	and    %esi,%edi
406562:	0b d7                	or     %edi,%edx
406564:	75 0a                	jne    0x406570
406566:	83 c3 14             	add    $0x14,%ebx
406569:	89 5d 08             	mov    %ebx,0x8(%ebp)
40656c:	3b d9                	cmp    %ecx,%ebx
40656e:	72 e8                	jb     0x406558
406570:	3b d9                	cmp    %ecx,%ebx
406572:	75 5b                	jne    0x4065cf
406574:	eb 0c                	jmp    0x406582
406576:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40657a:	75 0a                	jne    0x406586
40657c:	83 c3 14             	add    $0x14,%ebx
40657f:	89 5d 08             	mov    %ebx,0x8(%ebp)
406582:	3b d8                	cmp    %eax,%ebx
406584:	72 f0                	jb     0x406576
406586:	3b d8                	cmp    %eax,%ebx
406588:	75 31                	jne    0x4065bb
40658a:	8b 1d c8 0a 89 00    	mov    0x890ac8,%ebx
406590:	eb 09                	jmp    0x40659b
406592:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
406596:	75 0a                	jne    0x4065a2
406598:	83 c3 14             	add    $0x14,%ebx
40659b:	89 5d 08             	mov    %ebx,0x8(%ebp)
40659e:	3b d9                	cmp    %ecx,%ebx
4065a0:	72 f0                	jb     0x406592
4065a2:	3b d9                	cmp    %ecx,%ebx
4065a4:	75 15                	jne    0x4065bb
4065a6:	e8 a0 fa ff ff       	call   0x40604b
4065ab:	8b d8                	mov    %eax,%ebx
4065ad:	89 5d 08             	mov    %ebx,0x8(%ebp)
4065b0:	85 db                	test   %ebx,%ebx
4065b2:	75 07                	jne    0x4065bb
4065b4:	33 c0                	xor    %eax,%eax
4065b6:	e9 09 02 00 00       	jmp    0x4067c4
4065bb:	53                   	push   %ebx
4065bc:	e8 3a fb ff ff       	call   0x4060fb
4065c1:	59                   	pop    %ecx
4065c2:	8b 4b 10             	mov    0x10(%ebx),%ecx
4065c5:	89 01                	mov    %eax,(%ecx)
4065c7:	8b 43 10             	mov    0x10(%ebx),%eax
4065ca:	83 38 ff             	cmpl   $0xffffffff,(%eax)
4065cd:	74 e5                	je     0x4065b4
4065cf:	89 1d d0 0a 89 00    	mov    %ebx,0x890ad0
4065d5:	8b 43 10             	mov    0x10(%ebx),%eax
4065d8:	8b 10                	mov    (%eax),%edx
4065da:	89 55 fc             	mov    %edx,-0x4(%ebp)
4065dd:	83 fa ff             	cmp    $0xffffffff,%edx