5acca6:	8b f0                	mov    %eax,%esi
5acca8:	4e                   	dec    %esi
5acca9:	8a 04 24             	mov    (%esp),%al
5accac:	2c 01                	sub    $0x1,%al
5accae:	72 0b                	jb     0x5accbb
5accb0:	0f 84 17 02 00 00    	je     0x5acecd
5accb6:	e9 94 02 00 00       	jmp    0x5acf4f
5accbb:	8b c3                	mov    %ebx,%eax
5accbd:	8b 10                	mov    (%eax),%edx
5accbf:	ff 52 10             	call   *0x10(%edx)
5accc2:	3c 05                	cmp    $0x5,%al
5accc4:	75 5e                	jne    0x5acd24
5accc6:	85 f6                	test   %esi,%esi
5accc8:	0f 8c 81 02 00 00    	jl     0x5acf4f
5accce:	46                   	inc    %esi
5acccf:	89 74 24 1c          	mov    %esi,0x1c(%esp)
5accd3:	33 ff                	xor    %edi,%edi
5accd5:	8b d7                	mov    %edi,%edx
5accd7:	8b 44 24 0c          	mov    0xc(%esp),%eax
5accdb:	8b 08                	mov    (%eax),%ecx
5accdd:	ff 11                	call   *(%ecx)
5accdf:	89 44 24 10          	mov    %eax,0x10(%esp)
5acce3:	8b d7                	mov    %edi,%edx
5acce5:	8b c3                	mov    %ebx,%eax
5acce7:	8b 08                	mov    (%eax),%ecx
5acce9:	ff 11                	call   *(%ecx)
5acceb:	8b 54 24 04          	mov    0x4(%esp),%edx
5accef:	8d 14 52             	lea    (%edx,%edx,2),%edx
5accf2:	03 c2                	add    %edx,%eax
5accf4:	8b 74 24 04          	mov    0x4(%esp),%esi
5accf8:	85 f6                	test   %esi,%esi
5accfa:	7c 1c                	jl     0x5acd18
5accfc:	46                   	inc    %esi
5accfd:	8b 54 24 10          	mov    0x10(%esp),%edx
5acd01:	66 8b 08             	mov    (%eax),%cx
5acd04:	66 89 0a             	mov    %cx,(%edx)
5acd07:	8a 48 02             	mov    0x2(%eax),%cl
5acd0a:	88 4a 02             	mov    %cl,0x2(%edx)
5acd0d:	83 44 24 10 03       	addl   $0x3,0x10(%esp)
5acd12:	83 e8 03             	sub    $0x3,%eax
5acd15:	4e                   	dec    %esi
5acd16:	75 e5                	jne    0x5accfd
5acd18:	47                   	inc    %edi
5acd19:	ff 4c 24 1c          	decl   0x1c(%esp)
5acd1d:	75 b6                	jne    0x5accd5
5acd1f:	e9 2b 02 00 00       	jmp    0x5acf4f
5acd24:	8b c3                	mov    %ebx,%eax
5acd26:	8b 10                	mov    (%eax),%edx
5acd28:	ff 52 10             	call   *0x10(%edx)
5acd2b:	3c 02                	cmp    $0x2,%al
5acd2d:	74 0b                	je     0x5acd3a
5acd2f:	8b c3                	mov    %ebx,%eax
5acd31:	8b 10                	mov    (%eax),%edx
5acd33:	ff 52 10             	call   *0x10(%edx)
5acd36:	3c 03                	cmp    $0x3,%al
5acd38:	75 55                	jne    0x5acd8f
5acd3a:	85 f6                	test   %esi,%esi
5acd3c:	0f 8c 0d 02 00 00    	jl     0x5acf4f
5acd42:	46                   	inc    %esi
5acd43:	89 74 24 1c          	mov    %esi,0x1c(%esp)
5acd47:	33 ff                	xor    %edi,%edi
5acd49:	8b d7                	mov    %edi,%edx
5acd4b:	8b 44 24 0c          	mov    0xc(%esp),%eax
5acd4f:	8b 08                	mov    (%eax),%ecx
5acd51:	ff 11                	call   *(%ecx)
5acd53:	8b e8                	mov    %eax,%ebp
5acd55:	8b d7                	mov    %edi,%edx
5acd57:	8b c3                	mov    %ebx,%eax
5acd59:	8b 08                	mov    (%eax),%ecx
5acd5b:	ff 11                	call   *(%ecx)
5acd5d:	89 44 24 14          	mov    %eax,0x14(%esp)
5acd61:	8b 44 24 04          	mov    0x4(%esp),%eax
5acd65:	01 44 24 14          	add    %eax,0x14(%esp)
5acd69:	8b 74 24 04          	mov    0x4(%esp),%esi
5acd6d:	85 f6                	test   %esi,%esi
5acd6f:	7c 12                	jl     0x5acd83
5acd71:	46                   	inc    %esi
5acd72:	8b 44 24 14          	mov    0x14(%esp),%eax
5acd76:	8a 00                	mov    (%eax),%al
5acd78:	88 45 00             	mov    %al,0x0(%ebp)
5acd7b:	45                   	inc    %ebp
5acd7c:	ff 4c 24 14          	decl   0x14(%esp)
5acd80:	4e                   	dec    %esi
5acd81:	75 ef                	jne    0x5acd72
5acd83:	47                   	inc    %edi
5acd84:	ff 4c 24 1c          	decl   0x1c(%esp)
5acd88:	75 bf                	jne    0x5acd49
5acd8a:	e9 c0 01 00 00       	jmp    0x5acf4f
5acd8f:	8b c3                	mov    %ebx,%eax
5acd91:	8b 10                	mov    (%eax),%edx
5acd93:	ff 52 10             	call   *0x10(%edx)
5acd96:	3c 01                	cmp    $0x1,%al
5acd98:	0f 85 b1 01 00 00    	jne    0x5acf4f
5acd9e:	8b c3                	mov    %ebx,%eax
5acda0:	8b 10                	mov    (%eax),%edx
5acda2:	ff 52 0c             	call   *0xc(%edx)
5acda5:	85 c0                	test   %eax,%eax
5acda7:	79 03                	jns    0x5acdac
5acda9:	83 c0 07             	add    $0x7,%eax
5acdac:	c1 f8 03             	sar    $0x3,%eax
5acdaf:	89 44 24 04          	mov    %eax,0x4(%esp)
5acdb3:	8b c3                	mov    %ebx,%eax
5acdb5:	8b 10                	mov    (%eax),%edx
5acdb7:	ff 52 0c             	call   *0xc(%edx)
5acdba:	a8 07                	test   $0x7,%al
5acdbc:	74 1b                	je     0x5acdd9
5acdbe:	ff 44 24 04          	incl   0x4(%esp)
5acdc2:	8b c3                	mov    %ebx,%eax
5acdc4:	8b 10                	mov    (%eax),%edx
5acdc6:	ff 52 0c             	call   *0xc(%edx)
5acdc9:	83 e0 07             	and    $0x7,%eax
5acdcc:	ba 08 00 00 00       	mov    $0x8,%edx
5acdd1:	2b d0                	sub    %eax,%edx
5acdd3:	89 54 24 08          	mov    %edx,0x8(%esp)
5acdd7:	eb 06                	jmp    0x5acddf
5acdd9:	33 c0                	xor    %eax,%eax
5acddb:	89 44 24 08          	mov    %eax,0x8(%esp)
5acddf:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
5acde4:	75 5b                	jne    0x5ace41
5acde6:	85 f6                	test   %esi,%esi
5acde8:	0f 8c 61 01 00 00    	jl     0x5acf4f
5acdee:	46                   	inc    %esi
5acdef:	89 74 24 1c          	mov    %esi,0x1c(%esp)
5acdf3:	33 ff                	xor    %edi,%edi
5acdf5:	8b d7                	mov    %edi,%edx
5acdf7:	8b 44 24 0c          	mov    0xc(%esp),%eax
5acdfb:	8b 08                	mov    (%eax),%ecx
5acdfd:	ff 11                	call   *(%ecx)
5acdff:	8b e8                	mov    %eax,%ebp
5ace01:	8b d7                	mov    %edi,%edx
5ace03:	8b c3                	mov    %ebx,%eax
5ace05:	8b 08                	mov    (%eax),%ecx
5ace07:	ff 11                	call   *(%ecx)
5ace09:	89 44 24 14          	mov    %eax,0x14(%esp)
5ace0d:	8b 44 24 04          	mov    0x4(%esp),%eax
5ace11:	48                   	dec    %eax
5ace12:	01 44 24 14          	add    %eax,0x14(%esp)
5ace16:	8b f0                	mov    %eax,%esi
5ace18:	85 f6                	test   %esi,%esi
5ace1a:	7c 19                	jl     0x5ace35
5ace1c:	46                   	inc    %esi
5ace1d:	8b 44 24 14          	mov    0x14(%esp),%eax
5ace21:	8a 00                	mov    (%eax),%al
5ace23:	88 45 00             	mov    %al,0x0(%ebp)
5ace26:	8b c5                	mov    %ebp,%eax
5ace28:	e8 67 3d 04 00       	call   0x5f0b94
5ace2d:	45                   	inc    %ebp
5ace2e:	ff 4c 24 14          	decl   0x14(%esp)
5ace32:	4e                   	dec    %esi
5ace33:	75 e8                	jne    0x5ace1d
5ace35:	47                   	inc    %edi
5ace36:	ff 4c 24 1c          	decl   0x1c(%esp)
5ace3a:	75 b9                	jne    0x5acdf5
5ace3c:	e9 0e 01 00 00       	jmp    0x5acf4f
5ace41:	8b 44 24 04          	mov    0x4(%esp),%eax
5ace45:	e8 62 59 e5 ff       	call   0x4027ac
5ace4a:	89 44 24 18          	mov    %eax,0x18(%esp)
5ace4e:	85 f6                	test   %esi,%esi
5ace50:	7c 6d                	jl     0x5acebf
5ace52:	46                   	inc    %esi
5ace53:	89 74 24 1c          	mov    %esi,0x1c(%esp)
5ace57:	33 ff                	xor    %edi,%edi
5ace59:	8b 6c 24 18          	mov    0x18(%esp),%ebp
5ace5d:	8b d7                	mov    %edi,%edx
5ace5f:	8b c3                	mov    %ebx,%eax
5ace61:	8b 08                	mov    (%eax),%ecx
5ace63:	ff 11                	call   *(%ecx)
5ace65:	89 44 24 14          	mov    %eax,0x14(%esp)
5ace69:	8b 44 24 04          	mov    0x4(%esp),%eax
5ace6d:	48                   	dec    %eax
5ace6e:	01 44 24 14          	add    %eax,0x14(%esp)
5ace72:	8b f0                	mov    %eax,%esi
5ace74:	85 f6                	test   %esi,%esi
5ace76:	7c 19                	jl     0x5ace91
5ace78:	46                   	inc    %esi
5ace79:	8b 44 24 14          	mov    0x14(%esp),%eax
5ace7d:	8a 00                	mov    (%eax),%al
5ace7f:	88 45 00             	mov    %al,0x0(%ebp)
5ace82:	8b c5                	mov    %ebp,%eax
5ace84:	e8 0b 3d 04 00       	call   0x5f0b94
5ace89:	45                   	inc    %ebp
5ace8a:	ff 4c 24 14          	decl   0x14(%esp)
5ace8e:	4e                   	dec    %esi
5ace8f:	75 e8                	jne    0x5ace79
5ace91:	8b 44 24 08          	mov    0x8(%esp),%eax
5ace95:	50                   	push   %eax
5ace96:	8b c3                	mov    %ebx,%eax
5ace98:	8b 10                	mov    (%eax),%edx
5ace9a:	ff 52 0c             	call   *0xc(%edx)
5ace9d:	50                   	push   %eax
5ace9e:	8b 44 24 0c          	mov    0xc(%esp),%eax
5acea2:	50                   	push   %eax
5acea3:	8b d7                	mov    %edi,%edx
5acea5:	8b 44 24 18          	mov    0x18(%esp),%eax
5acea9:	8b 08                	mov    (%eax),%ecx
5aceab:	ff 11                	call   *(%ecx)
5acead:	33 c9                	xor    %ecx,%ecx
5aceaf:	8b 54 24 24          	mov    0x24(%esp),%edx
5aceb3:	e8 2c f4 ff ff       	call   0x5ac2e4
5aceb8:	47                   	inc    %edi
5aceb9:	ff 4c 24 1c          	decl   0x1c(%esp)
5acebd:	75 9a                	jne    0x5ace59
5acebf:	8b 44 24 18          	mov    0x18(%esp),%eax
5acec3:	e8 04 59 e5 ff       	call   0x4027cc
5acec8:	e9 82 00 00 00       	jmp    0x5acf4f
5acecd:	8b c3                	mov    %ebx,%eax
5acecf:	8b 10                	mov    (%eax),%edx
5aced1:	ff 52 10             	call   *0x10(%edx)
5aced4:	3c 05                	cmp    $0x5,%al
5aced6:	75 3d                	jne    0x5acf15
5aced8:	85 f6                	test   %esi,%esi
5aceda:	7c 73                	jl     0x5acf4f
5acedc:	8b c6                	mov    %esi,%eax
5acede:	40                   	inc    %eax
5acedf:	89 44 24 1c          	mov    %eax,0x1c(%esp)
5acee3:	33 ff                	xor    %edi,%edi
5acee5:	8b d6                	mov    %esi,%edx
5acee7:	2b d7                	sub    %edi,%edx
5acee9:	8b c3                	mov    %ebx,%eax
5aceeb:	8b 08                	mov    (%eax),%ecx
5aceed:	ff 11                	call   *(%ecx)
5aceef:	50                   	push   %eax
5acef0:	8b d7                	mov    %edi,%edx
5acef2:	8b 44 24 10          	mov    0x10(%esp),%eax
5acef6:	8b 08                	mov    (%eax),%ecx
5acef8:	ff 11                	call   *(%ecx)
5acefa:	50                   	push   %eax
5acefb:	8b c3                	mov    %ebx,%eax
5acefd:	8b 10                	mov    (%eax),%edx
5aceff:	ff 52 0c             	call   *0xc(%edx)
5acf02:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
5acf05:	58                   	pop    %eax
5acf06:	5a                   	pop    %edx
5acf07:	e8 b4 af e5 ff       	call   0x407ec0
5acf0c:	47                   	inc    %edi
5acf0d:	ff 4c 24 1c          	decl   0x1c(%esp)
5acf11:	75 d2                	jne    0x5acee5
5acf13:	eb 3a                	jmp    0x5acf4f
5acf15:	85 f6                	test   %esi,%esi
5acf17:	7c 36                	jl     0x5acf4f
5acf19:	8b c6                	mov    %esi,%eax
5acf1b:	40                   	inc    %eax
5acf1c:	89 44 24 1c          	mov    %eax,0x1c(%esp)
5acf20:	33 ff                	xor    %edi,%edi
5acf22:	8b d6                	mov    %esi,%edx
5acf24:	2b d7                	sub    %edi,%edx
5acf26:	8b c3                	mov    %ebx,%eax
5acf28:	8b 08                	mov    (%eax),%ecx
5acf2a:	ff 11                	call   *(%ecx)
5acf2c:	50                   	push   %eax
5acf2d:	8b d7                	mov    %edi,%edx
5acf2f:	8b 44 24 10          	mov    0x10(%esp),%eax
5acf33:	8b 08                	mov    (%eax),%ecx
5acf35:	ff 11                	call   *(%ecx)
5acf37:	50                   	push   %eax
5acf38:	8b c3                	mov    %ebx,%eax
5acf3a:	8b 10                	mov    (%eax),%edx
5acf3c:	ff 52 14             	call   *0x14(%edx)
5acf3f:	8b c8                	mov    %eax,%ecx
5acf41:	58                   	pop    %eax
5acf42:	5a                   	pop    %edx
5acf43:	e8 78 af e5 ff       	call   0x407ec0
5acf48:	47                   	inc    %edi
5acf49:	ff 4c 24 1c          	decl   0x1c(%esp)
5acf4d:	75 d3                	jne    0x5acf22
5acf4f:	8b 54 24 0c          	mov    0xc(%esp),%edx
5acf53:	8b c3                	mov    %ebx,%eax
5acf55:	e8 66 ba 04 00       	call   0x5f89c0
5acf5a:	8b 44 24 0c          	mov    0xc(%esp),%eax
5acf5e:	e8 15 6b e5 ff       	call   0x403a78
5acf63:	8b c3                	mov    %ebx,%eax
5acf65:	e8 9e a9 04 00       	call   0x5f7908
5acf6a:	84 c0                	test   %al,%al
5acf6c:	74 0f                	je     0x5acf7d
5acf6e:	8b c3                	mov    %ebx,%eax
5acf70:	e8 63 a9 04 00       	call   0x5f78d8
5acf75:	8a 14 24             	mov    (%esp),%dl
5acf78:	e8 d7 fc ff ff       	call   0x5acc54
5acf7d:	83 c4 20             	add    $0x20,%esp
5acf80:	5d                   	pop    %ebp
5acf81:	5f                   	pop    %edi
5acf82:	5e                   	pop    %esi
5acf83:	5b                   	pop    %ebx
5acf84:	c3                   	ret
5acf85:	8d 40 00             	lea    0x0(%eax),%eax
5acf88:	56                   	push   %esi
5acf89:	8b f0                	mov    %eax,%esi
5acf8b:	8b 46 44             	mov    0x44(%esi),%eax
5acf8e:	8b 08                	mov    (%eax),%ecx
5acf90:	ff 51 08             	call   *0x8(%ecx)
5acf93:	5e                   	pop    %esi
5acf94:	c3                   	ret
5acf95:	8d 40 00             	lea    0x0(%eax),%eax
5acf98:	53                   	push   %ebx
5acf99:	56                   	push   %esi
5acf9a:	57                   	push   %edi
5acf9b:	55                   	push   %ebp
5acf9c:	8b ea                	mov    %edx,%ebp
5acf9e:	8b f0                	mov    %eax,%esi
5acfa0:	8b c6                	mov    %esi,%eax
5acfa2:	8b 10                	mov    (%eax),%edx
5acfa4:	ff 52 0c             	call   *0xc(%edx)
5acfa7:	8b d8                	mov    %eax,%ebx
5acfa9:	8b c5                	mov    %ebp,%eax
5acfab:	8b 10                	mov    (%eax),%edx
5acfad:	ff 52 0c             	call   *0xc(%edx)
5acfb0:	3b d8                	cmp    %eax,%ebx
5acfb2:	75 14                	jne    0x5acfc8
5acfb4:	8b c6                	mov    %esi,%eax
5acfb6:	8b 10                	mov    (%eax),%edx
5acfb8:	ff 52 08             	call   *0x8(%edx)
5acfbb:	8b d8                	mov    %eax,%ebx
5acfbd:	8b c5                	mov    %ebp,%eax
5acfbf:	8b 10                	mov    (%eax),%edx
5acfc1:	ff 52 08             	call   *0x8(%edx)
5acfc4:	3b d8                	cmp    %eax,%ebx
5acfc6:	74 07                	je     0x5acfcf
5acfc8:	33 c0                	xor    %eax,%eax
5acfca:	e9 b2 00 00 00       	jmp    0x5ad081
5acfcf:	8b c6                	mov    %esi,%eax
5acfd1:	e8 32 a9 04 00       	call   0x5f7908
5acfd6:	8b d8                	mov    %eax,%ebx
5acfd8:	8b c5                	mov    %ebp,%eax
5acfda:	e8 29 a9 04 00       	call   0x5f7908
5acfdf:	3a d8                	cmp    %al,%bl
5acfe1:	74 07                	je     0x5acfea
5acfe3:	33 c0                	xor    %eax,%eax
5acfe5:	e9 97 00 00 00       	jmp    0x5ad081
5acfea:	8b c6                	mov    %esi,%eax
5acfec:	8b 10                	mov    (%eax),%edx
5acfee:	ff 52 08             	call   *0x8(%edx)
5acff1:	8b f8                	mov    %eax,%edi
5acff3:	4f                   	dec    %edi
5acff4:	85 ff                	test   %edi,%edi
5acff6:	7c 2d                	jl     0x5ad025
5acff8:	47                   	inc    %edi
5acff9:	33 db                	xor    %ebx,%ebx
5acffb:	8b d3                	mov    %ebx,%edx
5acffd:	8b c5                	mov    %ebp,%eax
5acfff:	8b 08                	mov    (%eax),%ecx
5ad001:	ff 11                	call   *(%ecx)
5ad003:	50                   	push   %eax
5ad004:	8b d3                	mov    %ebx,%edx
5ad006:	8b c6                	mov    %esi,%eax
5ad008:	8b 08                	mov    (%eax),%ecx
5ad00a:	ff 11                	call   *(%ecx)
5ad00c:	50                   	push   %eax
5ad00d:	8b c6                	mov    %esi,%eax
5ad00f:	8b 10                	mov    (%eax),%edx
5ad011:	ff 52 14             	call   *0x14(%edx)