5a1765:	8b c6                	mov    %esi,%eax
5a1767:	c1 e8 02             	shr    $0x2,%eax
5a176a:	33 c2                	xor    %edx,%eax
5a176c:	25 33 33 33 33       	and    $0x33333333,%eax
5a1771:	33 d0                	xor    %eax,%edx
5a1773:	c1 e0 02             	shl    $0x2,%eax
5a1776:	33 f0                	xor    %eax,%esi
5a1778:	8b c2                	mov    %edx,%eax
5a177a:	c1 e8 08             	shr    $0x8,%eax
5a177d:	33 c6                	xor    %esi,%eax
5a177f:	25 ff 00 ff 00       	and    $0xff00ff,%eax
5a1784:	33 f0                	xor    %eax,%esi
5a1786:	c1 e0 08             	shl    $0x8,%eax
5a1789:	33 d0                	xor    %eax,%edx
5a178b:	8b ce                	mov    %esi,%ecx
5a178d:	d1 e9                	shr    $1,%ecx
5a178f:	33 ca                	xor    %edx,%ecx
5a1791:	81 e1 55 55 55 55    	and    $0x55555555,%ecx
5a1797:	8b c1                	mov    %ecx,%eax
5a1799:	33 c2                	xor    %edx,%eax
5a179b:	89 07                	mov    %eax,(%edi)
5a179d:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
5a17a0:	33 c6                	xor    %esi,%eax
5a17a2:	57                   	push   %edi
5a17a3:	89 47 04             	mov    %eax,0x4(%edi)
5a17a6:	e8 05 fd ff ff       	call   0x5a14b0
5a17ab:	6a 00                	push   $0x0
5a17ad:	ff 74 24 24          	push   0x24(%esp)
5a17b1:	57                   	push   %edi
5a17b2:	e8 f9 fc ff ff       	call   0x5a14b0
5a17b7:	6a 01                	push   $0x1
5a17b9:	ff 74 24 34          	push   0x34(%esp)
5a17bd:	57                   	push   %edi
5a17be:	e8 ed fc ff ff       	call   0x5a14b0
5a17c3:	8b 77 04             	mov    0x4(%edi),%esi
5a17c6:	83 c4 24             	add    $0x24,%esp
5a17c9:	8b 17                	mov    (%edi),%edx
5a17cb:	8b c6                	mov    %esi,%eax
5a17cd:	d1 e8                	shr    $1,%eax
5a17cf:	33 c2                	xor    %edx,%eax
5a17d1:	25 55 55 55 55       	and    $0x55555555,%eax
5a17d6:	33 d0                	xor    %eax,%edx
5a17d8:	03 c0                	add    %eax,%eax
5a17da:	33 f0                	xor    %eax,%esi
5a17dc:	8b c2                	mov    %edx,%eax
5a17de:	c1 e8 08             	shr    $0x8,%eax
5a17e1:	33 c6                	xor    %esi,%eax
5a17e3:	25 ff 00 ff 00       	and    $0xff00ff,%eax
5a17e8:	33 f0                	xor    %eax,%esi
5a17ea:	c1 e0 08             	shl    $0x8,%eax
5a17ed:	33 d0                	xor    %eax,%edx
5a17ef:	8b c6                	mov    %esi,%eax
5a17f1:	c1 e8 02             	shr    $0x2,%eax
5a17f4:	33 c2                	xor    %edx,%eax
5a17f6:	25 33 33 33 33       	and    $0x33333333,%eax
5a17fb:	33 d0                	xor    %eax,%edx
5a17fd:	c1 e0 02             	shl    $0x2,%eax
5a1800:	33 f0                	xor    %eax,%esi
5a1802:	8b c2                	mov    %edx,%eax
5a1804:	c1 e8 10             	shr    $0x10,%eax
5a1807:	33 c6                	xor    %esi,%eax
5a1809:	0f b7 c0             	movzwl %ax,%eax
5a180c:	33 f0                	xor    %eax,%esi
5a180e:	c1 e0 10             	shl    $0x10,%eax
5a1811:	8b ce                	mov    %esi,%ecx
5a1813:	33 d0                	xor    %eax,%edx
5a1815:	c1 e9 04             	shr    $0x4,%ecx
5a1818:	33 ca                	xor    %edx,%ecx
5a181a:	81 e1 0f 0f 0f 0f    	and    $0xf0f0f0f,%ecx
5a1820:	8b c1                	mov    %ecx,%eax
5a1822:	c1 e1 04             	shl    $0x4,%ecx
5a1825:	33 ce                	xor    %esi,%ecx
5a1827:	33 c2                	xor    %edx,%eax
5a1829:	89 07                	mov    %eax,(%edi)
5a182b:	89 4f 04             	mov    %ecx,0x4(%edi)
5a182e:	5f                   	pop    %edi
5a182f:	5e                   	pop    %esi
5a1830:	c3                   	ret
5a1831:	cc                   	int3
5a1832:	cc                   	int3
5a1833:	cc                   	int3
5a1834:	cc                   	int3
5a1835:	cc                   	int3
5a1836:	cc                   	int3
5a1837:	cc                   	int3
5a1838:	cc                   	int3
5a1839:	cc                   	int3
5a183a:	cc                   	int3
5a183b:	cc                   	int3
5a183c:	cc                   	int3
5a183d:	cc                   	int3
5a183e:	cc                   	int3
5a183f:	cc                   	int3
5a1840:	b8 08 00 00 00       	mov    $0x8,%eax
5a1845:	e8 a6 fc 03 00       	call   0x5e14f0
5a184a:	83 7c 24 2c 00       	cmpl   $0x0,0x2c(%esp)
5a184f:	8b 44 24 28          	mov    0x28(%esp),%eax
5a1853:	53                   	push   %ebx
5a1854:	55                   	push   %ebp
5a1855:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
5a1859:	56                   	push   %esi
5a185a:	8b 30                	mov    (%eax),%esi
5a185c:	57                   	push   %edi
5a185d:	0f 84 f9 00 00 00    	je     0x5a195c
5a1863:	85 ed                	test   %ebp,%ebp
5a1865:	0f 84 ec 01 00 00    	je     0x5a1a57
5a186b:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5a186f:	8b 4c 24 20          	mov    0x20(%esp),%ecx
5a1873:	2b c1                	sub    %ecx,%eax
5a1875:	8b 54 24 34          	mov    0x34(%esp),%edx
5a1879:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5a187d:	89 44 24 3c          	mov    %eax,0x3c(%esp)
5a1881:	4d                   	dec    %ebp
5a1882:	85 f6                	test   %esi,%esi
5a1884:	0f 85 a4 00 00 00    	jne    0x5a192e
5a188a:	0f b6 0a             	movzbl (%edx),%ecx
5a188d:	8d 5a 01             	lea    0x1(%edx),%ebx
5a1890:	0f b6 03             	movzbl (%ebx),%eax
5a1893:	0f b6 53 03          	movzbl 0x3(%ebx),%edx
5a1897:	ff 74 24 30          	push   0x30(%esp)
5a189b:	c1 e0 08             	shl    $0x8,%eax
5a189e:	ff 74 24 30          	push   0x30(%esp)
5a18a2:	0b c8                	or     %eax,%ecx
5a18a4:	0f b6 43 01          	movzbl 0x1(%ebx),%eax
5a18a8:	ff 74 24 30          	push   0x30(%esp)
5a18ac:	c1 e0 10             	shl    $0x10,%eax
5a18af:	0b c8                	or     %eax,%ecx
5a18b1:	0f b6 43 02          	movzbl 0x2(%ebx),%eax
5a18b5:	c1 e0 18             	shl    $0x18,%eax
5a18b8:	0b c8                	or     %eax,%ecx
5a18ba:	0f b6 43 04          	movzbl 0x4(%ebx),%eax
5a18be:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5a18c2:	0f b6 4b 06          	movzbl 0x6(%ebx),%ecx
5a18c6:	c1 e0 08             	shl    $0x8,%eax
5a18c9:	0b d0                	or     %eax,%edx
5a18cb:	c1 e1 08             	shl    $0x8,%ecx
5a18ce:	0f b6 43 05          	movzbl 0x5(%ebx),%eax
5a18d2:	0b c8                	or     %eax,%ecx
5a18d4:	8d 44 24 1c          	lea    0x1c(%esp),%eax
5a18d8:	c1 e1 10             	shl    $0x10,%ecx
5a18db:	0b ca                	or     %edx,%ecx
5a18dd:	50                   	push   %eax
5a18de:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5a18e2:	e8 49 fe ff ff       	call   0x5a1730
5a18e7:	8b 4c 24 20          	mov    0x20(%esp),%ecx
5a18eb:	83 c4 10             	add    $0x10,%esp
5a18ee:	8b 54 24 34          	mov    0x34(%esp),%edx
5a18f2:	8b c1                	mov    %ecx,%eax
5a18f4:	c1 e8 08             	shr    $0x8,%eax
5a18f7:	88 0a                	mov    %cl,(%edx)
5a18f9:	88 03                	mov    %al,(%ebx)
5a18fb:	8b c1                	mov    %ecx,%eax
5a18fd:	c1 e8 10             	shr    $0x10,%eax
5a1900:	88 43 01             	mov    %al,0x1(%ebx)
5a1903:	c1 e9 18             	shr    $0x18,%ecx
5a1906:	88 4b 02             	mov    %cl,0x2(%ebx)
5a1909:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5a190d:	8b c1                	mov    %ecx,%eax
5a190f:	c1 e8 08             	shr    $0x8,%eax
5a1912:	88 4b 03             	mov    %cl,0x3(%ebx)
5a1915:	88 43 04             	mov    %al,0x4(%ebx)
5a1918:	8b c1                	mov    %ecx,%eax
5a191a:	c1 e8 10             	shr    $0x10,%eax
5a191d:	c1 e9 18             	shr    $0x18,%ecx
5a1920:	88 43 05             	mov    %al,0x5(%ebx)
5a1923:	8b 44 24 3c          	mov    0x3c(%esp),%eax
5a1927:	88 4b 06             	mov    %cl,0x6(%ebx)
5a192a:	8b 4c 24 24          	mov    0x24(%esp),%ecx
5a192e:	8a 04 08             	mov    (%eax,%ecx,1),%al
5a1931:	32 04 16             	xor    (%esi,%edx,1),%al
5a1934:	88 01                	mov    %al,(%ecx)
5a1936:	41                   	inc    %ecx
5a1937:	88 04 16             	mov    %al,(%esi,%edx,1)
5a193a:	46                   	inc    %esi
5a193b:	8b 44 24 3c          	mov    0x3c(%esp),%eax
5a193f:	83 e6 07             	and    $0x7,%esi
5a1942:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5a1946:	85 ed                	test   %ebp,%ebp
5a1948:	0f 85 33 ff ff ff    	jne    0x5a1881
5a194e:	8b 44 24 38          	mov    0x38(%esp),%eax
5a1952:	5f                   	pop    %edi
5a1953:	89 30                	mov    %esi,(%eax)
5a1955:	5e                   	pop    %esi
5a1956:	5d                   	pop    %ebp
5a1957:	5b                   	pop    %ebx
5a1958:	83 c4 08             	add    $0x8,%esp
5a195b:	c3                   	ret
5a195c:	85 ed                	test   %ebp,%ebp
5a195e:	0f 84 f3 00 00 00    	je     0x5a1a57
5a1964:	8b 44 24 20          	mov    0x20(%esp),%eax
5a1968:	8b 54 24 34          	mov    0x34(%esp),%edx
5a196c:	89 44 24 3c          	mov    %eax,0x3c(%esp)
5a1970:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5a1974:	89 44 24 24          	mov    %eax,0x24(%esp)
5a1978:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
5a197f:	00
5a1980:	4d                   	dec    %ebp
5a1981:	85 f6                	test   %esi,%esi
5a1983:	0f 85 a0 00 00 00    	jne    0x5a1a29
5a1989:	0f b6 0a             	movzbl (%edx),%ecx
5a198c:	8d 5a 01             	lea    0x1(%edx),%ebx
5a198f:	0f b6 03             	movzbl (%ebx),%eax
5a1992:	0f b6 53 03          	movzbl 0x3(%ebx),%edx
5a1996:	ff 74 24 30          	push   0x30(%esp)
5a199a:	c1 e0 08             	shl    $0x8,%eax
5a199d:	ff 74 24 30          	push   0x30(%esp)
5a19a1:	0b c8                	or     %eax,%ecx
5a19a3:	0f b6 43 01          	movzbl 0x1(%ebx),%eax
5a19a7:	ff 74 24 30          	push   0x30(%esp)
5a19ab:	c1 e0 10             	shl    $0x10,%eax
5a19ae:	0b c8                	or     %eax,%ecx
5a19b0:	0f b6 43 02          	movzbl 0x2(%ebx),%eax
5a19b4:	c1 e0 18             	shl    $0x18,%eax
5a19b7:	0b c8                	or     %eax,%ecx
5a19b9:	0f b6 43 04          	movzbl 0x4(%ebx),%eax
5a19bd:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5a19c1:	0f b6 4b 06          	movzbl 0x6(%ebx),%ecx
5a19c5:	c1 e0 08             	shl    $0x8,%eax
5a19c8:	0b d0                	or     %eax,%edx
5a19ca:	c1 e1 08             	shl    $0x8,%ecx
5a19cd:	0f b6 43 05          	movzbl 0x5(%ebx),%eax
5a19d1:	0b c8                	or     %eax,%ecx
5a19d3:	8d 44 24 1c          	lea    0x1c(%esp),%eax
5a19d7:	c1 e1 10             	shl    $0x10,%ecx
5a19da:	0b ca                	or     %edx,%ecx
5a19dc:	50                   	push   %eax
5a19dd:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5a19e1:	e8 4a fd ff ff       	call   0x5a1730
5a19e6:	8b 4c 24 20          	mov    0x20(%esp),%ecx
5a19ea:	83 c4 10             	add    $0x10,%esp
5a19ed:	8b 54 24 34          	mov    0x34(%esp),%edx
5a19f1:	8b c1                	mov    %ecx,%eax
5a19f3:	c1 e8 08             	shr    $0x8,%eax
5a19f6:	88 0a                	mov    %cl,(%edx)
5a19f8:	88 03                	mov    %al,(%ebx)
5a19fa:	8b c1                	mov    %ecx,%eax
5a19fc:	c1 e8 10             	shr    $0x10,%eax
5a19ff:	88 43 01             	mov    %al,0x1(%ebx)
5a1a02:	c1 e9 18             	shr    $0x18,%ecx
5a1a05:	88 4b 02             	mov    %cl,0x2(%ebx)
5a1a08:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5a1a0c:	8b c1                	mov    %ecx,%eax
5a1a0e:	c1 e8 08             	shr    $0x8,%eax
5a1a11:	88 4b 03             	mov    %cl,0x3(%ebx)
5a1a14:	88 43 04             	mov    %al,0x4(%ebx)
5a1a17:	8b c1                	mov    %ecx,%eax
5a1a19:	c1 e8 10             	shr    $0x10,%eax
5a1a1c:	88 43 05             	mov    %al,0x5(%ebx)
5a1a1f:	8b 44 24 24          	mov    0x24(%esp),%eax
5a1a23:	c1 e9 18             	shr    $0x18,%ecx
5a1a26:	88 4b 06             	mov    %cl,0x6(%ebx)
5a1a29:	8a 08                	mov    (%eax),%cl
5a1a2b:	40                   	inc    %eax
5a1a2c:	89 44 24 24          	mov    %eax,0x24(%esp)
5a1a30:	8a 04 16             	mov    (%esi,%edx,1),%al
5a1a33:	88 0c 16             	mov    %cl,(%esi,%edx,1)
5a1a36:	32 c8                	xor    %al,%cl
5a1a38:	8b 44 24 3c          	mov    0x3c(%esp),%eax
5a1a3c:	46                   	inc    %esi
5a1a3d:	83 e6 07             	and    $0x7,%esi
5a1a40:	88 08                	mov    %cl,(%eax)
5a1a42:	40                   	inc    %eax
5a1a43:	89 44 24 3c          	mov    %eax,0x3c(%esp)
5a1a47:	8b 44 24 24          	mov    0x24(%esp),%eax
5a1a4b:	85 ed                	test   %ebp,%ebp
5a1a4d:	0f 85 2d ff ff ff    	jne    0x5a1980
5a1a53:	8b 44 24 38          	mov    0x38(%esp),%eax
5a1a57:	5f                   	pop    %edi
5a1a58:	89 30                	mov    %esi,(%eax)
5a1a5a:	5e                   	pop    %esi
5a1a5b:	5d                   	pop    %ebp
5a1a5c:	5b                   	pop    %ebx
5a1a5d:	83 c4 08             	add    $0x8,%esp
5a1a60:	c3                   	ret
5a1a61:	cc                   	int3
5a1a62:	cc                   	int3
5a1a63:	cc                   	int3
5a1a64:	cc                   	int3
5a1a65:	cc                   	int3
5a1a66:	cc                   	int3
5a1a67:	cc                   	int3
5a1a68:	cc                   	int3
5a1a69:	cc                   	int3
5a1a6a:	cc                   	int3
5a1a6b:	cc                   	int3
5a1a6c:	cc                   	int3
5a1a6d:	cc                   	int3
5a1a6e:	cc                   	int3
5a1a6f:	cc                   	int3
5a1a70:	b8 48 00 00 00       	mov    $0x48,%eax
5a1a75:	e8 76 fa 03 00       	call   0x5e14f0
5a1a7a:	a1 d4 89 72 00       	mov    0x7289d4,%eax
5a1a7f:	33 c4                	xor    %esp,%eax
5a1a81:	89 44 24 44          	mov    %eax,0x44(%esp)
5a1a85:	8b 44 24 5c          	mov    0x5c(%esp),%eax
5a1a89:	55                   	push   %ebp
5a1a8a:	8b 6c 24 58          	mov    0x58(%esp),%ebp
5a1a8e:	56                   	push   %esi
5a1a8f:	8b 74 24 58          	mov    0x58(%esp),%esi
5a1a93:	89 44 24 30          	mov    %eax,0x30(%esp)
5a1a97:	8b 44 24 68          	mov    0x68(%esp),%eax
5a1a9b:	57                   	push   %edi
5a1a9c:	89 44 24 30          	mov    %eax,0x30(%esp)
5a1aa0:	8d 7d 07             	lea    0x7(%ebp),%edi
5a1aa3:	8b 44 24 70          	mov    0x70(%esp),%eax
5a1aa7:	89 44 24 2c          	mov    %eax,0x2c(%esp)
5a1aab:	8b 44 24 74          	mov    0x74(%esp),%eax
5a1aaf:	c1 ef 03             	shr    $0x3,%edi
5a1ab2:	89 44 24 3c          	mov    %eax,0x3c(%esp)
5a1ab6:	83 fd 40             	cmp    $0x40,%ebp
5a1ab9:	0f 8f f9 06 00 00    	jg     0x5a21b8
5a1abf:	0f b6 08             	movzbl (%eax),%ecx
5a1ac2:	8d 50 01             	lea    0x1(%eax),%edx
5a1ac5:	0f b6 02             	movzbl (%edx),%eax
5a1ac8:	c1 e0 08             	shl    $0x8,%eax
5a1acb:	0b c8                	or     %eax,%ecx
5a1acd:	0f b6 42 01          	movzbl 0x1(%edx),%eax
5a1ad1:	c1 e0 10             	shl    $0x10,%eax
5a1ad4:	0b c8                	or     %eax,%ecx
5a1ad6:	0f b6 42 02          	movzbl 0x2(%edx),%eax
5a1ada:	c1 e0 18             	shl    $0x18,%eax
5a1add:	0b c8                	or     %eax,%ecx
5a1adf:	0f b6 42 04          	movzbl 0x4(%edx),%eax
5a1ae3:	53                   	push   %ebx
5a1ae4:	0f b6 5a 03          	movzbl 0x3(%edx),%ebx
5a1ae8:	89 4c 24 14          	mov    %ecx,0x14(%esp)
5a1aec:	0f b6 4a 06          	movzbl 0x6(%edx),%ecx
5a1af0:	c1 e0 08             	shl    $0x8,%eax
5a1af3:	0b d8                	or     %eax,%ebx
5a1af5:	c1 e1 08             	shl    $0x8,%ecx
5a1af8:	0f b6 42 05          	movzbl 0x5(%edx),%eax
5a1afc:	0b c8                	or     %eax,%ecx
5a1afe:	8b 44 24 68          	mov    0x68(%esp),%eax
5a1b02:	c1 e1 10             	shl    $0x10,%ecx
5a1b05:	0b d9                	or     %ecx,%ebx
5a1b07:	83 7c 24 7c 00       	cmpl   $0x0,0x7c(%esp)
5a1b0c:	0f 84 23 03 00 00    	je     0x5a1e35
5a1b12:	3b c7                	cmp    %edi,%eax
5a1b14:	0f 82 64 06 00 00    	jb     0x5a217e
5a1b1a:	8b cd                	mov    %ebp,%ecx
5a1b1c:	81 e1 07 00 00 80    	and    $0x80000007,%ecx
5a1b22:	79 05                	jns    0x5a1b29
5a1b24:	49                   	dec    %ecx
5a1b25:	83 c9 f8             	or     $0xfffffff8,%ecx
5a1b28:	41                   	inc    %ecx
5a1b29:	8b 6c 24 5c          	mov    0x5c(%esp),%ebp
5a1b2d:	ba 08 00 00 00       	mov    $0x8,%edx
5a1b32:	2b d1                	sub    %ecx,%edx
5a1b34:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5a1b38:	8b 4c 24 14          	mov    0x14(%esp),%ecx