408886:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408889:	5f                   	pop    %edi
40888a:	89 73 0c             	mov    %esi,0xc(%ebx)
40888d:	5e                   	pop    %esi
40888e:	8b c3                	mov    %ebx,%eax
408890:	33 cd                	xor    %ebp,%ecx
408892:	5b                   	pop    %ebx
408893:	e8 68 87 ff ff       	call   0x401000
408898:	c9                   	leave
408899:	c3                   	ret
40889a:	cc                   	int3
40889b:	cc                   	int3
40889c:	cc                   	int3
40889d:	cc                   	int3
40889e:	cc                   	int3
40889f:	cc                   	int3
4088a0:	57                   	push   %edi
4088a1:	56                   	push   %esi
4088a2:	55                   	push   %ebp
4088a3:	33 ff                	xor    %edi,%edi
4088a5:	33 ed                	xor    %ebp,%ebp
4088a7:	8b 44 24 14          	mov    0x14(%esp),%eax
4088ab:	0b c0                	or     %eax,%eax
4088ad:	7d 15                	jge    0x4088c4
4088af:	47                   	inc    %edi
4088b0:	45                   	inc    %ebp
4088b1:	8b 54 24 10          	mov    0x10(%esp),%edx
4088b5:	f7 d8                	neg    %eax
4088b7:	f7 da                	neg    %edx
4088b9:	83 d8 00             	sbb    $0x0,%eax
4088bc:	89 44 24 14          	mov    %eax,0x14(%esp)
4088c0:	89 54 24 10          	mov    %edx,0x10(%esp)
4088c4:	8b 44 24 1c          	mov    0x1c(%esp),%eax
4088c8:	0b c0                	or     %eax,%eax
4088ca:	7d 14                	jge    0x4088e0
4088cc:	47                   	inc    %edi
4088cd:	8b 54 24 18          	mov    0x18(%esp),%edx
4088d1:	f7 d8                	neg    %eax
4088d3:	f7 da                	neg    %edx
4088d5:	83 d8 00             	sbb    $0x0,%eax
4088d8:	89 44 24 1c          	mov    %eax,0x1c(%esp)
4088dc:	89 54 24 18          	mov    %edx,0x18(%esp)
4088e0:	0b c0                	or     %eax,%eax
4088e2:	75 28                	jne    0x40890c
4088e4:	8b 4c 24 18          	mov    0x18(%esp),%ecx
4088e8:	8b 44 24 14          	mov    0x14(%esp),%eax
4088ec:	33 d2                	xor    %edx,%edx
4088ee:	f7 f1                	div    %ecx
4088f0:	8b d8                	mov    %eax,%ebx
4088f2:	8b 44 24 10          	mov    0x10(%esp),%eax
4088f6:	f7 f1                	div    %ecx
4088f8:	8b f0                	mov    %eax,%esi
4088fa:	8b c3                	mov    %ebx,%eax
4088fc:	f7 64 24 18          	mull   0x18(%esp)
408900:	8b c8                	mov    %eax,%ecx
408902:	8b c6                	mov    %esi,%eax
408904:	f7 64 24 18          	mull   0x18(%esp)
408908:	03 d1                	add    %ecx,%edx
40890a:	eb 47                	jmp    0x408953
40890c:	8b d8                	mov    %eax,%ebx
40890e:	8b 4c 24 18          	mov    0x18(%esp),%ecx
408912:	8b 54 24 14          	mov    0x14(%esp),%edx
408916:	8b 44 24 10          	mov    0x10(%esp),%eax
40891a:	d1 eb                	shr    $1,%ebx
40891c:	d1 d9                	rcr    $1,%ecx
40891e:	d1 ea                	shr    $1,%edx
408920:	d1 d8                	rcr    $1,%eax
408922:	0b db                	or     %ebx,%ebx
408924:	75 f4                	jne    0x40891a
408926:	f7 f1                	div    %ecx
408928:	8b f0                	mov    %eax,%esi
40892a:	f7 64 24 1c          	mull   0x1c(%esp)
40892e:	8b c8                	mov    %eax,%ecx
408930:	8b 44 24 18          	mov    0x18(%esp),%eax
408934:	f7 e6                	mul    %esi
408936:	03 d1                	add    %ecx,%edx
408938:	72 0e                	jb     0x408948
40893a:	3b 54 24 14          	cmp    0x14(%esp),%edx
40893e:	77 08                	ja     0x408948
408940:	72 0f                	jb     0x408951
408942:	3b 44 24 10          	cmp    0x10(%esp),%eax
408946:	76 09                	jbe    0x408951
408948:	4e                   	dec    %esi
408949:	2b 44 24 18          	sub    0x18(%esp),%eax
40894d:	1b 54 24 1c          	sbb    0x1c(%esp),%edx
408951:	33 db                	xor    %ebx,%ebx
408953:	2b 44 24 10          	sub    0x10(%esp),%eax
408957:	1b 54 24 14          	sbb    0x14(%esp),%edx
40895b:	4d                   	dec    %ebp
40895c:	79 07                	jns    0x408965
40895e:	f7 da                	neg    %edx
408960:	f7 d8                	neg    %eax
408962:	83 da 00             	sbb    $0x0,%edx
408965:	8b ca                	mov    %edx,%ecx
408967:	8b d3                	mov    %ebx,%edx
408969:	8b d9                	mov    %ecx,%ebx
40896b:	8b c8                	mov    %eax,%ecx
40896d:	8b c6                	mov    %esi,%eax
40896f:	4f                   	dec    %edi
408970:	75 07                	jne    0x408979
408972:	f7 da                	neg    %edx
408974:	f7 d8                	neg    %eax
408976:	83 da 00             	sbb    $0x0,%edx
408979:	5d                   	pop    %ebp
40897a:	5e                   	pop    %esi
40897b:	5f                   	pop    %edi
40897c:	c2 10 00             	ret    $0x10
40897f:	cc                   	int3
408980:	80 f9 40             	cmp    $0x40,%cl
408983:	73 15                	jae    0x40899a
408985:	80 f9 20             	cmp    $0x20,%cl
408988:	73 06                	jae    0x408990
40898a:	0f ad d0             	shrd   %cl,%edx,%eax
40898d:	d3 ea                	shr    %cl,%edx
40898f:	c3                   	ret
408990:	8b c2                	mov    %edx,%eax
408992:	33 d2                	xor    %edx,%edx
408994:	80 e1 1f             	and    $0x1f,%cl
408997:	d3 e8                	shr    %cl,%eax
408999:	c3                   	ret
40899a:	33 c0                	xor    %eax,%eax
40899c:	33 d2                	xor    %edx,%edx
40899e:	c3                   	ret
40899f:	8b ff                	mov    %edi,%edi
4089a1:	55                   	push   %ebp
4089a2:	8b ec                	mov    %esp,%ebp
4089a4:	8b 45 10             	mov    0x10(%ebp),%eax
4089a7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4089aa:	25 ff ff f7 ff       	and    $0xfff7ffff,%eax
4089af:	23 c8                	and    %eax,%ecx
4089b1:	56                   	push   %esi
4089b2:	f7 c1 e0 fc f0 fc    	test   $0xfcf0fce0,%ecx
4089b8:	74 31                	je     0x4089eb
4089ba:	57                   	push   %edi
4089bb:	8b 7d 08             	mov    0x8(%ebp),%edi
4089be:	33 f6                	xor    %esi,%esi
4089c0:	3b fe                	cmp    %esi,%edi
4089c2:	74 0b                	je     0x4089cf
4089c4:	56                   	push   %esi
4089c5:	56                   	push   %esi
4089c6:	e8 2e 20 00 00       	call   0x40a9f9
4089cb:	59                   	pop    %ecx
4089cc:	59                   	pop    %ecx
4089cd:	89 07                	mov    %eax,(%edi)
4089cf:	e8 78 a4 ff ff       	call   0x402e4c
4089d4:	6a 16                	push   $0x16
4089d6:	5f                   	pop    %edi
4089d7:	56                   	push   %esi
4089d8:	56                   	push   %esi
4089d9:	56                   	push   %esi
4089da:	56                   	push   %esi
4089db:	56                   	push   %esi
4089dc:	89 38                	mov    %edi,(%eax)
4089de:	e8 5e b2 ff ff       	call   0x403c41
4089e3:	83 c4 14             	add    $0x14,%esp
4089e6:	8b c7                	mov    %edi,%eax
4089e8:	5f                   	pop    %edi
4089e9:	eb 1d                	jmp    0x408a08
4089eb:	8b 75 08             	mov    0x8(%ebp),%esi
4089ee:	50                   	push   %eax
4089ef:	ff 75 0c             	push   0xc(%ebp)
4089f2:	85 f6                	test   %esi,%esi
4089f4:	74 09                	je     0x4089ff
4089f6:	e8 fe 1f 00 00       	call   0x40a9f9
4089fb:	89 06                	mov    %eax,(%esi)
4089fd:	eb 05                	jmp    0x408a04
4089ff:	e8 f5 1f 00 00       	call   0x40a9f9
408a04:	59                   	pop    %ecx
408a05:	59                   	pop    %ecx
408a06:	33 c0                	xor    %eax,%eax
408a08:	5e                   	pop    %esi
408a09:	5d                   	pop    %ebp
408a0a:	c3                   	ret
408a0b:	55                   	push   %ebp
408a0c:	8b ec                	mov    %esp,%ebp
408a0e:	83 ec 04             	sub    $0x4,%esp
408a11:	89 7d fc             	mov    %edi,-0x4(%ebp)
408a14:	8b 7d 08             	mov    0x8(%ebp),%edi
408a17:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408a1a:	c1 e9 07             	shr    $0x7,%ecx
408a1d:	66 0f ef c0          	pxor   %xmm0,%xmm0
408a21:	eb 08                	jmp    0x408a2b
408a23:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
408a2a:	90                   	nop
408a2b:	66 0f 7f 07          	movdqa %xmm0,(%edi)
408a2f:	66 0f 7f 47 10       	movdqa %xmm0,0x10(%edi)
408a34:	66 0f 7f 47 20       	movdqa %xmm0,0x20(%edi)
408a39:	66 0f 7f 47 30       	movdqa %xmm0,0x30(%edi)
408a3e:	66 0f 7f 47 40       	movdqa %xmm0,0x40(%edi)
408a43:	66 0f 7f 47 50       	movdqa %xmm0,0x50(%edi)
408a48:	66 0f 7f 47 60       	movdqa %xmm0,0x60(%edi)
408a4d:	66 0f 7f 47 70       	movdqa %xmm0,0x70(%edi)
408a52:	8d bf 80 00 00 00    	lea    0x80(%edi),%edi
408a58:	49                   	dec    %ecx
408a59:	75 d0                	jne    0x408a2b
408a5b:	8b 7d fc             	mov    -0x4(%ebp),%edi
408a5e:	8b e5                	mov    %ebp,%esp
408a60:	5d                   	pop    %ebp
408a61:	c3                   	ret
408a62:	55                   	push   %ebp
408a63:	8b ec                	mov    %esp,%ebp
408a65:	83 ec 10             	sub    $0x10,%esp
408a68:	89 7d fc             	mov    %edi,-0x4(%ebp)
408a6b:	8b 45 08             	mov    0x8(%ebp),%eax
408a6e:	99                   	cltd
408a6f:	8b f8                	mov    %eax,%edi
408a71:	33 fa                	xor    %edx,%edi
408a73:	2b fa                	sub    %edx,%edi
408a75:	83 e7 0f             	and    $0xf,%edi
408a78:	33 fa                	xor    %edx,%edi
408a7a:	2b fa                	sub    %edx,%edi
408a7c:	85 ff                	test   %edi,%edi
408a7e:	75 3c                	jne    0x408abc
408a80:	8b 4d 10             	mov    0x10(%ebp),%ecx
408a83:	8b d1                	mov    %ecx,%edx
408a85:	83 e2 7f             	and    $0x7f,%edx
408a88:	89 55 f4             	mov    %edx,-0xc(%ebp)
408a8b:	3b ca                	cmp    %edx,%ecx
408a8d:	74 12                	je     0x408aa1
408a8f:	2b ca                	sub    %edx,%ecx
408a91:	51                   	push   %ecx
408a92:	50                   	push   %eax
408a93:	e8 73 ff ff ff       	call   0x408a0b
408a98:	83 c4 08             	add    $0x8,%esp
408a9b:	8b 45 08             	mov    0x8(%ebp),%eax
408a9e:	8b 55 f4             	mov    -0xc(%ebp),%edx
408aa1:	85 d2                	test   %edx,%edx
408aa3:	74 45                	je     0x408aea
408aa5:	03 45 10             	add    0x10(%ebp),%eax
408aa8:	2b c2                	sub    %edx,%eax
408aaa:	89 45 f8             	mov    %eax,-0x8(%ebp)
408aad:	33 c0                	xor    %eax,%eax
408aaf:	8b 7d f8             	mov    -0x8(%ebp),%edi
408ab2:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408ab5:	f3 aa                	rep stos %al,%es:(%edi)
408ab7:	8b 45 08             	mov    0x8(%ebp),%eax
408aba:	eb 2e                	jmp    0x408aea
408abc:	f7 df                	neg    %edi
408abe:	83 c7 10             	add    $0x10,%edi
408ac1:	89 7d f0             	mov    %edi,-0x10(%ebp)
408ac4:	33 c0                	xor    %eax,%eax
408ac6:	8b 7d 08             	mov    0x8(%ebp),%edi
408ac9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
408acc:	f3 aa                	rep stos %al,%es:(%edi)
408ace:	8b 45 f0             	mov    -0x10(%ebp),%eax
408ad1:	8b 4d 08             	mov    0x8(%ebp),%ecx
408ad4:	8b 55 10             	mov    0x10(%ebp),%edx
408ad7:	03 c8                	add    %eax,%ecx
408ad9:	2b d0                	sub    %eax,%edx
408adb:	52                   	push   %edx
408adc:	6a 00                	push   $0x0
408ade:	51                   	push   %ecx
408adf:	e8 7e ff ff ff       	call   0x408a62
408ae4:	83 c4 0c             	add    $0xc,%esp
408ae7:	8b 45 08             	mov    0x8(%ebp),%eax
408aea:	8b 7d fc             	mov    -0x4(%ebp),%edi
408aed:	8b e5                	mov    %ebp,%esp
408aef:	5d                   	pop    %ebp
408af0:	c3                   	ret
408af1:	8b ff                	mov    %edi,%edi
408af3:	55                   	push   %ebp
408af4:	8b ec                	mov    %esp,%ebp
408af6:	83 ec 18             	sub    $0x18,%esp
408af9:	53                   	push   %ebx
408afa:	ff 75 10             	push   0x10(%ebp)
408afd:	8d 4d e8             	lea    -0x18(%ebp),%ecx
408b00:	e8 c9 ba ff ff       	call   0x4045ce
408b05:	8b 5d 08             	mov    0x8(%ebp),%ebx
408b08:	8d 43 01             	lea    0x1(%ebx),%eax
408b0b:	3d 00 01 00 00       	cmp    $0x100,%eax
408b10:	77 0f                	ja     0x408b21
408b12:	8b 45 e8             	mov    -0x18(%ebp),%eax
408b15:	8b 80 c8 00 00 00    	mov    0xc8(%eax),%eax
408b1b:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
408b1f:	eb 75                	jmp    0x408b96
408b21:	89 5d 08             	mov    %ebx,0x8(%ebp)
408b24:	c1 7d 08 08          	sarl   $0x8,0x8(%ebp)
408b28:	8d 45 e8             	lea    -0x18(%ebp),%eax
408b2b:	50                   	push   %eax
408b2c:	8b 45 08             	mov    0x8(%ebp),%eax
408b2f:	25 ff 00 00 00       	and    $0xff,%eax
408b34:	50                   	push   %eax
408b35:	e8 9f 02 00 00       	call   0x408dd9
408b3a:	59                   	pop    %ecx
408b3b:	59                   	pop    %ecx
408b3c:	85 c0                	test   %eax,%eax
408b3e:	74 12                	je     0x408b52
408b40:	8a 45 08             	mov    0x8(%ebp),%al
408b43:	6a 02                	push   $0x2
408b45:	88 45 f8             	mov    %al,-0x8(%ebp)
408b48:	88 5d f9             	mov    %bl,-0x7(%ebp)
408b4b:	c6 45 fa 00          	movb   $0x0,-0x6(%ebp)
408b4f:	59                   	pop    %ecx
408b50:	eb 0a                	jmp    0x408b5c
408b52:	33 c9                	xor    %ecx,%ecx
408b54:	88 5d f8             	mov    %bl,-0x8(%ebp)
408b57:	c6 45 f9 00          	movb   $0x0,-0x7(%ebp)
408b5b:	41                   	inc    %ecx
408b5c:	8b 45 e8             	mov    -0x18(%ebp),%eax
408b5f:	6a 01                	push   $0x1
408b61:	ff 70 14             	push   0x14(%eax)
408b64:	ff 70 04             	push   0x4(%eax)
408b67:	8d 45 fc             	lea    -0x4(%ebp),%eax
408b6a:	50                   	push   %eax
408b6b:	51                   	push   %ecx
408b6c:	8d 45 f8             	lea    -0x8(%ebp),%eax
408b6f:	50                   	push   %eax
408b70:	8d 45 e8             	lea    -0x18(%ebp),%eax
408b73:	6a 01                	push   $0x1
408b75:	50                   	push   %eax
408b76:	e8 2e ea ff ff       	call   0x4075a9
408b7b:	83 c4 20             	add    $0x20,%esp
408b7e:	85 c0                	test   %eax,%eax
408b80:	75 10                	jne    0x408b92
408b82:	38 45 f4             	cmp    %al,-0xc(%ebp)
408b85:	74 07                	je     0x408b8e
408b87:	8b 45 f0             	mov    -0x10(%ebp),%eax
408b8a:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
408b8e:	33 c0                	xor    %eax,%eax
408b90:	eb 14                	jmp    0x408ba6
408b92:	0f b7 45 fc          	movzwl -0x4(%ebp),%eax
408b96:	23 45 0c             	and    0xc(%ebp),%eax
408b99:	80 7d f4 00          	cmpb   $0x0,-0xc(%ebp)
408b9d:	74 07                	je     0x408ba6
408b9f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
408ba2:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
408ba6:	5b                   	pop    %ebx
408ba7:	c9                   	leave
408ba8:	c3                   	ret
408ba9:	cc                   	int3
408baa:	cc                   	int3
408bab:	cc                   	int3
408bac:	cc                   	int3
408bad:	cc                   	int3
408bae:	cc                   	int3
408baf:	cc                   	int3
408bb0:	51                   	push   %ecx
408bb1:	8d 4c 24 08          	lea    0x8(%esp),%ecx
408bb5:	2b c8                	sub    %eax,%ecx
408bb7:	83 e1 0f             	and    $0xf,%ecx
408bba:	03 c1                	add    %ecx,%eax
408bbc:	1b c9                	sbb    %ecx,%ecx
408bbe:	0b c1                	or     %ecx,%eax
408bc0:	59                   	pop    %ecx
408bc1:	e9 4a 21 00 00       	jmp    0x40ad10
408bc6:	51                   	push   %ecx
408bc7:	8d 4c 24 08          	lea    0x8(%esp),%ecx
408bcb:	2b c8                	sub    %eax,%ecx
408bcd:	83 e1 07             	and    $0x7,%ecx
408bd0:	03 c1                	add    %ecx,%eax