5a9a40:	8b 7c 24 2c          	mov    0x2c(%esp),%edi
5a9a44:	85 ff                	test   %edi,%edi
5a9a46:	74 09                	je     0x5a9a51
5a9a48:	83 fd 01             	cmp    $0x1,%ebp
5a9a4b:	0f 87 81 01 00 00    	ja     0x5a9bd2
5a9a51:	83 fd 02             	cmp    $0x2,%ebp
5a9a54:	0f 87 78 01 00 00    	ja     0x5a9bd2
5a9a5a:	85 ed                	test   %ebp,%ebp
5a9a5c:	75 11                	jne    0x5a9a6f
5a9a5e:	56                   	push   %esi
5a9a5f:	e8 1c 20 fd ff       	call   0x57ba80
5a9a64:	83 c4 04             	add    $0x4,%esp
5a9a67:	85 c0                	test   %eax,%eax
5a9a69:	0f 85 63 01 00 00    	jne    0x5a9bd2
5a9a6f:	56                   	push   %esi
5a9a70:	e8 7b 28 fd ff       	call   0x57c2f0
5a9a75:	8b e8                	mov    %eax,%ebp
5a9a77:	83 c4 04             	add    $0x4,%esp
5a9a7a:	85 ed                	test   %ebp,%ebp
5a9a7c:	0f 84 6c 01 00 00    	je     0x5a9bee
5a9a82:	56                   	push   %esi
5a9a83:	e8 68 28 fd ff       	call   0x57c2f0
5a9a88:	8b f8                	mov    %eax,%edi
5a9a8a:	83 c4 04             	add    $0x4,%esp
5a9a8d:	89 7c 24 3c          	mov    %edi,0x3c(%esp)
5a9a91:	85 ff                	test   %edi,%edi
5a9a93:	0f 84 04 01 00 00    	je     0x5a9b9d
5a9a99:	57                   	push   %edi
5a9a9a:	56                   	push   %esi
5a9a9b:	e8 50 2a fd ff       	call   0x57c4f0
5a9aa0:	83 c4 08             	add    $0x8,%esp
5a9aa3:	85 c0                	test   %eax,%eax
5a9aa5:	0f 84 f2 00 00 00    	je     0x5a9b9d
5a9aab:	8b 44 24 2c          	mov    0x2c(%esp),%eax
5a9aaf:	85 c0                	test   %eax,%eax
5a9ab1:	74 4d                	je     0x5a9b00
5a9ab3:	53                   	push   %ebx
5a9ab4:	ff 76 04             	push   0x4(%esi)
5a9ab7:	50                   	push   %eax
5a9ab8:	55                   	push   %ebp
5a9ab9:	56                   	push   %esi
5a9aba:	e8 a1 fb ff ff       	call   0x5a9660
5a9abf:	83 c4 14             	add    $0x14,%esp
5a9ac2:	85 c0                	test   %eax,%eax
5a9ac4:	0f 84 d3 00 00 00    	je     0x5a9b9d
5a9aca:	8b 44 24 2c          	mov    0x2c(%esp),%eax
5a9ace:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
5a9ad2:	74 15                	je     0x5a9ae9
5a9ad4:	8b 06                	mov    (%esi),%eax
5a9ad6:	53                   	push   %ebx
5a9ad7:	55                   	push   %ebp
5a9ad8:	56                   	push   %esi
5a9ad9:	8b 40 60             	mov    0x60(%eax),%eax
5a9adc:	ff d0                	call   *%eax
5a9ade:	83 c4 0c             	add    $0xc,%esp
5a9ae1:	85 c0                	test   %eax,%eax
5a9ae3:	0f 84 b4 00 00 00    	je     0x5a9b9d
5a9ae9:	8b 06                	mov    (%esi),%eax
5a9aeb:	53                   	push   %ebx
5a9aec:	55                   	push   %ebp
5a9aed:	57                   	push   %edi
5a9aee:	8b 40 58             	mov    0x58(%eax),%eax
5a9af1:	57                   	push   %edi
5a9af2:	56                   	push   %esi
5a9af3:	ff d0                	call   *%eax
5a9af5:	83 c4 14             	add    $0x14,%esp
5a9af8:	85 c0                	test   %eax,%eax
5a9afa:	0f 84 9d 00 00 00    	je     0x5a9b9d
5a9b00:	83 7c 24 30 00       	cmpl   $0x0,0x30(%esp)
5a9b05:	c7 44 24 14 00 00 00 	movl   $0x0,0x14(%esp)
5a9b0c:	00
5a9b0d:	76 6f                	jbe    0x5a9b7e
5a9b0f:	8b 44 24 34          	mov    0x34(%esp),%eax
5a9b13:	8b 7c 24 38          	mov    0x38(%esp),%edi
5a9b17:	2b c7                	sub    %edi,%eax
5a9b19:	89 44 24 1c          	mov    %eax,0x1c(%esp)
5a9b1d:	0f 1f 00             	nopl   (%eax)
5a9b20:	53                   	push   %ebx
5a9b21:	ff 34 38             	push   (%eax,%edi,1)
5a9b24:	ff 37                	push   (%edi)
5a9b26:	55                   	push   %ebp
5a9b27:	56                   	push   %esi
5a9b28:	e8 33 fb ff ff       	call   0x5a9660
5a9b2d:	83 c4 14             	add    $0x14,%esp
5a9b30:	85 c0                	test   %eax,%eax
5a9b32:	74 65                	je     0x5a9b99
5a9b34:	8b 07                	mov    (%edi),%eax
5a9b36:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
5a9b3a:	74 11                	je     0x5a9b4d
5a9b3c:	8b 06                	mov    (%esi),%eax
5a9b3e:	53                   	push   %ebx
5a9b3f:	55                   	push   %ebp
5a9b40:	56                   	push   %esi
5a9b41:	8b 40 60             	mov    0x60(%eax),%eax
5a9b44:	ff d0                	call   *%eax
5a9b46:	83 c4 0c             	add    $0xc,%esp
5a9b49:	85 c0                	test   %eax,%eax
5a9b4b:	74 4c                	je     0x5a9b99
5a9b4d:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
5a9b51:	8b 06                	mov    (%esi),%eax
5a9b53:	53                   	push   %ebx
5a9b54:	55                   	push   %ebp
5a9b55:	51                   	push   %ecx
5a9b56:	8b 40 58             	mov    0x58(%eax),%eax
5a9b59:	51                   	push   %ecx
5a9b5a:	56                   	push   %esi
5a9b5b:	ff d0                	call   *%eax
5a9b5d:	83 c4 14             	add    $0x14,%esp
5a9b60:	85 c0                	test   %eax,%eax
5a9b62:	74 35                	je     0x5a9b99
5a9b64:	8b 44 24 14          	mov    0x14(%esp),%eax
5a9b68:	83 c7 04             	add    $0x4,%edi
5a9b6b:	40                   	inc    %eax
5a9b6c:	3b 44 24 30          	cmp    0x30(%esp),%eax
5a9b70:	89 44 24 14          	mov    %eax,0x14(%esp)
5a9b74:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5a9b78:	72 a6                	jb     0x5a9b20
5a9b7a:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
5a9b7e:	57                   	push   %edi
5a9b7f:	ff 74 24 2c          	push   0x2c(%esp)
5a9b83:	e8 28 23 fd ff       	call   0x57beb0
5a9b88:	83 c4 08             	add    $0x8,%esp
5a9b8b:	85 c0                	test   %eax,%eax
5a9b8d:	74 0e                	je     0x5a9b9d
5a9b8f:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
5a9b96:	00
5a9b97:	eb 04                	jmp    0x5a9b9d
5a9b99:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
5a9b9d:	55                   	push   %ebp
5a9b9e:	e8 3d 24 fd ff       	call   0x57bfe0
5a9ba3:	83 c4 04             	add    $0x4,%esp
5a9ba6:	85 ff                	test   %edi,%edi
5a9ba8:	74 09                	je     0x5a9bb3
5a9baa:	57                   	push   %edi
5a9bab:	e8 30 24 fd ff       	call   0x57bfe0
5a9bb0:	83 c4 04             	add    $0x4,%esp
5a9bb3:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5a9bb7:	8b 44 24 18          	mov    0x18(%esp),%eax
5a9bbb:	5f                   	pop    %edi
5a9bbc:	5e                   	pop    %esi
5a9bbd:	5d                   	pop    %ebp
5a9bbe:	85 c0                	test   %eax,%eax
5a9bc0:	74 09                	je     0x5a9bcb
5a9bc2:	50                   	push   %eax
5a9bc3:	e8 c8 e1 f2 ff       	call   0x4d7d90
5a9bc8:	83 c4 04             	add    $0x4,%esp
5a9bcb:	8b c3                	mov    %ebx,%eax
5a9bcd:	5b                   	pop    %ebx
5a9bce:	83 c4 10             	add    $0x10,%esp
5a9bd1:	c3                   	ret
5a9bd2:	53                   	push   %ebx
5a9bd3:	ff 74 24 3c          	push   0x3c(%esp)
5a9bd7:	ff 74 24 3c          	push   0x3c(%esp)
5a9bdb:	55                   	push   %ebp
5a9bdc:	57                   	push   %edi
5a9bdd:	ff 74 24 3c          	push   0x3c(%esp)
5a9be1:	56                   	push   %esi
5a9be2:	e8 29 50 fe ff       	call   0x58ec10
5a9be7:	83 c4 1c             	add    $0x1c,%esp
5a9bea:	8b d8                	mov    %eax,%ebx
5a9bec:	eb c9                	jmp    0x5a9bb7
5a9bee:	33 db                	xor    %ebx,%ebx
5a9bf0:	eb c5                	jmp    0x5a9bb7
5a9bf2:	cc                   	int3
5a9bf3:	cc                   	int3
5a9bf4:	cc                   	int3
5a9bf5:	cc                   	int3
5a9bf6:	cc                   	int3
5a9bf7:	cc                   	int3
5a9bf8:	cc                   	int3
5a9bf9:	cc                   	int3
5a9bfa:	cc                   	int3
5a9bfb:	cc                   	int3
5a9bfc:	cc                   	int3
5a9bfd:	cc                   	int3
5a9bfe:	cc                   	int3
5a9bff:	cc                   	int3
5a9c00:	b8 0c 00 00 00       	mov    $0xc,%eax
5a9c05:	e8 e6 78 03 00       	call   0x5e14f0
5a9c0a:	53                   	push   %ebx
5a9c0b:	56                   	push   %esi
5a9c0c:	8b 74 24 30          	mov    0x30(%esp),%esi
5a9c10:	56                   	push   %esi
5a9c11:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
5a9c18:	00
5a9c19:	e8 82 e2 f2 ff       	call   0x4d7ea0
5a9c1e:	56                   	push   %esi
5a9c1f:	e8 9c e1 f2 ff       	call   0x4d7dc0
5a9c24:	8b d8                	mov    %eax,%ebx
5a9c26:	56                   	push   %esi
5a9c27:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
5a9c2b:	e8 90 e1 f2 ff       	call   0x4d7dc0
5a9c30:	83 c4 0c             	add    $0xc,%esp
5a9c33:	89 44 24 08          	mov    %eax,0x8(%esp)
5a9c37:	85 c0                	test   %eax,%eax
5a9c39:	0f 84 cf 00 00 00    	je     0x5a9d0e
5a9c3f:	ff 74 24 1c          	push   0x1c(%esp)
5a9c43:	53                   	push   %ebx
5a9c44:	e8 87 94 f0 ff       	call   0x4b30d0
5a9c49:	83 c4 08             	add    $0x8,%esp
5a9c4c:	85 c0                	test   %eax,%eax
5a9c4e:	0f 84 ba 00 00 00    	je     0x5a9d0e
5a9c54:	55                   	push   %ebp
5a9c55:	8b 6c 24 24          	mov    0x24(%esp),%ebp
5a9c59:	57                   	push   %edi
5a9c5a:	8b 7c 24 20          	mov    0x20(%esp),%edi
5a9c5e:	56                   	push   %esi
5a9c5f:	ff 74 24 38          	push   0x38(%esp)
5a9c63:	8b 07                	mov    (%edi),%eax
5a9c65:	55                   	push   %ebp
5a9c66:	55                   	push   %ebp
5a9c67:	57                   	push   %edi
5a9c68:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
5a9c6e:	ff d0                	call   *%eax
5a9c70:	83 c4 14             	add    $0x14,%esp
5a9c73:	85 c0                	test   %eax,%eax
5a9c75:	0f 84 91 00 00 00    	je     0x5a9d0c
5a9c7b:	8b 07                	mov    (%edi),%eax
5a9c7d:	8b 5c 24 2c          	mov    0x2c(%esp),%ebx
5a9c81:	56                   	push   %esi
5a9c82:	ff 74 24 34          	push   0x34(%esp)
5a9c86:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
5a9c8c:	53                   	push   %ebx
5a9c8d:	53                   	push   %ebx
5a9c8e:	57                   	push   %edi
5a9c8f:	ff d0                	call   *%eax
5a9c91:	83 c4 14             	add    $0x14,%esp
5a9c94:	85 c0                	test   %eax,%eax
5a9c96:	74 74                	je     0x5a9d0c
5a9c98:	8b 07                	mov    (%edi),%eax
5a9c9a:	56                   	push   %esi
5a9c9b:	53                   	push   %ebx
5a9c9c:	55                   	push   %ebp
5a9c9d:	ff 74 24 1c          	push   0x1c(%esp)
5a9ca1:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
5a9ca7:	57                   	push   %edi
5a9ca8:	ff d0                	call   *%eax
5a9caa:	83 c4 14             	add    $0x14,%esp
5a9cad:	85 c0                	test   %eax,%eax
5a9caf:	74 5b                	je     0x5a9d0c
5a9cb1:	55                   	push   %ebp
5a9cb2:	53                   	push   %ebx
5a9cb3:	53                   	push   %ebx
5a9cb4:	e8 47 04 00 00       	call   0x5aa100
5a9cb9:	83 c4 0c             	add    $0xc,%esp
5a9cbc:	85 c0                	test   %eax,%eax
5a9cbe:	74 4c                	je     0x5a9d0c
5a9cc0:	8b 07                	mov    (%edi),%eax
5a9cc2:	56                   	push   %esi
5a9cc3:	53                   	push   %ebx
5a9cc4:	53                   	push   %ebx
5a9cc5:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
5a9ccb:	57                   	push   %edi
5a9ccc:	ff d0                	call   *%eax
5a9cce:	83 c4 10             	add    $0x10,%esp
5a9cd1:	85 c0                	test   %eax,%eax
5a9cd3:	74 37                	je     0x5a9d0c
5a9cd5:	8b 07                	mov    (%edi),%eax
5a9cd7:	56                   	push   %esi
5a9cd8:	ff 74 24 1c          	push   0x1c(%esp)
5a9cdc:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
5a9ce2:	53                   	push   %ebx
5a9ce3:	55                   	push   %ebp
5a9ce4:	57                   	push   %edi
5a9ce5:	ff d0                	call   *%eax
5a9ce7:	83 c4 14             	add    $0x14,%esp
5a9cea:	85 c0                	test   %eax,%eax
5a9cec:	74 1e                	je     0x5a9d0c
5a9cee:	ff 74 24 10          	push   0x10(%esp)
5a9cf2:	55                   	push   %ebp
5a9cf3:	55                   	push   %ebp
5a9cf4:	e8 07 04 00 00       	call   0x5aa100
5a9cf9:	33 c9                	xor    %ecx,%ecx
5a9cfb:	83 c4 0c             	add    $0xc,%esp
5a9cfe:	85 c0                	test   %eax,%eax
5a9d00:	ba 01 00 00 00       	mov    $0x1,%edx
5a9d05:	0f 45 ca             	cmovne %edx,%ecx
5a9d08:	89 4c 24 14          	mov    %ecx,0x14(%esp)
5a9d0c:	5f                   	pop    %edi
5a9d0d:	5d                   	pop    %ebp
5a9d0e:	56                   	push   %esi
5a9d0f:	e8 3c e0 f2 ff       	call   0x4d7d50
5a9d14:	8b 44 24 10          	mov    0x10(%esp),%eax
5a9d18:	83 c4 04             	add    $0x4,%esp
5a9d1b:	5e                   	pop    %esi
5a9d1c:	5b                   	pop    %ebx
5a9d1d:	83 c4 0c             	add    $0xc,%esp
5a9d20:	c3                   	ret
5a9d21:	cc                   	int3
5a9d22:	cc                   	int3
5a9d23:	cc                   	int3
5a9d24:	cc                   	int3
5a9d25:	cc                   	int3
5a9d26:	cc                   	int3
5a9d27:	cc                   	int3
5a9d28:	cc                   	int3
5a9d29:	cc                   	int3
5a9d2a:	cc                   	int3
5a9d2b:	cc                   	int3
5a9d2c:	cc                   	int3
5a9d2d:	cc                   	int3
5a9d2e:	cc                   	int3
5a9d2f:	cc                   	int3
5a9d30:	b8 04 00 00 00       	mov    $0x4,%eax
5a9d35:	e8 b6 77 03 00       	call   0x5e14f0
5a9d3a:	53                   	push   %ebx
5a9d3b:	56                   	push   %esi
5a9d3c:	8b 74 24 1c          	mov    0x1c(%esp),%esi
5a9d40:	56                   	push   %esi
5a9d41:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
5a9d48:	00
5a9d49:	e8 52 e1 f2 ff       	call   0x4d7ea0
5a9d4e:	56                   	push   %esi
5a9d4f:	e8 6c e0 f2 ff       	call   0x4d7dc0
5a9d54:	8b d8                	mov    %eax,%ebx
5a9d56:	83 c4 08             	add    $0x8,%esp
5a9d59:	85 db                	test   %ebx,%ebx
5a9d5b:	0f 84 b7 00 00 00    	je     0x5a9e18
5a9d61:	55                   	push   %ebp
5a9d62:	8b 6c 24 18          	mov    0x18(%esp),%ebp
5a9d66:	57                   	push   %edi
5a9d67:	8b 7c 24 18          	mov    0x18(%esp),%edi
5a9d6b:	56                   	push   %esi
5a9d6c:	55                   	push   %ebp
5a9d6d:	55                   	push   %ebp
5a9d6e:	8b 07                	mov    (%edi),%eax
5a9d70:	57                   	push   %edi
5a9d71:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
5a9d77:	ff d0                	call   *%eax
5a9d79:	83 c4 10             	add    $0x10,%esp
5a9d7c:	85 c0                	test   %eax,%eax
5a9d7e:	0f 84 92 00 00 00    	je     0x5a9e16
5a9d84:	8b 07                	mov    (%edi),%eax
5a9d86:	56                   	push   %esi
5a9d87:	ff 74 24 24          	push   0x24(%esp)
5a9d8b:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
5a9d91:	53                   	push   %ebx
5a9d92:	57                   	push   %edi
5a9d93:	ff d0                	call   *%eax
5a9d95:	83 c4 10             	add    $0x10,%esp
5a9d98:	85 c0                	test   %eax,%eax
5a9d9a:	74 7a                	je     0x5a9e16
5a9d9c:	8b 07                	mov    (%edi),%eax
5a9d9e:	56                   	push   %esi
5a9d9f:	53                   	push   %ebx
5a9da0:	55                   	push   %ebp
5a9da1:	ff 74 24 2c          	push   0x2c(%esp)
5a9da5:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
5a9dab:	57                   	push   %edi
5a9dac:	ff d0                	call   *%eax