506d65:	83 c4 0c             	add    $0xc,%esp
506d68:	5d                   	pop    %ebp
506d69:	5f                   	pop    %edi
506d6a:	5e                   	pop    %esi
506d6b:	5b                   	pop    %ebx
506d6c:	c3                   	ret
506d6d:	90                   	nop
506d6e:	90                   	nop
506d6f:	90                   	nop
506d70:	53                   	push   %ebx
506d71:	56                   	push   %esi
506d72:	57                   	push   %edi
506d73:	55                   	push   %ebp
506d74:	8b f8                	mov    %eax,%edi
506d76:	81 c4 d4 fe ff ff    	add    $0xfffffed4,%esp
506d7c:	8b 47 14             	mov    0x14(%edi),%eax
506d7f:	89 44 24 0c          	mov    %eax,0xc(%esp)
506d83:	8b 44 24 0c          	mov    0xc(%esp),%eax
506d87:	8b 54 24 0c          	mov    0xc(%esp),%edx
506d8b:	8b 70 04             	mov    0x4(%eax),%esi
506d8e:	8b 1a                	mov    (%edx),%ebx
506d90:	85 f6                	test   %esi,%esi
506d92:	75 21                	jne    0x506db5
506d94:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
506d98:	8b c7                	mov    %edi,%eax
506d9a:	ff 53 0c             	call   *0xc(%ebx)
506d9d:	85 c0                	test   %eax,%eax
506d9f:	75 07                	jne    0x506da8
506da1:	33 c0                	xor    %eax,%eax
506da3:	e9 da 02 00 00       	jmp    0x507082
506da8:	8b 54 24 0c          	mov    0xc(%esp),%edx
506dac:	8b 44 24 0c          	mov    0xc(%esp),%eax
506db0:	8b 70 04             	mov    0x4(%eax),%esi
506db3:	8b 1a                	mov    (%edx),%ebx
506db5:	33 c0                	xor    %eax,%eax
506db7:	4e                   	dec    %esi
506db8:	8a 03                	mov    (%ebx),%al
506dba:	43                   	inc    %ebx
506dbb:	c1 e0 08             	shl    $0x8,%eax
506dbe:	85 f6                	test   %esi,%esi
506dc0:	89 04 24             	mov    %eax,(%esp)
506dc3:	75 21                	jne    0x506de6
506dc5:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
506dc9:	8b c7                	mov    %edi,%eax
506dcb:	ff 53 0c             	call   *0xc(%ebx)
506dce:	85 c0                	test   %eax,%eax
506dd0:	75 07                	jne    0x506dd9
506dd2:	33 c0                	xor    %eax,%eax
506dd4:	e9 a9 02 00 00       	jmp    0x507082
506dd9:	8b 54 24 0c          	mov    0xc(%esp),%edx
506ddd:	8b 44 24 0c          	mov    0xc(%esp),%eax
506de1:	8b 70 04             	mov    0x4(%eax),%esi
506de4:	8b 1a                	mov    (%edx),%ebx
506de6:	4e                   	dec    %esi
506de7:	33 c0                	xor    %eax,%eax
506de9:	8a 03                	mov    (%ebx),%al
506deb:	01 04 24             	add    %eax,(%esp)
506dee:	43                   	inc    %ebx
506def:	83 2c 24 02          	subl   $0x2,(%esp)
506df3:	83 3c 24 00          	cmpl   $0x0,(%esp)
506df7:	0f 8e 73 02 00 00    	jle    0x507070
506dfd:	85 f6                	test   %esi,%esi
506dff:	75 21                	jne    0x506e22
506e01:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
506e05:	8b c7                	mov    %edi,%eax
506e07:	ff 53 0c             	call   *0xc(%ebx)
506e0a:	85 c0                	test   %eax,%eax
506e0c:	75 07                	jne    0x506e15
506e0e:	33 c0                	xor    %eax,%eax
506e10:	e9 6d 02 00 00       	jmp    0x507082
506e15:	8b 54 24 0c          	mov    0xc(%esp),%edx
506e19:	8b 44 24 0c          	mov    0xc(%esp),%eax
506e1d:	8b 70 04             	mov    0x4(%eax),%esi
506e20:	8b 1a                	mov    (%edx),%ebx
506e22:	33 c0                	xor    %eax,%eax
506e24:	4e                   	dec    %esi
506e25:	8a 03                	mov    (%ebx),%al
506e27:	43                   	inc    %ebx
506e28:	89 44 24 04          	mov    %eax,0x4(%esp)
506e2c:	8b 07                	mov    (%edi),%eax
506e2e:	c7 40 14 4f 00 00 00 	movl   $0x4f,0x14(%eax)
506e35:	8b 54 24 04          	mov    0x4(%esp),%edx
506e39:	89 50 18             	mov    %edx,0x18(%eax)
506e3c:	8b c7                	mov    %edi,%eax
506e3e:	ba 01 00 00 00       	mov    $0x1,%edx
506e43:	8b 08                	mov    (%eax),%ecx
506e45:	ff 51 04             	call   *0x4(%ecx)
506e48:	c6 44 24 18 00       	movb   $0x0,0x18(%esp)
506e4d:	33 c0                	xor    %eax,%eax
506e4f:	bd 01 00 00 00       	mov    $0x1,%ebp
506e54:	89 44 24 08          	mov    %eax,0x8(%esp)
506e58:	8d 44 24 19          	lea    0x19(%esp),%eax
506e5c:	89 44 24 10          	mov    %eax,0x10(%esp)
506e60:	85 f6                	test   %esi,%esi
506e62:	75 21                	jne    0x506e85
506e64:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
506e68:	8b c7                	mov    %edi,%eax
506e6a:	ff 53 0c             	call   *0xc(%ebx)
506e6d:	85 c0                	test   %eax,%eax
506e6f:	75 07                	jne    0x506e78
506e71:	33 c0                	xor    %eax,%eax
506e73:	e9 0a 02 00 00       	jmp    0x507082
506e78:	8b 54 24 0c          	mov    0xc(%esp),%edx
506e7c:	8b 44 24 0c          	mov    0xc(%esp),%eax
506e80:	8b 70 04             	mov    0x4(%eax),%esi
506e83:	8b 1a                	mov    (%edx),%ebx
506e85:	8b 54 24 10          	mov    0x10(%esp),%edx
506e89:	8a 03                	mov    (%ebx),%al
506e8b:	33 c9                	xor    %ecx,%ecx
506e8d:	43                   	inc    %ebx
506e8e:	8a c8                	mov    %al,%cl
506e90:	88 02                	mov    %al,(%edx)
506e92:	01 4c 24 08          	add    %ecx,0x8(%esp)
506e96:	ff 44 24 10          	incl   0x10(%esp)
506e9a:	4e                   	dec    %esi
506e9b:	45                   	inc    %ebp
506e9c:	83 fd 10             	cmp    $0x10,%ebp
506e9f:	7e bf                	jle    0x506e60
506ea1:	83 2c 24 11          	subl   $0x11,(%esp)
506ea5:	8b 07                	mov    (%edi),%eax
506ea7:	83 c0 18             	add    $0x18,%eax
506eaa:	33 d2                	xor    %edx,%edx
506eac:	8a 54 24 19          	mov    0x19(%esp),%dl
506eb0:	89 10                	mov    %edx,(%eax)
506eb2:	33 c9                	xor    %ecx,%ecx
506eb4:	8a 4c 24 1a          	mov    0x1a(%esp),%cl
506eb8:	89 48 04             	mov    %ecx,0x4(%eax)
506ebb:	33 d2                	xor    %edx,%edx
506ebd:	8a 54 24 1b          	mov    0x1b(%esp),%dl
506ec1:	89 50 08             	mov    %edx,0x8(%eax)
506ec4:	33 c9                	xor    %ecx,%ecx
506ec6:	8a 4c 24 1c          	mov    0x1c(%esp),%cl
506eca:	89 48 0c             	mov    %ecx,0xc(%eax)
506ecd:	33 d2                	xor    %edx,%edx
506ecf:	8a 54 24 1d          	mov    0x1d(%esp),%dl
506ed3:	89 50 10             	mov    %edx,0x10(%eax)
506ed6:	33 c9                	xor    %ecx,%ecx
506ed8:	8a 4c 24 1e          	mov    0x1e(%esp),%cl
506edc:	89 48 14             	mov    %ecx,0x14(%eax)
506edf:	33 d2                	xor    %edx,%edx
506ee1:	8a 54 24 1f          	mov    0x1f(%esp),%dl
506ee5:	89 50 18             	mov    %edx,0x18(%eax)
506ee8:	33 c9                	xor    %ecx,%ecx
506eea:	8a 4c 24 20          	mov    0x20(%esp),%cl
506eee:	89 48 1c             	mov    %ecx,0x1c(%eax)
506ef1:	8b 07                	mov    (%edi),%eax
506ef3:	c7 40 14 55 00 00 00 	movl   $0x55,0x14(%eax)
506efa:	ba 02 00 00 00       	mov    $0x2,%edx
506eff:	8b c7                	mov    %edi,%eax
506f01:	8b 08                	mov    (%eax),%ecx
506f03:	ff 51 04             	call   *0x4(%ecx)
506f06:	8b 07                	mov    (%edi),%eax
506f08:	83 c0 18             	add    $0x18,%eax
506f0b:	33 d2                	xor    %edx,%edx
506f0d:	8a 54 24 21          	mov    0x21(%esp),%dl
506f11:	89 10                	mov    %edx,(%eax)
506f13:	33 c9                	xor    %ecx,%ecx
506f15:	8a 4c 24 22          	mov    0x22(%esp),%cl
506f19:	89 48 04             	mov    %ecx,0x4(%eax)
506f1c:	33 d2                	xor    %edx,%edx
506f1e:	8a 54 24 23          	mov    0x23(%esp),%dl
506f22:	89 50 08             	mov    %edx,0x8(%eax)
506f25:	33 c9                	xor    %ecx,%ecx
506f27:	8a 4c 24 24          	mov    0x24(%esp),%cl
506f2b:	89 48 0c             	mov    %ecx,0xc(%eax)
506f2e:	33 d2                	xor    %edx,%edx
506f30:	8a 54 24 25          	mov    0x25(%esp),%dl
506f34:	89 50 10             	mov    %edx,0x10(%eax)
506f37:	33 c9                	xor    %ecx,%ecx
506f39:	8a 4c 24 26          	mov    0x26(%esp),%cl
506f3d:	89 48 14             	mov    %ecx,0x14(%eax)
506f40:	33 d2                	xor    %edx,%edx
506f42:	8a 54 24 27          	mov    0x27(%esp),%dl
506f46:	89 50 18             	mov    %edx,0x18(%eax)
506f49:	33 c9                	xor    %ecx,%ecx
506f4b:	8a 4c 24 28          	mov    0x28(%esp),%cl
506f4f:	89 48 1c             	mov    %ecx,0x1c(%eax)
506f52:	8b 07                	mov    (%edi),%eax
506f54:	c7 40 14 55 00 00 00 	movl   $0x55,0x14(%eax)
506f5b:	ba 02 00 00 00       	mov    $0x2,%edx
506f60:	8b c7                	mov    %edi,%eax
506f62:	8b 08                	mov    (%eax),%ecx
506f64:	ff 51 04             	call   *0x4(%ecx)
506f67:	81 7c 24 08 00 01 00 	cmpl   $0x100,0x8(%esp)
506f6e:	00
506f6f:	7f 09                	jg     0x506f7a
506f71:	8b 44 24 08          	mov    0x8(%esp),%eax
506f75:	3b 04 24             	cmp    (%esp),%eax
506f78:	7e 0f                	jle    0x506f89
506f7a:	8b 17                	mov    (%edi),%edx
506f7c:	8b c7                	mov    %edi,%eax
506f7e:	c7 42 14 1c 00 00 00 	movl   $0x1c,0x14(%edx)
506f85:	8b 10                	mov    (%eax),%edx
506f87:	ff 12                	call   *(%edx)
506f89:	33 ed                	xor    %ebp,%ebp
506f8b:	8d 44 24 2c          	lea    0x2c(%esp),%eax
506f8f:	89 44 24 14          	mov    %eax,0x14(%esp)
506f93:	3b 6c 24 08          	cmp    0x8(%esp),%ebp
506f97:	7d 3a                	jge    0x506fd3
506f99:	85 f6                	test   %esi,%esi
506f9b:	75 21                	jne    0x506fbe
506f9d:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
506fa1:	8b c7                	mov    %edi,%eax
506fa3:	ff 53 0c             	call   *0xc(%ebx)
506fa6:	85 c0                	test   %eax,%eax
506fa8:	75 07                	jne    0x506fb1
506faa:	33 c0                	xor    %eax,%eax
506fac:	e9 d1 00 00 00       	jmp    0x507082
506fb1:	8b 54 24 0c          	mov    0xc(%esp),%edx
506fb5:	8b 44 24 0c          	mov    0xc(%esp),%eax
506fb9:	8b 70 04             	mov    0x4(%eax),%esi
506fbc:	8b 1a                	mov    (%edx),%ebx
506fbe:	4e                   	dec    %esi
506fbf:	8b 44 24 14          	mov    0x14(%esp),%eax
506fc3:	8a 13                	mov    (%ebx),%dl
506fc5:	88 10                	mov    %dl,(%eax)
506fc7:	43                   	inc    %ebx
506fc8:	45                   	inc    %ebp
506fc9:	ff 44 24 14          	incl   0x14(%esp)
506fcd:	3b 6c 24 08          	cmp    0x8(%esp),%ebp
506fd1:	7c c6                	jl     0x506f99
506fd3:	8b 4c 24 08          	mov    0x8(%esp),%ecx
506fd7:	29 0c 24             	sub    %ecx,(%esp)
506fda:	f6 44 24 04 10       	testb  $0x10,0x4(%esp)
506fdf:	74 16                	je     0x506ff7
506fe1:	83 6c 24 04 10       	subl   $0x10,0x4(%esp)
506fe6:	8b 6c 24 04          	mov    0x4(%esp),%ebp
506fea:	c1 e5 02             	shl    $0x2,%ebp
506fed:	03 ef                	add    %edi,%ebp
506fef:	81 c5 c0 00 00 00    	add    $0xc0,%ebp
506ff5:	eb 0f                	jmp    0x507006
506ff7:	8b 6c 24 04          	mov    0x4(%esp),%ebp
506ffb:	c1 e5 02             	shl    $0x2,%ebp
506ffe:	03 ef                	add    %edi,%ebp
507000:	81 c5 b0 00 00 00    	add    $0xb0,%ebp
507006:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
50700b:	7c 07                	jl     0x507014
50700d:	83 7c 24 04 04       	cmpl   $0x4,0x4(%esp)
507012:	7c 16                	jl     0x50702a
507014:	8b 07                	mov    (%edi),%eax
507016:	c7 40 14 1d 00 00 00 	movl   $0x1d,0x14(%eax)
50701d:	8b 54 24 04          	mov    0x4(%esp),%edx
507021:	89 50 18             	mov    %edx,0x18(%eax)
507024:	8b c7                	mov    %edi,%eax
507026:	8b 10                	mov    (%eax),%edx
507028:	ff 12                	call   *(%edx)
50702a:	83 7d 00 00          	cmpl   $0x0,0x0(%ebp)
50702e:	75 0a                	jne    0x50703a
507030:	8b c7                	mov    %edi,%eax
507032:	e8 21 0c 00 00       	call   0x507c58
507037:	89 45 00             	mov    %eax,0x0(%ebp)
50703a:	6a 11                	push   $0x11
50703c:	8d 54 24 1c          	lea    0x1c(%esp),%edx
507040:	52                   	push   %edx
507041:	8b 4d 00             	mov    0x0(%ebp),%ecx
507044:	51                   	push   %ecx
507045:	e8 82 42 ff ff       	call   0x4fb2cc
50704a:	83 c4 0c             	add    $0xc,%esp
50704d:	68 00 01 00 00       	push   $0x100
507052:	8d 44 24 30          	lea    0x30(%esp),%eax
507056:	50                   	push   %eax
507057:	8b 55 00             	mov    0x0(%ebp),%edx
50705a:	83 c2 11             	add    $0x11,%edx
50705d:	52                   	push   %edx
50705e:	e8 69 42 ff ff       	call   0x4fb2cc
507063:	83 c4 0c             	add    $0xc,%esp
507066:	83 3c 24 00          	cmpl   $0x0,(%esp)
50706a:	0f 8f 8d fd ff ff    	jg     0x506dfd
507070:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
507074:	89 19                	mov    %ebx,(%ecx)
507076:	8b 44 24 0c          	mov    0xc(%esp),%eax
50707a:	89 70 04             	mov    %esi,0x4(%eax)
50707d:	b8 01 00 00 00       	mov    $0x1,%eax
507082:	81 c4 2c 01 00 00    	add    $0x12c,%esp
507088:	5d                   	pop    %ebp
507089:	5f                   	pop    %edi
50708a:	5e                   	pop    %esi
50708b:	5b                   	pop    %ebx
50708c:	c3                   	ret
50708d:	90                   	nop
50708e:	90                   	nop
50708f:	90                   	nop
507090:	53                   	push   %ebx
507091:	56                   	push   %esi
507092:	57                   	push   %edi
507093:	55                   	push   %ebp
507094:	8b e8                	mov    %eax,%ebp
507096:	83 c4 e8             	add    $0xffffffe8,%esp
507099:	8b 45 14             	mov    0x14(%ebp),%eax
50709c:	89 44 24 10          	mov    %eax,0x10(%esp)
5070a0:	8b 44 24 10          	mov    0x10(%esp),%eax
5070a4:	8b 54 24 10          	mov    0x10(%esp),%edx
5070a8:	8b 78 04             	mov    0x4(%eax),%edi
5070ab:	8b 32                	mov    (%edx),%esi
5070ad:	85 ff                	test   %edi,%edi
5070af:	75 21                	jne    0x5070d2
5070b1:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5070b5:	8b c5                	mov    %ebp,%eax
5070b7:	ff 53 0c             	call   *0xc(%ebx)
5070ba:	85 c0                	test   %eax,%eax
5070bc:	75 07                	jne    0x5070c5
5070be:	33 c0                	xor    %eax,%eax
5070c0:	e9 47 02 00 00       	jmp    0x50730c
5070c5:	8b 54 24 10          	mov    0x10(%esp),%edx
5070c9:	8b 44 24 10          	mov    0x10(%esp),%eax
5070cd:	8b 78 04             	mov    0x4(%eax),%edi
5070d0:	8b 32                	mov    (%edx),%esi
5070d2:	33 c0                	xor    %eax,%eax
5070d4:	4f                   	dec    %edi
5070d5:	8a 06                	mov    (%esi),%al
5070d7:	46                   	inc    %esi
5070d8:	c1 e0 08             	shl    $0x8,%eax
5070db:	85 ff                	test   %edi,%edi
5070dd:	89 04 24             	mov    %eax,(%esp)
5070e0:	75 21                	jne    0x507103
5070e2:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5070e6:	8b c5                	mov    %ebp,%eax
5070e8:	ff 53 0c             	call   *0xc(%ebx)
5070eb:	85 c0                	test   %eax,%eax
5070ed:	75 07                	jne    0x5070f6
5070ef:	33 c0                	xor    %eax,%eax
5070f1:	e9 16 02 00 00       	jmp    0x50730c
5070f6:	8b 54 24 10          	mov    0x10(%esp),%edx
5070fa:	8b 44 24 10          	mov    0x10(%esp),%eax
5070fe:	8b 78 04             	mov    0x4(%eax),%edi
507101:	8b 32                	mov    (%edx),%esi
507103:	4f                   	dec    %edi
507104:	33 c0                	xor    %eax,%eax
507106:	8a 06                	mov    (%esi),%al
507108:	01 04 24             	add    %eax,(%esp)
50710b:	46                   	inc    %esi
50710c:	83 2c 24 02          	subl   $0x2,(%esp)
507110:	83 3c 24 00          	cmpl   $0x0,(%esp)
507114:	0f 8e e0 01 00 00    	jle    0x5072fa
50711a:	85 ff                	test   %edi,%edi
50711c:	75 21                	jne    0x50713f
50711e:	8b 5c 24 10          	mov    0x10(%esp),%ebx
507122:	8b c5                	mov    %ebp,%eax
507124:	ff 53 0c             	call   *0xc(%ebx)
507127:	85 c0                	test   %eax,%eax
507129:	75 07                	jne    0x507132
50712b:	33 c0                	xor    %eax,%eax
50712d:	e9 da 01 00 00       	jmp    0x50730c
507132:	8b 54 24 10          	mov    0x10(%esp),%edx
507136:	8b 44 24 10          	mov    0x10(%esp),%eax
50713a:	8b 78 04             	mov    0x4(%eax),%edi
50713d:	8b 32                	mov    (%edx),%esi
50713f:	33 db                	xor    %ebx,%ebx
507141:	4f                   	dec    %edi
507142:	8a 1e                	mov    (%esi),%bl