42f381:	8b c7                	mov    %edi,%eax
42f383:	fc                   	cld
42f384:	5f                   	pop    %edi
42f385:	c9                   	leave
42f386:	c3                   	ret
42f387:	55                   	push   %ebp
42f388:	8b ec                	mov    %esp,%ebp
42f38a:	83 3d d0 f5 43 00 01 	cmpl   $0x1,0x43f5d0
42f391:	8b 4d 08             	mov    0x8(%ebp),%ecx
42f394:	66 8b 55 0c          	mov    0xc(%ebp),%dx
42f398:	7d 28                	jge    0x42f3c2
42f39a:	0f b7 01             	movzwl (%ecx),%eax
42f39d:	66 85 c0             	test   %ax,%ax
42f3a0:	74 16                	je     0x42f3b8
42f3a2:	56                   	push   %esi
42f3a3:	8b f0                	mov    %eax,%esi
42f3a5:	66 3b f2             	cmp    %dx,%si
42f3a8:	74 0d                	je     0x42f3b7
42f3aa:	83 c1 02             	add    $0x2,%ecx
42f3ad:	0f b7 01             	movzwl (%ecx),%eax
42f3b0:	8b f0                	mov    %eax,%esi
42f3b2:	66 85 c0             	test   %ax,%ax
42f3b5:	75 ee                	jne    0x42f3a5
42f3b7:	5e                   	pop    %esi
42f3b8:	33 c0                	xor    %eax,%eax
42f3ba:	66 39 11             	cmp    %dx,(%ecx)
42f3bd:	0f 44 c1             	cmove  %ecx,%eax
42f3c0:	5d                   	pop    %ebp
42f3c1:	c3                   	ret
42f3c2:	0f b7 c2             	movzwl %dx,%eax
42f3c5:	66 0f 6e c0          	movd   %eax,%xmm0
42f3c9:	f2 0f 70 c0 00       	pshuflw $0x0,%xmm0,%xmm0
42f3ce:	66 0f 70 d0 00       	pshufd $0x0,%xmm0,%xmm2
42f3d3:	8b c1                	mov    %ecx,%eax
42f3d5:	25 ff 0f 00 00       	and    $0xfff,%eax
42f3da:	3d f0 0f 00 00       	cmp    $0xff0,%eax
42f3df:	77 1d                	ja     0x42f3fe
42f3e1:	0f 10 09             	movups (%ecx),%xmm1
42f3e4:	0f 57 c0             	xorps  %xmm0,%xmm0
42f3e7:	66 0f 75 c1          	pcmpeqw %xmm1,%xmm0
42f3eb:	66 0f 75 ca          	pcmpeqw %xmm2,%xmm1
42f3ef:	0f 56 c1             	orps   %xmm1,%xmm0
42f3f2:	66 0f d7 c0          	pmovmskb %xmm0,%eax
42f3f6:	85 c0                	test   %eax,%eax
42f3f8:	75 18                	jne    0x42f412
42f3fa:	6a 10                	push   $0x10
42f3fc:	eb 0f                	jmp    0x42f40d
42f3fe:	0f b7 01             	movzwl (%ecx),%eax
42f401:	66 3b c2             	cmp    %dx,%ax
42f404:	74 17                	je     0x42f41d
42f406:	66 85 c0             	test   %ax,%ax
42f409:	74 0e                	je     0x42f419
42f40b:	6a 02                	push   $0x2
42f40d:	58                   	pop    %eax
42f40e:	03 c8                	add    %eax,%ecx
42f410:	eb c1                	jmp    0x42f3d3
42f412:	0f bc c0             	bsf    %eax,%eax
42f415:	03 c8                	add    %eax,%ecx
42f417:	eb 9f                	jmp    0x42f3b8
42f419:	33 c0                	xor    %eax,%eax
42f41b:	5d                   	pop    %ebp
42f41c:	c3                   	ret
42f41d:	8b c1                	mov    %ecx,%eax
42f41f:	5d                   	pop    %ebp
42f420:	c3                   	ret
42f421:	cc                   	int3
42f422:	cc                   	int3
42f423:	cc                   	int3
42f424:	cc                   	int3
42f425:	cc                   	int3
42f426:	cc                   	int3
42f427:	cc                   	int3
42f428:	cc                   	int3
42f429:	cc                   	int3
42f42a:	cc                   	int3
42f42b:	cc                   	int3
42f42c:	cc                   	int3
42f42d:	cc                   	int3
42f42e:	cc                   	int3
42f42f:	cc                   	int3
42f430:	e8 b4 ce fe ff       	call   0x41c2e9
42f435:	69 48 18 fd 43 03 00 	imul   $0x343fd,0x18(%eax),%ecx
42f43c:	81 c1 c3 9e 26 00    	add    $0x269ec3,%ecx
42f442:	89 48 18             	mov    %ecx,0x18(%eax)
42f445:	c1 e9 10             	shr    $0x10,%ecx
42f448:	81 e1 ff 7f 00 00    	and    $0x7fff,%ecx
42f44e:	8b c1                	mov    %ecx,%eax
42f450:	c3                   	ret
42f451:	8b ff                	mov    %edi,%edi
42f453:	55                   	push   %ebp
42f454:	8b ec                	mov    %esp,%ebp
42f456:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
42f45a:	75 15                	jne    0x42f471
42f45c:	e8 10 d2 fe ff       	call   0x41c671
42f461:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
42f467:	e8 82 df fd ff       	call   0x40d3ee
42f46c:	83 c8 ff             	or     $0xffffffff,%eax
42f46f:	5d                   	pop    %ebp
42f470:	c3                   	ret
42f471:	56                   	push   %esi
42f472:	8b 75 0c             	mov    0xc(%ebp),%esi
42f475:	85 f6                	test   %esi,%esi
42f477:	75 15                	jne    0x42f48e
42f479:	e8 f3 d1 fe ff       	call   0x41c671
42f47e:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
42f484:	e8 65 df fd ff       	call   0x40d3ee
42f489:	83 c8 ff             	or     $0xffffffff,%eax
42f48c:	eb 1b                	jmp    0x42f4a9
42f48e:	ff 75 08             	push   0x8(%ebp)
42f491:	e8 a2 9e fe ff       	call   0x419338
42f496:	59                   	pop    %ecx
42f497:	8b c8                	mov    %eax,%ecx
42f499:	89 06                	mov    %eax,(%esi)
42f49b:	23 ca                	and    %edx,%ecx
42f49d:	89 56 04             	mov    %edx,0x4(%esi)
42f4a0:	83 c8 ff             	or     $0xffffffff,%eax
42f4a3:	3b c8                	cmp    %eax,%ecx
42f4a5:	74 02                	je     0x42f4a9
42f4a7:	33 c0                	xor    %eax,%eax
42f4a9:	5e                   	pop    %esi
42f4aa:	5d                   	pop    %ebp
42f4ab:	c3                   	ret
42f4ac:	6a 0c                	push   $0xc
42f4ae:	68 e8 b1 43 00       	push   $0x43b1e8
42f4b3:	e8 18 b0 fd ff       	call   0x40a4d0
42f4b8:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
42f4bc:	8b 45 08             	mov    0x8(%ebp),%eax
42f4bf:	ff 30                	push   (%eax)
42f4c1:	e8 0b e5 fe ff       	call   0x41d9d1
42f4c6:	59                   	pop    %ecx
42f4c7:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
42f4cb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
42f4ce:	e8 34 00 00 00       	call   0x42f507
42f4d3:	8b f0                	mov    %eax,%esi
42f4d5:	89 75 e4             	mov    %esi,-0x1c(%ebp)
42f4d8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
42f4df:	e8 17 00 00 00       	call   0x42f4fb
42f4e4:	8b c6                	mov    %esi,%eax
42f4e6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
42f4e9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
42f4f0:	59                   	pop    %ecx
42f4f1:	5f                   	pop    %edi
42f4f2:	5e                   	pop    %esi
42f4f3:	5b                   	pop    %ebx
42f4f4:	c9                   	leave
42f4f5:	c2 0c 00             	ret    $0xc
42f4f8:	8b 75 e4             	mov    -0x1c(%ebp),%esi
42f4fb:	8b 45 10             	mov    0x10(%ebp),%eax
42f4fe:	ff 30                	push   (%eax)
42f500:	e8 e0 e4 fe ff       	call   0x41d9e5
42f505:	59                   	pop    %ecx
42f506:	c3                   	ret
42f507:	8b ff                	mov    %edi,%edi
42f509:	53                   	push   %ebx
42f50a:	56                   	push   %esi
42f50b:	8b f1                	mov    %ecx,%esi
42f50d:	57                   	push   %edi
42f50e:	8b 06                	mov    (%esi),%eax
42f510:	ff 76 08             	push   0x8(%esi)
42f513:	8b 38                	mov    (%eax),%edi
42f515:	8b 46 04             	mov    0x4(%esi),%eax
42f518:	83 e7 fe             	and    $0xfffffffe,%edi
42f51b:	ff 30                	push   (%eax)
42f51d:	e8 82 09 ff ff       	call   0x41fea4
42f522:	8b 46 04             	mov    0x4(%esi),%eax
42f525:	ff 30                	push   (%eax)
42f527:	e8 ff 06 ff ff       	call   0x41fc2b
42f52c:	8b 46 04             	mov    0x4(%esi),%eax
42f52f:	83 c4 0c             	add    $0xc,%esp
42f532:	b9 1f f8 ff ff       	mov    $0xfffff81f,%ecx
42f537:	8b 00                	mov    (%eax),%eax
42f539:	83 c0 0c             	add    $0xc,%eax
42f53c:	f0 21 08             	lock and %ecx,(%eax)
42f53f:	8b 46 0c             	mov    0xc(%esi),%eax
42f542:	f6 00 04             	testb  $0x4,(%eax)
42f545:	74 13                	je     0x42f55a
42f547:	8b 46 04             	mov    0x4(%esi),%eax
42f54a:	68 00 04 00 00       	push   $0x400
42f54f:	6a 02                	push   $0x2
42f551:	8b 00                	mov    (%eax),%eax
42f553:	8d 48 14             	lea    0x14(%eax),%ecx
42f556:	51                   	push   %ecx
42f557:	50                   	push   %eax
42f558:	eb 41                	jmp    0x42f59b
42f55a:	8b 46 10             	mov    0x10(%esi),%eax
42f55d:	8b 00                	mov    (%eax),%eax
42f55f:	85 c0                	test   %eax,%eax
42f561:	75 2c                	jne    0x42f58f
42f563:	6a 01                	push   $0x1
42f565:	57                   	push   %edi
42f566:	e8 45 76 fd ff       	call   0x406bb0
42f56b:	6a 00                	push   $0x0
42f56d:	8b d8                	mov    %eax,%ebx
42f56f:	e8 9c 76 fd ff       	call   0x406c10
42f574:	83 c4 0c             	add    $0xc,%esp
42f577:	85 db                	test   %ebx,%ebx
42f579:	75 0b                	jne    0x42f586
42f57b:	ff 05 f0 f7 43 00    	incl   0x43f7f0
42f581:	83 c8 ff             	or     $0xffffffff,%eax
42f584:	eb 1d                	jmp    0x42f5a3
42f586:	68 40 01 00 00       	push   $0x140
42f58b:	57                   	push   %edi
42f58c:	53                   	push   %ebx
42f58d:	eb 07                	jmp    0x42f596
42f58f:	68 80 01 00 00       	push   $0x180
42f594:	57                   	push   %edi
42f595:	50                   	push   %eax
42f596:	8b 46 04             	mov    0x4(%esi),%eax
42f599:	ff 30                	push   (%eax)
42f59b:	e8 9d 00 00 00       	call   0x42f63d
42f5a0:	83 c4 10             	add    $0x10,%esp
42f5a3:	5f                   	pop    %edi
42f5a4:	5e                   	pop    %esi
42f5a5:	5b                   	pop    %ebx
42f5a6:	c3                   	ret
42f5a7:	8b ff                	mov    %edi,%edi
42f5a9:	55                   	push   %ebp
42f5aa:	8b ec                	mov    %esp,%ebp
42f5ac:	83 ec 24             	sub    $0x24,%esp
42f5af:	8b 4d 08             	mov    0x8(%ebp),%ecx
42f5b2:	89 4d f8             	mov    %ecx,-0x8(%ebp)
42f5b5:	85 c9                	test   %ecx,%ecx
42f5b7:	75 23                	jne    0x42f5dc
42f5b9:	8b 45 18             	mov    0x18(%ebp),%eax
42f5bc:	50                   	push   %eax
42f5bd:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
42f5c1:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
42f5c8:	33 c0                	xor    %eax,%eax
42f5ca:	50                   	push   %eax
42f5cb:	50                   	push   %eax
42f5cc:	50                   	push   %eax
42f5cd:	50                   	push   %eax
42f5ce:	50                   	push   %eax
42f5cf:	e8 9d dd fd ff       	call   0x40d371
42f5d4:	83 c4 18             	add    $0x18,%esp
42f5d7:	83 c8 ff             	or     $0xffffffff,%eax
42f5da:	c9                   	leave
42f5db:	c3                   	ret
42f5dc:	8b 45 10             	mov    0x10(%ebp),%eax
42f5df:	83 f8 04             	cmp    $0x4,%eax
42f5e2:	74 09                	je     0x42f5ed
42f5e4:	85 c0                	test   %eax,%eax
42f5e6:	74 0e                	je     0x42f5f6
42f5e8:	83 f8 40             	cmp    $0x40,%eax
42f5eb:	75 cc                	jne    0x42f5b9
42f5ed:	85 c0                	test   %eax,%eax
42f5ef:	74 05                	je     0x42f5f6
42f5f1:	83 f8 40             	cmp    $0x40,%eax
42f5f4:	75 0d                	jne    0x42f603
42f5f6:	8b 45 14             	mov    0x14(%ebp),%eax
42f5f9:	83 c0 fe             	add    $0xfffffffe,%eax
42f5fc:	3d fd ff ff 7f       	cmp    $0x7ffffffd,%eax
42f601:	77 b6                	ja     0x42f5b9
42f603:	8d 45 14             	lea    0x14(%ebp),%eax
42f606:	89 4d f4             	mov    %ecx,-0xc(%ebp)
42f609:	89 45 dc             	mov    %eax,-0x24(%ebp)
42f60c:	8d 45 f8             	lea    -0x8(%ebp),%eax
42f60f:	89 45 e0             	mov    %eax,-0x20(%ebp)
42f612:	8b 45 18             	mov    0x18(%ebp),%eax
42f615:	89 45 e4             	mov    %eax,-0x1c(%ebp)
42f618:	8d 45 10             	lea    0x10(%ebp),%eax
42f61b:	89 45 e8             	mov    %eax,-0x18(%ebp)
42f61e:	8d 45 0c             	lea    0xc(%ebp),%eax
42f621:	89 45 ec             	mov    %eax,-0x14(%ebp)
42f624:	8d 45 f4             	lea    -0xc(%ebp),%eax
42f627:	50                   	push   %eax
42f628:	8d 45 dc             	lea    -0x24(%ebp),%eax
42f62b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
42f62e:	50                   	push   %eax
42f62f:	8d 45 f0             	lea    -0x10(%ebp),%eax
42f632:	50                   	push   %eax
42f633:	8d 4d ff             	lea    -0x1(%ebp),%ecx
42f636:	e8 71 fe ff ff       	call   0x42f4ac
42f63b:	c9                   	leave
42f63c:	c3                   	ret
42f63d:	8b ff                	mov    %edi,%edi
42f63f:	55                   	push   %ebp
42f640:	8b ec                	mov    %esp,%ebp
42f642:	8b 45 08             	mov    0x8(%ebp),%eax
42f645:	8b 4d 14             	mov    0x14(%ebp),%ecx
42f648:	83 c0 0c             	add    $0xc,%eax
42f64b:	f0 09 08             	lock or %ecx,(%eax)
42f64e:	8b 4d 08             	mov    0x8(%ebp),%ecx
42f651:	8b 45 10             	mov    0x10(%ebp),%eax
42f654:	89 41 18             	mov    %eax,0x18(%ecx)
42f657:	8b 45 08             	mov    0x8(%ebp),%eax
42f65a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
42f65d:	89 08                	mov    %ecx,(%eax)
42f65f:	8b 45 08             	mov    0x8(%ebp),%eax
42f662:	89 48 04             	mov    %ecx,0x4(%eax)
42f665:	8b 45 08             	mov    0x8(%ebp),%eax
42f668:	83 60 08 00          	andl   $0x0,0x8(%eax)
42f66c:	33 c0                	xor    %eax,%eax
42f66e:	5d                   	pop    %ebp
42f66f:	c3                   	ret
42f670:	8b ff                	mov    %edi,%edi
42f672:	55                   	push   %ebp
42f673:	8b ec                	mov    %esp,%ebp
42f675:	83 ec 28             	sub    $0x28,%esp
42f678:	8d 4d d8             	lea    -0x28(%ebp),%ecx
42f67b:	56                   	push   %esi
42f67c:	6a 00                	push   $0x0
42f67e:	e8 5f da fd ff       	call   0x40d0e2
42f683:	8d 45 d8             	lea    -0x28(%ebp),%eax
42f686:	50                   	push   %eax
42f687:	ff 75 14             	push   0x14(%ebp)
42f68a:	ff 75 10             	push   0x10(%ebp)
42f68d:	ff 75 0c             	push   0xc(%ebp)
42f690:	ff 75 08             	push   0x8(%ebp)
42f693:	e8 0f ff ff ff       	call   0x42f5a7
42f698:	83 c4 14             	add    $0x14,%esp
42f69b:	8d 4d d8             	lea    -0x28(%ebp),%ecx
42f69e:	8b f0                	mov    %eax,%esi
42f6a0:	e8 85 da fd ff       	call   0x40d12a
42f6a5:	8b c6                	mov    %esi,%eax
42f6a7:	5e                   	pop    %esi
42f6a8:	c9                   	leave
42f6a9:	c3                   	ret
42f6aa:	8b ff                	mov    %edi,%edi
42f6ac:	55                   	push   %ebp
42f6ad:	8b ec                	mov    %esp,%ebp
42f6af:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
42f6b3:	75 15                	jne    0x42f6ca
42f6b5:	e8 b7 cf fe ff       	call   0x41c671
42f6ba:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
42f6c0:	e8 29 dd fd ff       	call   0x40d3ee
42f6c5:	83 c8 ff             	or     $0xffffffff,%eax
42f6c8:	5d                   	pop    %ebp
42f6c9:	c3                   	ret
42f6ca:	8b 45 0c             	mov    0xc(%ebp),%eax
42f6cd:	85 c0                	test   %eax,%eax
42f6cf:	74 e4                	je     0x42f6b5
42f6d1:	6a 00                	push   $0x0
42f6d3:	ff 70 04             	push   0x4(%eax)
42f6d6:	ff 30                	push   (%eax)
42f6d8:	ff 75 08             	push   0x8(%ebp)
42f6db:	e8 ed 95 fe ff       	call   0x418ccd
42f6e0:	83 c4 10             	add    $0x10,%esp
42f6e3:	5d                   	pop    %ebp
42f6e4:	c3                   	ret
42f6e5:	6a 0c                	push   $0xc
42f6e7:	68 08 b2 43 00       	push   $0x43b208
42f6ec:	e8 df ad fd ff       	call   0x40a4d0
42f6f1:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
42f6f5:	8b 45 08             	mov    0x8(%ebp),%eax
42f6f8:	ff 30                	push   (%eax)
42f6fa:	e8 83 3c ff ff       	call   0x423382
42f6ff:	59                   	pop    %ecx
42f700:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
42f704:	8b 4d 0c             	mov    0xc(%ebp),%ecx