43d4fa:	66 8b 55 08          	mov    0x8(%ebp),%dx
43d4fe:	66 3b fa             	cmp    %dx,%di
43d501:	74 0c                	je     0x43d50f
43d503:	66 3b 56 fe          	cmp    -0x2(%esi),%dx
43d507:	74 06                	je     0x43d50f
43d509:	f6 41 3c 02          	testb  $0x2,0x3c(%ecx)
43d50d:	75 29                	jne    0x43d538
43d50f:	8b 41 2c             	mov    0x2c(%ecx),%eax
43d512:	ff 00                	incl   (%eax)
43d514:	8b 41 1c             	mov    0x1c(%ecx),%eax
43d517:	83 00 fe             	addl   $0xfffffffe,(%eax)
43d51a:	66 3b fa             	cmp    %dx,%di
43d51d:	74 08                	je     0x43d527
43d51f:	8b 41 1c             	mov    0x1c(%ecx),%eax
43d522:	8b 00                	mov    (%eax),%eax
43d524:	66 89 10             	mov    %dx,(%eax)
43d527:	33 c9                	xor    %ecx,%ecx
43d529:	0f b7 c2             	movzwl %dx,%eax
43d52c:	66 3b d7             	cmp    %di,%dx
43d52f:	5f                   	pop    %edi
43d530:	0f 44 c1             	cmove  %ecx,%eax
43d533:	5e                   	pop    %esi
43d534:	5d                   	pop    %ebp
43d535:	c2 04 00             	ret    $0x4
43d538:	66 8b c7             	mov    %di,%ax
43d53b:	5f                   	pop    %edi
43d53c:	5e                   	pop    %esi
43d53d:	5d                   	pop    %ebp
43d53e:	c2 04 00             	ret    $0x4
43d541:	cc                   	int3
43d542:	cc                   	int3
43d543:	cc                   	int3
43d544:	cc                   	int3
43d545:	cc                   	int3
43d546:	cc                   	int3
43d547:	cc                   	int3
43d548:	cc                   	int3
43d549:	cc                   	int3
43d54a:	cc                   	int3
43d54b:	cc                   	int3
43d54c:	cc                   	int3
43d54d:	cc                   	int3
43d54e:	cc                   	int3
43d54f:	cc                   	int3
43d550:	55                   	push   %ebp
43d551:	8b ec                	mov    %esp,%ebp
43d553:	83 ec 0c             	sub    $0xc,%esp
43d556:	53                   	push   %ebx
43d557:	56                   	push   %esi
43d558:	8b f1                	mov    %ecx,%esi
43d55a:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43d55f:	57                   	push   %edi
43d560:	8b 46 3c             	mov    0x3c(%esi),%eax
43d563:	a8 02                	test   $0x2,%al
43d565:	0f 85 19 02 00 00    	jne    0x43d784
43d56b:	66 8b 5d 08          	mov    0x8(%ebp),%bx
43d56f:	66 3b cb             	cmp    %bx,%cx
43d572:	75 0b                	jne    0x43d57f
43d574:	5f                   	pop    %edi
43d575:	5e                   	pop    %esi
43d576:	33 c0                	xor    %eax,%eax
43d578:	5b                   	pop    %ebx
43d579:	8b e5                	mov    %ebp,%esp
43d57b:	5d                   	pop    %ebp
43d57c:	c2 04 00             	ret    $0x4
43d57f:	a8 08                	test   $0x8,%al
43d581:	74 23                	je     0x43d5a6
43d583:	8b 7e 20             	mov    0x20(%esi),%edi
43d586:	8b 0f                	mov    (%edi),%ecx
43d588:	85 c9                	test   %ecx,%ecx
43d58a:	74 1a                	je     0x43d5a6
43d58c:	8b 56 38             	mov    0x38(%esi),%edx
43d58f:	3b ca                	cmp    %edx,%ecx
43d591:	73 13                	jae    0x43d5a6
43d593:	8b 46 30             	mov    0x30(%esi),%eax
43d596:	8b 00                	mov    (%eax),%eax
43d598:	89 17                	mov    %edx,(%edi)
43d59a:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
43d59d:	8b 46 30             	mov    0x30(%esi),%eax
43d5a0:	2b ca                	sub    %edx,%ecx
43d5a2:	d1 f9                	sar    $1,%ecx
43d5a4:	89 08                	mov    %ecx,(%eax)
43d5a6:	8b 46 20             	mov    0x20(%esi),%eax
43d5a9:	8b 38                	mov    (%eax),%edi
43d5ab:	85 ff                	test   %edi,%edi
43d5ad:	74 39                	je     0x43d5e8
43d5af:	8b 56 30             	mov    0x30(%esi),%edx
43d5b2:	8b 0a                	mov    (%edx),%ecx
43d5b4:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
43d5b7:	89 45 f8             	mov    %eax,-0x8(%ebp)
43d5ba:	03 c7                	add    %edi,%eax
43d5bc:	3b f8                	cmp    %eax,%edi
43d5be:	73 1c                	jae    0x43d5dc
43d5c0:	49                   	dec    %ecx
43d5c1:	66 8b c3             	mov    %bx,%ax
43d5c4:	89 0a                	mov    %ecx,(%edx)
43d5c6:	8b 56 20             	mov    0x20(%esi),%edx
43d5c9:	5f                   	pop    %edi
43d5ca:	8b 32                	mov    (%edx),%esi
43d5cc:	8d 4e 02             	lea    0x2(%esi),%ecx
43d5cf:	89 0a                	mov    %ecx,(%edx)
43d5d1:	66 89 1e             	mov    %bx,(%esi)
43d5d4:	5e                   	pop    %esi
43d5d5:	5b                   	pop    %ebx
43d5d6:	8b e5                	mov    %ebp,%esp
43d5d8:	5d                   	pop    %ebp
43d5d9:	c2 04 00             	ret    $0x4
43d5dc:	8b 46 0c             	mov    0xc(%esi),%eax
43d5df:	2b 38                	sub    (%eax),%edi
43d5e1:	03 7d f8             	add    -0x8(%ebp),%edi
43d5e4:	d1 ff                	sar    $1,%edi
43d5e6:	eb 02                	jmp    0x43d5ea
43d5e8:	33 ff                	xor    %edi,%edi
43d5ea:	8b cf                	mov    %edi,%ecx
43d5ec:	b8 20 00 00 00       	mov    $0x20,%eax
43d5f1:	d1 e9                	shr    $1,%ecx
43d5f3:	3b c8                	cmp    %eax,%ecx
43d5f5:	0f 42 c8             	cmovb  %eax,%ecx
43d5f8:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
43d5ff:	00
43d600:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
43d605:	2b c1                	sub    %ecx,%eax
43d607:	3b c7                	cmp    %edi,%eax
43d609:	73 04                	jae    0x43d60f
43d60b:	d1 e9                	shr    $1,%ecx
43d60d:	75 f1                	jne    0x43d600
43d60f:	85 c9                	test   %ecx,%ecx
43d611:	0f 84 68 01 00 00    	je     0x43d77f
43d617:	8d 04 39             	lea    (%ecx,%edi,1),%eax
43d61a:	50                   	push   %eax
43d61b:	8d 4e 40             	lea    0x40(%esi),%ecx
43d61e:	89 45 f4             	mov    %eax,-0xc(%ebp)
43d621:	e8 ca bd ff ff       	call   0x4393f0
43d626:	8b 4e 0c             	mov    0xc(%esi),%ecx
43d629:	8b d0                	mov    %eax,%edx
43d62b:	89 55 fc             	mov    %edx,-0x4(%ebp)
43d62e:	8b 19                	mov    (%ecx),%ebx
43d630:	89 5d f8             	mov    %ebx,-0x8(%ebp)
43d633:	85 ff                	test   %edi,%edi
43d635:	74 11                	je     0x43d648
43d637:	8d 04 3f             	lea    (%edi,%edi,1),%eax
43d63a:	50                   	push   %eax
43d63b:	53                   	push   %ebx
43d63c:	52                   	push   %edx
43d63d:	e8 be 58 1a 00       	call   0x5e2f00
43d642:	8b 55 fc             	mov    -0x4(%ebp),%edx
43d645:	83 c4 0c             	add    $0xc,%esp
43d648:	8b 4d f4             	mov    -0xc(%ebp),%ecx
43d64b:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
43d64e:	89 45 f4             	mov    %eax,-0xc(%ebp)
43d651:	85 ff                	test   %edi,%edi
43d653:	75 39                	jne    0x43d68e
43d655:	8b 46 10             	mov    0x10(%esi),%eax
43d658:	89 56 38             	mov    %edx,0x38(%esi)
43d65b:	89 10                	mov    %edx,(%eax)
43d65d:	8b 46 20             	mov    0x20(%esi),%eax
43d660:	89 10                	mov    %edx,(%eax)
43d662:	8b 46 30             	mov    0x30(%esi),%eax
43d665:	89 08                	mov    %ecx,(%eax)
43d667:	8b 46 0c             	mov    0xc(%esi),%eax
43d66a:	8b 4e 3c             	mov    0x3c(%esi),%ecx
43d66d:	89 10                	mov    %edx,(%eax)
43d66f:	8b 46 1c             	mov    0x1c(%esi),%eax
43d672:	83 e1 04             	and    $0x4,%ecx
43d675:	74 07                	je     0x43d67e
43d677:	89 38                	mov    %edi,(%eax)
43d679:	e9 96 00 00 00       	jmp    0x43d714
43d67e:	89 10                	mov    %edx,(%eax)
43d680:	8b 46 2c             	mov    0x2c(%esi),%eax
43d683:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
43d689:	e9 8d 00 00 00       	jmp    0x43d71b
43d68e:	8b 46 38             	mov    0x38(%esi),%eax
43d691:	2b c3                	sub    %ebx,%eax
43d693:	8b 4e 10             	mov    0x10(%esi),%ecx
43d696:	d1 f8                	sar    $1,%eax
43d698:	8d 04 42             	lea    (%edx,%eax,2),%eax
43d69b:	89 46 38             	mov    %eax,0x38(%esi)
43d69e:	8b 46 20             	mov    0x20(%esi),%eax
43d6a1:	8b 00                	mov    (%eax),%eax
43d6a3:	2b c3                	sub    %ebx,%eax
43d6a5:	d1 f8                	sar    $1,%eax
43d6a7:	8d 14 42             	lea    (%edx,%eax,2),%edx
43d6aa:	8b 01                	mov    (%ecx),%eax
43d6ac:	2b c3                	sub    %ebx,%eax
43d6ae:	8b 5d fc             	mov    -0x4(%ebp),%ebx
43d6b1:	d1 f8                	sar    $1,%eax
43d6b3:	8d 04 43             	lea    (%ebx,%eax,2),%eax
43d6b6:	8b 5d f4             	mov    -0xc(%ebp),%ebx
43d6b9:	89 01                	mov    %eax,(%ecx)
43d6bb:	2b da                	sub    %edx,%ebx
43d6bd:	8b 46 20             	mov    0x20(%esi),%eax
43d6c0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
43d6c3:	03 d9                	add    %ecx,%ebx
43d6c5:	d1 fb                	sar    $1,%ebx
43d6c7:	89 10                	mov    %edx,(%eax)
43d6c9:	8b 46 30             	mov    0x30(%esi),%eax
43d6cc:	89 18                	mov    %ebx,(%eax)
43d6ce:	f6 46 3c 04          	testb  $0x4,0x3c(%esi)
43d6d2:	8b 5d f8             	mov    -0x8(%ebp),%ebx
43d6d5:	74 17                	je     0x43d6ee
43d6d7:	8b 46 0c             	mov    0xc(%esi),%eax
43d6da:	89 08                	mov    %ecx,(%eax)
43d6dc:	8b 46 1c             	mov    0x1c(%esi),%eax
43d6df:	d1 f9                	sar    $1,%ecx
43d6e1:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d6e7:	8b 46 2c             	mov    0x2c(%esi),%eax
43d6ea:	89 08                	mov    %ecx,(%eax)
43d6ec:	eb 2d                	jmp    0x43d71b
43d6ee:	8b 46 20             	mov    0x20(%esi),%eax
43d6f1:	8b 10                	mov    (%eax),%edx
43d6f3:	8b 46 1c             	mov    0x1c(%esi),%eax
43d6f6:	8b 00                	mov    (%eax),%eax
43d6f8:	2b c3                	sub    %ebx,%eax
43d6fa:	8b 5d fc             	mov    -0x4(%ebp),%ebx
43d6fd:	d1 f8                	sar    $1,%eax
43d6ff:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
43d702:	8b 46 0c             	mov    0xc(%esi),%eax
43d705:	2b d1                	sub    %ecx,%edx
43d707:	83 c2 02             	add    $0x2,%edx
43d70a:	89 18                	mov    %ebx,(%eax)
43d70c:	8b 46 1c             	mov    0x1c(%esi),%eax
43d70f:	8b 5d f8             	mov    -0x8(%ebp),%ebx
43d712:	89 08                	mov    %ecx,(%eax)
43d714:	8b 46 2c             	mov    0x2c(%esi),%eax
43d717:	d1 fa                	sar    $1,%edx
43d719:	89 10                	mov    %edx,(%eax)
43d71b:	8b 46 3c             	mov    0x3c(%esi),%eax
43d71e:	a8 01                	test   $0x1,%al
43d720:	74 38                	je     0x43d75a
43d722:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
43d728:	77 66                	ja     0x43d790
43d72a:	8d 04 3f             	lea    (%edi,%edi,1),%eax
43d72d:	3d 00 10 00 00       	cmp    $0x1000,%eax
43d732:	72 1a                	jb     0x43d74e
43d734:	f6 c3 1f             	test   $0x1f,%bl
43d737:	75 57                	jne    0x43d790
43d739:	8b 43 fc             	mov    -0x4(%ebx),%eax
43d73c:	3b c3                	cmp    %ebx,%eax
43d73e:	73 50                	jae    0x43d790
43d740:	2b d8                	sub    %eax,%ebx
43d742:	83 fb 04             	cmp    $0x4,%ebx
43d745:	72 49                	jb     0x43d790
43d747:	83 fb 23             	cmp    $0x23,%ebx
43d74a:	77 44                	ja     0x43d790
43d74c:	8b d8                	mov    %eax,%ebx
43d74e:	53                   	push   %ebx
43d74f:	e8 7c 2d 0b 00       	call   0x4f04d0
43d754:	8b 46 3c             	mov    0x3c(%esi),%eax
43d757:	83 c4 04             	add    $0x4,%esp
43d75a:	83 c8 01             	or     $0x1,%eax
43d75d:	89 46 3c             	mov    %eax,0x3c(%esi)
43d760:	8b 46 30             	mov    0x30(%esi),%eax
43d763:	5f                   	pop    %edi
43d764:	ff 08                	decl   (%eax)
43d766:	8b 4e 20             	mov    0x20(%esi),%ecx
43d769:	5e                   	pop    %esi
43d76a:	5b                   	pop    %ebx
43d76b:	8b 11                	mov    (%ecx),%edx
43d76d:	8d 42 02             	lea    0x2(%edx),%eax
43d770:	89 01                	mov    %eax,(%ecx)
43d772:	66 8b 45 08          	mov    0x8(%ebp),%ax
43d776:	66 89 02             	mov    %ax,(%edx)
43d779:	8b e5                	mov    %ebp,%esp
43d77b:	5d                   	pop    %ebp
43d77c:	c2 04 00             	ret    $0x4
43d77f:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43d784:	5f                   	pop    %edi
43d785:	5e                   	pop    %esi
43d786:	66 8b c1             	mov    %cx,%ax
43d789:	5b                   	pop    %ebx
43d78a:	8b e5                	mov    %ebp,%esp
43d78c:	5d                   	pop    %ebp
43d78d:	c2 04 00             	ret    $0x4
43d790:	e8 9a f7 1a 00       	call   0x5ecf2f
43d795:	cc                   	int3
43d796:	cc                   	int3
43d797:	cc                   	int3
43d798:	cc                   	int3
43d799:	cc                   	int3
43d79a:	cc                   	int3
43d79b:	cc                   	int3
43d79c:	cc                   	int3
43d79d:	cc                   	int3
43d79e:	cc                   	int3
43d79f:	cc                   	int3
43d7a0:	55                   	push   %ebp
43d7a1:	8b ec                	mov    %esp,%ebp
43d7a3:	6a ff                	push   $0xffffffff
43d7a5:	68 a0 ba 64 00       	push   $0x64baa0
43d7aa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
43d7b0:	50                   	push   %eax
43d7b1:	56                   	push   %esi
43d7b2:	a1 d4 89 72 00       	mov    0x7289d4,%eax
43d7b7:	33 c5                	xor    %ebp,%eax
43d7b9:	50                   	push   %eax
43d7ba:	8d 45 f4             	lea    -0xc(%ebp),%eax
43d7bd:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
43d7c3:	8b f1                	mov    %ecx,%esi
43d7c5:	f6 46 3c 01          	testb  $0x1,0x3c(%esi)
43d7c9:	c7 06 a4 fd 68 00    	movl   $0x68fda4,(%esi)
43d7cf:	74 72                	je     0x43d843
43d7d1:	8b 46 20             	mov    0x20(%esi),%eax
43d7d4:	8b 08                	mov    (%eax),%ecx
43d7d6:	85 c9                	test   %ecx,%ecx
43d7d8:	74 0a                	je     0x43d7e4
43d7da:	8b 46 30             	mov    0x30(%esi),%eax
43d7dd:	8b 00                	mov    (%eax),%eax
43d7df:	8d 14 41             	lea    (%ecx,%eax,2),%edx
43d7e2:	eb 0d                	jmp    0x43d7f1
43d7e4:	8b 46 2c             	mov    0x2c(%esi),%eax
43d7e7:	8b 08                	mov    (%eax),%ecx
43d7e9:	8b 46 1c             	mov    0x1c(%esi),%eax
43d7ec:	8b 00                	mov    (%eax),%eax
43d7ee:	8d 14 48             	lea    (%eax,%ecx,2),%edx
43d7f1:	8b 46 0c             	mov    0xc(%esi),%eax
43d7f4:	8b 08                	mov    (%eax),%ecx
43d7f6:	2b d1                	sub    %ecx,%edx
43d7f8:	d1 fa                	sar    $1,%edx
43d7fa:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
43d800:	0f 87 c5 00 00 00    	ja     0x43d8cb
43d806:	8d 04 12             	lea    (%edx,%edx,1),%eax
43d809:	3d 00 10 00 00       	cmp    $0x1000,%eax
43d80e:	72 2a                	jb     0x43d83a
43d810:	f6 c1 1f             	test   $0x1f,%cl
43d813:	0f 85 b2 00 00 00    	jne    0x43d8cb
43d819:	8b 41 fc             	mov    -0x4(%ecx),%eax
43d81c:	3b c1                	cmp    %ecx,%eax
43d81e:	0f 83 a7 00 00 00    	jae    0x43d8cb
43d824:	2b c8                	sub    %eax,%ecx
43d826:	83 f9 04             	cmp    $0x4,%ecx
43d829:	0f 82 9c 00 00 00    	jb     0x43d8cb
43d82f:	83 f9 23             	cmp    $0x23,%ecx
43d832:	0f 87 93 00 00 00    	ja     0x43d8cb
43d838:	8b c8                	mov    %eax,%ecx
43d83a:	51                   	push   %ecx
43d83b:	e8 90 2c 0b 00       	call   0x4f04d0
43d840:	83 c4 04             	add    $0x4,%esp
43d843:	8b 46 0c             	mov    0xc(%esi),%eax
43d846:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d84c:	8b 46 1c             	mov    0x1c(%esi),%eax
43d84f:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d855:	8b 46 2c             	mov    0x2c(%esi),%eax
43d858:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d85e:	8b 46 10             	mov    0x10(%esi),%eax
43d861:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d867:	8b 46 20             	mov    0x20(%esi),%eax
43d86a:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d870:	8b 46 30             	mov    0x30(%esi),%eax
43d873:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
43d879:	83 66 3c fe          	andl   $0xfffffffe,0x3c(%esi)