5c6345:	2b c8                	sub    %eax,%ecx
5c6347:	c1 f9 02             	sar    $0x2,%ecx
5c634a:	85 c9                	test   %ecx,%ecx
5c634c:	74 27                	je     0x5c6375
5c634e:	c1 e1 02             	shl    $0x2,%ecx
5c6351:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
5c6357:	72 12                	jb     0x5c636b
5c6359:	8b 50 fc             	mov    -0x4(%eax),%edx
5c635c:	83 c1 23             	add    $0x23,%ecx
5c635f:	2b c2                	sub    %edx,%eax
5c6361:	83 c0 fc             	add    $0xfffffffc,%eax
5c6364:	83 f8 1f             	cmp    $0x1f,%eax
5c6367:	77 4a                	ja     0x5c63b3
5c6369:	8b c2                	mov    %edx,%eax
5c636b:	51                   	push   %ecx
5c636c:	50                   	push   %eax
5c636d:	e8 e3 ae 00 00       	call   0x5d1255
5c6372:	83 c4 08             	add    $0x8,%esp
5c6375:	8d 0c 37             	lea    (%edi,%esi,1),%ecx
5c6378:	89 33                	mov    %esi,(%ebx)
5c637a:	89 4b 04             	mov    %ecx,0x4(%ebx)
5c637d:	89 4b 08             	mov    %ecx,0x8(%ebx)
5c6380:	3b f1                	cmp    %ecx,%esi
5c6382:	74 28                	je     0x5c63ac
5c6384:	8b 45 0c             	mov    0xc(%ebp),%eax
5c6387:	89 06                	mov    %eax,(%esi)
5c6389:	83 c6 04             	add    $0x4,%esi
5c638c:	3b f1                	cmp    %ecx,%esi
5c638e:	75 f4                	jne    0x5c6384
5c6390:	5f                   	pop    %edi
5c6391:	5e                   	pop    %esi
5c6392:	5b                   	pop    %ebx
5c6393:	5d                   	pop    %ebp
5c6394:	c2 08 00             	ret    $0x8
5c6397:	3b d6                	cmp    %esi,%edx
5c6399:	74 11                	je     0x5c63ac
5c639b:	eb 03                	jmp    0x5c63a0
5c639d:	8d 49 00             	lea    0x0(%ecx),%ecx
5c63a0:	8b 45 0c             	mov    0xc(%ebp),%eax
5c63a3:	89 02                	mov    %eax,(%edx)
5c63a5:	83 c2 04             	add    $0x4,%edx
5c63a8:	3b d6                	cmp    %esi,%edx
5c63aa:	75 f4                	jne    0x5c63a0
5c63ac:	5f                   	pop    %edi
5c63ad:	5e                   	pop    %esi
5c63ae:	5b                   	pop    %ebx
5c63af:	5d                   	pop    %ebp
5c63b0:	c2 08 00             	ret    $0x8
5c63b3:	e8 38 fe 00 00       	call   0x5d61f0
5c63b8:	e8 33 12 e8 ff       	call   0x4475f0
5c63bd:	cc                   	int3
5c63be:	cc                   	int3
5c63bf:	cc                   	int3
5c63c0:	55                   	push   %ebp
5c63c1:	8b ec                	mov    %esp,%ebp
5c63c3:	56                   	push   %esi
5c63c4:	57                   	push   %edi
5c63c5:	8b f9                	mov    %ecx,%edi
5c63c7:	8b 37                	mov    (%edi),%esi
5c63c9:	85 f6                	test   %esi,%esi
5c63cb:	74 40                	je     0x5c640d
5c63cd:	8b 4f 08             	mov    0x8(%edi),%ecx
5c63d0:	b8 67 66 66 66       	mov    $0x66666667,%eax
5c63d5:	2b ce                	sub    %esi,%ecx
5c63d7:	f7 e9                	imul   %ecx
5c63d9:	c1 fa 03             	sar    $0x3,%edx
5c63dc:	8b c2                	mov    %edx,%eax
5c63de:	c1 e8 1f             	shr    $0x1f,%eax
5c63e1:	03 c2                	add    %edx,%eax
5c63e3:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
5c63e6:	c1 e1 02             	shl    $0x2,%ecx
5c63e9:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
5c63ef:	72 12                	jb     0x5c6403
5c63f1:	8b 56 fc             	mov    -0x4(%esi),%edx
5c63f4:	83 c1 23             	add    $0x23,%ecx
5c63f7:	2b f2                	sub    %edx,%esi
5c63f9:	8d 46 fc             	lea    -0x4(%esi),%eax
5c63fc:	83 f8 1f             	cmp    $0x1f,%eax
5c63ff:	77 2f                	ja     0x5c6430
5c6401:	8b f2                	mov    %edx,%esi
5c6403:	51                   	push   %ecx
5c6404:	56                   	push   %esi
5c6405:	e8 4b ae 00 00       	call   0x5d1255
5c640a:	83 c4 08             	add    $0x8,%esp
5c640d:	8b 4d 08             	mov    0x8(%ebp),%ecx
5c6410:	8b 45 0c             	mov    0xc(%ebp),%eax
5c6413:	89 0f                	mov    %ecx,(%edi)
5c6415:	8d 04 80             	lea    (%eax,%eax,4),%eax
5c6418:	8d 04 81             	lea    (%ecx,%eax,4),%eax
5c641b:	89 47 04             	mov    %eax,0x4(%edi)
5c641e:	8b 45 10             	mov    0x10(%ebp),%eax
5c6421:	8d 04 80             	lea    (%eax,%eax,4),%eax
5c6424:	8d 04 81             	lea    (%ecx,%eax,4),%eax
5c6427:	89 47 08             	mov    %eax,0x8(%edi)
5c642a:	5f                   	pop    %edi
5c642b:	5e                   	pop    %esi
5c642c:	5d                   	pop    %ebp
5c642d:	c2 0c 00             	ret    $0xc
5c6430:	e8 bb fd 00 00       	call   0x5d61f0
5c6435:	cc                   	int3
5c6436:	cc                   	int3
5c6437:	cc                   	int3
5c6438:	cc                   	int3
5c6439:	cc                   	int3
5c643a:	cc                   	int3
5c643b:	cc                   	int3
5c643c:	cc                   	int3
5c643d:	cc                   	int3
5c643e:	cc                   	int3
5c643f:	cc                   	int3
5c6440:	55                   	push   %ebp
5c6441:	8b ec                	mov    %esp,%ebp
5c6443:	8b 45 08             	mov    0x8(%ebp),%eax
5c6446:	db 45 08             	fildl  0x8(%ebp)
5c6449:	56                   	push   %esi
5c644a:	8b 71 1c             	mov    0x1c(%ecx),%esi
5c644d:	85 c0                	test   %eax,%eax
5c644f:	79 06                	jns    0x5c6457
5c6451:	d8 05 00 5e 60 00    	fadds  0x605e00
5c6457:	d9 5d 08             	fstps  0x8(%ebp)
5c645a:	d9 45 08             	flds   0x8(%ebp)
5c645d:	83 ec 08             	sub    $0x8,%esp
5c6460:	d8 31                	fdivs  (%ecx)
5c6462:	d9 5d 08             	fstps  0x8(%ebp)
5c6465:	d9 45 08             	flds   0x8(%ebp)
5c6468:	dd 1c 24             	fstpl  (%esp)
5c646b:	e8 60 00 01 00       	call   0x5d64d0
5c6470:	d9 5d 08             	fstps  0x8(%ebp)
5c6473:	d9 45 08             	flds   0x8(%ebp)
5c6476:	83 c4 08             	add    $0x8,%esp
5c6479:	e8 a2 b1 00 00       	call   0x5d1620
5c647e:	b9 08 00 00 00       	mov    $0x8,%ecx
5c6483:	3b c1                	cmp    %ecx,%eax
5c6485:	0f 47 c8             	cmova  %eax,%ecx
5c6488:	3b f1                	cmp    %ecx,%esi
5c648a:	72 07                	jb     0x5c6493
5c648c:	8b c6                	mov    %esi,%eax
5c648e:	5e                   	pop    %esi
5c648f:	5d                   	pop    %ebp
5c6490:	c2 04 00             	ret    $0x4
5c6493:	81 fe 00 02 00 00    	cmp    $0x200,%esi
5c6499:	73 0c                	jae    0x5c64a7
5c649b:	8d 04 f5 00 00 00 00 	lea    0x0(,%esi,8),%eax
5c64a2:	3b c1                	cmp    %ecx,%eax
5c64a4:	0f 43 c8             	cmovae %eax,%ecx
5c64a7:	8b c1                	mov    %ecx,%eax
5c64a9:	5e                   	pop    %esi
5c64aa:	5d                   	pop    %ebp
5c64ab:	c2 04 00             	ret    $0x4
5c64ae:	cc                   	int3
5c64af:	cc                   	int3
5c64b0:	55                   	push   %ebp
5c64b1:	8b ec                	mov    %esp,%ebp
5c64b3:	6a ff                	push   $0xffffffff
5c64b5:	68 7d 07 60 00       	push   $0x60077d
5c64ba:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
5c64c0:	50                   	push   %eax
5c64c1:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
5c64c8:	83 ec 10             	sub    $0x10,%esp
5c64cb:	53                   	push   %ebx
5c64cc:	8b d9                	mov    %ecx,%ebx
5c64ce:	b8 ff ff ff 1f       	mov    $0x1fffffff,%eax
5c64d3:	0f bd c8             	bsr    %eax,%ecx
5c64d6:	56                   	push   %esi
5c64d7:	57                   	push   %edi
5c64d8:	bf 01 00 00 00       	mov    $0x1,%edi
5c64dd:	89 5d f0             	mov    %ebx,-0x10(%ebp)
5c64e0:	8b c7                	mov    %edi,%eax
5c64e2:	d3 e0                	shl    %cl,%eax
5c64e4:	8b 4d 08             	mov    0x8(%ebp),%ecx
5c64e7:	3b c8                	cmp    %eax,%ecx
5c64e9:	0f 87 52 01 00 00    	ja     0x5c6641
5c64ef:	8d 41 ff             	lea    -0x1(%ecx),%eax
5c64f2:	8b 73 04             	mov    0x4(%ebx),%esi
5c64f5:	0b c7                	or     %edi,%eax
5c64f7:	89 75 08             	mov    %esi,0x8(%ebp)
5c64fa:	0f bd c8             	bsr    %eax,%ecx
5c64fd:	56                   	push   %esi
5c64fe:	8d 49 01             	lea    0x1(%ecx),%ecx
5c6501:	d3 e7                	shl    %cl,%edi
5c6503:	8d 4b 0c             	lea    0xc(%ebx),%ecx
5c6506:	8d 04 3f             	lea    (%edi,%edi,1),%eax
5c6509:	50                   	push   %eax
5c650a:	e8 c1 fd ff ff       	call   0x5c62d0
5c650f:	8d 47 ff             	lea    -0x1(%edi),%eax
5c6512:	89 7b 1c             	mov    %edi,0x1c(%ebx)
5c6515:	89 43 18             	mov    %eax,0x18(%ebx)
5c6518:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
5c651b:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
5c6522:	8b 43 04             	mov    0x4(%ebx),%eax
5c6525:	8b 00                	mov    (%eax),%eax
5c6527:	8b c8                	mov    %eax,%ecx
5c6529:	3b c6                	cmp    %esi,%eax
5c652b:	0f 84 cb 00 00 00    	je     0x5c65fc
5c6531:	0f b6 50 08          	movzbl 0x8(%eax),%edx
5c6535:	81 f2 c5 9d 1c 81    	xor    $0x811c9dc5,%edx
5c653b:	8b 09                	mov    (%ecx),%ecx
5c653d:	69 fa 93 01 00 01    	imul   $0x1000193,%edx,%edi
5c6543:	0f b6 50 09          	movzbl 0x9(%eax),%edx
5c6547:	33 fa                	xor    %edx,%edi
5c6549:	0f b6 50 0a          	movzbl 0xa(%eax),%edx
5c654d:	69 ff 93 01 00 01    	imul   $0x1000193,%edi,%edi
5c6553:	33 fa                	xor    %edx,%edi
5c6555:	0f b6 50 0b          	movzbl 0xb(%eax),%edx
5c6559:	69 ff 93 01 00 01    	imul   $0x1000193,%edi,%edi
5c655f:	33 fa                	xor    %edx,%edi
5c6561:	69 d7 93 01 00 01    	imul   $0x1000193,%edi,%edx
5c6567:	8b 7b 18             	mov    0x18(%ebx),%edi
5c656a:	23 fa                	and    %edx,%edi
5c656c:	8b 53 0c             	mov    0xc(%ebx),%edx
5c656f:	8d 14 fa             	lea    (%edx,%edi,8),%edx
5c6572:	8b 3a                	mov    (%edx),%edi
5c6574:	89 55 ec             	mov    %edx,-0x14(%ebp)
5c6577:	3b fe                	cmp    %esi,%edi
5c6579:	75 07                	jne    0x5c6582
5c657b:	89 02                	mov    %eax,(%edx)
5c657d:	89 42 04             	mov    %eax,0x4(%edx)
5c6580:	eb 70                	jmp    0x5c65f2
5c6582:	8b 52 04             	mov    0x4(%edx),%edx
5c6585:	8b 58 08             	mov    0x8(%eax),%ebx
5c6588:	3b 5a 08             	cmp    0x8(%edx),%ebx
5c658b:	75 2f                	jne    0x5c65bc
5c658d:	8b 12                	mov    (%edx),%edx
5c658f:	89 55 e8             	mov    %edx,-0x18(%ebp)
5c6592:	3b d0                	cmp    %eax,%edx
5c6594:	74 1e                	je     0x5c65b4
5c6596:	8b 58 04             	mov    0x4(%eax),%ebx
5c6599:	8b 75 e8             	mov    -0x18(%ebp),%esi
5c659c:	89 0b                	mov    %ecx,(%ebx)
5c659e:	8b 79 04             	mov    0x4(%ecx),%edi
5c65a1:	89 17                	mov    %edx,(%edi)
5c65a3:	8b 52 04             	mov    0x4(%edx),%edx
5c65a6:	89 02                	mov    %eax,(%edx)
5c65a8:	89 7e 04             	mov    %edi,0x4(%esi)
5c65ab:	8b 75 08             	mov    0x8(%ebp),%esi
5c65ae:	89 59 04             	mov    %ebx,0x4(%ecx)
5c65b1:	89 50 04             	mov    %edx,0x4(%eax)
5c65b4:	8b 55 ec             	mov    -0x14(%ebp),%edx
5c65b7:	89 42 04             	mov    %eax,0x4(%edx)
5c65ba:	eb 33                	jmp    0x5c65ef
5c65bc:	3b fa                	cmp    %edx,%edi
5c65be:	74 0c                	je     0x5c65cc
5c65c0:	8b 52 04             	mov    0x4(%edx),%edx
5c65c3:	3b 5a 08             	cmp    0x8(%edx),%ebx
5c65c6:	74 55                	je     0x5c661d
5c65c8:	3b fa                	cmp    %edx,%edi
5c65ca:	75 f4                	jne    0x5c65c0
5c65cc:	8b 58 04             	mov    0x4(%eax),%ebx
5c65cf:	89 5d e8             	mov    %ebx,-0x18(%ebp)
5c65d2:	89 0b                	mov    %ecx,(%ebx)
5c65d4:	8b 59 04             	mov    0x4(%ecx),%ebx
5c65d7:	89 13                	mov    %edx,(%ebx)
5c65d9:	8b 7a 04             	mov    0x4(%edx),%edi
5c65dc:	89 07                	mov    %eax,(%edi)
5c65de:	89 5a 04             	mov    %ebx,0x4(%edx)
5c65e1:	8b 55 e8             	mov    -0x18(%ebp),%edx
5c65e4:	89 51 04             	mov    %edx,0x4(%ecx)
5c65e7:	8b 55 ec             	mov    -0x14(%ebp),%edx
5c65ea:	89 78 04             	mov    %edi,0x4(%eax)
5c65ed:	89 02                	mov    %eax,(%edx)
5c65ef:	8b 5d f0             	mov    -0x10(%ebp),%ebx
5c65f2:	8b c1                	mov    %ecx,%eax
5c65f4:	3b ce                	cmp    %esi,%ecx
5c65f6:	0f 85 35 ff ff ff    	jne    0x5c6531
5c65fc:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
5c6603:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
5c660a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5c660d:	5f                   	pop    %edi
5c660e:	5e                   	pop    %esi
5c660f:	5b                   	pop    %ebx
5c6610:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
5c6617:	8b e5                	mov    %ebp,%esp
5c6619:	5d                   	pop    %ebp
5c661a:	c2 04 00             	ret    $0x4
5c661d:	8b 58 04             	mov    0x4(%eax),%ebx
5c6620:	8b 12                	mov    (%edx),%edx
5c6622:	89 55 e8             	mov    %edx,-0x18(%ebp)
5c6625:	8b f2                	mov    %edx,%esi
5c6627:	89 0b                	mov    %ecx,(%ebx)
5c6629:	8b 79 04             	mov    0x4(%ecx),%edi
5c662c:	89 17                	mov    %edx,(%edi)
5c662e:	8b 52 04             	mov    0x4(%edx),%edx
5c6631:	89 02                	mov    %eax,(%edx)
5c6633:	89 7e 04             	mov    %edi,0x4(%esi)
5c6636:	8b 75 08             	mov    0x8(%ebp),%esi
5c6639:	89 59 04             	mov    %ebx,0x4(%ecx)
5c663c:	89 50 04             	mov    %edx,0x4(%eax)
5c663f:	eb ae                	jmp    0x5c65ef
5c6641:	68 3c 64 60 00       	push   $0x60643c
5c6646:	e8 8b a5 00 00       	call   0x5d0bd6
5c664b:	cc                   	int3
5c664c:	cc                   	int3
5c664d:	cc                   	int3
5c664e:	cc                   	int3
5c664f:	cc                   	int3
5c6650:	55                   	push   %ebp
5c6651:	8b ec                	mov    %esp,%ebp
5c6653:	6a ff                	push   $0xffffffff
5c6655:	68 9d 07 60 00       	push   $0x60079d
5c665a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
5c6660:	50                   	push   %eax
5c6661:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
5c6668:	83 ec 10             	sub    $0x10,%esp
5c666b:	8b d1                	mov    %ecx,%edx
5c666d:	b8 ff ff ff 1f       	mov    $0x1fffffff,%eax
5c6672:	0f bd c8             	bsr    %eax,%ecx
5c6675:	56                   	push   %esi
5c6676:	be 01 00 00 00       	mov    $0x1,%esi
5c667b:	89 55 ec             	mov    %edx,-0x14(%ebp)
5c667e:	8b c6                	mov    %esi,%eax
5c6680:	d3 e0                	shl    %cl,%eax
5c6682:	8b 4d 08             	mov    0x8(%ebp),%ecx
5c6685:	57                   	push   %edi
5c6686:	3b c8                	cmp    %eax,%ecx
5c6688:	0f 87 6b 01 00 00    	ja     0x5c67f9
5c668e:	8d 41 ff             	lea    -0x1(%ecx),%eax
5c6691:	0b c6                	or     %esi,%eax
5c6693:	0f bd c8             	bsr    %eax,%ecx
5c6696:	8b 42 04             	mov    0x4(%edx),%eax
5c6699:	50                   	push   %eax
5c669a:	89 45 08             	mov    %eax,0x8(%ebp)
5c669d:	8d 49 01             	lea    0x1(%ecx),%ecx
5c66a0:	d3 e6                	shl    %cl,%esi
5c66a2:	8d 4a 0c             	lea    0xc(%edx),%ecx
5c66a5:	8d 04 36             	lea    (%esi,%esi,1),%eax
5c66a8:	50                   	push   %eax
5c66a9:	e8 22 fc ff ff       	call   0x5c62d0
5c66ae:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5c66b1:	8d 46 ff             	lea    -0x1(%esi),%eax
5c66b4:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5c66b7:	89 41 18             	mov    %eax,0x18(%ecx)
5c66ba:	89 71 1c             	mov    %esi,0x1c(%ecx)
5c66bd:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
5c66c4:	8b 71 04             	mov    0x4(%ecx),%esi
5c66c7:	8b 36                	mov    (%esi),%esi
5c66c9:	8b fe                	mov    %esi,%edi
5c66cb:	3b 75 08             	cmp    0x8(%ebp),%esi
5c66ce:	0f 84 e1 00 00 00    	je     0x5c67b5
5c66d4:	53                   	push   %ebx
5c66d5:	8b 3f                	mov    (%edi),%edi
5c66d7:	8d 5e 08             	lea    0x8(%esi),%ebx
5c66da:	53                   	push   %ebx
5c66db:	e8 90 9f ff ff       	call   0x5c0670
5c66e0:	8b 55 ec             	mov    -0x14(%ebp),%edx
5c66e3:	23 42 18             	and    0x18(%edx),%eax
5c66e6:	8b 4a 0c             	mov    0xc(%edx),%ecx
5c66e9:	8b 14 c1             	mov    (%ecx,%eax,8),%edx
5c66ec:	8d 0c c1             	lea    (%ecx,%eax,8),%ecx
5c66ef:	8b 01                	mov    (%ecx),%eax
5c66f1:	89 45 f0             	mov    %eax,-0x10(%ebp)