40598a:	8b 00                	mov    (%eax),%eax
40598c:	ff 50 08             	call   *0x8(%eax)
40598f:	58                   	pop    %eax
405990:	89 07                	mov    %eax,(%edi)
405992:	5f                   	pop    %edi
405993:	c3                   	ret
405994:	85 c0                	test   %eax,%eax
405996:	74 06                	je     0x40599e
405998:	50                   	push   %eax
405999:	8b 00                	mov    (%eax),%eax
40599b:	ff 50 04             	call   *0x4(%eax)
40599e:	c3                   	ret
40599f:	90                   	nop
4059a0:	83 c0 04             	add    $0x4,%eax
4059a3:	50                   	push   %eax
4059a4:	e8 83 b9 ff ff       	call   0x40132c
4059a9:	c3                   	ret
4059aa:	8b c0                	mov    %eax,%eax
4059ac:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
4059b0:	74 07                	je     0x4059b9
4059b2:	b0 02                	mov    $0x2,%al
4059b4:	e8 97 ce ff ff       	call   0x402850
4059b9:	c3                   	ret
4059ba:	8b c0                	mov    %eax,%eax
4059bc:	e8 97 d8 ff ff       	call   0x403258
4059c1:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
4059c8:	c3                   	ret
4059c9:	8d 40 00             	lea    0x0(%eax),%eax
4059cc:	55                   	push   %ebp
4059cd:	8b ec                	mov    %esp,%ebp
4059cf:	53                   	push   %ebx
4059d0:	8b 5d 08             	mov    0x8(%ebp),%ebx
4059d3:	8b 4d 10             	mov    0x10(%ebp),%ecx
4059d6:	8b 55 0c             	mov    0xc(%ebp),%edx
4059d9:	8b c3                	mov    %ebx,%eax
4059db:	e8 94 d9 ff ff       	call   0x403374
4059e0:	84 c0                	test   %al,%al
4059e2:	74 04                	je     0x4059e8
4059e4:	33 c0                	xor    %eax,%eax
4059e6:	eb 05                	jmp    0x4059ed
4059e8:	b8 02 40 00 80       	mov    $0x80004002,%eax
4059ed:	5b                   	pop    %ebx
4059ee:	5d                   	pop    %ebp
4059ef:	c2 0c 00             	ret    $0xc
4059f2:	8b c0                	mov    %eax,%eax
4059f4:	55                   	push   %ebp
4059f5:	8b ec                	mov    %esp,%ebp
4059f7:	8b 45 08             	mov    0x8(%ebp),%eax
4059fa:	83 c0 04             	add    $0x4,%eax
4059fd:	50                   	push   %eax
4059fe:	e8 21 b9 ff ff       	call   0x401324
405a03:	5d                   	pop    %ebp
405a04:	c2 04 00             	ret    $0x4
405a07:	90                   	nop
405a08:	55                   	push   %ebp
405a09:	8b ec                	mov    %esp,%ebp
405a0b:	53                   	push   %ebx
405a0c:	56                   	push   %esi
405a0d:	8b 5d 08             	mov    0x8(%ebp),%ebx
405a10:	8d 43 04             	lea    0x4(%ebx),%eax
405a13:	50                   	push   %eax
405a14:	e8 13 b9 ff ff       	call   0x40132c
405a19:	8b f0                	mov    %eax,%esi
405a1b:	85 f6                	test   %esi,%esi
405a1d:	75 09                	jne    0x405a28
405a1f:	b2 01                	mov    $0x1,%dl
405a21:	8b c3                	mov    %ebx,%eax
405a23:	8b 08                	mov    (%eax),%ecx
405a25:	ff 51 fc             	call   *-0x4(%ecx)
405a28:	8b c6                	mov    %esi,%eax
405a2a:	5e                   	pop    %esi
405a2b:	5b                   	pop    %ebx
405a2c:	5d                   	pop    %ebp
405a2d:	c2 04 00             	ret    $0x4
405a30:	55                   	push   %ebp
405a31:	8b ec                	mov    %esp,%ebp
405a33:	83 c4 f8             	add    $0xfffffff8,%esp
405a36:	53                   	push   %ebx
405a37:	56                   	push   %esi
405a38:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405a3b:	89 55 fc             	mov    %edx,-0x4(%ebp)
405a3e:	33 d2                	xor    %edx,%edx
405a40:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
405a44:	0f 84 b8 00 00 00    	je     0x405b02
405a4a:	33 f6                	xor    %esi,%esi
405a4c:	33 c9                	xor    %ecx,%ecx
405a4e:	85 c0                	test   %eax,%eax
405a50:	0f 84 87 00 00 00    	je     0x405add
405a56:	eb 6c                	jmp    0x405ac4
405a58:	8b 55 f8             	mov    -0x8(%ebp),%edx
405a5b:	0f b7 14 4a          	movzwl (%edx,%ecx,2),%edx
405a5f:	41                   	inc    %ecx
405a60:	83 fa 7f             	cmp    $0x7f,%edx
405a63:	77 06                	ja     0x405a6b
405a65:	88 14 30             	mov    %dl,(%eax,%esi,1)
405a68:	46                   	inc    %esi
405a69:	eb 59                	jmp    0x405ac4
405a6b:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405a71:	76 31                	jbe    0x405aa4
405a73:	8d 5e 03             	lea    0x3(%esi),%ebx
405a76:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405a79:	77 53                	ja     0x405ace
405a7b:	8b da                	mov    %edx,%ebx
405a7d:	c1 eb 0c             	shr    $0xc,%ebx
405a80:	80 cb e0             	or     $0xe0,%bl
405a83:	88 1c 30             	mov    %bl,(%eax,%esi,1)
405a86:	8b da                	mov    %edx,%ebx
405a88:	c1 eb 06             	shr    $0x6,%ebx
405a8b:	80 e3 3f             	and    $0x3f,%bl
405a8e:	80 cb 80             	or     $0x80,%bl
405a91:	88 5c 30 01          	mov    %bl,0x1(%eax,%esi,1)
405a95:	80 e2 3f             	and    $0x3f,%dl
405a98:	80 ca 80             	or     $0x80,%dl
405a9b:	88 54 30 02          	mov    %dl,0x2(%eax,%esi,1)
405a9f:	83 c6 03             	add    $0x3,%esi
405aa2:	eb 20                	jmp    0x405ac4
405aa4:	8d 5e 02             	lea    0x2(%esi),%ebx
405aa7:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405aaa:	77 22                	ja     0x405ace
405aac:	8b da                	mov    %edx,%ebx
405aae:	c1 eb 06             	shr    $0x6,%ebx
405ab1:	80 cb c0             	or     $0xc0,%bl
405ab4:	88 1c 30             	mov    %bl,(%eax,%esi,1)
405ab7:	80 e2 3f             	and    $0x3f,%dl
405aba:	80 ca 80             	or     $0x80,%dl
405abd:	88 54 30 01          	mov    %dl,0x1(%eax,%esi,1)
405ac1:	83 c6 02             	add    $0x2,%esi
405ac4:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405ac7:	73 05                	jae    0x405ace
405ac9:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405acc:	72 8a                	jb     0x405a58
405ace:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405ad1:	72 04                	jb     0x405ad7
405ad3:	8b 75 fc             	mov    -0x4(%ebp),%esi
405ad6:	4e                   	dec    %esi
405ad7:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
405adb:	eb 22                	jmp    0x405aff
405add:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405ae0:	73 1d                	jae    0x405aff
405ae2:	8b 45 f8             	mov    -0x8(%ebp),%eax
405ae5:	0f b7 14 48          	movzwl (%eax,%ecx,2),%edx
405ae9:	41                   	inc    %ecx
405aea:	83 fa 7f             	cmp    $0x7f,%edx
405aed:	76 0a                	jbe    0x405af9
405aef:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405af5:	76 01                	jbe    0x405af8
405af7:	46                   	inc    %esi
405af8:	46                   	inc    %esi
405af9:	46                   	inc    %esi
405afa:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405afd:	72 e3                	jb     0x405ae2
405aff:	8d 56 01             	lea    0x1(%esi),%edx
405b02:	8b c2                	mov    %edx,%eax
405b04:	5e                   	pop    %esi
405b05:	5b                   	pop    %ebx
405b06:	59                   	pop    %ecx
405b07:	59                   	pop    %ecx
405b08:	5d                   	pop    %ebp
405b09:	c2 04 00             	ret    $0x4
405b0c:	55                   	push   %ebp
405b0d:	8b ec                	mov    %esp,%ebp
405b0f:	83 c4 f0             	add    $0xfffffff0,%esp
405b12:	53                   	push   %ebx
405b13:	56                   	push   %esi
405b14:	89 4d f4             	mov    %ecx,-0xc(%ebp)
405b17:	89 55 f8             	mov    %edx,-0x8(%ebp)
405b1a:	89 45 fc             	mov    %eax,-0x4(%ebp)
405b1d:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
405b21:	75 0a                	jne    0x405b2d
405b23:	33 c0                	xor    %eax,%eax
405b25:	89 45 f0             	mov    %eax,-0x10(%ebp)
405b28:	e9 09 01 00 00       	jmp    0x405c36
405b2d:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
405b34:	33 c0                	xor    %eax,%eax
405b36:	33 f6                	xor    %esi,%esi
405b38:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405b3c:	0f 84 a9 00 00 00    	je     0x405beb
405b42:	e9 82 00 00 00       	jmp    0x405bc9
405b47:	8b 55 f4             	mov    -0xc(%ebp),%edx
405b4a:	33 c9                	xor    %ecx,%ecx
405b4c:	8a 0c 32             	mov    (%edx,%esi,1),%cl
405b4f:	46                   	inc    %esi
405b50:	f6 c1 80             	test   $0x80,%cl
405b53:	74 6c                	je     0x405bc1
405b55:	3b 75 08             	cmp    0x8(%ebp),%esi
405b58:	0f 83 d8 00 00 00    	jae    0x405c36
405b5e:	83 e1 3f             	and    $0x3f,%ecx
405b61:	f6 c1 20             	test   $0x20,%cl
405b64:	74 2e                	je     0x405b94
405b66:	8b 55 f4             	mov    -0xc(%ebp),%edx
405b69:	8a 14 32             	mov    (%edx,%esi,1),%dl
405b6c:	46                   	inc    %esi
405b6d:	8b da                	mov    %edx,%ebx
405b6f:	80 e3 c0             	and    $0xc0,%bl
405b72:	80 fb 80             	cmp    $0x80,%bl
405b75:	0f 85 bb 00 00 00    	jne    0x405c36
405b7b:	3b 75 08             	cmp    0x8(%ebp),%esi
405b7e:	0f 83 b2 00 00 00    	jae    0x405c36
405b84:	80 e2 3f             	and    $0x3f,%dl
405b87:	81 e2 ff 00 00 00    	and    $0xff,%edx
405b8d:	c1 e1 06             	shl    $0x6,%ecx
405b90:	0b d1                	or     %ecx,%edx
405b92:	8b ca                	mov    %edx,%ecx
405b94:	8b 55 f4             	mov    -0xc(%ebp),%edx
405b97:	8a 14 32             	mov    (%edx,%esi,1),%dl
405b9a:	46                   	inc    %esi
405b9b:	8b da                	mov    %edx,%ebx
405b9d:	80 e3 c0             	and    $0xc0,%bl
405ba0:	80 fb 80             	cmp    $0x80,%bl
405ba3:	0f 85 8d 00 00 00    	jne    0x405c36
405ba9:	80 e2 3f             	and    $0x3f,%dl
405bac:	81 e2 ff 00 00 00    	and    $0xff,%edx
405bb2:	c1 e1 06             	shl    $0x6,%ecx
405bb5:	66 0b d1             	or     %cx,%dx
405bb8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405bbb:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
405bbf:	eb 07                	jmp    0x405bc8
405bc1:	8b 55 fc             	mov    -0x4(%ebp),%edx
405bc4:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
405bc8:	40                   	inc    %eax
405bc9:	3b 75 08             	cmp    0x8(%ebp),%esi
405bcc:	73 09                	jae    0x405bd7
405bce:	3b 45 f8             	cmp    -0x8(%ebp),%eax
405bd1:	0f 82 70 ff ff ff    	jb     0x405b47
405bd7:	3b 45 f8             	cmp    -0x8(%ebp),%eax
405bda:	72 04                	jb     0x405be0
405bdc:	8b 45 f8             	mov    -0x8(%ebp),%eax
405bdf:	48                   	dec    %eax
405be0:	8b 55 fc             	mov    -0x4(%ebp),%edx
405be3:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
405be9:	eb 47                	jmp    0x405c32
405beb:	3b 75 08             	cmp    0x8(%ebp),%esi
405bee:	73 42                	jae    0x405c32
405bf0:	8b 55 f4             	mov    -0xc(%ebp),%edx
405bf3:	8a 14 32             	mov    (%edx,%esi,1),%dl
405bf6:	46                   	inc    %esi
405bf7:	f6 c2 80             	test   $0x80,%dl
405bfa:	74 30                	je     0x405c2c
405bfc:	3b 75 08             	cmp    0x8(%ebp),%esi
405bff:	73 35                	jae    0x405c36
405c01:	80 e2 3f             	and    $0x3f,%dl
405c04:	f6 c2 20             	test   $0x20,%dl
405c07:	74 14                	je     0x405c1d
405c09:	8b 55 f4             	mov    -0xc(%ebp),%edx
405c0c:	8a 14 32             	mov    (%edx,%esi,1),%dl
405c0f:	46                   	inc    %esi
405c10:	80 e2 c0             	and    $0xc0,%dl
405c13:	80 fa 80             	cmp    $0x80,%dl
405c16:	75 1e                	jne    0x405c36
405c18:	3b 75 08             	cmp    0x8(%ebp),%esi
405c1b:	73 19                	jae    0x405c36
405c1d:	8b 55 f4             	mov    -0xc(%ebp),%edx
405c20:	8a 14 32             	mov    (%edx,%esi,1),%dl
405c23:	46                   	inc    %esi
405c24:	80 e2 c0             	and    $0xc0,%dl
405c27:	80 fa 80             	cmp    $0x80,%dl
405c2a:	75 0a                	jne    0x405c36
405c2c:	40                   	inc    %eax
405c2d:	3b 75 08             	cmp    0x8(%ebp),%esi
405c30:	72 be                	jb     0x405bf0
405c32:	40                   	inc    %eax
405c33:	89 45 f0             	mov    %eax,-0x10(%ebp)
405c36:	8b 45 f0             	mov    -0x10(%ebp),%eax
405c39:	5e                   	pop    %esi
405c3a:	5b                   	pop    %ebx
405c3b:	8b e5                	mov    %ebp,%esp
405c3d:	5d                   	pop    %ebp
405c3e:	c2 04 00             	ret    $0x4
405c41:	8d 40 00             	lea    0x0(%eax),%eax
405c44:	55                   	push   %ebp
405c45:	8b ec                	mov    %esp,%ebp
405c47:	6a 00                	push   $0x0
405c49:	53                   	push   %ebx
405c4a:	56                   	push   %esi
405c4b:	8b f2                	mov    %edx,%esi
405c4d:	8b d8                	mov    %eax,%ebx
405c4f:	33 c0                	xor    %eax,%eax
405c51:	55                   	push   %ebp
405c52:	68 e3 5c 40 00       	push   $0x405ce3
405c57:	64 ff 30             	push   %fs:(%eax)
405c5a:	64 89 20             	mov    %esp,%fs:(%eax)
405c5d:	8b c6                	mov    %esi,%eax
405c5f:	e8 ec e3 ff ff       	call   0x404050
405c64:	8b c3                	mov    %ebx,%eax
405c66:	33 d2                	xor    %edx,%edx
405c68:	e8 3b ec ff ff       	call   0x4048a8
405c6d:	74 5e                	je     0x405ccd
405c6f:	8b c3                	mov    %ebx,%eax
405c71:	e8 26 ec ff ff       	call   0x40489c
405c76:	8d 14 40             	lea    (%eax,%eax,2),%edx
405c79:	8d 45 fc             	lea    -0x4(%ebp),%eax
405c7c:	e8 1b ea ff ff       	call   0x40469c
405c81:	8b c3                	mov    %ebx,%eax
405c83:	e8 14 ec ff ff       	call   0x40489c
405c88:	50                   	push   %eax
405c89:	8b 45 fc             	mov    -0x4(%ebp),%eax
405c8c:	e8 7f e6 ff ff       	call   0x404310
405c91:	40                   	inc    %eax
405c92:	50                   	push   %eax
405c93:	8b c3                	mov    %ebx,%eax
405c95:	e8 f2 eb ff ff       	call   0x40488c
405c9a:	50                   	push   %eax
405c9b:	8b 45 fc             	mov    -0x4(%ebp),%eax
405c9e:	e8 6d e8 ff ff       	call   0x404510
405ca3:	59                   	pop    %ecx
405ca4:	5a                   	pop    %edx
405ca5:	e8 86 fd ff ff       	call   0x405a30
405caa:	85 c0                	test   %eax,%eax
405cac:	7e 0d                	jle    0x405cbb
405cae:	8b d0                	mov    %eax,%edx
405cb0:	4a                   	dec    %edx
405cb1:	8d 45 fc             	lea    -0x4(%ebp),%eax
405cb4:	e8 e3 e9 ff ff       	call   0x40469c
405cb9:	eb 08                	jmp    0x405cc3
405cbb:	8d 45 fc             	lea    -0x4(%ebp),%eax
405cbe:	e8 8d e3 ff ff       	call   0x404050
405cc3:	8b c6                	mov    %esi,%eax
405cc5:	8b 55 fc             	mov    -0x4(%ebp),%edx
405cc8:	e8 d7 e3 ff ff       	call   0x4040a4
405ccd:	33 c0                	xor    %eax,%eax
405ccf:	5a                   	pop    %edx
405cd0:	59                   	pop    %ecx
405cd1:	59                   	pop    %ecx
405cd2:	64 89 10             	mov    %edx,%fs:(%eax)
405cd5:	68 ea 5c 40 00       	push   $0x405cea
405cda:	8d 45 fc             	lea    -0x4(%ebp),%eax
405cdd:	e8 6e e3 ff ff       	call   0x404050
405ce2:	c3                   	ret
405ce3:	e9 6c dd ff ff       	jmp    0x403a54
405ce8:	eb f0                	jmp    0x405cda
405cea:	5e                   	pop    %esi
405ceb:	5b                   	pop    %ebx
405cec:	59                   	pop    %ecx
405ced:	5d                   	pop    %ebp
405cee:	c3                   	ret
405cef:	90                   	nop
405cf0:	55                   	push   %ebp
405cf1:	8b ec                	mov    %esp,%ebp
405cf3:	6a 00                	push   $0x0
405cf5:	53                   	push   %ebx
405cf6:	56                   	push   %esi
405cf7:	8b f2                	mov    %edx,%esi
405cf9:	8b d8                	mov    %eax,%ebx
405cfb:	33 c0                	xor    %eax,%eax
405cfd:	55                   	push   %ebp
405cfe:	68 87 5d 40 00       	push   $0x405d87
405d03:	64 ff 30             	push   %fs:(%eax)
405d06:	64 89 20             	mov    %esp,%fs:(%eax)
405d09:	8b c6                	mov    %esi,%eax
405d0b:	e8 20 ea ff ff       	call   0x404730