4057eb:	8b 75 fc             	mov    -0x4(%ebp),%esi
4057ee:	4e                   	dec    %esi
4057ef:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
4057f3:	eb 22                	jmp    0x405817
4057f5:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4057f8:	73 1d                	jae    0x405817
4057fa:	8b 45 f8             	mov    -0x8(%ebp),%eax
4057fd:	0f b7 14 48          	movzwl (%eax,%ecx,2),%edx
405801:	41                   	inc    %ecx
405802:	83 fa 7f             	cmp    $0x7f,%edx
405805:	76 0a                	jbe    0x405811
405807:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
40580d:	76 01                	jbe    0x405810
40580f:	46                   	inc    %esi
405810:	46                   	inc    %esi
405811:	46                   	inc    %esi
405812:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405815:	72 e3                	jb     0x4057fa
405817:	8d 56 01             	lea    0x1(%esi),%edx
40581a:	8b c2                	mov    %edx,%eax
40581c:	5e                   	pop    %esi
40581d:	5b                   	pop    %ebx
40581e:	59                   	pop    %ecx
40581f:	59                   	pop    %ecx
405820:	5d                   	pop    %ebp
405821:	c2 04 00             	ret    $0x4
405824:	55                   	push   %ebp
405825:	8b ec                	mov    %esp,%ebp
405827:	83 c4 f0             	add    $0xfffffff0,%esp
40582a:	53                   	push   %ebx
40582b:	56                   	push   %esi
40582c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40582f:	89 55 f8             	mov    %edx,-0x8(%ebp)
405832:	89 45 fc             	mov    %eax,-0x4(%ebp)
405835:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
405839:	75 0a                	jne    0x405845
40583b:	33 c0                	xor    %eax,%eax
40583d:	89 45 f0             	mov    %eax,-0x10(%ebp)
405840:	e9 09 01 00 00       	jmp    0x40594e
405845:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
40584c:	33 c0                	xor    %eax,%eax
40584e:	33 f6                	xor    %esi,%esi
405850:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405854:	0f 84 a9 00 00 00    	je     0x405903
40585a:	e9 82 00 00 00       	jmp    0x4058e1
40585f:	8b 55 f4             	mov    -0xc(%ebp),%edx
405862:	33 c9                	xor    %ecx,%ecx
405864:	8a 0c 32             	mov    (%edx,%esi,1),%cl
405867:	46                   	inc    %esi
405868:	f6 c1 80             	test   $0x80,%cl
40586b:	74 6c                	je     0x4058d9
40586d:	3b 75 08             	cmp    0x8(%ebp),%esi
405870:	0f 83 d8 00 00 00    	jae    0x40594e
405876:	83 e1 3f             	and    $0x3f,%ecx
405879:	f6 c1 20             	test   $0x20,%cl
40587c:	74 2e                	je     0x4058ac
40587e:	8b 55 f4             	mov    -0xc(%ebp),%edx
405881:	8a 14 32             	mov    (%edx,%esi,1),%dl
405884:	46                   	inc    %esi
405885:	8b da                	mov    %edx,%ebx
405887:	80 e3 c0             	and    $0xc0,%bl
40588a:	80 fb 80             	cmp    $0x80,%bl
40588d:	0f 85 bb 00 00 00    	jne    0x40594e
405893:	3b 75 08             	cmp    0x8(%ebp),%esi
405896:	0f 83 b2 00 00 00    	jae    0x40594e
40589c:	80 e2 3f             	and    $0x3f,%dl
40589f:	81 e2 ff 00 00 00    	and    $0xff,%edx
4058a5:	c1 e1 06             	shl    $0x6,%ecx
4058a8:	0b d1                	or     %ecx,%edx
4058aa:	8b ca                	mov    %edx,%ecx
4058ac:	8b 55 f4             	mov    -0xc(%ebp),%edx
4058af:	8a 14 32             	mov    (%edx,%esi,1),%dl
4058b2:	46                   	inc    %esi
4058b3:	8b da                	mov    %edx,%ebx
4058b5:	80 e3 c0             	and    $0xc0,%bl
4058b8:	80 fb 80             	cmp    $0x80,%bl
4058bb:	0f 85 8d 00 00 00    	jne    0x40594e
4058c1:	80 e2 3f             	and    $0x3f,%dl
4058c4:	81 e2 ff 00 00 00    	and    $0xff,%edx
4058ca:	c1 e1 06             	shl    $0x6,%ecx
4058cd:	66 0b d1             	or     %cx,%dx
4058d0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4058d3:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
4058d7:	eb 07                	jmp    0x4058e0
4058d9:	8b 55 fc             	mov    -0x4(%ebp),%edx
4058dc:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
4058e0:	40                   	inc    %eax
4058e1:	3b 75 08             	cmp    0x8(%ebp),%esi
4058e4:	73 09                	jae    0x4058ef
4058e6:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4058e9:	0f 82 70 ff ff ff    	jb     0x40585f
4058ef:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4058f2:	72 04                	jb     0x4058f8
4058f4:	8b 45 f8             	mov    -0x8(%ebp),%eax
4058f7:	48                   	dec    %eax
4058f8:	8b 55 fc             	mov    -0x4(%ebp),%edx
4058fb:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
405901:	eb 47                	jmp    0x40594a
405903:	3b 75 08             	cmp    0x8(%ebp),%esi
405906:	73 42                	jae    0x40594a
405908:	8b 55 f4             	mov    -0xc(%ebp),%edx
40590b:	8a 14 32             	mov    (%edx,%esi,1),%dl
40590e:	46                   	inc    %esi
40590f:	f6 c2 80             	test   $0x80,%dl
405912:	74 30                	je     0x405944
405914:	3b 75 08             	cmp    0x8(%ebp),%esi
405917:	73 35                	jae    0x40594e
405919:	80 e2 3f             	and    $0x3f,%dl
40591c:	f6 c2 20             	test   $0x20,%dl
40591f:	74 14                	je     0x405935
405921:	8b 55 f4             	mov    -0xc(%ebp),%edx
405924:	8a 14 32             	mov    (%edx,%esi,1),%dl
405927:	46                   	inc    %esi
405928:	80 e2 c0             	and    $0xc0,%dl
40592b:	80 fa 80             	cmp    $0x80,%dl
40592e:	75 1e                	jne    0x40594e
405930:	3b 75 08             	cmp    0x8(%ebp),%esi
405933:	73 19                	jae    0x40594e
405935:	8b 55 f4             	mov    -0xc(%ebp),%edx
405938:	8a 14 32             	mov    (%edx,%esi,1),%dl
40593b:	46                   	inc    %esi
40593c:	80 e2 c0             	and    $0xc0,%dl
40593f:	80 fa 80             	cmp    $0x80,%dl
405942:	75 0a                	jne    0x40594e
405944:	40                   	inc    %eax
405945:	3b 75 08             	cmp    0x8(%ebp),%esi
405948:	72 be                	jb     0x405908
40594a:	40                   	inc    %eax
40594b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40594e:	8b 45 f0             	mov    -0x10(%ebp),%eax
405951:	5e                   	pop    %esi
405952:	5b                   	pop    %ebx
405953:	8b e5                	mov    %ebp,%esp
405955:	5d                   	pop    %ebp
405956:	c2 04 00             	ret    $0x4
405959:	8d 40 00             	lea    0x0(%eax),%eax
40595c:	55                   	push   %ebp
40595d:	8b ec                	mov    %esp,%ebp
40595f:	6a 00                	push   $0x0
405961:	53                   	push   %ebx
405962:	56                   	push   %esi
405963:	8b f2                	mov    %edx,%esi
405965:	8b d8                	mov    %eax,%ebx
405967:	33 c0                	xor    %eax,%eax
405969:	55                   	push   %ebp
40596a:	68 fb 59 40 00       	push   $0x4059fb
40596f:	64 ff 30             	push   %fs:(%eax)
405972:	64 89 20             	mov    %esp,%fs:(%eax)
405975:	8b c6                	mov    %esi,%eax
405977:	e8 1c e6 ff ff       	call   0x403f98
40597c:	8b c3                	mov    %ebx,%eax
40597e:	33 d2                	xor    %edx,%edx
405980:	e8 6b ee ff ff       	call   0x4047f0
405985:	74 5e                	je     0x4059e5
405987:	8b c3                	mov    %ebx,%eax
405989:	e8 56 ee ff ff       	call   0x4047e4
40598e:	8d 14 40             	lea    (%eax,%eax,2),%edx
405991:	8d 45 fc             	lea    -0x4(%ebp),%eax
405994:	e8 4b ec ff ff       	call   0x4045e4
405999:	8b c3                	mov    %ebx,%eax
40599b:	e8 44 ee ff ff       	call   0x4047e4
4059a0:	50                   	push   %eax
4059a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059a4:	e8 af e8 ff ff       	call   0x404258
4059a9:	40                   	inc    %eax
4059aa:	50                   	push   %eax
4059ab:	8b c3                	mov    %ebx,%eax
4059ad:	e8 22 ee ff ff       	call   0x4047d4
4059b2:	50                   	push   %eax
4059b3:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059b6:	e8 9d ea ff ff       	call   0x404458
4059bb:	59                   	pop    %ecx
4059bc:	5a                   	pop    %edx
4059bd:	e8 86 fd ff ff       	call   0x405748
4059c2:	85 c0                	test   %eax,%eax
4059c4:	7e 0d                	jle    0x4059d3
4059c6:	8b d0                	mov    %eax,%edx
4059c8:	4a                   	dec    %edx
4059c9:	8d 45 fc             	lea    -0x4(%ebp),%eax
4059cc:	e8 13 ec ff ff       	call   0x4045e4
4059d1:	eb 08                	jmp    0x4059db
4059d3:	8d 45 fc             	lea    -0x4(%ebp),%eax
4059d6:	e8 bd e5 ff ff       	call   0x403f98
4059db:	8b c6                	mov    %esi,%eax
4059dd:	8b 55 fc             	mov    -0x4(%ebp),%edx
4059e0:	e8 07 e6 ff ff       	call   0x403fec
4059e5:	33 c0                	xor    %eax,%eax
4059e7:	5a                   	pop    %edx
4059e8:	59                   	pop    %ecx
4059e9:	59                   	pop    %ecx
4059ea:	64 89 10             	mov    %edx,%fs:(%eax)
4059ed:	68 02 5a 40 00       	push   $0x405a02
4059f2:	8d 45 fc             	lea    -0x4(%ebp),%eax
4059f5:	e8 9e e5 ff ff       	call   0x403f98
4059fa:	c3                   	ret
4059fb:	e9 9c df ff ff       	jmp    0x40399c
405a00:	eb f0                	jmp    0x4059f2
405a02:	5e                   	pop    %esi
405a03:	5b                   	pop    %ebx
405a04:	59                   	pop    %ecx
405a05:	5d                   	pop    %ebp
405a06:	c3                   	ret
405a07:	90                   	nop
405a08:	55                   	push   %ebp
405a09:	8b ec                	mov    %esp,%ebp
405a0b:	6a 00                	push   $0x0
405a0d:	53                   	push   %ebx
405a0e:	56                   	push   %esi
405a0f:	8b f2                	mov    %edx,%esi
405a11:	8b d8                	mov    %eax,%ebx
405a13:	33 c0                	xor    %eax,%eax
405a15:	55                   	push   %ebp
405a16:	68 9f 5a 40 00       	push   $0x405a9f
405a1b:	64 ff 30             	push   %fs:(%eax)
405a1e:	64 89 20             	mov    %esp,%fs:(%eax)
405a21:	8b c6                	mov    %esi,%eax
405a23:	e8 50 ec ff ff       	call   0x404678
405a28:	85 db                	test   %ebx,%ebx
405a2a:	74 5d                	je     0x405a89
405a2c:	8b c3                	mov    %ebx,%eax
405a2e:	e8 25 e8 ff ff       	call   0x404258
405a33:	8b d0                	mov    %eax,%edx
405a35:	8d 45 fc             	lea    -0x4(%ebp),%eax
405a38:	e8 83 ee ff ff       	call   0x4048c0
405a3d:	8b c3                	mov    %ebx,%eax
405a3f:	e8 14 e8 ff ff       	call   0x404258
405a44:	50                   	push   %eax
405a45:	8b 45 fc             	mov    -0x4(%ebp),%eax
405a48:	e8 97 ed ff ff       	call   0x4047e4
405a4d:	40                   	inc    %eax
405a4e:	50                   	push   %eax
405a4f:	8b c3                	mov    %ebx,%eax
405a51:	e8 02 ea ff ff       	call   0x404458
405a56:	50                   	push   %eax
405a57:	8b 45 fc             	mov    -0x4(%ebp),%eax
405a5a:	e8 75 ed ff ff       	call   0x4047d4
405a5f:	59                   	pop    %ecx
405a60:	5a                   	pop    %edx
405a61:	e8 be fd ff ff       	call   0x405824
405a66:	85 c0                	test   %eax,%eax
405a68:	7e 0d                	jle    0x405a77
405a6a:	8b d0                	mov    %eax,%edx
405a6c:	4a                   	dec    %edx
405a6d:	8d 45 fc             	lea    -0x4(%ebp),%eax
405a70:	e8 4b ee ff ff       	call   0x4048c0
405a75:	eb 08                	jmp    0x405a7f
405a77:	8d 45 fc             	lea    -0x4(%ebp),%eax
405a7a:	e8 f9 eb ff ff       	call   0x404678
405a7f:	8b c6                	mov    %esi,%eax
405a81:	8b 55 fc             	mov    -0x4(%ebp),%edx
405a84:	e8 2b ec ff ff       	call   0x4046b4
405a89:	33 c0                	xor    %eax,%eax
405a8b:	5a                   	pop    %edx
405a8c:	59                   	pop    %ecx
405a8d:	59                   	pop    %ecx
405a8e:	64 89 10             	mov    %edx,%fs:(%eax)
405a91:	68 a6 5a 40 00       	push   $0x405aa6
405a96:	8d 45 fc             	lea    -0x4(%ebp),%eax
405a99:	e8 da eb ff ff       	call   0x404678
405a9e:	c3                   	ret
405a9f:	e9 f8 de ff ff       	jmp    0x40399c
405aa4:	eb f0                	jmp    0x405a96
405aa6:	5e                   	pop    %esi
405aa7:	5b                   	pop    %ebx
405aa8:	59                   	pop    %ecx
405aa9:	5d                   	pop    %ebp
405aaa:	c3                   	ret
405aab:	90                   	nop
405aac:	55                   	push   %ebp
405aad:	8b ec                	mov    %esp,%ebp
405aaf:	6a 00                	push   $0x0
405ab1:	53                   	push   %ebx
405ab2:	56                   	push   %esi
405ab3:	8b f2                	mov    %edx,%esi
405ab5:	8b d8                	mov    %eax,%ebx
405ab7:	33 c0                	xor    %eax,%eax
405ab9:	55                   	push   %ebp
405aba:	68 ef 5a 40 00       	push   $0x405aef
405abf:	64 ff 30             	push   %fs:(%eax)
405ac2:	64 89 20             	mov    %esp,%fs:(%eax)
405ac5:	8d 45 fc             	lea    -0x4(%ebp),%eax
405ac8:	8b d3                	mov    %ebx,%edx
405aca:	e8 f5 ec ff ff       	call   0x4047c4
405acf:	8b 45 fc             	mov    -0x4(%ebp),%eax
405ad2:	8b d6                	mov    %esi,%edx
405ad4:	e8 83 fe ff ff       	call   0x40595c
405ad9:	33 c0                	xor    %eax,%eax
405adb:	5a                   	pop    %edx
405adc:	59                   	pop    %ecx
405add:	59                   	pop    %ecx
405ade:	64 89 10             	mov    %edx,%fs:(%eax)
405ae1:	68 f6 5a 40 00       	push   $0x405af6
405ae6:	8d 45 fc             	lea    -0x4(%ebp),%eax
405ae9:	e8 8a eb ff ff       	call   0x404678
405aee:	c3                   	ret
405aef:	e9 a8 de ff ff       	jmp    0x40399c
405af4:	eb f0                	jmp    0x405ae6
405af6:	5e                   	pop    %esi
405af7:	5b                   	pop    %ebx
405af8:	59                   	pop    %ecx
405af9:	5d                   	pop    %ebp
405afa:	c3                   	ret
405afb:	90                   	nop
405afc:	53                   	push   %ebx
405afd:	56                   	push   %esi
405afe:	81 c4 00 fc ff ff    	add    $0xfffffc00,%esp
405b04:	8b f2                	mov    %edx,%esi
405b06:	8b d8                	mov    %eax,%ebx
405b08:	85 db                	test   %ebx,%ebx
405b0a:	74 3d                	je     0x405b49
405b0c:	81 7b 04 00 00 01 00 	cmpl   $0x10000,0x4(%ebx)
405b13:	7d 2a                	jge    0x405b3f
405b15:	68 00 04 00 00       	push   $0x400
405b1a:	8d 44 24 04          	lea    0x4(%esp),%eax
405b1e:	50                   	push   %eax
405b1f:	8b 43 04             	mov    0x4(%ebx),%eax
405b22:	50                   	push   %eax
405b23:	8b 03                	mov    (%ebx),%eax
405b25:	8b 00                	mov    (%eax),%eax
405b27:	e8 08 f5 ff ff       	call   0x405034
405b2c:	50                   	push   %eax
405b2d:	e8 5a b7 ff ff       	call   0x40128c
405b32:	8b c8                	mov    %eax,%ecx
405b34:	8b d4                	mov    %esp,%edx
405b36:	8b c6                	mov    %esi,%eax
405b38:	e8 4b e5 ff ff       	call   0x404088
405b3d:	eb 0a                	jmp    0x405b49
405b3f:	8b c6                	mov    %esi,%eax
405b41:	8b 53 04             	mov    0x4(%ebx),%edx
405b44:	e8 47 e6 ff ff       	call   0x404190
405b49:	81 c4 00 04 00 00    	add    $0x400,%esp
405b4f:	5e                   	pop    %esi
405b50:	5b                   	pop    %ebx
405b51:	c3                   	ret
405b52:	8b c0                	mov    %eax,%eax
405b54:	55                   	push   %ebp
405b55:	8b ec                	mov    %esp,%ebp
405b57:	83 c4 f0             	add    $0xfffffff0,%esp
405b5a:	53                   	push   %ebx
405b5b:	33 d2                	xor    %edx,%edx
405b5d:	89 55 f0             	mov    %edx,-0x10(%ebp)
405b60:	33 d2                	xor    %edx,%edx
405b62:	55                   	push   %ebp
405b63:	68 ba 5b 40 00       	push   $0x405bba
405b68:	64 ff 32             	push   %fs:(%edx)
405b6b:	64 89 22             	mov    %esp,%fs:(%edx)
405b6e:	6a 07                	push   $0x7
405b70:	8d 55 f5             	lea    -0xb(%ebp),%edx
405b73:	52                   	push   %edx
405b74:	68 04 10 00 00       	push   $0x1004