5fa160:	8b 75 08             	mov    0x8(%ebp),%esi
5fa163:	8d 3c 51             	lea    (%ecx,%edx,2),%edi
5fa166:	33 c0                	xor    %eax,%eax
5fa168:	3b f7                	cmp    %edi,%esi
5fa16a:	74 0c                	je     0x5fa178
5fa16c:	66 39 01             	cmp    %ax,(%ecx)
5fa16f:	74 07                	je     0x5fa178
5fa171:	83 c1 02             	add    $0x2,%ecx
5fa174:	3b cf                	cmp    %edi,%ecx
5fa176:	75 f4                	jne    0x5fa16c
5fa178:	2b ce                	sub    %esi,%ecx
5fa17a:	d1 f9                	sar    $1,%ecx
5fa17c:	3b ca                	cmp    %edx,%ecx
5fa17e:	75 6b                	jne    0x5fa1eb
5fa180:	8b 45 0c             	mov    0xc(%ebp),%eax
5fa183:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
5fa186:	2b c2                	sub    %edx,%eax
5fa188:	0f 57 c9             	xorps  %xmm1,%xmm1
5fa18b:	83 e0 f0             	and    $0xfffffff0,%eax
5fa18e:	03 c1                	add    %ecx,%eax
5fa190:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
5fa193:	eb 12                	jmp    0x5fa1a7
5fa195:	0f 10 07             	movups (%edi),%xmm0
5fa198:	66 0f 75 c1          	pcmpeqw %xmm1,%xmm0
5fa19c:	66 0f d7 c0          	pmovmskb %xmm0,%eax
5fa1a0:	85 c0                	test   %eax,%eax
5fa1a2:	75 07                	jne    0x5fa1ab
5fa1a4:	83 c7 10             	add    $0x10,%edi
5fa1a7:	3b f9                	cmp    %ecx,%edi
5fa1a9:	75 ea                	jne    0x5fa195
5fa1ab:	8b 45 0c             	mov    0xc(%ebp),%eax
5fa1ae:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
5fa1b1:	3b f9                	cmp    %ecx,%edi
5fa1b3:	74 0e                	je     0x5fa1c3
5fa1b5:	33 c0                	xor    %eax,%eax
5fa1b7:	66 39 07             	cmp    %ax,(%edi)
5fa1ba:	74 07                	je     0x5fa1c3
5fa1bc:	83 c7 02             	add    $0x2,%edi
5fa1bf:	3b f9                	cmp    %ecx,%edi
5fa1c1:	75 f4                	jne    0x5fa1b7
5fa1c3:	8b cf                	mov    %edi,%ecx
5fa1c5:	e9 ae fe ff ff       	jmp    0x5fa078
5fa1ca:	8b 55 08             	mov    0x8(%ebp),%edx
5fa1cd:	8b ca                	mov    %edx,%ecx
5fa1cf:	8b 45 0c             	mov    0xc(%ebp),%eax
5fa1d2:	8d 34 42             	lea    (%edx,%eax,2),%esi
5fa1d5:	3b d6                	cmp    %esi,%edx
5fa1d7:	74 0e                	je     0x5fa1e7
5fa1d9:	33 c0                	xor    %eax,%eax
5fa1db:	66 39 01             	cmp    %ax,(%ecx)
5fa1de:	74 07                	je     0x5fa1e7
5fa1e0:	83 c1 02             	add    $0x2,%ecx
5fa1e3:	3b ce                	cmp    %esi,%ecx
5fa1e5:	75 f4                	jne    0x5fa1db
5fa1e7:	2b ca                	sub    %edx,%ecx
5fa1e9:	d1 f9                	sar    $1,%ecx
5fa1eb:	5f                   	pop    %edi
5fa1ec:	8b c1                	mov    %ecx,%eax
5fa1ee:	5e                   	pop    %esi
5fa1ef:	5d                   	pop    %ebp
5fa1f0:	c3                   	ret
5fa1f1:	8b ff                	mov    %edi,%edi
5fa1f3:	55                   	push   %ebp
5fa1f4:	8b ec                	mov    %esp,%ebp
5fa1f6:	51                   	push   %ecx
5fa1f7:	8b 55 08             	mov    0x8(%ebp),%edx
5fa1fa:	53                   	push   %ebx
5fa1fb:	56                   	push   %esi
5fa1fc:	8b 75 0c             	mov    0xc(%ebp),%esi
5fa1ff:	57                   	push   %edi
5fa200:	85 d2                	test   %edx,%edx
5fa202:	0f 84 b9 01 00 00    	je     0x5fa3c1
5fa208:	85 f6                	test   %esi,%esi
5fa20a:	0f 84 b1 01 00 00    	je     0x5fa3c1
5fa210:	8b 3e                	mov    (%esi),%edi
5fa212:	33 c9                	xor    %ecx,%ecx
5fa214:	85 ff                	test   %edi,%edi
5fa216:	0f 94 c1             	sete   %cl
5fa219:	33 c0                	xor    %eax,%eax
5fa21b:	39 46 04             	cmp    %eax,0x4(%esi)
5fa21e:	0f 94 c0             	sete   %al
5fa221:	3b c8                	cmp    %eax,%ecx
5fa223:	0f 85 98 01 00 00    	jne    0x5fa3c1
5fa229:	33 c9                	xor    %ecx,%ecx
5fa22b:	33 db                	xor    %ebx,%ebx
5fa22d:	39 5e 08             	cmp    %ebx,0x8(%esi)
5fa230:	0f 94 c1             	sete   %cl
5fa233:	33 c0                	xor    %eax,%eax
5fa235:	39 5e 0c             	cmp    %ebx,0xc(%esi)
5fa238:	0f 94 c0             	sete   %al
5fa23b:	3b c8                	cmp    %eax,%ecx
5fa23d:	0f 85 7e 01 00 00    	jne    0x5fa3c1
5fa243:	33 c9                	xor    %ecx,%ecx
5fa245:	39 5e 10             	cmp    %ebx,0x10(%esi)
5fa248:	0f 94 c1             	sete   %cl
5fa24b:	33 c0                	xor    %eax,%eax
5fa24d:	39 5e 14             	cmp    %ebx,0x14(%esi)
5fa250:	0f 94 c0             	sete   %al
5fa253:	3b c8                	cmp    %eax,%ecx
5fa255:	0f 85 66 01 00 00    	jne    0x5fa3c1
5fa25b:	33 c9                	xor    %ecx,%ecx
5fa25d:	39 5e 18             	cmp    %ebx,0x18(%esi)
5fa260:	0f 94 c1             	sete   %cl
5fa263:	33 c0                	xor    %eax,%eax
5fa265:	39 5e 1c             	cmp    %ebx,0x1c(%esi)
5fa268:	0f 94 c0             	sete   %al
5fa26b:	3b c8                	cmp    %eax,%ecx
5fa26d:	0f 85 4e 01 00 00    	jne    0x5fa3c1
5fa273:	33 c9                	xor    %ecx,%ecx
5fa275:	8b c2                	mov    %edx,%eax
5fa277:	41                   	inc    %ecx
5fa278:	66 39 18             	cmp    %bx,(%eax)
5fa27b:	74 08                	je     0x5fa285
5fa27d:	83 c0 02             	add    $0x2,%eax
5fa280:	83 e9 01             	sub    $0x1,%ecx
5fa283:	75 f3                	jne    0x5fa278
5fa285:	66 83 38 3a          	cmpw   $0x3a,(%eax)
5fa289:	89 45 fc             	mov    %eax,-0x4(%ebp)
5fa28c:	75 3d                	jne    0x5fa2cb
5fa28e:	85 ff                	test   %edi,%edi
5fa290:	74 34                	je     0x5fa2c6
5fa292:	83 7e 04 03          	cmpl   $0x3,0x4(%esi)
5fa296:	73 1c                	jae    0x5fa2b4
5fa298:	ff 75 10             	push   0x10(%ebp)
5fa29b:	56                   	push   %esi
5fa29c:	e8 41 01 00 00       	call   0x5fa3e2
5fa2a1:	59                   	pop    %ecx
5fa2a2:	59                   	pop    %ecx
5fa2a3:	e8 51 2d ff ff       	call   0x5ecff9
5fa2a8:	6a 22                	push   $0x22
5fa2aa:	59                   	pop    %ecx
5fa2ab:	89 08                	mov    %ecx,(%eax)
5fa2ad:	8b c1                	mov    %ecx,%eax
5fa2af:	e9 29 01 00 00       	jmp    0x5fa3dd
5fa2b4:	6a 02                	push   $0x2
5fa2b6:	52                   	push   %edx
5fa2b7:	ff 76 04             	push   0x4(%esi)
5fa2ba:	57                   	push   %edi
5fa2bb:	e8 b7 cd ff ff       	call   0x5f7077
5fa2c0:	8b 45 fc             	mov    -0x4(%ebp),%eax
5fa2c3:	83 c4 10             	add    $0x10,%esp
5fa2c6:	8d 50 02             	lea    0x2(%eax),%edx
5fa2c9:	eb 09                	jmp    0x5fa2d4
5fa2cb:	85 ff                	test   %edi,%edi
5fa2cd:	74 05                	je     0x5fa2d4
5fa2cf:	33 c0                	xor    %eax,%eax
5fa2d1:	66 89 07             	mov    %ax,(%edi)
5fa2d4:	0f b7 02             	movzwl (%edx),%eax
5fa2d7:	8b fa                	mov    %edx,%edi
5fa2d9:	89 5d fc             	mov    %ebx,-0x4(%ebp)
5fa2dc:	eb 20                	jmp    0x5fa2fe
5fa2de:	66 83 f8 2f          	cmp    $0x2f,%ax
5fa2e2:	74 11                	je     0x5fa2f5
5fa2e4:	66 83 f8 5c          	cmp    $0x5c,%ax
5fa2e8:	74 0b                	je     0x5fa2f5
5fa2ea:	66 83 f8 2e          	cmp    $0x2e,%ax
5fa2ee:	75 08                	jne    0x5fa2f8
5fa2f0:	89 7d fc             	mov    %edi,-0x4(%ebp)
5fa2f3:	eb 03                	jmp    0x5fa2f8
5fa2f5:	8d 5f 02             	lea    0x2(%edi),%ebx
5fa2f8:	83 c7 02             	add    $0x2,%edi
5fa2fb:	0f b7 07             	movzwl (%edi),%eax
5fa2fe:	66 85 c0             	test   %ax,%ax
5fa301:	75 db                	jne    0x5fa2de
5fa303:	85 db                	test   %ebx,%ebx
5fa305:	74 25                	je     0x5fa32c
5fa307:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
5fa30b:	74 1b                	je     0x5fa328
5fa30d:	8b c3                	mov    %ebx,%eax
5fa30f:	2b c2                	sub    %edx,%eax
5fa311:	d1 f8                	sar    $1,%eax
5fa313:	39 46 0c             	cmp    %eax,0xc(%esi)
5fa316:	76 80                	jbe    0x5fa298
5fa318:	50                   	push   %eax
5fa319:	52                   	push   %edx
5fa31a:	ff 76 0c             	push   0xc(%esi)
5fa31d:	ff 76 08             	push   0x8(%esi)
5fa320:	e8 52 cd ff ff       	call   0x5f7077
5fa325:	83 c4 10             	add    $0x10,%esp
5fa328:	8b d3                	mov    %ebx,%edx
5fa32a:	eb 0c                	jmp    0x5fa338
5fa32c:	8b 46 08             	mov    0x8(%esi),%eax
5fa32f:	85 c0                	test   %eax,%eax
5fa331:	74 05                	je     0x5fa338
5fa333:	33 c9                	xor    %ecx,%ecx
5fa335:	66 89 08             	mov    %cx,(%eax)
5fa338:	8b 45 fc             	mov    -0x4(%ebp),%eax
5fa33b:	85 c0                	test   %eax,%eax
5fa33d:	74 4f                	je     0x5fa38e
5fa33f:	3b c2                	cmp    %edx,%eax
5fa341:	72 4b                	jb     0x5fa38e
5fa343:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
5fa347:	74 20                	je     0x5fa369
5fa349:	2b c2                	sub    %edx,%eax
5fa34b:	d1 f8                	sar    $1,%eax
5fa34d:	39 46 14             	cmp    %eax,0x14(%esi)
5fa350:	0f 86 42 ff ff ff    	jbe    0x5fa298
5fa356:	50                   	push   %eax
5fa357:	52                   	push   %edx
5fa358:	ff 76 14             	push   0x14(%esi)
5fa35b:	ff 76 10             	push   0x10(%esi)
5fa35e:	e8 14 cd ff ff       	call   0x5f7077
5fa363:	8b 45 fc             	mov    -0x4(%ebp),%eax
5fa366:	83 c4 10             	add    $0x10,%esp
5fa369:	83 7e 18 00          	cmpl   $0x0,0x18(%esi)
5fa36d:	74 4e                	je     0x5fa3bd
5fa36f:	2b f8                	sub    %eax,%edi
5fa371:	d1 ff                	sar    $1,%edi
5fa373:	39 7e 1c             	cmp    %edi,0x1c(%esi)
5fa376:	0f 86 1c ff ff ff    	jbe    0x5fa298
5fa37c:	57                   	push   %edi
5fa37d:	50                   	push   %eax
5fa37e:	ff 76 1c             	push   0x1c(%esi)
5fa381:	ff 76 18             	push   0x18(%esi)
5fa384:	e8 ee cc ff ff       	call   0x5f7077
5fa389:	83 c4 10             	add    $0x10,%esp
5fa38c:	eb 2f                	jmp    0x5fa3bd
5fa38e:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
5fa392:	74 1d                	je     0x5fa3b1
5fa394:	2b fa                	sub    %edx,%edi
5fa396:	d1 ff                	sar    $1,%edi
5fa398:	39 7e 14             	cmp    %edi,0x14(%esi)
5fa39b:	0f 86 f7 fe ff ff    	jbe    0x5fa298
5fa3a1:	57                   	push   %edi
5fa3a2:	52                   	push   %edx
5fa3a3:	ff 76 14             	push   0x14(%esi)
5fa3a6:	ff 76 10             	push   0x10(%esi)
5fa3a9:	e8 c9 cc ff ff       	call   0x5f7077
5fa3ae:	83 c4 10             	add    $0x10,%esp
5fa3b1:	8b 46 18             	mov    0x18(%esi),%eax
5fa3b4:	85 c0                	test   %eax,%eax
5fa3b6:	74 05                	je     0x5fa3bd
5fa3b8:	33 c9                	xor    %ecx,%ecx
5fa3ba:	66 89 08             	mov    %cx,(%eax)
5fa3bd:	33 c0                	xor    %eax,%eax
5fa3bf:	eb 1c                	jmp    0x5fa3dd
5fa3c1:	ff 75 10             	push   0x10(%ebp)
5fa3c4:	56                   	push   %esi
5fa3c5:	e8 18 00 00 00       	call   0x5fa3e2
5fa3ca:	59                   	pop    %ecx
5fa3cb:	59                   	pop    %ecx
5fa3cc:	e8 28 2c ff ff       	call   0x5ecff9
5fa3d1:	6a 16                	push   $0x16
5fa3d3:	5e                   	pop    %esi
5fa3d4:	89 30                	mov    %esi,(%eax)
5fa3d6:	e8 44 2b ff ff       	call   0x5ecf1f
5fa3db:	8b c6                	mov    %esi,%eax
5fa3dd:	5f                   	pop    %edi
5fa3de:	5e                   	pop    %esi
5fa3df:	5b                   	pop    %ebx
5fa3e0:	c9                   	leave
5fa3e1:	c3                   	ret
5fa3e2:	8b ff                	mov    %edi,%edi
5fa3e4:	55                   	push   %ebp
5fa3e5:	8b ec                	mov    %esp,%ebp
5fa3e7:	8b 45 08             	mov    0x8(%ebp),%eax
5fa3ea:	8b 08                	mov    (%eax),%ecx
5fa3ec:	85 c9                	test   %ecx,%ecx
5fa3ee:	74 05                	je     0x5fa3f5
5fa3f0:	33 d2                	xor    %edx,%edx
5fa3f2:	66 89 11             	mov    %dx,(%ecx)
5fa3f5:	8b 48 08             	mov    0x8(%eax),%ecx
5fa3f8:	85 c9                	test   %ecx,%ecx
5fa3fa:	74 05                	je     0x5fa401
5fa3fc:	33 d2                	xor    %edx,%edx
5fa3fe:	66 89 11             	mov    %dx,(%ecx)
5fa401:	8b 48 10             	mov    0x10(%eax),%ecx
5fa404:	85 c9                	test   %ecx,%ecx
5fa406:	74 05                	je     0x5fa40d
5fa408:	33 d2                	xor    %edx,%edx
5fa40a:	66 89 11             	mov    %dx,(%ecx)
5fa40d:	8b 40 18             	mov    0x18(%eax),%eax
5fa410:	85 c0                	test   %eax,%eax
5fa412:	74 05                	je     0x5fa419
5fa414:	33 c9                	xor    %ecx,%ecx
5fa416:	66 89 08             	mov    %cx,(%eax)
5fa419:	5d                   	pop    %ebp
5fa41a:	c3                   	ret
5fa41b:	8b ff                	mov    %edi,%edi
5fa41d:	55                   	push   %ebp
5fa41e:	8b ec                	mov    %esp,%ebp
5fa420:	83 ec 28             	sub    $0x28,%esp
5fa423:	8b 45 0c             	mov    0xc(%ebp),%eax
5fa426:	89 45 d8             	mov    %eax,-0x28(%ebp)
5fa429:	8b 45 10             	mov    0x10(%ebp),%eax
5fa42c:	89 45 dc             	mov    %eax,-0x24(%ebp)
5fa42f:	8b 45 14             	mov    0x14(%ebp),%eax
5fa432:	89 45 e0             	mov    %eax,-0x20(%ebp)
5fa435:	8b 45 18             	mov    0x18(%ebp),%eax
5fa438:	89 45 e4             	mov    %eax,-0x1c(%ebp)
5fa43b:	8b 45 1c             	mov    0x1c(%ebp),%eax
5fa43e:	89 45 e8             	mov    %eax,-0x18(%ebp)
5fa441:	8b 45 20             	mov    0x20(%ebp),%eax
5fa444:	89 45 ec             	mov    %eax,-0x14(%ebp)
5fa447:	8b 45 24             	mov    0x24(%ebp),%eax
5fa44a:	89 45 f0             	mov    %eax,-0x10(%ebp)
5fa44d:	8b 45 28             	mov    0x28(%ebp),%eax
5fa450:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
5fa454:	ff 75 fc             	push   -0x4(%ebp)
5fa457:	89 45 f4             	mov    %eax,-0xc(%ebp)
5fa45a:	8d 45 d8             	lea    -0x28(%ebp),%eax
5fa45d:	c6 45 f8 00          	movb   $0x0,-0x8(%ebp)
5fa461:	ff 75 f8             	push   -0x8(%ebp)
5fa464:	50                   	push   %eax
5fa465:	ff 75 08             	push   0x8(%ebp)
5fa468:	e8 84 fd ff ff       	call   0x5fa1f1
5fa46d:	83 c4 10             	add    $0x10,%esp
5fa470:	c9                   	leave
5fa471:	c3                   	ret
5fa472:	8b ff                	mov    %edi,%edi
5fa474:	55                   	push   %ebp
5fa475:	8b ec                	mov    %esp,%ebp
5fa477:	83 ec 34             	sub    $0x34,%esp
5fa47a:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
5fa47e:	75 1d                	jne    0x5fa49d
5fa480:	e8 61 2b ff ff       	call   0x5ecfe6
5fa485:	83 20 00             	andl   $0x0,(%eax)
5fa488:	e8 6c 2b ff ff       	call   0x5ecff9
5fa48d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
5fa493:	e8 87 2a ff ff       	call   0x5ecf1f
5fa498:	83 c8 ff             	or     $0xffffffff,%eax
5fa49b:	c9                   	leave
5fa49c:	c3                   	ret
5fa49d:	53                   	push   %ebx
5fa49e:	56                   	push   %esi
5fa49f:	57                   	push   %edi
5fa4a0:	6a 30                	push   $0x30
5fa4a2:	33 db                	xor    %ebx,%ebx
5fa4a4:	8d 45 cc             	lea    -0x34(%ebp),%eax
5fa4a7:	53                   	push   %ebx
5fa4a8:	50                   	push   %eax
5fa4a9:	e8 52 95 fe ff       	call   0x5e3a00
5fa4ae:	8b 7d 0c             	mov    0xc(%ebp),%edi
5fa4b1:	8d 75 cc             	lea    -0x34(%ebp),%esi
5fa4b4:	83 c4 0c             	add    $0xc,%esp
5fa4b7:	6a 0c                	push   $0xc
5fa4b9:	59                   	pop    %ecx
5fa4ba:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
5fa4bc:	8b 7d 08             	mov    0x8(%ebp),%edi
5fa4bf:	85 ff                	test   %edi,%edi
5fa4c1:	75 1c                	jne    0x5fa4df
5fa4c3:	e8 1e 2b ff ff       	call   0x5ecfe6
5fa4c8:	89 18                	mov    %ebx,(%eax)
5fa4ca:	e8 2a 2b ff ff       	call   0x5ecff9
5fa4cf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
5fa4d5:	e8 45 2a ff ff       	call   0x5ecf1f
5fa4da:	83 c8 ff             	or     $0xffffffff,%eax
5fa4dd:	eb 6c                	jmp    0x5fa54b
5fa4df:	53                   	push   %ebx
5fa4e0:	68 00 00 00 02       	push   $0x2000000