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
415890:	89 45 bc             	mov    %eax,-0x44(%ebp)
415893:	8b 41 06             	mov    0x6(%ecx),%eax
415896:	89 45 f0             	mov    %eax,-0x10(%ebp)
415899:	8b 41 02             	mov    0x2(%ecx),%eax
41589c:	89 45 f4             	mov    %eax,-0xc(%ebp)
41589f:	0f b7 01             	movzwl (%ecx),%eax
4158a2:	81 e2 ff 7f 00 00    	and    $0x7fff,%edx
4158a8:	56                   	push   %esi
4158a9:	81 ea ff 3f 00 00    	sub    $0x3fff,%edx
4158af:	57                   	push   %edi
4158b0:	8b 7d 0c             	mov    0xc(%ebp),%edi
4158b3:	c1 e0 10             	shl    $0x10,%eax
4158b6:	33 db                	xor    %ebx,%ebx
4158b8:	89 7d c0             	mov    %edi,-0x40(%ebp)
4158bb:	89 55 e0             	mov    %edx,-0x20(%ebp)
4158be:	89 45 f8             	mov    %eax,-0x8(%ebp)
4158c1:	81 fa 01 c0 ff ff    	cmp    $0xffffc001,%edx
4158c7:	75 25                	jne    0x4158ee
4158c9:	8b f3                	mov    %ebx,%esi
4158cb:	8b c3                	mov    %ebx,%eax
4158cd:	39 5c 85 f0          	cmp    %ebx,-0x10(%ebp,%eax,4)
4158d1:	75 0b                	jne    0x4158de
4158d3:	40                   	inc    %eax
4158d4:	83 f8 03             	cmp    $0x3,%eax
4158d7:	7c f4                	jl     0x4158cd
4158d9:	e9 b9 04 00 00       	jmp    0x415d97
4158de:	33 c0                	xor    %eax,%eax
4158e0:	8d 7d f0             	lea    -0x10(%ebp),%edi
4158e3:	ab                   	stos   %eax,%es:(%edi)
4158e4:	ab                   	stos   %eax,%es:(%edi)
4158e5:	ab                   	stos   %eax,%es:(%edi)
4158e6:	6a 02                	push   $0x2
4158e8:	5b                   	pop    %ebx
4158e9:	e9 a6 04 00 00       	jmp    0x415d94
4158ee:	a1 2c 14 42 00       	mov    0x42142c,%eax
4158f3:	8d 75 f0             	lea    -0x10(%ebp),%esi
4158f6:	8d 7d e4             	lea    -0x1c(%ebp),%edi
4158f9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4158fa:	48                   	dec    %eax
4158fb:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4158fc:	8d 48 01             	lea    0x1(%eax),%ecx
4158ff:	89 55 dc             	mov    %edx,-0x24(%ebp)
415902:	89 45 cc             	mov    %eax,-0x34(%ebp)
415905:	8b c1                	mov    %ecx,%eax
415907:	99                   	cltd
415908:	6a 1f                	push   $0x1f
41590a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41590b:	5e                   	pop    %esi
41590c:	23 d6                	and    %esi,%edx
41590e:	03 d0                	add    %eax,%edx
415910:	c1 fa 05             	sar    $0x5,%edx
415913:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
415916:	89 55 c4             	mov    %edx,-0x3c(%ebp)
415919:	81 e1 1f 00 00 80    	and    $0x8000001f,%ecx
41591f:	79 05                	jns    0x415926
415921:	49                   	dec    %ecx
415922:	83 c9 e0             	or     $0xffffffe0,%ecx
415925:	41                   	inc    %ecx
415926:	2b f1                	sub    %ecx,%esi
415928:	33 c0                	xor    %eax,%eax
41592a:	40                   	inc    %eax
41592b:	8b ce                	mov    %esi,%ecx
41592d:	d3 e0                	shl    %cl,%eax
41592f:	6a 03                	push   $0x3
415931:	83 cf ff             	or     $0xffffffff,%edi
415934:	89 75 d0             	mov    %esi,-0x30(%ebp)
415937:	5e                   	pop    %esi
415938:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
41593c:	0f 84 a4 00 00 00    	je     0x4159e6
415942:	8b c7                	mov    %edi,%eax
415944:	d3 e0                	shl    %cl,%eax
415946:	f7 d0                	not    %eax
415948:	85 44 95 f0          	test   %eax,-0x10(%ebp,%edx,4)
41594c:	eb 04                	jmp    0x415952
41594e:	39 5c 95 f0          	cmp    %ebx,-0x10(%ebp,%edx,4)
415952:	75 0a                	jne    0x41595e
415954:	42                   	inc    %edx
415955:	3b d6                	cmp    %esi,%edx
415957:	7c f5                	jl     0x41594e
415959:	e9 85 00 00 00       	jmp    0x4159e3
41595e:	8b 45 cc             	mov    -0x34(%ebp),%eax
415961:	99                   	cltd
415962:	6a 1f                	push   $0x1f
415964:	59                   	pop    %ecx
415965:	23 d1                	and    %ecx,%edx
415967:	03 d0                	add    %eax,%edx
415969:	8b 45 cc             	mov    -0x34(%ebp),%eax
41596c:	c1 fa 05             	sar    $0x5,%edx
41596f:	25 1f 00 00 80       	and    $0x8000001f,%eax
415974:	79 05                	jns    0x41597b
415976:	48                   	dec    %eax
415977:	83 c8 e0             	or     $0xffffffe0,%eax
41597a:	40                   	inc    %eax
41597b:	2b c8                	sub    %eax,%ecx
41597d:	33 c0                	xor    %eax,%eax
41597f:	40                   	inc    %eax
415980:	d3 e0                	shl    %cl,%eax
415982:	6a ff                	push   $0xffffffff
415984:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
415987:	5f                   	pop    %edi
415988:	89 45 c8             	mov    %eax,-0x38(%ebp)
41598b:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
41598f:	8b 4d c8             	mov    -0x38(%ebp),%ecx
415992:	03 c8                	add    %eax,%ecx
415994:	89 4d d8             	mov    %ecx,-0x28(%ebp)
415997:	3b c8                	cmp    %eax,%ecx
415999:	8b 45 d8             	mov    -0x28(%ebp),%eax
41599c:	8b cb                	mov    %ebx,%ecx
41599e:	72 05                	jb     0x4159a5
4159a0:	3b 45 c8             	cmp    -0x38(%ebp),%eax
4159a3:	73 06                	jae    0x4159ab
4159a5:	33 c9                	xor    %ecx,%ecx
4159a7:	41                   	inc    %ecx
4159a8:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
4159ab:	4a                   	dec    %edx
4159ac:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
4159b0:	78 2e                	js     0x4159e0
4159b2:	85 c9                	test   %ecx,%ecx
4159b4:	74 27                	je     0x4159dd
4159b6:	8b 44 95 f0          	mov    -0x10(%ebp,%edx,4),%eax
4159ba:	8b cb                	mov    %ebx,%ecx
4159bc:	8d 78 01             	lea    0x1(%eax),%edi
4159bf:	3b f8                	cmp    %eax,%edi
4159c1:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4159c4:	89 7d d8             	mov    %edi,-0x28(%ebp)
4159c7:	8b c7                	mov    %edi,%eax
4159c9:	72 05                	jb     0x4159d0
4159cb:	83 f8 01             	cmp    $0x1,%eax
4159ce:	73 06                	jae    0x4159d6
4159d0:	33 c9                	xor    %ecx,%ecx
4159d2:	41                   	inc    %ecx
4159d3:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
4159d6:	4a                   	dec    %edx
4159d7:	89 44 95 f4          	mov    %eax,-0xc(%ebp,%edx,4)
4159db:	79 d5                	jns    0x4159b2
4159dd:	83 cf ff             	or     $0xffffffff,%edi
4159e0:	8b 4d d0             	mov    -0x30(%ebp),%ecx
4159e3:	8b 55 c4             	mov    -0x3c(%ebp),%edx
4159e6:	8b c7                	mov    %edi,%eax
4159e8:	d3 e0                	shl    %cl,%eax
4159ea:	21 44 95 f0          	and    %eax,-0x10(%ebp,%edx,4)
4159ee:	8d 42 01             	lea    0x1(%edx),%eax
4159f1:	3b c6                	cmp    %esi,%eax
4159f3:	7d 11                	jge    0x415a06
4159f5:	8d 7d f0             	lea    -0x10(%ebp),%edi
4159f8:	8b ce                	mov    %esi,%ecx
4159fa:	8d 3c 87             	lea    (%edi,%eax,4),%edi
4159fd:	2b c8                	sub    %eax,%ecx
4159ff:	33 c0                	xor    %eax,%eax
415a01:	f3 ab                	rep stos %eax,%es:(%edi)
415a03:	83 cf ff             	or     $0xffffffff,%edi
415a06:	8b 4d e0             	mov    -0x20(%ebp),%ecx
415a09:	39 5d d4             	cmp    %ebx,-0x2c(%ebp)
415a0c:	74 01                	je     0x415a0f
415a0e:	41                   	inc    %ecx
415a0f:	8b 15 28 14 42 00    	mov    0x421428,%edx
415a15:	8b c2                	mov    %edx,%eax
415a17:	2b 05 2c 14 42 00    	sub    0x42142c,%eax
415a1d:	3b c8                	cmp    %eax,%ecx
415a1f:	7d 0f                	jge    0x415a30
415a21:	33 c0                	xor    %eax,%eax
415a23:	8d 7d f0             	lea    -0x10(%ebp),%edi
415a26:	ab                   	stos   %eax,%es:(%edi)
415a27:	ab                   	stos   %eax,%es:(%edi)
415a28:	ab                   	stos   %eax,%es:(%edi)
415a29:	8b f3                	mov    %ebx,%esi
415a2b:	e9 b6 fe ff ff       	jmp    0x4158e6
415a30:	3b ca                	cmp    %edx,%ecx
415a32:	0f 8f 19 02 00 00    	jg     0x415c51
415a38:	2b 55 dc             	sub    -0x24(%ebp),%edx
415a3b:	8d 75 e4             	lea    -0x1c(%ebp),%esi
415a3e:	89 55 d0             	mov    %edx,-0x30(%ebp)
415a41:	8b c2                	mov    %edx,%eax
415a43:	99                   	cltd
415a44:	8d 7d f0             	lea    -0x10(%ebp),%edi