40b3f2:	0f ba 25 d4 f5 43 00 	btl    $0x1,0x43f5d4
40b3f9:	01
40b3fa:	73 09                	jae    0x40b405
40b3fc:	f3 aa                	rep stos %al,%es:(%edi)
40b3fe:	8b 44 24 04          	mov    0x4(%esp),%eax
40b402:	8b fa                	mov    %edx,%edi
40b404:	c3                   	ret
40b405:	0f ba 25 10 d1 43 00 	btl    $0x1,0x43d110
40b40c:	01
40b40d:	0f 83 b2 00 00 00    	jae    0x40b4c5
40b413:	66 0f 6e c0          	movd   %eax,%xmm0
40b417:	66 0f 70 c0 00       	pshufd $0x0,%xmm0,%xmm0
40b41c:	03 cf                	add    %edi,%ecx
40b41e:	0f 11 07             	movups %xmm0,(%edi)
40b421:	83 c7 10             	add    $0x10,%edi
40b424:	83 e7 f0             	and    $0xfffffff0,%edi
40b427:	2b cf                	sub    %edi,%ecx
40b429:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
40b42f:	76 4c                	jbe    0x40b47d
40b431:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b438:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b43f:	90                   	nop
40b440:	66 0f 7f 07          	movdqa %xmm0,(%edi)
40b444:	66 0f 7f 47 10       	movdqa %xmm0,0x10(%edi)
40b449:	66 0f 7f 47 20       	movdqa %xmm0,0x20(%edi)
40b44e:	66 0f 7f 47 30       	movdqa %xmm0,0x30(%edi)
40b453:	66 0f 7f 47 40       	movdqa %xmm0,0x40(%edi)
40b458:	66 0f 7f 47 50       	movdqa %xmm0,0x50(%edi)
40b45d:	66 0f 7f 47 60       	movdqa %xmm0,0x60(%edi)
40b462:	66 0f 7f 47 70       	movdqa %xmm0,0x70(%edi)
40b467:	8d bf 80 00 00 00    	lea    0x80(%edi),%edi
40b46d:	81 e9 80 00 00 00    	sub    $0x80,%ecx
40b473:	f7 c1 00 ff ff ff    	test   $0xffffff00,%ecx
40b479:	75 c5                	jne    0x40b440
40b47b:	eb 13                	jmp    0x40b490
40b47d:	0f ba 25 10 d1 43 00 	btl    $0x1,0x43d110
40b484:	01
40b485:	73 3e                	jae    0x40b4c5
40b487:	66 0f 6e c0          	movd   %eax,%xmm0
40b48b:	66 0f 70 c0 00       	pshufd $0x0,%xmm0,%xmm0
40b490:	83 f9 20             	cmp    $0x20,%ecx
40b493:	72 1c                	jb     0x40b4b1
40b495:	f3 0f 7f 07          	movdqu %xmm0,(%edi)
40b499:	f3 0f 7f 47 10       	movdqu %xmm0,0x10(%edi)
40b49e:	83 c7 20             	add    $0x20,%edi
40b4a1:	83 e9 20             	sub    $0x20,%ecx
40b4a4:	83 f9 20             	cmp    $0x20,%ecx
40b4a7:	73 ec                	jae    0x40b495
40b4a9:	f7 c1 1f 00 00 00    	test   $0x1f,%ecx
40b4af:	74 62                	je     0x40b513
40b4b1:	8d 7c 0f e0          	lea    -0x20(%edi,%ecx,1),%edi
40b4b5:	f3 0f 7f 07          	movdqu %xmm0,(%edi)
40b4b9:	f3 0f 7f 47 10       	movdqu %xmm0,0x10(%edi)
40b4be:	8b 44 24 04          	mov    0x4(%esp),%eax
40b4c2:	8b fa                	mov    %edx,%edi
40b4c4:	c3                   	ret
40b4c5:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40b4cb:	74 0e                	je     0x40b4db
40b4cd:	88 07                	mov    %al,(%edi)
40b4cf:	47                   	inc    %edi
40b4d0:	83 e9 01             	sub    $0x1,%ecx
40b4d3:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40b4d9:	75 f2                	jne    0x40b4cd
40b4db:	f7 c1 04 00 00 00    	test   $0x4,%ecx
40b4e1:	74 08                	je     0x40b4eb
40b4e3:	89 07                	mov    %eax,(%edi)
40b4e5:	83 c7 04             	add    $0x4,%edi
40b4e8:	83 e9 04             	sub    $0x4,%ecx
40b4eb:	f7 c1 f8 ff ff ff    	test   $0xfffffff8,%ecx
40b4f1:	74 20                	je     0x40b513
40b4f3:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b4fa:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40b500:	89 07                	mov    %eax,(%edi)
40b502:	89 47 04             	mov    %eax,0x4(%edi)
40b505:	83 c7 08             	add    $0x8,%edi
40b508:	83 e9 08             	sub    $0x8,%ecx
40b50b:	f7 c1 f8 ff ff ff    	test   $0xfffffff8,%ecx
40b511:	75 ed                	jne    0x40b500
40b513:	8b 44 24 04          	mov    0x4(%esp),%eax
40b517:	8b fa                	mov    %edx,%edi
40b519:	c3                   	ret
40b51a:	cc                   	int3
40b51b:	cc                   	int3
40b51c:	cc                   	int3
40b51d:	cc                   	int3
40b51e:	cc                   	int3
40b51f:	cc                   	int3
40b520:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b524:	8b 44 24 04          	mov    0x4(%esp),%eax
40b528:	57                   	push   %edi
40b529:	53                   	push   %ebx
40b52a:	56                   	push   %esi
40b52b:	83 3d d0 f5 43 00 01 	cmpl   $0x1,0x43f5d0
40b532:	0f 82 d2 01 00 00    	jb     0x40b70a
40b538:	0f 87 01 01 00 00    	ja     0x40b63f
40b53e:	0f b6 11             	movzbl (%ecx),%edx
40b541:	8b da                	mov    %edx,%ebx
40b543:	c1 e2 08             	shl    $0x8,%edx
40b546:	0b d3                	or     %ebx,%edx
40b548:	0f 84 ed 00 00 00    	je     0x40b63b
40b54e:	66 0f 6e da          	movd   %edx,%xmm3
40b552:	f2 0f 70 db 00       	pshuflw $0x0,%xmm3,%xmm3
40b557:	0f 16 db             	movlhps %xmm3,%xmm3
40b55a:	66 0f ef c0          	pxor   %xmm0,%xmm0
40b55e:	8b f1                	mov    %ecx,%esi
40b560:	83 cf ff             	or     $0xffffffff,%edi
40b563:	0f b6 19             	movzbl (%ecx),%ebx
40b566:	83 c1 01             	add    $0x1,%ecx
40b569:	85 db                	test   %ebx,%ebx
40b56b:	74 1d                	je     0x40b58a
40b56d:	f7 c1 0f 00 00 00    	test   $0xf,%ecx
40b573:	75 ee                	jne    0x40b563
40b575:	66 0f 6f 11          	movdqa (%ecx),%xmm2
40b579:	66 0f 74 d0          	pcmpeqb %xmm0,%xmm2
40b57d:	66 0f d7 da          	pmovmskb %xmm2,%ebx
40b581:	85 db                	test   %ebx,%ebx
40b583:	75 05                	jne    0x40b58a
40b585:	bf 0f 00 00 00       	mov    $0xf,%edi
40b58a:	66 0f 7e da          	movd   %xmm3,%edx
40b58e:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b593:	23 d8                	and    %eax,%ebx
40b595:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b59b:	77 27                	ja     0x40b5c4
40b59d:	f3 0f 6f 08          	movdqu (%eax),%xmm1
40b5a1:	66 0f ef d2          	pxor   %xmm2,%xmm2
40b5a5:	66 0f 74 d1          	pcmpeqb %xmm1,%xmm2
40b5a9:	66 0f 74 cb          	pcmpeqb %xmm3,%xmm1
40b5ad:	66 0f eb ca          	por    %xmm2,%xmm1
40b5b1:	66 0f d7 d9          	pmovmskb %xmm1,%ebx
40b5b5:	83 c0 10             	add    $0x10,%eax
40b5b8:	85 db                	test   %ebx,%ebx
40b5ba:	74 d2                	je     0x40b58e
40b5bc:	0f bc db             	bsf    %ebx,%ebx
40b5bf:	83 e8 10             	sub    $0x10,%eax
40b5c2:	03 c3                	add    %ebx,%eax
40b5c4:	0f b6 18             	movzbl (%eax),%ebx
40b5c7:	85 db                	test   %ebx,%ebx
40b5c9:	0f 84 6a 00 00 00    	je     0x40b639
40b5cf:	83 c0 01             	add    $0x1,%eax
40b5d2:	3a d3                	cmp    %bl,%dl
40b5d4:	75 b8                	jne    0x40b58e
40b5d6:	8b d0                	mov    %eax,%edx
40b5d8:	8d 4e 01             	lea    0x1(%esi),%ecx
40b5db:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b5e0:	85 cf                	test   %ecx,%edi
40b5e2:	75 39                	jne    0x40b61d
40b5e4:	23 da                	and    %edx,%ebx
40b5e6:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b5ec:	77 2f                	ja     0x40b61d
40b5ee:	f3 0f 6f 0a          	movdqu (%edx),%xmm1
40b5f2:	66 0f 6f 11          	movdqa (%ecx),%xmm2
40b5f6:	66 0f 74 ca          	pcmpeqb %xmm2,%xmm1
40b5fa:	66 0f 74 d0          	pcmpeqb %xmm0,%xmm2
40b5fe:	66 0f 74 c8          	pcmpeqb %xmm0,%xmm1
40b602:	66 0f eb d1          	por    %xmm1,%xmm2
40b606:	66 0f d7 da          	pmovmskb %xmm2,%ebx
40b60a:	85 db                	test   %ebx,%ebx
40b60c:	75 08                	jne    0x40b616
40b60e:	83 c2 10             	add    $0x10,%edx
40b611:	83 c1 10             	add    $0x10,%ecx
40b614:	eb c5                	jmp    0x40b5db
40b616:	0f bc db             	bsf    %ebx,%ebx
40b619:	03 d3                	add    %ebx,%edx
40b61b:	03 cb                	add    %ebx,%ecx
40b61d:	0f b6 19             	movzbl (%ecx),%ebx
40b620:	85 db                	test   %ebx,%ebx
40b622:	74 10                	je     0x40b634
40b624:	3a 1a                	cmp    (%edx),%bl
40b626:	0f 85 5e ff ff ff    	jne    0x40b58a
40b62c:	83 c2 01             	add    $0x1,%edx
40b62f:	83 c1 01             	add    $0x1,%ecx
40b632:	eb a7                	jmp    0x40b5db
40b634:	48                   	dec    %eax
40b635:	5e                   	pop    %esi
40b636:	5b                   	pop    %ebx
40b637:	5f                   	pop    %edi
40b638:	c3                   	ret
40b639:	33 c0                	xor    %eax,%eax
40b63b:	5e                   	pop    %esi
40b63c:	5b                   	pop    %ebx
40b63d:	5f                   	pop    %edi
40b63e:	c3                   	ret
40b63f:	80 39 00             	cmpb   $0x0,(%ecx)
40b642:	74 f7                	je     0x40b63b
40b644:	8b f9                	mov    %ecx,%edi
40b646:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b64b:	23 d9                	and    %ecx,%ebx
40b64d:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b653:	77 06                	ja     0x40b65b
40b655:	f3 0f 6f 01          	movdqu (%ecx),%xmm0
40b659:	eb 22                	jmp    0x40b67d
40b65b:	bb 0f 00 00 00       	mov    $0xf,%ebx
40b660:	0f b6 31             	movzbl (%ecx),%esi
40b663:	83 c1 01             	add    $0x1,%ecx
40b666:	66 0f 3a 20 c6 0f    	pinsrb $0xf,%esi,%xmm0
40b66c:	66 0f 73 d8 01       	psrldq $0x1,%xmm0
40b671:	4b                   	dec    %ebx
40b672:	74 09                	je     0x40b67d
40b674:	85 f6                	test   %esi,%esi
40b676:	74 ee                	je     0x40b666
40b678:	eb e6                	jmp    0x40b660
40b67a:	83 c0 01             	add    $0x1,%eax
40b67d:	66 0f 7e c2          	movd   %xmm0,%edx
40b681:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b686:	23 d8                	and    %eax,%ebx
40b688:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b68e:	76 10                	jbe    0x40b6a0
40b690:	0f b6 18             	movzbl (%eax),%ebx
40b693:	85 db                	test   %ebx,%ebx
40b695:	74 a2                	je     0x40b639
40b697:	3a d3                	cmp    %bl,%dl
40b699:	74 18                	je     0x40b6b3
40b69b:	83 c0 01             	add    $0x1,%eax
40b69e:	eb e1                	jmp    0x40b681
40b6a0:	83 c0 10             	add    $0x10,%eax
40b6a3:	66 0f 3a 63 40 f0 0c 	pcmpistri $0xc,-0x10(%eax),%xmm0
40b6aa:	77 d5                	ja     0x40b681
40b6ac:	73 8b                	jae    0x40b639
40b6ae:	83 e8 10             	sub    $0x10,%eax
40b6b1:	03 c1                	add    %ecx,%eax
40b6b3:	8b d7                	mov    %edi,%edx
40b6b5:	8b f0                	mov    %eax,%esi
40b6b7:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b6bc:	23 de                	and    %esi,%ebx
40b6be:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b6c4:	77 29                	ja     0x40b6ef
40b6c6:	bb ff 0f 00 00       	mov    $0xfff,%ebx
40b6cb:	23 da                	and    %edx,%ebx
40b6cd:	81 fb f0 0f 00 00    	cmp    $0xff0,%ebx
40b6d3:	77 1a                	ja     0x40b6ef
40b6d5:	f3 0f 6f 0a          	movdqu (%edx),%xmm1
40b6d9:	83 c6 10             	add    $0x10,%esi
40b6dc:	83 c2 10             	add    $0x10,%edx
40b6df:	66 0f 3a 63 4e f0 0c 	pcmpistri $0xc,-0x10(%esi),%xmm1
40b6e6:	71 92                	jno    0x40b67a
40b6e8:	79 cd                	jns    0x40b6b7
40b6ea:	e9 4c ff ff ff       	jmp    0x40b63b
40b6ef:	0f b6 1a             	movzbl (%edx),%ebx
40b6f2:	85 db                	test   %ebx,%ebx
40b6f4:	0f 84 41 ff ff ff    	je     0x40b63b
40b6fa:	3a 1e                	cmp    (%esi),%bl
40b6fc:	0f 85 78 ff ff ff    	jne    0x40b67a
40b702:	83 c6 01             	add    $0x1,%esi
40b705:	83 c2 01             	add    $0x1,%edx
40b708:	eb ad                	jmp    0x40b6b7
40b70a:	8a 11                	mov    (%ecx),%dl
40b70c:	8b f8                	mov    %eax,%edi
40b70e:	84 d2                	test   %dl,%dl
40b710:	0f 84 6f 00 00 00    	je     0x40b785
40b716:	8a 71 01             	mov    0x1(%ecx),%dh
40b719:	84 f6                	test   %dh,%dh
40b71b:	74 55                	je     0x40b772
40b71d:	8b f7                	mov    %edi,%esi
40b71f:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40b723:	8a 07                	mov    (%edi),%al
40b725:	83 c6 01             	add    $0x1,%esi
40b728:	3a c2                	cmp    %dl,%al
40b72a:	74 17                	je     0x40b743
40b72c:	84 c0                	test   %al,%al
40b72e:	74 0d                	je     0x40b73d
40b730:	8a 06                	mov    (%esi),%al
40b732:	83 c6 01             	add    $0x1,%esi
40b735:	3a c2                	cmp    %dl,%al
40b737:	74 0a                	je     0x40b743
40b739:	84 c0                	test   %al,%al
40b73b:	75 f3                	jne    0x40b730
40b73d:	5e                   	pop    %esi
40b73e:	5b                   	pop    %ebx
40b73f:	5f                   	pop    %edi
40b740:	33 c0                	xor    %eax,%eax
40b742:	c3                   	ret
40b743:	8a 06                	mov    (%esi),%al
40b745:	83 c6 01             	add    $0x1,%esi
40b748:	3a c6                	cmp    %dh,%al
40b74a:	75 e9                	jne    0x40b735
40b74c:	8d 7e ff             	lea    -0x1(%esi),%edi
40b74f:	8a 61 02             	mov    0x2(%ecx),%ah
40b752:	84 e4                	test   %ah,%ah
40b754:	74 28                	je     0x40b77e
40b756:	8a 06                	mov    (%esi),%al
40b758:	83 c6 02             	add    $0x2,%esi
40b75b:	3a c4                	cmp    %ah,%al
40b75d:	75 be                	jne    0x40b71d
40b75f:	8a 41 03             	mov    0x3(%ecx),%al
40b762:	84 c0                	test   %al,%al
40b764:	74 18                	je     0x40b77e
40b766:	8a 66 ff             	mov    -0x1(%esi),%ah
40b769:	83 c1 02             	add    $0x2,%ecx
40b76c:	3a c4                	cmp    %ah,%al
40b76e:	74 df                	je     0x40b74f
40b770:	eb ab                	jmp    0x40b71d
40b772:	33 c0                	xor    %eax,%eax
40b774:	5e                   	pop    %esi
40b775:	5b                   	pop    %ebx
40b776:	5f                   	pop    %edi
40b777:	8a c2                	mov    %dl,%al
40b779:	e9 70 01 00 00       	jmp    0x40b8ee
40b77e:	8d 47 ff             	lea    -0x1(%edi),%eax
40b781:	5e                   	pop    %esi
40b782:	5b                   	pop    %ebx
40b783:	5f                   	pop    %edi
40b784:	c3                   	ret
40b785:	8b c7                	mov    %edi,%eax
40b787:	5e                   	pop    %esi
40b788:	5b                   	pop    %ebx
40b789:	5f                   	pop    %edi
40b78a:	c3                   	ret
40b78b:	55                   	push   %ebp
40b78c:	8b ec                	mov    %esp,%ebp
40b78e:	57                   	push   %edi
40b78f:	8b 7d 08             	mov    0x8(%ebp),%edi
40b792:	80 7f 04 00          	cmpb   $0x0,0x4(%edi)
40b796:	74 48                	je     0x40b7e0
40b798:	8b 0f                	mov    (%edi),%ecx
40b79a:	85 c9                	test   %ecx,%ecx
40b79c:	74 42                	je     0x40b7e0
40b79e:	8d 51 01             	lea    0x1(%ecx),%edx
40b7a1:	8a 01                	mov    (%ecx),%al
40b7a3:	41                   	inc    %ecx
40b7a4:	84 c0                	test   %al,%al
40b7a6:	75 f9                	jne    0x40b7a1
40b7a8:	2b ca                	sub    %edx,%ecx
40b7aa:	53                   	push   %ebx
40b7ab:	56                   	push   %esi
40b7ac:	8d 59 01             	lea    0x1(%ecx),%ebx
40b7af:	53                   	push   %ebx
40b7b0:	e8 7b b4 ff ff       	call   0x406c30
40b7b5:	8b f0                	mov    %eax,%esi
40b7b7:	59                   	pop    %ecx
40b7b8:	85 f6                	test   %esi,%esi
40b7ba:	74 19                	je     0x40b7d5
40b7bc:	ff 37                	push   (%edi)
40b7be:	53                   	push   %ebx
40b7bf:	56                   	push   %esi
40b7c0:	e8 10 07 01 00       	call   0x41bed5
40b7c5:	8b 45 0c             	mov    0xc(%ebp),%eax
40b7c8:	8b ce                	mov    %esi,%ecx
40b7ca:	83 c4 0c             	add    $0xc,%esp
40b7cd:	33 f6                	xor    %esi,%esi
40b7cf:	89 08                	mov    %ecx,(%eax)
40b7d1:	c6 40 04 01          	movb   $0x1,0x4(%eax)
40b7d5:	56                   	push   %esi
40b7d6:	e8 35 b4 ff ff       	call   0x406c10
40b7db:	59                   	pop    %ecx
40b7dc:	5e                   	pop    %esi
40b7dd:	5b                   	pop    %ebx
40b7de:	eb 0b                	jmp    0x40b7eb
40b7e0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b7e3:	8b 07                	mov    (%edi),%eax
40b7e5:	89 01                	mov    %eax,(%ecx)