4778b4:	5d                   	pop    %ebp
4778b5:	c2 08 00             	ret    $0x8
4778b8:	56                   	push   %esi
4778b9:	8b 74 24 08          	mov    0x8(%esp),%esi
4778bd:	57                   	push   %edi
4778be:	8b 7c 24 14          	mov    0x14(%esp),%edi
4778c2:	83 27 00             	andl   $0x0,(%edi)
4778c5:	83 c6 b8             	add    $0xffffffb8,%esi
4778c8:	8b ce                	mov    %esi,%ecx
4778ca:	e8 8f fe ff ff       	call   0x47775e
4778cf:	85 c0                	test   %eax,%eax
4778d1:	74 1c                	je     0x4778ef
4778d3:	8b 06                	mov    (%esi),%eax
4778d5:	57                   	push   %edi
4778d6:	ff 74 24 14          	push   0x14(%esp)
4778da:	8b ce                	mov    %esi,%ecx
4778dc:	ff 50 64             	call   *0x64(%eax)
4778df:	f7 d8                	neg    %eax
4778e1:	1b c0                	sbb    %eax,%eax
4778e3:	25 fb bf ff 7f       	and    $0x7fffbffb,%eax
4778e8:	05 05 40 00 80       	add    $0x80004005,%eax
4778ed:	eb 05                	jmp    0x4778f4
4778ef:	b8 12 01 04 80       	mov    $0x80040112,%eax
4778f4:	5f                   	pop    %edi
4778f5:	5e                   	pop    %esi
4778f6:	c2 0c 00             	ret    $0xc
4778f9:	b8 6c 3e 48 00       	mov    $0x483e6c,%eax
4778fe:	e8 79 03 fa ff       	call   0x417c7c
477903:	51                   	push   %ecx
477904:	51                   	push   %ecx
477905:	53                   	push   %ebx
477906:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
477909:	56                   	push   %esi
47790a:	8b 75 08             	mov    0x8(%ebp),%esi
47790d:	57                   	push   %edi
47790e:	33 ff                	xor    %edi,%edi
477910:	83 c6 b8             	add    $0xffffffb8,%esi
477913:	3b df                	cmp    %edi,%ebx
477915:	89 65 f0             	mov    %esp,-0x10(%ebp)
477918:	75 0a                	jne    0x477924
47791a:	b8 03 40 00 80       	mov    $0x80004003,%eax
47791f:	e9 e8 00 00 00       	jmp    0x477a0c
477924:	39 7d 18             	cmp    %edi,0x18(%ebp)
477927:	89 3b                	mov    %edi,(%ebx)
477929:	8b ce                	mov    %esi,%ecx
47792b:	74 2e                	je     0x47795b
47792d:	ff 75 18             	push   0x18(%ebp)
477930:	8b 06                	mov    (%esi),%eax
477932:	ff 50 68             	call   *0x68(%eax)
477935:	85 c0                	test   %eax,%eax
477937:	74 29                	je     0x477962
477939:	39 7d 0c             	cmp    %edi,0xc(%ebp)
47793c:	74 2e                	je     0x47796c
47793e:	68 1c 5d 49 00       	push   $0x495d1c
477943:	ff 75 14             	push   0x14(%ebp)
477946:	e8 6c fc f8 ff       	call   0x4075b7
47794b:	85 c0                	test   %eax,%eax
47794d:	59                   	pop    %ecx
47794e:	59                   	pop    %ecx
47794f:	75 1b                	jne    0x47796c
477951:	b8 10 01 04 80       	mov    $0x80040110,%eax
477956:	e9 b1 00 00 00       	jmp    0x477a0c
47795b:	e8 fe fd ff ff       	call   0x47775e
477960:	eb d3                	jmp    0x477935
477962:	b8 12 01 04 80       	mov    $0x80040112,%eax
477967:	e9 a0 00 00 00       	jmp    0x477a0c
47796c:	8b 06                	mov    (%esi),%eax
47796e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
477972:	89 7d 08             	mov    %edi,0x8(%ebp)
477975:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
47797a:	8b ce                	mov    %esi,%ecx
47797c:	89 7d 18             	mov    %edi,0x18(%ebp)
47797f:	ff 50 5c             	call   *0x5c(%eax)
477982:	8b f0                	mov    %eax,%esi
477984:	85 f6                	test   %esi,%esi
477986:	89 75 08             	mov    %esi,0x8(%ebp)
477989:	74 3f                	je     0x4779ca
47798b:	8b 45 0c             	mov    0xc(%ebp),%eax
47798e:	85 c0                	test   %eax,%eax
477990:	c7 45 18 10 01 04 80 	movl   $0x80040110,0x18(%ebp)
477997:	74 06                	je     0x47799f
477999:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
47799d:	74 2b                	je     0x4779ca
47799f:	89 46 08             	mov    %eax,0x8(%esi)
4779a2:	8b 06                	mov    (%esi),%eax
4779a4:	8b ce                	mov    %esi,%ecx
4779a6:	89 7d 18             	mov    %edi,0x18(%ebp)
4779a9:	ff 50 40             	call   *0x40(%eax)
4779ac:	85 c0                	test   %eax,%eax
4779ae:	74 1a                	je     0x4779ca
4779b0:	83 65 18 00          	andl   $0x0,0x18(%ebp)
4779b4:	eb 14                	jmp    0x4779ca
4779b6:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4779b9:	e8 5b 85 fc ff       	call   0x43ff19
4779be:	b8 c4 79 47 00       	mov    $0x4779c4,%eax
4779c3:	c3                   	ret
4779c4:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
4779c7:	8b 75 08             	mov    0x8(%ebp),%esi
4779ca:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4779ce:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
4779d2:	75 28                	jne    0x4779fc
4779d4:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4779d8:	74 07                	je     0x4779e1
4779da:	83 c6 0c             	add    $0xc,%esi
4779dd:	89 33                	mov    %esi,(%ebx)
4779df:	eb 28                	jmp    0x477a09
4779e1:	53                   	push   %ebx
4779e2:	ff 75 14             	push   0x14(%ebp)
4779e5:	8b ce                	mov    %esi,%ecx
4779e7:	e8 10 c7 ff ff       	call   0x4740fc
4779ec:	85 c0                	test   %eax,%eax
4779ee:	89 45 18             	mov    %eax,0x18(%ebp)
4779f1:	75 09                	jne    0x4779fc
4779f3:	8b ce                	mov    %esi,%ecx
4779f5:	e8 45 c5 ff ff       	call   0x473f3f
4779fa:	eb 0d                	jmp    0x477a09
4779fc:	85 f6                	test   %esi,%esi
4779fe:	74 09                	je     0x477a09
477a00:	8b 06                	mov    (%esi),%eax
477a02:	6a 01                	push   $0x1
477a04:	8b ce                	mov    %esi,%ecx
477a06:	ff 50 04             	call   *0x4(%eax)
477a09:	8b 45 18             	mov    0x18(%ebp),%eax
477a0c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
477a0f:	5f                   	pop    %edi
477a10:	5e                   	pop    %esi
477a11:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
477a18:	5b                   	pop    %ebx
477a19:	c9                   	leave
477a1a:	c2 18 00             	ret    $0x18
477a1d:	8b 44 24 04          	mov    0x4(%esp),%eax
477a21:	83 c0 bc             	add    $0xffffffbc,%eax
477a24:	50                   	push   %eax
477a25:	ff 15 a4 02 4b 00    	call   *0x4b02a4
477a2b:	c2 04 00             	ret    $0x4
477a2e:	56                   	push   %esi
477a2f:	e8 cd 5e ff ff       	call   0x46d901
477a34:	6a 00                	push   $0x0
477a36:	8b f0                	mov    %eax,%esi
477a38:	e8 69 6b ff ff       	call   0x46e5a6
477a3d:	8b 76 24             	mov    0x24(%esi),%esi
477a40:	eb 12                	jmp    0x477a54
477a42:	ff 74 24 08          	push   0x8(%esp)
477a46:	8b 06                	mov    (%esi),%eax
477a48:	8b ce                	mov    %esi,%ecx
477a4a:	ff 50 58             	call   *0x58(%eax)
477a4d:	85 c0                	test   %eax,%eax
477a4f:	74 15                	je     0x477a66
477a51:	8b 76 1c             	mov    0x1c(%esi),%esi
477a54:	85 f6                	test   %esi,%esi
477a56:	75 ea                	jne    0x477a42
477a58:	46                   	inc    %esi
477a59:	6a 00                	push   $0x0
477a5b:	e8 a9 6b ff ff       	call   0x46e609
477a60:	8b c6                	mov    %esi,%eax
477a62:	5e                   	pop    %esi
477a63:	c2 04 00             	ret    $0x4
477a66:	33 f6                	xor    %esi,%esi
477a68:	eb ef                	jmp    0x477a59
477a6a:	b8 93 3e 48 00       	mov    $0x483e93,%eax
477a6f:	e8 08 02 fa ff       	call   0x417c7c
477a74:	81 ec 1c 04 00 00    	sub    $0x41c,%esp
477a7a:	a1 40 8b 4a 00       	mov    0x4a8b40,%eax
477a7f:	53                   	push   %ebx
477a80:	56                   	push   %esi
477a81:	57                   	push   %edi
477a82:	8b f1                	mov    %ecx,%esi
477a84:	33 ff                	xor    %edi,%edi
477a86:	39 7e 40             	cmp    %edi,0x40(%esi)
477a89:	89 45 f0             	mov    %eax,-0x10(%ebp)
477a8c:	75 07                	jne    0x477a95
477a8e:	33 c0                	xor    %eax,%eax
477a90:	e9 79 01 00 00       	jmp    0x477c0e
477a95:	39 7d 08             	cmp    %edi,0x8(%ebp)
477a98:	8b 46 40             	mov    0x40(%esi),%eax
477a9b:	57                   	push   %edi
477a9c:	57                   	push   %edi
477a9d:	0f 84 57 01 00 00    	je     0x477bfa
477aa3:	57                   	push   %edi
477aa4:	57                   	push   %edi
477aa5:	6a 03                	push   $0x3
477aa7:	50                   	push   %eax
477aa8:	50                   	push   %eax
477aa9:	8d 5e 24             	lea    0x24(%esi),%ebx
477aac:	50                   	push   %eax
477aad:	53                   	push   %ebx
477aae:	89 9d dc fb ff ff    	mov    %ebx,-0x424(%ebp)
477ab4:	e8 55 2a 00 00       	call   0x47a50e
477ab9:	83 f8 01             	cmp    $0x1,%eax
477abc:	89 45 08             	mov    %eax,0x8(%ebp)
477abf:	0f 85 46 01 00 00    	jne    0x477c0b
477ac5:	8d 85 ec fb ff ff    	lea    -0x414(%ebp),%eax
477acb:	50                   	push   %eax
477acc:	53                   	push   %ebx
477acd:	89 7d 08             	mov    %edi,0x8(%ebp)
477ad0:	89 bd ec fb ff ff    	mov    %edi,-0x414(%ebp)
477ad6:	ff 15 0c 0b 4b 00    	call   *0x4b0b0c
477adc:	85 c0                	test   %eax,%eax
477ade:	0f 8c ff 00 00 00    	jl     0x477be3
477ae4:	ff 15 fc 70 4a 00    	call   *0x4a70fc
477aea:	89 85 e0 fb ff ff    	mov    %eax,-0x420(%ebp)
477af0:	89 bd e4 fb ff ff    	mov    %edi,-0x41c(%ebp)
477af6:	8b 85 ec fb ff ff    	mov    -0x414(%ebp),%eax
477afc:	3b c7                	cmp    %edi,%eax
477afe:	89 7d fc             	mov    %edi,-0x4(%ebp)
477b01:	89 85 d8 fb ff ff    	mov    %eax,-0x428(%ebp)
477b07:	0f 84 b6 00 00 00    	je     0x477bc3
477b0d:	50                   	push   %eax
477b0e:	ff 15 90 03 4b 00    	call   *0x4b0390
477b14:	8d 5c 00 02          	lea    0x2(%eax,%eax,1),%ebx
477b18:	81 fb 00 04 00 00    	cmp    $0x400,%ebx
477b1e:	7f 1c                	jg     0x477b3c
477b20:	53                   	push   %ebx
477b21:	e8 db 98 f8 ff       	call   0x401401
477b26:	84 c0                	test   %al,%al
477b28:	59                   	pop    %ecx
477b29:	74 11                	je     0x477b3c
477b2b:	8b c3                	mov    %ebx,%eax
477b2d:	83 c0 03             	add    $0x3,%eax
477b30:	83 e0 fc             	and    $0xfffffffc,%eax
477b33:	e8 b8 eb f9 ff       	call   0x4166f0
477b38:	8b c4                	mov    %esp,%eax
477b3a:	eb 0c                	jmp    0x477b48
477b3c:	53                   	push   %ebx
477b3d:	8d 8d e4 fb ff ff    	lea    -0x41c(%ebp),%ecx
477b43:	e8 06 97 f8 ff       	call   0x40124e
477b48:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
477b4e:	53                   	push   %ebx
477b4f:	ff b5 d8 fb ff ff    	push   -0x428(%ebp)
477b55:	50                   	push   %eax
477b56:	e8 94 e8 f8 ff       	call   0x4063ef
477b5b:	3b c7                	cmp    %edi,%eax
477b5d:	74 64                	je     0x477bc3
477b5f:	50                   	push   %eax
477b60:	68 08 f1 48 00       	push   $0x48f108
477b65:	bb 00 04 00 00       	mov    $0x400,%ebx
477b6a:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
477b70:	53                   	push   %ebx
477b71:	50                   	push   %eax
477b72:	e8 37 0a fa ff       	call   0x4185ae
477b77:	83 c4 10             	add    $0x10,%esp
477b7a:	3b c7                	cmp    %edi,%eax
477b7c:	7c 45                	jl     0x477bc3
477b7e:	3b c3                	cmp    %ebx,%eax
477b80:	7d 41                	jge    0x477bc3
477b82:	8d 85 e8 fb ff ff    	lea    -0x418(%ebp),%eax
477b88:	50                   	push   %eax
477b89:	68 1f 00 02 00       	push   $0x2001f
477b8e:	57                   	push   %edi
477b8f:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
477b95:	50                   	push   %eax
477b96:	68 00 00 00 80       	push   $0x80000000
477b9b:	ff 15 8c fe 4a 00    	call   *0x4afe8c
477ba1:	85 c0                	test   %eax,%eax
477ba3:	75 1e                	jne    0x477bc3
477ba5:	ff 76 3c             	push   0x3c(%esi)
477ba8:	ff b5 e8 fb ff ff    	push   -0x418(%ebp)
477bae:	57                   	push   %edi
477baf:	e8 3f 22 00 00       	call   0x479df3
477bb4:	ff b5 e8 fb ff ff    	push   -0x418(%ebp)
477bba:	89 45 08             	mov    %eax,0x8(%ebp)
477bbd:	ff 15 ac fe 4a 00    	call   *0x4afeac
477bc3:	ff b5 ec fb ff ff    	push   -0x414(%ebp)
477bc9:	ff 15 f0 0a 4b 00    	call   *0x4b0af0
477bcf:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
477bd3:	8d 8d e4 fb ff ff    	lea    -0x41c(%ebp),%ecx
477bd9:	e8 29 97 f8 ff       	call   0x401307
477bde:	39 7d 08             	cmp    %edi,0x8(%ebp)
477be1:	75 28                	jne    0x477c0b
477be3:	8b 76 40             	mov    0x40(%esi),%esi
477be6:	57                   	push   %edi
477be7:	57                   	push   %edi
477be8:	6a 03                	push   $0x3
477bea:	56                   	push   %esi
477beb:	56                   	push   %esi
477bec:	56                   	push   %esi
477bed:	ff b5 dc fb ff ff    	push   -0x424(%ebp)
477bf3:	e8 63 28 00 00       	call   0x47a45b
477bf8:	eb 11                	jmp    0x477c0b
477bfa:	6a 03                	push   $0x3
477bfc:	50                   	push   %eax
477bfd:	50                   	push   %eax
477bfe:	50                   	push   %eax
477bff:	83 c6 24             	add    $0x24,%esi
477c02:	56                   	push   %esi
477c03:	e8 53 28 00 00       	call   0x47a45b
477c08:	89 45 08             	mov    %eax,0x8(%ebp)
477c0b:	8b 45 08             	mov    0x8(%ebp),%eax
477c0e:	8d a5 cc fb ff ff    	lea    -0x434(%ebp),%esp
477c14:	8b 4d f4             	mov    -0xc(%ebp),%ecx
477c17:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
477c1e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
477c21:	e8 b8 ff f9 ff       	call   0x417bde
477c26:	5f                   	pop    %edi
477c27:	5e                   	pop    %esi
477c28:	5b                   	pop    %ebx
477c29:	c9                   	leave
477c2a:	c2 04 00             	ret    $0x4
477c2d:	55                   	push   %ebp
477c2e:	56                   	push   %esi
477c2f:	8b f1                	mov    %ecx,%esi
477c31:	33 ed                	xor    %ebp,%ebp
477c33:	39 6e 1c             	cmp    %ebp,0x1c(%esi)
477c36:	74 43                	je     0x477c7b
477c38:	53                   	push   %ebx
477c39:	33 db                	xor    %ebx,%ebx
477c3b:	39 6e 24             	cmp    %ebp,0x24(%esi)
477c3e:	76 28                	jbe    0x477c68
477c40:	57                   	push   %edi
477c41:	33 ff                	xor    %edi,%edi
477c43:	8b 46 1c             	mov    0x1c(%esi),%eax
477c46:	ff 74 07 04          	push   0x4(%edi,%eax,1)
477c4a:	ff 15 f0 0a 4b 00    	call   *0x4b0af0
477c50:	8b 46 1c             	mov    0x1c(%esi),%eax
477c53:	8d 44 07 14          	lea    0x14(%edi,%eax,1),%eax
477c57:	50                   	push   %eax
477c58:	ff 15 1c 0b 4b 00    	call   *0x4b0b1c
477c5e:	43                   	inc    %ebx
477c5f:	83 c7 24             	add    $0x24,%edi
477c62:	3b 5e 24             	cmp    0x24(%esi),%ebx
477c65:	72 dc                	jb     0x477c43
477c67:	5f                   	pop    %edi
477c68:	ff 76 1c             	push   0x1c(%esi)
477c6b:	e8 10 84 fc ff       	call   0x440080
477c70:	59                   	pop    %ecx
477c71:	89 6e 1c             	mov    %ebp,0x1c(%esi)
477c74:	89 6e 20             	mov    %ebp,0x20(%esi)
477c77:	89 6e 24             	mov    %ebp,0x24(%esi)
477c7a:	5b                   	pop    %ebx
477c7b:	5e                   	pop    %esi
477c7c:	5d                   	pop    %ebp
477c7d:	c3                   	ret
477c7e:	55                   	push   %ebp
477c7f:	8b ec                	mov    %esp,%ebp
477c81:	51                   	push   %ecx
477c82:	51                   	push   %ecx
477c83:	53                   	push   %ebx
477c84:	57                   	push   %edi
477c85:	33 db                	xor    %ebx,%ebx
477c87:	8b f9                	mov    %ecx,%edi
477c89:	39 5f 24             	cmp    %ebx,0x24(%edi)
477c8c:	89 5d f8             	mov    %ebx,-0x8(%ebp)
477c8f:	76 62                	jbe    0x477cf3
477c91:	56                   	push   %esi
477c92:	8b 75 08             	mov    0x8(%ebp),%esi
477c95:	89 5d fc             	mov    %ebx,-0x4(%ebp)
477c98:	8b 47 1c             	mov    0x1c(%edi),%eax
477c9b:	03 45 fc             	add    -0x4(%ebp),%eax
477c9e:	66 8b 08             	mov    (%eax),%cx
477ca1:	66 3b 0e             	cmp    (%esi),%cx