41615c:	58                   	pop    %eax
41615d:	89 4d ac             	mov    %ecx,-0x54(%ebp)
416160:	eb 03                	jmp    0x416165
416162:	8b 4d ac             	mov    -0x54(%ebp),%ecx
416165:	85 c0                	test   %eax,%eax
416167:	0f 84 86 03 00 00    	je     0x4164f3
41616d:	4f                   	dec    %edi
41616e:	38 1f                	cmp    %bl,(%edi)
416170:	75 0a                	jne    0x41617c
416172:	48                   	dec    %eax
416173:	41                   	inc    %ecx
416174:	4f                   	dec    %edi
416175:	38 1f                	cmp    %bl,(%edi)
416177:	74 f9                	je     0x416172
416179:	89 4d ac             	mov    %ecx,-0x54(%ebp)
41617c:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
41617f:	51                   	push   %ecx
416180:	50                   	push   %eax
416181:	8d 45 e0             	lea    -0x20(%ebp),%eax
416184:	50                   	push   %eax
416185:	e8 cb 13 00 00       	call   0x417555
41618a:	8b 55 a0             	mov    -0x60(%ebp),%edx
41618d:	83 c4 0c             	add    $0xc,%esp
416190:	85 d2                	test   %edx,%edx
416192:	79 02                	jns    0x416196
416194:	f7 de                	neg    %esi
416196:	8b 45 a4             	mov    -0x5c(%ebp),%eax
416199:	03 75 ac             	add    -0x54(%ebp),%esi
41619c:	85 c0                	test   %eax,%eax
41619e:	75 03                	jne    0x4161a3
4161a0:	03 75 18             	add    0x18(%ebp),%esi
4161a3:	8b 45 a8             	mov    -0x58(%ebp),%eax
4161a6:	85 c0                	test   %eax,%eax
4161a8:	75 03                	jne    0x4161ad
4161aa:	2b 75 1c             	sub    0x1c(%ebp),%esi
4161ad:	81 fe 50 14 00 00    	cmp    $0x1450,%esi
4161b3:	0f 8f 2c 03 00 00    	jg     0x4164e5
4161b9:	81 fe b0 eb ff ff    	cmp    $0xffffebb0,%esi
4161bf:	0f 8c 11 03 00 00    	jl     0x4164d6
4161c5:	b8 40 14 42 00       	mov    $0x421440,%eax
4161ca:	83 e8 60             	sub    $0x60,%eax
4161cd:	85 f6                	test   %esi,%esi
4161cf:	0f 84 ef 02 00 00    	je     0x4164c4
4161d5:	79 0a                	jns    0x4161e1
4161d7:	b8 a0 15 42 00       	mov    $0x4215a0,%eax
4161dc:	f7 de                	neg    %esi
4161de:	83 e8 60             	sub    $0x60,%eax
4161e1:	39 5d 14             	cmp    %ebx,0x14(%ebp)
4161e4:	0f 85 d2 02 00 00    	jne    0x4164bc
4161ea:	33 c9                	xor    %ecx,%ecx
4161ec:	66 89 4d c4          	mov    %cx,-0x3c(%ebp)
4161f0:	e9 c7 02 00 00       	jmp    0x4164bc
4161f5:	8b ce                	mov    %esi,%ecx
4161f7:	83 c0 54             	add    $0x54,%eax
4161fa:	c1 fe 03             	sar    $0x3,%esi
4161fd:	89 45 b4             	mov    %eax,-0x4c(%ebp)
416200:	89 75 ac             	mov    %esi,-0x54(%ebp)
416203:	83 e1 07             	and    $0x7,%ecx
416206:	0f 84 b0 02 00 00    	je     0x4164bc
41620c:	6b c9 0c             	imul   $0xc,%ecx,%ecx
41620f:	03 c8                	add    %eax,%ecx
416211:	b8 00 80 00 00       	mov    $0x8000,%eax
416216:	89 4d b0             	mov    %ecx,-0x50(%ebp)
416219:	66 39 01             	cmp    %ax,(%ecx)
41621c:	72 11                	jb     0x41622f
41621e:	8b f1                	mov    %ecx,%esi
416220:	8d 7d b8             	lea    -0x48(%ebp),%edi
416223:	a5                   	movsl  %ds:(%esi),%es:(%edi)
416224:	a5                   	movsl  %ds:(%esi),%es:(%edi)
416225:	8d 4d b8             	lea    -0x48(%ebp),%ecx
416228:	a5                   	movsl  %ds:(%esi),%es:(%edi)
416229:	ff 4d ba             	decl   -0x46(%ebp)
41622c:	89 4d b0             	mov    %ecx,-0x50(%ebp)
41622f:	0f b7 79 0a          	movzwl 0xa(%ecx),%edi
416233:	8b 55 ce             	mov    -0x32(%ebp),%edx
416236:	8b c7                	mov    %edi,%eax
416238:	33 c2                	xor    %edx,%eax
41623a:	25 00 80 00 00       	and    $0x8000,%eax
41623f:	89 45 a0             	mov    %eax,-0x60(%ebp)
416242:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
416247:	23 d0                	and    %eax,%edx
416249:	23 f8                	and    %eax,%edi
41624b:	89 5d 88             	mov    %ebx,-0x78(%ebp)
41624e:	8d 04 17             	lea    (%edi,%edx,1),%eax
416251:	0f b7 f0             	movzwl %ax,%esi
416254:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
416259:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
41625c:	89 5d d8             	mov    %ebx,-0x28(%ebp)
41625f:	89 5d dc             	mov    %ebx,-0x24(%ebp)
416262:	89 75 a4             	mov    %esi,-0x5c(%ebp)
416265:	66 3b d0             	cmp    %ax,%dx
416268:	0f 83 2b 02 00 00    	jae    0x416499
41626e:	66 3b f8             	cmp    %ax,%di
416271:	0f 83 22 02 00 00    	jae    0x416499
416277:	b8 fd bf 00 00       	mov    $0xbffd,%eax
41627c:	66 3b f0             	cmp    %ax,%si
41627f:	0f 87 14 02 00 00    	ja     0x416499
416285:	b8 bf 3f 00 00       	mov    $0x3fbf,%eax
41628a:	66 3b f0             	cmp    %ax,%si
41628d:	77 08                	ja     0x416297
41628f:	89 5d cc             	mov    %ebx,-0x34(%ebp)
416292:	e9 19 02 00 00       	jmp    0x4164b0
416297:	66 85 d2             	test   %dx,%dx
41629a:	75 24                	jne    0x4162c0
41629c:	46                   	inc    %esi
41629d:	f7 45 cc ff ff ff 7f 	testl  $0x7fffffff,-0x34(%ebp)
4162a4:	89 75 a4             	mov    %esi,-0x5c(%ebp)
4162a7:	75 17                	jne    0x4162c0
4162a9:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
4162ad:	75 11                	jne    0x4162c0
4162af:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
4162b3:	75 0b                	jne    0x4162c0
4162b5:	33 c0                	xor    %eax,%eax
4162b7:	66 89 45 ce          	mov    %ax,-0x32(%ebp)
4162bb:	e9 f6 01 00 00       	jmp    0x4164b6
4162c0:	66 85 ff             	test   %di,%di
4162c3:	75 16                	jne    0x4162db
4162c5:	46                   	inc    %esi
4162c6:	f7 41 08 ff ff ff 7f 	testl  $0x7fffffff,0x8(%ecx)
4162cd:	89 75 a4             	mov    %esi,-0x5c(%ebp)
4162d0:	75 09                	jne    0x4162db
4162d2:	39 59 04             	cmp    %ebx,0x4(%ecx)
4162d5:	75 04                	jne    0x4162db
4162d7:	39 19                	cmp    %ebx,(%ecx)
4162d9:	74 b4                	je     0x41628f
4162db:	6a 05                	push   $0x5
4162dd:	8b c3                	mov    %ebx,%eax
4162df:	5f                   	pop    %edi
4162e0:	89 45 90             	mov    %eax,-0x70(%ebp)
4162e3:	8d 55 d8             	lea    -0x28(%ebp),%edx
4162e6:	89 7d 98             	mov    %edi,-0x68(%ebp)
4162e9:	89 7d a8             	mov    %edi,-0x58(%ebp)
4162ec:	85 ff                	test   %edi,%edi
4162ee:	7e 5c                	jle    0x41634c
4162f0:	8d 75 c4             	lea    -0x3c(%ebp),%esi
4162f3:	8d 34 46             	lea    (%esi,%eax,2),%esi
4162f6:	8d 41 08             	lea    0x8(%ecx),%eax
4162f9:	89 45 9c             	mov    %eax,-0x64(%ebp)
4162fc:	8b cf                	mov    %edi,%ecx
4162fe:	0f b7 00             	movzwl (%eax),%eax
416301:	89 45 a8             	mov    %eax,-0x58(%ebp)
416304:	0f b7 06             	movzwl (%esi),%eax
416307:	8b 7d a8             	mov    -0x58(%ebp),%edi
41630a:	0f af f8             	imul   %eax,%edi
41630d:	89 7d a8             	mov    %edi,-0x58(%ebp)
416310:	03 7a fc             	add    -0x4(%edx),%edi
416313:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
416316:	3b 7a fc             	cmp    -0x4(%edx),%edi
416319:	72 05                	jb     0x416320
41631b:	3b 7d a8             	cmp    -0x58(%ebp),%edi
41631e:	73 05                	jae    0x416325
416320:	33 c0                	xor    %eax,%eax
416322:	40                   	inc    %eax
416323:	eb 03                	jmp    0x416328
416325:	8b 45 84             	mov    -0x7c(%ebp),%eax
416328:	89 7a fc             	mov    %edi,-0x4(%edx)
41632b:	85 c0                	test   %eax,%eax
41632d:	74 03                	je     0x416332
41632f:	66 ff 02             	incw   (%edx)
416332:	8b 45 9c             	mov    -0x64(%ebp),%eax
416335:	83 e8 02             	sub    $0x2,%eax
416338:	83 c6 02             	add    $0x2,%esi
41633b:	49                   	dec    %ecx
41633c:	89 45 9c             	mov    %eax,-0x64(%ebp)
41633f:	85 c9                	test   %ecx,%ecx
416341:	7f bb                	jg     0x4162fe
416343:	8b 4d b0             	mov    -0x50(%ebp),%ecx
416346:	8b 7d 98             	mov    -0x68(%ebp),%edi
416349:	8b 45 90             	mov    -0x70(%ebp),%eax
41634c:	83 c2 02             	add    $0x2,%edx
41634f:	40                   	inc    %eax
416350:	4f                   	dec    %edi
416351:	89 45 90             	mov    %eax,-0x70(%ebp)
416354:	89 7d 98             	mov    %edi,-0x68(%ebp)
416357:	85 ff                	test   %edi,%edi
416359:	7f 8e                	jg     0x4162e9
41635b:	8b 75 a4             	mov    -0x5c(%ebp),%esi
41635e:	8b 55 dc             	mov    -0x24(%ebp),%edx
416361:	8b 7d d4             	mov    -0x2c(%ebp),%edi
416364:	81 c6 02 c0 00 00    	add    $0xc002,%esi
41636a:	89 55 b0             	mov    %edx,-0x50(%ebp)
41636d:	66 85 f6             	test   %si,%si
416370:	7e 3b                	jle    0x4163ad
416372:	85 d2                	test   %edx,%edx
416374:	78 32                	js     0x4163a8
416376:	8b 45 d8             	mov    -0x28(%ebp),%eax
416379:	8b c8                	mov    %eax,%ecx
41637b:	8b d7                	mov    %edi,%edx
41637d:	c1 ea 1f             	shr    $0x1f,%edx
416380:	03 c0                	add    %eax,%eax
416382:	0b c2                	or     %edx,%eax
416384:	8b 55 b0             	mov    -0x50(%ebp),%edx
416387:	89 45 d8             	mov    %eax,-0x28(%ebp)
41638a:	c1 e9 1f             	shr    $0x1f,%ecx
41638d:	03 d2                	add    %edx,%edx
41638f:	b8 ff ff 00 00       	mov    $0xffff,%eax
416394:	0b d1                	or     %ecx,%edx
416396:	03 ff                	add    %edi,%edi
416398:	03 f0                	add    %eax,%esi
41639a:	89 7d d4             	mov    %edi,-0x2c(%ebp)
41639d:	89 55 b0             	mov    %edx,-0x50(%ebp)
4163a0:	89 55 dc             	mov    %edx,-0x24(%ebp)
4163a3:	66 85 f6             	test   %si,%si
4163a6:	7f ca                	jg     0x416372
4163a8:	66 85 f6             	test   %si,%si
4163ab:	7f 69                	jg     0x416416
4163ad:	b8 ff ff 00 00       	mov    $0xffff,%eax
4163b2:	03 f0                	add    %eax,%esi
4163b4:	66 85 f6             	test   %si,%si
4163b7:	79 5d                	jns    0x416416
4163b9:	8b 5d 88             	mov    -0x78(%ebp),%ebx
4163bc:	8b c6                	mov    %esi,%eax
4163be:	f7 d8                	neg    %eax
4163c0:	0f b7 c0             	movzwl %ax,%eax
4163c3:	89 45 98             	mov    %eax,-0x68(%ebp)
4163c6:	03 f0                	add    %eax,%esi
4163c8:	f6 45 d4 01          	testb  $0x1,-0x2c(%ebp)
4163cc:	74 01                	je     0x4163cf
4163ce:	43                   	inc    %ebx
4163cf:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4163d2:	8b c2                	mov    %edx,%eax
4163d4:	c1 e0 1f             	shl    $0x1f,%eax
4163d7:	89 4d b0             	mov    %ecx,-0x50(%ebp)
4163da:	d1 6d b0             	shrl   $1,-0x50(%ebp)
4163dd:	09 45 b0             	or     %eax,-0x50(%ebp)
4163e0:	8b 45 b0             	mov    -0x50(%ebp),%eax
4163e3:	c1 e1 1f             	shl    $0x1f,%ecx
4163e6:	d1 ef                	shr    $1,%edi
4163e8:	d1 ea                	shr    $1,%edx
4163ea:	0b f9                	or     %ecx,%edi
4163ec:	ff 4d 98             	decl   -0x68(%ebp)
4163ef:	89 55 dc             	mov    %edx,-0x24(%ebp)
4163f2:	89 45 d8             	mov    %eax,-0x28(%ebp)
4163f5:	89 7d d4             	mov    %edi,-0x2c(%ebp)
4163f8:	75 ce                	jne    0x4163c8
4163fa:	6a 00                	push   $0x0
4163fc:	85 db                	test   %ebx,%ebx
4163fe:	89 55 b0             	mov    %edx,-0x50(%ebp)
416401:	5b                   	pop    %ebx
416402:	74 12                	je     0x416416
416404:	66 8b c7             	mov    %di,%ax
416407:	33 ff                	xor    %edi,%edi
416409:	47                   	inc    %edi
41640a:	66 0b c7             	or     %di,%ax
41640d:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
416411:	8b 7d d4             	mov    -0x2c(%ebp),%edi
416414:	eb 04                	jmp    0x41641a
416416:	66 8b 45 d4          	mov    -0x2c(%ebp),%ax
41641a:	ba 00 80 00 00       	mov    $0x8000,%edx
41641f:	66 3b c2             	cmp    %dx,%ax
416422:	77 0e                	ja     0x416432
416424:	81 e7 ff ff 01 00    	and    $0x1ffff,%edi
41642a:	81 ff 00 80 01 00    	cmp    $0x18000,%edi
416430:	75 40                	jne    0x416472
416432:	8b 45 d6             	mov    -0x2a(%ebp),%eax
416435:	83 f8 ff             	cmp    $0xffffffff,%eax
416438:	75 34                	jne    0x41646e
41643a:	8b 45 da             	mov    -0x26(%ebp),%eax
41643d:	89 5d d6             	mov    %ebx,-0x2a(%ebp)
416440:	83 f8 ff             	cmp    $0xffffffff,%eax
416443:	75 20                	jne    0x416465
416445:	66 8b 45 de          	mov    -0x22(%ebp),%ax
416449:	b9 ff ff 00 00       	mov    $0xffff,%ecx
41644e:	89 5d da             	mov    %ebx,-0x26(%ebp)
416451:	66 3b c1             	cmp    %cx,%ax
416454:	75 07                	jne    0x41645d
416456:	66 89 55 de          	mov    %dx,-0x22(%ebp)
41645a:	46                   	inc    %esi
41645b:	eb 0c                	jmp    0x416469
41645d:	66 40                	inc    %ax
41645f:	66 89 45 de          	mov    %ax,-0x22(%ebp)
416463:	eb 04                	jmp    0x416469
416465:	40                   	inc    %eax
416466:	89 45 da             	mov    %eax,-0x26(%ebp)
416469:	8b 4d dc             	mov    -0x24(%ebp),%ecx
41646c:	eb 07                	jmp    0x416475
41646e:	40                   	inc    %eax
41646f:	89 45 d6             	mov    %eax,-0x2a(%ebp)
416472:	8b 4d b0             	mov    -0x50(%ebp),%ecx
416475:	ba ff 7f 00 00       	mov    $0x7fff,%edx
41647a:	66 3b f2             	cmp    %dx,%si
41647d:	73 1a                	jae    0x416499
41647f:	66 8b 45 d6          	mov    -0x2a(%ebp),%ax
416483:	0b 75 a0             	or     -0x60(%ebp),%esi
416486:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
41648a:	8b 45 d8             	mov    -0x28(%ebp),%eax
41648d:	89 45 c6             	mov    %eax,-0x3a(%ebp)
416490:	89 4d ca             	mov    %ecx,-0x36(%ebp)
416493:	66 89 75 ce          	mov    %si,-0x32(%ebp)
416497:	eb 1d                	jmp    0x4164b6
416499:	33 c0                	xor    %eax,%eax
41649b:	66 39 45 a0          	cmp    %ax,-0x60(%ebp)
41649f:	0f 94 c0             	sete   %al
4164a2:	48                   	dec    %eax
4164a3:	25 00 00 00 80       	and    $0x80000000,%eax
4164a8:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
4164ad:	89 45 cc             	mov    %eax,-0x34(%ebp)
4164b0:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
4164b3:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4164b6:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4164b9:	8b 75 ac             	mov    -0x54(%ebp),%esi
4164bc:	85 f6                	test   %esi,%esi
4164be:	0f 85 31 fd ff ff    	jne    0x4161f5
4164c4:	8b 45 cc             	mov    -0x34(%ebp),%eax
4164c7:	0f b7 4d c4          	movzwl -0x3c(%ebp),%ecx
4164cb:	8b 55 c6             	mov    -0x3a(%ebp),%edx
4164ce:	8b 75 ca             	mov    -0x36(%ebp),%esi
4164d1:	c1 e8 10             	shr    $0x10,%eax
4164d4:	eb 32                	jmp    0x416508
4164d6:	33 ff                	xor    %edi,%edi
4164d8:	8b cb                	mov    %ebx,%ecx
4164da:	8b c3                	mov    %ebx,%eax
4164dc:	8b f3                	mov    %ebx,%esi
4164de:	8b d3                	mov    %ebx,%edx
4164e0:	8d 5f 01             	lea    0x1(%edi),%ebx
4164e3:	eb 23                	jmp    0x416508
4164e5:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4164ea:	be 00 00 00 80       	mov    $0x80000000,%esi
4164ef:	6a 02                	push   $0x2
4164f1:	eb 10                	jmp    0x416503
4164f3:	8b cb                	mov    %ebx,%ecx
4164f5:	8b c3                	mov    %ebx,%eax
4164f7:	8b f3                	mov    %ebx,%esi
4164f9:	8b d3                	mov    %ebx,%edx
4164fb:	eb 0b                	jmp    0x416508
4164fd:	8b c3                	mov    %ebx,%eax
4164ff:	8b f3                	mov    %ebx,%esi
416501:	6a 04                	push   $0x4
416503:	8b cb                	mov    %ebx,%ecx
416505:	8b d3                	mov    %ebx,%edx
416507:	5b                   	pop    %ebx
416508:	8b 7d 8c             	mov    -0x74(%ebp),%edi
41650b:	0b 45 94             	or     -0x6c(%ebp),%eax
41650e:	66 89 0f             	mov    %cx,(%edi)
416511:	66 89 47 0a          	mov    %ax,0xa(%edi)
416515:	89 57 02             	mov    %edx,0x2(%edi)
416518:	89 77 06             	mov    %esi,0x6(%edi)
41651b:	8b c3                	mov    %ebx,%eax
41651d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
416520:	5f                   	pop    %edi
416521:	5e                   	pop    %esi
416522:	33 cd                	xor    %ebp,%ecx
416524:	5b                   	pop    %ebx
416525:	e8 0f e2 fe ff       	call   0x404739
41652a:	c9                   	leave
41652b:	c3                   	ret
41652c:	90                   	nop
41652d:	71 5e                	jno    0x41658d
41652f:	41                   	inc    %ecx
416530:	00 c3                	add    %al,%bl