40ee47:	83 c4 0c             	add    $0xc,%esp
40ee4a:	6a 03                	push   $0x3
40ee4c:	e8 de 16 00 00       	call   0x41052f
40ee51:	cc                   	int3
40ee52:	8b ff                	mov    %edi,%edi
40ee54:	55                   	push   %ebp
40ee55:	8b ec                	mov    %esp,%ebp
40ee57:	8b 45 08             	mov    0x8(%ebp),%eax
40ee5a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ee5d:	8b 55 0c             	mov    0xc(%ebp),%edx
40ee60:	89 10                	mov    %edx,(%eax)
40ee62:	89 48 04             	mov    %ecx,0x4(%eax)
40ee65:	85 c9                	test   %ecx,%ecx
40ee67:	74 02                	je     0x40ee6b
40ee69:	89 11                	mov    %edx,(%ecx)
40ee6b:	5d                   	pop    %ebp
40ee6c:	c3                   	ret
40ee6d:	cc                   	int3
40ee6e:	cc                   	int3
40ee6f:	cc                   	int3
40ee70:	8b ff                	mov    %edi,%edi
40ee72:	55                   	push   %ebp
40ee73:	8b ec                	mov    %esp,%ebp
40ee75:	81 ec 1c 02 00 00    	sub    $0x21c,%esp
40ee7b:	53                   	push   %ebx
40ee7c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ee7f:	56                   	push   %esi
40ee80:	57                   	push   %edi
40ee81:	8b 33                	mov    (%ebx),%esi
40ee83:	85 f6                	test   %esi,%esi
40ee85:	0f 84 72 04 00 00    	je     0x40f2fd
40ee8b:	8b 55 0c             	mov    0xc(%ebp),%edx
40ee8e:	8b 02                	mov    (%edx),%eax
40ee90:	89 45 cc             	mov    %eax,-0x34(%ebp)
40ee93:	85 c0                	test   %eax,%eax
40ee95:	0f 84 62 04 00 00    	je     0x40f2fd
40ee9b:	8d 78 ff             	lea    -0x1(%eax),%edi
40ee9e:	8d 4e ff             	lea    -0x1(%esi),%ecx
40eea1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40eea4:	85 ff                	test   %edi,%edi
40eea6:	0f 85 2b 01 00 00    	jne    0x40efd7
40eeac:	8b 52 04             	mov    0x4(%edx),%edx
40eeaf:	89 55 f8             	mov    %edx,-0x8(%ebp)
40eeb2:	83 fa 01             	cmp    $0x1,%edx
40eeb5:	75 2f                	jne    0x40eee6
40eeb7:	8b 73 04             	mov    0x4(%ebx),%esi
40eeba:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40eec0:	57                   	push   %edi
40eec1:	50                   	push   %eax
40eec2:	8d 4b 04             	lea    0x4(%ebx),%ecx
40eec5:	89 bd e4 fd ff ff    	mov    %edi,-0x21c(%ebp)
40eecb:	68 cc 01 00 00       	push   $0x1cc
40eed0:	51                   	push   %ecx
40eed1:	89 3b                	mov    %edi,(%ebx)
40eed3:	e8 76 ec ff ff       	call   0x40db4e
40eed8:	83 c4 10             	add    $0x10,%esp
40eedb:	8b c6                	mov    %esi,%eax
40eedd:	33 d2                	xor    %edx,%edx
40eedf:	5f                   	pop    %edi
40eee0:	5e                   	pop    %esi
40eee1:	5b                   	pop    %ebx
40eee2:	8b e5                	mov    %ebp,%esp
40eee4:	5d                   	pop    %ebp
40eee5:	c3                   	ret
40eee6:	85 c9                	test   %ecx,%ecx
40eee8:	75 40                	jne    0x40ef2a
40eeea:	8b 73 04             	mov    0x4(%ebx),%esi
40eeed:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40eef3:	51                   	push   %ecx
40eef4:	50                   	push   %eax
40eef5:	8d 7b 04             	lea    0x4(%ebx),%edi
40eef8:	89 8d e4 fd ff ff    	mov    %ecx,-0x21c(%ebp)
40eefe:	68 cc 01 00 00       	push   $0x1cc
40ef03:	57                   	push   %edi
40ef04:	89 0b                	mov    %ecx,(%ebx)
40ef06:	e8 43 ec ff ff       	call   0x40db4e
40ef0b:	33 d2                	xor    %edx,%edx
40ef0d:	8b c6                	mov    %esi,%eax
40ef0f:	f7 75 f8             	divl   -0x8(%ebp)
40ef12:	83 c4 10             	add    $0x10,%esp
40ef15:	33 c9                	xor    %ecx,%ecx
40ef17:	3b ca                	cmp    %edx,%ecx
40ef19:	89 17                	mov    %edx,(%edi)
40ef1b:	1b c9                	sbb    %ecx,%ecx
40ef1d:	5f                   	pop    %edi
40ef1e:	f7 d9                	neg    %ecx
40ef20:	33 d2                	xor    %edx,%edx
40ef22:	5e                   	pop    %esi
40ef23:	89 0b                	mov    %ecx,(%ebx)
40ef25:	5b                   	pop    %ebx
40ef26:	8b e5                	mov    %ebp,%esp
40ef28:	5d                   	pop    %ebp
40ef29:	c3                   	ret
40ef2a:	33 ff                	xor    %edi,%edi
40ef2c:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
40ef33:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
40ef3a:	89 7d e8             	mov    %edi,-0x18(%ebp)
40ef3d:	83 f9 ff             	cmp    $0xffffffff,%ecx
40ef40:	74 4b                	je     0x40ef8d
40ef42:	41                   	inc    %ecx
40ef43:	8d 0c 8b             	lea    (%ebx,%ecx,4),%ecx
40ef46:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40ef49:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ef50:	53                   	push   %ebx
40ef51:	6a 00                	push   $0x0
40ef53:	52                   	push   %edx
40ef54:	33 c0                	xor    %eax,%eax
40ef56:	0b 01                	or     (%ecx),%eax
40ef58:	57                   	push   %edi
40ef59:	50                   	push   %eax
40ef5a:	e8 91 35 01 00       	call   0x4224f0
40ef5f:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40ef62:	5b                   	pop    %ebx
40ef63:	90                   	nop
40ef64:	89 55 c0             	mov    %edx,-0x40(%ebp)
40ef67:	8b f9                	mov    %ecx,%edi
40ef69:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ef6c:	33 d2                	xor    %edx,%edx
40ef6e:	03 d0                	add    %eax,%edx
40ef70:	89 55 f4             	mov    %edx,-0xc(%ebp)
40ef73:	8b 55 f8             	mov    -0x8(%ebp),%edx
40ef76:	83 d1 00             	adc    $0x0,%ecx
40ef79:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40ef7c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40ef7f:	83 e9 04             	sub    $0x4,%ecx
40ef82:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40ef85:	83 ee 01             	sub    $0x1,%esi
40ef88:	75 c6                	jne    0x40ef50
40ef8a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ef8d:	6a 00                	push   $0x0
40ef8f:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40ef95:	c7 85 e4 fd ff ff 00 	movl   $0x0,-0x21c(%ebp)
40ef9c:	00 00 00
40ef9f:	50                   	push   %eax
40efa0:	8d 73 04             	lea    0x4(%ebx),%esi
40efa3:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
40efa9:	68 cc 01 00 00       	push   $0x1cc
40efae:	56                   	push   %esi
40efaf:	e8 9a eb ff ff       	call   0x40db4e
40efb4:	8b 45 e8             	mov    -0x18(%ebp),%eax
40efb7:	83 c4 10             	add    $0x10,%esp
40efba:	8b 55 dc             	mov    -0x24(%ebp),%edx
40efbd:	33 c9                	xor    %ecx,%ecx
40efbf:	3b c8                	cmp    %eax,%ecx
40efc1:	89 3e                	mov    %edi,(%esi)
40efc3:	89 43 08             	mov    %eax,0x8(%ebx)
40efc6:	8b 45 f4             	mov    -0xc(%ebp),%eax
40efc9:	1b c9                	sbb    %ecx,%ecx
40efcb:	f7 d9                	neg    %ecx
40efcd:	5f                   	pop    %edi
40efce:	41                   	inc    %ecx
40efcf:	5e                   	pop    %esi
40efd0:	89 0b                	mov    %ecx,(%ebx)
40efd2:	5b                   	pop    %ebx
40efd3:	8b e5                	mov    %ebp,%esp
40efd5:	5d                   	pop    %ebp
40efd6:	c3                   	ret
40efd7:	3b f9                	cmp    %ecx,%edi
40efd9:	0f 87 1e 03 00 00    	ja     0x40f2fd
40efdf:	8b d1                	mov    %ecx,%edx
40efe1:	8b c1                	mov    %ecx,%eax
40efe3:	2b d7                	sub    %edi,%edx
40efe5:	3b ca                	cmp    %edx,%ecx
40efe7:	7c 22                	jl     0x40f00b
40efe9:	8b 75 0c             	mov    0xc(%ebp),%esi
40efec:	41                   	inc    %ecx
40efed:	8d 34 be             	lea    (%esi,%edi,4),%esi
40eff0:	8d 0c 8b             	lea    (%ebx,%ecx,4),%ecx
40eff3:	83 c6 04             	add    $0x4,%esi
40eff6:	8b 3e                	mov    (%esi),%edi
40eff8:	3b 39                	cmp    (%ecx),%edi
40effa:	75 0d                	jne    0x40f009
40effc:	48                   	dec    %eax
40effd:	83 ee 04             	sub    $0x4,%esi
40f000:	83 e9 04             	sub    $0x4,%ecx
40f003:	3b c2                	cmp    %edx,%eax
40f005:	7d ef                	jge    0x40eff6
40f007:	eb 02                	jmp    0x40f00b
40f009:	73 01                	jae    0x40f00c
40f00b:	42                   	inc    %edx
40f00c:	85 d2                	test   %edx,%edx
40f00e:	0f 84 e9 02 00 00    	je     0x40f2fd
40f014:	8b 45 0c             	mov    0xc(%ebp),%eax
40f017:	8b 5d cc             	mov    -0x34(%ebp),%ebx
40f01a:	8b 34 98             	mov    (%eax,%ebx,4),%esi
40f01d:	8b 4c 98 fc          	mov    -0x4(%eax,%ebx,4),%ecx
40f021:	0f bd c6             	bsr    %esi,%eax
40f024:	89 75 d0             	mov    %esi,-0x30(%ebp)
40f027:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40f02a:	74 09                	je     0x40f035
40f02c:	bf 1f 00 00 00       	mov    $0x1f,%edi
40f031:	2b f8                	sub    %eax,%edi
40f033:	eb 05                	jmp    0x40f03a
40f035:	bf 20 00 00 00       	mov    $0x20,%edi
40f03a:	b8 20 00 00 00       	mov    $0x20,%eax
40f03f:	89 7d f4             	mov    %edi,-0xc(%ebp)
40f042:	2b c7                	sub    %edi,%eax
40f044:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40f047:	85 ff                	test   %edi,%edi
40f049:	74 27                	je     0x40f072
40f04b:	8b c1                	mov    %ecx,%eax
40f04d:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40f050:	d3 e8                	shr    %cl,%eax
40f052:	8b cf                	mov    %edi,%ecx
40f054:	d3 65 e0             	shll   %cl,-0x20(%ebp)
40f057:	d3 e6                	shl    %cl,%esi
40f059:	0b f0                	or     %eax,%esi
40f05b:	89 75 d0             	mov    %esi,-0x30(%ebp)
40f05e:	83 fb 02             	cmp    $0x2,%ebx
40f061:	76 0f                	jbe    0x40f072
40f063:	8b 75 0c             	mov    0xc(%ebp),%esi
40f066:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40f069:	8b 44 9e f8          	mov    -0x8(%esi,%ebx,4),%eax
40f06d:	d3 e8                	shr    %cl,%eax
40f06f:	09 45 e0             	or     %eax,-0x20(%ebp)
40f072:	33 f6                	xor    %esi,%esi
40f074:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
40f07b:	83 c2 ff             	add    $0xffffffff,%edx
40f07e:	89 55 e8             	mov    %edx,-0x18(%ebp)
40f081:	0f 88 2e 02 00 00    	js     0x40f2b5
40f087:	8d 04 1a             	lea    (%edx,%ebx,1),%eax
40f08a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f08d:	89 45 c8             	mov    %eax,-0x38(%ebp)
40f090:	8d 4b 04             	lea    0x4(%ebx),%ecx
40f093:	8d 0c 91             	lea    (%ecx,%edx,4),%ecx
40f096:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
40f099:	8d 4b fc             	lea    -0x4(%ebx),%ecx
40f09c:	8d 0c 81             	lea    (%ecx,%eax,4),%ecx
40f09f:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40f0a2:	3b 45 f8             	cmp    -0x8(%ebp),%eax
40f0a5:	77 05                	ja     0x40f0ac
40f0a7:	8b 41 08             	mov    0x8(%ecx),%eax
40f0aa:	eb 02                	jmp    0x40f0ae
40f0ac:	33 c0                	xor    %eax,%eax
40f0ae:	8b 51 04             	mov    0x4(%ecx),%edx
40f0b1:	8b 09                	mov    (%ecx),%ecx
40f0b3:	89 45 b8             	mov    %eax,-0x48(%ebp)
40f0b6:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
40f0bd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f0c0:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40f0c3:	85 ff                	test   %edi,%edi
40f0c5:	74 49                	je     0x40f110
40f0c7:	8b f9                	mov    %ecx,%edi
40f0c9:	8b c2                	mov    %edx,%eax
40f0cb:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40f0ce:	33 f6                	xor    %esi,%esi
40f0d0:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f0d3:	d3 ef                	shr    %cl,%edi
40f0d5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40f0d8:	e8 b3 34 01 00       	call   0x422590
40f0dd:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40f0e0:	0b f2                	or     %edx,%esi
40f0e2:	0b f8                	or     %eax,%edi
40f0e4:	8b c6                	mov    %esi,%eax
40f0e6:	8b 75 ec             	mov    -0x14(%ebp),%esi
40f0e9:	8b d7                	mov    %edi,%edx
40f0eb:	d3 e6                	shl    %cl,%esi
40f0ed:	83 7d c8 03          	cmpl   $0x3,-0x38(%ebp)
40f0f1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f0f4:	89 75 ec             	mov    %esi,-0x14(%ebp)
40f0f7:	72 17                	jb     0x40f110
40f0f9:	8b 45 cc             	mov    -0x34(%ebp),%eax
40f0fc:	03 45 e8             	add    -0x18(%ebp),%eax
40f0ff:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40f102:	8b 44 83 f8          	mov    -0x8(%ebx,%eax,4),%eax
40f106:	d3 e8                	shr    %cl,%eax
40f108:	0b f0                	or     %eax,%esi
40f10a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f10d:	89 75 ec             	mov    %esi,-0x14(%ebp)
40f110:	53                   	push   %ebx
40f111:	6a 00                	push   $0x0
40f113:	ff 75 d0             	push   -0x30(%ebp)
40f116:	50                   	push   %eax
40f117:	52                   	push   %edx
40f118:	e8 d3 33 01 00       	call   0x4224f0
40f11d:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40f120:	5b                   	pop    %ebx
40f121:	90                   	nop
40f122:	8b d8                	mov    %eax,%ebx
40f124:	33 f6                	xor    %esi,%esi
40f126:	8b c2                	mov    %edx,%eax
40f128:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f12b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f12e:	8b f9                	mov    %ecx,%edi
40f130:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40f133:	89 45 c0             	mov    %eax,-0x40(%ebp)
40f136:	89 75 dc             	mov    %esi,-0x24(%ebp)
40f139:	85 c0                	test   %eax,%eax
40f13b:	75 05                	jne    0x40f142
40f13d:	83 fb ff             	cmp    $0xffffffff,%ebx
40f140:	76 2a                	jbe    0x40f16c
40f142:	6a 00                	push   $0x0
40f144:	ff 75 d0             	push   -0x30(%ebp)
40f147:	83 c3 01             	add    $0x1,%ebx
40f14a:	83 d0 ff             	adc    $0xffffffff,%eax
40f14d:	50                   	push   %eax
40f14e:	53                   	push   %ebx
40f14f:	e8 bc 8a ff ff       	call   0x407c10
40f154:	03 f8                	add    %eax,%edi
40f156:	13 f2                	adc    %edx,%esi
40f158:	83 cb ff             	or     $0xffffffff,%ebx
40f15b:	33 c0                	xor    %eax,%eax
40f15d:	89 75 dc             	mov    %esi,-0x24(%ebp)
40f160:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f163:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40f166:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f169:	89 45 c0             	mov    %eax,-0x40(%ebp)
40f16c:	85 f6                	test   %esi,%esi
40f16e:	77 50                	ja     0x40f1c0
40f170:	72 05                	jb     0x40f177
40f172:	83 ff ff             	cmp    $0xffffffff,%edi
40f175:	77 49                	ja     0x40f1c0
40f177:	50                   	push   %eax
40f178:	53                   	push   %ebx
40f179:	33 c9                	xor    %ecx,%ecx
40f17b:	8b f7                	mov    %edi,%esi
40f17d:	0b 4d ec             	or     -0x14(%ebp),%ecx
40f180:	6a 00                	push   $0x0
40f182:	ff 75 e0             	push   -0x20(%ebp)
40f185:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40f188:	e8 83 8a ff ff       	call   0x407c10
40f18d:	3b d6                	cmp    %esi,%edx
40f18f:	72 29                	jb     0x40f1ba
40f191:	77 05                	ja     0x40f198
40f193:	3b 45 fc             	cmp    -0x4(%ebp),%eax
40f196:	76 22                	jbe    0x40f1ba
40f198:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f19b:	83 c3 ff             	add    $0xffffffff,%ebx
40f19e:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40f1a1:	83 d0 ff             	adc    $0xffffffff,%eax
40f1a4:	03 7d d0             	add    -0x30(%ebp),%edi
40f1a7:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f1aa:	83 55 dc 00          	adcl   $0x0,-0x24(%ebp)
40f1ae:	89 45 c0             	mov    %eax,-0x40(%ebp)
40f1b1:	75 0a                	jne    0x40f1bd
40f1b3:	83 ff ff             	cmp    $0xffffffff,%edi
40f1b6:	76 bf                	jbe    0x40f177
40f1b8:	eb 03                	jmp    0x40f1bd
40f1ba:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f1bd:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f1c0:	85 c0                	test   %eax,%eax
40f1c2:	75 08                	jne    0x40f1cc
40f1c4:	85 db                	test   %ebx,%ebx
40f1c6:	0f 84 b3 00 00 00    	je     0x40f27f
40f1cc:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40f1cf:	33 ff                	xor    %edi,%edi
40f1d1:	33 f6                	xor    %esi,%esi
40f1d3:	85 c9                	test   %ecx,%ecx
40f1d5:	74 55                	je     0x40f22c
40f1d7:	8b 45 0c             	mov    0xc(%ebp),%eax