40d391:	0f 45 f8             	cmovne %eax,%edi
40d394:	8b cf                	mov    %edi,%ecx
40d396:	8d 51 02             	lea    0x2(%ecx),%edx
40d399:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
40d3a0:	66 8b 01             	mov    (%ecx),%ax
40d3a3:	83 c1 02             	add    $0x2,%ecx
40d3a6:	66 85 c0             	test   %ax,%ax
40d3a9:	75 f5                	jne    0x40d3a0
40d3ab:	8b 85 24 fd ff ff    	mov    -0x2dc(%ebp),%eax
40d3b1:	2b ca                	sub    %edx,%ecx
40d3b3:	d1 f9                	sar    $1,%ecx
40d3b5:	8b 10                	mov    (%eax),%edx
40d3b7:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40d3bc:	2b c2                	sub    %edx,%eax
40d3be:	3b c1                	cmp    %ecx,%eax
40d3c0:	0f 82 57 02 00 00    	jb     0x40d61d
40d3c6:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40d3ca:	8b c6                	mov    %esi,%eax
40d3cc:	72 02                	jb     0x40d3d0
40d3ce:	8b 06                	mov    (%esi),%eax
40d3d0:	52                   	push   %edx
40d3d1:	50                   	push   %eax
40d3d2:	51                   	push   %ecx
40d3d3:	57                   	push   %edi
40d3d4:	51                   	push   %ecx
40d3d5:	ff b5 1c fd ff ff    	push   -0x2e4(%ebp)
40d3db:	8d 8d 04 fd ff ff    	lea    -0x2fc(%ebp),%ecx
40d3e1:	e8 0a 7f ff ff       	call   0x4052f0
40d3e6:	8b bd 00 fd ff ff    	mov    -0x300(%ebp),%edi
40d3ec:	8d 85 04 fd ff ff    	lea    -0x2fc(%ebp),%eax
40d3f2:	c6 45 fc 0c          	movb   $0xc,-0x4(%ebp)
40d3f6:	8b cf                	mov    %edi,%ecx
40d3f8:	83 bd 18 fd ff ff 08 	cmpl   $0x8,-0x2e8(%ebp)
40d3ff:	ff b5 14 fd ff ff    	push   -0x2ec(%ebp)
40d405:	0f 43 85 04 fd ff ff 	cmovae -0x2fc(%ebp),%eax
40d40c:	50                   	push   %eax
40d40d:	e8 5e 59 ff ff       	call   0x402d70
40d412:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40d416:	8b 8d 18 fd ff ff    	mov    -0x2e8(%ebp),%ecx
40d41c:	83 f9 08             	cmp    $0x8,%ecx
40d41f:	72 35                	jb     0x40d456
40d421:	8b 95 04 fd ff ff    	mov    -0x2fc(%ebp),%edx
40d427:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d42e:	8b c2                	mov    %edx,%eax
40d430:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d436:	72 14                	jb     0x40d44c
40d438:	8b 50 fc             	mov    -0x4(%eax),%edx
40d43b:	83 c1 23             	add    $0x23,%ecx
40d43e:	2b c2                	sub    %edx,%eax
40d440:	83 c0 fc             	add    $0xfffffffc,%eax
40d443:	83 f8 1f             	cmp    $0x1f,%eax
40d446:	0f 87 e0 01 00 00    	ja     0x40d62c
40d44c:	51                   	push   %ecx
40d44d:	52                   	push   %edx
40d44e:	e8 65 c7 00 00       	call   0x419bb8
40d453:	83 c4 08             	add    $0x8,%esp
40d456:	68 b0 00 00 00       	push   $0xb0
40d45b:	8d 85 28 fd ff ff    	lea    -0x2d8(%ebp),%eax
40d461:	6a 00                	push   $0x0
40d463:	50                   	push   %eax
40d464:	e8 a7 e7 00 00       	call   0x41bc10
40d469:	83 c4 08             	add    $0x8,%esp
40d46c:	8d 8d 28 fd ff ff    	lea    -0x2d8(%ebp),%ecx
40d472:	e8 f9 a5 ff ff       	call   0x407a70
40d477:	c6 45 fc 0d          	movb   $0xd,-0x4(%ebp)
40d47b:	ff 15 f4 e0 43 00    	call   *0x43e0f4
40d481:	50                   	push   %eax
40d482:	8d 8d 38 fd ff ff    	lea    -0x2c8(%ebp),%ecx
40d488:	e8 f3 25 00 00       	call   0x40fa80
40d48d:	8d 85 a4 fc ff ff    	lea    -0x35c(%ebp),%eax
40d493:	50                   	push   %eax
40d494:	8d 8d 40 fd ff ff    	lea    -0x2c0(%ebp),%ecx
40d49a:	e8 81 27 00 00       	call   0x40fc20
40d49f:	8d 8d 28 fd ff ff    	lea    -0x2d8(%ebp),%ecx
40d4a5:	e8 76 9b ff ff       	call   0x407020
40d4aa:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
40d4ae:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40d4b2:	72 02                	jb     0x40d4b6
40d4b4:	8b 36                	mov    (%esi),%esi
40d4b6:	8b 85 24 fd ff ff    	mov    -0x2dc(%ebp),%eax
40d4bc:	8d 8d a4 fc ff ff    	lea    -0x35c(%ebp),%ecx
40d4c2:	ff 30                	push   (%eax)
40d4c4:	56                   	push   %esi
40d4c5:	e8 a6 58 ff ff       	call   0x402d70
40d4ca:	33 c9                	xor    %ecx,%ecx
40d4cc:	0f 10 08             	movups (%eax),%xmm1
40d4cf:	f3 0f 7e 40 10       	movq   0x10(%eax),%xmm0
40d4d4:	0f 11 8d 04 fd ff ff 	movups %xmm1,-0x2fc(%ebp)
40d4db:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)
40d4e2:	66 0f d6 85 14 fd ff 	movq   %xmm0,-0x2ec(%ebp)
40d4e9:	ff
40d4ea:	c7 40 14 07 00 00 00 	movl   $0x7,0x14(%eax)
40d4f1:	66 89 08             	mov    %cx,(%eax)
40d4f4:	c6 45 fc 0f          	movb   $0xf,-0x4(%ebp)
40d4f8:	8d 8d 04 fd ff ff    	lea    -0x2fc(%ebp),%ecx
40d4fe:	83 bd 18 fd ff ff 08 	cmpl   $0x8,-0x2e8(%ebp)
40d505:	ff b5 14 fd ff ff    	push   -0x2ec(%ebp)
40d50b:	66 0f 7e c8          	movd   %xmm1,%eax
40d50f:	0f 43 c8             	cmovae %eax,%ecx
40d512:	51                   	push   %ecx
40d513:	8b cf                	mov    %edi,%ecx
40d515:	e8 56 58 ff ff       	call   0x402d70
40d51a:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
40d51e:	8b 8d 18 fd ff ff    	mov    -0x2e8(%ebp),%ecx
40d524:	83 f9 08             	cmp    $0x8,%ecx
40d527:	72 35                	jb     0x40d55e
40d529:	8b 95 04 fd ff ff    	mov    -0x2fc(%ebp),%edx
40d52f:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d536:	8b c2                	mov    %edx,%eax
40d538:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d53e:	72 14                	jb     0x40d554
40d540:	8b 50 fc             	mov    -0x4(%eax),%edx
40d543:	83 c1 23             	add    $0x23,%ecx
40d546:	2b c2                	sub    %edx,%eax
40d548:	83 c0 fc             	add    $0xfffffffc,%eax
40d54b:	83 f8 1f             	cmp    $0x1f,%eax
40d54e:	0f 87 d3 00 00 00    	ja     0x40d627
40d554:	51                   	push   %ecx
40d555:	52                   	push   %edx
40d556:	e8 5d c6 00 00       	call   0x419bb8
40d55b:	83 c4 08             	add    $0x8,%esp
40d55e:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40d562:	8b 8d b8 fc ff ff    	mov    -0x348(%ebp),%ecx
40d568:	83 f9 08             	cmp    $0x8,%ecx
40d56b:	72 35                	jb     0x40d5a2
40d56d:	8b 95 a4 fc ff ff    	mov    -0x35c(%ebp),%edx
40d573:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d57a:	8b c2                	mov    %edx,%eax
40d57c:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d582:	72 14                	jb     0x40d598
40d584:	8b 50 fc             	mov    -0x4(%eax),%edx
40d587:	83 c1 23             	add    $0x23,%ecx
40d58a:	2b c2                	sub    %edx,%eax
40d58c:	83 c0 fc             	add    $0xfffffffc,%eax
40d58f:	83 f8 1f             	cmp    $0x1f,%eax
40d592:	0f 87 8f 00 00 00    	ja     0x40d627
40d598:	51                   	push   %ecx
40d599:	52                   	push   %edx
40d59a:	e8 19 c6 00 00       	call   0x419bb8
40d59f:	83 c4 08             	add    $0x8,%esp
40d5a2:	83 bd ec fd ff ff 08 	cmpl   $0x8,-0x214(%ebp)
40d5a9:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
40d5af:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
40d5b5:	0f 43 85 d8 fd ff ff 	cmovae -0x228(%ebp),%eax
40d5bc:	8b cf                	mov    %edi,%ecx
40d5be:	50                   	push   %eax
40d5bf:	e8 ac 57 ff ff       	call   0x402d70
40d5c4:	8b 8d ec fd ff ff    	mov    -0x214(%ebp),%ecx
40d5ca:	83 f9 08             	cmp    $0x8,%ecx
40d5cd:	72 31                	jb     0x40d600
40d5cf:	8b 95 d8 fd ff ff    	mov    -0x228(%ebp),%edx
40d5d5:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40d5dc:	8b c2                	mov    %edx,%eax
40d5de:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d5e4:	72 10                	jb     0x40d5f6
40d5e6:	8b 50 fc             	mov    -0x4(%eax),%edx
40d5e9:	83 c1 23             	add    $0x23,%ecx
40d5ec:	2b c2                	sub    %edx,%eax
40d5ee:	83 c0 fc             	add    $0xfffffffc,%eax
40d5f1:	83 f8 1f             	cmp    $0x1f,%eax
40d5f4:	77 36                	ja     0x40d62c
40d5f6:	51                   	push   %ecx
40d5f7:	52                   	push   %edx
40d5f8:	e8 bb c5 00 00       	call   0x419bb8
40d5fd:	83 c4 08             	add    $0x8,%esp
40d600:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d603:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40d60a:	59                   	pop    %ecx
40d60b:	5f                   	pop    %edi
40d60c:	5e                   	pop    %esi
40d60d:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40d610:	33 cd                	xor    %ebp,%ecx
40d612:	e8 93 c5 00 00       	call   0x419baa
40d617:	8b e5                	mov    %ebp,%esp
40d619:	5d                   	pop    %ebp
40d61a:	c2 2c 00             	ret    $0x2c
40d61d:	e8 3e 3d ff ff       	call   0x401360
40d622:	e8 6c 23 01 00       	call   0x41f993
40d627:	e8 67 23 01 00       	call   0x41f993
40d62c:	e8 62 23 01 00       	call   0x41f993
40d631:	0f 1f 00             	nopl   (%eax)
40d634:	56                   	push   %esi
40d635:	cb                   	lret
40d636:	40                   	inc    %eax
40d637:	00 4d cb             	add    %cl,-0x35(%ebp)
40d63a:	40                   	inc    %eax
40d63b:	00 44 cb 40          	add    %al,0x40(%ebx,%ecx,8)
40d63f:	00 01                	add    %al,(%ecx)
40d641:	cb                   	lret
40d642:	40                   	inc    %eax
40d643:	00 3b                	add    %bh,(%ebx)
40d645:	cb                   	lret
40d646:	40                   	inc    %eax
40d647:	00 32                	add    %dh,(%edx)
40d649:	cb                   	lret
40d64a:	40                   	inc    %eax
40d64b:	00 5f cb             	add    %bl,-0x35(%edi)
40d64e:	40                   	inc    %eax
40d64f:	00 68 cb             	add    %ch,-0x35(%eax)
40d652:	40                   	inc    %eax
40d653:	00 00                	add    %al,(%eax)
40d655:	07                   	pop    %es
40d656:	07                   	pop    %es
40d657:	07                   	pop    %es
40d658:	07                   	pop    %es
40d659:	07                   	pop    %es
40d65a:	07                   	pop    %es
40d65b:	07                   	pop    %es
40d65c:	07                   	pop    %es
40d65d:	07                   	pop    %es
40d65e:	01 07                	add    %eax,(%edi)
40d660:	07                   	pop    %es
40d661:	07                   	pop    %es
40d662:	07                   	pop    %es
40d663:	07                   	pop    %es
40d664:	07                   	pop    %es
40d665:	07                   	pop    %es
40d666:	07                   	pop    %es
40d667:	07                   	pop    %es
40d668:	02 07                	add    (%edi),%al
40d66a:	07                   	pop    %es
40d66b:	07                   	pop    %es
40d66c:	07                   	pop    %es
40d66d:	07                   	pop    %es
40d66e:	07                   	pop    %es
40d66f:	07                   	pop    %es
40d670:	07                   	pop    %es
40d671:	07                   	pop    %es
40d672:	03 07                	add    (%edi),%eax
40d674:	07                   	pop    %es
40d675:	07                   	pop    %es
40d676:	07                   	pop    %es
40d677:	07                   	pop    %es
40d678:	07                   	pop    %es
40d679:	07                   	pop    %es
40d67a:	07                   	pop    %es
40d67b:	07                   	pop    %es
40d67c:	04 07                	add    $0x7,%al
40d67e:	07                   	pop    %es
40d67f:	07                   	pop    %es
40d680:	07                   	pop    %es
40d681:	07                   	pop    %es
40d682:	07                   	pop    %es
40d683:	07                   	pop    %es
40d684:	07                   	pop    %es
40d685:	07                   	pop    %es
40d686:	05 07 07 07 07       	add    $0x7070707,%eax
40d68b:	07                   	pop    %es
40d68c:	07                   	pop    %es
40d68d:	07                   	pop    %es
40d68e:	07                   	pop    %es
40d68f:	07                   	pop    %es
40d690:	06                   	push   %es
40d691:	cc                   	int3
40d692:	cc                   	int3
40d693:	cc                   	int3
40d694:	cc                   	int3
40d695:	cc                   	int3
40d696:	cc                   	int3
40d697:	cc                   	int3
40d698:	cc                   	int3
40d699:	cc                   	int3
40d69a:	cc                   	int3
40d69b:	cc                   	int3
40d69c:	cc                   	int3
40d69d:	cc                   	int3
40d69e:	cc                   	int3
40d69f:	cc                   	int3
40d6a0:	55                   	push   %ebp
40d6a1:	8b ec                	mov    %esp,%ebp
40d6a3:	6a ff                	push   $0xffffffff
40d6a5:	68 fb c4 43 00       	push   $0x43c4fb
40d6aa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40d6b0:	50                   	push   %eax
40d6b1:	b8 5c 20 00 00       	mov    $0x205c,%eax
40d6b6:	e8 b5 d2 00 00       	call   0x41a970
40d6bb:	a1 14 50 45 00       	mov    0x455014,%eax
40d6c0:	33 c5                	xor    %ebp,%eax
40d6c2:	89 45 f0             	mov    %eax,-0x10(%ebp)
40d6c5:	53                   	push   %ebx
40d6c6:	56                   	push   %esi
40d6c7:	57                   	push   %edi
40d6c8:	50                   	push   %eax
40d6c9:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d6cc:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40d6d2:	8b f9                	mov    %ecx,%edi
40d6d4:	8b 45 14             	mov    0x14(%ebp),%eax
40d6d7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d6da:	8b 55 10             	mov    0x10(%ebp),%edx
40d6dd:	8b 75 28             	mov    0x28(%ebp),%esi
40d6e0:	89 85 ac df ff ff    	mov    %eax,-0x2054(%ebp)
40d6e6:	8b 45 18             	mov    0x18(%ebp),%eax
40d6e9:	89 85 b0 df ff ff    	mov    %eax,-0x2050(%ebp)
40d6ef:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d6f2:	89 85 a0 df ff ff    	mov    %eax,-0x2060(%ebp)
40d6f8:	8b 45 20             	mov    0x20(%ebp),%eax
40d6fb:	89 85 a4 df ff ff    	mov    %eax,-0x205c(%ebp)
40d701:	8b 45 24             	mov    0x24(%ebp),%eax
40d704:	89 85 b4 df ff ff    	mov    %eax,-0x204c(%ebp)
40d70a:	8b 45 08             	mov    0x8(%ebp),%eax
40d70d:	89 8d b8 df ff ff    	mov    %ecx,-0x2048(%ebp)
40d713:	89 95 bc df ff ff    	mov    %edx,-0x2044(%ebp)
40d719:	89 b5 a8 df ff ff    	mov    %esi,-0x2058(%ebp)
40d71f:	39 47 64             	cmp    %eax,0x64(%edi)
40d722:	0f 8f 99 02 00 00    	jg     0x40d9c1
40d728:	8a 5d 34             	mov    0x34(%ebp),%bl
40d72b:	84 db                	test   %bl,%bl
40d72d:	0f 84 98 00 00 00    	je     0x40d7cb
40d733:	8b 87 90 00 00 00    	mov    0x90(%edi),%eax
40d739:	85 c0                	test   %eax,%eax
40d73b:	74 76                	je     0x40d7b3
40d73d:	80 bf d1 00 00 00 00 	cmpb   $0x0,0xd1(%edi)
40d744:	74 6d                	je     0x40d7b3
40d746:	8b 00                	mov    (%eax),%eax
40d748:	85 c0                	test   %eax,%eax
40d74a:	74 67                	je     0x40d7b3
40d74c:	68 d0 07 00 00       	push   $0x7d0
40d751:	50                   	push   %eax
40d752:	ff 15 2c e1 43 00    	call   *0x43e12c
40d758:	85 c0                	test   %eax,%eax
40d75a:	74 07                	je     0x40d763
40d75c:	3d 80 00 00 00       	cmp    $0x80,%eax
40d761:	75 50                	jne    0x40d7b3
40d763:	8b 8f f8 00 00 00    	mov    0xf8(%edi),%ecx
40d769:	2b 8f f0 00 00 00    	sub    0xf0(%edi),%ecx
40d76f:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
40d775:	1b 87 f4 00 00 00    	sbb    0xf4(%edi),%eax
40d77b:	78 42                	js     0x40d7bf
40d77d:	7f 08                	jg     0x40d787
40d77f:	81 f9 84 03 00 00    	cmp    $0x384,%ecx
40d785:	72 38                	jb     0x40d7bf
40d787:	51                   	push   %ecx
40d788:	8b cf                	mov    %edi,%ecx
40d78a:	e8 31 84 00 00       	call   0x415bc0
40d78f:	8b 95 bc df ff ff    	mov    -0x2044(%ebp),%edx
40d795:	84 c0                	test   %al,%al
40d797:	74 2c                	je     0x40d7c5
40d799:	8b 87 f8 00 00 00    	mov    0xf8(%edi),%eax
40d79f:	8b 8f fc 00 00 00    	mov    0xfc(%edi),%ecx
40d7a5:	89 87 f0 00 00 00    	mov    %eax,0xf0(%edi)
40d7ab:	89 8f f4 00 00 00    	mov    %ecx,0xf4(%edi)
40d7b1:	eb 12                	jmp    0x40d7c5
40d7b3:	c6 87 d1 00 00 00 00 	movb   $0x0,0xd1(%edi)
40d7ba:	e9 02 02 00 00       	jmp    0x40d9c1
40d7bf:	8b 95 bc df ff ff    	mov    -0x2044(%ebp),%edx
40d7c5:	8b 8d b8 df ff ff    	mov    -0x2048(%ebp),%ecx
40d7cb:	80 bf d0 00 00 00 00 	cmpb   $0x0,0xd0(%edi)
40d7d2:	74 2b                	je     0x40d7ff
40d7d4:	8b 37                	mov    (%edi),%esi
40d7d6:	6a 00                	push   $0x0