4376a4:	33 c2                	xor    %edx,%eax
4376a6:	25 00 80 00 00       	and    $0x8000,%eax
4376ab:	89 45 a0             	mov    %eax,-0x60(%ebp)
4376ae:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4376b3:	23 d0                	and    %eax,%edx
4376b5:	23 f8                	and    %eax,%edi
4376b7:	89 5d 88             	mov    %ebx,-0x78(%ebp)
4376ba:	8d 04 17             	lea    (%edi,%edx,1),%eax
4376bd:	0f b7 f0             	movzwl %ax,%esi
4376c0:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4376c5:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4376c8:	89 5d d8             	mov    %ebx,-0x28(%ebp)
4376cb:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4376ce:	89 75 a4             	mov    %esi,-0x5c(%ebp)
4376d1:	66 3b d0             	cmp    %ax,%dx
4376d4:	0f 83 2b 02 00 00    	jae    0x437905
4376da:	66 3b f8             	cmp    %ax,%di
4376dd:	0f 83 22 02 00 00    	jae    0x437905
4376e3:	b8 fd bf 00 00       	mov    $0xbffd,%eax
4376e8:	66 3b f0             	cmp    %ax,%si
4376eb:	0f 87 14 02 00 00    	ja     0x437905
4376f1:	b8 bf 3f 00 00       	mov    $0x3fbf,%eax
4376f6:	66 3b f0             	cmp    %ax,%si
4376f9:	77 08                	ja     0x437703
4376fb:	89 5d cc             	mov    %ebx,-0x34(%ebp)
4376fe:	e9 19 02 00 00       	jmp    0x43791c
437703:	66 85 d2             	test   %dx,%dx
437706:	75 24                	jne    0x43772c
437708:	46                   	inc    %esi
437709:	f7 45 cc ff ff ff 7f 	testl  $0x7fffffff,-0x34(%ebp)
437710:	89 75 a4             	mov    %esi,-0x5c(%ebp)
437713:	75 17                	jne    0x43772c
437715:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
437719:	75 11                	jne    0x43772c
43771b:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
43771f:	75 0b                	jne    0x43772c
437721:	33 c0                	xor    %eax,%eax
437723:	66 89 45 ce          	mov    %ax,-0x32(%ebp)
437727:	e9 f6 01 00 00       	jmp    0x437922
43772c:	66 85 ff             	test   %di,%di
43772f:	75 16                	jne    0x437747
437731:	46                   	inc    %esi
437732:	f7 41 08 ff ff ff 7f 	testl  $0x7fffffff,0x8(%ecx)
437739:	89 75 a4             	mov    %esi,-0x5c(%ebp)
43773c:	75 09                	jne    0x437747
43773e:	39 59 04             	cmp    %ebx,0x4(%ecx)
437741:	75 04                	jne    0x437747
437743:	39 19                	cmp    %ebx,(%ecx)
437745:	74 b4                	je     0x4376fb
437747:	6a 05                	push   $0x5
437749:	8b c3                	mov    %ebx,%eax
43774b:	5f                   	pop    %edi
43774c:	89 45 90             	mov    %eax,-0x70(%ebp)
43774f:	8d 55 d8             	lea    -0x28(%ebp),%edx
437752:	89 7d 98             	mov    %edi,-0x68(%ebp)
437755:	89 7d a8             	mov    %edi,-0x58(%ebp)
437758:	85 ff                	test   %edi,%edi
43775a:	7e 5c                	jle    0x4377b8
43775c:	8d 75 c4             	lea    -0x3c(%ebp),%esi
43775f:	8d 34 46             	lea    (%esi,%eax,2),%esi
437762:	8d 41 08             	lea    0x8(%ecx),%eax
437765:	89 45 9c             	mov    %eax,-0x64(%ebp)
437768:	8b cf                	mov    %edi,%ecx
43776a:	0f b7 00             	movzwl (%eax),%eax
43776d:	89 45 a8             	mov    %eax,-0x58(%ebp)
437770:	0f b7 06             	movzwl (%esi),%eax
437773:	8b 7d a8             	mov    -0x58(%ebp),%edi
437776:	0f af f8             	imul   %eax,%edi
437779:	89 7d a8             	mov    %edi,-0x58(%ebp)
43777c:	03 7a fc             	add    -0x4(%edx),%edi
43777f:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
437782:	3b 7a fc             	cmp    -0x4(%edx),%edi
437785:	72 05                	jb     0x43778c
437787:	3b 7d a8             	cmp    -0x58(%ebp),%edi
43778a:	73 05                	jae    0x437791
43778c:	33 c0                	xor    %eax,%eax
43778e:	40                   	inc    %eax
43778f:	eb 03                	jmp    0x437794
437791:	8b 45 84             	mov    -0x7c(%ebp),%eax
437794:	89 7a fc             	mov    %edi,-0x4(%edx)
437797:	85 c0                	test   %eax,%eax
437799:	74 03                	je     0x43779e
43779b:	66 ff 02             	incw   (%edx)
43779e:	8b 45 9c             	mov    -0x64(%ebp),%eax
4377a1:	83 e8 02             	sub    $0x2,%eax
4377a4:	83 c6 02             	add    $0x2,%esi
4377a7:	49                   	dec    %ecx
4377a8:	89 45 9c             	mov    %eax,-0x64(%ebp)
4377ab:	85 c9                	test   %ecx,%ecx
4377ad:	7f bb                	jg     0x43776a
4377af:	8b 4d b0             	mov    -0x50(%ebp),%ecx
4377b2:	8b 7d 98             	mov    -0x68(%ebp),%edi
4377b5:	8b 45 90             	mov    -0x70(%ebp),%eax
4377b8:	83 c2 02             	add    $0x2,%edx
4377bb:	40                   	inc    %eax
4377bc:	4f                   	dec    %edi
4377bd:	89 45 90             	mov    %eax,-0x70(%ebp)
4377c0:	89 7d 98             	mov    %edi,-0x68(%ebp)
4377c3:	85 ff                	test   %edi,%edi
4377c5:	7f 8e                	jg     0x437755
4377c7:	8b 75 a4             	mov    -0x5c(%ebp),%esi
4377ca:	8b 55 dc             	mov    -0x24(%ebp),%edx
4377cd:	8b 7d d4             	mov    -0x2c(%ebp),%edi
4377d0:	81 c6 02 c0 00 00    	add    $0xc002,%esi
4377d6:	89 55 b0             	mov    %edx,-0x50(%ebp)
4377d9:	66 85 f6             	test   %si,%si
4377dc:	7e 3b                	jle    0x437819
4377de:	85 d2                	test   %edx,%edx
4377e0:	78 32                	js     0x437814
4377e2:	8b 45 d8             	mov    -0x28(%ebp),%eax
4377e5:	8b c8                	mov    %eax,%ecx
4377e7:	8b d7                	mov    %edi,%edx
4377e9:	c1 ea 1f             	shr    $0x1f,%edx
4377ec:	03 c0                	add    %eax,%eax
4377ee:	0b c2                	or     %edx,%eax
4377f0:	8b 55 b0             	mov    -0x50(%ebp),%edx
4377f3:	89 45 d8             	mov    %eax,-0x28(%ebp)
4377f6:	c1 e9 1f             	shr    $0x1f,%ecx
4377f9:	03 d2                	add    %edx,%edx
4377fb:	b8 ff ff 00 00       	mov    $0xffff,%eax
437800:	0b d1                	or     %ecx,%edx
437802:	03 ff                	add    %edi,%edi
437804:	03 f0                	add    %eax,%esi
437806:	89 7d d4             	mov    %edi,-0x2c(%ebp)
437809:	89 55 b0             	mov    %edx,-0x50(%ebp)
43780c:	89 55 dc             	mov    %edx,-0x24(%ebp)
43780f:	66 85 f6             	test   %si,%si
437812:	7f ca                	jg     0x4377de
437814:	66 85 f6             	test   %si,%si
437817:	7f 69                	jg     0x437882
437819:	b8 ff ff 00 00       	mov    $0xffff,%eax
43781e:	03 f0                	add    %eax,%esi
437820:	66 85 f6             	test   %si,%si
437823:	79 5d                	jns    0x437882
437825:	8b 5d 88             	mov    -0x78(%ebp),%ebx
437828:	8b c6                	mov    %esi,%eax
43782a:	f7 d8                	neg    %eax
43782c:	0f b7 c0             	movzwl %ax,%eax
43782f:	89 45 98             	mov    %eax,-0x68(%ebp)
437832:	03 f0                	add    %eax,%esi
437834:	f6 45 d4 01          	testb  $0x1,-0x2c(%ebp)
437838:	74 01                	je     0x43783b
43783a:	43                   	inc    %ebx
43783b:	8b 4d d8             	mov    -0x28(%ebp),%ecx
43783e:	8b c2                	mov    %edx,%eax
437840:	c1 e0 1f             	shl    $0x1f,%eax
437843:	89 4d b0             	mov    %ecx,-0x50(%ebp)
437846:	d1 6d b0             	shrl   $1,-0x50(%ebp)
437849:	09 45 b0             	or     %eax,-0x50(%ebp)
43784c:	8b 45 b0             	mov    -0x50(%ebp),%eax
43784f:	c1 e1 1f             	shl    $0x1f,%ecx
437852:	d1 ef                	shr    $1,%edi
437854:	d1 ea                	shr    $1,%edx
437856:	0b f9                	or     %ecx,%edi
437858:	ff 4d 98             	decl   -0x68(%ebp)
43785b:	89 55 dc             	mov    %edx,-0x24(%ebp)
43785e:	89 45 d8             	mov    %eax,-0x28(%ebp)
437861:	89 7d d4             	mov    %edi,-0x2c(%ebp)
437864:	75 ce                	jne    0x437834
437866:	6a 00                	push   $0x0
437868:	85 db                	test   %ebx,%ebx
43786a:	89 55 b0             	mov    %edx,-0x50(%ebp)
43786d:	5b                   	pop    %ebx
43786e:	74 12                	je     0x437882
437870:	66 8b c7             	mov    %di,%ax
437873:	33 ff                	xor    %edi,%edi
437875:	47                   	inc    %edi
437876:	66 0b c7             	or     %di,%ax
437879:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
43787d:	8b 7d d4             	mov    -0x2c(%ebp),%edi
437880:	eb 04                	jmp    0x437886
437882:	66 8b 45 d4          	mov    -0x2c(%ebp),%ax
437886:	ba 00 80 00 00       	mov    $0x8000,%edx
43788b:	66 3b c2             	cmp    %dx,%ax
43788e:	77 0e                	ja     0x43789e
437890:	81 e7 ff ff 01 00    	and    $0x1ffff,%edi
437896:	81 ff 00 80 01 00    	cmp    $0x18000,%edi
43789c:	75 40                	jne    0x4378de
43789e:	8b 45 d6             	mov    -0x2a(%ebp),%eax
4378a1:	83 f8 ff             	cmp    $0xffffffff,%eax
4378a4:	75 34                	jne    0x4378da
4378a6:	8b 45 da             	mov    -0x26(%ebp),%eax
4378a9:	89 5d d6             	mov    %ebx,-0x2a(%ebp)
4378ac:	83 f8 ff             	cmp    $0xffffffff,%eax
4378af:	75 20                	jne    0x4378d1
4378b1:	66 8b 45 de          	mov    -0x22(%ebp),%ax
4378b5:	b9 ff ff 00 00       	mov    $0xffff,%ecx
4378ba:	89 5d da             	mov    %ebx,-0x26(%ebp)
4378bd:	66 3b c1             	cmp    %cx,%ax
4378c0:	75 07                	jne    0x4378c9
4378c2:	66 89 55 de          	mov    %dx,-0x22(%ebp)
4378c6:	46                   	inc    %esi
4378c7:	eb 0c                	jmp    0x4378d5
4378c9:	66 40                	inc    %ax
4378cb:	66 89 45 de          	mov    %ax,-0x22(%ebp)
4378cf:	eb 04                	jmp    0x4378d5
4378d1:	40                   	inc    %eax
4378d2:	89 45 da             	mov    %eax,-0x26(%ebp)
4378d5:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4378d8:	eb 07                	jmp    0x4378e1
4378da:	40                   	inc    %eax
4378db:	89 45 d6             	mov    %eax,-0x2a(%ebp)
4378de:	8b 4d b0             	mov    -0x50(%ebp),%ecx
4378e1:	ba ff 7f 00 00       	mov    $0x7fff,%edx
4378e6:	66 3b f2             	cmp    %dx,%si
4378e9:	73 1a                	jae    0x437905
4378eb:	66 8b 45 d6          	mov    -0x2a(%ebp),%ax
4378ef:	0b 75 a0             	or     -0x60(%ebp),%esi
4378f2:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
4378f6:	8b 45 d8             	mov    -0x28(%ebp),%eax
4378f9:	89 45 c6             	mov    %eax,-0x3a(%ebp)
4378fc:	89 4d ca             	mov    %ecx,-0x36(%ebp)
4378ff:	66 89 75 ce          	mov    %si,-0x32(%ebp)
437903:	eb 1d                	jmp    0x437922
437905:	33 c0                	xor    %eax,%eax
437907:	66 39 45 a0          	cmp    %ax,-0x60(%ebp)
43790b:	0f 94 c0             	sete   %al
43790e:	48                   	dec    %eax
43790f:	25 00 00 00 80       	and    $0x80000000,%eax
437914:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
437919:	89 45 cc             	mov    %eax,-0x34(%ebp)
43791c:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
43791f:	89 5d c8             	mov    %ebx,-0x38(%ebp)
437922:	8b 45 b4             	mov    -0x4c(%ebp),%eax
437925:	8b 75 ac             	mov    -0x54(%ebp),%esi
437928:	85 f6                	test   %esi,%esi
43792a:	0f 85 31 fd ff ff    	jne    0x437661
437930:	8b 45 cc             	mov    -0x34(%ebp),%eax
437933:	0f b7 4d c4          	movzwl -0x3c(%ebp),%ecx
437937:	8b 55 c6             	mov    -0x3a(%ebp),%edx
43793a:	8b 75 ca             	mov    -0x36(%ebp),%esi
43793d:	c1 e8 10             	shr    $0x10,%eax
437940:	eb 32                	jmp    0x437974
437942:	33 ff                	xor    %edi,%edi
437944:	8b cb                	mov    %ebx,%ecx
437946:	8b c3                	mov    %ebx,%eax
437948:	8b f3                	mov    %ebx,%esi
43794a:	8b d3                	mov    %ebx,%edx
43794c:	8d 5f 01             	lea    0x1(%edi),%ebx
43794f:	eb 23                	jmp    0x437974
437951:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
437956:	be 00 00 00 80       	mov    $0x80000000,%esi
43795b:	6a 02                	push   $0x2
43795d:	eb 10                	jmp    0x43796f
43795f:	8b cb                	mov    %ebx,%ecx
437961:	8b c3                	mov    %ebx,%eax
437963:	8b f3                	mov    %ebx,%esi
437965:	8b d3                	mov    %ebx,%edx
437967:	eb 0b                	jmp    0x437974
437969:	8b c3                	mov    %ebx,%eax
43796b:	8b f3                	mov    %ebx,%esi
43796d:	6a 04                	push   $0x4
43796f:	8b cb                	mov    %ebx,%ecx
437971:	8b d3                	mov    %ebx,%edx
437973:	5b                   	pop    %ebx
437974:	8b 7d 8c             	mov    -0x74(%ebp),%edi
437977:	0b 45 94             	or     -0x6c(%ebp),%eax
43797a:	66 89 0f             	mov    %cx,(%edi)
43797d:	66 89 47 0a          	mov    %ax,0xa(%edi)
437981:	89 57 02             	mov    %edx,0x2(%edi)
437984:	89 77 06             	mov    %esi,0x6(%edi)
437987:	8b c3                	mov    %ebx,%eax
437989:	8b 4d fc             	mov    -0x4(%ebp),%ecx
43798c:	5f                   	pop    %edi
43798d:	5e                   	pop    %esi
43798e:	33 cd                	xor    %ebp,%ecx
437990:	5b                   	pop    %ebx
437991:	e8 76 2d ff ff       	call   0x42a70c
437996:	c9                   	leave
437997:	c3                   	ret
437998:	90                   	nop
437999:	dd 72 43             	fnsave 0x43(%edx)
43799c:	00 2f                	add    %ch,(%edi)
43799e:	73 43                	jae    0x4379e3
4379a0:	00 89 73 43 00 ba    	add    %cl,-0x45ffbc8d(%ecx)
4379a6:	73 43                	jae    0x4379eb
4379a8:	00 1b                	add    %bl,(%ebx)
4379aa:	74 43                	je     0x4379ef
4379ac:	00 9e 74 43 00 b7    	add    %bl,-0x48ffbc8c(%esi)
4379b2:	74 43                	je     0x4379f7
4379b4:	00 1a                	add    %bl,(%edx)
4379b6:	75 43                	jne    0x4379fb
4379b8:	00 fc                	add    %bh,%ah
4379ba:	74 43                	je     0x4379ff
4379bc:	00 5c 75 43          	add    %bl,0x43(%ebp,%esi,2)
4379c0:	00 51 75             	add    %dl,0x75(%ecx)
4379c3:	43                   	inc    %ebx
4379c4:	00 26                	add    %ah,(%esi)
4379c6:	75 43                	jne    0x437a0b
4379c8:	00 55 8b             	add    %dl,-0x75(%ebp)
4379cb:	ec                   	in     (%dx),%al
4379cc:	81 ec 88 00 00 00    	sub    $0x88,%esp
4379d2:	a1 c0 ad 4b 00       	mov    0x4badc0,%eax
4379d7:	33 c5                	xor    %ebp,%eax
4379d9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4379dc:	0f b7 55 10          	movzwl 0x10(%ebp),%edx
4379e0:	53                   	push   %ebx
4379e1:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
4379e4:	56                   	push   %esi
4379e5:	be 00 80 00 00       	mov    $0x8000,%esi
4379ea:	23 d6                	and    %esi,%edx
4379ec:	0f b7 75 10          	movzwl 0x10(%ebp),%esi
4379f0:	33 c9                	xor    %ecx,%ecx
4379f2:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4379f7:	41                   	inc    %ecx
4379f8:	23 f0                	and    %eax,%esi
4379fa:	57                   	push   %edi
4379fb:	89 5d 90             	mov    %ebx,-0x70(%ebp)
4379fe:	c7 45 d0 cc cc cc cc 	movl   $0xcccccccc,-0x30(%ebp)
437a05:	c7 45 d4 cc cc cc cc 	movl   $0xcccccccc,-0x2c(%ebp)
437a0c:	c7 45 d8 cc cc fb 3f 	movl   $0x3ffbcccc,-0x28(%ebp)
437a13:	89 55 88             	mov    %edx,-0x78(%ebp)
437a16:	89 45 98             	mov    %eax,-0x68(%ebp)
437a19:	66 85 d2             	test   %dx,%dx
437a1c:	74 06                	je     0x437a24
437a1e:	c6 43 02 2d          	movb   $0x2d,0x2(%ebx)
437a22:	eb 04                	jmp    0x437a28
437a24:	c6 43 02 20          	movb   $0x20,0x2(%ebx)
437a28:	8b 7d 0c             	mov    0xc(%ebp),%edi
437a2b:	66 85 f6             	test   %si,%si
437a2e:	75 3a                	jne    0x437a6a
437a30:	85 ff                	test   %edi,%edi
437a32:	0f 85 c7 00 00 00    	jne    0x437aff
437a38:	39 7d 08             	cmp    %edi,0x8(%ebp)
437a3b:	0f 85 be 00 00 00    	jne    0x437aff
437a41:	33 c0                	xor    %eax,%eax
437a43:	66 89 03             	mov    %ax,(%ebx)
437a46:	b8 00 80 00 00       	mov    $0x8000,%eax
437a4b:	66 3b d0             	cmp    %ax,%dx
437a4e:	0f 95 c0             	setne  %al
437a51:	fe c8                	dec    %al
437a53:	24 0d                	and    $0xd,%al
437a55:	04 20                	add    $0x20,%al
437a57:	88 43 02             	mov    %al,0x2(%ebx)
437a5a:	88 4b 03             	mov    %cl,0x3(%ebx)
437a5d:	66 c7 43 04 30 00    	movw   $0x30,0x4(%ebx)
437a63:	8b c1                	mov    %ecx,%eax
437a65:	e9 ce 08 00 00       	jmp    0x438338
437a6a:	66 3b f0             	cmp    %ax,%si
437a6d:	0f 85 8c 00 00 00    	jne    0x437aff
437a73:	8b 45 0c             	mov    0xc(%ebp),%eax
437a76:	ba 00 00 00 80       	mov    $0x80000000,%edx
437a7b:	66 89 0b             	mov    %cx,(%ebx)
437a7e:	8b 4d 08             	mov    0x8(%ebp),%ecx
437a81:	3b c2                	cmp    %edx,%eax
437a83:	75 04                	jne    0x437a89
437a85:	85 c9                	test   %ecx,%ecx
437a87:	74 0e                	je     0x437a97
437a89:	a9 00 00 00 40       	test   $0x40000000,%eax
437a8e:	75 07                	jne    0x437a97