543536:	8b c6                	mov    %esi,%eax
543538:	89 8d 24 fe ff ff    	mov    %ecx,-0x1dc(%ebp)
54353e:	83 c4 08             	add    $0x8,%esp
543541:	0b c7                	or     %edi,%eax
543543:	0f 84 0b ff ff ff    	je     0x543454
543549:	8b c6                	mov    %esi,%eax
54354b:	23 c7                	and    %edi,%eax
54354d:	83 f8 ff             	cmp    $0xffffffff,%eax
543550:	75 07                	jne    0x543559
543552:	be 01 00 00 00       	mov    $0x1,%esi
543557:	33 ff                	xor    %edi,%edi
543559:	57                   	push   %edi
54355a:	56                   	push   %esi
54355b:	52                   	push   %edx
54355c:	51                   	push   %ecx
54355d:	e8 6e ec 09 00       	call   0x5e21d0
543562:	8b c8                	mov    %eax,%ecx
543564:	e8 37 e3 09 00       	call   0x5e18a0
543569:	83 ec 08             	sub    $0x8,%esp
54356c:	f2 0f 11 04 24       	movsd  %xmm0,(%esp)
543571:	e8 ca c3 fe ff       	call   0x52f940
543576:	83 c4 08             	add    $0x8,%esp
543579:	85 c0                	test   %eax,%eax
54357b:	0f 85 d3 fe ff ff    	jne    0x543454
543581:	8b 8d 5c fe ff ff    	mov    -0x1a4(%ebp),%ecx
543587:	ba 40 3e 00 00       	mov    $0x3e40,%edx
54358c:	66 8b 41 08          	mov    0x8(%ecx),%ax
543590:	66 23 c2             	and    %dx,%ax
543593:	f2 0f 11 01          	movsd  %xmm0,(%ecx)
543597:	66 83 c8 08          	or     $0x8,%ax
54359b:	66 89 41 08          	mov    %ax,0x8(%ecx)
54359f:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
5435a5:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5435ab:	83 c6 14             	add    $0x14,%esi
5435ae:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5435b4:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5435ba:	e9 f5 f2 ff ff       	jmp    0x5428b4
5435bf:	8b 46 04             	mov    0x4(%esi),%eax
5435c2:	85 c0                	test   %eax,%eax
5435c4:	0f 84 a8 f5 ff ff    	je     0x542b72
5435ca:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
5435d0:	8d 04 80             	lea    (%eax,%eax,4),%eax
5435d3:	6a 00                	push   $0x0
5435d5:	6a 00                	push   $0x0
5435d7:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
5435da:	50                   	push   %eax
5435db:	e8 30 84 00 00       	call   0x54ba10
5435e0:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5435e6:	83 c4 0c             	add    $0xc,%esp
5435e9:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5435ef:	83 c6 14             	add    $0x14,%esi
5435f2:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5435f8:	e9 b7 f2 ff ff       	jmp    0x5428b4
5435fd:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
543603:	8b bd 8c fe ff ff    	mov    -0x174(%ebp),%edi
543609:	8b 42 04             	mov    0x4(%edx),%eax
54360c:	8d 04 80             	lea    (%eax,%eax,4),%eax
54360f:	8d 1c c7             	lea    (%edi,%eax,8),%ebx
543612:	8b 42 08             	mov    0x8(%edx),%eax
543615:	8d 04 80             	lea    (%eax,%eax,4),%eax
543618:	8d 0c c7             	lea    (%edi,%eax,8),%ecx
54361b:	8b 42 0c             	mov    0xc(%edx),%eax
54361e:	8d 04 80             	lea    (%eax,%eax,4),%eax
543621:	8d 14 c7             	lea    (%edi,%eax,8),%edx
543624:	8a 41 08             	mov    0x8(%ecx),%al
543627:	0a 43 08             	or     0x8(%ebx),%al
54362a:	89 95 70 fe ff ff    	mov    %edx,-0x190(%ebp)
543630:	a8 01                	test   $0x1,%al
543632:	74 29                	je     0x54365d
543634:	52                   	push   %edx
543635:	e8 16 84 00 00       	call   0x54ba50
54363a:	83 c4 04             	add    $0x4,%esp
54363d:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543643:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
543649:	83 c6 14             	add    $0x14,%esi
54364c:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543652:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
543658:	e9 57 f2 ff ff       	jmp    0x5428b4
54365d:	51                   	push   %ecx
54365e:	e8 3d 70 00 00       	call   0x54a6a0
543663:	8b f8                	mov    %eax,%edi
543665:	8b f2                	mov    %edx,%esi
543667:	53                   	push   %ebx
543668:	89 bd d4 fd ff ff    	mov    %edi,-0x22c(%ebp)
54366e:	89 b5 d8 fd ff ff    	mov    %esi,-0x228(%ebp)
543674:	e8 27 70 00 00       	call   0x54a6a0
543679:	8b d8                	mov    %eax,%ebx
54367b:	83 c4 08             	add    $0x8,%esp
54367e:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
543684:	8a 08                	mov    (%eax),%cl
543686:	80 f9 65             	cmp    $0x65,%cl
543689:	75 09                	jne    0x543694
54368b:	23 fb                	and    %ebx,%edi
54368d:	23 f2                	and    %edx,%esi
54368f:	e9 9e 00 00 00       	jmp    0x543732
543694:	80 f9 66             	cmp    $0x66,%cl
543697:	75 09                	jne    0x5436a2
543699:	0b fb                	or     %ebx,%edi
54369b:	0b f2                	or     %edx,%esi
54369d:	e9 90 00 00 00       	jmp    0x543732
5436a2:	8b c3                	mov    %ebx,%eax
5436a4:	0b c2                	or     %edx,%eax
5436a6:	0f 84 86 00 00 00    	je     0x543732
5436ac:	85 d2                	test   %edx,%edx
5436ae:	7f 2a                	jg     0x5436da
5436b0:	7c 04                	jl     0x5436b6
5436b2:	85 db                	test   %ebx,%ebx
5436b4:	73 19                	jae    0x5436cf
5436b6:	b0 cf                	mov    $0xcf,%al
5436b8:	2a c1                	sub    %cl,%al
5436ba:	8a c8                	mov    %al,%cl
5436bc:	83 fa ff             	cmp    $0xffffffff,%edx
5436bf:	7c 19                	jl     0x5436da
5436c1:	7f 05                	jg     0x5436c8
5436c3:	83 fb c0             	cmp    $0xffffffc0,%ebx
5436c6:	76 12                	jbe    0x5436da
5436c8:	f7 db                	neg    %ebx
5436ca:	83 d2 00             	adc    $0x0,%edx
5436cd:	f7 da                	neg    %edx
5436cf:	85 d2                	test   %edx,%edx
5436d1:	7c 36                	jl     0x543709
5436d3:	7f 05                	jg     0x5436da
5436d5:	83 fb 40             	cmp    $0x40,%ebx
5436d8:	72 2f                	jb     0x543709
5436da:	85 f6                	test   %esi,%esi
5436dc:	7f 12                	jg     0x5436f0
5436de:	7c 04                	jl     0x5436e4
5436e0:	85 ff                	test   %edi,%edi
5436e2:	73 0c                	jae    0x5436f0
5436e4:	80 f9 67             	cmp    $0x67,%cl
5436e7:	74 07                	je     0x5436f0
5436e9:	83 cf ff             	or     $0xffffffff,%edi
5436ec:	0b f7                	or     %edi,%esi
5436ee:	eb 42                	jmp    0x543732
5436f0:	0f 57 c0             	xorps  %xmm0,%xmm0
5436f3:	66 0f 13 85 74 fe ff 	movlpd %xmm0,-0x18c(%ebp)
5436fa:	ff
5436fb:	8b b5 78 fe ff ff    	mov    -0x188(%ebp),%esi
543701:	8b bd 74 fe ff ff    	mov    -0x18c(%ebp),%edi
543707:	eb 29                	jmp    0x543732
543709:	f3 0f 7e 8d d4 fd ff 	movq   -0x22c(%ebp),%xmm1
543710:	ff
543711:	66 0f 6e c3          	movd   %ebx,%xmm0
543715:	80 f9 67             	cmp    $0x67,%cl
543718:	75 57                	jne    0x543771
54371a:	66 0f f3 c8          	psllq  %xmm0,%xmm1
54371e:	66 0f d6 8d 74 fe ff 	movq   %xmm1,-0x18c(%ebp)
543725:	ff
543726:	8b bd 74 fe ff ff    	mov    -0x18c(%ebp),%edi
54372c:	8b b5 78 fe ff ff    	mov    -0x188(%ebp),%esi
543732:	8b 8d 70 fe ff ff    	mov    -0x190(%ebp),%ecx
543738:	ba 40 3e 00 00       	mov    $0x3e40,%edx
54373d:	66 8b 41 08          	mov    0x8(%ecx),%ax
543741:	66 23 c2             	and    %dx,%ax
543744:	89 39                	mov    %edi,(%ecx)
543746:	66 83 c8 04          	or     $0x4,%ax
54374a:	89 71 04             	mov    %esi,0x4(%ecx)
54374d:	66 89 41 08          	mov    %ax,0x8(%ecx)
543751:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543757:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54375d:	83 c6 14             	add    $0x14,%esi
543760:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543766:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54376c:	e9 43 f1 ff ff       	jmp    0x5428b4
543771:	66 0f d3 c8          	psrlq  %xmm0,%xmm1
543775:	66 0f d6 8d 74 fe ff 	movq   %xmm1,-0x18c(%ebp)
54377c:	ff
54377d:	85 f6                	test   %esi,%esi
54377f:	7f a5                	jg     0x543726
543781:	7c 04                	jl     0x543787
543783:	85 ff                	test   %edi,%edi
543785:	73 9f                	jae    0x543726
543787:	b9 40 00 00 00       	mov    $0x40,%ecx
54378c:	83 c8 ff             	or     $0xffffffff,%eax
54378f:	2b cb                	sub    %ebx,%ecx
543791:	83 ca ff             	or     $0xffffffff,%edx
543794:	e8 f7 ea 09 00       	call   0x5e2290
543799:	8b bd 74 fe ff ff    	mov    -0x18c(%ebp),%edi
54379f:	8b b5 78 fe ff ff    	mov    -0x188(%ebp),%esi
5437a5:	0b f8                	or     %eax,%edi
5437a7:	0b f2                	or     %edx,%esi
5437a9:	eb 87                	jmp    0x543732
5437ab:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
5437b1:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
5437b7:	8b 42 04             	mov    0x4(%edx),%eax
5437ba:	8d 04 80             	lea    (%eax,%eax,4),%eax
5437bd:	8d 34 c1             	lea    (%ecx,%eax,8),%esi
5437c0:	56                   	push   %esi
5437c1:	e8 1a 7f 00 00       	call   0x54b6e0
5437c6:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5437cc:	83 c4 04             	add    $0x4,%esp
5437cf:	8b 40 08             	mov    0x8(%eax),%eax
5437d2:	99                   	cltd
5437d3:	01 06                	add    %eax,(%esi)
5437d5:	11 56 04             	adc    %edx,0x4(%esi)
5437d8:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
5437de:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5437e4:	83 c6 14             	add    $0x14,%esi
5437e7:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5437ed:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5437f3:	e9 bc f0 ff ff       	jmp    0x5428b4
5437f8:	8b 46 04             	mov    0x4(%esi),%eax
5437fb:	8b 95 8c fe ff ff    	mov    -0x174(%ebp),%edx
543801:	8d 04 80             	lea    (%eax,%eax,4),%eax
543804:	8d 34 c2             	lea    (%edx,%eax,8),%esi
543807:	0f b7 46 08          	movzwl 0x8(%esi),%eax
54380b:	a8 04                	test   $0x4,%al
54380d:	75 46                	jne    0x543855
54380f:	a8 08                	test   $0x8,%al
543811:	75 11                	jne    0x543824
543813:	a8 02                	test   $0x2,%al
543815:	74 1c                	je     0x543833
543817:	6a 01                	push   $0x1
543819:	56                   	push   %esi
54381a:	e8 31 03 fb ff       	call   0x4f3b50
54381f:	83 c4 08             	add    $0x8,%esp
543822:	eb 09                	jmp    0x54382d
543824:	56                   	push   %esi
543825:	e8 c6 6e 00 00       	call   0x54a6f0
54382a:	83 c4 04             	add    $0x4,%esp
54382d:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
543833:	0f b7 46 08          	movzwl 0x8(%esi),%eax
543837:	a8 04                	test   $0x4,%al
543839:	75 1a                	jne    0x543855
54383b:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543841:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
543845:	0f 85 d7 f0 ff ff    	jne    0x542922
54384b:	b8 14 00 00 00       	mov    $0x14,%eax
543850:	e9 a9 56 00 00       	jmp    0x548efe
543855:	25 40 3e 00 00       	and    $0x3e40,%eax
54385a:	83 c8 04             	or     $0x4,%eax
54385d:	66 89 46 08          	mov    %ax,0x8(%esi)
543861:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543867:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
54386d:	83 c6 14             	add    $0x14,%esi
543870:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
543876:	e9 39 f0 ff ff       	jmp    0x5428b4
54387b:	8b 46 04             	mov    0x4(%esi),%eax
54387e:	8b 95 8c fe ff ff    	mov    -0x174(%ebp),%edx
543884:	8d 04 80             	lea    (%eax,%eax,4),%eax
543887:	f6 44 c2 08 24       	testb  $0x24,0x8(%edx,%eax,8)
54388c:	8d 04 c2             	lea    (%edx,%eax,8),%eax
54388f:	0f 84 dd f2 ff ff    	je     0x542b72
543895:	50                   	push   %eax
543896:	e8 65 80 00 00       	call   0x54b900
54389b:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5438a1:	83 c4 04             	add    $0x4,%esp
5438a4:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5438aa:	83 c6 14             	add    $0x14,%esi
5438ad:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5438b3:	e9 fc ef ff ff       	jmp    0x5428b4
5438b8:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
5438be:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
5438c4:	8b 42 04             	mov    0x4(%edx),%eax
5438c7:	8d 04 80             	lea    (%eax,%eax,4),%eax
5438ca:	8d 34 c1             	lea    (%ecx,%eax,8),%esi
5438cd:	b8 00 40 00 00       	mov    $0x4000,%eax
5438d2:	66 85 46 08          	test   %ax,0x8(%esi)
5438d6:	74 11                	je     0x5438e9
5438d8:	56                   	push   %esi
5438d9:	e8 a2 7a 00 00       	call   0x54b380
5438de:	83 c4 04             	add    $0x4,%esp
5438e1:	85 c0                	test   %eax,%eax
5438e3:	0f 85 b7 59 00 00    	jne    0x5492a0
5438e9:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5438ef:	ff b5 60 fe ff ff    	push   -0x1a0(%ebp)
5438f5:	0f b6 40 08          	movzbl 0x8(%eax),%eax
5438f9:	50                   	push   %eax
5438fa:	56                   	push   %esi
5438fb:	e8 f0 78 00 00       	call   0x54b1f0
543900:	83 c4 0c             	add    $0xc,%esp
543903:	89 85 94 fe ff ff    	mov    %eax,-0x16c(%ebp)
543909:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54390f:	85 c0                	test   %eax,%eax
543911:	0f 85 ed 55 00 00    	jne    0x548f04
543917:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
54391d:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543923:	83 c6 14             	add    $0x14,%esi
543926:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54392c:	e9 83 ef ff ff       	jmp    0x5428b4
543931:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
543937:	8b bd 8c fe ff ff    	mov    -0x174(%ebp),%edi
54393d:	8b 42 04             	mov    0x4(%edx),%eax
543940:	8d 04 80             	lea    (%eax,%eax,4),%eax
543943:	8d 1c c7             	lea    (%edi,%eax,8),%ebx
543946:	8b 42 0c             	mov    0xc(%edx),%eax
543949:	8d 04 80             	lea    (%eax,%eax,4),%eax
54394c:	0f b7 54 c7 08       	movzwl 0x8(%edi,%eax,8),%edx
543951:	8d 34 c7             	lea    (%edi,%eax,8),%esi
543954:	0f b7 43 08          	movzwl 0x8(%ebx),%eax
543958:	8b ca                	mov    %edx,%ecx
54395a:	0b c8                	or     %eax,%ecx
54395c:	89 85 80 fe ff ff    	mov    %eax,-0x180(%ebp)
543962:	89 95 7c fe ff ff    	mov    %edx,-0x184(%ebp)
543968:	f6 c1 01             	test   $0x1,%cl
54396b:	0f 84 c9 00 00 00    	je     0x543a3a
543971:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
543977:	0f b7 40 02          	movzwl 0x2(%eax),%eax
54397b:	84 c0                	test   %al,%al
54397d:	79 43                	jns    0x5439c2
54397f:	8a ca                	mov    %dl,%cl
543981:	8a c1                	mov    %cl,%al
543983:	22 85 80 fe ff ff    	and    -0x180(%ebp),%al
543989:	a8 01                	test   $0x1,%al
54398b:	74 1e                	je     0x5439ab
54398d:	f7 c2 00 01 00 00    	test   $0x100,%edx
543993:	75 16                	jne    0x5439ab
543995:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
54399b:	33 c9                	xor    %ecx,%ecx
54399d:	0f b6 00             	movzbl (%eax),%eax
5439a0:	8a 80 8c 30 6b 00    	mov    0x6b308c(%eax),%al
5439a6:	e9 1d 01 00 00       	jmp    0x543ac8
5439ab:	f6 c1 01             	test   $0x1,%cl
5439ae:	b9 00 00 00 00       	mov    $0x0,%ecx
5439b3:	0f 94 c1             	sete   %cl
5439b6:	8d 0c 4d ff ff ff ff 	lea    -0x1(,%ecx,2),%ecx
5439bd:	e9 64 02 00 00       	jmp    0x543c26
5439c2:	a8 20                	test   $0x20,%al
5439c4:	74 4c                	je     0x543a12
5439c6:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5439cc:	ba 40 3e 00 00       	mov    $0x3e40,%edx
5439d1:	c7 85 2c fe ff ff 01 	movl   $0x1,-0x1d4(%ebp)
5439d8:	00 00 00
5439db:	8b 40 08             	mov    0x8(%eax),%eax
5439de:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
5439e1:	66 8b 44 cf 08       	mov    0x8(%edi,%ecx,8),%ax
5439e6:	66 23 c2             	and    %dx,%ax
5439e9:	66 83 c8 01          	or     $0x1,%ax
5439ed:	66 89 44 cf 08       	mov    %ax,0x8(%edi,%ecx,8)
5439f2:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
5439f8:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5439fe:	83 c6 14             	add    $0x14,%esi
543a01:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543a07:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
543a0d:	e9 a2 ee ff ff       	jmp    0x5428b4
543a12:	a8 10                	test   $0x10,%al
543a14:	0f 85 fc ee ff ff    	jne    0x542916
543a1a:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543a20:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
543a26:	83 c6 14             	add    $0x14,%esi
543a29:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543a2f:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
543a35:	e9 7a ee ff ff       	jmp    0x5428b4
543a3a:	8b bd 98 fe ff ff    	mov    -0x168(%ebp),%edi
543a40:	8a 47 02             	mov    0x2(%edi),%al
543a43:	24 47                	and    $0x47,%al
543a45:	3c 43                	cmp    $0x43,%al
543a47:	0f 82 3a 01 00 00    	jb     0x543b87
543a4d:	f6 c1 02             	test   $0x2,%cl
543a50:	74 38                	je     0x543a8a