41551f:	8b cf                	mov    %edi,%ecx
415521:	d3 ea                	shr    %cl,%edx
415523:	8b 4d c8             	mov    -0x38(%ebp),%ecx
415526:	d3 e0                	shl    %cl,%eax
415528:	0b 55 e0             	or     -0x20(%ebp),%edx
41552b:	43                   	inc    %ebx
41552c:	89 54 9d ec          	mov    %edx,-0x14(%ebp,%ebx,4)
415530:	89 45 e0             	mov    %eax,-0x20(%ebp)
415533:	3b de                	cmp    %esi,%ebx
415535:	7c df                	jl     0x415516
415537:	8b 45 c4             	mov    -0x3c(%ebp),%eax
41553a:	c1 e0 02             	shl    $0x2,%eax
41553d:	8d 55 f8             	lea    -0x8(%ebp),%edx
415540:	6a 02                	push   $0x2
415542:	2b d0                	sub    %eax,%edx
415544:	8b 45 c4             	mov    -0x3c(%ebp),%eax
415547:	33 db                	xor    %ebx,%ebx
415549:	59                   	pop    %ecx
41554a:	83 cf ff             	or     $0xffffffff,%edi
41554d:	3b c8                	cmp    %eax,%ecx
41554f:	7c 0b                	jl     0x41555c
415551:	8b 02                	mov    (%edx),%eax
415553:	89 44 8d f0          	mov    %eax,-0x10(%ebp,%ecx,4)
415557:	8b 45 c4             	mov    -0x3c(%ebp),%eax
41555a:	eb 04                	jmp    0x415560
41555c:	89 5c 8d f0          	mov    %ebx,-0x10(%ebp,%ecx,4)
415560:	83 ea 04             	sub    $0x4,%edx
415563:	49                   	dec    %ecx
415564:	79 e7                	jns    0x41554d
415566:	8b 4d cc             	mov    -0x34(%ebp),%ecx
415569:	41                   	inc    %ecx
41556a:	8b c1                	mov    %ecx,%eax
41556c:	99                   	cltd
41556d:	83 e2 1f             	and    $0x1f,%edx
415570:	03 d0                	add    %eax,%edx
415572:	c1 fa 05             	sar    $0x5,%edx
415575:	89 55 d4             	mov    %edx,-0x2c(%ebp)
415578:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
41557e:	79 05                	jns    0x415585
415580:	49                   	dec    %ecx
415581:	83 c9 e0             	or     $0xffffffe0,%ecx
415584:	41                   	inc    %ecx
415585:	6a 1f                	push   $0x1f
415587:	58                   	pop    %eax
415588:	2b c1                	sub    %ecx,%eax
41558a:	89 45 d0             	mov    %eax,-0x30(%ebp)
41558d:	8b 4d d0             	mov    -0x30(%ebp),%ecx
415590:	33 c0                	xor    %eax,%eax
415592:	40                   	inc    %eax
415593:	d3 e0                	shl    %cl,%eax
415595:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
415599:	0f 84 92 00 00 00    	je     0x415631
41559f:	8b c7                	mov    %edi,%eax
4155a1:	d3 e0                	shl    %cl,%eax
4155a3:	f7 d0                	not    %eax
4155a5:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
4155a9:	eb 04                	jmp    0x4155af
4155ab:	39 5c 95 f0          	cmp    %ebx,-0x10(%ebp,%edx,4)
4155af:	75 07                	jne    0x4155b8
4155b1:	42                   	inc    %edx
4155b2:	3b d6                	cmp    %esi,%edx
4155b4:	7c f5                	jl     0x4155ab
4155b6:	eb 76                	jmp    0x41562e
4155b8:	8b 7d cc             	mov    -0x34(%ebp),%edi
4155bb:	8b c7                	mov    %edi,%eax
4155bd:	99                   	cltd
4155be:	6a 1f                	push   $0x1f
4155c0:	59                   	pop    %ecx
4155c1:	23 d1                	and    %ecx,%edx
4155c3:	03 d0                	add    %eax,%edx
4155c5:	c1 fa 05             	sar    $0x5,%edx
4155c8:	81 e7 1f 00 00 80    	and    $0x8000001f,%edi
4155ce:	79 05                	jns    0x4155d5
4155d0:	4f                   	dec    %edi
4155d1:	83 cf e0             	or     $0xffffffe0,%edi
4155d4:	47                   	inc    %edi
4155d5:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
4155d9:	2b cf                	sub    %edi,%ecx
4155db:	33 ff                	xor    %edi,%edi
4155dd:	47                   	inc    %edi
4155de:	d3 e7                	shl    %cl,%edi
4155e0:	6a ff                	push   $0xffffffff
4155e2:	8b cb                	mov    %ebx,%ecx
4155e4:	89 7d dc             	mov    %edi,-0x24(%ebp)
4155e7:	03 f8                	add    %eax,%edi
4155e9:	89 7d e0             	mov    %edi,-0x20(%ebp)
4155ec:	3b f8                	cmp    %eax,%edi
4155ee:	8b 45 e0             	mov    -0x20(%ebp),%eax
4155f1:	5f                   	pop    %edi
4155f2:	72 05                	jb     0x4155f9
4155f4:	3b 45 dc             	cmp    -0x24(%ebp),%eax
4155f7:	73 03                	jae    0x4155fc
4155f9:	33 c9                	xor    %ecx,%ecx
4155fb:	41                   	inc    %ecx
4155fc:	4a                   	dec    %edx
4155fd:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
415601:	78 28                	js     0x41562b
415603:	85 c9                	test   %ecx,%ecx
415605:	74 21                	je     0x415628
415607:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
41560b:	8b cb                	mov    %ebx,%ecx
41560d:	8d 78 01             	lea    0x1(%eax),%edi
415610:	3b f8                	cmp    %eax,%edi
415612:	89 7d e0             	mov    %edi,-0x20(%ebp)
415615:	8b c7                	mov    %edi,%eax
415617:	72 05                	jb     0x41561e
415619:	83 f8 01             	cmp    $0x1,%eax
41561c:	73 03                	jae    0x415621
41561e:	33 c9                	xor    %ecx,%ecx
415620:	41                   	inc    %ecx
415621:	4a                   	dec    %edx
415622:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
415626:	79 db                	jns    0x415603
415628:	83 cf ff             	or     $0xffffffff,%edi
41562b:	8b 4d d0             	mov    -0x30(%ebp),%ecx
41562e:	8b 55 d4             	mov    -0x2c(%ebp),%edx
415631:	8b c7                	mov    %edi,%eax
415633:	d3 e0                	shl    %cl,%eax
415635:	21 44 95 f0          	and    %eax,-0x10(%ebp,%edx,4)
415639:	42                   	inc    %edx
41563a:	3b d6                	cmp    %esi,%edx
41563c:	7d 11                	jge    0x41564f
41563e:	8d 7d f0             	lea    -0x10(%ebp),%edi
415641:	8b ce                	mov    %esi,%ecx
415643:	8d 3c 97             	lea    (%edi,%edx,4),%edi
415646:	2b ca                	sub    %edx,%ecx
415648:	33 c0                	xor    %eax,%eax
41564a:	f3 ab                	rep stos %eax,%es:(%edi)
41564c:	83 cf ff             	or     $0xffffffff,%edi
41564f:	8b 0d 18 14 42 00    	mov    0x421418,%ecx
415655:	41                   	inc    %ecx
415656:	8b c1                	mov    %ecx,%eax
415658:	99                   	cltd
415659:	83 e2 1f             	and    $0x1f,%edx
41565c:	03 c2                	add    %edx,%eax
41565e:	c1 f8 05             	sar    $0x5,%eax
415661:	89 45 d8             	mov    %eax,-0x28(%ebp)
415664:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
41566a:	79 05                	jns    0x415671
41566c:	49                   	dec    %ecx
41566d:	83 c9 e0             	or     $0xffffffe0,%ecx
415670:	41                   	inc    %ecx
415671:	89 4d dc             	mov    %ecx,-0x24(%ebp)
415674:	d3 e7                	shl    %cl,%edi
415676:	8b c3                	mov    %ebx,%eax
415678:	6a 20                	push   $0x20
41567a:	89 5d e0             	mov    %ebx,-0x20(%ebp)
41567d:	8b 5d dc             	mov    -0x24(%ebp),%ebx
415680:	59                   	pop    %ecx
415681:	2b cb                	sub    %ebx,%ecx
415683:	f7 d7                	not    %edi
415685:	89 45 cc             	mov    %eax,-0x34(%ebp)
415688:	89 4d dc             	mov    %ecx,-0x24(%ebp)
41568b:	8b 54 85 f0          	mov    -0x10(%ebp,%eax,4),%edx
41568f:	8b c2                	mov    %edx,%eax
415691:	8b cb                	mov    %ebx,%ecx
415693:	d3 ea                	shr    %cl,%edx
415695:	8b 4d cc             	mov    -0x34(%ebp),%ecx
415698:	23 c7                	and    %edi,%eax
41569a:	0b 55 e0             	or     -0x20(%ebp),%edx
41569d:	89 54 8d f0          	mov    %edx,-0x10(%ebp,%ecx,4)
4156a1:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4156a4:	d3 e0                	shl    %cl,%eax
4156a6:	89 45 e0             	mov    %eax,-0x20(%ebp)
4156a9:	8b 45 cc             	mov    -0x34(%ebp),%eax
4156ac:	40                   	inc    %eax
4156ad:	89 45 cc             	mov    %eax,-0x34(%ebp)
4156b0:	3b c6                	cmp    %esi,%eax
4156b2:	7c d7                	jl     0x41568b
4156b4:	8b 75 d8             	mov    -0x28(%ebp),%esi
4156b7:	8b c6                	mov    %esi,%eax
4156b9:	c1 e0 02             	shl    $0x2,%eax
4156bc:	8d 55 f8             	lea    -0x8(%ebp),%edx
4156bf:	6a 02                	push   $0x2
4156c1:	2b d0                	sub    %eax,%edx
4156c3:	59                   	pop    %ecx
4156c4:	33 db                	xor    %ebx,%ebx
4156c6:	3b ce                	cmp    %esi,%ecx
4156c8:	7c 08                	jl     0x4156d2
4156ca:	8b 02                	mov    (%edx),%eax
4156cc:	89 44 8d f0          	mov    %eax,-0x10(%ebp,%ecx,4)
4156d0:	eb 04                	jmp    0x4156d6
4156d2:	89 5c 8d f0          	mov    %ebx,-0x10(%ebp,%ecx,4)
4156d6:	83 ea 04             	sub    $0x4,%edx
4156d9:	49                   	dec    %ecx
4156da:	79 ea                	jns    0x4156c6
4156dc:	e9 d8 fd ff ff       	jmp    0x4154b9
4156e1:	3b 0d 0c 14 42 00    	cmp    0x42140c,%ecx
4156e7:	0f 8c a2 00 00 00    	jl     0x41578f
4156ed:	8b 0d 18 14 42 00    	mov    0x421418,%ecx
4156f3:	33 c0                	xor    %eax,%eax
4156f5:	8d 7d f0             	lea    -0x10(%ebp),%edi
4156f8:	ab                   	stos   %eax,%es:(%edi)
4156f9:	ab                   	stos   %eax,%es:(%edi)
4156fa:	ab                   	stos   %eax,%es:(%edi)
4156fb:	81 4d f0 00 00 00 80 	orl    $0x80000000,-0x10(%ebp)
415702:	8b c1                	mov    %ecx,%eax
415704:	99                   	cltd
415705:	83 e2 1f             	and    $0x1f,%edx
415708:	03 c2                	add    %edx,%eax
41570a:	c1 f8 05             	sar    $0x5,%eax
41570d:	89 45 cc             	mov    %eax,-0x34(%ebp)
415710:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
415716:	79 05                	jns    0x41571d
415718:	49                   	dec    %ecx
415719:	83 c9 e0             	or     $0xffffffe0,%ecx
41571c:	41                   	inc    %ecx
41571d:	83 cf ff             	or     $0xffffffff,%edi
415720:	d3 e7                	shl    %cl,%edi
415722:	6a 20                	push   $0x20
415724:	58                   	pop    %eax
415725:	2b c1                	sub    %ecx,%eax
415727:	89 4d c8             	mov    %ecx,-0x38(%ebp)
41572a:	f7 d7                	not    %edi
41572c:	89 5d e0             	mov    %ebx,-0x20(%ebp)
41572f:	89 45 d8             	mov    %eax,-0x28(%ebp)
415732:	8b 54 9d f0          	mov    -0x10(%ebp,%ebx,4),%edx
415736:	8b c2                	mov    %edx,%eax
415738:	d3 ea                	shr    %cl,%edx
41573a:	8b 4d d8             	mov    -0x28(%ebp),%ecx
41573d:	23 c7                	and    %edi,%eax
41573f:	d3 e0                	shl    %cl,%eax
415741:	0b 55 e0             	or     -0x20(%ebp),%edx
415744:	8b 4d c8             	mov    -0x38(%ebp),%ecx
415747:	89 54 9d f0          	mov    %edx,-0x10(%ebp,%ebx,4)
41574b:	43                   	inc    %ebx
41574c:	89 45 e0             	mov    %eax,-0x20(%ebp)
41574f:	3b de                	cmp    %esi,%ebx
415751:	7c df                	jl     0x415732
415753:	8b 75 cc             	mov    -0x34(%ebp),%esi
415756:	8b c6                	mov    %esi,%eax
415758:	c1 e0 02             	shl    $0x2,%eax
41575b:	8d 55 f8             	lea    -0x8(%ebp),%edx
41575e:	6a 02                	push   $0x2
415760:	2b d0                	sub    %eax,%edx
415762:	59                   	pop    %ecx
415763:	33 db                	xor    %ebx,%ebx
415765:	3b ce                	cmp    %esi,%ecx
415767:	7c 08                	jl     0x415771
415769:	8b 02                	mov    (%edx),%eax
41576b:	89 44 8d f0          	mov    %eax,-0x10(%ebp,%ecx,4)
41576f:	eb 04                	jmp    0x415775
415771:	89 5c 8d f0          	mov    %ebx,-0x10(%ebp,%ecx,4)
415775:	83 ea 04             	sub    $0x4,%edx
415778:	49                   	dec    %ecx
415779:	79 ea                	jns    0x415765
41577b:	8b 35 20 14 42 00    	mov    0x421420,%esi
415781:	03 35 0c 14 42 00    	add    0x42140c,%esi
415787:	33 db                	xor    %ebx,%ebx
415789:	43                   	inc    %ebx
41578a:	e9 95 00 00 00       	jmp    0x415824
41578f:	8b 35 20 14 42 00    	mov    0x421420,%esi
415795:	81 65 f0 ff ff ff 7f 	andl   $0x7fffffff,-0x10(%ebp)
41579c:	03 f1                	add    %ecx,%esi
41579e:	8b 0d 18 14 42 00    	mov    0x421418,%ecx
4157a4:	8b c1                	mov    %ecx,%eax
4157a6:	99                   	cltd
4157a7:	83 e2 1f             	and    $0x1f,%edx
4157aa:	03 c2                	add    %edx,%eax
4157ac:	c1 f8 05             	sar    $0x5,%eax
4157af:	89 75 c8             	mov    %esi,-0x38(%ebp)
4157b2:	89 45 d8             	mov    %eax,-0x28(%ebp)
4157b5:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
4157bb:	79 05                	jns    0x4157c2
4157bd:	49                   	dec    %ecx
4157be:	83 c9 e0             	or     $0xffffffe0,%ecx
4157c1:	41                   	inc    %ecx
4157c2:	d3 e7                	shl    %cl,%edi
4157c4:	6a 20                	push   $0x20
4157c6:	89 5d e0             	mov    %ebx,-0x20(%ebp)
4157c9:	8b f3                	mov    %ebx,%esi
4157cb:	58                   	pop    %eax
4157cc:	8b d9                	mov    %ecx,%ebx
4157ce:	2b c3                	sub    %ebx,%eax
4157d0:	89 4d dc             	mov    %ecx,-0x24(%ebp)
4157d3:	f7 d7                	not    %edi
4157d5:	89 45 dc             	mov    %eax,-0x24(%ebp)
4157d8:	8b 54 b5 f0          	mov    -0x10(%ebp,%esi,4),%edx
4157dc:	8b c2                	mov    %edx,%eax
4157de:	8b cb                	mov    %ebx,%ecx
4157e0:	d3 ea                	shr    %cl,%edx
4157e2:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4157e5:	23 c7                	and    %edi,%eax
4157e7:	d3 e0                	shl    %cl,%eax
4157e9:	0b 55 e0             	or     -0x20(%ebp),%edx
4157ec:	46                   	inc    %esi
4157ed:	89 54 b5 ec          	mov    %edx,-0x14(%ebp,%esi,4)
4157f1:	89 45 e0             	mov    %eax,-0x20(%ebp)
4157f4:	83 fe 03             	cmp    $0x3,%esi
4157f7:	7c df                	jl     0x4157d8
4157f9:	8b 7d d8             	mov    -0x28(%ebp),%edi
4157fc:	8b 75 c8             	mov    -0x38(%ebp),%esi
4157ff:	8b c7                	mov    %edi,%eax
415801:	c1 e0 02             	shl    $0x2,%eax
415804:	8d 55 f8             	lea    -0x8(%ebp),%edx
415807:	6a 02                	push   $0x2
415809:	2b d0                	sub    %eax,%edx
41580b:	59                   	pop    %ecx
41580c:	33 db                	xor    %ebx,%ebx
41580e:	3b cf                	cmp    %edi,%ecx
415810:	7c 08                	jl     0x41581a
415812:	8b 02                	mov    (%edx),%eax
415814:	89 44 8d f0          	mov    %eax,-0x10(%ebp,%ecx,4)
415818:	eb 04                	jmp    0x41581e
41581a:	89 5c 8d f0          	mov    %ebx,-0x10(%ebp,%ecx,4)
41581e:	83 ea 04             	sub    $0x4,%edx
415821:	49                   	dec    %ecx
415822:	79 ea                	jns    0x41580e
415824:	8b 7d c0             	mov    -0x40(%ebp),%edi
415827:	6a 1f                	push   $0x1f
415829:	58                   	pop    %eax
41582a:	2b 05 18 14 42 00    	sub    0x421418,%eax
415830:	8b c8                	mov    %eax,%ecx
415832:	8b 45 bc             	mov    -0x44(%ebp),%eax
415835:	d3 e6                	shl    %cl,%esi
415837:	f7 d8                	neg    %eax
415839:	1b c0                	sbb    %eax,%eax
41583b:	25 00 00 00 80       	and    $0x80000000,%eax
415840:	0b f0                	or     %eax,%esi
415842:	a1 1c 14 42 00       	mov    0x42141c,%eax
415847:	0b 75 f0             	or     -0x10(%ebp),%esi
41584a:	83 f8 40             	cmp    $0x40,%eax
41584d:	75 0a                	jne    0x415859
41584f:	8b 45 f4             	mov    -0xc(%ebp),%eax
415852:	89 77 04             	mov    %esi,0x4(%edi)
415855:	89 07                	mov    %eax,(%edi)
415857:	eb 07                	jmp    0x415860
415859:	83 f8 20             	cmp    $0x20,%eax
41585c:	75 02                	jne    0x415860
41585e:	89 37                	mov    %esi,(%edi)
415860:	8b 4d fc             	mov    -0x4(%ebp),%ecx
415863:	5f                   	pop    %edi
415864:	5e                   	pop    %esi
415865:	8b c3                	mov    %ebx,%eax
415867:	33 cd                	xor    %ebp,%ecx
415869:	5b                   	pop    %ebx
41586a:	e8 ca ee fe ff       	call   0x404739
41586f:	c9                   	leave
415870:	c3                   	ret
415871:	55                   	push   %ebp
415872:	8b ec                	mov    %esp,%ebp
415874:	83 ec 44             	sub    $0x44,%esp
415877:	a1 90 08 42 00       	mov    0x420890,%eax
41587c:	33 c5                	xor    %ebp,%eax
41587e:	89 45 fc             	mov    %eax,-0x4(%ebp)
415881:	8b 4d 08             	mov    0x8(%ebp),%ecx
415884:	53                   	push   %ebx
415885:	0f b7 41 0a          	movzwl 0xa(%ecx),%eax
415889:	8b d0                	mov    %eax,%edx
41588b:	25 00 80 00 00       	and    $0x8000,%eax