4151a6:	74 0a                	je     0x4151b2
4151a8:	66 85 f6             	test   %si,%si
4151ab:	74 05                	je     0x4151b2
4151ad:	66 3b f0             	cmp    %ax,%si
4151b0:	74 c1                	je     0x415173
4151b2:	0f b7 c8             	movzwl %ax,%ecx
4151b5:	0f b7 c6             	movzwl %si,%eax
4151b8:	5e                   	pop    %esi
4151b9:	2b c1                	sub    %ecx,%eax
4151bb:	5b                   	pop    %ebx
4151bc:	eb 13                	jmp    0x4151d1
4151be:	6a 00                	push   $0x0
4151c0:	ff 75 10             	push   0x10(%ebp)
4151c3:	ff 75 0c             	push   0xc(%ebp)
4151c6:	ff 75 08             	push   0x8(%ebp)
4151c9:	e8 06 00 00 00       	call   0x4151d4
4151ce:	83 c4 10             	add    $0x10,%esp
4151d1:	5f                   	pop    %edi
4151d2:	c9                   	leave
4151d3:	c3                   	ret
4151d4:	55                   	push   %ebp
4151d5:	8b ec                	mov    %esp,%ebp
4151d7:	83 ec 14             	sub    $0x14,%esp
4151da:	53                   	push   %ebx
4151db:	56                   	push   %esi
4151dc:	33 f6                	xor    %esi,%esi
4151de:	57                   	push   %edi
4151df:	39 75 10             	cmp    %esi,0x10(%ebp)
4151e2:	0f 84 dc 00 00 00    	je     0x4152c4
4151e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4151eb:	85 db                	test   %ebx,%ebx
4151ed:	75 1a                	jne    0x415209
4151ef:	e8 89 2f ff ff       	call   0x40817d
4151f4:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4151fa:	e8 f6 63 ff ff       	call   0x40b5f5
4151ff:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
415204:	e9 bd 00 00 00       	jmp    0x4152c6
415209:	8b 7d 0c             	mov    0xc(%ebp),%edi
41520c:	85 ff                	test   %edi,%edi
41520e:	74 df                	je     0x4151ef
415210:	ff 75 14             	push   0x14(%ebp)
415213:	8d 4d ec             	lea    -0x14(%ebp),%ecx
415216:	e8 e2 ff fe ff       	call   0x4051fd
41521b:	8b 45 ec             	mov    -0x14(%ebp),%eax
41521e:	39 b0 a8 00 00 00    	cmp    %esi,0xa8(%eax)
415224:	75 51                	jne    0x415277
415226:	8b 4d 10             	mov    0x10(%ebp),%ecx
415229:	6a 41                	push   $0x41
41522b:	5a                   	pop    %edx
41522c:	6a 5a                	push   $0x5a
41522e:	5e                   	pop    %esi
41522f:	2b df                	sub    %edi,%ebx
415231:	89 75 fc             	mov    %esi,-0x4(%ebp)
415234:	eb 03                	jmp    0x415239
415236:	6a 5a                	push   $0x5a
415238:	5e                   	pop    %esi
415239:	0f b7 04 3b          	movzwl (%ebx,%edi,1),%eax
41523d:	66 3b c2             	cmp    %dx,%ax
415240:	72 0d                	jb     0x41524f
415242:	66 3b c6             	cmp    %si,%ax
415245:	77 08                	ja     0x41524f
415247:	83 c0 20             	add    $0x20,%eax
41524a:	0f b7 f0             	movzwl %ax,%esi
41524d:	eb 02                	jmp    0x415251
41524f:	8b f0                	mov    %eax,%esi
415251:	0f b7 07             	movzwl (%edi),%eax
415254:	66 3b c2             	cmp    %dx,%ax
415257:	72 0c                	jb     0x415265
415259:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
41525d:	77 06                	ja     0x415265
41525f:	83 c0 20             	add    $0x20,%eax
415262:	0f b7 c0             	movzwl %ax,%eax
415265:	83 c7 02             	add    $0x2,%edi
415268:	49                   	dec    %ecx
415269:	74 44                	je     0x4152af
41526b:	66 85 f6             	test   %si,%si
41526e:	74 3f                	je     0x4152af
415270:	66 3b f0             	cmp    %ax,%si
415273:	74 c1                	je     0x415236
415275:	eb 38                	jmp    0x4152af
415277:	8d 45 ec             	lea    -0x14(%ebp),%eax
41527a:	50                   	push   %eax
41527b:	0f b7 03             	movzwl (%ebx),%eax
41527e:	50                   	push   %eax
41527f:	e8 b1 fa ff ff       	call   0x414d35
415284:	0f b7 f0             	movzwl %ax,%esi
415287:	8d 45 ec             	lea    -0x14(%ebp),%eax
41528a:	50                   	push   %eax
41528b:	0f b7 07             	movzwl (%edi),%eax
41528e:	50                   	push   %eax
41528f:	e8 a1 fa ff ff       	call   0x414d35
415294:	83 c4 10             	add    $0x10,%esp
415297:	ff 4d 10             	decl   0x10(%ebp)
41529a:	0f b7 c0             	movzwl %ax,%eax
41529d:	8d 5b 02             	lea    0x2(%ebx),%ebx
4152a0:	8d 7f 02             	lea    0x2(%edi),%edi
4152a3:	74 0a                	je     0x4152af
4152a5:	66 85 f6             	test   %si,%si
4152a8:	74 05                	je     0x4152af
4152aa:	66 3b f0             	cmp    %ax,%si
4152ad:	74 c8                	je     0x415277
4152af:	0f b7 c0             	movzwl %ax,%eax
4152b2:	0f b7 f6             	movzwl %si,%esi
4152b5:	2b f0                	sub    %eax,%esi
4152b7:	80 7d f8 00          	cmpb   $0x0,-0x8(%ebp)
4152bb:	74 07                	je     0x4152c4
4152bd:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4152c0:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
4152c4:	8b c6                	mov    %esi,%eax
4152c6:	5f                   	pop    %edi
4152c7:	5e                   	pop    %esi
4152c8:	5b                   	pop    %ebx
4152c9:	c9                   	leave
4152ca:	c3                   	ret
4152cb:	a1 08 14 42 00       	mov    0x421408,%eax
4152d0:	83 f8 ff             	cmp    $0xffffffff,%eax
4152d3:	74 0c                	je     0x4152e1
4152d5:	83 f8 fe             	cmp    $0xfffffffe,%eax
4152d8:	74 07                	je     0x4152e1
4152da:	50                   	push   %eax
4152db:	ff 15 40 90 41 00    	call   *0x419040
4152e1:	c3                   	ret
4152e2:	33 c0                	xor    %eax,%eax
4152e4:	50                   	push   %eax
4152e5:	50                   	push   %eax
4152e6:	6a 03                	push   $0x3
4152e8:	50                   	push   %eax
4152e9:	6a 03                	push   $0x3
4152eb:	68 00 00 00 40       	push   $0x40000000
4152f0:	68 6c d3 41 00       	push   $0x41d36c
4152f5:	ff 15 34 90 41 00    	call   *0x419034
4152fb:	a3 08 14 42 00       	mov    %eax,0x421408
415300:	c3                   	ret
415301:	55                   	push   %ebp
415302:	8b ec                	mov    %esp,%ebp
415304:	83 ec 44             	sub    $0x44,%esp
415307:	a1 90 08 42 00       	mov    0x420890,%eax
41530c:	33 c5                	xor    %ebp,%eax
41530e:	89 45 fc             	mov    %eax,-0x4(%ebp)
415311:	8b 4d 08             	mov    0x8(%ebp),%ecx
415314:	53                   	push   %ebx
415315:	0f b7 41 0a          	movzwl 0xa(%ecx),%eax
415319:	8b d0                	mov    %eax,%edx
41531b:	25 00 80 00 00       	and    $0x8000,%eax
415320:	89 45 bc             	mov    %eax,-0x44(%ebp)
415323:	8b 41 06             	mov    0x6(%ecx),%eax
415326:	89 45 f0             	mov    %eax,-0x10(%ebp)
415329:	8b 41 02             	mov    0x2(%ecx),%eax
41532c:	89 45 f4             	mov    %eax,-0xc(%ebp)
41532f:	0f b7 01             	movzwl (%ecx),%eax
415332:	81 e2 ff 7f 00 00    	and    $0x7fff,%edx
415338:	56                   	push   %esi
415339:	81 ea ff 3f 00 00    	sub    $0x3fff,%edx
41533f:	57                   	push   %edi
415340:	8b 7d 0c             	mov    0xc(%ebp),%edi
415343:	c1 e0 10             	shl    $0x10,%eax
415346:	33 db                	xor    %ebx,%ebx
415348:	89 7d c0             	mov    %edi,-0x40(%ebp)
41534b:	89 55 e0             	mov    %edx,-0x20(%ebp)
41534e:	89 45 f8             	mov    %eax,-0x8(%ebp)
415351:	81 fa 01 c0 ff ff    	cmp    $0xffffc001,%edx
415357:	75 25                	jne    0x41537e
415359:	8b f3                	mov    %ebx,%esi
41535b:	8b c3                	mov    %ebx,%eax
41535d:	39 5c 85 f0          	cmp    %ebx,-0x10(%ebp,%eax,4)
415361:	75 0b                	jne    0x41536e
415363:	40                   	inc    %eax
415364:	83 f8 03             	cmp    $0x3,%eax
415367:	7c f4                	jl     0x41535d
415369:	e9 b9 04 00 00       	jmp    0x415827
41536e:	33 c0                	xor    %eax,%eax
415370:	8d 7d f0             	lea    -0x10(%ebp),%edi
415373:	ab                   	stos   %eax,%es:(%edi)
415374:	ab                   	stos   %eax,%es:(%edi)
415375:	ab                   	stos   %eax,%es:(%edi)
415376:	6a 02                	push   $0x2
415378:	5b                   	pop    %ebx
415379:	e9 a6 04 00 00       	jmp    0x415824
41537e:	a1 14 14 42 00       	mov    0x421414,%eax
415383:	8d 75 f0             	lea    -0x10(%ebp),%esi
415386:	8d 7d e4             	lea    -0x1c(%ebp),%edi
415389:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41538a:	48                   	dec    %eax
41538b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41538c:	8d 48 01             	lea    0x1(%eax),%ecx
41538f:	89 55 dc             	mov    %edx,-0x24(%ebp)
415392:	89 45 cc             	mov    %eax,-0x34(%ebp)
415395:	8b c1                	mov    %ecx,%eax
415397:	99                   	cltd
415398:	6a 1f                	push   $0x1f
41539a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41539b:	5e                   	pop    %esi
41539c:	23 d6                	and    %esi,%edx
41539e:	03 d0                	add    %eax,%edx
4153a0:	c1 fa 05             	sar    $0x5,%edx
4153a3:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4153a6:	89 55 c4             	mov    %edx,-0x3c(%ebp)
4153a9:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
4153af:	79 05                	jns    0x4153b6
4153b1:	49                   	dec    %ecx
4153b2:	83 c9 e0             	or     $0xffffffe0,%ecx
4153b5:	41                   	inc    %ecx
4153b6:	2b f1                	sub    %ecx,%esi
4153b8:	33 c0                	xor    %eax,%eax
4153ba:	40                   	inc    %eax
4153bb:	8b ce                	mov    %esi,%ecx
4153bd:	d3 e0                	shl    %cl,%eax
4153bf:	6a 03                	push   $0x3
4153c1:	83 cf ff             	or     $0xffffffff,%edi
4153c4:	89 75 d0             	mov    %esi,-0x30(%ebp)
4153c7:	5e                   	pop    %esi
4153c8:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
4153cc:	0f 84 a4 00 00 00    	je     0x415476
4153d2:	8b c7                	mov    %edi,%eax
4153d4:	d3 e0                	shl    %cl,%eax
4153d6:	f7 d0                	not    %eax
4153d8:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
4153dc:	eb 04                	jmp    0x4153e2
4153de:	39 5c 95 f0          	cmp    %ebx,-0x10(%ebp,%edx,4)
4153e2:	75 0a                	jne    0x4153ee
4153e4:	42                   	inc    %edx
4153e5:	3b d6                	cmp    %esi,%edx
4153e7:	7c f5                	jl     0x4153de
4153e9:	e9 85 00 00 00       	jmp    0x415473
4153ee:	8b 45 cc             	mov    -0x34(%ebp),%eax
4153f1:	99                   	cltd
4153f2:	6a 1f                	push   $0x1f
4153f4:	59                   	pop    %ecx
4153f5:	23 d1                	and    %ecx,%edx
4153f7:	03 d0                	add    %eax,%edx
4153f9:	8b 45 cc             	mov    -0x34(%ebp),%eax
4153fc:	c1 fa 05             	sar    $0x5,%edx
4153ff:	25 1f 00 00 80       	and    $0x8000001f,%eax
415404:	79 05                	jns    0x41540b
415406:	48                   	dec    %eax
415407:	83 c8 e0             	or     $0xffffffe0,%eax
41540a:	40                   	inc    %eax
41540b:	2b c8                	sub    %eax,%ecx
41540d:	33 c0                	xor    %eax,%eax
41540f:	40                   	inc    %eax
415410:	d3 e0                	shl    %cl,%eax
415412:	6a ff                	push   $0xffffffff
415414:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
415417:	5f                   	pop    %edi
415418:	89 45 c8             	mov    %eax,-0x38(%ebp)
41541b:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
41541f:	8b 4d c8             	mov    -0x38(%ebp),%ecx
415422:	03 c8                	add    %eax,%ecx
415424:	89 4d d8             	mov    %ecx,-0x28(%ebp)
415427:	3b c8                	cmp    %eax,%ecx
415429:	8b 45 d8             	mov    -0x28(%ebp),%eax
41542c:	8b cb                	mov    %ebx,%ecx
41542e:	72 05                	jb     0x415435
415430:	3b 45 c8             	cmp    -0x38(%ebp),%eax
415433:	73 06                	jae    0x41543b
415435:	33 c9                	xor    %ecx,%ecx
415437:	41                   	inc    %ecx
415438:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
41543b:	4a                   	dec    %edx
41543c:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
415440:	78 2e                	js     0x415470
415442:	85 c9                	test   %ecx,%ecx
415444:	74 27                	je     0x41546d
415446:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
41544a:	8b cb                	mov    %ebx,%ecx
41544c:	8d 78 01             	lea    0x1(%eax),%edi
41544f:	3b f8                	cmp    %eax,%edi
415451:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
415454:	89 7d d8             	mov    %edi,-0x28(%ebp)
415457:	8b c7                	mov    %edi,%eax
415459:	72 05                	jb     0x415460
41545b:	83 f8 01             	cmp    $0x1,%eax
41545e:	73 06                	jae    0x415466
415460:	33 c9                	xor    %ecx,%ecx
415462:	41                   	inc    %ecx
415463:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
415466:	4a                   	dec    %edx
415467:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
41546b:	79 d5                	jns    0x415442
41546d:	83 cf ff             	or     $0xffffffff,%edi
415470:	8b 4d d0             	mov    -0x30(%ebp),%ecx
415473:	8b 55 c4             	mov    -0x3c(%ebp),%edx
415476:	8b c7                	mov    %edi,%eax
415478:	d3 e0                	shl    %cl,%eax
41547a:	21 44 95 f0          	and    %eax,-0x10(%ebp,%edx,4)
41547e:	8d 42 01             	lea    0x1(%edx),%eax
415481:	3b c6                	cmp    %esi,%eax
415483:	7d 11                	jge    0x415496
415485:	8d 7d f0             	lea    -0x10(%ebp),%edi
415488:	8b ce                	mov    %esi,%ecx
41548a:	8d 3c 87             	lea    (%edi,%eax,4),%edi
41548d:	2b c8                	sub    %eax,%ecx
41548f:	33 c0                	xor    %eax,%eax
415491:	f3 ab                	rep stos %eax,%es:(%edi)
415493:	83 cf ff             	or     $0xffffffff,%edi
415496:	8b 4d e0             	mov    -0x20(%ebp),%ecx
415499:	39 5d d4             	cmp    %ebx,-0x2c(%ebp)
41549c:	74 01                	je     0x41549f
41549e:	41                   	inc    %ecx
41549f:	8b 15 10 14 42 00    	mov    0x421410,%edx
4154a5:	8b c2                	mov    %edx,%eax
4154a7:	2b 05 14 14 42 00    	sub    0x421414,%eax
4154ad:	3b c8                	cmp    %eax,%ecx
4154af:	7d 0f                	jge    0x4154c0
4154b1:	33 c0                	xor    %eax,%eax
4154b3:	8d 7d f0             	lea    -0x10(%ebp),%edi
4154b6:	ab                   	stos   %eax,%es:(%edi)
4154b7:	ab                   	stos   %eax,%es:(%edi)
4154b8:	ab                   	stos   %eax,%es:(%edi)
4154b9:	8b f3                	mov    %ebx,%esi
4154bb:	e9 b6 fe ff ff       	jmp    0x415376
4154c0:	3b ca                	cmp    %edx,%ecx
4154c2:	0f 8f 19 02 00 00    	jg     0x4156e1
4154c8:	2b 55 dc             	sub    -0x24(%ebp),%edx
4154cb:	8d 75 e4             	lea    -0x1c(%ebp),%esi
4154ce:	89 55 d0             	mov    %edx,-0x30(%ebp)
4154d1:	8b c2                	mov    %edx,%eax
4154d3:	99                   	cltd
4154d4:	8d 7d f0             	lea    -0x10(%ebp),%edi
4154d7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4154d8:	83 e2 1f             	and    $0x1f,%edx
4154db:	03 c2                	add    %edx,%eax
4154dd:	c1 f8 05             	sar    $0x5,%eax
4154e0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4154e1:	89 45 c4             	mov    %eax,-0x3c(%ebp)
4154e4:	8b 45 d0             	mov    -0x30(%ebp),%eax
4154e7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4154e8:	25 1f 00 00 80       	and    $0x8000001f,%eax
4154ed:	79 05                	jns    0x4154f4
4154ef:	48                   	dec    %eax
4154f0:	83 c8 e0             	or     $0xffffffe0,%eax
4154f3:	40                   	inc    %eax
4154f4:	89 45 d0             	mov    %eax,-0x30(%ebp)
4154f7:	83 cf ff             	or     $0xffffffff,%edi
4154fa:	8b c7                	mov    %edi,%eax
4154fc:	8b 7d d0             	mov    -0x30(%ebp),%edi
4154ff:	8b cf                	mov    %edi,%ecx
415501:	d3 e0                	shl    %cl,%eax
415503:	6a 20                	push   $0x20
415505:	89 5d e0             	mov    %ebx,-0x20(%ebp)
415508:	f7 d0                	not    %eax
41550a:	89 45 d8             	mov    %eax,-0x28(%ebp)
41550d:	58                   	pop    %eax
41550e:	2b c7                	sub    %edi,%eax
415510:	6a 03                	push   $0x3
415512:	89 45 c8             	mov    %eax,-0x38(%ebp)
415515:	5e                   	pop    %esi
415516:	8b 54 9d f0          	mov    -0x10(%ebp,%ebx,4),%edx
41551a:	8b c2                	mov    %edx,%eax
41551c:	23 45 d8             	and    -0x28(%ebp),%eax