586e4d:	eb 5e                	jmp    0x586ead
586e4f:	57                   	push   %edi
586e50:	e8 8b c5 f2 ff       	call   0x4b33e0
586e55:	ba 01 00 00 00       	mov    $0x1,%edx
586e5a:	83 c4 04             	add    $0x4,%esp
586e5d:	8d 48 ff             	lea    -0x1(%eax),%ecx
586e60:	d3 e2                	shl    %cl,%edx
586e62:	8d 04 12             	lea    (%edx,%edx,1),%eax
586e65:	3b fa                	cmp    %edx,%edi
586e67:	75 28                	jne    0x586e91
586e69:	03 c0                	add    %eax,%eax
586e6b:	3b 43 08             	cmp    0x8(%ebx),%eax
586e6e:	7f 04                	jg     0x586e74
586e70:	8b c3                	mov    %ebx,%eax
586e72:	eb 0a                	jmp    0x586e7e
586e74:	50                   	push   %eax
586e75:	53                   	push   %ebx
586e76:	e8 25 c8 f2 ff       	call   0x4b36a0
586e7b:	83 c4 08             	add    $0x8,%esp
586e7e:	85 c0                	test   %eax,%eax
586e80:	74 7b                	je     0x586efd
586e82:	ff 33                	push   (%ebx)
586e84:	57                   	push   %edi
586e85:	ff 75 00             	push   0x0(%ebp)
586e88:	ff 36                	push   (%esi)
586e8a:	e8 61 01 00 00       	call   0x586ff0
586e8f:	eb 27                	jmp    0x586eb8
586e91:	8d 04 3f             	lea    (%edi,%edi,1),%eax
586e94:	3b 43 08             	cmp    0x8(%ebx),%eax
586e97:	7f 04                	jg     0x586e9d
586e99:	8b c3                	mov    %ebx,%eax
586e9b:	eb 0a                	jmp    0x586ea7
586e9d:	50                   	push   %eax
586e9e:	53                   	push   %ebx
586e9f:	e8 fc c7 f2 ff       	call   0x4b36a0
586ea4:	83 c4 08             	add    $0x8,%esp
586ea7:	85 c0                	test   %eax,%eax
586ea9:	74 52                	je     0x586efd
586eab:	ff 33                	push   (%ebx)
586ead:	57                   	push   %edi
586eae:	ff 75 00             	push   0x0(%ebp)
586eb1:	ff 36                	push   (%esi)
586eb3:	e8 78 00 00 00       	call   0x586f30
586eb8:	83 c4 10             	add    $0x10,%esp
586ebb:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
586ec2:	8b 45 00             	mov    0x0(%ebp),%eax
586ec5:	8b 4c b8 fc          	mov    -0x4(%eax,%edi,4),%ecx
586ec9:	0f b7 c1             	movzwl %cx,%eax
586ecc:	3b c8                	cmp    %eax,%ecx
586ece:	75 09                	jne    0x586ed9
586ed0:	8d 04 7d ff ff ff ff 	lea    -0x1(,%edi,2),%eax
586ed7:	eb 03                	jmp    0x586edc
586ed9:	8d 04 3f             	lea    (%edi,%edi,1),%eax
586edc:	89 46 04             	mov    %eax,0x4(%esi)
586edf:	8b 44 24 18          	mov    0x18(%esp),%eax
586ee3:	3b c6                	cmp    %esi,%eax
586ee5:	74 0e                	je     0x586ef5
586ee7:	56                   	push   %esi
586ee8:	50                   	push   %eax
586ee9:	e8 e2 c1 f2 ff       	call   0x4b30d0
586eee:	83 c4 08             	add    $0x8,%esp
586ef1:	85 c0                	test   %eax,%eax
586ef3:	74 08                	je     0x586efd
586ef5:	c7 44 24 14 01 00 00 	movl   $0x1,0x14(%esp)
586efc:	00
586efd:	ff 74 24 10          	push   0x10(%esp)
586f01:	e8 4a 0e f5 ff       	call   0x4d7d50
586f06:	8b 44 24 18          	mov    0x18(%esp),%eax
586f0a:	83 c4 04             	add    $0x4,%esp
586f0d:	8b 8c 24 9c 00 00 00 	mov    0x9c(%esp),%ecx
586f14:	5f                   	pop    %edi
586f15:	5e                   	pop    %esi
586f16:	5d                   	pop    %ebp
586f17:	5b                   	pop    %ebx
586f18:	33 cc                	xor    %esp,%ecx
586f1a:	e8 bb a5 05 00       	call   0x5e14da
586f1f:	81 c4 90 00 00 00    	add    $0x90,%esp
586f25:	c3                   	ret
586f26:	cc                   	int3
586f27:	cc                   	int3
586f28:	cc                   	int3
586f29:	cc                   	int3
586f2a:	cc                   	int3
586f2b:	cc                   	int3
586f2c:	cc                   	int3
586f2d:	cc                   	int3
586f2e:	cc                   	int3
586f2f:	cc                   	int3
586f30:	b8 04 00 00 00       	mov    $0x4,%eax
586f35:	e8 b6 a5 05 00       	call   0x5e14f0
586f3a:	8b 44 24 10          	mov    0x10(%esp),%eax
586f3e:	8b 54 24 0c          	mov    0xc(%esp),%edx
586f42:	53                   	push   %ebx
586f43:	55                   	push   %ebp
586f44:	8b 6c 24 10          	mov    0x10(%esp),%ebp
586f48:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
586f4b:	56                   	push   %esi
586f4c:	8d 70 ff             	lea    -0x1(%eax),%esi
586f4f:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
586f53:	8b da                	mov    %edx,%ebx
586f55:	c7 44 8d fc 00 00 00 	movl   $0x0,-0x4(%ebp,%ecx,4)
586f5c:	00
586f5d:	c7 45 00 00 00 00 00 	movl   $0x0,0x0(%ebp)
586f64:	57                   	push   %edi
586f65:	8d 7d 04             	lea    0x4(%ebp),%edi
586f68:	85 f6                	test   %esi,%esi
586f6a:	7e 1a                	jle    0x586f86
586f6c:	ff 32                	push   (%edx)
586f6e:	8d 5a 04             	lea    0x4(%edx),%ebx
586f71:	56                   	push   %esi
586f72:	53                   	push   %ebx
586f73:	57                   	push   %edi
586f74:	e8 b7 42 f4 ff       	call   0x4cb230
586f79:	89 04 b7             	mov    %eax,(%edi,%esi,4)
586f7c:	83 c4 10             	add    $0x10,%esp
586f7f:	8b 44 24 20          	mov    0x20(%esp),%eax
586f83:	83 c7 08             	add    $0x8,%edi
586f86:	83 c0 fe             	add    $0xfffffffe,%eax
586f89:	85 c0                	test   %eax,%eax
586f8b:	7e 23                	jle    0x586fb0
586f8d:	8d 6e ff             	lea    -0x1(%esi),%ebp
586f90:	ff 33                	push   (%ebx)
586f92:	83 c3 04             	add    $0x4,%ebx
586f95:	4e                   	dec    %esi
586f96:	56                   	push   %esi
586f97:	53                   	push   %ebx
586f98:	57                   	push   %edi
586f99:	4d                   	dec    %ebp
586f9a:	e8 c1 39 f4 ff       	call   0x4ca960
586f9f:	89 04 b7             	mov    %eax,(%edi,%esi,4)
586fa2:	83 c4 10             	add    $0x10,%esp
586fa5:	83 c7 08             	add    $0x8,%edi
586fa8:	85 ed                	test   %ebp,%ebp
586faa:	7f e4                	jg     0x586f90
586fac:	8b 6c 24 18          	mov    0x18(%esp),%ebp
586fb0:	8b 7c 24 10          	mov    0x10(%esp),%edi
586fb4:	57                   	push   %edi
586fb5:	55                   	push   %ebp
586fb6:	55                   	push   %ebp
586fb7:	55                   	push   %ebp
586fb8:	e8 93 38 f4 ff       	call   0x4ca850
586fbd:	ff 74 24 30          	push   0x30(%esp)
586fc1:	8b 74 24 38          	mov    0x38(%esp),%esi
586fc5:	ff 74 24 30          	push   0x30(%esp)
586fc9:	56                   	push   %esi
586fca:	e8 e1 49 f4 ff       	call   0x4cb9b0
586fcf:	57                   	push   %edi
586fd0:	56                   	push   %esi
586fd1:	55                   	push   %ebp
586fd2:	55                   	push   %ebp
586fd3:	e8 78 38 f4 ff       	call   0x4ca850
586fd8:	83 c4 2c             	add    $0x2c,%esp
586fdb:	5f                   	pop    %edi
586fdc:	5e                   	pop    %esi
586fdd:	5d                   	pop    %ebp
586fde:	5b                   	pop    %ebx
586fdf:	59                   	pop    %ecx
586fe0:	c3                   	ret
586fe1:	cc                   	int3
586fe2:	cc                   	int3
586fe3:	cc                   	int3
586fe4:	cc                   	int3
586fe5:	cc                   	int3
586fe6:	cc                   	int3
586fe7:	cc                   	int3
586fe8:	cc                   	int3
586fe9:	cc                   	int3
586fea:	cc                   	int3
586feb:	cc                   	int3
586fec:	cc                   	int3
586fed:	cc                   	int3
586fee:	cc                   	int3
586fef:	cc                   	int3
586ff0:	b8 04 00 00 00       	mov    $0x4,%eax
586ff5:	e8 f6 a4 05 00       	call   0x5e14f0
586ffa:	53                   	push   %ebx
586ffb:	57                   	push   %edi
586ffc:	8b 7c 24 18          	mov    0x18(%esp),%edi
587000:	8b c7                	mov    %edi,%eax
587002:	99                   	cltd
587003:	2b c2                	sub    %edx,%eax
587005:	8b d8                	mov    %eax,%ebx
587007:	d1 fb                	sar    $1,%ebx
587009:	83 ff 04             	cmp    $0x4,%edi
58700c:	75 14                	jne    0x587022
58700e:	ff 74 24 14          	push   0x14(%esp)
587012:	ff 74 24 14          	push   0x14(%esp)
587016:	e8 c5 42 f4 ff       	call   0x4cb2e0
58701b:	83 c4 08             	add    $0x8,%esp
58701e:	5f                   	pop    %edi
58701f:	5b                   	pop    %ebx
587020:	59                   	pop    %ecx
587021:	c3                   	ret
587022:	83 ff 08             	cmp    $0x8,%edi
587025:	75 14                	jne    0x58703b
587027:	ff 74 24 14          	push   0x14(%esp)
58702b:	ff 74 24 14          	push   0x14(%esp)
58702f:	e8 0c 44 f4 ff       	call   0x4cb440
587034:	83 c4 08             	add    $0x8,%esp
587037:	5f                   	pop    %edi
587038:	5b                   	pop    %ebx
587039:	59                   	pop    %ecx
58703a:	c3                   	ret
58703b:	83 ff 10             	cmp    $0x10,%edi
58703e:	7d 19                	jge    0x587059
587040:	ff 74 24 1c          	push   0x1c(%esp)
587044:	57                   	push   %edi
587045:	ff 74 24 1c          	push   0x1c(%esp)
587049:	ff 74 24 1c          	push   0x1c(%esp)
58704d:	e8 de fe ff ff       	call   0x586f30
587052:	83 c4 10             	add    $0x10,%esp
587055:	5f                   	pop    %edi
587056:	5b                   	pop    %ebx
587057:	59                   	pop    %ecx
587058:	c3                   	ret
587059:	55                   	push   %ebp
58705a:	56                   	push   %esi
58705b:	8b 74 24 1c          	mov    0x1c(%esp),%esi
58705f:	53                   	push   %ebx
587060:	8d 04 9e             	lea    (%esi,%ebx,4),%eax
587063:	50                   	push   %eax
587064:	56                   	push   %esi
587065:	89 44 24 2c          	mov    %eax,0x2c(%esp)
587069:	e8 e2 c5 f2 ff       	call   0x4b3650
58706e:	8b 6c 24 30          	mov    0x30(%esp),%ebp
587072:	83 c4 0c             	add    $0xc,%esp
587075:	85 c0                	test   %eax,%eax
587077:	7e 13                	jle    0x58708c
587079:	53                   	push   %ebx
58707a:	ff 74 24 24          	push   0x24(%esp)
58707e:	56                   	push   %esi
58707f:	55                   	push   %ebp
587080:	e8 ab 49 f4 ff       	call   0x4cba30
587085:	83 c4 10             	add    $0x10,%esp
587088:	33 c0                	xor    %eax,%eax
58708a:	eb 1a                	jmp    0x5870a6
58708c:	79 13                	jns    0x5870a1
58708e:	53                   	push   %ebx
58708f:	56                   	push   %esi
587090:	ff 74 24 28          	push   0x28(%esp)
587094:	55                   	push   %ebp
587095:	e8 96 49 f4 ff       	call   0x4cba30
58709a:	83 c4 10             	add    $0x10,%esp
58709d:	33 c0                	xor    %eax,%eax
58709f:	eb 05                	jmp    0x5870a6
5870a1:	b8 01 00 00 00       	mov    $0x1,%eax
5870a6:	8d 0c fd 00 00 00 00 	lea    0x0(,%edi,8),%ecx
5870ad:	03 cd                	add    %ebp,%ecx
5870af:	85 c0                	test   %eax,%eax
5870b1:	8d 04 bd 00 00 00 00 	lea    0x0(,%edi,4),%eax
5870b8:	75 14                	jne    0x5870ce
5870ba:	51                   	push   %ecx
5870bb:	53                   	push   %ebx
5870bc:	03 c5                	add    %ebp,%eax
5870be:	55                   	push   %ebp
5870bf:	50                   	push   %eax
5870c0:	89 44 24 20          	mov    %eax,0x20(%esp)
5870c4:	e8 27 ff ff ff       	call   0x586ff0
5870c9:	83 c4 10             	add    $0x10,%esp
5870cc:	eb 13                	jmp    0x5870e1
5870ce:	50                   	push   %eax
5870cf:	8d 0c 28             	lea    (%eax,%ebp,1),%ecx
5870d2:	6a 00                	push   $0x0
5870d4:	51                   	push   %ecx
5870d5:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5870d9:	e8 22 c9 05 00       	call   0x5e3a00
5870de:	83 c4 0c             	add    $0xc,%esp
5870e1:	8d 04 fd 00 00 00 00 	lea    0x0(,%edi,8),%eax
5870e8:	03 c5                	add    %ebp,%eax
5870ea:	50                   	push   %eax
5870eb:	53                   	push   %ebx
5870ec:	56                   	push   %esi
5870ed:	8b 74 24 24          	mov    0x24(%esp),%esi
5870f1:	56                   	push   %esi
5870f2:	e8 f9 fe ff ff       	call   0x586ff0
5870f7:	8d 04 fd 00 00 00 00 	lea    0x0(,%edi,8),%eax
5870fe:	03 c5                	add    %ebp,%eax
587100:	8d 34 be             	lea    (%esi,%edi,4),%esi
587103:	50                   	push   %eax
587104:	53                   	push   %ebx
587105:	ff 74 24 38          	push   0x38(%esp)
587109:	56                   	push   %esi
58710a:	e8 e1 fe ff ff       	call   0x586ff0
58710f:	8b 4c 24 38          	mov    0x38(%esp),%ecx
587113:	57                   	push   %edi
587114:	56                   	push   %esi
587115:	51                   	push   %ecx
587116:	55                   	push   %ebp
587117:	e8 34 37 f4 ff       	call   0x4ca850
58711c:	8b 74 24 40          	mov    0x40(%esp),%esi
587120:	57                   	push   %edi
587121:	56                   	push   %esi
587122:	55                   	push   %ebp
587123:	56                   	push   %esi
587124:	89 44 24 60          	mov    %eax,0x60(%esp)
587128:	e8 03 49 f4 ff       	call   0x4cba30
58712d:	8b 6c 24 60          	mov    0x60(%esp),%ebp
587131:	83 c4 40             	add    $0x40,%esp
587134:	2b e8                	sub    %eax,%ebp
587136:	8b 44 24 18          	mov    0x18(%esp),%eax
58713a:	57                   	push   %edi
58713b:	8d 0c 98             	lea    (%eax,%ebx,4),%ecx
58713e:	56                   	push   %esi
58713f:	51                   	push   %ecx
587140:	51                   	push   %ecx
587141:	e8 0a 37 f4 ff       	call   0x4ca850
587146:	83 c4 10             	add    $0x10,%esp
587149:	03 e8                	add    %eax,%ebp
58714b:	74 1d                	je     0x58716a
58714d:	8b 4c 24 18          	mov    0x18(%esp),%ecx
587151:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
587154:	8d 0c 81             	lea    (%ecx,%eax,4),%ecx
587157:	8b 01                	mov    (%ecx),%eax
587159:	03 c5                	add    %ebp,%eax
58715b:	89 01                	mov    %eax,(%ecx)
58715d:	3b c5                	cmp    %ebp,%eax
58715f:	73 09                	jae    0x58716a
587161:	83 41 04 01          	addl   $0x1,0x4(%ecx)
587165:	8d 49 04             	lea    0x4(%ecx),%ecx
587168:	74 f7                	je     0x587161
58716a:	5e                   	pop    %esi
58716b:	5d                   	pop    %ebp
58716c:	5f                   	pop    %edi
58716d:	5b                   	pop    %ebx
58716e:	59                   	pop    %ecx
58716f:	c3                   	ret
587170:	56                   	push   %esi
587171:	8b 74 24 08          	mov    0x8(%esp),%esi
587175:	85 f6                	test   %esi,%esi
587177:	74 21                	je     0x58719a
587179:	56                   	push   %esi
58717a:	e8 61 c0 f2 ff       	call   0x4b31e0
58717f:	8d 46 14             	lea    0x14(%esi),%eax
587182:	50                   	push   %eax
587183:	e8 58 c0 f2 ff       	call   0x4b31e0
587188:	83 c4 08             	add    $0x8,%esp
58718b:	f6 46 30 01          	testb  $0x1,0x30(%esi)
58718f:	74 09                	je     0x58719a
587191:	56                   	push   %esi
587192:	e8 99 8f f1 ff       	call   0x4a0130
587197:	83 c4 04             	add    $0x4,%esp
58719a:	5e                   	pop    %esi
58719b:	c3                   	ret
58719c:	cc                   	int3
58719d:	cc                   	int3
58719e:	cc                   	int3
58719f:	cc                   	int3
5871a0:	56                   	push   %esi
5871a1:	8b 74 24 08          	mov    0x8(%esp),%esi
5871a5:	56                   	push   %esi