547589:	ff 76 10             	push   0x10(%esi)
54758c:	e8 af 14 ff ff       	call   0x538a40
547591:	83 c4 08             	add    $0x8,%esp
547594:	85 c0                	test   %eax,%eax
547596:	74 29                	je     0x5475c1
547598:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
54759e:	ff b5 bc fd ff ff    	push   -0x244(%ebp)
5475a4:	ff b5 b8 fd ff ff    	push   -0x248(%ebp)
5475aa:	8b 40 0c             	mov    0xc(%eax),%eax
5475ad:	8d 04 80             	lea    (%eax,%eax,4),%eax
5475b0:	8d 04 c3             	lea    (%ebx,%eax,8),%eax
5475b3:	50                   	push   %eax
5475b4:	e8 57 44 00 00       	call   0x54ba10
5475b9:	83 c4 0c             	add    $0xc,%esp
5475bc:	e9 3e d9 ff ff       	jmp    0x544eff
5475c1:	56                   	push   %esi
5475c2:	e8 89 44 00 00       	call   0x54ba50
5475c7:	83 c4 04             	add    $0x4,%esp
5475ca:	e9 8f 11 00 00       	jmp    0x54875e
5475cf:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
5475d5:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
5475db:	8b 42 04             	mov    0x4(%edx),%eax
5475de:	8d 04 80             	lea    (%eax,%eax,4),%eax
5475e1:	f6 44 c1 08 10       	testb  $0x10,0x8(%ecx,%eax,8)
5475e6:	8d 34 c1             	lea    (%ecx,%eax,8),%esi
5475e9:	8b 42 0c             	mov    0xc(%edx),%eax
5475ec:	8d 1c 80             	lea    (%eax,%eax,4),%ebx
5475ef:	8b 42 10             	mov    0x10(%edx),%eax
5475f2:	89 85 70 fe ff ff    	mov    %eax,-0x190(%ebp)
5475f8:	75 17                	jne    0x547611
5475fa:	56                   	push   %esi
5475fb:	e8 80 44 00 00       	call   0x54ba80
547600:	83 c4 04             	add    $0x4,%esp
547603:	85 c0                	test   %eax,%eax
547605:	0f 85 c9 19 00 00    	jne    0x548fd4
54760b:	8b 85 70 fe ff ff    	mov    -0x190(%ebp),%eax
547611:	8b bd 8c fe ff ff    	mov    -0x174(%ebp),%edi
547617:	85 c0                	test   %eax,%eax
547619:	74 23                	je     0x54763e
54761b:	ff 74 df 04          	push   0x4(%edi,%ebx,8)
54761f:	ff 34 df             	push   (%edi,%ebx,8)
547622:	50                   	push   %eax
547623:	ff 76 10             	push   0x10(%esi)
547626:	e8 75 14 ff ff       	call   0x538aa0
54762b:	83 c4 10             	add    $0x10,%esp
54762e:	85 c0                	test   %eax,%eax
547630:	0f 85 6b 0f 00 00    	jne    0x5485a1
547636:	8b 85 70 fe ff ff    	mov    -0x190(%ebp),%eax
54763c:	85 c0                	test   %eax,%eax
54763e:	0f 88 22 b5 ff ff    	js     0x542b66
547644:	e9 eb fe ff ff       	jmp    0x547534
547649:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
54764f:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
547655:	8b 42 0c             	mov    0xc(%edx),%eax
547658:	8b 72 10             	mov    0x10(%edx),%esi
54765b:	89 b5 5c fe ff ff    	mov    %esi,-0x1a4(%ebp)
547661:	8d 04 80             	lea    (%eax,%eax,4),%eax
547664:	8d 0c c1             	lea    (%ecx,%eax,8),%ecx
547667:	8b c2                	mov    %edx,%eax
547669:	8b 95 9c fe ff ff    	mov    -0x164(%ebp),%edx
54766f:	89 8d 88 fe ff ff    	mov    %ecx,-0x178(%ebp)
547675:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
54767a:	74 2a                	je     0x5476a6
54767c:	8b 82 c8 00 00 00    	mov    0xc8(%edx),%eax
547682:	8b 4e 14             	mov    0x14(%esi),%ecx
547685:	85 c0                	test   %eax,%eax
547687:	74 17                	je     0x5476a0
547689:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
547690:	39 48 1c             	cmp    %ecx,0x1c(%eax)
547693:	0f 84 cc 15 00 00    	je     0x548c65
547699:	8b 40 04             	mov    0x4(%eax),%eax
54769c:	85 c0                	test   %eax,%eax
54769e:	75 f0                	jne    0x547690
5476a0:	8b 8d 88 fe ff ff    	mov    -0x178(%ebp),%ecx
5476a6:	8b 82 d0 00 00 00    	mov    0xd0(%edx),%eax
5476ac:	3b 87 94 00 00 00    	cmp    0x94(%edi),%eax
5476b2:	0f 8d 33 18 00 00    	jge    0x548eeb
5476b8:	f6 41 08 10          	testb  $0x10,0x8(%ecx)
5476bc:	0f 85 c9 01 00 00    	jne    0x54788b
5476c2:	8b 4e 0c             	mov    0xc(%esi),%ecx
5476c5:	8b 46 08             	mov    0x8(%esi),%eax
5476c8:	03 c1                	add    %ecx,%eax
5476ca:	85 c9                	test   %ecx,%ecx
5476cc:	8d 70 01             	lea    0x1(%eax),%esi
5476cf:	0f 45 f0             	cmovne %eax,%esi
5476d2:	8d 46 02             	lea    0x2(%esi),%eax
5476d5:	8d 04 80             	lea    (%eax,%eax,4),%eax
5476d8:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
5476db:	8b 85 5c fe ff ff    	mov    -0x1a4(%ebp),%eax
5476e1:	8b 40 04             	mov    0x4(%eax),%eax
5476e4:	83 c0 07             	add    $0x7,%eax
5476e7:	8b c0                	mov    %eax,%eax
5476e9:	85 c0                	test   %eax,%eax
5476eb:	79 03                	jns    0x5476f0
5476ed:	83 c0 07             	add    $0x7,%eax
5476f0:	c1 f8 03             	sar    $0x3,%eax
5476f3:	8d 04 88             	lea    (%eax,%ecx,4),%eax
5476f6:	89 85 78 fe ff ff    	mov    %eax,-0x188(%ebp)
5476fc:	99                   	cltd
5476fd:	52                   	push   %edx
5476fe:	50                   	push   %eax
5476ff:	57                   	push   %edi
547700:	e8 1b 9e fd ff       	call   0x521520
547705:	8b d8                	mov    %eax,%ebx
547707:	83 c4 0c             	add    $0xc,%esp
54770a:	85 db                	test   %ebx,%ebx
54770c:	0f 84 c2 18 00 00    	je     0x548fd4
547712:	ff b5 88 fe ff ff    	push   -0x178(%ebp)
547718:	e8 53 42 00 00       	call   0x54b970
54771d:	8b 8d 88 fe ff ff    	mov    -0x178(%ebp),%ecx
547723:	b8 10 04 00 00       	mov    $0x410,%eax
547728:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
54772e:	83 c4 04             	add    $0x4,%esp
547731:	2b 95 64 fe ff ff    	sub    -0x19c(%ebp),%edx
547737:	66 89 41 08          	mov    %ax,0x8(%ecx)
54773b:	8b 85 78 fe ff ff    	mov    -0x188(%ebp),%eax
547741:	89 41 0c             	mov    %eax,0xc(%ecx)
547744:	8b 85 9c fe ff ff    	mov    -0x164(%ebp),%eax
54774a:	89 59 10             	mov    %ebx,0x10(%ecx)
54774d:	c7 41 24 e0 9e 54 00 	movl   $0x549ee0,0x24(%ecx)
547754:	8b 8d 5c fe ff ff    	mov    -0x1a4(%ebp),%ecx
54775a:	89 03                	mov    %eax,(%ebx)
54775c:	89 73 3c             	mov    %esi,0x3c(%ebx)
54775f:	8b 41 0c             	mov    0xc(%ecx),%eax
547762:	89 43 40             	mov    %eax,0x40(%ebx)
547765:	b8 67 66 66 66       	mov    $0x66666667,%eax
54776a:	f7 ea                	imul   %edx
54776c:	c1 fa 03             	sar    $0x3,%edx
54776f:	8b c2                	mov    %edx,%eax
547771:	c1 e8 1f             	shr    $0x1f,%eax
547774:	03 c2                	add    %edx,%eax
547776:	8b 95 9c fe ff ff    	mov    -0x164(%ebp),%edx
54777c:	89 43 30             	mov    %eax,0x30(%ebx)
54777f:	8b 42 58             	mov    0x58(%edx),%eax
547782:	89 43 10             	mov    %eax,0x10(%ebx)
547785:	8b 42 18             	mov    0x18(%edx),%eax
547788:	89 43 38             	mov    %eax,0x38(%ebx)
54778b:	8b 42 60             	mov    0x60(%edx),%eax
54778e:	89 43 14             	mov    %eax,0x14(%ebx)
547791:	8b 42 1c             	mov    0x1c(%edx),%eax
547794:	89 43 2c             	mov    %eax,0x2c(%ebx)
547797:	8b 42 68             	mov    0x68(%edx),%eax
54779a:	89 43 08             	mov    %eax,0x8(%ebx)
54779d:	8b 42 6c             	mov    0x6c(%edx),%eax
5477a0:	89 43 34             	mov    %eax,0x34(%ebx)
5477a3:	8b 41 14             	mov    0x14(%ecx),%eax
5477a6:	89 43 1c             	mov    %eax,0x1c(%ebx)
5477a9:	8d 46 02             	lea    0x2(%esi),%eax
5477ac:	8d 04 80             	lea    (%eax,%eax,4),%eax
5477af:	8d 0c c3             	lea    (%ebx,%eax,8),%ecx
5477b2:	8d 43 50             	lea    0x50(%ebx),%eax
5477b5:	3b c1                	cmp    %ecx,%eax
5477b7:	74 15                	je     0x5477ce
5477b9:	be 80 00 00 00       	mov    $0x80,%esi
5477be:	66 90                	xchg   %ax,%ax
5477c0:	66 89 70 08          	mov    %si,0x8(%eax)
5477c4:	89 78 20             	mov    %edi,0x20(%eax)
5477c7:	83 c0 28             	add    $0x28,%eax
5477ca:	3b c1                	cmp    %ecx,%eax
5477cc:	75 f2                	jne    0x5477c0
5477ce:	8b b5 5c fe ff ff    	mov    -0x1a4(%ebp),%esi
5477d4:	ff 82 d0 00 00 00    	incl   0xd0(%edx)
5477da:	8d 4b 50             	lea    0x50(%ebx),%ecx
5477dd:	8b 82 c8 00 00 00    	mov    0xc8(%edx),%eax
5477e3:	89 43 04             	mov    %eax,0x4(%ebx)
5477e6:	8b 47 28             	mov    0x28(%edi),%eax
5477e9:	89 43 20             	mov    %eax,0x20(%ebx)
5477ec:	8b 47 2c             	mov    0x2c(%edi),%eax
5477ef:	89 43 24             	mov    %eax,0x24(%ebx)
5477f2:	8b 42 2c             	mov    0x2c(%edx),%eax
5477f5:	89 43 44             	mov    %eax,0x44(%ebx)
5477f8:	8b 02                	mov    (%edx),%eax
5477fa:	89 8d 8c fe ff ff    	mov    %ecx,-0x174(%ebp)
547800:	8b 40 64             	mov    0x64(%eax),%eax
547803:	89 43 48             	mov    %eax,0x48(%ebx)
547806:	8b 82 dc 00 00 00    	mov    0xdc(%edx),%eax
54780c:	89 43 28             	mov    %eax,0x28(%ebx)
54780f:	89 4a 58             	mov    %ecx,0x58(%edx)
547812:	c7 82 dc 00 00 00 00 	movl   $0x0,0xdc(%edx)
547819:	00 00 00
54781c:	c7 42 2c 00 00 00 00 	movl   $0x0,0x2c(%edx)
547823:	89 9a c8 00 00 00    	mov    %ebx,0xc8(%edx)
547829:	8b 43 3c             	mov    0x3c(%ebx),%eax
54782c:	89 42 18             	mov    %eax,0x18(%edx)
54782f:	0f b7 43 40          	movzwl 0x40(%ebx),%eax
547833:	89 42 1c             	mov    %eax,0x1c(%edx)
547836:	8b 42 18             	mov    0x18(%edx),%eax
547839:	8d 04 80             	lea    (%eax,%eax,4),%eax
54783c:	8d 0c c1             	lea    (%ecx,%eax,8),%ecx
54783f:	89 4a 60             	mov    %ecx,0x60(%edx)
547842:	8b 46 0c             	mov    0xc(%esi),%eax
547845:	8d 0c 81             	lea    (%ecx,%eax,4),%ecx
547848:	89 4b 18             	mov    %ecx,0x18(%ebx)
54784b:	8b 46 04             	mov    0x4(%esi),%eax
54784e:	83 c0 07             	add    $0x7,%eax
547851:	99                   	cltd
547852:	83 e2 07             	and    $0x7,%edx
547855:	03 c2                	add    %edx,%eax
547857:	c1 f8 03             	sar    $0x3,%eax
54785a:	50                   	push   %eax
54785b:	6a 00                	push   $0x0
54785d:	51                   	push   %ecx
54785e:	e8 9d c1 09 00       	call   0x5e3a00
547863:	8b 16                	mov    (%esi),%edx
547865:	83 c4 0c             	add    $0xc,%esp
547868:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54786e:	89 95 64 fe ff ff    	mov    %edx,-0x19c(%ebp)
547874:	89 51 68             	mov    %edx,0x68(%ecx)
547877:	8b 46 04             	mov    0x4(%esi),%eax
54787a:	8d 72 ec             	lea    -0x14(%edx),%esi
54787d:	89 41 6c             	mov    %eax,0x6c(%ecx)
547880:	89 b5 98 fe ff ff    	mov    %esi,-0x168(%ebp)
547886:	e9 80 d6 ff ff       	jmp    0x544f0b
54788b:	8b 59 10             	mov    0x10(%ecx),%ebx
54788e:	e9 41 ff ff ff       	jmp    0x5477d4
547893:	ff b5 98 fe ff ff    	push   -0x168(%ebp)
547899:	51                   	push   %ecx
54789a:	e8 f1 47 fc ff       	call   0x50c090
54789f:	8b f0                	mov    %eax,%esi
5478a1:	8b 85 9c fe ff ff    	mov    -0x164(%ebp),%eax
5478a7:	68 00 10 00 00       	push   $0x1000
5478ac:	8b 80 c8 00 00 00    	mov    0xc8(%eax),%eax
5478b2:	8b 48 30             	mov    0x30(%eax),%ecx
5478b5:	8d 14 89             	lea    (%ecx,%ecx,4),%edx
5478b8:	8b 48 08             	mov    0x8(%eax),%ecx
5478bb:	8b 40 10             	mov    0x10(%eax),%eax
5478be:	8b 4c 91 04          	mov    0x4(%ecx,%edx,4),%ecx
5478c2:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
5478c8:	03 4a 04             	add    0x4(%edx),%ecx
5478cb:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
5478ce:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
5478d1:	50                   	push   %eax
5478d2:	56                   	push   %esi
5478d3:	e8 48 44 00 00       	call   0x54bd20
5478d8:	83 c4 14             	add    $0x14,%esp
5478db:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
5478e1:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5478e7:	83 c6 14             	add    $0x14,%esi
5478ea:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5478f0:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5478f6:	e9 b9 af ff ff       	jmp    0x5428b4
5478fb:	8b 47 20             	mov    0x20(%edi),%eax
5478fe:	25 00 00 08 00       	and    $0x80000,%eax
547903:	83 c8 00             	or     $0x0,%eax
547906:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
54790c:	8b f0                	mov    %eax,%esi
54790e:	74 24                	je     0x547934
547910:	8b 40 08             	mov    0x8(%eax),%eax
547913:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
547919:	99                   	cltd
54791a:	01 87 f0 01 00 00    	add    %eax,0x1f0(%edi)
547920:	11 97 f4 01 00 00    	adc    %edx,0x1f4(%edi)
547926:	83 c6 14             	add    $0x14,%esi
547929:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
54792f:	e9 80 af ff ff       	jmp    0x5428b4
547934:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
547938:	8b 40 08             	mov    0x8(%eax),%eax
54793b:	99                   	cltd
54793c:	74 20                	je     0x54795e
54793e:	01 87 e8 01 00 00    	add    %eax,0x1e8(%edi)
547944:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54794a:	11 97 ec 01 00 00    	adc    %edx,0x1ec(%edi)
547950:	83 c6 14             	add    $0x14,%esi
547953:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
547959:	e9 56 af ff ff       	jmp    0x5428b4
54795e:	01 41 40             	add    %eax,0x40(%ecx)
547961:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
547967:	11 51 44             	adc    %edx,0x44(%ecx)
54796a:	83 c6 14             	add    $0x14,%esi
54796d:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
547973:	e9 3c af ff ff       	jmp    0x5428b4
547978:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
54797c:	74 0e                	je     0x54798c
54797e:	8b 87 e8 01 00 00    	mov    0x1e8(%edi),%eax
547984:	0b 87 ec 01 00 00    	or     0x1ec(%edi),%eax
54798a:	eb 06                	jmp    0x547992
54798c:	8b 41 40             	mov    0x40(%ecx),%eax
54798f:	0b 41 44             	or     0x44(%ecx),%eax
547992:	0f 85 da b1 ff ff    	jne    0x542b72
547998:	8b 87 f0 01 00 00    	mov    0x1f0(%edi),%eax
54799e:	0b 87 f4 01 00 00    	or     0x1f4(%edi),%eax
5479a4:	0f 84 78 af ff ff    	je     0x542922
5479aa:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5479b0:	83 c6 14             	add    $0x14,%esi
5479b3:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5479b9:	e9 f6 ae ff ff       	jmp    0x5428b4
5479be:	8b 91 c8 00 00 00    	mov    0xc8(%ecx),%edx
5479c4:	85 d2                	test   %edx,%edx
5479c6:	74 2b                	je     0x5479f3
5479c8:	8b 42 04             	mov    0x4(%edx),%eax
5479cb:	85 c0                	test   %eax,%eax
5479cd:	74 0a                	je     0x5479d9
5479cf:	90                   	nop
5479d0:	8b d0                	mov    %eax,%edx
5479d2:	8b 42 04             	mov    0x4(%edx),%eax
5479d5:	85 c0                	test   %eax,%eax
5479d7:	75 f7                	jne    0x5479d0
5479d9:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5479df:	8b 9d 8c fe ff ff    	mov    -0x174(%ebp),%ebx
5479e5:	8b 40 04             	mov    0x4(%eax),%eax
5479e8:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
5479eb:	8b 42 10             	mov    0x10(%edx),%eax
5479ee:	8d 3c c8             	lea    (%eax,%ecx,8),%edi
5479f1:	eb 15                	jmp    0x547a08
5479f3:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
5479f9:	8b 9d 8c fe ff ff    	mov    -0x174(%ebp),%ebx
5479ff:	8b 42 04             	mov    0x4(%edx),%eax
547a02:	8d 04 80             	lea    (%eax,%eax,4),%eax
547a05:	8d 3c c3             	lea    (%ebx,%eax,8),%edi
547a08:	57                   	push   %edi
547a09:	e8 d2 3c 00 00       	call   0x54b6e0
547a0e:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
547a14:	8b 40 08             	mov    0x8(%eax),%eax
547a17:	8d 04 80             	lea    (%eax,%eax,4),%eax
547a1a:	8d 34 c3             	lea    (%ebx,%eax,8),%esi
547a1d:	56                   	push   %esi
547a1e:	e8 bd 3c 00 00       	call   0x54b6e0
547a23:	8b 4e 04             	mov    0x4(%esi),%ecx
547a26:	83 c4 08             	add    $0x8,%esp
547a29:	8b 06                	mov    (%esi),%eax
547a2b:	39 4f 04             	cmp    %ecx,0x4(%edi)
547a2e:	0f 8f 32 b1 ff ff    	jg     0x542b66
547a34:	7c 08                	jl     0x547a3e
547a36:	39 07                	cmp    %eax,(%edi)
547a38:	0f 83 28 b1 ff ff    	jae    0x542b66
547a3e:	89 07                	mov    %eax,(%edi)
547a40:	89 4f 04             	mov    %ecx,0x4(%edi)
547a43:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
547a49:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
547a4f:	83 c6 14             	add    $0x14,%esi
547a52:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
547a58:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
547a5e:	e9 51 ae ff ff       	jmp    0x5428b4
547a63:	8b bd 98 fe ff ff    	mov    -0x168(%ebp),%edi
547a69:	8b 9d 8c fe ff ff    	mov    -0x174(%ebp),%ebx
547a6f:	8b 47 04             	mov    0x4(%edi),%eax
547a72:	8d 34 80             	lea    (%eax,%eax,4),%esi
547a75:	8b 7c f3 04          	mov    0x4(%ebx,%esi,8),%edi
547a79:	8b 0c f3             	mov    (%ebx,%esi,8),%ecx
547a7c:	85 ff                	test   %edi,%edi
547a7e:	0f 8c e2 b0 ff ff    	jl     0x542b66
547a84:	7f 08                	jg     0x547a8e
547a86:	85 c9                	test   %ecx,%ecx
547a88:	0f 84 d8 b0 ff ff    	je     0x542b66
547a8e:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
547a94:	8b 40 0c             	mov    0xc(%eax),%eax
547a97:	99                   	cltd
547a98:	2b c8                	sub    %eax,%ecx
547a9a:	89 0c f3             	mov    %ecx,(%ebx,%esi,8)
547a9d:	1b fa                	sbb    %edx,%edi