5501da:	8b 7d bc             	mov    -0x44(%ebp),%edi
5501dd:	8b 73 5c             	mov    0x5c(%ebx),%esi
5501e0:	83 ee 01             	sub    $0x1,%esi
5501e3:	78 19                	js     0x5501fe
5501e5:	8b 5d a8             	mov    -0x58(%ebp),%ebx
5501e8:	56                   	push   %esi
5501e9:	53                   	push   %ebx
5501ea:	50                   	push   %eax
5501eb:	e8 a0 ee fa ff       	call   0x4ff090
5501f0:	8b 45 d8             	mov    -0x28(%ebp),%eax
5501f3:	83 c4 0c             	add    $0xc,%esp
5501f6:	83 ee 01             	sub    $0x1,%esi
5501f9:	79 ed                	jns    0x5501e8
5501fb:	8b 5d ac             	mov    -0x54(%ebp),%ebx
5501fe:	8b 45 c4             	mov    -0x3c(%ebp),%eax
550201:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
550205:	0f 85 fc 00 00 00    	jne    0x550307
55020b:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
55020e:	83 79 0c 00          	cmpl   $0x0,0xc(%ecx)
550212:	7e 5e                	jle    0x550272
550214:	33 d2                	xor    %edx,%edx
550216:	33 ff                	xor    %edi,%edi
550218:	89 55 b8             	mov    %edx,-0x48(%ebp)
55021b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
550220:	8b 71 14             	mov    0x14(%ecx),%esi
550223:	03 f2                	add    %edx,%esi
550225:	f6 46 0a 02          	testb  $0x2,0xa(%esi)
550229:	75 38                	jne    0x550263
55022b:	8b 46 28             	mov    0x28(%esi),%eax
55022e:	0b 46 2c             	or     0x2c(%esi),%eax
550231:	75 30                	jne    0x550263
550233:	39 45 c0             	cmp    %eax,-0x40(%ebp)
550236:	74 0e                	je     0x550246
550238:	ff 36                	push   (%esi)
55023a:	e8 81 0c fb ff       	call   0x500ec0
55023f:	83 c4 04             	add    $0x4,%esp
550242:	85 c0                	test   %eax,%eax
550244:	74 17                	je     0x55025d
550246:	6a 10                	push   $0x10
550248:	ff 73 20             	push   0x20(%ebx)
55024b:	ff 36                	push   (%esi)
55024d:	ff 75 dc             	push   -0x24(%ebp)
550250:	e8 5b 68 fd ff       	call   0x526ab0
550255:	83 c4 10             	add    $0x10,%esp
550258:	66 83 4e 0a 04       	orw    $0x4,0xa(%esi)
55025d:	8b 55 b8             	mov    -0x48(%ebp),%edx
550260:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
550263:	47                   	inc    %edi
550264:	83 c2 30             	add    $0x30,%edx
550267:	89 55 b8             	mov    %edx,-0x48(%ebp)
55026a:	3b 79 0c             	cmp    0xc(%ecx),%edi
55026d:	7c b1                	jl     0x550220
55026f:	8b 7d bc             	mov    -0x44(%ebp),%edi
550272:	8b 45 d0             	mov    -0x30(%ebp),%eax
550275:	8b 75 d4             	mov    -0x2c(%ebp),%esi
550278:	25 00 01 00 00       	and    $0x100,%eax
55027d:	89 45 9c             	mov    %eax,-0x64(%ebp)
550280:	74 2d                	je     0x5502af
550282:	56                   	push   %esi
550283:	8d 43 50             	lea    0x50(%ebx),%eax
550286:	50                   	push   %eax
550287:	ff 75 d8             	push   -0x28(%ebp)
55028a:	ff 75 dc             	push   -0x24(%ebp)
55028d:	e8 6e 78 fb ff       	call   0x507b00
550292:	83 c4 10             	add    $0x10,%esp
550295:	85 c0                	test   %eax,%eax
550297:	74 06                	je     0x55029f
550299:	c6 43 2f 01          	movb   $0x1,0x2f(%ebx)
55029d:	eb 10                	jmp    0x5502af
55029f:	85 ff                	test   %edi,%edi
5502a1:	75 0c                	jne    0x5502af
5502a3:	b8 80 00 00 00       	mov    $0x80,%eax
5502a8:	89 73 08             	mov    %esi,0x8(%ebx)
5502ab:	66 09 43 28          	or     %ax,0x28(%ebx)
5502af:	83 7d c0 01          	cmpl   $0x1,-0x40(%ebp)
5502b3:	75 10                	jne    0x5502c5
5502b5:	8d 45 e0             	lea    -0x20(%ebp),%eax
5502b8:	50                   	push   %eax
5502b9:	e8 22 49 01 00       	call   0x564be0
5502be:	83 c4 04             	add    $0x4,%esp
5502c1:	85 c0                	test   %eax,%eax
5502c3:	75 6d                	jne    0x550332
5502c5:	8d 45 e0             	lea    -0x20(%ebp),%eax
5502c8:	50                   	push   %eax
5502c9:	e8 d2 0a 01 00       	call   0x560da0
5502ce:	83 c4 04             	add    $0x4,%esp
5502d1:	85 c0                	test   %eax,%eax
5502d3:	75 32                	jne    0x550307
5502d5:	50                   	push   %eax
5502d6:	53                   	push   %ebx
5502d7:	e8 34 39 01 00       	call   0x563c10
5502dc:	8b 7d c4             	mov    -0x3c(%ebp),%edi
5502df:	83 c4 08             	add    $0x8,%esp
5502e2:	80 7f 51 00          	cmpb   $0x0,0x51(%edi)
5502e6:	75 1f                	jne    0x550307
5502e8:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
5502ec:	74 4d                	je     0x55033b
5502ee:	66 8b 43 34          	mov    0x34(%ebx),%ax
5502f2:	66 40                	inc    %ax
5502f4:	0f b7 c0             	movzwl %ax,%eax
5502f7:	50                   	push   %eax
5502f8:	53                   	push   %ebx
5502f9:	e8 12 39 01 00       	call   0x563c10
5502fe:	83 c4 08             	add    $0x8,%esp
550301:	80 7f 51 00          	cmpb   $0x0,0x51(%edi)
550305:	74 2e                	je     0x550335
550307:	8b 4d dc             	mov    -0x24(%ebp),%ecx
55030a:	8b 43 24             	mov    0x24(%ebx),%eax
55030d:	53                   	push   %ebx
55030e:	ff 75 c4             	push   -0x3c(%ebp)
550311:	89 81 84 00 00 00    	mov    %eax,0x84(%ecx)
550317:	e8 b4 05 01 00       	call   0x5608d0
55031c:	83 c4 08             	add    $0x8,%esp
55031f:	5f                   	pop    %edi
550320:	5e                   	pop    %esi
550321:	33 c0                	xor    %eax,%eax
550323:	5b                   	pop    %ebx
550324:	8b 4d fc             	mov    -0x4(%ebp),%ecx
550327:	33 cd                	xor    %ebp,%ecx
550329:	e8 ac 11 09 00       	call   0x5e14da
55032e:	8b e5                	mov    %ebp,%esp
550330:	5d                   	pop    %ebp
550331:	c3                   	ret
550332:	8b 7d c4             	mov    -0x3c(%ebp),%edi
550335:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
550339:	75 1b                	jne    0x550356
55033b:	8b 47 20             	mov    0x20(%edi),%eax
55033e:	25 00 10 00 00       	and    $0x1000,%eax
550343:	83 c8 00             	or     $0x0,%eax
550346:	74 0e                	je     0x550356
550348:	c7 43 48 ff ff ff ff 	movl   $0xffffffff,0x48(%ebx)
55034f:	c7 43 4c ff ff ff ff 	movl   $0xffffffff,0x4c(%ebx)
550356:	8b 45 dc             	mov    -0x24(%ebp),%eax
550359:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
55035d:	75 a8                	jne    0x550307
55035f:	80 7f 51 00          	cmpb   $0x0,0x51(%edi)
550363:	75 a2                	jne    0x550307
550365:	80 7b 2c 02          	cmpb   $0x2,0x2c(%ebx)
550369:	c7 45 bc ff ff ff ff 	movl   $0xffffffff,-0x44(%ebp)
550370:	c7 45 b8 ff ff ff ff 	movl   $0xffffffff,-0x48(%ebp)
550377:	0f 82 8a 01 00 00    	jb     0x550507
55037d:	85 f6                	test   %esi,%esi
55037f:	0f 84 82 01 00 00    	je     0x550507
550385:	b8 00 01 00 00       	mov    $0x100,%eax
55038a:	66 85 47 4c          	test   %ax,0x4c(%edi)
55038e:	0f 85 73 01 00 00    	jne    0x550507
550394:	56                   	push   %esi
550395:	8d b3 e8 01 00 00    	lea    0x1e8(%ebx),%esi
55039b:	56                   	push   %esi
55039c:	e8 6f 37 00 00       	call   0x553b10
5503a1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
5503a4:	83 c4 08             	add    $0x8,%esp
5503a7:	89 55 d4             	mov    %edx,-0x2c(%ebp)
5503aa:	8b f8                	mov    %eax,%edi
5503ac:	89 7d a0             	mov    %edi,-0x60(%ebp)
5503af:	85 c9                	test   %ecx,%ecx
5503b1:	74 12                	je     0x5503c5
5503b3:	51                   	push   %ecx
5503b4:	56                   	push   %esi
5503b5:	e8 56 37 00 00       	call   0x553b10
5503ba:	0b f8                	or     %eax,%edi
5503bc:	83 c4 08             	add    $0x8,%esp
5503bf:	09 55 d4             	or     %edx,-0x2c(%ebp)
5503c2:	89 7d a0             	mov    %edi,-0x60(%ebp)
5503c5:	0f b6 73 2c          	movzbl 0x2c(%ebx),%esi
5503c9:	4e                   	dec    %esi
5503ca:	89 75 a8             	mov    %esi,-0x58(%ebp)
5503cd:	83 fe 01             	cmp    $0x1,%esi
5503d0:	0f 8c 31 01 00 00    	jl     0x550507
5503d6:	6b c6 58             	imul   $0x58,%esi,%eax
5503d9:	05 48 03 00 00       	add    $0x348,%eax
5503de:	03 c3                	add    %ebx,%eax
5503e0:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5503e3:	8b 50 f0             	mov    -0x10(%eax),%edx
5503e6:	89 55 94             	mov    %edx,-0x6c(%ebp)
5503e9:	0f b6 42 10          	movzbl 0x10(%edx),%eax
5503ed:	8d 0c c0             	lea    (%eax,%eax,8),%ecx
5503f0:	8b 43 04             	mov    0x4(%ebx),%eax
5503f3:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
5503f6:	83 c0 08             	add    $0x8,%eax
5503f9:	89 45 98             	mov    %eax,-0x68(%ebp)
5503fc:	f6 40 24 08          	testb  $0x8,0x24(%eax)
550400:	0f 84 eb 00 00 00    	je     0x5504f1
550406:	66 83 7d 9c 00       	cmpw   $0x0,-0x64(%ebp)
55040b:	75 0d                	jne    0x55041a
55040d:	f7 42 24 00 10 00 00 	testl  $0x1000,0x24(%edx)
550414:	0f 84 d7 00 00 00    	je     0x5504f1
55041a:	8b 42 08             	mov    0x8(%edx),%eax
55041d:	8b c8                	mov    %eax,%ecx
55041f:	8b 52 0c             	mov    0xc(%edx),%edx
550422:	23 cf                	and    %edi,%ecx
550424:	89 45 a4             	mov    %eax,-0x5c(%ebp)
550427:	8b c2                	mov    %edx,%eax
550429:	23 45 d4             	and    -0x2c(%ebp),%eax
55042c:	0b c8                	or     %eax,%ecx
55042e:	89 55 cc             	mov    %edx,-0x34(%ebp)
550431:	0f 85 ba 00 00 00    	jne    0x5504f1
550437:	8b 45 e4             	mov    -0x1c(%ebp),%eax
55043a:	8b 50 14             	mov    0x14(%eax),%edx
55043d:	8b f2                	mov    %edx,%esi
55043f:	8b 40 0c             	mov    0xc(%eax),%eax
550442:	8d 3c 40             	lea    (%eax,%eax,2),%edi
550445:	c1 e7 04             	shl    $0x4,%edi
550448:	03 fa                	add    %edx,%edi
55044a:	3b f7                	cmp    %edi,%esi
55044c:	73 33                	jae    0x550481
55044e:	66 90                	xchg   %ax,%ax
550450:	8b 4e 28             	mov    0x28(%esi),%ecx
550453:	8b 46 2c             	mov    0x2c(%esi),%eax
550456:	23 4d a4             	and    -0x5c(%ebp),%ecx
550459:	23 45 cc             	and    -0x34(%ebp),%eax
55045c:	0b c8                	or     %eax,%ecx
55045e:	74 14                	je     0x550474
550460:	8b 06                	mov    (%esi),%eax
550462:	f6 40 04 01          	testb  $0x1,0x4(%eax)
550466:	74 15                	je     0x55047d
550468:	8b 4d 98             	mov    -0x68(%ebp),%ecx
55046b:	0f bf 40 24          	movswl 0x24(%eax),%eax
55046f:	3b 41 2c             	cmp    0x2c(%ecx),%eax
550472:	75 09                	jne    0x55047d
550474:	83 c6 30             	add    $0x30,%esi
550477:	3b f7                	cmp    %edi,%esi
550479:	72 d5                	jb     0x550450
55047b:	eb 04                	jmp    0x550481
55047d:	3b f7                	cmp    %edi,%esi
55047f:	72 6a                	jb     0x5504eb
550481:	8b 45 a4             	mov    -0x5c(%ebp),%eax
550484:	8b 4d cc             	mov    -0x34(%ebp),%ecx
550487:	f7 d0                	not    %eax
550489:	21 45 bc             	and    %eax,-0x44(%ebp)
55048c:	f7 d1                	not    %ecx
55048e:	21 4d b8             	and    %ecx,-0x48(%ebp)
550491:	3b d7                	cmp    %edi,%edx
550493:	73 27                	jae    0x5504bc
550495:	8b 75 94             	mov    -0x6c(%ebp),%esi
550498:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
55049f:	00
5504a0:	8b 4a 28             	mov    0x28(%edx),%ecx
5504a3:	8b 42 2c             	mov    0x2c(%edx),%eax
5504a6:	23 4e 08             	and    0x8(%esi),%ecx
5504a9:	23 46 0c             	and    0xc(%esi),%eax
5504ac:	0b c8                	or     %eax,%ecx
5504ae:	74 05                	je     0x5504b5
5504b0:	66 83 4a 0a 04       	orw    $0x4,0xa(%edx)
5504b5:	83 c2 30             	add    $0x30,%edx
5504b8:	3b d7                	cmp    %edi,%edx
5504ba:	72 e4                	jb     0x5504a0
5504bc:	0f b6 4b 2c          	movzbl 0x2c(%ebx),%ecx
5504c0:	8b 75 a8             	mov    -0x58(%ebp),%esi
5504c3:	8d 41 ff             	lea    -0x1(%ecx),%eax
5504c6:	3b f0                	cmp    %eax,%esi
5504c8:	74 19                	je     0x5504e3
5504ca:	2b ce                	sub    %esi,%ecx
5504cc:	6b c1 58             	imul   $0x58,%ecx,%eax
5504cf:	83 e8 58             	sub    $0x58,%eax
5504d2:	50                   	push   %eax
5504d3:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5504d6:	50                   	push   %eax
5504d7:	83 c0 a8             	add    $0xffffffa8,%eax
5504da:	50                   	push   %eax
5504db:	e8 a0 2f 09 00       	call   0x5e3480
5504e0:	83 c4 0c             	add    $0xc,%esp
5504e3:	fe 4b 2c             	decb   0x2c(%ebx)
5504e6:	ff 4d c0             	decl   -0x40(%ebp)
5504e9:	eb 03                	jmp    0x5504ee
5504eb:	8b 75 a8             	mov    -0x58(%ebp),%esi
5504ee:	8b 7d a0             	mov    -0x60(%ebp),%edi
5504f1:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5504f4:	4e                   	dec    %esi
5504f5:	83 e8 58             	sub    $0x58,%eax
5504f8:	89 75 a8             	mov    %esi,-0x58(%ebp)
5504fb:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5504fe:	83 fe 01             	cmp    $0x1,%esi
550501:	0f 8d dc fe ff ff    	jge    0x5503e3
550507:	8b 0b                	mov    (%ebx),%ecx
550509:	0f bf 43 34          	movswl 0x34(%ebx),%eax
55050d:	01 81 84 00 00 00    	add    %eax,0x84(%ecx)
550513:	f6 45 d0 04          	testb  $0x4,-0x30(%ebp)
550517:	74 63                	je     0x55057c
550519:	8b 83 38 03 00 00    	mov    0x338(%ebx),%eax
55051f:	8b 48 24             	mov    0x24(%eax),%ecx
550522:	8b d1                	mov    %ecx,%edx
550524:	c1 ea 0c             	shr    $0xc,%edx
550527:	83 e2 01             	and    $0x1,%edx
55052a:	75 1f                	jne    0x55054b
55052c:	f6 45 d0 08          	testb  $0x8,-0x30(%ebp)
550530:	74 4a                	je     0x55057c
550532:	8b 45 d8             	mov    -0x28(%ebp),%eax
550535:	8b 40 18             	mov    0x18(%eax),%eax
550538:	39 50 38             	cmp    %edx,0x38(%eax)
55053b:	75 3f                	jne    0x55057c
55053d:	f7 c1 00 20 00 00    	test   $0x2000,%ecx
550543:	74 06                	je     0x55054b
550545:	f6 45 d0 10          	testb  $0x10,-0x30(%ebp)
550549:	74 31                	je     0x55057c
55054b:	85 d2                	test   %edx,%edx
55054d:	8b 55 d8             	mov    -0x28(%ebp),%edx
550550:	0f 94 c0             	sete   %al
550553:	fe c0                	inc    %al
550555:	88 43 2e             	mov    %al,0x2e(%ebx)
550558:	8b 42 18             	mov    0x18(%edx),%eax
55055b:	f6 40 24 80          	testb  $0x80,0x24(%eax)
55055f:	75 1e                	jne    0x55057f
550561:	f6 c1 40             	test   $0x40,%cl
550564:	74 19                	je     0x55057f
550566:	8b 83 38 03 00 00    	mov    0x338(%ebx),%eax
55056c:	83 e1 bf             	and    $0xffffffbf,%ecx
55056f:	89 48 24             	mov    %ecx,0x24(%eax)
550572:	8a 45 d0             	mov    -0x30(%ebp),%al
550575:	24 08                	and    $0x8,%al
550577:	88 45 cb             	mov    %al,-0x35(%ebp)
55057a:	eb 03                	jmp    0x55057f
55057c:	8b 55 d8             	mov    -0x28(%ebp),%edx
55057f:	8b 4d c0             	mov    -0x40(%ebp),%ecx
550582:	85 c9                	test   %ecx,%ecx
550584:	0f 8e 10 02 00 00    	jle    0x55079a
55058a:	8b 7d 90             	mov    -0x70(%ebp),%edi
55058d:	83 c7 48             	add    $0x48,%edi
550590:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
550593:	89 7d d4             	mov    %edi,-0x2c(%ebp)
550596:	66 66 0f 1f 84 00 00 	data16 nopw 0x0(%eax,%eax,1)
55059d:	00 00 00
5505a0:	0f b6 47 ec          	movzbl -0x14(%edi),%eax
5505a4:	be c0 bd f0 ff       	mov    $0xfff0bdc0,%esi
5505a9:	8d 04 c0             	lea    (%eax,%eax,8),%eax
5505ac:	8d 14 c2             	lea    (%edx,%eax,8),%edx
5505af:	83 c2 08             	add    $0x8,%edx
5505b2:	89 55 cc             	mov    %edx,-0x34(%ebp)
5505b5:	8b 5a 10             	mov    0x10(%edx),%ebx
5505b8:	8b 4b 48             	mov    0x48(%ebx),%ecx
5505bb:	85 c9                	test   %ecx,%ecx
5505bd:	74 19                	je     0x5505d8
5505bf:	8b 45 c4             	mov    -0x3c(%ebp),%eax
5505c2:	33 f6                	xor    %esi,%esi
5505c4:	8b 40 10             	mov    0x10(%eax),%eax
5505c7:	83 c0 0c             	add    $0xc,%eax
5505ca:	39 08                	cmp    %ecx,(%eax)
5505cc:	74 0a                	je     0x5505d8
5505ce:	66 90                	xchg   %ax,%ax
5505d0:	8d 40 10             	lea    0x10(%eax),%eax
5505d3:	46                   	inc    %esi
5505d4:	39 08                	cmp    %ecx,(%eax)
5505d6:	75 f8                	jne    0x5505d0
5505d8:	f6 43 24 02          	testb  $0x2,0x24(%ebx)
5505dc:	8b 3f                	mov    (%edi),%edi
5505de:	89 7d a4             	mov    %edi,-0x5c(%ebp)
5505e1:	0f 85 26 01 00 00    	jne    0x55070d
5505e7:	83 7b 0c 00          	cmpl   $0x0,0xc(%ebx)
5505eb:	0f 85 1c 01 00 00    	jne    0x55070d
5505f1:	8b 47 24             	mov    0x24(%edi),%eax