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
5e6524:	eb 20                	jmp    0x5e6546
5e6526:	80 7d f8 01          	cmpb   $0x1,-0x8(%ebp)
5e652a:	75 11                	jne    0x5e653d
5e652c:	57                   	push   %edi
5e652d:	6a 02                	push   $0x2
5e652f:	51                   	push   %ecx
5e6530:	53                   	push   %ebx
5e6531:	e8 9a b8 fe ff       	call   0x5d1dd0
5e6536:	8b ca                	mov    %edx,%ecx
5e6538:	8b d8                	mov    %eax,%ebx
5e653a:	8b 55 e8             	mov    -0x18(%ebp),%edx
5e653d:	03 da                	add    %edx,%ebx
5e653f:	13 4d fc             	adc    -0x4(%ebp),%ecx
5e6542:	8b c3                	mov    %ebx,%eax
5e6544:	8b d1                	mov    %ecx,%edx
5e6546:	5e                   	pop    %esi
5e6547:	5b                   	pop    %ebx
5e6548:	5f                   	pop    %edi
5e6549:	c9                   	leave
5e654a:	c3                   	ret
5e654b:	8b ff                	mov    %edi,%edi
5e654d:	55                   	push   %ebp
5e654e:	8b ec                	mov    %esp,%ebp
5e6550:	83 ec 24             	sub    $0x24,%esp
5e6553:	53                   	push   %ebx
5e6554:	56                   	push   %esi
5e6555:	57                   	push   %edi
5e6556:	ff 75 08             	push   0x8(%ebp)
5e6559:	e8 bd f7 ff ff       	call   0x5e5d1b
5e655e:	8b d0                	mov    %eax,%edx
5e6560:	89 45 e0             	mov    %eax,-0x20(%ebp)
5e6563:	83 e0 3f             	and    $0x3f,%eax
5e6566:	c1 fa 06             	sar    $0x6,%edx
5e6569:	6b c0 38             	imul   $0x38,%eax,%eax
5e656c:	33 db                	xor    %ebx,%ebx
5e656e:	59                   	pop    %ecx
5e656f:	43                   	inc    %ebx
5e6570:	89 55 dc             	mov    %edx,-0x24(%ebp)
5e6573:	8b 0c 95 a8 70 71 00 	mov    0x7170a8(,%edx,4),%ecx
5e657a:	33 ff                	xor    %edi,%edi
5e657c:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5e657f:	89 45 e8             	mov    %eax,-0x18(%ebp)
5e6582:	89 7d f4             	mov    %edi,-0xc(%ebp)
5e6585:	8a 44 01 29          	mov    0x29(%ecx,%eax,1),%al
5e6589:	88 45 ec             	mov    %al,-0x14(%ebp)
5e658c:	3a c3                	cmp    %bl,%al
5e658e:	75 08                	jne    0x5e6598
5e6590:	6a 02                	push   $0x2
5e6592:	5e                   	pop    %esi
5e6593:	89 75 f8             	mov    %esi,-0x8(%ebp)
5e6596:	eb 03                	jmp    0x5e659b
5e6598:	89 5d f8             	mov    %ebx,-0x8(%ebp)
5e659b:	8b 45 08             	mov    0x8(%ebp),%eax
5e659e:	8b 48 08             	mov    0x8(%eax),%ecx
5e65a1:	89 4d f0             	mov    %ecx,-0x10(%ebp)
5e65a4:	85 c9                	test   %ecx,%ecx
5e65a6:	75 0b                	jne    0x5e65b3
5e65a8:	8b 45 0c             	mov    0xc(%ebp),%eax
5e65ab:	8b 55 10             	mov    0x10(%ebp),%edx
5e65ae:	e9 5e 01 00 00       	jmp    0x5e6711
5e65b3:	8b 08                	mov    (%eax),%ecx
5e65b5:	2b 48 04             	sub    0x4(%eax),%ecx
5e65b8:	8b 75 e4             	mov    -0x1c(%ebp),%esi
5e65bb:	8b c1                	mov    %ecx,%eax
5e65bd:	99                   	cltd
5e65be:	8b c8                	mov    %eax,%ecx
5e65c0:	89 55 fc             	mov    %edx,-0x4(%ebp)
5e65c3:	8b 45 f0             	mov    -0x10(%ebp),%eax
5e65c6:	99                   	cltd
5e65c7:	03 c8                	add    %eax,%ecx
5e65c9:	8b 45 fc             	mov    -0x4(%ebp),%eax
5e65cc:	89 4d f0             	mov    %ecx,-0x10(%ebp)
5e65cf:	13 c2                	adc    %edx,%eax
5e65d1:	8b 55 e8             	mov    -0x18(%ebp),%edx
5e65d4:	89 45 fc             	mov    %eax,-0x4(%ebp)
5e65d7:	80 7c 16 28 00       	cmpb   $0x0,0x28(%esi,%edx,1)
5e65dc:	8b 75 f8             	mov    -0x8(%ebp),%esi
5e65df:	7c 14                	jl     0x5e65f5
5e65e1:	8b 5d f4             	mov    -0xc(%ebp),%ebx
5e65e4:	53                   	push   %ebx
5e65e5:	56                   	push   %esi
5e65e6:	50                   	push   %eax
5e65e7:	51                   	push   %ecx
5e65e8:	e8 e3 b7 fe ff       	call   0x5d1dd0
5e65ed:	53                   	push   %ebx
5e65ee:	8b de                	mov    %esi,%ebx
5e65f0:	e9 02 01 00 00       	jmp    0x5e66f7
5e65f5:	ff 75 1c             	push   0x1c(%ebp)
5e65f8:	8b 75 e0             	mov    -0x20(%ebp),%esi
5e65fb:	6a 02                	push   $0x2
5e65fd:	57                   	push   %edi
5e65fe:	57                   	push   %edi
5e65ff:	56                   	push   %esi
5e6600:	e8 9d 8d 00 00       	call   0x5ef3a2
5e6605:	83 c4 14             	add    $0x14,%esp
5e6608:	3b 45 0c             	cmp    0xc(%ebp),%eax
5e660b:	75 4b                	jne    0x5e6658
5e660d:	3b 55 10             	cmp    0x10(%ebp),%edx
5e6610:	75 46                	jne    0x5e6658
5e6612:	8b 75 08             	mov    0x8(%ebp),%esi
5e6615:	ff 75 ec             	push   -0x14(%ebp)
5e6618:	8b 45 f0             	mov    -0x10(%ebp),%eax
5e661b:	8b 4e 04             	mov    0x4(%esi),%ecx
5e661e:	03 c1                	add    %ecx,%eax
5e6620:	50                   	push   %eax
5e6621:	51                   	push   %ecx
5e6622:	e8 9a 02 00 00       	call   0x5e68c1
5e6627:	8b c8                	mov    %eax,%ecx
5e6629:	83 c4 0c             	add    $0xc,%esp
5e662c:	03 4d f0             	add    -0x10(%ebp),%ecx
5e662f:	8b 46 0c             	mov    0xc(%esi),%eax
5e6632:	13 55 fc             	adc    -0x4(%ebp),%edx
5e6635:	90                   	nop
5e6636:	c1 e8 05             	shr    $0x5,%eax
5e6639:	84 c3                	test   %al,%bl
5e663b:	0f 84 a5 00 00 00    	je     0x5e66e6
5e6641:	8a 45 ec             	mov    -0x14(%ebp),%al
5e6644:	3a c3                	cmp    %bl,%al
5e6646:	74 04                	je     0x5e664c
5e6648:	3c 02                	cmp    $0x2,%al
5e664a:	75 03                	jne    0x5e664f
5e664c:	6a 02                	push   $0x2
5e664e:	5b                   	pop    %ebx
5e664f:	03 cb                	add    %ebx,%ecx
5e6651:	13 d7                	adc    %edi,%edx
5e6653:	e9 8e 00 00 00       	jmp    0x5e66e6
5e6658:	ff 75 1c             	push   0x1c(%ebp)
5e665b:	57                   	push   %edi
5e665c:	ff 75 10             	push   0x10(%ebp)
5e665f:	ff 75 0c             	push   0xc(%ebp)
5e6662:	56                   	push   %esi
5e6663:	e8 3a 8d 00 00       	call   0x5ef3a2
5e6668:	23 c2                	and    %edx,%eax
5e666a:	83 c4 14             	add    $0x14,%esp
5e666d:	83 ca ff             	or     $0xffffffff,%edx
5e6670:	3b c2                	cmp    %edx,%eax
5e6672:	75 07                	jne    0x5e667b
5e6674:	8b c2                	mov    %edx,%eax
5e6676:	e9 96 00 00 00       	jmp    0x5e6711
5e667b:	39 7d fc             	cmp    %edi,-0x4(%ebp)
5e667e:	7f 2f                	jg     0x5e66af
5e6680:	b8 00 02 00 00       	mov    $0x200,%eax
5e6685:	89 45 fc             	mov    %eax,-0x4(%ebp)
5e6688:	7c 05                	jl     0x5e668f
5e668a:	39 45 f0             	cmp    %eax,-0x10(%ebp)
5e668d:	77 20                	ja     0x5e66af
5e668f:	8b 45 08             	mov    0x8(%ebp),%eax
5e6692:	8b 40 0c             	mov    0xc(%eax),%eax
5e6695:	90                   	nop
5e6696:	c1 e8 06             	shr    $0x6,%eax
5e6699:	84 c3                	test   %al,%bl
5e669b:	74 12                	je     0x5e66af
5e669d:	8b 45 08             	mov    0x8(%ebp),%eax
5e66a0:	8b 40 0c             	mov    0xc(%eax),%eax
5e66a3:	90                   	nop
5e66a4:	c1 e8 08             	shr    $0x8,%eax
5e66a7:	84 c3                	test   %al,%bl
5e66a9:	75 04                	jne    0x5e66af
5e66ab:	8b d7                	mov    %edi,%edx
5e66ad:	eb 0a                	jmp    0x5e66b9
5e66af:	8b 45 08             	mov    0x8(%ebp),%eax
5e66b2:	8b 40 18             	mov    0x18(%eax),%eax
5e66b5:	99                   	cltd
5e66b6:	89 45 fc             	mov    %eax,-0x4(%ebp)
5e66b9:	8b 4d dc             	mov    -0x24(%ebp),%ecx
5e66bc:	8b 45 e8             	mov    -0x18(%ebp),%eax
5e66bf:	8b 0c 8d a8 70 71 00 	mov    0x7170a8(,%ecx,4),%ecx
5e66c6:	f6 44 08 28 04       	testb  $0x4,0x28(%eax,%ecx,1)
5e66cb:	74 16                	je     0x5e66e3
5e66cd:	8a 45 ec             	mov    -0x14(%ebp),%al
5e66d0:	3a c3                	cmp    %bl,%al
5e66d2:	74 04                	je     0x5e66d8
5e66d4:	3c 02                	cmp    $0x2,%al
5e66d6:	75 03                	jne    0x5e66db
5e66d8:	6a 02                	push   $0x2