4050b7:	c3                   	ret
4050b8:	cc                   	int3
4050b9:	cc                   	int3
4050ba:	cc                   	int3
4050bb:	cc                   	int3
4050bc:	cc                   	int3
4050bd:	cc                   	int3
4050be:	cc                   	int3
4050bf:	cc                   	int3
4050c0:	55                   	push   %ebp
4050c1:	8b ec                	mov    %esp,%ebp
4050c3:	83 ec 0c             	sub    $0xc,%esp
4050c6:	8b 55 08             	mov    0x8(%ebp),%edx
4050c9:	53                   	push   %ebx
4050ca:	8b d9                	mov    %ecx,%ebx
4050cc:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
4050d1:	56                   	push   %esi
4050d2:	8b c1                	mov    %ecx,%eax
4050d4:	57                   	push   %edi
4050d5:	8b 73 10             	mov    0x10(%ebx),%esi
4050d8:	2b c6                	sub    %esi,%eax
4050da:	89 75 fc             	mov    %esi,-0x4(%ebp)
4050dd:	3b c2                	cmp    %edx,%eax
4050df:	0f 82 40 01 00 00    	jb     0x405225
4050e5:	8b 7b 14             	mov    0x14(%ebx),%edi
4050e8:	8d 04 16             	lea    (%esi,%edx,1),%eax
4050eb:	8b f0                	mov    %eax,%esi
4050ed:	89 45 f8             	mov    %eax,-0x8(%ebp)
4050f0:	83 ce 0f             	or     $0xf,%esi
4050f3:	89 7d 08             	mov    %edi,0x8(%ebp)
4050f6:	3b f1                	cmp    %ecx,%esi
4050f8:	76 23                	jbe    0x40511d
4050fa:	8b f1                	mov    %ecx,%esi
4050fc:	b8 23 00 00 80       	mov    $0x80000023,%eax
405101:	50                   	push   %eax
405102:	e8 15 25 00 00       	call   0x40761c
405107:	83 c4 04             	add    $0x4,%esp
40510a:	85 c0                	test   %eax,%eax
40510c:	0f 84 1d 01 00 00    	je     0x40522f
405112:	8d 78 23             	lea    0x23(%eax),%edi
405115:	83 e7 e0             	and    $0xffffffe0,%edi
405118:	89 47 fc             	mov    %eax,-0x4(%edi)
40511b:	eb 43                	jmp    0x405160
40511d:	8b c7                	mov    %edi,%eax
40511f:	d1 e8                	shr    $1,%eax
405121:	2b c8                	sub    %eax,%ecx
405123:	3b f9                	cmp    %ecx,%edi
405125:	76 07                	jbe    0x40512e
405127:	be ff ff ff 7f       	mov    $0x7fffffff,%esi
40512c:	eb ce                	jmp    0x4050fc
40512e:	03 c7                	add    %edi,%eax
405130:	3b f0                	cmp    %eax,%esi
405132:	0f 42 f0             	cmovb  %eax,%esi
405135:	8d 4e 01             	lea    0x1(%esi),%ecx
405138:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40513e:	72 0d                	jb     0x40514d
405140:	8d 41 23             	lea    0x23(%ecx),%eax
405143:	3b c1                	cmp    %ecx,%eax
405145:	0f 86 df 00 00 00    	jbe    0x40522a
40514b:	eb b4                	jmp    0x405101
40514d:	85 c9                	test   %ecx,%ecx
40514f:	74 0d                	je     0x40515e
405151:	51                   	push   %ecx
405152:	e8 c5 24 00 00       	call   0x40761c
405157:	83 c4 04             	add    $0x4,%esp
40515a:	8b f8                	mov    %eax,%edi
40515c:	eb 02                	jmp    0x405160
40515e:	33 ff                	xor    %edi,%edi
405160:	8b 45 f8             	mov    -0x8(%ebp),%eax
405163:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405166:	89 43 10             	mov    %eax,0x10(%ebx)
405169:	0f be 45 18          	movsbl 0x18(%ebp),%eax
40516d:	89 45 18             	mov    %eax,0x18(%ebp)
405170:	8b 45 10             	mov    0x10(%ebp),%eax
405173:	2b c8                	sub    %eax,%ecx
405175:	41                   	inc    %ecx
405176:	89 73 14             	mov    %esi,0x14(%ebx)
405179:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40517c:	8b 4d 14             	mov    0x14(%ebp),%ecx
40517f:	8d 34 07             	lea    (%edi,%eax,1),%esi
405182:	03 ce                	add    %esi,%ecx
405184:	89 75 f4             	mov    %esi,-0xc(%ebp)
405187:	83 7d 08 10          	cmpl   $0x10,0x8(%ebp)
40518b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40518e:	50                   	push   %eax
40518f:	72 60                	jb     0x4051f1
405191:	8b 33                	mov    (%ebx),%esi
405193:	56                   	push   %esi
405194:	57                   	push   %edi
405195:	e8 d6 37 00 00       	call   0x408970
40519a:	ff 75 14             	push   0x14(%ebp)
40519d:	ff 75 18             	push   0x18(%ebp)
4051a0:	ff 75 f4             	push   -0xc(%ebp)
4051a3:	e8 48 3d 00 00       	call   0x408ef0
4051a8:	ff 75 fc             	push   -0x4(%ebp)
4051ab:	8b 45 10             	mov    0x10(%ebp),%eax
4051ae:	03 c6                	add    %esi,%eax
4051b0:	50                   	push   %eax
4051b1:	ff 75 f8             	push   -0x8(%ebp)
4051b4:	e8 b7 37 00 00       	call   0x408970
4051b9:	8b 4d 08             	mov    0x8(%ebp),%ecx
4051bc:	83 c4 24             	add    $0x24,%esp
4051bf:	41                   	inc    %ecx
4051c0:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4051c6:	72 12                	jb     0x4051da
4051c8:	8b 56 fc             	mov    -0x4(%esi),%edx
4051cb:	83 c1 23             	add    $0x23,%ecx
4051ce:	2b f2                	sub    %edx,%esi
4051d0:	8d 46 fc             	lea    -0x4(%esi),%eax
4051d3:	83 f8 1f             	cmp    $0x1f,%eax
4051d6:	77 57                	ja     0x40522f
4051d8:	8b f2                	mov    %edx,%esi
4051da:	51                   	push   %ecx
4051db:	56                   	push   %esi
4051dc:	e8 6b 24 00 00       	call   0x40764c
4051e1:	83 c4 08             	add    $0x8,%esp
4051e4:	89 3b                	mov    %edi,(%ebx)
4051e6:	8b c3                	mov    %ebx,%eax
4051e8:	5f                   	pop    %edi
4051e9:	5e                   	pop    %esi
4051ea:	5b                   	pop    %ebx
4051eb:	8b e5                	mov    %ebp,%esp
4051ed:	5d                   	pop    %ebp
4051ee:	c2 14 00             	ret    $0x14
4051f1:	53                   	push   %ebx
4051f2:	57                   	push   %edi
4051f3:	e8 78 37 00 00       	call   0x408970
4051f8:	ff 75 14             	push   0x14(%ebp)
4051fb:	ff 75 18             	push   0x18(%ebp)
4051fe:	56                   	push   %esi
4051ff:	e8 ec 3c 00 00       	call   0x408ef0
405204:	ff 75 fc             	push   -0x4(%ebp)
405207:	8b 45 10             	mov    0x10(%ebp),%eax
40520a:	03 c3                	add    %ebx,%eax
40520c:	50                   	push   %eax
40520d:	ff 75 f8             	push   -0x8(%ebp)
405210:	e8 5b 37 00 00       	call   0x408970
405215:	83 c4 24             	add    $0x24,%esp
405218:	89 3b                	mov    %edi,(%ebx)
40521a:	8b c3                	mov    %ebx,%eax
40521c:	5f                   	pop    %edi
40521d:	5e                   	pop    %esi
40521e:	5b                   	pop    %ebx
40521f:	8b e5                	mov    %ebp,%esp
405221:	5d                   	pop    %ebp
405222:	c2 14 00             	ret    $0x14
405225:	e8 86 c1 ff ff       	call   0x4013b0
40522a:	e8 b1 c0 ff ff       	call   0x4012e0
40522f:	e8 5d 7e 00 00       	call   0x40d091
405234:	cc                   	int3
405235:	cc                   	int3
405236:	cc                   	int3
405237:	cc                   	int3
405238:	cc                   	int3
405239:	cc                   	int3
40523a:	cc                   	int3
40523b:	cc                   	int3
40523c:	cc                   	int3
40523d:	cc                   	int3
40523e:	cc                   	int3
40523f:	cc                   	int3
405240:	55                   	push   %ebp
405241:	8b ec                	mov    %esp,%ebp
405243:	83 ec 08             	sub    $0x8,%esp
405246:	53                   	push   %ebx
405247:	8b d9                	mov    %ecx,%ebx
405249:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
40524e:	8b c1                	mov    %ecx,%eax
405250:	56                   	push   %esi
405251:	8b 75 08             	mov    0x8(%ebp),%esi
405254:	8b 53 10             	mov    0x10(%ebx),%edx
405257:	2b c2                	sub    %edx,%eax
405259:	89 55 fc             	mov    %edx,-0x4(%ebp)
40525c:	57                   	push   %edi
40525d:	3b c6                	cmp    %esi,%eax
40525f:	0f 82 24 01 00 00    	jb     0x405389
405265:	8b 7b 14             	mov    0x14(%ebx),%edi
405268:	8d 04 32             	lea    (%edx,%esi,1),%eax
40526b:	8b f0                	mov    %eax,%esi
40526d:	89 45 f8             	mov    %eax,-0x8(%ebp)
405270:	83 ce 0f             	or     $0xf,%esi
405273:	89 7d 08             	mov    %edi,0x8(%ebp)
405276:	3b f1                	cmp    %ecx,%esi
405278:	76 26                	jbe    0x4052a0
40527a:	8b f1                	mov    %ecx,%esi
40527c:	b8 23 00 00 80       	mov    $0x80000023,%eax
405281:	50                   	push   %eax
405282:	e8 95 23 00 00       	call   0x40761c
405287:	83 c4 04             	add    $0x4,%esp
40528a:	85 c0                	test   %eax,%eax
40528c:	0f 84 01 01 00 00    	je     0x405393
405292:	8b 55 fc             	mov    -0x4(%ebp),%edx
405295:	8d 78 23             	lea    0x23(%eax),%edi
405298:	83 e7 e0             	and    $0xffffffe0,%edi
40529b:	89 47 fc             	mov    %eax,-0x4(%edi)
40529e:	eb 46                	jmp    0x4052e6
4052a0:	8b c7                	mov    %edi,%eax
4052a2:	d1 e8                	shr    $1,%eax
4052a4:	2b c8                	sub    %eax,%ecx
4052a6:	3b f9                	cmp    %ecx,%edi
4052a8:	76 07                	jbe    0x4052b1
4052aa:	be ff ff ff 7f       	mov    $0x7fffffff,%esi
4052af:	eb cb                	jmp    0x40527c
4052b1:	03 c7                	add    %edi,%eax
4052b3:	3b f0                	cmp    %eax,%esi
4052b5:	0f 42 f0             	cmovb  %eax,%esi
4052b8:	8d 4e 01             	lea    0x1(%esi),%ecx
4052bb:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4052c1:	72 0d                	jb     0x4052d0
4052c3:	8d 41 23             	lea    0x23(%ecx),%eax
4052c6:	3b c1                	cmp    %ecx,%eax
4052c8:	0f 86 c0 00 00 00    	jbe    0x40538e
4052ce:	eb b1                	jmp    0x405281
4052d0:	85 c9                	test   %ecx,%ecx
4052d2:	74 10                	je     0x4052e4
4052d4:	51                   	push   %ecx
4052d5:	e8 42 23 00 00       	call   0x40761c
4052da:	8b 55 fc             	mov    -0x4(%ebp),%edx
4052dd:	83 c4 04             	add    $0x4,%esp
4052e0:	8b f8                	mov    %eax,%edi
4052e2:	eb 02                	jmp    0x4052e6
4052e4:	33 ff                	xor    %edi,%edi
4052e6:	8b 45 f8             	mov    -0x8(%ebp),%eax
4052e9:	89 43 10             	mov    %eax,0x10(%ebx)
4052ec:	0f be 45 14          	movsbl 0x14(%ebp),%eax
4052f0:	89 45 14             	mov    %eax,0x14(%ebp)
4052f3:	8b 45 10             	mov    0x10(%ebp),%eax
4052f6:	89 73 14             	mov    %esi,0x14(%ebx)
4052f9:	8d 34 17             	lea    (%edi,%edx,1),%esi
4052fc:	03 c6                	add    %esi,%eax
4052fe:	89 75 f8             	mov    %esi,-0x8(%ebp)
405301:	83 7d 08 10          	cmpl   $0x10,0x8(%ebp)
405305:	89 45 fc             	mov    %eax,-0x4(%ebp)
405308:	52                   	push   %edx
405309:	72 55                	jb     0x405360
40530b:	8b 33                	mov    (%ebx),%esi
40530d:	56                   	push   %esi
40530e:	57                   	push   %edi
40530f:	e8 5c 36 00 00       	call   0x408970
405314:	ff 75 10             	push   0x10(%ebp)
405317:	ff 75 14             	push   0x14(%ebp)
40531a:	ff 75 f8             	push   -0x8(%ebp)
40531d:	e8 ce 3b 00 00       	call   0x408ef0
405322:	8b 45 fc             	mov    -0x4(%ebp),%eax
405325:	83 c4 18             	add    $0x18,%esp
405328:	8b 4d 08             	mov    0x8(%ebp),%ecx
40532b:	41                   	inc    %ecx
40532c:	c6 00 00             	movb   $0x0,(%eax)
40532f:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
405335:	72 12                	jb     0x405349
405337:	8b 56 fc             	mov    -0x4(%esi),%edx
40533a:	83 c1 23             	add    $0x23,%ecx
40533d:	2b f2                	sub    %edx,%esi
40533f:	8d 46 fc             	lea    -0x4(%esi),%eax
405342:	83 f8 1f             	cmp    $0x1f,%eax
405345:	77 4c                	ja     0x405393
405347:	8b f2                	mov    %edx,%esi
405349:	51                   	push   %ecx
40534a:	56                   	push   %esi
40534b:	e8 fc 22 00 00       	call   0x40764c
405350:	83 c4 08             	add    $0x8,%esp
405353:	89 3b                	mov    %edi,(%ebx)
405355:	8b c3                	mov    %ebx,%eax
405357:	5f                   	pop    %edi
405358:	5e                   	pop    %esi
405359:	5b                   	pop    %ebx
40535a:	8b e5                	mov    %ebp,%esp
40535c:	5d                   	pop    %ebp
40535d:	c2 10 00             	ret    $0x10
405360:	53                   	push   %ebx
405361:	57                   	push   %edi
405362:	e8 09 36 00 00       	call   0x408970
405367:	ff 75 10             	push   0x10(%ebp)
40536a:	ff 75 14             	push   0x14(%ebp)
40536d:	56                   	push   %esi
40536e:	e8 7d 3b 00 00       	call   0x408ef0
405373:	8b 45 fc             	mov    -0x4(%ebp),%eax
405376:	83 c4 18             	add    $0x18,%esp
405379:	c6 00 00             	movb   $0x0,(%eax)
40537c:	8b c3                	mov    %ebx,%eax
40537e:	89 3b                	mov    %edi,(%ebx)
405380:	5f                   	pop    %edi
405381:	5e                   	pop    %esi
405382:	5b                   	pop    %ebx
405383:	8b e5                	mov    %ebp,%esp
405385:	5d                   	pop    %ebp
405386:	c2 10 00             	ret    $0x10
405389:	e8 22 c0 ff ff       	call   0x4013b0
40538e:	e8 4d bf ff ff       	call   0x4012e0
405393:	e8 f9 7c 00 00       	call   0x40d091
405398:	cc                   	int3
405399:	cc                   	int3
40539a:	cc                   	int3
40539b:	cc                   	int3
40539c:	cc                   	int3
40539d:	cc                   	int3
40539e:	cc                   	int3
40539f:	cc                   	int3
4053a0:	8b 09                	mov    (%ecx),%ecx
4053a2:	85 c9                	test   %ecx,%ecx
4053a4:	74 06                	je     0x4053ac
4053a6:	8b 01                	mov    (%ecx),%eax
4053a8:	6a 01                	push   $0x1
4053aa:	ff 10                	call   *(%eax)
4053ac:	c3                   	ret
4053ad:	cc                   	int3
4053ae:	cc                   	int3
4053af:	cc                   	int3
4053b0:	55                   	push   %ebp
4053b1:	8b ec                	mov    %esp,%ebp
4053b3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4053b6:	8b 55 10             	mov    0x10(%ebp),%edx
4053b9:	83 c9 0f             	or     $0xf,%ecx
4053bc:	56                   	push   %esi
4053bd:	57                   	push   %edi
4053be:	3b ca                	cmp    %edx,%ecx
4053c0:	77 1d                	ja     0x4053df
4053c2:	8b 7d 0c             	mov    0xc(%ebp),%edi
4053c5:	8b c2                	mov    %edx,%eax
4053c7:	8b f7                	mov    %edi,%esi
4053c9:	d1 ee                	shr    $1,%esi
4053cb:	2b c6                	sub    %esi,%eax
4053cd:	3b f8                	cmp    %eax,%edi
4053cf:	77 0e                	ja     0x4053df
4053d1:	8d 04 3e             	lea    (%esi,%edi,1),%eax
4053d4:	3b c8                	cmp    %eax,%ecx
4053d6:	5f                   	pop    %edi
4053d7:	0f 42 c8             	cmovb  %eax,%ecx
4053da:	8b c1                	mov    %ecx,%eax
4053dc:	5e                   	pop    %esi
4053dd:	5d                   	pop    %ebp
4053de:	c3                   	ret
4053df:	5f                   	pop    %edi
4053e0:	8b c2                	mov    %edx,%eax
4053e2:	5e                   	pop    %esi
4053e3:	5d                   	pop    %ebp
4053e4:	c3                   	ret
4053e5:	cc                   	int3
4053e6:	cc                   	int3
4053e7:	cc                   	int3
4053e8:	cc                   	int3
4053e9:	cc                   	int3
4053ea:	cc                   	int3
4053eb:	cc                   	int3
4053ec:	cc                   	int3
4053ed:	cc                   	int3
4053ee:	cc                   	int3
4053ef:	cc                   	int3
4053f0:	56                   	push   %esi
4053f1:	8b 31                	mov    (%ecx),%esi