40cd14:	eb 05                	jmp    0x40cd1b
40cd16:	be 00 01 00 00       	mov    $0x100,%esi
40cd1b:	8b d7                	mov    %edi,%edx
40cd1d:	b9 00 04 00 00       	mov    $0x400,%ecx
40cd22:	c1 ea 02             	shr    $0x2,%edx
40cd25:	8b c7                	mov    %edi,%eax
40cd27:	25 00 08 00 00       	and    $0x800,%eax
40cd2c:	23 d1                	and    %ecx,%edx
40cd2e:	0b d0                	or     %eax,%edx
40cd30:	8b c7                	mov    %edi,%eax
40cd32:	23 c1                	and    %ecx,%eax
40cd34:	c1 ea 02             	shr    $0x2,%edx
40cd37:	0b c2                	or     %edx,%eax
40cd39:	8b cf                	mov    %edi,%ecx
40cd3b:	c1 e8 02             	shr    $0x2,%eax
40cd3e:	81 e1 00 02 00 00    	and    $0x200,%ecx
40cd44:	0b c1                	or     %ecx,%eax
40cd46:	81 e7 80 01 00 00    	and    $0x180,%edi
40cd4c:	c1 e8 03             	shr    $0x3,%eax
40cd4f:	0b c7                	or     %edi,%eax
40cd51:	c1 e8 03             	shr    $0x3,%eax
40cd54:	0b c3                	or     %ebx,%eax
40cd56:	5f                   	pop    %edi
40cd57:	0b c6                	or     %esi,%eax
40cd59:	5e                   	pop    %esi
40cd5a:	5b                   	pop    %ebx
40cd5b:	5d                   	pop    %ebp
40cd5c:	c3                   	ret
40cd5d:	8b ff                	mov    %edi,%edi
40cd5f:	55                   	push   %ebp
40cd60:	8b ec                	mov    %esp,%ebp
40cd62:	51                   	push   %ecx
40cd63:	53                   	push   %ebx
40cd64:	56                   	push   %esi
40cd65:	57                   	push   %edi
40cd66:	8b 7d 08             	mov    0x8(%ebp),%edi
40cd69:	ba 00 10 00 00       	mov    $0x1000,%edx
40cd6e:	0f b7 c7             	movzwl %di,%eax
40cd71:	8b d8                	mov    %eax,%ebx
40cd73:	89 55 fc             	mov    %edx,-0x4(%ebp)
40cd76:	23 da                	and    %edx,%ebx
40cd78:	8b c8                	mov    %eax,%ecx
40cd7a:	c1 e3 02             	shl    $0x2,%ebx
40cd7d:	ba 00 02 00 00       	mov    $0x200,%edx
40cd82:	6a 00                	push   $0x0
40cd84:	5e                   	pop    %esi
40cd85:	81 e1 00 03 00 00    	and    $0x300,%ecx
40cd8b:	74 09                	je     0x40cd96
40cd8d:	3b ca                	cmp    %edx,%ecx
40cd8f:	74 0c                	je     0x40cd9d
40cd91:	89 75 fc             	mov    %esi,-0x4(%ebp)
40cd94:	eb 07                	jmp    0x40cd9d
40cd96:	c7 45 fc 00 20 00 00 	movl   $0x2000,-0x4(%ebp)
40cd9d:	b9 00 0c 00 00       	mov    $0xc00,%ecx
40cda2:	23 c1                	and    %ecx,%eax
40cda4:	74 22                	je     0x40cdc8
40cda6:	3d 00 04 00 00       	cmp    $0x400,%eax
40cdab:	74 16                	je     0x40cdc3
40cdad:	3d 00 08 00 00       	cmp    $0x800,%eax
40cdb2:	74 0b                	je     0x40cdbf
40cdb4:	3b c1                	cmp    %ecx,%eax
40cdb6:	75 10                	jne    0x40cdc8
40cdb8:	be 00 03 00 00       	mov    $0x300,%esi
40cdbd:	eb 09                	jmp    0x40cdc8
40cdbf:	8b f2                	mov    %edx,%esi
40cdc1:	eb 05                	jmp    0x40cdc8
40cdc3:	be 00 01 00 00       	mov    $0x100,%esi
40cdc8:	8b d7                	mov    %edi,%edx
40cdca:	8b c7                	mov    %edi,%eax
40cdcc:	83 e0 10             	and    $0x10,%eax
40cdcf:	c1 ea 02             	shr    $0x2,%edx
40cdd2:	83 e2 08             	and    $0x8,%edx
40cdd5:	8b cf                	mov    %edi,%ecx
40cdd7:	0b d0                	or     %eax,%edx
40cdd9:	83 e1 02             	and    $0x2,%ecx
40cddc:	8b c7                	mov    %edi,%eax
40cdde:	c1 ea 02             	shr    $0x2,%edx
40cde1:	83 e0 08             	and    $0x8,%eax
40cde4:	c1 e1 03             	shl    $0x3,%ecx
40cde7:	0b d0                	or     %eax,%edx
40cde9:	8b c7                	mov    %edi,%eax
40cdeb:	83 e0 04             	and    $0x4,%eax
40cdee:	d1 ea                	shr    $1,%edx
40cdf0:	0b c1                	or     %ecx,%eax
40cdf2:	83 e7 01             	and    $0x1,%edi
40cdf5:	03 c0                	add    %eax,%eax
40cdf7:	c1 e7 04             	shl    $0x4,%edi
40cdfa:	0b c2                	or     %edx,%eax
40cdfc:	0b c7                	or     %edi,%eax
40cdfe:	0b c3                	or     %ebx,%eax
40ce00:	0b 45 fc             	or     -0x4(%ebp),%eax
40ce03:	5f                   	pop    %edi
40ce04:	0b c6                	or     %esi,%eax
40ce06:	5e                   	pop    %esi
40ce07:	5b                   	pop    %ebx
40ce08:	c9                   	leave
40ce09:	c3                   	ret
40ce0a:	8b ff                	mov    %edi,%edi
40ce0c:	55                   	push   %ebp
40ce0d:	8b ec                	mov    %esp,%ebp
40ce0f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ce12:	ba 00 03 00 00       	mov    $0x300,%edx
40ce17:	8b c1                	mov    %ecx,%eax
40ce19:	c1 e9 16             	shr    $0x16,%ecx
40ce1c:	c1 e8 0e             	shr    $0xe,%eax
40ce1f:	23 ca                	and    %edx,%ecx
40ce21:	23 c2                	and    %edx,%eax
40ce23:	3b c1                	cmp    %ecx,%eax
40ce25:	74 03                	je     0x40ce2a
40ce27:	83 c8 ff             	or     $0xffffffff,%eax
40ce2a:	5d                   	pop    %ebp
40ce2b:	c3                   	ret
40ce2c:	8b ff                	mov    %edi,%edi
40ce2e:	55                   	push   %ebp
40ce2f:	8b ec                	mov    %esp,%ebp
40ce31:	83 ec 20             	sub    $0x20,%esp
40ce34:	56                   	push   %esi
40ce35:	57                   	push   %edi
40ce36:	6a 07                	push   $0x7
40ce38:	59                   	pop    %ecx
40ce39:	33 c0                	xor    %eax,%eax
40ce3b:	8d 7d e0             	lea    -0x20(%ebp),%edi
40ce3e:	f3 ab                	rep stos %eax,%es:(%edi)
40ce40:	d9 75 e0             	fnstenv -0x20(%ebp)
40ce43:	d9 65 e0             	fldenv -0x20(%ebp)
40ce46:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ce49:	25 3f 1f 00 00       	and    $0x1f3f,%eax
40ce4e:	50                   	push   %eax
40ce4f:	e8 09 ff ff ff       	call   0x40cd5d
40ce54:	83 3d bc 69 41 00 01 	cmpl   $0x1,0x4169bc
40ce5b:	8b f0                	mov    %eax,%esi
40ce5d:	59                   	pop    %ecx
40ce5e:	7d 04                	jge    0x40ce64
40ce60:	33 c9                	xor    %ecx,%ecx
40ce62:	eb 0d                	jmp    0x40ce71
40ce64:	0f ae 5d fc          	stmxcsr -0x4(%ebp)
40ce68:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ce6b:	81 e1 c0 ff 00 00    	and    $0xffc0,%ecx
40ce71:	51                   	push   %ecx
40ce72:	e8 36 fe ff ff       	call   0x40ccad
40ce77:	59                   	pop    %ecx
40ce78:	8b d0                	mov    %eax,%edx
40ce7a:	8b c8                	mov    %eax,%ecx
40ce7c:	83 e2 3f             	and    $0x3f,%edx
40ce7f:	81 e1 00 ff ff ff    	and    $0xffffff00,%ecx
40ce85:	c1 e2 02             	shl    $0x2,%edx
40ce88:	0b d1                	or     %ecx,%edx
40ce8a:	8b ce                	mov    %esi,%ecx
40ce8c:	c1 e2 06             	shl    $0x6,%edx
40ce8f:	83 e1 3f             	and    $0x3f,%ecx
40ce92:	0b d1                	or     %ecx,%edx
40ce94:	8b ce                	mov    %esi,%ecx
40ce96:	c1 e2 02             	shl    $0x2,%edx
40ce99:	81 e1 00 03 00 00    	and    $0x300,%ecx
40ce9f:	0b d1                	or     %ecx,%edx
40cea1:	c1 e2 0e             	shl    $0xe,%edx
40cea4:	0b c2                	or     %edx,%eax
40cea6:	5f                   	pop    %edi
40cea7:	0b c6                	or     %esi,%eax
40cea9:	5e                   	pop    %esi
40ceaa:	c9                   	leave
40ceab:	c3                   	ret
40ceac:	8b ff                	mov    %edi,%edi
40ceae:	55                   	push   %ebp
40ceaf:	8b ec                	mov    %esp,%ebp
40ceb1:	8b 45 0c             	mov    0xc(%ebp),%eax
40ceb4:	83 20 00             	andl   $0x0,(%eax)
40ceb7:	83 60 04 00          	andl   $0x0,0x4(%eax)
40cebb:	8b 45 08             	mov    0x8(%ebp),%eax
40cebe:	5d                   	pop    %ebp
40cebf:	c3                   	ret
40cec0:	8b ff                	mov    %edi,%edi
40cec2:	55                   	push   %ebp
40cec3:	8b ec                	mov    %esp,%ebp
40cec5:	8b 45 08             	mov    0x8(%ebp),%eax
40cec8:	83 20 00             	andl   $0x0,(%eax)
40cecb:	83 60 04 00          	andl   $0x0,0x4(%eax)
40cecf:	8b 45 0c             	mov    0xc(%ebp),%eax
40ced2:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ced6:	c7 40 18 2a 00 00 00 	movl   $0x2a,0x18(%eax)
40cedd:	83 c8 ff             	or     $0xffffffff,%eax
40cee0:	5d                   	pop    %ebp
40cee1:	c3                   	ret
40cee2:	8b ff                	mov    %edi,%edi
40cee4:	55                   	push   %ebp
40cee5:	8b ec                	mov    %esp,%ebp
40cee7:	83 ec 24             	sub    $0x24,%esp
40ceea:	a1 14 60 41 00       	mov    0x416014,%eax
40ceef:	33 c5                	xor    %ebp,%eax
40cef1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cef4:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cef7:	8b 45 0c             	mov    0xc(%ebp),%eax
40cefa:	53                   	push   %ebx
40cefb:	56                   	push   %esi
40cefc:	8b 75 14             	mov    0x14(%ebp),%esi
40ceff:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40cf02:	8b 4d 18             	mov    0x18(%ebp),%ecx
40cf05:	89 45 e0             	mov    %eax,-0x20(%ebp)
40cf08:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40cf0b:	57                   	push   %edi
40cf0c:	85 f6                	test   %esi,%esi
40cf0e:	75 05                	jne    0x40cf15
40cf10:	be 98 73 41 00       	mov    $0x417398,%esi
40cf15:	33 d2                	xor    %edx,%edx
40cf17:	33 db                	xor    %ebx,%ebx
40cf19:	42                   	inc    %edx
40cf1a:	85 c0                	test   %eax,%eax
40cf1c:	75 11                	jne    0x40cf2f
40cf1e:	8b c2                	mov    %edx,%eax
40cf20:	bf 36 f6 40 00       	mov    $0x40f636,%edi
40cf25:	89 45 10             	mov    %eax,0x10(%ebp)
40cf28:	8b c3                	mov    %ebx,%eax
40cf2a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40cf2d:	eb 12                	jmp    0x40cf41
40cf2f:	8b f8                	mov    %eax,%edi
40cf31:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40cf34:	75 08                	jne    0x40cf3e
40cf36:	6a fe                	push   $0xfffffffe
40cf38:	58                   	pop    %eax
40cf39:	e9 46 01 00 00       	jmp    0x40d084
40cf3e:	8b 45 e8             	mov    -0x18(%ebp),%eax
40cf41:	66 39 5e 06          	cmp    %bx,0x6(%esi)
40cf45:	75 5c                	jne    0x40cfa3
40cf47:	8a 1f                	mov    (%edi),%bl
40cf49:	47                   	inc    %edi
40cf4a:	84 db                	test   %bl,%bl
40cf4c:	78 18                	js     0x40cf66
40cf4e:	85 c0                	test   %eax,%eax
40cf50:	74 08                	je     0x40cf5a
40cf52:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40cf55:	0f b6 c3             	movzbl %bl,%eax
40cf58:	89 01                	mov    %eax,(%ecx)
40cf5a:	33 c0                	xor    %eax,%eax
40cf5c:	84 db                	test   %bl,%bl
40cf5e:	0f 95 c0             	setne  %al
40cf61:	e9 1e 01 00 00       	jmp    0x40d084
40cf66:	8a c3                	mov    %bl,%al
40cf68:	24 e0                	and    $0xe0,%al
40cf6a:	3c c0                	cmp    $0xc0,%al
40cf6c:	75 04                	jne    0x40cf72
40cf6e:	b7 02                	mov    $0x2,%bh
40cf70:	eb 1a                	jmp    0x40cf8c
40cf72:	8a c3                	mov    %bl,%al
40cf74:	24 f0                	and    $0xf0,%al
40cf76:	3c e0                	cmp    $0xe0,%al
40cf78:	75 04                	jne    0x40cf7e
40cf7a:	b7 03                	mov    $0x3,%bh
40cf7c:	eb 0e                	jmp    0x40cf8c
40cf7e:	8a c3                	mov    %bl,%al
40cf80:	24 f8                	and    $0xf8,%al
40cf82:	3c f0                	cmp    $0xf0,%al
40cf84:	0f 85 f1 00 00 00    	jne    0x40d07b
40cf8a:	b7 04                	mov    $0x4,%bh
40cf8c:	6a 07                	push   $0x7
40cf8e:	0f b6 c7             	movzbl %bh,%eax
40cf91:	59                   	pop    %ecx
40cf92:	2b c8                	sub    %eax,%ecx
40cf94:	88 7d ef             	mov    %bh,-0x11(%ebp)
40cf97:	d3 e2                	shl    %cl,%edx
40cf99:	0f b6 c3             	movzbl %bl,%eax
40cf9c:	4a                   	dec    %edx
40cf9d:	23 d0                	and    %eax,%edx
40cf9f:	8a df                	mov    %bh,%bl
40cfa1:	eb 28                	jmp    0x40cfcb
40cfa3:	8a 7e 04             	mov    0x4(%esi),%bh
40cfa6:	8a 5e 06             	mov    0x6(%esi),%bl
40cfa9:	8a c7                	mov    %bh,%al
40cfab:	8b 16                	mov    (%esi),%edx
40cfad:	2c 02                	sub    $0x2,%al
40cfaf:	88 5d ef             	mov    %bl,-0x11(%ebp)
40cfb2:	3c 02                	cmp    $0x2,%al
40cfb4:	0f 87 c1 00 00 00    	ja     0x40d07b
40cfba:	80 fb 01             	cmp    $0x1,%bl
40cfbd:	0f 82 b8 00 00 00    	jb     0x40d07b
40cfc3:	3a df                	cmp    %bh,%bl
40cfc5:	0f 83 b0 00 00 00    	jae    0x40d07b
40cfcb:	8b 4d 10             	mov    0x10(%ebp),%ecx
40cfce:	0f b6 c3             	movzbl %bl,%eax
40cfd1:	89 45 dc             	mov    %eax,-0x24(%ebp)
40cfd4:	3b c1                	cmp    %ecx,%eax
40cfd6:	73 02                	jae    0x40cfda
40cfd8:	8b c8                	mov    %eax,%ecx
40cfda:	8b c7                	mov    %edi,%eax
40cfdc:	2b 45 e0             	sub    -0x20(%ebp),%eax
40cfdf:	eb 25                	jmp    0x40d006
40cfe1:	8a 1f                	mov    (%edi),%bl
40cfe3:	47                   	inc    %edi
40cfe4:	40                   	inc    %eax
40cfe5:	88 5d ee             	mov    %bl,-0x12(%ebp)
40cfe8:	89 45 e0             	mov    %eax,-0x20(%ebp)
40cfeb:	8a e3                	mov    %bl,%ah
40cfed:	8a 5d ef             	mov    -0x11(%ebp),%bl
40cff0:	8a c4                	mov    %ah,%al
40cff2:	24 c0                	and    $0xc0,%al
40cff4:	3c 80                	cmp    $0x80,%al
40cff6:	75 30                	jne    0x40d028
40cff8:	0f b6 c4             	movzbl %ah,%eax
40cffb:	83 e0 3f             	and    $0x3f,%eax
40cffe:	c1 e2 06             	shl    $0x6,%edx
40d001:	0b d0                	or     %eax,%edx
40d003:	8b 45 e0             	mov    -0x20(%ebp),%eax
40d006:	3b c1                	cmp    %ecx,%eax
40d008:	72 d7                	jb     0x40cfe1
40d00a:	8b 7d dc             	mov    -0x24(%ebp),%edi
40d00d:	3b cf                	cmp    %edi,%ecx
40d00f:	73 1c                	jae    0x40d02d
40d011:	0f b6 c7             	movzbl %bh,%eax
40d014:	2a d9                	sub    %cl,%bl
40d016:	66 89 46 04          	mov    %ax,0x4(%esi)
40d01a:	0f b6 c3             	movzbl %bl,%eax
40d01d:	89 16                	mov    %edx,(%esi)
40d01f:	66 89 46 06          	mov    %ax,0x6(%esi)
40d023:	e9 0e ff ff ff       	jmp    0x40cf36
40d028:	ff 75 e4             	push   -0x1c(%ebp)
40d02b:	eb 4f                	jmp    0x40d07c
40d02d:	81 fa 00 d8 00 00    	cmp    $0xd800,%edx
40d033:	72 08                	jb     0x40d03d
40d035:	81 fa ff df 00 00    	cmp    $0xdfff,%edx
40d03b:	76 eb                	jbe    0x40d028
40d03d:	81 fa ff ff 10 00    	cmp    $0x10ffff,%edx
40d043:	77 e3                	ja     0x40d028
40d045:	0f b6 c7             	movzbl %bh,%eax
40d048:	c7 45 f0 80 00 00 00 	movl   $0x80,-0x10(%ebp)
40d04f:	c7 45 f4 00 08 00 00 	movl   $0x800,-0xc(%ebp)
40d056:	c7 45 f8 00 00 01 00 	movl   $0x10000,-0x8(%ebp)
40d05d:	3b 54 85 e8          	cmp    -0x18(%ebp,%eax,4),%edx
40d061:	72 c5                	jb     0x40d028
40d063:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40d066:	85 c9                	test   %ecx,%ecx
40d068:	74 02                	je     0x40d06c
40d06a:	89 11                	mov    %edx,(%ecx)
40d06c:	f7 da                	neg    %edx
40d06e:	56                   	push   %esi
40d06f:	1b d2                	sbb    %edx,%edx
40d071:	23 d7                	and    %edi,%edx
40d073:	52                   	push   %edx
40d074:	e8 33 fe ff ff       	call   0x40ceac
40d079:	eb 07                	jmp    0x40d082
40d07b:	51                   	push   %ecx
40d07c:	56                   	push   %esi
40d07d:	e8 3e fe ff ff       	call   0x40cec0
40d082:	59                   	pop    %ecx
40d083:	59                   	pop    %ecx
40d084:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d087:	5f                   	pop    %edi
40d088:	5e                   	pop    %esi
40d089:	33 cd                	xor    %ebp,%ecx
40d08b:	5b                   	pop    %ebx
40d08c:	e8 a4 65 ff ff       	call   0x403635
40d091:	c9                   	leave