465442:	83 65 f0 1f          	andl   $0x1f,-0x10(%ebp)
465446:	b8 01 00 00 00       	mov    $0x1,%eax
46544b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
465450:	3b fb                	cmp    %ebx,%edi
465452:	75 05                	jne    0x465459
465454:	3b 4d f0             	cmp    -0x10(%ebp),%ecx
465457:	74 33                	je     0x46548c
465459:	d3 e0                	shl    %cl,%eax
46545b:	85 07                	test   %eax,(%edi)
46545d:	8b 02                	mov    (%edx),%eax
46545f:	74 05                	je     0x465466
465461:	0f ab f0             	bts    %esi,%eax
465464:	eb 03                	jmp    0x465469
465466:	0f b3 f0             	btr    %esi,%eax
465469:	89 02                	mov    %eax,(%edx)
46546b:	83 fe 1f             	cmp    $0x1f,%esi
46546e:	73 03                	jae    0x465473
465470:	46                   	inc    %esi
465471:	eb 05                	jmp    0x465478
465473:	33 f6                	xor    %esi,%esi
465475:	83 c2 04             	add    $0x4,%edx
465478:	b8 01 00 00 00       	mov    $0x1,%eax
46547d:	83 f9 1f             	cmp    $0x1f,%ecx
465480:	73 03                	jae    0x465485
465482:	41                   	inc    %ecx
465483:	eb cb                	jmp    0x465450
465485:	33 c9                	xor    %ecx,%ecx
465487:	83 c7 04             	add    $0x4,%edi
46548a:	eb c4                	jmp    0x465450
46548c:	8b 5d e8             	mov    -0x18(%ebp),%ebx
46548f:	8b 3b                	mov    (%ebx),%edi
465491:	2b d7                	sub    %edi,%edx
465493:	c1 fa 02             	sar    $0x2,%edx
465496:	c1 e2 05             	shl    $0x5,%edx
465499:	03 d6                	add    %esi,%edx
46549b:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
4654a1:	0f 87 9a 00 00 00    	ja     0x465541
4654a7:	8b 4b 04             	mov    0x4(%ebx),%ecx
4654aa:	8d 72 1f             	lea    0x1f(%edx),%esi
4654ad:	8b c1                	mov    %ecx,%eax
4654af:	c1 ee 05             	shr    $0x5,%esi
4654b2:	2b c7                	sub    %edi,%eax
4654b4:	c1 f8 02             	sar    $0x2,%eax
4654b7:	3b f0                	cmp    %eax,%esi
4654b9:	73 0a                	jae    0x4654c5
4654bb:	8d 04 b7             	lea    (%edi,%esi,4),%eax
4654be:	3b c1                	cmp    %ecx,%eax
4654c0:	74 03                	je     0x4654c5
4654c2:	89 43 04             	mov    %eax,0x4(%ebx)
4654c5:	89 53 0c             	mov    %edx,0xc(%ebx)
4654c8:	83 e2 1f             	and    $0x1f,%edx
4654cb:	76 13                	jbe    0x4654e0
4654cd:	8b ca                	mov    %edx,%ecx
4654cf:	b8 01 00 00 00       	mov    $0x1,%eax
4654d4:	d3 e0                	shl    %cl,%eax
4654d6:	48                   	dec    %eax
4654d7:	21 44 b7 fc          	and    %eax,-0x4(%edi,%esi,4)
4654db:	eb 03                	jmp    0x4654e0
4654dd:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4654e0:	8b 55 08             	mov    0x8(%ebp),%edx
4654e3:	33 f6                	xor    %esi,%esi
4654e5:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4654e8:	8b 03                	mov    (%ebx),%eax
4654ea:	89 02                	mov    %eax,(%edx)
4654ec:	89 72 04             	mov    %esi,0x4(%edx)
4654ef:	85 c9                	test   %ecx,%ecx
4654f1:	79 1f                	jns    0x465512
4654f3:	8b c1                	mov    %ecx,%eax
4654f5:	f7 d8                	neg    %eax
4654f7:	3b f0                	cmp    %eax,%esi
4654f9:	73 17                	jae    0x465512
4654fb:	8b f1                	mov    %ecx,%esi
4654fd:	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
465502:	8b ce                	mov    %esi,%ecx
465504:	f7 d1                	not    %ecx
465506:	c1 e9 05             	shr    $0x5,%ecx
465509:	c1 e1 02             	shl    $0x2,%ecx
46550c:	2b c1                	sub    %ecx,%eax
46550e:	01 02                	add    %eax,(%edx)
465510:	eb 0c                	jmp    0x46551e
465512:	03 f1                	add    %ecx,%esi
465514:	8b ce                	mov    %esi,%ecx
465516:	c1 e9 05             	shr    $0x5,%ecx
465519:	c1 e1 02             	shl    $0x2,%ecx
46551c:	01 0a                	add    %ecx,(%edx)
46551e:	b8 1f 00 00 00       	mov    $0x1f,%eax
465523:	89 72 04             	mov    %esi,0x4(%edx)
465526:	23 c6                	and    %esi,%eax
465528:	89 42 04             	mov    %eax,0x4(%edx)
46552b:	8b c2                	mov    %edx,%eax
46552d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
465530:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
465537:	59                   	pop    %ecx
465538:	5f                   	pop    %edi
465539:	5e                   	pop    %esi
46553a:	5b                   	pop    %ebx
46553b:	8b e5                	mov    %ebp,%esp
46553d:	5d                   	pop    %ebp
46553e:	c2 14 00             	ret    $0x14
465541:	e8 aa 02 00 00       	call   0x4657f0
465546:	cc                   	int3
465547:	cc                   	int3
465548:	cc                   	int3
465549:	cc                   	int3
46554a:	cc                   	int3
46554b:	cc                   	int3
46554c:	cc                   	int3
46554d:	cc                   	int3
46554e:	cc                   	int3
46554f:	cc                   	int3
465550:	53                   	push   %ebx
465551:	56                   	push   %esi
465552:	8b f1                	mov    %ecx,%esi
465554:	57                   	push   %edi
465555:	68 91 1b 00 00       	push   $0x1b91
46555a:	8b 5e 04             	mov    0x4(%esi),%ebx
46555d:	2b 1e                	sub    (%esi),%ebx
46555f:	d1 fb                	sar    $1,%ebx
465561:	e8 72 44 00 00       	call   0x4699d8
465566:	83 c4 04             	add    $0x4,%esp
465569:	85 c0                	test   %eax,%eax
46556b:	74 64                	je     0x4655d1
46556d:	8d 78 23             	lea    0x23(%eax),%edi
465570:	83 e7 e0             	and    $0xffffffe0,%edi
465573:	89 47 fc             	mov    %eax,-0x4(%edi)
465576:	8b 0e                	mov    (%esi),%ecx
465578:	8b 46 04             	mov    0x4(%esi),%eax
46557b:	2b c1                	sub    %ecx,%eax
46557d:	50                   	push   %eax
46557e:	51                   	push   %ecx
46557f:	57                   	push   %edi
465580:	e8 9b 60 00 00       	call   0x46b620
465585:	8b 06                	mov    (%esi),%eax
465587:	83 c4 0c             	add    $0xc,%esp
46558a:	85 c0                	test   %eax,%eax
46558c:	74 2c                	je     0x4655ba
46558e:	8b 4e 08             	mov    0x8(%esi),%ecx
465591:	2b c8                	sub    %eax,%ecx
465593:	83 e1 fe             	and    $0xfffffffe,%ecx
465596:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
46559c:	72 12                	jb     0x4655b0
46559e:	8b 50 fc             	mov    -0x4(%eax),%edx
4655a1:	83 c1 23             	add    $0x23,%ecx
4655a4:	2b c2                	sub    %edx,%eax
4655a6:	83 c0 fc             	add    $0xfffffffc,%eax
4655a9:	83 f8 1f             	cmp    $0x1f,%eax
4655ac:	77 23                	ja     0x4655d1
4655ae:	8b c2                	mov    %edx,%eax
4655b0:	51                   	push   %ecx
4655b1:	50                   	push   %eax
4655b2:	e8 51 44 00 00       	call   0x469a08
4655b7:	83 c4 08             	add    $0x8,%esp
4655ba:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
4655bd:	89 3e                	mov    %edi,(%esi)
4655bf:	89 46 04             	mov    %eax,0x4(%esi)
4655c2:	8d 87 6e 1b 00 00    	lea    0x1b6e(%edi),%eax
4655c8:	5f                   	pop    %edi
4655c9:	89 46 08             	mov    %eax,0x8(%esi)
4655cc:	5e                   	pop    %esi
4655cd:	5b                   	pop    %ebx
4655ce:	c2 04 00             	ret    $0x4
4655d1:	e8 5b 40 01 00       	call   0x479631
4655d6:	cc                   	int3
4655d7:	cc                   	int3
4655d8:	cc                   	int3
4655d9:	cc                   	int3
4655da:	cc                   	int3
4655db:	cc                   	int3
4655dc:	cc                   	int3
4655dd:	cc                   	int3
4655de:	cc                   	int3
4655df:	cc                   	int3
4655e0:	83 ec 18             	sub    $0x18,%esp
4655e3:	53                   	push   %ebx
4655e4:	55                   	push   %ebp
4655e5:	8b 6c 24 28          	mov    0x28(%esp),%ebp
4655e9:	8b d9                	mov    %ecx,%ebx
4655eb:	8b 4c 24 24          	mov    0x24(%esp),%ecx
4655ef:	56                   	push   %esi
4655f0:	57                   	push   %edi
4655f1:	8b 33                	mov    (%ebx),%esi
4655f3:	2b ee                	sub    %esi,%ebp
4655f5:	c1 fd 02             	sar    $0x2,%ebp
4655f8:	c1 e5 05             	shl    $0x5,%ebp
4655fb:	03 6c 24 34          	add    0x34(%esp),%ebp
4655ff:	89 6c 24 24          	mov    %ebp,0x24(%esp)
465603:	85 c9                	test   %ecx,%ecx
465605:	0f 84 c6 01 00 00    	je     0x4657d1
46560b:	8b 53 0c             	mov    0xc(%ebx),%edx
46560e:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
465613:	2b c2                	sub    %edx,%eax
465615:	3b c1                	cmp    %ecx,%eax
465617:	0f 82 c0 01 00 00    	jb     0x4657dd
46561d:	8b 7b 04             	mov    0x4(%ebx),%edi
465620:	83 c1 1f             	add    $0x1f,%ecx
465623:	03 d1                	add    %ecx,%edx
465625:	c7 44 24 14 00 00 00 	movl   $0x0,0x14(%esp)
46562c:	00
46562d:	8b cf                	mov    %edi,%ecx
46562f:	c1 ea 05             	shr    $0x5,%edx
465632:	2b ce                	sub    %esi,%ecx
465634:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
465638:	c1 f9 02             	sar    $0x2,%ecx
46563b:	3b d1                	cmp    %ecx,%edx
46563d:	73 08                	jae    0x465647
46563f:	8d 04 96             	lea    (%esi,%edx,4),%eax
465642:	89 43 04             	mov    %eax,0x4(%ebx)
465645:	eb 5c                	jmp    0x4656a3
465647:	76 5a                	jbe    0x4656a3
465649:	8b 43 08             	mov    0x8(%ebx),%eax
46564c:	2b c6                	sub    %esi,%eax
46564e:	c1 f8 02             	sar    $0x2,%eax
465651:	3b d0                	cmp    %eax,%edx
465653:	8d 44 24 14          	lea    0x14(%esp),%eax
465657:	76 0b                	jbe    0x465664
465659:	50                   	push   %eax
46565a:	52                   	push   %edx
46565b:	8b cb                	mov    %ebx,%ecx
46565d:	e8 ae 08 00 00       	call   0x465f10
465662:	eb 3f                	jmp    0x4656a3
465664:	8b 00                	mov    (%eax),%eax
465666:	2b d1                	sub    %ecx,%edx
465668:	8d 4c 24 18          	lea    0x18(%esp),%ecx
46566c:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
465673:	00
465674:	3b 01                	cmp    (%ecx),%eax
465676:	75 17                	jne    0x46568f
465678:	8d 34 95 00 00 00 00 	lea    0x0(,%edx,4),%esi
46567f:	56                   	push   %esi
465680:	6a 00                	push   $0x0
465682:	57                   	push   %edi
465683:	e8 28 65 00 00       	call   0x46bbb0
465688:	83 c4 0c             	add    $0xc,%esp
46568b:	03 fe                	add    %esi,%edi
46568d:	eb 11                	jmp    0x4656a0
46568f:	85 d2                	test   %edx,%edx
465691:	74 0d                	je     0x4656a0
465693:	8b ca                	mov    %edx,%ecx
465695:	33 c0                	xor    %eax,%eax
465697:	f3 ab                	rep stos %eax,%es:(%edi)
465699:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
46569d:	8d 3c 97             	lea    (%edi,%edx,4),%edi
4656a0:	89 7b 04             	mov    %edi,0x4(%ebx)
4656a3:	8b 53 0c             	mov    0xc(%ebx),%edx
4656a6:	85 d2                	test   %edx,%edx
4656a8:	75 15                	jne    0x4656bf
4656aa:	8b 44 24 2c          	mov    0x2c(%esp),%eax
4656ae:	03 c2                	add    %edx,%eax
4656b0:	89 43 0c             	mov    %eax,0xc(%ebx)
4656b3:	8b c5                	mov    %ebp,%eax
4656b5:	5f                   	pop    %edi
4656b6:	5e                   	pop    %esi
4656b7:	5d                   	pop    %ebp
4656b8:	5b                   	pop    %ebx
4656b9:	83 c4 18             	add    $0x18,%esp
4656bc:	c2 0c 00             	ret    $0xc
4656bf:	8b 33                	mov    (%ebx),%esi
4656c1:	33 c9                	xor    %ecx,%ecx
4656c3:	89 74 24 1c          	mov    %esi,0x1c(%esp)
4656c7:	85 d2                	test   %edx,%edx
4656c9:	79 1e                	jns    0x4656e9
4656cb:	8b c2                	mov    %edx,%eax
4656cd:	f7 d8                	neg    %eax
4656cf:	3b c8                	cmp    %eax,%ecx
4656d1:	73 16                	jae    0x4656e9
4656d3:	8b ca                	mov    %edx,%ecx
4656d5:	8b fe                	mov    %esi,%edi
4656d7:	8b c1                	mov    %ecx,%eax
4656d9:	f7 d0                	not    %eax
4656db:	c1 e8 05             	shr    $0x5,%eax
4656de:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
4656e5:	2b f8                	sub    %eax,%edi
4656e7:	eb 0a                	jmp    0x4656f3
4656e9:	03 ca                	add    %edx,%ecx
4656eb:	8b c1                	mov    %ecx,%eax
4656ed:	c1 e8 05             	shr    $0x5,%eax
4656f0:	8d 3c 86             	lea    (%esi,%eax,4),%edi
4656f3:	83 e1 1f             	and    $0x1f,%ecx
4656f6:	33 f6                	xor    %esi,%esi
4656f8:	03 54 24 2c          	add    0x2c(%esp),%edx
4656fc:	89 53 0c             	mov    %edx,0xc(%ebx)
4656ff:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
465703:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
465707:	79 1e                	jns    0x465727
465709:	8b c2                	mov    %edx,%eax
46570b:	f7 d8                	neg    %eax
46570d:	3b f0                	cmp    %eax,%esi
46570f:	73 16                	jae    0x465727
465711:	03 d6                	add    %esi,%edx
465713:	8b f3                	mov    %ebx,%esi
465715:	8b c2                	mov    %edx,%eax
465717:	f7 d0                	not    %eax
465719:	c1 e8 05             	shr    $0x5,%eax
46571c:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
465723:	2b f0                	sub    %eax,%esi
465725:	eb 0a                	jmp    0x465731
465727:	03 d6                	add    %esi,%edx
465729:	8b c2                	mov    %edx,%eax
46572b:	c1 e8 05             	shr    $0x5,%eax
46572e:	8d 34 83             	lea    (%ebx,%eax,4),%esi
465731:	33 c0                	xor    %eax,%eax
465733:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
465737:	83 e2 1f             	and    $0x1f,%edx
46573a:	89 44 24 1c          	mov    %eax,0x1c(%esp)
46573e:	85 ed                	test   %ebp,%ebp
465740:	79 24                	jns    0x465766
465742:	8b c5                	mov    %ebp,%eax
465744:	f7 d8                	neg    %eax
465746:	39 44 24 1c          	cmp    %eax,0x1c(%esp)
46574a:	73 18                	jae    0x465764
46574c:	33 c0                	xor    %eax,%eax
46574e:	8b c5                	mov    %ebp,%eax
465750:	89 44 24 14          	mov    %eax,0x14(%esp)
465754:	f7 d0                	not    %eax
465756:	c1 e8 05             	shr    $0x5,%eax
465759:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
465760:	2b d8                	sub    %eax,%ebx
465762:	eb 0e                	jmp    0x465772
465764:	33 c0                	xor    %eax,%eax
465766:	03 c5                	add    %ebp,%eax
465768:	89 44 24 14          	mov    %eax,0x14(%esp)
46576c:	c1 e8 05             	shr    $0x5,%eax
46576f:	8d 1c 83             	lea    (%ebx,%eax,4),%ebx
465772:	8b 6c 24 14          	mov    0x14(%esp),%ebp
465776:	83 e5 1f             	and    $0x1f,%ebp
465779:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
465780:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
465784:	3b df                	cmp    %edi,%ebx
465786:	75 04                	jne    0x46578c
465788:	3b e9                	cmp    %ecx,%ebp
46578a:	74 41                	je     0x4657cd
46578c:	85 c9                	test   %ecx,%ecx
46578e:	74 03                	je     0x465793
465790:	49                   	dec    %ecx
465791:	eb 05                	jmp    0x465798
465793:	b9 1f 00 00 00       	mov    $0x1f,%ecx
465798:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
46579d:	8d 47 fc             	lea    -0x4(%edi),%eax
4657a0:	0f 44 f8             	cmove  %eax,%edi
4657a3:	85 d2                	test   %edx,%edx
4657a5:	74 03                	je     0x4657aa
4657a7:	4a                   	dec    %edx
4657a8:	eb 08                	jmp    0x4657b2
4657aa:	ba 1f 00 00 00       	mov    $0x1f,%edx
4657af:	83 ee 04             	sub    $0x4,%esi
4657b2:	b8 01 00 00 00       	mov    $0x1,%eax
4657b7:	d3 e0                	shl    %cl,%eax
4657b9:	85 07                	test   %eax,(%edi)
4657bb:	8b 06                	mov    (%esi),%eax
4657bd:	74 07                	je     0x4657c6