405c98:	52                   	push   %edx
405c99:	ff 50 04             	call   *0x4(%eax)
405c9c:	58                   	pop    %eax
405c9d:	8b 08                	mov    (%eax),%ecx
405c9f:	8f 00                	pop    (%eax)
405ca1:	85 c9                	test   %ecx,%ecx
405ca3:	75 01                	jne    0x405ca6
405ca5:	c3                   	ret
405ca6:	8b 01                	mov    (%ecx),%eax
405ca8:	51                   	push   %ecx
405ca9:	ff 50 08             	call   *0x8(%eax)
405cac:	c3                   	ret
405cad:	8b 08                	mov    (%eax),%ecx
405caf:	85 c9                	test   %ecx,%ecx
405cb1:	89 10                	mov    %edx,(%eax)
405cb3:	74 06                	je     0x405cbb
405cb5:	8b 01                	mov    (%ecx),%eax
405cb7:	51                   	push   %ecx
405cb8:	ff 50 08             	call   *0x8(%eax)
405cbb:	c3                   	ret
405cbc:	85 d2                	test   %edx,%edx
405cbe:	0f 84 b4 ff ff ff    	je     0x405c78
405cc4:	57                   	push   %edi
405cc5:	89 c7                	mov    %eax,%edi
405cc7:	6a 00                	push   $0x0
405cc9:	54                   	push   %esp
405cca:	51                   	push   %ecx
405ccb:	52                   	push   %edx
405ccc:	8b 02                	mov    (%edx),%eax
405cce:	ff 10                	call   *(%eax)
405cd0:	85 c0                	test   %eax,%eax
405cd2:	74 07                	je     0x405cdb
405cd4:	b0 17                	mov    $0x17,%al
405cd6:	e9 dd ce ff ff       	jmp    0x402bb8
405cdb:	8b 07                	mov    (%edi),%eax
405cdd:	85 c0                	test   %eax,%eax
405cdf:	74 06                	je     0x405ce7
405ce1:	50                   	push   %eax
405ce2:	8b 00                	mov    (%eax),%eax
405ce4:	ff 50 08             	call   *0x8(%eax)
405ce7:	58                   	pop    %eax
405ce8:	89 07                	mov    %eax,(%edi)
405cea:	5f                   	pop    %edi
405ceb:	c3                   	ret
405cec:	85 c0                	test   %eax,%eax
405cee:	74 06                	je     0x405cf6
405cf0:	50                   	push   %eax
405cf1:	8b 00                	mov    (%eax),%eax
405cf3:	ff 50 04             	call   *0x4(%eax)
405cf6:	c3                   	ret
405cf7:	90                   	nop
405cf8:	83 c0 04             	add    $0x4,%eax
405cfb:	50                   	push   %eax
405cfc:	e8 f3 b5 ff ff       	call   0x4012f4
405d01:	c3                   	ret
405d02:	8b c0                	mov    %eax,%eax
405d04:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
405d08:	74 07                	je     0x405d11
405d0a:	b0 02                	mov    $0x2,%al
405d0c:	e8 a7 ce ff ff       	call   0x402bb8
405d11:	c3                   	ret
405d12:	8b c0                	mov    %eax,%eax
405d14:	e8 7b da ff ff       	call   0x403794
405d19:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
405d20:	c3                   	ret
405d21:	8d 40 00             	lea    0x0(%eax),%eax
405d24:	55                   	push   %ebp
405d25:	8b ec                	mov    %esp,%ebp
405d27:	53                   	push   %ebx
405d28:	8b 5d 08             	mov    0x8(%ebp),%ebx
405d2b:	8b 4d 10             	mov    0x10(%ebp),%ecx
405d2e:	8b 55 0c             	mov    0xc(%ebp),%edx
405d31:	8b c3                	mov    %ebx,%eax
405d33:	e8 78 db ff ff       	call   0x4038b0
405d38:	84 c0                	test   %al,%al
405d3a:	74 04                	je     0x405d40
405d3c:	33 c0                	xor    %eax,%eax
405d3e:	eb 05                	jmp    0x405d45
405d40:	b8 02 40 00 80       	mov    $0x80004002,%eax
405d45:	5b                   	pop    %ebx
405d46:	5d                   	pop    %ebp
405d47:	c2 0c 00             	ret    $0xc
405d4a:	8b c0                	mov    %eax,%eax
405d4c:	55                   	push   %ebp
405d4d:	8b ec                	mov    %esp,%ebp
405d4f:	8b 45 08             	mov    0x8(%ebp),%eax
405d52:	83 c0 04             	add    $0x4,%eax
405d55:	50                   	push   %eax
405d56:	e8 91 b5 ff ff       	call   0x4012ec
405d5b:	5d                   	pop    %ebp
405d5c:	c2 04 00             	ret    $0x4
405d5f:	90                   	nop
405d60:	55                   	push   %ebp
405d61:	8b ec                	mov    %esp,%ebp
405d63:	53                   	push   %ebx
405d64:	56                   	push   %esi
405d65:	8b 5d 08             	mov    0x8(%ebp),%ebx
405d68:	8d 43 04             	lea    0x4(%ebx),%eax
405d6b:	50                   	push   %eax
405d6c:	e8 83 b5 ff ff       	call   0x4012f4
405d71:	8b f0                	mov    %eax,%esi
405d73:	85 f6                	test   %esi,%esi
405d75:	75 09                	jne    0x405d80
405d77:	b2 01                	mov    $0x1,%dl
405d79:	8b c3                	mov    %ebx,%eax
405d7b:	8b 08                	mov    (%eax),%ecx
405d7d:	ff 51 fc             	call   *-0x4(%ecx)
405d80:	8b c6                	mov    %esi,%eax
405d82:	5e                   	pop    %esi
405d83:	5b                   	pop    %ebx
405d84:	5d                   	pop    %ebp
405d85:	c2 04 00             	ret    $0x4
405d88:	55                   	push   %ebp
405d89:	8b ec                	mov    %esp,%ebp
405d8b:	83 c4 f8             	add    $0xfffffff8,%esp
405d8e:	53                   	push   %ebx
405d8f:	56                   	push   %esi
405d90:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405d93:	89 55 fc             	mov    %edx,-0x4(%ebp)
405d96:	33 d2                	xor    %edx,%edx
405d98:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
405d9c:	0f 84 b8 00 00 00    	je     0x405e5a
405da2:	33 f6                	xor    %esi,%esi
405da4:	33 c9                	xor    %ecx,%ecx
405da6:	85 c0                	test   %eax,%eax
405da8:	0f 84 87 00 00 00    	je     0x405e35
405dae:	eb 6c                	jmp    0x405e1c
405db0:	8b 55 f8             	mov    -0x8(%ebp),%edx
405db3:	0f b7 14 4a          	movzwl (%edx,%ecx,2),%edx
405db7:	41                   	inc    %ecx
405db8:	83 fa 7f             	cmp    $0x7f,%edx
405dbb:	77 06                	ja     0x405dc3
405dbd:	88 14 30             	mov    %dl,(%eax,%esi,1)
405dc0:	46                   	inc    %esi
405dc1:	eb 59                	jmp    0x405e1c
405dc3:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405dc9:	76 31                	jbe    0x405dfc
405dcb:	8d 5e 03             	lea    0x3(%esi),%ebx
405dce:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405dd1:	77 53                	ja     0x405e26
405dd3:	8b da                	mov    %edx,%ebx
405dd5:	c1 eb 0c             	shr    $0xc,%ebx
405dd8:	80 cb e0             	or     $0xe0,%bl
405ddb:	88 1c 30             	mov    %bl,(%eax,%esi,1)
405dde:	8b da                	mov    %edx,%ebx
405de0:	c1 eb 06             	shr    $0x6,%ebx
405de3:	80 e3 3f             	and    $0x3f,%bl
405de6:	80 cb 80             	or     $0x80,%bl
405de9:	88 5c 30 01          	mov    %bl,0x1(%eax,%esi,1)
405ded:	80 e2 3f             	and    $0x3f,%dl
405df0:	80 ca 80             	or     $0x80,%dl
405df3:	88 54 30 02          	mov    %dl,0x2(%eax,%esi,1)
405df7:	83 c6 03             	add    $0x3,%esi
405dfa:	eb 20                	jmp    0x405e1c
405dfc:	8d 5e 02             	lea    0x2(%esi),%ebx
405dff:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405e02:	77 22                	ja     0x405e26
405e04:	8b da                	mov    %edx,%ebx
405e06:	c1 eb 06             	shr    $0x6,%ebx
405e09:	80 cb c0             	or     $0xc0,%bl
405e0c:	88 1c 30             	mov    %bl,(%eax,%esi,1)
405e0f:	80 e2 3f             	and    $0x3f,%dl
405e12:	80 ca 80             	or     $0x80,%dl
405e15:	88 54 30 01          	mov    %dl,0x1(%eax,%esi,1)
405e19:	83 c6 02             	add    $0x2,%esi
405e1c:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405e1f:	73 05                	jae    0x405e26
405e21:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405e24:	72 8a                	jb     0x405db0
405e26:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405e29:	72 04                	jb     0x405e2f
405e2b:	8b 75 fc             	mov    -0x4(%ebp),%esi
405e2e:	4e                   	dec    %esi
405e2f:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
405e33:	eb 22                	jmp    0x405e57
405e35:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405e38:	73 1d                	jae    0x405e57
405e3a:	8b 45 f8             	mov    -0x8(%ebp),%eax
405e3d:	0f b7 14 48          	movzwl (%eax,%ecx,2),%edx
405e41:	41                   	inc    %ecx
405e42:	83 fa 7f             	cmp    $0x7f,%edx
405e45:	76 0a                	jbe    0x405e51
405e47:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405e4d:	76 01                	jbe    0x405e50
405e4f:	46                   	inc    %esi
405e50:	46                   	inc    %esi
405e51:	46                   	inc    %esi
405e52:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405e55:	72 e3                	jb     0x405e3a
405e57:	8d 56 01             	lea    0x1(%esi),%edx
405e5a:	8b c2                	mov    %edx,%eax
405e5c:	5e                   	pop    %esi
405e5d:	5b                   	pop    %ebx
405e5e:	59                   	pop    %ecx
405e5f:	59                   	pop    %ecx
405e60:	5d                   	pop    %ebp
405e61:	c2 04 00             	ret    $0x4
405e64:	55                   	push   %ebp
405e65:	8b ec                	mov    %esp,%ebp
405e67:	83 c4 f0             	add    $0xfffffff0,%esp
405e6a:	53                   	push   %ebx
405e6b:	56                   	push   %esi
405e6c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
405e6f:	89 55 f8             	mov    %edx,-0x8(%ebp)
405e72:	89 45 fc             	mov    %eax,-0x4(%ebp)
405e75:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
405e79:	75 0a                	jne    0x405e85
405e7b:	33 c0                	xor    %eax,%eax
405e7d:	89 45 f0             	mov    %eax,-0x10(%ebp)
405e80:	e9 09 01 00 00       	jmp    0x405f8e
405e85:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
405e8c:	33 c0                	xor    %eax,%eax
405e8e:	33 f6                	xor    %esi,%esi
405e90:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405e94:	0f 84 a9 00 00 00    	je     0x405f43
405e9a:	e9 82 00 00 00       	jmp    0x405f21
405e9f:	8b 55 f4             	mov    -0xc(%ebp),%edx
405ea2:	33 c9                	xor    %ecx,%ecx
405ea4:	8a 0c 32             	mov    (%edx,%esi,1),%cl
405ea7:	46                   	inc    %esi
405ea8:	f6 c1 80             	test   $0x80,%cl
405eab:	74 6c                	je     0x405f19
405ead:	3b 75 08             	cmp    0x8(%ebp),%esi
405eb0:	0f 83 d8 00 00 00    	jae    0x405f8e
405eb6:	83 e1 3f             	and    $0x3f,%ecx
405eb9:	f6 c1 20             	test   $0x20,%cl
405ebc:	74 2e                	je     0x405eec
405ebe:	8b 55 f4             	mov    -0xc(%ebp),%edx
405ec1:	8a 14 32             	mov    (%edx,%esi,1),%dl
405ec4:	46                   	inc    %esi
405ec5:	8b da                	mov    %edx,%ebx
405ec7:	80 e3 c0             	and    $0xc0,%bl
405eca:	80 fb 80             	cmp    $0x80,%bl
405ecd:	0f 85 bb 00 00 00    	jne    0x405f8e
405ed3:	3b 75 08             	cmp    0x8(%ebp),%esi
405ed6:	0f 83 b2 00 00 00    	jae    0x405f8e
405edc:	80 e2 3f             	and    $0x3f,%dl
405edf:	81 e2 ff 00 00 00    	and    $0xff,%edx
405ee5:	c1 e1 06             	shl    $0x6,%ecx
405ee8:	0b d1                	or     %ecx,%edx
405eea:	8b ca                	mov    %edx,%ecx
405eec:	8b 55 f4             	mov    -0xc(%ebp),%edx
405eef:	8a 14 32             	mov    (%edx,%esi,1),%dl
405ef2:	46                   	inc    %esi
405ef3:	8b da                	mov    %edx,%ebx
405ef5:	80 e3 c0             	and    $0xc0,%bl
405ef8:	80 fb 80             	cmp    $0x80,%bl
405efb:	0f 85 8d 00 00 00    	jne    0x405f8e
405f01:	80 e2 3f             	and    $0x3f,%dl
405f04:	81 e2 ff 00 00 00    	and    $0xff,%edx
405f0a:	c1 e1 06             	shl    $0x6,%ecx
405f0d:	66 0b d1             	or     %cx,%dx
405f10:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405f13:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
405f17:	eb 07                	jmp    0x405f20
405f19:	8b 55 fc             	mov    -0x4(%ebp),%edx
405f1c:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
405f20:	40                   	inc    %eax
405f21:	3b 75 08             	cmp    0x8(%ebp),%esi
405f24:	73 09                	jae    0x405f2f
405f26:	3b 45 f8             	cmp    -0x8(%ebp),%eax
405f29:	0f 82 70 ff ff ff    	jb     0x405e9f
405f2f:	3b 45 f8             	cmp    -0x8(%ebp),%eax
405f32:	72 04                	jb     0x405f38
405f34:	8b 45 f8             	mov    -0x8(%ebp),%eax
405f37:	48                   	dec    %eax
405f38:	8b 55 fc             	mov    -0x4(%ebp),%edx
405f3b:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
405f41:	eb 47                	jmp    0x405f8a
405f43:	3b 75 08             	cmp    0x8(%ebp),%esi
405f46:	73 42                	jae    0x405f8a
405f48:	8b 55 f4             	mov    -0xc(%ebp),%edx
405f4b:	8a 14 32             	mov    (%edx,%esi,1),%dl
405f4e:	46                   	inc    %esi
405f4f:	f6 c2 80             	test   $0x80,%dl
405f52:	74 30                	je     0x405f84
405f54:	3b 75 08             	cmp    0x8(%ebp),%esi
405f57:	73 35                	jae    0x405f8e
405f59:	80 e2 3f             	and    $0x3f,%dl
405f5c:	f6 c2 20             	test   $0x20,%dl
405f5f:	74 14                	je     0x405f75
405f61:	8b 55 f4             	mov    -0xc(%ebp),%edx
405f64:	8a 14 32             	mov    (%edx,%esi,1),%dl
405f67:	46                   	inc    %esi
405f68:	80 e2 c0             	and    $0xc0,%dl
405f6b:	80 fa 80             	cmp    $0x80,%dl
405f6e:	75 1e                	jne    0x405f8e
405f70:	3b 75 08             	cmp    0x8(%ebp),%esi
405f73:	73 19                	jae    0x405f8e
405f75:	8b 55 f4             	mov    -0xc(%ebp),%edx
405f78:	8a 14 32             	mov    (%edx,%esi,1),%dl
405f7b:	46                   	inc    %esi
405f7c:	80 e2 c0             	and    $0xc0,%dl
405f7f:	80 fa 80             	cmp    $0x80,%dl
405f82:	75 0a                	jne    0x405f8e
405f84:	40                   	inc    %eax
405f85:	3b 75 08             	cmp    0x8(%ebp),%esi
405f88:	72 be                	jb     0x405f48
405f8a:	40                   	inc    %eax
405f8b:	89 45 f0             	mov    %eax,-0x10(%ebp)
405f8e:	8b 45 f0             	mov    -0x10(%ebp),%eax
405f91:	5e                   	pop    %esi
405f92:	5b                   	pop    %ebx
405f93:	8b e5                	mov    %ebp,%esp
405f95:	5d                   	pop    %ebp
405f96:	c2 04 00             	ret    $0x4
405f99:	8d 40 00             	lea    0x0(%eax),%eax
405f9c:	55                   	push   %ebp
405f9d:	8b ec                	mov    %esp,%ebp
405f9f:	6a 00                	push   $0x0
405fa1:	53                   	push   %ebx
405fa2:	56                   	push   %esi
405fa3:	8b f2                	mov    %edx,%esi
405fa5:	8b d8                	mov    %eax,%ebx
405fa7:	33 c0                	xor    %eax,%eax
405fa9:	55                   	push   %ebp
405faa:	68 3b 60 40 00       	push   $0x40603b
405faf:	64 ff 30             	push   %fs:(%eax)
405fb2:	64 89 20             	mov    %esp,%fs:(%eax)
405fb5:	8b c6                	mov    %esi,%eax
405fb7:	e8 b4 e5 ff ff       	call   0x404570
405fbc:	8b c3                	mov    %ebx,%eax
405fbe:	33 d2                	xor    %edx,%edx
405fc0:	e8 03 ee ff ff       	call   0x404dc8
405fc5:	74 5e                	je     0x406025
405fc7:	8b c3                	mov    %ebx,%eax
405fc9:	e8 ee ed ff ff       	call   0x404dbc
405fce:	8d 14 40             	lea    (%eax,%eax,2),%edx
405fd1:	8d 45 fc             	lea    -0x4(%ebp),%eax
405fd4:	e8 e3 eb ff ff       	call   0x404bbc
405fd9:	8b c3                	mov    %ebx,%eax
405fdb:	e8 dc ed ff ff       	call   0x404dbc
405fe0:	50                   	push   %eax
405fe1:	8b 45 fc             	mov    -0x4(%ebp),%eax
405fe4:	e8 47 e8 ff ff       	call   0x404830
405fe9:	40                   	inc    %eax
405fea:	50                   	push   %eax
405feb:	8b c3                	mov    %ebx,%eax
405fed:	e8 ba ed ff ff       	call   0x404dac
405ff2:	50                   	push   %eax
405ff3:	8b 45 fc             	mov    -0x4(%ebp),%eax
405ff6:	e8 35 ea ff ff       	call   0x404a30
405ffb:	59                   	pop    %ecx
405ffc:	5a                   	pop    %edx
405ffd:	e8 86 fd ff ff       	call   0x405d88
406002:	85 c0                	test   %eax,%eax
406004:	7e 0d                	jle    0x406013
406006:	8b d0                	mov    %eax,%edx
406008:	4a                   	dec    %edx
406009:	8d 45 fc             	lea    -0x4(%ebp),%eax