5e61a4:	2b c1                	sub    %ecx,%eax
5e61a6:	99                   	cltd
5e61a7:	3b 55 10             	cmp    0x10(%ebp),%edx
5e61aa:	7f ea                	jg     0x5e6196
5e61ac:	8b 7d 0c             	mov    0xc(%ebp),%edi
5e61af:	7c 04                	jl     0x5e61b5
5e61b1:	3b c7                	cmp    %edi,%eax
5e61b3:	77 e1                	ja     0x5e6196
5e61b5:	8b 46 08             	mov    0x8(%esi),%eax
5e61b8:	99                   	cltd
5e61b9:	39 55 10             	cmp    %edx,0x10(%ebp)
5e61bc:	7f d8                	jg     0x5e6196
5e61be:	7c 04                	jl     0x5e61c4
5e61c0:	3b f8                	cmp    %eax,%edi
5e61c2:	77 d2                	ja     0x5e6196
5e61c4:	03 cf                	add    %edi,%ecx
5e61c6:	b0 01                	mov    $0x1,%al
5e61c8:	89 0e                	mov    %ecx,(%esi)
5e61ca:	8b 4d 08             	mov    0x8(%ebp),%ecx
5e61cd:	29 79 08             	sub    %edi,0x8(%ecx)
5e61d0:	eb c6                	jmp    0x5e6198
5e61d2:	8b ff                	mov    %edi,%edi
5e61d4:	55                   	push   %ebp
5e61d5:	8b ec                	mov    %esp,%ebp
5e61d7:	8b 45 08             	mov    0x8(%ebp),%eax
5e61da:	8b 40 0c             	mov    0xc(%eax),%eax
5e61dd:	90                   	nop
5e61de:	c1 e8 0d             	shr    $0xd,%eax
5e61e1:	a8 01                	test   $0x1,%al
5e61e3:	75 13                	jne    0x5e61f8
5e61e5:	8b 45 18             	mov    0x18(%ebp),%eax
5e61e8:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
5e61ec:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
5e61f3:	83 c8 ff             	or     $0xffffffff,%eax
5e61f6:	5d                   	pop    %ebp
5e61f7:	c3                   	ret
5e61f8:	8b 45 08             	mov    0x8(%ebp),%eax
5e61fb:	53                   	push   %ebx
5e61fc:	56                   	push   %esi
5e61fd:	57                   	push   %edi
5e61fe:	6a f7                	push   $0xfffffff7
5e6200:	59                   	pop    %ecx
5e6201:	83 c0 0c             	add    $0xc,%eax
5e6204:	f0 21 08             	lock and %ecx,(%eax)
5e6207:	8b 75 14             	mov    0x14(%ebp),%esi
5e620a:	8b 7d 10             	mov    0x10(%ebp),%edi
5e620d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
5e6210:	56                   	push   %esi
5e6211:	57                   	push   %edi
5e6212:	53                   	push   %ebx
5e6213:	ff 75 08             	push   0x8(%ebp)
5e6216:	e8 de fe ff ff       	call   0x5e60f9
5e621b:	83 c4 10             	add    $0x10,%esp
5e621e:	84 c0                	test   %al,%al
5e6220:	0f 85 91 00 00 00    	jne    0x5e62b7
5e6226:	83 fe 01             	cmp    $0x1,%esi
5e6229:	75 13                	jne    0x5e623e
5e622b:	ff 75 18             	push   0x18(%ebp)
5e622e:	ff 75 08             	push   0x8(%ebp)
5e6231:	e8 dc 06 00 00       	call   0x5e6912
5e6236:	03 d8                	add    %eax,%ebx
5e6238:	59                   	pop    %ecx
5e6239:	13 fa                	adc    %edx,%edi
5e623b:	33 f6                	xor    %esi,%esi
5e623d:	59                   	pop    %ecx
5e623e:	ff 75 18             	push   0x18(%ebp)
5e6241:	ff 75 08             	push   0x8(%ebp)
5e6244:	e8 84 a0 ff ff       	call   0x5e02cd
5e6249:	8b 45 08             	mov    0x8(%ebp),%eax
5e624c:	59                   	pop    %ecx
5e624d:	59                   	pop    %ecx
5e624e:	8b 48 04             	mov    0x4(%eax),%ecx
5e6251:	83 60 08 00          	andl   $0x0,0x8(%eax)
5e6255:	89 08                	mov    %ecx,(%eax)
5e6257:	8b 45 08             	mov    0x8(%ebp),%eax
5e625a:	8b 40 0c             	mov    0xc(%eax),%eax
5e625d:	90                   	nop
5e625e:	c1 e8 02             	shr    $0x2,%eax
5e6261:	a8 01                	test   $0x1,%al
5e6263:	8b 45 08             	mov    0x8(%ebp),%eax
5e6266:	74 0b                	je     0x5e6273
5e6268:	6a fc                	push   $0xfffffffc
5e626a:	59                   	pop    %ecx
5e626b:	83 c0 0c             	add    $0xc,%eax
5e626e:	f0 21 08             	lock and %ecx,(%eax)
5e6271:	eb 23                	jmp    0x5e6296
5e6273:	8b 40 0c             	mov    0xc(%eax),%eax
5e6276:	90                   	nop
5e6277:	83 e0 41             	and    $0x41,%eax
5e627a:	3c 41                	cmp    $0x41,%al
5e627c:	75 18                	jne    0x5e6296
5e627e:	8b 45 08             	mov    0x8(%ebp),%eax
5e6281:	8b 40 0c             	mov    0xc(%eax),%eax
5e6284:	90                   	nop
5e6285:	c1 e8 08             	shr    $0x8,%eax
5e6288:	a8 01                	test   $0x1,%al
5e628a:	75 0a                	jne    0x5e6296
5e628c:	8b 45 08             	mov    0x8(%ebp),%eax
5e628f:	c7 40 18 00 02 00 00 	movl   $0x200,0x18(%eax)
5e6296:	8b 45 08             	mov    0x8(%ebp),%eax
5e6299:	8b 40 10             	mov    0x10(%eax),%eax
5e629c:	90                   	nop
5e629d:	ff 75 18             	push   0x18(%ebp)
5e62a0:	56                   	push   %esi
5e62a1:	57                   	push   %edi
5e62a2:	53                   	push   %ebx
5e62a3:	50                   	push   %eax
5e62a4:	e8 57 91 00 00       	call   0x5ef400
5e62a9:	23 c2                	and    %edx,%eax
5e62ab:	83 c4 14             	add    $0x14,%esp
5e62ae:	83 f8 ff             	cmp    $0xffffffff,%eax
5e62b1:	75 04                	jne    0x5e62b7
5e62b3:	0b c0                	or     %eax,%eax
5e62b5:	eb 02                	jmp    0x5e62b9
5e62b7:	33 c0                	xor    %eax,%eax
5e62b9:	5f                   	pop    %edi
5e62ba:	5e                   	pop    %esi
5e62bb:	5b                   	pop    %ebx
5e62bc:	5d                   	pop    %ebp
5e62bd:	c3                   	ret
5e62be:	8b ff                	mov    %edi,%edi
5e62c0:	55                   	push   %ebp
5e62c1:	8b ec                	mov    %esp,%ebp
5e62c3:	83 ec 28             	sub    $0x28,%esp
5e62c6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
5e62c9:	56                   	push   %esi
5e62ca:	6a 00                	push   $0x0
5e62cc:	e8 03 fc fe ff       	call   0x5d5ed4
5e62d1:	8d 45 d8             	lea    -0x28(%ebp),%eax
5e62d4:	50                   	push   %eax
5e62d5:	ff 75 10             	push   0x10(%ebp)
5e62d8:	8b 45 0c             	mov    0xc(%ebp),%eax
5e62db:	99                   	cltd
5e62dc:	52                   	push   %edx
5e62dd:	50                   	push   %eax
5e62de:	ff 75 08             	push   0x8(%ebp)
5e62e1:	e8 69 fd ff ff       	call   0x5e604f
5e62e6:	83 c4 14             	add    $0x14,%esp
5e62e9:	8d 4d d8             	lea    -0x28(%ebp),%ecx
5e62ec:	8b f0                	mov    %eax,%esi
5e62ee:	e8 29 fc fe ff       	call   0x5d5f1c
5e62f3:	8b c6                	mov    %esi,%eax
5e62f5:	5e                   	pop    %esi
5e62f6:	c9                   	leave
5e62f7:	c3                   	ret
5e62f8:	6a 0c                	push   $0xc
5e62fa:	68 b0 a8 68 00       	push   $0x68a8b0
5e62ff:	e8 fc c5 fe ff       	call   0x5d2900
5e6304:	33 f6                	xor    %esi,%esi
5e6306:	39 75 08             	cmp    %esi,0x8(%ebp)
5e6309:	75 21                	jne    0x5e632c
5e630b:	8b 45 0c             	mov    0xc(%ebp),%eax
5e630e:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
5e6312:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
5e6319:	50                   	push   %eax
5e631a:	56                   	push   %esi
5e631b:	56                   	push   %esi
5e631c:	56                   	push   %esi
5e631d:	56                   	push   %esi
5e631e:	56                   	push   %esi
5e631f:	e8 3f fe fe ff       	call   0x5d6163
5e6324:	83 c4 18             	add    $0x18,%esp
5e6327:	83 c8 ff             	or     $0xffffffff,%eax
5e632a:	eb 2f                	jmp    0x5e635b
5e632c:	89 75 e4             	mov    %esi,-0x1c(%ebp)
5e632f:	ff 75 08             	push   0x8(%ebp)
5e6332:	e8 35 9d ff ff       	call   0x5e006c
5e6337:	59                   	pop    %ecx
5e6338:	89 75 fc             	mov    %esi,-0x4(%ebp)
5e633b:	ff 75 0c             	push   0xc(%ebp)
5e633e:	ff 75 08             	push   0x8(%ebp)
5e6341:	e8 32 00 00 00       	call   0x5e6378
5e6346:	59                   	pop    %ecx
5e6347:	59                   	pop    %ecx
5e6348:	8b f0                	mov    %eax,%esi
5e634a:	89 75 e4             	mov    %esi,-0x1c(%ebp)
5e634d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
5e6354:	e8 15 00 00 00       	call   0x5e636e
5e6359:	8b c6                	mov    %esi,%eax
5e635b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5e635e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
5e6365:	59                   	pop    %ecx
5e6366:	5f                   	pop    %edi
5e6367:	5e                   	pop    %esi
5e6368:	5b                   	pop    %ebx
5e6369:	c9                   	leave
5e636a:	c3                   	ret
5e636b:	8b 75 e4             	mov    -0x1c(%ebp),%esi
5e636e:	ff 75 08             	push   0x8(%ebp)
5e6371:	e8 0a 9d ff ff       	call   0x5e0080
5e6376:	59                   	pop    %ecx
5e6377:	c3                   	ret
5e6378:	8b ff                	mov    %edi,%edi
5e637a:	55                   	push   %ebp
5e637b:	8b ec                	mov    %esp,%ebp
5e637d:	56                   	push   %esi
5e637e:	8b 75 0c             	mov    0xc(%ebp),%esi
5e6381:	56                   	push   %esi
5e6382:	ff 75 08             	push   0x8(%ebp)
5e6385:	e8 20 00 00 00       	call   0x5e63aa
5e638a:	59                   	pop    %ecx
5e638b:	59                   	pop    %ecx
5e638c:	85 d2                	test   %edx,%edx
5e638e:	7c 17                	jl     0x5e63a7
5e6390:	7f 07                	jg     0x5e6399
5e6392:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
5e6397:	76 0e                	jbe    0x5e63a7
5e6399:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
5e639d:	83 c8 ff             	or     $0xffffffff,%eax
5e63a0:	c7 46 18 16 00 00 00 	movl   $0x16,0x18(%esi)
5e63a7:	5e                   	pop    %esi
5e63a8:	5d                   	pop    %ebp
5e63a9:	c3                   	ret
5e63aa:	8b ff                	mov    %edi,%edi
5e63ac:	55                   	push   %ebp
5e63ad:	8b ec                	mov    %esp,%ebp
5e63af:	83 ec 18             	sub    $0x18,%esp
5e63b2:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
5e63b6:	57                   	push   %edi
5e63b7:	75 28                	jne    0x5e63e1
5e63b9:	8b 45 0c             	mov    0xc(%ebp),%eax
5e63bc:	33 ff                	xor    %edi,%edi
5e63be:	50                   	push   %eax
5e63bf:	57                   	push   %edi
5e63c0:	57                   	push   %edi
5e63c1:	57                   	push   %edi
5e63c2:	57                   	push   %edi
5e63c3:	57                   	push   %edi
5e63c4:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
5e63c8:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
5e63cf:	e8 8f fd fe ff       	call   0x5d6163
5e63d4:	83 c8 ff             	or     $0xffffffff,%eax
5e63d7:	83 c4 18             	add    $0x18,%esp
5e63da:	0b d0                	or     %eax,%edx
5e63dc:	e9 67 01 00 00       	jmp    0x5e6548
5e63e1:	53                   	push   %ebx
5e63e2:	ff 75 08             	push   0x8(%ebp)
5e63e5:	e8 31 f9 ff ff       	call   0x5e5d1b
5e63ea:	59                   	pop    %ecx
5e63eb:	8b 4d 08             	mov    0x8(%ebp),%ecx
5e63ee:	33 ff                	xor    %edi,%edi
5e63f0:	8b d8                	mov    %eax,%ebx
5e63f2:	39 79 08             	cmp    %edi,0x8(%ecx)
5e63f5:	7d 03                	jge    0x5e63fa
5e63f7:	89 79 08             	mov    %edi,0x8(%ecx)
5e63fa:	56                   	push   %esi
5e63fb:	ff 75 0c             	push   0xc(%ebp)
5e63fe:	6a 01                	push   $0x1
5e6400:	57                   	push   %edi
5e6401:	57                   	push   %edi
5e6402:	53                   	push   %ebx
5e6403:	e8 9a 8f 00 00       	call   0x5ef3a2
5e6408:	8b ca                	mov    %edx,%ecx
5e640a:	83 c4 14             	add    $0x14,%esp
5e640d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
5e6410:	8b f0                	mov    %eax,%esi
5e6412:	89 75 e8             	mov    %esi,-0x18(%ebp)
5e6415:	3b cf                	cmp    %edi,%ecx
5e6417:	7f 0e                	jg     0x5e6427
5e6419:	0f 8c d2 00 00 00    	jl     0x5e64f1
5e641f:	3b f7                	cmp    %edi,%esi
5e6421:	0f 82 ca 00 00 00    	jb     0x5e64f1
5e6427:	8b 45 08             	mov    0x8(%ebp),%eax
5e642a:	8b 40 0c             	mov    0xc(%eax),%eax
5e642d:	90                   	nop
5e642e:	a8 c0                	test   $0xc0,%al
5e6430:	75 12                	jne    0x5e6444
5e6432:	8b 45 08             	mov    0x8(%ebp),%eax
5e6435:	8b 40 08             	mov    0x8(%eax),%eax
5e6438:	99                   	cltd
5e6439:	2b f0                	sub    %eax,%esi
5e643b:	8b c6                	mov    %esi,%eax
5e643d:	1b ca                	sbb    %edx,%ecx
5e643f:	e9 00 01 00 00       	jmp    0x5e6544
5e6444:	8b c3                	mov    %ebx,%eax
5e6446:	83 e3 3f             	and    $0x3f,%ebx
5e6449:	c1 f8 06             	sar    $0x6,%eax
5e644c:	6b cb 38             	imul   $0x38,%ebx,%ecx
5e644f:	89 45 f4             	mov    %eax,-0xc(%ebp)
5e6452:	8b 04 85 a8 70 71 00 	mov    0x7170a8(,%eax,4),%eax
5e6459:	89 4d f0             	mov    %ecx,-0x10(%ebp)
5e645c:	8a 44 01 29          	mov    0x29(%ecx,%eax,1),%al
5e6460:	8b 4d 08             	mov    0x8(%ebp),%ecx
5e6463:	88 45 f8             	mov    %al,-0x8(%ebp)
5e6466:	8b 01                	mov    (%ecx),%eax
5e6468:	2b 41 04             	sub    0x4(%ecx),%eax
5e646b:	8b 49 0c             	mov    0xc(%ecx),%ecx
5e646e:	99                   	cltd
5e646f:	8b d8                	mov    %eax,%ebx
5e6471:	89 55 ec             	mov    %edx,-0x14(%ebp)
5e6474:	90                   	nop
5e6475:	f6 c1 03             	test   $0x3,%cl
5e6478:	74 5b                	je     0x5e64d5
5e647a:	80 7d f8 01          	cmpb   $0x1,-0x8(%ebp)
5e647e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5e6481:	8b 55 f0             	mov    -0x10(%ebp),%edx
5e6484:	75 25                	jne    0x5e64ab
5e6486:	8b 04 8d a8 70 71 00 	mov    0x7170a8(,%ecx,4),%eax
5e648d:	f6 44 02 2d 02       	testb  $0x2,0x2d(%edx,%eax,1)
5e6492:	74 17                	je     0x5e64ab
5e6494:	ff 75 0c             	push   0xc(%ebp)
5e6497:	ff 75 fc             	push   -0x4(%ebp)
5e649a:	56                   	push   %esi
5e649b:	ff 75 08             	push   0x8(%ebp)
5e649e:	e8 73 02 00 00       	call   0x5e6716
5e64a3:	83 c4 10             	add    $0x10,%esp
5e64a6:	e9 9b 00 00 00       	jmp    0x5e6546
5e64ab:	8b 04 8d a8 70 71 00 	mov    0x7170a8(,%ecx,4),%eax
5e64b2:	80 7c 02 28 00       	cmpb   $0x0,0x28(%edx,%eax,1)
5e64b7:	7d 3f                	jge    0x5e64f8
5e64b9:	8b 75 08             	mov    0x8(%ebp),%esi
5e64bc:	ff 75 f8             	push   -0x8(%ebp)
5e64bf:	ff 36                	push   (%esi)
5e64c1:	ff 76 04             	push   0x4(%esi)
5e64c4:	e8 f8 03 00 00       	call   0x5e68c1
5e64c9:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5e64cc:	83 c4 0c             	add    $0xc,%esp
5e64cf:	03 d8                	add    %eax,%ebx
5e64d1:	13 ca                	adc    %edx,%ecx
5e64d3:	eb 29                	jmp    0x5e64fe
5e64d5:	8b 45 08             	mov    0x8(%ebp),%eax
5e64d8:	8b 40 0c             	mov    0xc(%eax),%eax
5e64db:	90                   	nop
5e64dc:	c1 e8 02             	shr    $0x2,%eax
5e64df:	a8 01                	test   $0x1,%al
5e64e1:	75 15                	jne    0x5e64f8
5e64e3:	8b 45 0c             	mov    0xc(%ebp),%eax
5e64e6:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
5e64ea:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
5e64f1:	83 c8 ff             	or     $0xffffffff,%eax
5e64f4:	0b d0                	or     %eax,%edx
5e64f6:	eb 4e                	jmp    0x5e6546
5e64f8:	8b 75 08             	mov    0x8(%ebp),%esi
5e64fb:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5e64fe:	8b 55 e8             	mov    -0x18(%ebp),%edx
5e6501:	8b c2                	mov    %edx,%eax
5e6503:	0b 45 fc             	or     -0x4(%ebp),%eax
5e6506:	74 3a                	je     0x5e6542
5e6508:	8b 46 0c             	mov    0xc(%esi),%eax
5e650b:	90                   	nop
5e650c:	a8 01                	test   $0x1,%al
5e650e:	74 16                	je     0x5e6526
5e6510:	ff 75 0c             	push   0xc(%ebp)
5e6513:	51                   	push   %ecx
5e6514:	53                   	push   %ebx
5e6515:	ff 75 fc             	push   -0x4(%ebp)
5e6518:	52                   	push   %edx
5e6519:	ff 75 08             	push   0x8(%ebp)
5e651c:	e8 2a 00 00 00       	call   0x5e654b
5e6521:	83 c4 18             	add    $0x18,%esp