4092e7:	89 7c 8d e0          	mov    %edi,-0x20(%ebp,%ecx,4)
4092eb:	8b 7d f0             	mov    -0x10(%ebp),%edi
4092ee:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4092f1:	d3 e7                	shl    %cl,%edi
4092f3:	ff 45 08             	incl   0x8(%ebp)
4092f6:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
4092fa:	89 7d f4             	mov    %edi,-0xc(%ebp)
4092fd:	7c d0                	jl     0x4092cf
4092ff:	8b f0                	mov    %eax,%esi
409301:	6a 02                	push   $0x2
409303:	c1 e6 02             	shl    $0x2,%esi
409306:	8d 4d e8             	lea    -0x18(%ebp),%ecx
409309:	5a                   	pop    %edx
40930a:	2b ce                	sub    %esi,%ecx
40930c:	3b d0                	cmp    %eax,%edx
40930e:	7c 08                	jl     0x409318
409310:	8b 31                	mov    (%ecx),%esi
409312:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
409316:	eb 05                	jmp    0x40931d
409318:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
40931d:	4a                   	dec    %edx
40931e:	83 e9 04             	sub    $0x4,%ecx
409321:	85 d2                	test   %edx,%edx
409323:	7d e7                	jge    0x40930c
409325:	33 c0                	xor    %eax,%eax
409327:	5e                   	pop    %esi
409328:	6a 1f                	push   $0x1f
40932a:	59                   	pop    %ecx
40932b:	2b 0d 2c fd 41 00    	sub    0x41fd2c,%ecx
409331:	d3 e3                	shl    %cl,%ebx
409333:	8b 4d ec             	mov    -0x14(%ebp),%ecx
409336:	f7 d9                	neg    %ecx
409338:	1b c9                	sbb    %ecx,%ecx
40933a:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
409340:	0b d9                	or     %ecx,%ebx
409342:	8b 0d 30 fd 41 00    	mov    0x41fd30,%ecx
409348:	0b 5d e0             	or     -0x20(%ebp),%ebx
40934b:	83 f9 40             	cmp    $0x40,%ecx
40934e:	75 0d                	jne    0x40935d
409350:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409353:	8b 55 e4             	mov    -0x1c(%ebp),%edx
409356:	89 59 04             	mov    %ebx,0x4(%ecx)
409359:	89 11                	mov    %edx,(%ecx)
40935b:	eb 0a                	jmp    0x409367
40935d:	83 f9 20             	cmp    $0x20,%ecx
409360:	75 05                	jne    0x409367
409362:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409365:	89 19                	mov    %ebx,(%ecx)
409367:	5f                   	pop    %edi
409368:	5b                   	pop    %ebx
409369:	c9                   	leave
40936a:	c3                   	ret
40936b:	8b ff                	mov    %edi,%edi
40936d:	55                   	push   %ebp
40936e:	8b ec                	mov    %esp,%ebp
409370:	83 ec 2c             	sub    $0x2c,%esp
409373:	8b 45 08             	mov    0x8(%ebp),%eax
409376:	0f b7 48 0a          	movzwl 0xa(%eax),%ecx
40937a:	53                   	push   %ebx
40937b:	8b d9                	mov    %ecx,%ebx
40937d:	81 e1 00 80 00 00    	and    $0x8000,%ecx
409383:	89 4d ec             	mov    %ecx,-0x14(%ebp)
409386:	8b 48 06             	mov    0x6(%eax),%ecx
409389:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40938c:	8b 48 02             	mov    0x2(%eax),%ecx
40938f:	0f b7 00             	movzwl (%eax),%eax
409392:	81 e3 ff 7f 00 00    	and    $0x7fff,%ebx
409398:	81 eb ff 3f 00 00    	sub    $0x3fff,%ebx
40939e:	c1 e0 10             	shl    $0x10,%eax
4093a1:	57                   	push   %edi
4093a2:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4093a5:	89 45 e8             	mov    %eax,-0x18(%ebp)
4093a8:	81 fb 01 c0 ff ff    	cmp    $0xffffc001,%ebx
4093ae:	75 27                	jne    0x4093d7
4093b0:	33 db                	xor    %ebx,%ebx
4093b2:	33 c0                	xor    %eax,%eax
4093b4:	39 5c 85 e0          	cmp    %ebx,-0x20(%ebp,%eax,4)
4093b8:	75 0d                	jne    0x4093c7
4093ba:	40                   	inc    %eax
4093bb:	83 f8 03             	cmp    $0x3,%eax
4093be:	7c f4                	jl     0x4093b4
4093c0:	33 c0                	xor    %eax,%eax
4093c2:	e9 a5 04 00 00       	jmp    0x40986c
4093c7:	33 c0                	xor    %eax,%eax
4093c9:	8d 7d e0             	lea    -0x20(%ebp),%edi
4093cc:	ab                   	stos   %eax,%es:(%edi)
4093cd:	ab                   	stos   %eax,%es:(%edi)
4093ce:	6a 02                	push   $0x2
4093d0:	ab                   	stos   %eax,%es:(%edi)
4093d1:	58                   	pop    %eax
4093d2:	e9 95 04 00 00       	jmp    0x40986c
4093d7:	83 65 08 00          	andl   $0x0,0x8(%ebp)
4093db:	56                   	push   %esi
4093dc:	8d 75 e0             	lea    -0x20(%ebp),%esi
4093df:	8d 7d d4             	lea    -0x2c(%ebp),%edi
4093e2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4093e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4093e4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4093e5:	8b 35 40 fd 41 00    	mov    0x41fd40,%esi
4093eb:	4e                   	dec    %esi
4093ec:	8d 4e 01             	lea    0x1(%esi),%ecx
4093ef:	8b c1                	mov    %ecx,%eax
4093f1:	99                   	cltd
4093f2:	83 e2 1f             	and    $0x1f,%edx
4093f5:	03 c2                	add    %edx,%eax
4093f7:	c1 f8 05             	sar    $0x5,%eax
4093fa:	8b d1                	mov    %ecx,%edx
4093fc:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
409402:	89 5d f0             	mov    %ebx,-0x10(%ebp)
409405:	89 45 f4             	mov    %eax,-0xc(%ebp)
409408:	79 05                	jns    0x40940f
40940a:	4a                   	dec    %edx
40940b:	83 ca e0             	or     $0xffffffe0,%edx
40940e:	42                   	inc    %edx
40940f:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
409413:	6a 1f                	push   $0x1f
409415:	33 c0                	xor    %eax,%eax
409417:	59                   	pop    %ecx
409418:	2b ca                	sub    %edx,%ecx
40941a:	40                   	inc    %eax
40941b:	d3 e0                	shl    %cl,%eax
40941d:	89 4d f8             	mov    %ecx,-0x8(%ebp)
409420:	85 07                	test   %eax,(%edi)
409422:	0f 84 8d 00 00 00    	je     0x4094b5
409428:	8b 45 f4             	mov    -0xc(%ebp),%eax
40942b:	83 ca ff             	or     $0xffffffff,%edx
40942e:	d3 e2                	shl    %cl,%edx
409430:	f7 d2                	not    %edx
409432:	85 54 85 e0          	test   %edx,-0x20(%ebp,%eax,4)
409436:	eb 05                	jmp    0x40943d
409438:	83 7c 85 e0 00       	cmpl   $0x0,-0x20(%ebp,%eax,4)
40943d:	75 08                	jne    0x409447
40943f:	40                   	inc    %eax
409440:	83 f8 03             	cmp    $0x3,%eax
409443:	7c f3                	jl     0x409438
409445:	eb 6e                	jmp    0x4094b5
409447:	8b c6                	mov    %esi,%eax
409449:	99                   	cltd
40944a:	6a 1f                	push   $0x1f
40944c:	59                   	pop    %ecx
40944d:	23 d1                	and    %ecx,%edx
40944f:	03 c2                	add    %edx,%eax
409451:	c1 f8 05             	sar    $0x5,%eax
409454:	81 e6 1f 00 00 80    	and    $0x8000001f,%esi
40945a:	79 05                	jns    0x409461
40945c:	4e                   	dec    %esi
40945d:	83 ce e0             	or     $0xffffffe0,%esi
409460:	46                   	inc    %esi
409461:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409465:	2b ce                	sub    %esi,%ecx
409467:	33 d2                	xor    %edx,%edx
409469:	42                   	inc    %edx
40946a:	d3 e2                	shl    %cl,%edx
40946c:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
409470:	8b 31                	mov    (%ecx),%esi
409472:	03 f2                	add    %edx,%esi
409474:	89 75 08             	mov    %esi,0x8(%ebp)
409477:	8b 31                	mov    (%ecx),%esi
409479:	39 75 08             	cmp    %esi,0x8(%ebp)
40947c:	72 22                	jb     0x4094a0
40947e:	39 55 08             	cmp    %edx,0x8(%ebp)
409481:	eb 1b                	jmp    0x40949e
409483:	85 c9                	test   %ecx,%ecx
409485:	74 2b                	je     0x4094b2
409487:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40948b:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
40948f:	8b 11                	mov    (%ecx),%edx
409491:	8d 72 01             	lea    0x1(%edx),%esi
409494:	89 75 08             	mov    %esi,0x8(%ebp)
409497:	3b f2                	cmp    %edx,%esi
409499:	72 05                	jb     0x4094a0
40949b:	83 fe 01             	cmp    $0x1,%esi
40949e:	73 07                	jae    0x4094a7
4094a0:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4094a7:	48                   	dec    %eax
4094a8:	8b 55 08             	mov    0x8(%ebp),%edx
4094ab:	89 11                	mov    %edx,(%ecx)
4094ad:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4094b0:	79 d1                	jns    0x409483
4094b2:	89 4d 08             	mov    %ecx,0x8(%ebp)
4094b5:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4094b8:	83 c8 ff             	or     $0xffffffff,%eax
4094bb:	d3 e0                	shl    %cl,%eax
4094bd:	21 07                	and    %eax,(%edi)
4094bf:	8b 45 f4             	mov    -0xc(%ebp),%eax
4094c2:	40                   	inc    %eax
4094c3:	83 f8 03             	cmp    $0x3,%eax
4094c6:	7d 0d                	jge    0x4094d5
4094c8:	6a 03                	push   $0x3
4094ca:	59                   	pop    %ecx
4094cb:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
4094cf:	2b c8                	sub    %eax,%ecx
4094d1:	33 c0                	xor    %eax,%eax
4094d3:	f3 ab                	rep stos %eax,%es:(%edi)
4094d5:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4094d9:	74 01                	je     0x4094dc
4094db:	43                   	inc    %ebx
4094dc:	a1 3c fd 41 00       	mov    0x41fd3c,%eax
4094e1:	8b c8                	mov    %eax,%ecx
4094e3:	2b 0d 40 fd 41 00    	sub    0x41fd40,%ecx
4094e9:	3b d9                	cmp    %ecx,%ebx
4094eb:	7d 0d                	jge    0x4094fa
4094ed:	33 c0                	xor    %eax,%eax
4094ef:	8d 7d e0             	lea    -0x20(%ebp),%edi
4094f2:	ab                   	stos   %eax,%es:(%edi)
4094f3:	ab                   	stos   %eax,%es:(%edi)
4094f4:	ab                   	stos   %eax,%es:(%edi)
4094f5:	e9 0d 02 00 00       	jmp    0x409707
4094fa:	3b d8                	cmp    %eax,%ebx
4094fc:	0f 8f 0f 02 00 00    	jg     0x409711
409502:	2b 45 f0             	sub    -0x10(%ebp),%eax
409505:	8d 75 d4             	lea    -0x2c(%ebp),%esi
409508:	8b c8                	mov    %eax,%ecx
40950a:	8d 7d e0             	lea    -0x20(%ebp),%edi
40950d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40950e:	99                   	cltd
40950f:	83 e2 1f             	and    $0x1f,%edx
409512:	03 c2                	add    %edx,%eax
409514:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409515:	8b d1                	mov    %ecx,%edx
409517:	c1 f8 05             	sar    $0x5,%eax
40951a:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
409520:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409521:	79 05                	jns    0x409528
409523:	4a                   	dec    %edx
409524:	83 ca e0             	or     $0xffffffe0,%edx
409527:	42                   	inc    %edx
409528:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40952c:	83 65 08 00          	andl   $0x0,0x8(%ebp)
409530:	83 cf ff             	or     $0xffffffff,%edi
409533:	8b ca                	mov    %edx,%ecx
409535:	d3 e7                	shl    %cl,%edi
409537:	c7 45 fc 20 00 00 00 	movl   $0x20,-0x4(%ebp)
40953e:	29 55 fc             	sub    %edx,-0x4(%ebp)
409541:	f7 d7                	not    %edi
409543:	8b 5d 08             	mov    0x8(%ebp),%ebx
409546:	8d 5c 9d e0          	lea    -0x20(%ebp,%ebx,4),%ebx
40954a:	8b 33                	mov    (%ebx),%esi
40954c:	8b ce                	mov    %esi,%ecx
40954e:	23 cf                	and    %edi,%ecx
409550:	89 4d f0             	mov    %ecx,-0x10(%ebp)
409553:	8b ca                	mov    %edx,%ecx
409555:	d3 ee                	shr    %cl,%esi
409557:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40955a:	0b 75 f4             	or     -0xc(%ebp),%esi
40955d:	89 33                	mov    %esi,(%ebx)
40955f:	8b 75 f0             	mov    -0x10(%ebp),%esi
409562:	d3 e6                	shl    %cl,%esi
409564:	ff 45 08             	incl   0x8(%ebp)
409567:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
40956b:	89 75 f4             	mov    %esi,-0xc(%ebp)
40956e:	7c d3                	jl     0x409543
409570:	8b f0                	mov    %eax,%esi
409572:	6a 02                	push   $0x2
409574:	c1 e6 02             	shl    $0x2,%esi
409577:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40957a:	5a                   	pop    %edx
40957b:	2b ce                	sub    %esi,%ecx
40957d:	3b d0                	cmp    %eax,%edx
40957f:	7c 08                	jl     0x409589
409581:	8b 31                	mov    (%ecx),%esi
409583:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
409587:	eb 05                	jmp    0x40958e
409589:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
40958e:	4a                   	dec    %edx
40958f:	83 e9 04             	sub    $0x4,%ecx
409592:	85 d2                	test   %edx,%edx
409594:	7d e7                	jge    0x40957d
409596:	8b 35 40 fd 41 00    	mov    0x41fd40,%esi
40959c:	4e                   	dec    %esi
40959d:	8d 4e 01             	lea    0x1(%esi),%ecx
4095a0:	8b c1                	mov    %ecx,%eax
4095a2:	99                   	cltd
4095a3:	83 e2 1f             	and    $0x1f,%edx
4095a6:	03 c2                	add    %edx,%eax
4095a8:	c1 f8 05             	sar    $0x5,%eax
4095ab:	8b d1                	mov    %ecx,%edx
4095ad:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
4095b3:	89 45 f4             	mov    %eax,-0xc(%ebp)
4095b6:	79 05                	jns    0x4095bd
4095b8:	4a                   	dec    %edx
4095b9:	83 ca e0             	or     $0xffffffe0,%edx
4095bc:	42                   	inc    %edx
4095bd:	6a 1f                	push   $0x1f
4095bf:	59                   	pop    %ecx
4095c0:	2b ca                	sub    %edx,%ecx
4095c2:	33 d2                	xor    %edx,%edx
4095c4:	42                   	inc    %edx
4095c5:	d3 e2                	shl    %cl,%edx
4095c7:	8d 5c 85 e0          	lea    -0x20(%ebp,%eax,4),%ebx
4095cb:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4095ce:	85 13                	test   %edx,(%ebx)
4095d0:	0f 84 82 00 00 00    	je     0x409658
4095d6:	83 ca ff             	or     $0xffffffff,%edx
4095d9:	d3 e2                	shl    %cl,%edx
4095db:	f7 d2                	not    %edx
4095dd:	85 54 85 e0          	test   %edx,-0x20(%ebp,%eax,4)
4095e1:	eb 05                	jmp    0x4095e8
4095e3:	83 7c 85 e0 00       	cmpl   $0x0,-0x20(%ebp,%eax,4)
4095e8:	75 08                	jne    0x4095f2
4095ea:	40                   	inc    %eax
4095eb:	83 f8 03             	cmp    $0x3,%eax
4095ee:	7c f3                	jl     0x4095e3
4095f0:	eb 66                	jmp    0x409658
4095f2:	8b c6                	mov    %esi,%eax
4095f4:	99                   	cltd
4095f5:	6a 1f                	push   $0x1f
4095f7:	59                   	pop    %ecx
4095f8:	23 d1                	and    %ecx,%edx
4095fa:	03 c2                	add    %edx,%eax
4095fc:	c1 f8 05             	sar    $0x5,%eax
4095ff:	81 e6 1f 00 00 80    	and    $0x8000001f,%esi
409605:	79 05                	jns    0x40960c
409607:	4e                   	dec    %esi
409608:	83 ce e0             	or     $0xffffffe0,%esi
40960b:	46                   	inc    %esi
40960c:	83 65 08 00          	andl   $0x0,0x8(%ebp)
409610:	33 d2                	xor    %edx,%edx
409612:	2b ce                	sub    %esi,%ecx
409614:	42                   	inc    %edx
409615:	d3 e2                	shl    %cl,%edx
409617:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
40961b:	8b 31                	mov    (%ecx),%esi
40961d:	8d 3c 16             	lea    (%esi,%edx,1),%edi
409620:	3b fe                	cmp    %esi,%edi
409622:	72 04                	jb     0x409628
409624:	3b fa                	cmp    %edx,%edi
409626:	73 07                	jae    0x40962f
409628:	c7 45 08 01 00 00 00 	movl   $0x1,0x8(%ebp)
40962f:	89 39                	mov    %edi,(%ecx)
409631:	8b 4d 08             	mov    0x8(%ebp),%ecx
409634:	eb 1f                	jmp    0x409655
409636:	85 c9                	test   %ecx,%ecx
409638:	74 1e                	je     0x409658
40963a:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
40963e:	8b 11                	mov    (%ecx),%edx
409640:	8d 72 01             	lea    0x1(%edx),%esi
409643:	33 ff                	xor    %edi,%edi
409645:	3b f2                	cmp    %edx,%esi
409647:	72 05                	jb     0x40964e
409649:	83 fe 01             	cmp    $0x1,%esi
40964c:	73 03                	jae    0x409651
40964e:	33 ff                	xor    %edi,%edi
409650:	47                   	inc    %edi
409651:	89 31                	mov    %esi,(%ecx)
409653:	8b cf                	mov    %edi,%ecx
409655:	48                   	dec    %eax
409656:	79 de                	jns    0x409636
409658:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40965b:	83 c8 ff             	or     $0xffffffff,%eax