46ead8:	52                   	push   %edx
46ead9:	6a 02                	push   $0x2
46eadb:	6a 01                	push   $0x1
46eadd:	53                   	push   %ebx
46eade:	e8 bd a3 f9 ff       	call   0x408ea0
46eae3:	83 c4 14             	add    $0x14,%esp
46eae6:	8b f0                	mov    %eax,%esi
46eae8:	8b ce                	mov    %esi,%ecx
46eaea:	e8 a8 ae f9 ff       	call   0x409997
46eaef:	8b 46 08             	mov    0x8(%esi),%eax
46eaf2:	6a 01                	push   $0x1
46eaf4:	ff 75 f8             	push   -0x8(%ebp)
46eaf7:	8b 78 04             	mov    0x4(%eax),%edi
46eafa:	6a 02                	push   $0x2
46eafc:	6a 01                	push   $0x1
46eafe:	53                   	push   %ebx
46eaff:	e8 9c a3 f9 ff       	call   0x408ea0
46eb04:	83 c4 14             	add    $0x14,%esp
46eb07:	8b f0                	mov    %eax,%esi
46eb09:	8b ce                	mov    %esi,%ecx
46eb0b:	e8 87 ae f9 ff       	call   0x409997
46eb10:	8b 46 08             	mov    0x8(%esi),%eax
46eb13:	8b 75 f0             	mov    -0x10(%ebp),%esi
46eb16:	8b 55 f8             	mov    -0x8(%ebp),%edx
46eb19:	83 c6 02             	add    $0x2,%esi
46eb1c:	8b 40 04             	mov    0x4(%eax),%eax
46eb1f:	03 c7                	add    %edi,%eax
46eb21:	03 f0                	add    %eax,%esi
46eb23:	42                   	inc    %edx
46eb24:	89 75 f0             	mov    %esi,-0x10(%ebp)
46eb27:	eb 9d                	jmp    0x46eac6
46eb29:	33 c9                	xor    %ecx,%ecx
46eb2b:	8d 46 01             	lea    0x1(%esi),%eax
46eb2e:	6a 02                	push   $0x2
46eb30:	5e                   	pop    %esi
46eb31:	f7 e6                	mul    %esi
46eb33:	0f 90 c1             	seto   %cl
46eb36:	f7 d9                	neg    %ecx
46eb38:	0b c8                	or     %eax,%ecx
46eb3a:	51                   	push   %ecx
46eb3b:	e8 b6 24 fb ff       	call   0x420ff6
46eb40:	8b 5d f4             	mov    -0xc(%ebp),%ebx
46eb43:	8b f8                	mov    %eax,%edi
46eb45:	59                   	pop    %ecx
46eb46:	89 45 f0             	mov    %eax,-0x10(%ebp)
46eb49:	8b 55 fc             	mov    -0x4(%ebp),%edx
46eb4c:	8b ca                	mov    %edx,%ecx
46eb4e:	6a 01                	push   $0x1
46eb50:	e8 16 a3 f9 ff       	call   0x408e6b
46eb55:	3b d8                	cmp    %eax,%ebx
46eb57:	7d 79                	jge    0x46ebd2
46eb59:	6a 00                	push   $0x0
46eb5b:	53                   	push   %ebx
46eb5c:	56                   	push   %esi
46eb5d:	6a 01                	push   $0x1
46eb5f:	52                   	push   %edx
46eb60:	e8 3b a3 f9 ff       	call   0x408ea0
46eb65:	83 c4 14             	add    $0x14,%esp
46eb68:	8b f0                	mov    %eax,%esi
46eb6a:	8b ce                	mov    %esi,%ecx
46eb6c:	e8 26 ae f9 ff       	call   0x409997
46eb71:	8b 46 08             	mov    0x8(%esi),%eax
46eb74:	6a 02                	push   $0x2
46eb76:	5a                   	pop    %edx
46eb77:	8b 00                	mov    (%eax),%eax
46eb79:	0f b7 08             	movzwl (%eax),%ecx
46eb7c:	66 85 c9             	test   %cx,%cx
46eb7f:	74 09                	je     0x46eb8a
46eb81:	66 89 0f             	mov    %cx,(%edi)
46eb84:	03 fa                	add    %edx,%edi
46eb86:	03 c2                	add    %edx,%eax
46eb88:	eb ef                	jmp    0x46eb79
46eb8a:	6a 3d                	push   $0x3d
46eb8c:	58                   	pop    %eax
46eb8d:	6a 01                	push   $0x1
46eb8f:	53                   	push   %ebx
46eb90:	52                   	push   %edx
46eb91:	6a 01                	push   $0x1
46eb93:	ff 75 fc             	push   -0x4(%ebp)
46eb96:	66 89 07             	mov    %ax,(%edi)
46eb99:	03 fa                	add    %edx,%edi
46eb9b:	e8 00 a3 f9 ff       	call   0x408ea0
46eba0:	83 c4 14             	add    $0x14,%esp
46eba3:	8b f0                	mov    %eax,%esi
46eba5:	8b ce                	mov    %esi,%ecx
46eba7:	e8 eb ad f9 ff       	call   0x409997
46ebac:	8b 46 08             	mov    0x8(%esi),%eax
46ebaf:	6a 02                	push   $0x2
46ebb1:	5e                   	pop    %esi
46ebb2:	8b 00                	mov    (%eax),%eax
46ebb4:	0f b7 08             	movzwl (%eax),%ecx
46ebb7:	66 85 c9             	test   %cx,%cx
46ebba:	74 09                	je     0x46ebc5
46ebbc:	66 89 0f             	mov    %cx,(%edi)
46ebbf:	03 fe                	add    %esi,%edi
46ebc1:	03 c6                	add    %esi,%eax
46ebc3:	eb ef                	jmp    0x46ebb4
46ebc5:	33 c0                	xor    %eax,%eax
46ebc7:	66 89 07             	mov    %ax,(%edi)
46ebca:	03 fe                	add    %esi,%edi
46ebcc:	43                   	inc    %ebx
46ebcd:	e9 77 ff ff ff       	jmp    0x46eb49
46ebd2:	8b 5d f0             	mov    -0x10(%ebp),%ebx
46ebd5:	33 c0                	xor    %eax,%eax
46ebd7:	66 89 07             	mov    %ax,(%edi)
46ebda:	8b 7d 08             	mov    0x8(%ebp),%edi
46ebdd:	eb 76                	jmp    0x46ec55
46ebdf:	83 7e 0c 04          	cmpl   $0x4,0xc(%esi)
46ebe3:	0f 85 b5 00 00 00    	jne    0x46ec9e
46ebe9:	8b ce                	mov    %esi,%ecx
46ebeb:	e8 a7 ad f9 ff       	call   0x409997
46ebf0:	8b 46 08             	mov    0x8(%esi),%eax
46ebf3:	33 c9                	xor    %ecx,%ecx
46ebf5:	8b 40 04             	mov    0x4(%eax),%eax
46ebf8:	83 c0 02             	add    $0x2,%eax
46ebfb:	f7 e3                	mul    %ebx
46ebfd:	0f 90 c1             	seto   %cl
46ec00:	f7 d9                	neg    %ecx
46ec02:	0b c8                	or     %eax,%ecx
46ec04:	51                   	push   %ecx
46ec05:	e8 ec 23 fb ff       	call   0x420ff6
46ec0a:	8b 7d 08             	mov    0x8(%ebp),%edi
46ec0d:	8b d8                	mov    %eax,%ebx
46ec0f:	59                   	pop    %ecx
46ec10:	8b 47 04             	mov    0x4(%edi),%eax
46ec13:	8b 70 08             	mov    0x8(%eax),%esi
46ec16:	8b ce                	mov    %esi,%ecx
46ec18:	e8 7a ad f9 ff       	call   0x409997
46ec1d:	8b 46 08             	mov    0x8(%esi),%eax
46ec20:	6a 0a                	push   $0xa
46ec22:	5a                   	pop    %edx
46ec23:	6a 02                	push   $0x2
46ec25:	8b 08                	mov    (%eax),%ecx
46ec27:	8b c3                	mov    %ebx,%eax
46ec29:	89 55 08             	mov    %edx,0x8(%ebp)
46ec2c:	5e                   	pop    %esi
46ec2d:	66 39 11             	cmp    %dx,(%ecx)
46ec30:	75 04                	jne    0x46ec36
46ec32:	03 ce                	add    %esi,%ecx
46ec34:	eb f7                	jmp    0x46ec2d
46ec36:	0f b7 11             	movzwl (%ecx),%edx
46ec39:	66 3b 55 08          	cmp    0x8(%ebp),%dx
46ec3d:	75 04                	jne    0x46ec43
46ec3f:	33 d2                	xor    %edx,%edx
46ec41:	eb 05                	jmp    0x46ec48
46ec43:	66 85 d2             	test   %dx,%dx
46ec46:	74 09                	je     0x46ec51
46ec48:	66 89 10             	mov    %dx,(%eax)
46ec4b:	03 c6                	add    %esi,%eax
46ec4d:	03 ce                	add    %esi,%ecx
46ec4f:	eb e5                	jmp    0x46ec36
46ec51:	33 c9                	xor    %ecx,%ecx
46ec53:	89 08                	mov    %ecx,(%eax)
46ec55:	8b 47 04             	mov    0x4(%edi),%eax
46ec58:	8b 70 04             	mov    0x4(%eax),%esi
46ec5b:	8b ce                	mov    %esi,%ecx
46ec5d:	e8 35 ad f9 ff       	call   0x409997
46ec62:	ff 75 e0             	push   -0x20(%ebp)
46ec65:	8b 46 08             	mov    0x8(%esi),%eax
46ec68:	53                   	push   %ebx
46ec69:	ff 30                	push   (%eax)
46ec6b:	ff 15 a0 f2 48 00    	call   *0x48f2a0
46ec71:	85 c0                	test   %eax,%eax
46ec73:	74 20                	je     0x46ec95
46ec75:	ff 75 e0             	push   -0x20(%ebp)
46ec78:	33 c0                	xor    %eax,%eax
46ec7a:	50                   	push   %eax
46ec7b:	50                   	push   %eax
46ec7c:	50                   	push   %eax
46ec7d:	ff 15 98 f2 48 00    	call   *0x48f298
46ec83:	8b 75 0c             	mov    0xc(%ebp),%esi
46ec86:	8b ce                	mov    %esi,%ecx
46ec88:	e8 93 ad f9 ff       	call   0x409a20
46ec8d:	33 c0                	xor    %eax,%eax
46ec8f:	40                   	inc    %eax
46ec90:	89 46 0c             	mov    %eax,0xc(%esi)
46ec93:	89 06                	mov    %eax,(%esi)
46ec95:	53                   	push   %ebx
46ec96:	e8 d1 23 fb ff       	call   0x42106c
46ec9b:	59                   	pop    %ecx
46ec9c:	eb 10                	jmp    0x46ecae
46ec9e:	8b 07                	mov    (%edi),%eax
46eca0:	6a 00                	push   $0x0
46eca2:	6a 01                	push   $0x1
46eca4:	8b 48 04             	mov    0x4(%eax),%ecx
46eca7:	03 cf                	add    %edi,%ecx
46eca9:	e8 f5 7d fe ff       	call   0x456aa3
46ecae:	8d 4d e0             	lea    -0x20(%ebp),%ecx
46ecb1:	e8 ae 6d f9 ff       	call   0x405a64
46ecb6:	5f                   	pop    %edi
46ecb7:	5e                   	pop    %esi
46ecb8:	33 c0                	xor    %eax,%eax
46ecba:	5b                   	pop    %ebx
46ecbb:	8b e5                	mov    %ebp,%esp
46ecbd:	5d                   	pop    %ebp
46ecbe:	c2 08 00             	ret    $0x8
46ecc1:	55                   	push   %ebp
46ecc2:	8b ec                	mov    %esp,%ebp
46ecc4:	53                   	push   %ebx
46ecc5:	56                   	push   %esi
46ecc6:	8b 75 0c             	mov    0xc(%ebp),%esi
46ecc9:	8b ce                	mov    %esi,%ecx
46eccb:	e8 1c 92 f9 ff       	call   0x407eec
46ecd0:	8b 5d 08             	mov    0x8(%ebp),%ebx
46ecd3:	f6 c3 01             	test   $0x1,%bl
46ecd6:	74 0c                	je     0x46ece4
46ecd8:	68 84 a8 4b 00       	push   $0x4ba884
46ecdd:	8b ce                	mov    %esi,%ecx
46ecdf:	e8 27 91 f9 ff       	call   0x407e0b
46ece4:	f6 c3 20             	test   $0x20,%bl
46ece7:	74 0c                	je     0x46ecf5
46ece9:	68 88 a8 4b 00       	push   $0x4ba888
46ecee:	8b ce                	mov    %esi,%ecx
46ecf0:	e8 16 91 f9 ff       	call   0x407e0b
46ecf5:	f6 c3 04             	test   $0x4,%bl
46ecf8:	74 0c                	je     0x46ed06
46ecfa:	68 a0 93 4b 00       	push   $0x4b93a0
46ecff:	8b ce                	mov    %esi,%ecx
46ed01:	e8 05 91 f9 ff       	call   0x407e0b
46ed06:	f6 c3 02             	test   $0x2,%bl
46ed09:	74 0c                	je     0x46ed17
46ed0b:	68 58 96 4b 00       	push   $0x4b9658
46ed10:	8b ce                	mov    %esi,%ecx
46ed12:	e8 f4 90 f9 ff       	call   0x407e0b
46ed17:	84 db                	test   %bl,%bl
46ed19:	79 0c                	jns    0x46ed27
46ed1b:	68 8c a8 4b 00       	push   $0x4ba88c
46ed20:	8b ce                	mov    %esi,%ecx
46ed22:	e8 e4 90 f9 ff       	call   0x407e0b
46ed27:	f6 c3 10             	test   $0x10,%bl
46ed2a:	74 0c                	je     0x46ed38
46ed2c:	68 a4 93 4b 00       	push   $0x4b93a4
46ed31:	8b ce                	mov    %esi,%ecx
46ed33:	e8 d3 90 f9 ff       	call   0x407e0b
46ed38:	f7 c3 00 10 00 00    	test   $0x1000,%ebx
46ed3e:	74 0c                	je     0x46ed4c
46ed40:	68 90 a8 4b 00       	push   $0x4ba890
46ed45:	8b ce                	mov    %esi,%ecx
46ed47:	e8 bf 90 f9 ff       	call   0x407e0b
46ed4c:	f7 c3 00 08 00 00    	test   $0x800,%ebx
46ed52:	74 0c                	je     0x46ed60
46ed54:	68 94 a8 4b 00       	push   $0x4ba894
46ed59:	8b ce                	mov    %esi,%ecx
46ed5b:	e8 ab 90 f9 ff       	call   0x407e0b
46ed60:	f7 c3 00 01 00 00    	test   $0x100,%ebx
46ed66:	74 0c                	je     0x46ed74
46ed68:	68 98 a8 4b 00       	push   $0x4ba898
46ed6d:	8b ce                	mov    %esi,%ecx
46ed6f:	e8 97 90 f9 ff       	call   0x407e0b
46ed74:	f7 c3 00 40 00 00    	test   $0x4000,%ebx
46ed7a:	74 0c                	je     0x46ed88
46ed7c:	68 4c 96 4b 00       	push   $0x4b964c
46ed81:	8b ce                	mov    %esi,%ecx
46ed83:	e8 83 90 f9 ff       	call   0x407e0b
46ed88:	5e                   	pop    %esi
46ed89:	5b                   	pop    %ebx
46ed8a:	5d                   	pop    %ebp
46ed8b:	c2 08 00             	ret    $0x8
46ed8e:	55                   	push   %ebp
46ed8f:	8b ec                	mov    %esp,%ebp
46ed91:	83 e4 f8             	and    $0xfffffff8,%esp
46ed94:	81 ec d4 00 00 00    	sub    $0xd4,%esp
46ed9a:	53                   	push   %ebx
46ed9b:	56                   	push   %esi
46ed9c:	8b d9                	mov    %ecx,%ebx
46ed9e:	8d 4c 24 74          	lea    0x74(%esp),%ecx
46eda2:	57                   	push   %edi
46eda3:	e8 1f 8a f9 ff       	call   0x4077c7
46eda8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
46edab:	33 c0                	xor    %eax,%eax
46edad:	68 10 f9 48 00       	push   $0x48f910
46edb2:	89 44 24 28          	mov    %eax,0x28(%esp)
46edb6:	e8 3d ae f9 ff       	call   0x409bf8
46edbb:	8b 7d 08             	mov    0x8(%ebp),%edi
46edbe:	8b 47 04             	mov    0x4(%edi),%eax
46edc1:	8b 30                	mov    (%eax),%esi
46edc3:	8b ce                	mov    %esi,%ecx
46edc5:	e8 cd ab f9 ff       	call   0x409997
46edca:	8b 4e 08             	mov    0x8(%esi),%ecx
46edcd:	8b 01                	mov    (%ecx),%eax
46edcf:	89 44 24 34          	mov    %eax,0x34(%esp)
46edd3:	89 44 24 48          	mov    %eax,0x48(%esp)
46edd7:	8b 41 04             	mov    0x4(%ecx),%eax
46edda:	89 44 24 4c          	mov    %eax,0x4c(%esp)
46edde:	8b 41 08             	mov    0x8(%ecx),%eax
46ede1:	89 44 24 50          	mov    %eax,0x50(%esp)
46ede5:	8b 41 0c             	mov    0xc(%ecx),%eax
46ede8:	89 44 24 54          	mov    %eax,0x54(%esp)
46edec:	ff 00                	incl   (%eax)
46edee:	8b 47 04             	mov    0x4(%edi),%eax
46edf1:	8b 70 04             	mov    0x4(%eax),%esi
46edf4:	8b ce                	mov    %esi,%ecx
46edf6:	e8 9c ab f9 ff       	call   0x409997
46edfb:	8b 4e 08             	mov    0x8(%esi),%ecx
46edfe:	8b 01                	mov    (%ecx),%eax
46ee00:	89 44 24 28          	mov    %eax,0x28(%esp)
46ee04:	89 44 24 68          	mov    %eax,0x68(%esp)
46ee08:	8b 41 04             	mov    0x4(%ecx),%eax
46ee0b:	89 44 24 6c          	mov    %eax,0x6c(%esp)
46ee0f:	8b 41 08             	mov    0x8(%ecx),%eax
46ee12:	89 44 24 70          	mov    %eax,0x70(%esp)
46ee16:	8b 41 0c             	mov    0xc(%ecx),%eax
46ee19:	8d 4c 24 14          	lea    0x14(%esp),%ecx
46ee1d:	89 44 24 74          	mov    %eax,0x74(%esp)
46ee21:	ff 00                	incl   (%eax)
46ee23:	e8 9f 89 f9 ff       	call   0x4077c7
46ee28:	8d 4c 24 38          	lea    0x38(%esp),%ecx
46ee2c:	e8 96 89 f9 ff       	call   0x4077c7
46ee31:	8b 47 04             	mov    0x4(%edi),%eax
46ee34:	8b 70 08             	mov    0x8(%eax),%esi
46ee37:	8b ce                	mov    %esi,%ecx
46ee39:	e8 59 ab f9 ff       	call   0x409997
46ee3e:	8b 46 08             	mov    0x8(%esi),%eax
46ee41:	8b 08                	mov    (%eax),%ecx
46ee43:	e8 7e 10 fb ff       	call   0x41fec6
46ee48:	50                   	push   %eax
46ee49:	8d 4c 24 30          	lea    0x30(%esp),%ecx
46ee4d:	e8 3c 65 f9 ff       	call   0x40538e
46ee52:	be 88 95 4b 00       	mov    $0x4b9588,%esi
46ee57:	56                   	push   %esi
46ee58:	ff 74 24 30          	push   0x30(%esp)
46ee5c:	e9 9e 00 00 00       	jmp    0x46eeff
46ee61:	50                   	push   %eax
46ee62:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
46ee66:	e8 c1 8e f9 ff       	call   0x407d2c
46ee6b:	68 10 9e 4b 00       	push   $0x4b9e10
46ee70:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
46ee74:	e8 73 68 ff ff       	call   0x4656ec
46ee79:	68 14 9e 4b 00       	push   $0x4b9e14
46ee7e:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
46ee82:	89 44 24 10          	mov    %eax,0x10(%esp)
46ee86:	e8 61 68 ff ff       	call   0x4656ec
46ee8b:	8b f0                	mov    %eax,%esi
46ee8d:	8b 44 24 0c          	mov    0xc(%esp),%eax
46ee91:	83 f8 ff             	cmp    $0xffffffff,%eax
46ee94:	0f 84 fd 00 00 00    	je     0x46ef97
46ee9a:	83 fe ff             	cmp    $0xffffffff,%esi
46ee9d:	0f 84 f4 00 00 00    	je     0x46ef97
46eea3:	3b f0                	cmp    %eax,%esi
46eea5:	0f 82 ec 00 00 00    	jb     0x46ef97
46eeab:	8d 44 24 38          	lea    0x38(%esp),%eax
46eeaf:	50                   	push   %eax
46eeb0:	8d 4c 24 18          	lea    0x18(%esp),%ecx
46eeb4:	e8 d5 8d f9 ff       	call   0x407c8e
46eeb9:	68 88 95 4b 00       	push   $0x4b9588
46eebe:	8d 4c 24 18          	lea    0x18(%esp),%ecx
46eec2:	e8 44 8f f9 ff       	call   0x407e0b
46eec7:	8b 44 24 0c          	mov    0xc(%esp),%eax
46eecb:	8d 4c 24 78          	lea    0x78(%esp),%ecx
46eecf:	2b f0                	sub    %eax,%esi