409de9:	81 c2 ff ff 00 00    	add    $0xffff,%edx
409def:	89 75 d8             	mov    %esi,-0x28(%ebp)
409df2:	89 45 dc             	mov    %eax,-0x24(%ebp)
409df5:	66 85 d2             	test   %dx,%dx
409df8:	7f ce                	jg     0x409dc8
409dfa:	66 85 d2             	test   %dx,%dx
409dfd:	7f 4d                	jg     0x409e4c
409dff:	81 c2 ff ff 00 00    	add    $0xffff,%edx
409e05:	66 85 d2             	test   %dx,%dx
409e08:	7d 42                	jge    0x409e4c
409e0a:	8b c2                	mov    %edx,%eax
409e0c:	f7 d8                	neg    %eax
409e0e:	0f b7 f0             	movzwl %ax,%esi
409e11:	03 d6                	add    %esi,%edx
409e13:	f6 45 d4 01          	testb  $0x1,-0x2c(%ebp)
409e17:	74 03                	je     0x409e1c
409e19:	ff 45 b0             	incl   -0x50(%ebp)
409e1c:	8b 45 dc             	mov    -0x24(%ebp),%eax
409e1f:	8b 7d d8             	mov    -0x28(%ebp),%edi
409e22:	8b 4d d8             	mov    -0x28(%ebp),%ecx
409e25:	d1 6d dc             	shrl   $1,-0x24(%ebp)
409e28:	c1 e0 1f             	shl    $0x1f,%eax
409e2b:	d1 ef                	shr    $1,%edi
409e2d:	0b f8                	or     %eax,%edi
409e2f:	8b 45 d4             	mov    -0x2c(%ebp),%eax
409e32:	c1 e1 1f             	shl    $0x1f,%ecx
409e35:	d1 e8                	shr    $1,%eax
409e37:	0b c1                	or     %ecx,%eax
409e39:	4e                   	dec    %esi
409e3a:	89 7d d8             	mov    %edi,-0x28(%ebp)
409e3d:	89 45 d4             	mov    %eax,-0x2c(%ebp)
409e40:	75 d1                	jne    0x409e13
409e42:	39 75 b0             	cmp    %esi,-0x50(%ebp)
409e45:	74 05                	je     0x409e4c
409e47:	66 83 4d d4 01       	orw    $0x1,-0x2c(%ebp)
409e4c:	b8 00 80 00 00       	mov    $0x8000,%eax
409e51:	8b c8                	mov    %eax,%ecx
409e53:	66 39 4d d4          	cmp    %cx,-0x2c(%ebp)
409e57:	77 11                	ja     0x409e6a
409e59:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
409e5c:	81 e1 ff ff 01 00    	and    $0x1ffff,%ecx
409e62:	81 f9 00 80 01 00    	cmp    $0x18000,%ecx
409e68:	75 34                	jne    0x409e9e
409e6a:	83 7d d6 ff          	cmpl   $0xffffffff,-0x2a(%ebp)
409e6e:	75 2b                	jne    0x409e9b
409e70:	83 65 d6 00          	andl   $0x0,-0x2a(%ebp)
409e74:	83 7d da ff          	cmpl   $0xffffffff,-0x26(%ebp)
409e78:	75 1c                	jne    0x409e96
409e7a:	83 65 da 00          	andl   $0x0,-0x26(%ebp)
409e7e:	b9 ff ff 00 00       	mov    $0xffff,%ecx
409e83:	66 39 4d de          	cmp    %cx,-0x22(%ebp)
409e87:	75 07                	jne    0x409e90
409e89:	66 89 45 de          	mov    %ax,-0x22(%ebp)
409e8d:	42                   	inc    %edx
409e8e:	eb 0e                	jmp    0x409e9e
409e90:	66 ff 45 de          	incw   -0x22(%ebp)
409e94:	eb 08                	jmp    0x409e9e
409e96:	ff 45 da             	incl   -0x26(%ebp)
409e99:	eb 03                	jmp    0x409e9e
409e9b:	ff 45 d6             	incl   -0x2a(%ebp)
409e9e:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
409ea3:	66 3b d0             	cmp    %ax,%dx
409ea6:	72 23                	jb     0x409ecb
409ea8:	33 c0                	xor    %eax,%eax
409eaa:	33 c9                	xor    %ecx,%ecx
409eac:	66 39 45 90          	cmp    %ax,-0x70(%ebp)
409eb0:	89 45 c8             	mov    %eax,-0x38(%ebp)
409eb3:	0f 94 c1             	sete   %cl
409eb6:	89 45 c4             	mov    %eax,-0x3c(%ebp)
409eb9:	49                   	dec    %ecx
409eba:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
409ec0:	81 c1 00 80 ff 7f    	add    $0x7fff8000,%ecx
409ec6:	89 4d cc             	mov    %ecx,-0x34(%ebp)
409ec9:	eb 3b                	jmp    0x409f06
409ecb:	66 8b 45 d6          	mov    -0x2a(%ebp),%ax
409ecf:	0b 55 90             	or     -0x70(%ebp),%edx
409ed2:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
409ed6:	8b 45 d8             	mov    -0x28(%ebp),%eax
409ed9:	89 45 c6             	mov    %eax,-0x3a(%ebp)
409edc:	8b 45 dc             	mov    -0x24(%ebp),%eax
409edf:	89 45 ca             	mov    %eax,-0x36(%ebp)
409ee2:	66 89 55 ce          	mov    %dx,-0x32(%ebp)
409ee6:	eb 1e                	jmp    0x409f06
409ee8:	33 c0                	xor    %eax,%eax
409eea:	66 85 f6             	test   %si,%si
409eed:	0f 94 c0             	sete   %al
409ef0:	83 65 c8 00          	andl   $0x0,-0x38(%ebp)
409ef4:	48                   	dec    %eax
409ef5:	25 00 00 00 80       	and    $0x80000000,%eax
409efa:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
409eff:	83 65 c4 00          	andl   $0x0,-0x3c(%ebp)
409f03:	89 45 cc             	mov    %eax,-0x34(%ebp)
409f06:	83 7d ac 00          	cmpl   $0x0,-0x54(%ebp)
409f0a:	0f 85 3c fd ff ff    	jne    0x409c4c
409f10:	8b 45 cc             	mov    -0x34(%ebp),%eax
409f13:	0f b7 4d c4          	movzwl -0x3c(%ebp),%ecx
409f17:	8b 75 c6             	mov    -0x3a(%ebp),%esi
409f1a:	8b 55 ca             	mov    -0x36(%ebp),%edx
409f1d:	c1 e8 10             	shr    $0x10,%eax
409f20:	eb 2f                	jmp    0x409f51
409f22:	c7 45 94 04 00 00 00 	movl   $0x4,-0x6c(%ebp)
409f29:	eb 1e                	jmp    0x409f49
409f2b:	33 f6                	xor    %esi,%esi
409f2d:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
409f32:	ba 00 00 00 80       	mov    $0x80000000,%edx
409f37:	33 c9                	xor    %ecx,%ecx
409f39:	c7 45 94 02 00 00 00 	movl   $0x2,-0x6c(%ebp)
409f40:	eb 0f                	jmp    0x409f51
409f42:	c7 45 94 01 00 00 00 	movl   $0x1,-0x6c(%ebp)
409f49:	33 c9                	xor    %ecx,%ecx
409f4b:	33 c0                	xor    %eax,%eax
409f4d:	33 d2                	xor    %edx,%edx
409f4f:	33 f6                	xor    %esi,%esi
409f51:	8b 7d 88             	mov    -0x78(%ebp),%edi
409f54:	0b 45 8c             	or     -0x74(%ebp),%eax
409f57:	66 89 0f             	mov    %cx,(%edi)
409f5a:	66 89 47 0a          	mov    %ax,0xa(%edi)
409f5e:	8b 45 94             	mov    -0x6c(%ebp),%eax
409f61:	89 77 02             	mov    %esi,0x2(%edi)
409f64:	89 57 06             	mov    %edx,0x6(%edi)
409f67:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409f6a:	5f                   	pop    %edi
409f6b:	5e                   	pop    %esi
409f6c:	33 cd                	xor    %ebp,%ecx
409f6e:	5b                   	pop    %ebx
409f6f:	e8 8c 70 ff ff       	call   0x401000
409f74:	c9                   	leave
409f75:	c3                   	ret
409f76:	90                   	nop
409f77:	49                   	dec    %ecx
409f78:	99                   	cltd
409f79:	40                   	inc    %eax
409f7a:	00 9d 99 40 00 f3    	add    %bl,-0xcffbf67(%ebp)
409f80:	99                   	cltd
409f81:	40                   	inc    %eax
409f82:	00 26                	add    %ah,(%esi)
409f84:	9a 40 00 6b 9a 40 00 	lcall  $0x40,$0x9a6b0040
409f8b:	a3 9a 40 00 b7       	mov    %eax,0xb700409a
409f90:	9a 40 00 12 9b 40 00 	lcall  $0x40,$0x9b120040
409f97:	fd                   	std
409f98:	9a 40 00 7c 9b 40 00 	lcall  $0x40,$0x9b7c0040
409f9f:	71 9b                	jno    0x409f3c
409fa1:	40                   	inc    %eax
409fa2:	00 20                	add    %ah,(%eax)
409fa4:	9b                   	fwait
409fa5:	40                   	inc    %eax
409fa6:	00 8b ff 55 8b ec    	add    %cl,-0x1374aa01(%ebx)
409fac:	83 ec 74             	sub    $0x74,%esp
409faf:	a1 04 f0 41 00       	mov    0x41f004,%eax
409fb4:	33 c5                	xor    %ebp,%eax
409fb6:	89 45 fc             	mov    %eax,-0x4(%ebp)
409fb9:	53                   	push   %ebx
409fba:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
409fbd:	56                   	push   %esi
409fbe:	57                   	push   %edi
409fbf:	8d 75 08             	lea    0x8(%ebp),%esi
409fc2:	8d 7d f0             	lea    -0x10(%ebp),%edi
409fc5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409fc6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409fc7:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
409fc9:	8b 55 f8             	mov    -0x8(%ebp),%edx
409fcc:	8b ca                	mov    %edx,%ecx
409fce:	b8 00 80 00 00       	mov    $0x8000,%eax
409fd3:	23 c8                	and    %eax,%ecx
409fd5:	81 e2 ff 7f 00 00    	and    $0x7fff,%edx
409fdb:	89 5d a0             	mov    %ebx,-0x60(%ebp)
409fde:	c6 45 d0 cc          	movb   $0xcc,-0x30(%ebp)
409fe2:	c6 45 d1 cc          	movb   $0xcc,-0x2f(%ebp)
409fe6:	c6 45 d2 cc          	movb   $0xcc,-0x2e(%ebp)
409fea:	c6 45 d3 cc          	movb   $0xcc,-0x2d(%ebp)
409fee:	c6 45 d4 cc          	movb   $0xcc,-0x2c(%ebp)
409ff2:	c6 45 d5 cc          	movb   $0xcc,-0x2b(%ebp)
409ff6:	c6 45 d6 cc          	movb   $0xcc,-0x2a(%ebp)
409ffa:	c6 45 d7 cc          	movb   $0xcc,-0x29(%ebp)
409ffe:	c6 45 d8 cc          	movb   $0xcc,-0x28(%ebp)
40a002:	c6 45 d9 cc          	movb   $0xcc,-0x27(%ebp)
40a006:	c6 45 da fb          	movb   $0xfb,-0x26(%ebp)
40a00a:	c6 45 db 3f          	movb   $0x3f,-0x25(%ebp)
40a00e:	c7 45 8c 01 00 00 00 	movl   $0x1,-0x74(%ebp)
40a015:	89 4d 90             	mov    %ecx,-0x70(%ebp)
40a018:	66 85 c9             	test   %cx,%cx
40a01b:	74 06                	je     0x40a023
40a01d:	c6 43 02 2d          	movb   $0x2d,0x2(%ebx)
40a021:	eb 04                	jmp    0x40a027
40a023:	c6 43 02 20          	movb   $0x20,0x2(%ebx)
40a027:	8b 75 f4             	mov    -0xc(%ebp),%esi
40a02a:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a02d:	66 85 d2             	test   %dx,%dx
40a030:	75 2f                	jne    0x40a061
40a032:	85 f6                	test   %esi,%esi
40a034:	75 2b                	jne    0x40a061
40a036:	85 ff                	test   %edi,%edi
40a038:	75 27                	jne    0x40a061
40a03a:	33 d2                	xor    %edx,%edx
40a03c:	66 3b c8             	cmp    %ax,%cx
40a03f:	0f 95 c0             	setne  %al
40a042:	fe c8                	dec    %al
40a044:	24 0d                	and    $0xd,%al
40a046:	04 20                	add    $0x20,%al
40a048:	66 89 13             	mov    %dx,(%ebx)
40a04b:	88 43 02             	mov    %al,0x2(%ebx)
40a04e:	c6 43 03 01          	movb   $0x1,0x3(%ebx)
40a052:	c6 43 04 30          	movb   $0x30,0x4(%ebx)
40a056:	88 53 05             	mov    %dl,0x5(%ebx)
40a059:	33 c0                	xor    %eax,%eax
40a05b:	40                   	inc    %eax
40a05c:	e9 1e 08 00 00       	jmp    0x40a87f
40a061:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
40a066:	66 3b d0             	cmp    %ax,%dx
40a069:	0f 85 9f 00 00 00    	jne    0x40a10e
40a06f:	33 c0                	xor    %eax,%eax
40a071:	40                   	inc    %eax
40a072:	66 89 03             	mov    %ax,(%ebx)
40a075:	b8 00 00 00 80       	mov    $0x80000000,%eax
40a07a:	3b f0                	cmp    %eax,%esi
40a07c:	75 04                	jne    0x40a082
40a07e:	85 ff                	test   %edi,%edi
40a080:	74 0f                	je     0x40a091
40a082:	f7 c6 00 00 00 40    	test   $0x40000000,%esi
40a088:	75 07                	jne    0x40a091
40a08a:	68 cc e4 41 00       	push   $0x41e4cc
40a08f:	eb 51                	jmp    0x40a0e2
40a091:	66 85 c9             	test   %cx,%cx
40a094:	74 13                	je     0x40a0a9
40a096:	81 fe 00 00 00 c0    	cmp    $0xc0000000,%esi
40a09c:	75 0b                	jne    0x40a0a9
40a09e:	85 ff                	test   %edi,%edi
40a0a0:	75 3b                	jne    0x40a0dd
40a0a2:	68 c4 e4 41 00       	push   $0x41e4c4
40a0a7:	eb 0d                	jmp    0x40a0b6
40a0a9:	3b f0                	cmp    %eax,%esi
40a0ab:	75 30                	jne    0x40a0dd
40a0ad:	85 ff                	test   %edi,%edi
40a0af:	75 2c                	jne    0x40a0dd
40a0b1:	68 bc e4 41 00       	push   $0x41e4bc
40a0b6:	8d 43 04             	lea    0x4(%ebx),%eax
40a0b9:	6a 16                	push   $0x16
40a0bb:	50                   	push   %eax
40a0bc:	e8 5a a4 ff ff       	call   0x40451b
40a0c1:	83 c4 0c             	add    $0xc,%esp
40a0c4:	33 f6                	xor    %esi,%esi
40a0c6:	85 c0                	test   %eax,%eax
40a0c8:	74 0d                	je     0x40a0d7
40a0ca:	56                   	push   %esi
40a0cb:	56                   	push   %esi
40a0cc:	56                   	push   %esi
40a0cd:	56                   	push   %esi
40a0ce:	56                   	push   %esi
40a0cf:	e8 45 9a ff ff       	call   0x403b19
40a0d4:	83 c4 14             	add    $0x14,%esp
40a0d7:	c6 43 03 05          	movb   $0x5,0x3(%ebx)
40a0db:	eb 2a                	jmp    0x40a107
40a0dd:	68 b4 e4 41 00       	push   $0x41e4b4
40a0e2:	8d 43 04             	lea    0x4(%ebx),%eax
40a0e5:	6a 16                	push   $0x16
40a0e7:	50                   	push   %eax
40a0e8:	e8 2e a4 ff ff       	call   0x40451b
40a0ed:	83 c4 0c             	add    $0xc,%esp
40a0f0:	33 f6                	xor    %esi,%esi
40a0f2:	85 c0                	test   %eax,%eax
40a0f4:	74 0d                	je     0x40a103
40a0f6:	56                   	push   %esi
40a0f7:	56                   	push   %esi
40a0f8:	56                   	push   %esi
40a0f9:	56                   	push   %esi
40a0fa:	56                   	push   %esi
40a0fb:	e8 19 9a ff ff       	call   0x403b19
40a100:	83 c4 14             	add    $0x14,%esp
40a103:	c6 43 03 06          	movb   $0x6,0x3(%ebx)
40a107:	33 c0                	xor    %eax,%eax
40a109:	e9 71 07 00 00       	jmp    0x40a87f
40a10e:	0f b7 ca             	movzwl %dx,%ecx
40a111:	8b d9                	mov    %ecx,%ebx
40a113:	69 c9 10 4d 00 00    	imul   $0x4d10,%ecx,%ecx
40a119:	c1 eb 08             	shr    $0x8,%ebx
40a11c:	8b c6                	mov    %esi,%eax
40a11e:	c1 e8 18             	shr    $0x18,%eax
40a121:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40a124:	6b c0 4d             	imul   $0x4d,%eax,%eax
40a127:	8d 84 08 0c ed bc ec 	lea    -0x134312f4(%eax,%ecx,1),%eax
40a12e:	c1 f8 10             	sar    $0x10,%eax
40a131:	0f b7 c0             	movzwl %ax,%eax
40a134:	33 c9                	xor    %ecx,%ecx
40a136:	0f bf d8             	movswl %ax,%ebx
40a139:	66 89 4d e0          	mov    %cx,-0x20(%ebp)
40a13d:	b9 c0 fd 41 00       	mov    $0x41fdc0,%ecx
40a142:	f7 db                	neg    %ebx
40a144:	83 e9 60             	sub    $0x60,%ecx
40a147:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40a14a:	66 89 55 ea          	mov    %dx,-0x16(%ebp)
40a14e:	89 75 e6             	mov    %esi,-0x1a(%ebp)
40a151:	89 7d e2             	mov    %edi,-0x1e(%ebp)
40a154:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
40a157:	85 db                	test   %ebx,%ebx
40a159:	0f 84 9c 02 00 00    	je     0x40a3fb
40a15f:	7d 0d                	jge    0x40a16e
40a161:	b8 20 ff 41 00       	mov    $0x41ff20,%eax
40a166:	f7 db                	neg    %ebx
40a168:	83 e8 60             	sub    $0x60,%eax
40a16b:	89 45 9c             	mov    %eax,-0x64(%ebp)
40a16e:	85 db                	test   %ebx,%ebx
40a170:	0f 84 85 02 00 00    	je     0x40a3fb
40a176:	83 45 9c 54          	addl   $0x54,-0x64(%ebp)
40a17a:	8b cb                	mov    %ebx,%ecx
40a17c:	83 e1 07             	and    $0x7,%ecx
40a17f:	c1 fb 03             	sar    $0x3,%ebx
40a182:	85 c9                	test   %ecx,%ecx
40a184:	0f 84 67 02 00 00    	je     0x40a3f1
40a18a:	6b c9 0c             	imul   $0xc,%ecx,%ecx
40a18d:	03 4d 9c             	add    -0x64(%ebp),%ecx
40a190:	8b c1                	mov    %ecx,%eax
40a192:	89 4d bc             	mov    %ecx,-0x44(%ebp)
40a195:	b9 00 80 00 00       	mov    $0x8000,%ecx
40a19a:	66 39 08             	cmp    %cx,(%eax)
40a19d:	72 11                	jb     0x40a1b0
40a19f:	8b f0                	mov    %eax,%esi
40a1a1:	8d 7d c4             	lea    -0x3c(%ebp),%edi
40a1a4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a1a5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a1a6:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40a1a9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a1aa:	ff 4d c6             	decl   -0x3a(%ebp)
40a1ad:	89 45 bc             	mov    %eax,-0x44(%ebp)
40a1b0:	0f b7 50 0a          	movzwl 0xa(%eax),%edx
40a1b4:	33 c9                	xor    %ecx,%ecx
40a1b6:	89 4d ac             	mov    %ecx,-0x54(%ebp)
40a1b9:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a1bc:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40a1bf:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a1c2:	8b 4d ea             	mov    -0x16(%ebp),%ecx
40a1c5:	8b f2                	mov    %edx,%esi
40a1c7:	33 f1                	xor    %ecx,%esi
40a1c9:	81 e6 00 80 00 00    	and    $0x8000,%esi
40a1cf:	89 75 b8             	mov    %esi,-0x48(%ebp)
40a1d2:	be ff 7f 00 00       	mov    $0x7fff,%esi
40a1d7:	23 ce                	and    %esi,%ecx
40a1d9:	23 d6                	and    %esi,%edx
40a1db:	8d 34 0a             	lea    (%edx,%ecx,1),%esi
40a1de:	0f b7 fe             	movzwl %si,%edi
40a1e1:	be ff 7f 00 00       	mov    $0x7fff,%esi
40a1e6:	66 3b ce             	cmp    %si,%cx
40a1e9:	0f 83 ac 02 00 00    	jae    0x40a49b
40a1ef:	66 3b d6             	cmp    %si,%dx
40a1f2:	0f 83 a3 02 00 00    	jae    0x40a49b
40a1f8:	be fd bf 00 00       	mov    $0xbffd,%esi
40a1fd:	66 3b fe             	cmp    %si,%di
40a200:	0f 87 95 02 00 00    	ja     0x40a49b
40a206:	be bf 3f 00 00       	mov    $0x3fbf,%esi
40a20b:	66 3b fe             	cmp    %si,%di
40a20e:	77 10                	ja     0x40a220