46f82c:	33 c5                	xor    %ebp,%eax
46f82e:	89 45 f0             	mov    %eax,-0x10(%ebp)
46f831:	53                   	push   %ebx
46f832:	56                   	push   %esi
46f833:	57                   	push   %edi
46f834:	50                   	push   %eax
46f835:	8d 45 f4             	lea    -0xc(%ebp),%eax
46f838:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
46f83e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46f841:	8d 8d 60 ff ff ff    	lea    -0xa0(%ebp),%ecx
46f847:	8b 7d 08             	mov    0x8(%ebp),%edi
46f84a:	51                   	push   %ecx
46f84b:	8b cb                	mov    %ebx,%ecx
46f84d:	89 9d 74 ff ff ff    	mov    %ebx,-0x8c(%ebp)
46f853:	8b 03                	mov    (%ebx),%eax
46f855:	ff 50 48             	call   *0x48(%eax)
46f858:	8b cf                	mov    %edi,%ecx
46f85a:	33 f6                	xor    %esi,%esi
46f85c:	8b 40 04             	mov    0x4(%eax),%eax
46f85f:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
46f865:	e8 36 99 fe ff       	call   0x4591a0
46f86a:	83 f8 0b             	cmp    $0xb,%eax
46f86d:	0f 85 c7 01 00 00    	jne    0x46fa3a
46f873:	8b cf                	mov    %edi,%ecx
46f875:	e8 16 ed 02 00       	call   0x49e590
46f87a:	84 c0                	test   %al,%al
46f87c:	0f 84 b8 01 00 00    	je     0x46fa3a
46f882:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46f888:	57                   	push   %edi
46f889:	53                   	push   %ebx
46f88a:	e8 71 52 ff ff       	call   0x464b00
46f88f:	8b c8                	mov    %eax,%ecx
46f891:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
46f897:	e8 54 36 03 00       	call   0x4a2ef0
46f89c:	84 c0                	test   %al,%al
46f89e:	0f 84 96 01 00 00    	je     0x46fa3a
46f8a4:	57                   	push   %edi
46f8a5:	53                   	push   %ebx
46f8a6:	8d 4d a8             	lea    -0x58(%ebp),%ecx
46f8a9:	e8 12 2c ff ff       	call   0x4624c0
46f8ae:	57                   	push   %edi
46f8af:	53                   	push   %ebx
46f8b0:	8d 8d 78 ff ff ff    	lea    -0x88(%ebp),%ecx
46f8b6:	89 75 fc             	mov    %esi,-0x4(%ebp)
46f8b9:	e8 02 2c ff ff       	call   0x4624c0
46f8be:	8b cf                	mov    %edi,%ecx
46f8c0:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
46f8c4:	e8 57 ed 02 00       	call   0x49e620
46f8c9:	8b cf                	mov    %edi,%ecx
46f8cb:	8b 40 14             	mov    0x14(%eax),%eax
46f8ce:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
46f8d4:	e8 47 ed 02 00       	call   0x49e620
46f8d9:	8b 9d 6c ff ff ff    	mov    -0x94(%ebp),%ebx
46f8df:	8d 4d a8             	lea    -0x58(%ebp),%ecx
46f8e2:	51                   	push   %ecx
46f8e3:	8b cb                	mov    %ebx,%ecx
46f8e5:	8b 40 14             	mov    0x14(%eax),%eax
46f8e8:	83 c0 58             	add    $0x58,%eax
46f8eb:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46f8f1:	8b 03                	mov    (%ebx),%eax
46f8f3:	ff 50 18             	call   *0x18(%eax)
46f8f6:	8b 03                	mov    (%ebx),%eax
46f8f8:	8d 8d 78 ff ff ff    	lea    -0x88(%ebp),%ecx
46f8fe:	51                   	push   %ecx
46f8ff:	8b cb                	mov    %ebx,%ecx
46f901:	ff 50 1c             	call   *0x1c(%eax)
46f904:	8b 4d ac             	mov    -0x54(%ebp),%ecx
46f907:	8d 95 78 ff ff ff    	lea    -0x88(%ebp),%edx
46f90d:	52                   	push   %edx
46f90e:	8d 55 a8             	lea    -0x58(%ebp),%edx
46f911:	52                   	push   %edx
46f912:	8b 01                	mov    (%ecx),%eax
46f914:	8b 40 14             	mov    0x14(%eax),%eax
46f917:	ff d0                	call   *%eax
46f919:	84 c0                	test   %al,%al
46f91b:	75 61                	jne    0x46f97e
46f91d:	8b 9d 68 ff ff ff    	mov    -0x98(%ebp),%ebx
46f923:	8d 45 b0             	lea    -0x50(%ebp),%eax
46f926:	50                   	push   %eax
46f927:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46f92d:	e8 6e 2d 00 00       	call   0x4726a0
46f932:	8d 78 02             	lea    0x2(%eax),%edi
46f935:	8d 45 d0             	lea    -0x30(%ebp),%eax
46f938:	50                   	push   %eax
46f939:	53                   	push   %ebx
46f93a:	e8 41 2f 00 00       	call   0x472880
46f93f:	03 f8                	add    %eax,%edi
46f941:	8b 4d ac             	mov    -0x54(%ebp),%ecx
46f944:	8b c7                	mov    %edi,%eax
46f946:	8d 55 a8             	lea    -0x58(%ebp),%edx
46f949:	83 c8 01             	or     $0x1,%eax
46f94c:	83 c4 10             	add    $0x10,%esp
46f94f:	0f bd c0             	bsr    %eax,%eax
46f952:	52                   	push   %edx
46f953:	8d 04 c0             	lea    (%eax,%eax,8),%eax
46f956:	83 c0 49             	add    $0x49,%eax
46f959:	c1 e8 06             	shr    $0x6,%eax
46f95c:	03 c7                	add    %edi,%eax
46f95e:	03 f0                	add    %eax,%esi
46f960:	8b 01                	mov    (%ecx),%eax
46f962:	ff 50 48             	call   *0x48(%eax)
46f965:	8b 4d ac             	mov    -0x54(%ebp),%ecx
46f968:	8d 95 78 ff ff ff    	lea    -0x88(%ebp),%edx
46f96e:	52                   	push   %edx
46f96f:	8d 55 a8             	lea    -0x58(%ebp),%edx
46f972:	52                   	push   %edx
46f973:	8b 01                	mov    (%ecx),%eax
46f975:	8b 40 14             	mov    0x14(%eax),%eax
46f978:	ff d0                	call   *%eax
46f97a:	84 c0                	test   %al,%al
46f97c:	74 a5                	je     0x46f923
46f97e:	8b 8d 7c ff ff ff    	mov    -0x84(%ebp),%ecx
46f984:	8d 95 78 ff ff ff    	lea    -0x88(%ebp),%edx
46f98a:	52                   	push   %edx
46f98b:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
46f98f:	8b 01                	mov    (%ecx),%eax
46f991:	ff 50 40             	call   *0x40(%eax)
46f994:	83 7d 98 09          	cmpl   $0x9,-0x68(%ebp)
46f998:	75 46                	jne    0x46f9e0
46f99a:	8b 55 94             	mov    -0x6c(%ebp),%edx
46f99d:	83 fa 10             	cmp    $0x10,%edx
46f9a0:	72 2c                	jb     0x46f9ce
46f9a2:	8b 4d 80             	mov    -0x80(%ebp),%ecx
46f9a5:	42                   	inc    %edx
46f9a6:	8b c1                	mov    %ecx,%eax
46f9a8:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
46f9ae:	72 14                	jb     0x46f9c4
46f9b0:	8b 49 fc             	mov    -0x4(%ecx),%ecx
46f9b3:	83 c2 23             	add    $0x23,%edx
46f9b6:	2b c1                	sub    %ecx,%eax
46f9b8:	83 c0 fc             	add    $0xfffffffc,%eax
46f9bb:	83 f8 1f             	cmp    $0x1f,%eax
46f9be:	0f 87 4a 06 00 00    	ja     0x47000e
46f9c4:	52                   	push   %edx
46f9c5:	51                   	push   %ecx
46f9c6:	e8 8a 18 16 00       	call   0x5d1255
46f9cb:	83 c4 08             	add    $0x8,%esp
46f9ce:	c7 45 90 00 00 00 00 	movl   $0x0,-0x70(%ebp)
46f9d5:	c7 45 94 0f 00 00 00 	movl   $0xf,-0x6c(%ebp)
46f9dc:	c6 45 80 00          	movb   $0x0,-0x80(%ebp)
46f9e0:	8b 4d ac             	mov    -0x54(%ebp),%ecx
46f9e3:	8d 55 a8             	lea    -0x58(%ebp),%edx
46f9e6:	52                   	push   %edx
46f9e7:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
46f9ee:	8b 01                	mov    (%ecx),%eax
46f9f0:	ff 50 40             	call   *0x40(%eax)
46f9f3:	83 7d c8 09          	cmpl   $0x9,-0x38(%ebp)
46f9f7:	0f 85 12 01 00 00    	jne    0x46fb0f
46f9fd:	8b 55 c4             	mov    -0x3c(%ebp),%edx
46fa00:	83 fa 10             	cmp    $0x10,%edx
46fa03:	0f 82 06 01 00 00    	jb     0x46fb0f
46fa09:	8b 4d b0             	mov    -0x50(%ebp),%ecx
46fa0c:	42                   	inc    %edx
46fa0d:	8b c1                	mov    %ecx,%eax
46fa0f:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
46fa15:	72 14                	jb     0x46fa2b
46fa17:	8b 49 fc             	mov    -0x4(%ecx),%ecx
46fa1a:	83 c2 23             	add    $0x23,%edx
46fa1d:	2b c1                	sub    %ecx,%eax
46fa1f:	83 c0 fc             	add    $0xfffffffc,%eax
46fa22:	83 f8 1f             	cmp    $0x1f,%eax
46fa25:	0f 87 e3 05 00 00    	ja     0x47000e
46fa2b:	52                   	push   %edx
46fa2c:	51                   	push   %ecx
46fa2d:	e8 23 18 16 00       	call   0x5d1255
46fa32:	83 c4 08             	add    $0x8,%esp
46fa35:	e9 d5 00 00 00       	jmp    0x46fb0f
46fa3a:	33 db                	xor    %ebx,%ebx
46fa3c:	83 7f 20 03          	cmpl   $0x3,0x20(%edi)
46fa40:	75 16                	jne    0x46fa58
46fa42:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fa48:	57                   	push   %edi
46fa49:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fa4f:	e8 9c 46 ff ff       	call   0x4640f0
46fa54:	8b d8                	mov    %eax,%ebx
46fa56:	eb 2e                	jmp    0x46fa86
46fa58:	8b 47 30             	mov    0x30(%edi),%eax
46fa5b:	8b 40 10             	mov    0x10(%eax),%eax
46fa5e:	38 58 2f             	cmp    %bl,0x2f(%eax)
46fa61:	74 07                	je     0x46fa6a
46fa63:	bb 01 00 00 00       	mov    $0x1,%ebx
46fa68:	eb 1c                	jmp    0x46fa86
46fa6a:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fa70:	57                   	push   %edi
46fa71:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fa77:	e8 44 63 ff ff       	call   0x465dc0
46fa7c:	84 c0                	test   %al,%al
46fa7e:	b9 01 00 00 00       	mov    $0x1,%ecx
46fa83:	0f 45 d9             	cmovne %ecx,%ebx
46fa86:	8b cf                	mov    %edi,%ecx
46fa88:	e8 13 97 fe ff       	call   0x4591a0
46fa8d:	48                   	dec    %eax
46fa8e:	83 f8 11             	cmp    $0x11,%eax
46fa91:	0f 87 78 00 00 00    	ja     0x46fb0f
46fa97:	ff 24 85 14 00 47 00 	jmp    *0x470014(,%eax,4)
46fa9e:	83 7f 20 03          	cmpl   $0x3,0x20(%edi)
46faa2:	75 4e                	jne    0x46faf2
46faa4:	33 c0                	xor    %eax,%eax
46faa6:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46faac:	85 db                	test   %ebx,%ebx
46faae:	74 5f                	je     0x46fb0f
46fab0:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fab6:	50                   	push   %eax
46fab7:	57                   	push   %edi
46fab8:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fabe:	e8 7d 57 ff ff       	call   0x465240
46fac3:	85 c0                	test   %eax,%eax
46fac5:	79 07                	jns    0x46face
46fac7:	b8 0a 00 00 00       	mov    $0xa,%eax
46facc:	eb 0f                	jmp    0x46fadd
46face:	83 c8 01             	or     $0x1,%eax
46fad1:	0f bd c0             	bsr    %eax,%eax
46fad4:	8d 04 c0             	lea    (%eax,%eax,8),%eax
46fad7:	83 c0 49             	add    $0x49,%eax
46fada:	c1 e8 06             	shr    $0x6,%eax
46fadd:	03 f0                	add    %eax,%esi
46fadf:	8b 85 68 ff ff ff    	mov    -0x98(%ebp),%eax
46fae5:	40                   	inc    %eax
46fae6:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46faec:	3b c3                	cmp    %ebx,%eax
46faee:	72 c0                	jb     0x46fab0
46faf0:	eb 1d                	jmp    0x46fb0f
46faf2:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46faf8:	57                   	push   %edi
46faf9:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46faff:	e8 2c 4e ff ff       	call   0x464930
46fb04:	50                   	push   %eax
46fb05:	e8 16 fb ff ff       	call   0x46f620
46fb0a:	83 c4 04             	add    $0x4,%esp
46fb0d:	8b f0                	mov    %eax,%esi
46fb0f:	8b c6                	mov    %esi,%eax
46fb11:	8b 4d f4             	mov    -0xc(%ebp),%ecx
46fb14:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
46fb1b:	59                   	pop    %ecx
46fb1c:	5f                   	pop    %edi
46fb1d:	5e                   	pop    %esi
46fb1e:	5b                   	pop    %ebx
46fb1f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
46fb22:	33 cd                	xor    %ebp,%ecx
46fb24:	e8 fd 1e 16 00       	call   0x5d1a26
46fb29:	8b e5                	mov    %ebp,%esp
46fb2b:	5d                   	pop    %ebp
46fb2c:	c3                   	ret
46fb2d:	83 7f 20 03          	cmpl   $0x3,0x20(%edi)
46fb31:	75 50                	jne    0x46fb83
46fb33:	33 c0                	xor    %eax,%eax
46fb35:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46fb3b:	85 db                	test   %ebx,%ebx
46fb3d:	74 d0                	je     0x46fb0f
46fb3f:	90                   	nop
46fb40:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fb46:	50                   	push   %eax
46fb47:	57                   	push   %edi
46fb48:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fb4e:	e8 9d 57 ff ff       	call   0x4652f0
46fb53:	83 c8 01             	or     $0x1,%eax
46fb56:	85 d2                	test   %edx,%edx
46fb58:	75 05                	jne    0x46fb5f
46fb5a:	0f bd c0             	bsr    %eax,%eax
46fb5d:	eb 06                	jmp    0x46fb65
46fb5f:	0f bd c2             	bsr    %edx,%eax
46fb62:	83 c0 20             	add    $0x20,%eax
46fb65:	8d 04 c0             	lea    (%eax,%eax,8),%eax
46fb68:	83 c0 49             	add    $0x49,%eax
46fb6b:	c1 e8 06             	shr    $0x6,%eax
46fb6e:	03 f0                	add    %eax,%esi
46fb70:	8b 85 68 ff ff ff    	mov    -0x98(%ebp),%eax
46fb76:	40                   	inc    %eax
46fb77:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46fb7d:	3b c3                	cmp    %ebx,%eax
46fb7f:	72 bf                	jb     0x46fb40
46fb81:	eb 8c                	jmp    0x46fb0f
46fb83:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fb89:	57                   	push   %edi
46fb8a:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fb90:	e8 7b 4e ff ff       	call   0x464a10
46fb95:	52                   	push   %edx
46fb96:	50                   	push   %eax
46fb97:	e8 54 11 00 00       	call   0x470cf0
46fb9c:	83 c4 08             	add    $0x8,%esp
46fb9f:	e9 69 ff ff ff       	jmp    0x46fb0d
46fba4:	83 7f 20 03          	cmpl   $0x3,0x20(%edi)
46fba8:	75 59                	jne    0x46fc03
46fbaa:	33 c0                	xor    %eax,%eax
46fbac:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46fbb2:	85 db                	test   %ebx,%ebx
46fbb4:	0f 84 55 ff ff ff    	je     0x46fb0f
46fbba:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
46fbc0:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fbc6:	50                   	push   %eax
46fbc7:	57                   	push   %edi
46fbc8:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fbce:	e8 6d 56 ff ff       	call   0x465240
46fbd3:	8b c8                	mov    %eax,%ecx
46fbd5:	03 c0                	add    %eax,%eax
46fbd7:	c1 f9 1f             	sar    $0x1f,%ecx
46fbda:	33 c8                	xor    %eax,%ecx
46fbdc:	83 c9 01             	or     $0x1,%ecx
46fbdf:	0f bd c1             	bsr    %ecx,%eax
46fbe2:	8d 04 c0             	lea    (%eax,%eax,8),%eax
46fbe5:	83 c0 49             	add    $0x49,%eax
46fbe8:	c1 e8 06             	shr    $0x6,%eax
46fbeb:	03 f0                	add    %eax,%esi
46fbed:	8b 85 68 ff ff ff    	mov    -0x98(%ebp),%eax
46fbf3:	40                   	inc    %eax
46fbf4:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
46fbfa:	3b c3                	cmp    %ebx,%eax
46fbfc:	72 c2                	jb     0x46fbc0
46fbfe:	e9 0c ff ff ff       	jmp    0x46fb0f
46fc03:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fc09:	57                   	push   %edi
46fc0a:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fc10:	e8 1b 4d ff ff       	call   0x464930
46fc15:	50                   	push   %eax
46fc16:	e8 05 31 00 00       	call   0x472d20
46fc1b:	e9 ea fe ff ff       	jmp    0x46fb0a
46fc20:	83 7f 20 03          	cmpl   $0x3,0x20(%edi)
46fc24:	75 76                	jne    0x46fc9c
46fc26:	33 c0                	xor    %eax,%eax
46fc28:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
46fc2e:	85 db                	test   %ebx,%ebx
46fc30:	0f 84 d9 fe ff ff    	je     0x46fb0f
46fc36:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
46fc3c:	50                   	push   %eax
46fc3d:	57                   	push   %edi
46fc3e:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
46fc44:	e8 a7 56 ff ff       	call   0x4652f0
46fc49:	8b ca                	mov    %edx,%ecx
46fc4b:	89 95 68 ff ff ff    	mov    %edx,-0x98(%ebp)
46fc51:	c1 bd 68 ff ff ff 1f 	sarl   $0x1f,-0x98(%ebp)
46fc58:	0f a4 c2 01          	shld   $0x1,%eax,%edx
46fc5c:	c1 f9 1f             	sar    $0x1f,%ecx
46fc5f:	03 c0                	add    %eax,%eax
46fc61:	33 c8                	xor    %eax,%ecx
46fc63:	8b 85 68 ff ff ff    	mov    -0x98(%ebp),%eax
46fc69:	83 c9 01             	or     $0x1,%ecx
46fc6c:	33 c2                	xor    %edx,%eax
46fc6e:	75 05                	jne    0x46fc75
46fc70:	0f bd c1             	bsr    %ecx,%eax
46fc73:	eb 06                	jmp    0x46fc7b
46fc75:	0f bd c0             	bsr    %eax,%eax
46fc78:	83 c0 20             	add    $0x20,%eax
46fc7b:	8d 04 c0             	lea    (%eax,%eax,8),%eax
46fc7e:	83 c0 49             	add    $0x49,%eax
46fc81:	c1 e8 06             	shr    $0x6,%eax
46fc84:	03 f0                	add    %eax,%esi
46fc86:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
46fc8c:	40                   	inc    %eax
46fc8d:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
46fc93:	3b c3                	cmp    %ebx,%eax