46e905:	ff 75 dc             	push   -0x24(%ebp)
46e908:	8b 46 08             	mov    0x8(%esi),%eax
46e90b:	33 db                	xor    %ebx,%ebx
46e90d:	8b 35 98 f2 48 00    	mov    0x48f298,%esi
46e913:	53                   	push   %ebx
46e914:	53                   	push   %ebx
46e915:	ff 30                	push   (%eax)
46e917:	ff d6                	call   *%esi
46e919:	ff 75 dc             	push   -0x24(%ebp)
46e91c:	53                   	push   %ebx
46e91d:	53                   	push   %ebx
46e91e:	53                   	push   %ebx
46e91f:	ff d6                	call   *%esi
46e921:	8b cf                	mov    %edi,%ecx
46e923:	e8 f8 b0 f9 ff       	call   0x409a20
46e928:	33 c0                	xor    %eax,%eax
46e92a:	40                   	inc    %eax
46e92b:	89 47 0c             	mov    %eax,0xc(%edi)
46e92e:	89 07                	mov    %eax,(%edi)
46e930:	8b 45 f0             	mov    -0x10(%ebp),%eax
46e933:	5f                   	pop    %edi
46e934:	5e                   	pop    %esi
46e935:	5b                   	pop    %ebx
46e936:	ff 08                	decl   (%eax)
46e938:	75 10                	jne    0x46e94a
46e93a:	50                   	push   %eax
46e93b:	e8 2c 27 fb ff       	call   0x42106c
46e940:	ff 75 ec             	push   -0x14(%ebp)
46e943:	e8 24 27 fb ff       	call   0x42106c
46e948:	59                   	pop    %ecx
46e949:	59                   	pop    %ecx
46e94a:	8d 4d dc             	lea    -0x24(%ebp),%ecx
46e94d:	e8 12 71 f9 ff       	call   0x405a64
46e952:	33 c0                	xor    %eax,%eax
46e954:	8b e5                	mov    %ebp,%esp
46e956:	5d                   	pop    %ebp
46e957:	c2 08 00             	ret    $0x8
46e95a:	55                   	push   %ebp
46e95b:	8b ec                	mov    %esp,%ebp
46e95d:	83 ec 10             	sub    $0x10,%esp
46e960:	53                   	push   %ebx
46e961:	56                   	push   %esi
46e962:	57                   	push   %edi
46e963:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46e966:	e8 5c 8e f9 ff       	call   0x4077c7
46e96b:	8b 7d 08             	mov    0x8(%ebp),%edi
46e96e:	8b 47 04             	mov    0x4(%edi),%eax
46e971:	8b 30                	mov    (%eax),%esi
46e973:	8b ce                	mov    %esi,%ecx
46e975:	e8 1d b0 f9 ff       	call   0x409997
46e97a:	8b 4e 08             	mov    0x8(%esi),%ecx
46e97d:	8d 55 f0             	lea    -0x10(%ebp),%edx
46e980:	e8 29 5f f9 ff       	call   0x4048ae
46e985:	8b 47 04             	mov    0x4(%edi),%eax
46e988:	8b 70 0c             	mov    0xc(%eax),%esi
46e98b:	8b ce                	mov    %esi,%ecx
46e98d:	e8 05 b0 f9 ff       	call   0x409997
46e992:	8b 46 08             	mov    0x8(%esi),%eax
46e995:	8b 18                	mov    (%eax),%ebx
46e997:	8b 47 04             	mov    0x4(%edi),%eax
46e99a:	8b 70 08             	mov    0x8(%eax),%esi
46e99d:	8b ce                	mov    %esi,%ecx
46e99f:	e8 f3 af f9 ff       	call   0x409997
46e9a4:	8b 46 08             	mov    0x8(%esi),%eax
46e9a7:	8b 38                	mov    (%eax),%edi
46e9a9:	8b 45 08             	mov    0x8(%ebp),%eax
46e9ac:	8b 40 04             	mov    0x4(%eax),%eax
46e9af:	8b 70 04             	mov    0x4(%eax),%esi
46e9b2:	8b ce                	mov    %esi,%ecx
46e9b4:	e8 de af f9 ff       	call   0x409997
46e9b9:	ff 75 f0             	push   -0x10(%ebp)
46e9bc:	8b 46 08             	mov    0x8(%esi),%eax
46e9bf:	8b 35 98 f2 48 00    	mov    0x48f298,%esi
46e9c5:	53                   	push   %ebx
46e9c6:	57                   	push   %edi
46e9c7:	ff 30                	push   (%eax)
46e9c9:	ff d6                	call   *%esi
46e9cb:	85 c0                	test   %eax,%eax
46e9cd:	74 0c                	je     0x46e9db
46e9cf:	ff 75 f0             	push   -0x10(%ebp)
46e9d2:	33 c0                	xor    %eax,%eax
46e9d4:	50                   	push   %eax
46e9d5:	50                   	push   %eax
46e9d6:	50                   	push   %eax
46e9d7:	ff d6                	call   *%esi
46e9d9:	eb 14                	jmp    0x46e9ef
46e9db:	8b 75 0c             	mov    0xc(%ebp),%esi
46e9de:	8b ce                	mov    %esi,%ecx
46e9e0:	e8 3b b0 f9 ff       	call   0x409a20
46e9e5:	83 26 00             	andl   $0x0,(%esi)
46e9e8:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46e9ef:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46e9f2:	e8 6d 70 f9 ff       	call   0x405a64
46e9f7:	5f                   	pop    %edi
46e9f8:	5e                   	pop    %esi
46e9f9:	33 c0                	xor    %eax,%eax
46e9fb:	5b                   	pop    %ebx
46e9fc:	8b e5                	mov    %ebp,%esp
46e9fe:	5d                   	pop    %ebp
46e9ff:	c2 08 00             	ret    $0x8
46ea02:	55                   	push   %ebp
46ea03:	8b ec                	mov    %esp,%ebp
46ea05:	83 ec 20             	sub    $0x20,%esp
46ea08:	53                   	push   %ebx
46ea09:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46ea0c:	56                   	push   %esi
46ea0d:	57                   	push   %edi
46ea0e:	8b f9                	mov    %ecx,%edi
46ea10:	8b cb                	mov    %ebx,%ecx
46ea12:	e8 09 b0 f9 ff       	call   0x409a20
46ea17:	83 23 00             	andl   $0x0,(%ebx)
46ea1a:	8d 4d e0             	lea    -0x20(%ebp),%ecx
46ea1d:	c7 43 0c 01 00 00 00 	movl   $0x1,0xc(%ebx)
46ea24:	e8 9e 8d f9 ff       	call   0x4077c7
46ea29:	8b 5d 08             	mov    0x8(%ebp),%ebx
46ea2c:	8b 43 04             	mov    0x4(%ebx),%eax
46ea2f:	8b 30                	mov    (%eax),%esi
46ea31:	8b ce                	mov    %esi,%ecx
46ea33:	e8 5f af f9 ff       	call   0x409997
46ea38:	8b 4e 08             	mov    0x8(%esi),%ecx
46ea3b:	8d 55 e0             	lea    -0x20(%ebp),%edx
46ea3e:	e8 6b 5e f9 ff       	call   0x4048ae
46ea43:	8b 53 04             	mov    0x4(%ebx),%edx
46ea46:	6a 02                	push   $0x2
46ea48:	5b                   	pop    %ebx
46ea49:	8b 72 08             	mov    0x8(%edx),%esi
46ea4c:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
46ea50:	0f 85 89 01 00 00    	jne    0x46ebdf
46ea56:	8b 06                	mov    (%esi),%eax
46ea58:	8b 00                	mov    (%eax),%eax
46ea5a:	39 98 0c 01 00 00    	cmp    %ebx,0x10c(%eax)
46ea60:	0f 85 79 01 00 00    	jne    0x46ebdf
46ea66:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
46ea6a:	75 04                	jne    0x46ea70
46ea6c:	8b 0e                	mov    (%esi),%ecx
46ea6e:	eb 02                	jmp    0x46ea72
46ea70:	33 c9                	xor    %ecx,%ecx
46ea72:	53                   	push   %ebx
46ea73:	e8 f3 a3 f9 ff       	call   0x408e6b
46ea78:	3b c3                	cmp    %ebx,%eax
46ea7a:	0f 85 5f 01 00 00    	jne    0x46ebdf
46ea80:	8b 7d 08             	mov    0x8(%ebp),%edi
46ea83:	33 db                	xor    %ebx,%ebx
46ea85:	43                   	inc    %ebx
46ea86:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46ea89:	83 7f 08 04          	cmpl   $0x4,0x8(%edi)
46ea8d:	72 17                	jb     0x46eaa6
46ea8f:	8b 4a 0c             	mov    0xc(%edx),%ecx
46ea92:	e8 05 b2 f9 ff       	call   0x409c9c
46ea97:	8b d8                	mov    %eax,%ebx
46ea99:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46ea9c:	85 db                	test   %ebx,%ebx
46ea9e:	79 06                	jns    0x46eaa6
46eaa0:	33 db                	xor    %ebx,%ebx
46eaa2:	43                   	inc    %ebx
46eaa3:	89 5d f4             	mov    %ebx,-0xc(%ebp)
46eaa6:	8b 47 04             	mov    0x4(%edi),%eax
46eaa9:	33 f6                	xor    %esi,%esi
46eaab:	89 75 f0             	mov    %esi,-0x10(%ebp)
46eaae:	8b 40 08             	mov    0x8(%eax),%eax
46eab1:	83 78 0c 05          	cmpl   $0x5,0xc(%eax)
46eab5:	75 07                	jne    0x46eabe
46eab7:	8b 00                	mov    (%eax),%eax
46eab9:	89 45 fc             	mov    %eax,-0x4(%ebp)
46eabc:	eb 03                	jmp    0x46eac1
46eabe:	21 75 fc             	and    %esi,-0x4(%ebp)
46eac1:	8b d3                	mov    %ebx,%edx
46eac3:	8b 5d fc             	mov    -0x4(%ebp),%ebx
46eac6:	6a 01                	push   $0x1
46eac8:	8b cb                	mov    %ebx,%ecx
46eaca:	89 55 f8             	mov    %edx,-0x8(%ebp)
46eacd:	e8 99 a3 f9 ff       	call   0x408e6b
46ead2:	3b d0                	cmp    %eax,%edx
46ead4:	7d 53                	jge    0x46eb29
46ead6:	6a 00                	push   $0x0
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