54ffad:	57                   	push   %edi
54ffae:	8b 7d 14             	mov    0x14(%ebp),%edi
54ffb1:	89 45 b0             	mov    %eax,-0x50(%ebp)
54ffb4:	8b 06                	mov    (%esi),%eax
54ffb6:	89 75 dc             	mov    %esi,-0x24(%ebp)
54ffb9:	89 7d bc             	mov    %edi,-0x44(%ebp)
54ffbc:	c6 45 cb 00          	movb   $0x0,-0x35(%ebp)
54ffc0:	89 45 c4             	mov    %eax,-0x3c(%ebp)
54ffc3:	66 0f d6 45 f0       	movq   %xmm0,-0x10(%ebp)
54ffc8:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
54ffcf:	0f 11 45 e0          	movups %xmm0,-0x20(%ebp)
54ffd3:	85 ff                	test   %edi,%edi
54ffd5:	74 0b                	je     0x54ffe2
54ffd7:	33 c9                	xor    %ecx,%ecx
54ffd9:	83 3f 40             	cmpl   $0x40,(%edi)
54ffdc:	0f 4d f9             	cmovge %ecx,%edi
54ffdf:	89 7d bc             	mov    %edi,-0x44(%ebp)
54ffe2:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
54ffe5:	89 7d e8             	mov    %edi,-0x18(%ebp)
54ffe8:	8a 58 4c             	mov    0x4c(%eax),%bl
54ffeb:	8b c1                	mov    %ecx,%eax
54ffed:	25 ff fe 00 00       	and    $0xfeff,%eax
54fff2:	80 e3 10             	and    $0x10,%bl
54fff5:	0f b7 d0             	movzwl %ax,%edx
54fff8:	0f b7 c1             	movzwl %cx,%eax
54fffb:	0f 44 d0             	cmove  %eax,%edx
54fffe:	0f b7 c2             	movzwl %dx,%eax
550001:	8b c8                	mov    %eax,%ecx
550003:	89 4d d0             	mov    %ecx,-0x30(%ebp)
550006:	8b 4d d8             	mov    -0x28(%ebp),%ecx
550009:	8b 09                	mov    (%ecx),%ecx
55000b:	83 f9 40             	cmp    $0x40,%ecx
55000e:	7e 23                	jle    0x550033
550010:	6a 40                	push   $0x40
550012:	68 bc bb 6b 00       	push   $0x6bbbbc
550017:	56                   	push   %esi
550018:	e8 43 32 fd ff       	call   0x523260
55001d:	83 c4 0c             	add    $0xc,%esp
550020:	33 c0                	xor    %eax,%eax
550022:	5f                   	pop    %edi
550023:	5e                   	pop    %esi
550024:	5b                   	pop    %ebx
550025:	8b 4d fc             	mov    -0x4(%ebp),%ecx
550028:	33 cd                	xor    %ebp,%ecx
55002a:	e8 ab 14 09 00       	call   0x5e14da
55002f:	8b e5                	mov    %ebp,%esp
550031:	5d                   	pop    %ebp
550032:	c3                   	ret
550033:	a8 20                	test   $0x20,%al
550035:	b8 01 00 00 00       	mov    $0x1,%eax
55003a:	6a 00                	push   $0x0
55003c:	0f 45 c8             	cmovne %eax,%ecx
55003f:	6b c1 58             	imul   $0x58,%ecx,%eax
550042:	89 4d c0             	mov    %ecx,-0x40(%ebp)
550045:	89 45 cc             	mov    %eax,-0x34(%ebp)
550048:	8d b0 f7 02 00 00    	lea    0x2f7(%eax),%esi
55004e:	83 e6 f8             	and    $0xfffffff8,%esi
550051:	8d 46 48             	lea    0x48(%esi),%eax
550054:	50                   	push   %eax
550055:	8b 45 c4             	mov    -0x3c(%ebp),%eax
550058:	50                   	push   %eax
550059:	e8 82 13 fd ff       	call   0x5213e0
55005e:	8b d8                	mov    %eax,%ebx
550060:	83 c4 0c             	add    $0xc,%esp
550063:	8b 45 c4             	mov    -0x3c(%ebp),%eax
550066:	89 5d ac             	mov    %ebx,-0x54(%ebp)
550069:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
55006d:	74 14                	je     0x550083
55006f:	85 db                	test   %ebx,%ebx
550071:	0f 84 a8 02 00 00    	je     0x55031f
550077:	53                   	push   %ebx
550078:	50                   	push   %eax
550079:	e8 f2 12 fd ff       	call   0x521370
55007e:	e9 99 02 00 00       	jmp    0x55031c
550083:	8b 4d dc             	mov    -0x24(%ebp),%ecx
550086:	0f 57 c0             	xorps  %xmm0,%xmm0
550089:	8b 45 d8             	mov    -0x28(%ebp),%eax
55008c:	89 43 04             	mov    %eax,0x4(%ebx)
55008f:	8b 45 b4             	mov    -0x4c(%ebp),%eax
550092:	89 43 10             	mov    %eax,0x10(%ebx)
550095:	8b 45 d4             	mov    -0x2c(%ebp),%eax
550098:	89 43 0c             	mov    %eax,0xc(%ebx)
55009b:	8b 45 c0             	mov    -0x40(%ebp),%eax
55009e:	89 0b                	mov    %ecx,(%ebx)
5500a0:	89 7b 08             	mov    %edi,0x8(%ebx)
5500a3:	c7 43 18 ff ff ff ff 	movl   $0xffffffff,0x18(%ebx)
5500aa:	c7 43 14 ff ff ff ff 	movl   $0xffffffff,0x14(%ebx)
5500b1:	88 43 2c             	mov    %al,0x2c(%ebx)
5500b4:	8b 41 38             	mov    0x38(%ecx),%eax
5500b7:	48                   	dec    %eax
5500b8:	89 41 38             	mov    %eax,0x38(%ecx)
5500bb:	89 43 1c             	mov    %eax,0x1c(%ebx)
5500be:	89 43 20             	mov    %eax,0x20(%ebx)
5500c1:	8b 45 d0             	mov    -0x30(%ebp),%eax
5500c4:	66 89 43 28          	mov    %ax,0x28(%ebx)
5500c8:	8b 45 20             	mov    0x20(%ebp),%eax
5500cb:	66 89 43 2a          	mov    %ax,0x2a(%ebx)
5500cf:	8b 81 84 00 00 00    	mov    0x84(%ecx),%eax
5500d5:	8d 8b f0 02 00 00    	lea    0x2f0(%ebx),%ecx
5500db:	89 43 24             	mov    %eax,0x24(%ebx)
5500de:	8b 45 cc             	mov    -0x34(%ebp),%eax
5500e1:	83 c0 48             	add    $0x48,%eax
5500e4:	89 4d 90             	mov    %ecx,-0x70(%ebp)
5500e7:	50                   	push   %eax
5500e8:	0f 11 43 2d          	movups %xmm0,0x2d(%ebx)
5500ec:	6a 00                	push   $0x0
5500ee:	0f 11 43 3d          	movups %xmm0,0x3d(%ebx)
5500f2:	66 c7 43 4d 00 00    	movw   $0x0,0x4d(%ebx)
5500f8:	51                   	push   %ecx
5500f9:	c6 43 4f 00          	movb   $0x0,0x4f(%ebx)
5500fd:	e8 fe 38 09 00       	call   0x5e3a00
550102:	89 5d e0             	mov    %ebx,-0x20(%ebp)
550105:	8d 0c 33             	lea    (%ebx,%esi,1),%ecx
550108:	89 4d ec             	mov    %ecx,-0x14(%ebp)
55010b:	8d 43 50             	lea    0x50(%ebx),%eax
55010e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
550111:	8d 93 e8 01 00 00    	lea    0x1e8(%ebx),%edx
550117:	89 45 a8             	mov    %eax,-0x58(%ebp)
55011a:	8d 41 38             	lea    0x38(%ecx),%eax
55011d:	89 41 30             	mov    %eax,0x30(%ecx)
550120:	33 c0                	xor    %eax,%eax
550122:	66 89 41 28          	mov    %ax,0x28(%ecx)
550126:	b8 03 00 00 00       	mov    $0x3,%eax
55012b:	66 89 41 2c          	mov    %ax,0x2c(%ecx)
55012f:	c7 41 24 00 00 00 00 	movl   $0x0,0x24(%ecx)
550136:	8d 4b 50             	lea    0x50(%ebx),%ecx
550139:	c7 42 04 00 00 00 00 	movl   $0x0,0x4(%edx)
550140:	8d 41 18             	lea    0x18(%ecx),%eax
550143:	6a 2c                	push   $0x2c
550145:	ff 75 b4             	push   -0x4c(%ebp)
550148:	89 55 cc             	mov    %edx,-0x34(%ebp)
55014b:	51                   	push   %ecx
55014c:	89 19                	mov    %ebx,(%ecx)
55014e:	c6 41 09 00          	movb   $0x0,0x9(%ecx)
550152:	c7 41 04 00 00 00 00 	movl   $0x0,0x4(%ecx)
550159:	c7 41 0c 00 00 00 00 	movl   $0x0,0xc(%ecx)
550160:	c7 41 10 08 00 00 00 	movl   $0x8,0x10(%ecx)
550167:	89 41 14             	mov    %eax,0x14(%ecx)
55016a:	e8 51 3c 00 00       	call   0x553dc0
55016f:	83 c4 18             	add    $0x18,%esp
550172:	83 7d c0 00          	cmpl   $0x0,-0x40(%ebp)
550176:	75 2d                	jne    0x5501a5
550178:	85 ff                	test   %edi,%edi
55017a:	74 05                	je     0x550181
55017c:	8a 07                	mov    (%edi),%al
55017e:	88 43 2d             	mov    %al,0x2d(%ebx)
550181:	f7 45 d0 00 01 00 00 	testl  $0x100,-0x30(%ebp)
550188:	74 04                	je     0x55018e
55018a:	c6 43 2f 01          	movb   $0x1,0x2f(%ebx)
55018e:	68 d8 bb 6b 00       	push   $0x6bbbd8
550193:	6a 00                	push   $0x0
550195:	ff 75 dc             	push   -0x24(%ebp)
550198:	e8 43 9a ff ff       	call   0x549be0
55019d:	8b 45 d8             	mov    -0x28(%ebp),%eax
5501a0:	83 c4 0c             	add    $0xc,%esp
5501a3:	eb 38                	jmp    0x5501dd
5501a5:	8b 75 d8             	mov    -0x28(%ebp),%esi
5501a8:	33 ff                	xor    %edi,%edi
5501aa:	8b 5d cc             	mov    -0x34(%ebp),%ebx
5501ad:	83 c6 08             	add    $0x8,%esi
5501b0:	8b 4b 04             	mov    0x4(%ebx),%ecx
5501b3:	ff 75 a8             	push   -0x58(%ebp)
5501b6:	8b 46 2c             	mov    0x2c(%esi),%eax
5501b9:	56                   	push   %esi
5501ba:	ff 75 dc             	push   -0x24(%ebp)
5501bd:	89 44 8b 08          	mov    %eax,0x8(%ebx,%ecx,4)
5501c1:	ff 43 04             	incl   0x4(%ebx)
5501c4:	e8 57 3c 00 00       	call   0x553e20
5501c9:	8b 45 d8             	mov    -0x28(%ebp),%eax
5501cc:	47                   	inc    %edi
5501cd:	83 c4 0c             	add    $0xc,%esp
5501d0:	83 c6 48             	add    $0x48,%esi
5501d3:	3b 38                	cmp    (%eax),%edi
5501d5:	7c d9                	jl     0x5501b0
5501d7:	8b 5d ac             	mov    -0x54(%ebp),%ebx
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)