Swift逆向

Swift逆向

Demangle

$s10testswift111AppDelegateCMa
等价:AppDelegate.class
解析:type metadata accessor for AppDelegate

$s10testswift113SceneDelegateC18sceneDidDisconnectyySo7UISceneCF 
等价:-[SceneDelegate sceneDidDisconnect:(UIScene*)scene]
解析:SceneDelegate.sceneDidDisconnect(__C.UIScene)

$s10testswift113SceneDelegateC5scene_13willConnectTo7optionsySo7UISceneC_So0I7SessionCSo0I17ConnectionOptionsCtF
等价:-[SceneDelegate scene:(UIScene*)scene willConnectTo:(UISceneSession*)session options:(UISceneConnectionOptions)options]
解析:SceneDelegate.scene(_: __C.UIScene, willConnectTo: __C.UISceneSession, options: __C.UISceneConnectionOptions) -> ()

$ss27_allocateUninitializedArrayySayxG_BptBwlF
等价:_allocateUninitializedArray()
解析:Swift._allocateUninitializedArray<A>(Builtin.Word) -> ([A], Builtin.RawPointer)

$sypN
等价:Any.class
解析:type metadata for Any

$sSSN
等价:String.class
解析:type metadata for Swift.String

$sSS21_builtinStringLiteral17utf8CodeUnitCount7isASCIISSBp_BwBi1_tcfC
等价:-[String init_builtinStringLiteral:(char*) utf8CodeUnitCount:(int) isASCII:(bool)]
解析:Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, utf8CodeUnitCount: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String

$ss5print_9separator10terminatoryypd_S2StFfA0_
解析:default argument 1 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

$ss5print_9separator10terminatoryypd_S2StFfA1_
解析:default argument 2 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

$ss5print_9separator10terminatoryypd_S2StF
等价:print(...)  等价于ObjC中的NSLog
解析:Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()

注:String类型作为参数占2个寄存器,作为返回值也占2个寄存器(X0/X1)

$s10testswift113SceneDelegateCACycfC
等价:-[SceneDelegate __allocating_init]
解析:SceneDelegate.__allocating_init() -> SceneDelegate

$s10testswift113SceneDelegateCACycfc
等价:-[SceneDelegate init]
解析:SceneDelegate.init() -> SceneDelegate

$s10testswift113SceneDelegateCfD
等价:-[SceneDelegate __deallocating_deinit]
解析:SceneDelegate.__deallocating_deinit

$sSSSgWOe
等价:-[String consume]
解析:outlined consume of Swift.String?

$sSSSgWOy
等价:-[String copy]
解析:outlined copy of Swift.String?

$sSSSgWOc
等价:-[String init]
解析:outlined init with copy of Swift.String?

$sSSSgWOh
等价:-[String destroy]
解析:outlined destroy of Swift.String?

String内存分析

String是Swift的常见结构,下面来动手分析

let s1 = "abc" as String
test(s:s1)
let s2 = "abcabcabcabcabcabcabcabcabcabc" as String
test(s:s2)
let s3 = "bcd" as StaticString
test(s:s3)
let s4 = "bcdbcdbcdbcdbcdbcdbcdbcdbcdbcd" as StaticString
test(s:s4)  

其伪代码如下:

v14.n128_u64[0] = 6513249LL;
v16 = &_sSSN;
v14.n128_u64[1] = -2089670227099910144LL;
v1 = __swift_instantiateConcreteTypeFromMangledName(&_ss23_ContiguousArrayStorageCyypGMD);
v2 = v1;
v3 = swift_allocObject(v1, 64LL, 7LL);
v4 = v3;
*(_OWORD *)(v3 + 16) = xmmword_100006BE0;
_sypWOc(&v14, v3 + 32);
_ss5print_9separator10terminatoryypd_S2StF(v4, 32LL, -2233785415175766016LL, 10LL, -2233785415175766016LL);
swift_release(v4);
__swift_destroy_boxed_opaque_existential_0(&v14);
v14.n128_u64[0] = -3458764513820540898LL;
v16 = &_sSSN;
v14.n128_u64[1] = (unsigned __int64)"" | 0x8000000000000000LL;
v5 = swift_allocObject(v2, 64LL, 7LL);
v6 = v5;
*(_OWORD *)(v5 + 16) = xmmword_100006BE0;
_sypWOc(&v14, v5 + 32);
_ss5print_9separator10terminatoryypd_S2StF(v6, 32LL, -2233785415175766016LL, 10LL, -2233785415175766016LL);
swift_release(v6);
__swift_destroy_boxed_opaque_existential_0(&v14);
v7 = vdupq_n_s64(3uLL);
v16 = &_ss12StaticStringVN;
v7.n128_u64[0] = (unsigned __int64)"bcd";
v14 = v7;
v15 = 2;
v8 = swift_allocObject(v2, 64LL, 7LL);
v9 = v8;
*(_OWORD *)(v8 + 16) = xmmword_100006BE0;
_sypWOc(&v14, v8 + 32);
_ss5print_9separator10terminatoryypd_S2StF(v9, 32LL, -2233785415175766016LL, 10LL, -2233785415175766016LL);
swift_release(v9);
__swift_destroy_boxed_opaque_existential_0(&v14);
v16 = &_ss12StaticStringVN;
v10 = vdupq_n_s64(0x1EuLL);
v10.n128_u64[0] = (unsigned __int64)"bcdbcdbcdbcdbcdbcdbcdbcdbcdbcd";
v14 = v10;
v15 = 2;
v11 = swift_allocObject(v2, 64LL, 7LL);
v12 = v11;
*(_OWORD *)(v11 + 16) = xmmword_100006BE0;
_sypWOc(&v14, v11 + 32);
_ss5print_9separator10terminatoryypd_S2StF(v12, 32LL, -2233785415175766016LL, 10LL, -2233785415175766016LL);

经过调试分析,可以知道String类大小为16字节,在函数传参中默认以值传递(X0/X1),而返回时也以值传递(X0/X1),可以得到如下结构。可以看到String结构在长度<=15时使用short方式存储,长度>=16时使用long方式存储。使用long方式存储时,还有存在偏移,不知道为何如此设计。从总体看形似std::string结构,但是更复杂。

分析String作为参数传递

func runoob(site: String) -> String {
    return (site)
}
runoob(site: "www.runoob.com")

可以发现runoob函数传参很特殊,字符串www.runoob.com的直接拆成2个8字节存到X0/X1.

x0 = 0x6f6e75722e777777  www.runo
x1 = 0xee006d6f632e626f   oob.com   长度0xe

若将字符串长度>=16则会出现.

x0 = 0xd000000000000010 长度0x10
x1 = 0x800000010096e780  地址0x10096e780+0x20处指向C字符串

因此Swift.String在内存和寄存器中永远占2个坑位,其内存结构类似于std::string,下面以结构体表示.

struct Swift.StaticString {
    int64_t _addr;
    int64_t _len;
};

union Swift.String {
    struct {
        char _buf[15];
        int _type : 4;        // short的type=0xe
        int _len : 4;          // 字符串长度
    } short,
    struct {
        int64_t _len : 60;  // 字符串长度
        int64_t _type : 4;  // long的type=0xd
        int64_t _addr;      // (_addr&0x7ffffffffffffffff)+0x20为真实地址(十分奇葩)
    } long
}

ObjC转换

String <-> NSString
$sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
    Swift.String._bridgeToObjectiveC(String) -> NSString
$sSs10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
    Swift.String._bridgeToObjectiveC(Substring) -> NSString
$sSs10FoundationE36_unconditionallyBridgeFromObjectiveCySsSo8NSStringCSgFZ
    Swift.Substring._unconditionallyBridgeFromObjectiveC(NSString) -> Substring
$sSS23_bridgeToObjectiveCImplyXlyF
    Swift.String._bridgeToObjectiveCImpl() -> Swift.AnyObject
$sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ
    Swift.String._unconditionallyBridgeFromObjectiveC(NSString) -> Swift.String

ALL <-> NSNumber
$sSi10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Int._bridgeToObjectiveC(Int) -> NSNumber
$sSi10FoundationE36_unconditionallyBridgeFromObjectiveCySiSo8NSNumberCSgFZ
    Swift.Int._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int
$sSu10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.UInt._bridgeToObjectiveC(UInt) -> NSNumber
$sSu10FoundationE36_unconditionallyBridgeFromObjectiveCySuSo8NSNumberCSgFZ
    Swift.UInt._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt
$ss4Int8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Int8._bridgeToObjectiveC(Int8) -> NSNumber
$ss4Int8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.Int8._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int8
$ss5UInt8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.UInt8._bridgeToObjectiveC(UInt8) -> NSNumber
$ss5UInt8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.UInt8._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt8
$ss5Int16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Int16._bridgeToObjectiveC(Int16) -> NSNumber
$ss5Int16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.Int16._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int16
$ss6UInt16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.UInt16._bridgeToObjectiveC(UInt16) -> NSNumber
$ss6UInt16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.UInt16._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt16
$ss5Int32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Int32._bridgeToObjectiveC(Int32) -> NSNumber
$ss5Int32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.Int32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int32
$ss6UInt32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.UInt32._bridgeToObjectiveC(UInt32) -> NSNumber
$ss6UInt32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.UInt32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt32
$ss5Int64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Int64._bridgeToObjectiveC(Int64) -> NSNumber
$ss5Int64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.Int64._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int64
$ss6UInt64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.UInt64._bridgeToObjectiveC(UInt64) -> NSNumber
$ss6UInt64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
    Swift.UInt64._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt64
$sSd10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Double._bridgeToObjectiveC(Double) -> NSNumber
$sSd10FoundationE36_unconditionallyBridgeFromObjectiveCySdSo8NSNumberCSgFZ
    Swift.Double._unconditionallyBridgeFromObjectiveC(NSNumber) -> Double
$sSf10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Float._bridgeToObjectiveC(Float) -> NSNumber
$sSf10FoundationE36_unconditionallyBridgeFromObjectiveCySfSo8NSNumberCSgFZ
    Swift.Float._unconditionallyBridgeFromObjectiveC(NSNumber) -> Float
$sSb10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    Swift.Bool._bridgeToObjectiveC(Bool) -> NSNumber
$sSb10FoundationE36_unconditionallyBridgeFromObjectiveCySbSo8NSNumberCSgFZ
    Swift.Bool._unconditionallyBridgeFromObjectiveC(NSNumber) -> Bool
$s12CoreGraphics7CGFloatV10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
    CoreGraphics.CGFloat._bridgeToObjectiveC() -> NSNumber
$s12CoreGraphics7CGFloatV10FoundationE36_unconditionallyBridgeFromObjectiveCyACSo8NSNumberCSgFZ
    CoreGraphics.CGFloat._unconditionallyBridgeFromObjectiveC(NSNumber) -> CGFloat

Array <-> NSArray
$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF
    Swift.Array._bridgeToObjectiveC(Array) -> NSArray
$sSa10FoundationE36_unconditionallyBridgeFromObjectiveCySayxGSo7NSArrayCSgFZ
    Swift.Array._unconditionallyBridgeFromObjectiveC(NSArray?) -> Array

$sSa23_bridgeToObjectiveCImplyXlyF
    Swift.Array._bridgeToObjectiveCImpl() -> Swift.AnyObject

Dictionary <-> NSDictionary
$sSD10FoundationE19_bridgeToObjectiveCSo12NSDictionaryCyF
    Swift.Dictionary._bridgeToObjectiveC(Dictionary) -> NSDictionary
$sSD10FoundationE36_unconditionallyBridgeFromObjectiveCySDyxq_GSo12NSDictionaryCSgFZ
    Swift.Dictionary._unconditionallyBridgeFromObjectiveC(NSDictionary) -> Dictionary
$sSD23_bridgeToObjectiveCImplyXlyF
    Swift.Dictionary._bridgeToObjectiveCImpl() -> Swift.AnyObject

AnyHashable <-> NSObject
ss11AnyHashableV10FoundationE19_bridgeToObjectiveCSo8NSObjectCyF
    Swift.AnyHashable._bridgeToObjectiveC(AnyHashable) -> NSObject
$ss11AnyHashableV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSObjectCSgFZ
    Swift.AnyHashable._unconditionallyBridgeFromObjectiveC(NSObject) -> AnyHashable

Set <-> NSSet
$sSh10FoundationE19_bridgeToObjectiveCSo5NSSetCyF
    Swift.Set._bridgeToObjectiveC(Set) -> NSSet
$sSh23_bridgeToObjectiveCImplyXlyF
    Swift.Set._bridgeToObjectiveCImpl() -> Swift.AnyObject
$sSh10FoundationE36_unconditionallyBridgeFromObjectiveCyShyxGSo5NSSetCSgFZ
    Swift.Set._unconditionallyBridgeFromObjectiveC(NSSet) -> Set

Data <-> NSData
$s10Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF
    Foundation.Data._bridgeToObjectiveC(Data) -> NSData
$s10Foundation4DataV36_unconditionallyBridgeFromObjectiveCyACSo6NSDataCSgFZ
    Foundation.Data._unconditionallyBridgeFromObjectiveC(NSData) -> Data

URL <-> NSURL
$s10Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF
    Foundation.URL._bridgeToObjectiveC(URL) -> NSURL
$s10Foundation3URLV36_unconditionallyBridgeFromObjectiveCyACSo5NSURLCSgFZ
    Foundation.URL._unconditionallyBridgeFromObjectiveC(NSURL) -> URL
$s10Foundation10URLRequestV19_bridgeToObjectiveCSo12NSURLRequestCyF
    Foundation.URLRequest._bridgeToObjectiveC() -> __C.NSURLRequest
$s10Foundation10URLRequestV36_unconditionallyBridgeFromObjectiveCyACSo12NSURLRequestCSgFZ
    Foundation.URLRequest._unconditionallyBridgeFromObjectiveC(NSURLRequest) -> URLRequest
$s10Foundation13URLComponentsV19_bridgeToObjectiveCSo15NSURLComponentsCyF
    Foundation.URLComponents._bridgeToObjectiveC(URLComponents) -> NSURLComponents
$s10Foundation13URLComponentsV36_unconditionallyBridgeFromObjectiveCyACSo15NSURLComponentsCSgFZ
    Foundation.URLComponents._unconditionallyBridgeFromObjectiveC(NSURLComponents) -> URLComponents
$s10Foundation12URLQueryItemV19_bridgeToObjectiveCSo010NSURLQueryC0CyF
    Foundation.URLQueryItem._bridgeToObjectiveC(URLQueryItem) -> NSURLQueryItem
$s10Foundation12URLQueryItemV36_unconditionallyBridgeFromObjectiveCyACSo010NSURLQueryC0CSgFZ
    Foundation.URLQueryItem._unconditionallyBridgeFromObjectiveC(NSURLQueryItem?) -> URLQueryItem

Calendar <-> NSCalendar
$s10Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF
    Foundation.Calendar._bridgeToObjectiveC(Calendar) -> NSCalendar
$s10Foundation8CalendarV36_unconditionallyBridgeFromObjectiveCyACSo10NSCalendarCSgFZ
    Foundation.Calendar._unconditionallyBridgeFromObjectiveC(NSCalendar) -> Calendar

TimeZone <-> NSTime
$s10Foundation8TimeZoneV19_bridgeToObjectiveCSo06NSTimeC0CyF
    Foundation.TimeZone._bridgeToObjectiveC() -> NSTimeZone
$s10Foundation8TimeZoneV36_unconditionallyBridgeFromObjectiveCyACSo06NSTimeC0CSgFZ
    Foundation.TimeZone._unconditionallyBridgeFromObjectiveC(NSTimeZone) -> TimeZone

Swift.Error <-> NSError
$ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE19_bridgeToObjectiveCSo7NSErrorCyF
    Swift._SwiftNewtypeWrapper< where A.RawValue == Swift.Error>._bridgeToObjectiveC() -> NSError
$ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE36_unconditionallyBridgeFromObjectiveCyxSo7NSErrorCSgFZ
    Swift._SwiftNewtypeWrapper<Swift.Error>._unconditionallyBridgeFromObjectiveC(NSError?) -> Swift.Error

Date <-> NSDate
$s10Foundation4DateV19_bridgeToObjectiveCSo6NSDateCyF
    Foundation.Date._bridgeToObjectiveC() -> NSDate
$s10Foundation4DateV36_unconditionallyBridgeFromObjectiveCyACSo6NSDateCSgFZ 
    Date._unconditionallyBridgeFromObjectiveC(NSDate) -> Date
$s10Foundation12DateIntervalV19_bridgeToObjectiveCSo06NSDateC0CyF
    Foundation.DateInterval._bridgeToObjectiveC() -> NSDateInterval
$s10Foundation12DateIntervalV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
    Foundation.DateInterval._unconditionallyBridgeFromObjectiveC(NSDateInterval?) -> DateInterval
$s10Foundation14DateComponentsV19_bridgeToObjectiveCSo06NSDateC0CyF
    Foundation.DateComponents._bridgeToObjectiveC() -> NSDateComponents
$s10Foundation14DateComponentsV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
    Foundation.DateComponents._unconditionallyBridgeFromObjectiveC(NSDateComponents) -> DateComponents

UUID <-> NSUUID
$s10Foundation4UUIDV19_bridgeToObjectiveCSo6NSUUIDCyF
    Foundation.UUID._bridgeToObjectiveC() -> NSUUID
$s10Foundation4UUIDV36_unconditionallyBridgeFromObjectiveCyACSo6NSUUIDCSgFZ
    Foundation.UUID._unconditionallyBridgeFromObjectiveC(NSUUID) -> Foundation.UUID

Other
$s10Foundation8IndexSetV19_bridgeToObjectiveCSo07NSIndexC0CyF
    Foundation.IndexSet._bridgeToObjectiveC(IndexSet) -> NSIndexSet
$s10Foundation8IndexSetV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
    Foundation.IndexSet._unconditionallyBridgeFromObjectiveC(NSIndexSet) -> IndexSet
$sSo8CGVectorV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    CGVector._bridgeToObjectiveC() -> NSValue
$sSo8CGVectorV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    CGVector._unconditionallyBridgeFromObjectiveC(NSValue) -> CGVector
$sSo7CGPointV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    CGPoint._bridgeToObjectiveC() -> NSValue
$sSo7CGPointV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    CGPoint._unconditionallyBridgeFromObjectiveC(NSValue) -> CGPoint
$sSo9NSDecimala10FoundationE19_bridgeToObjectiveCSo0A6NumberCyF
    NSDecimal._bridgeToObjectiveC() -> NSDecimalNumber
$sSo9NSDecimala10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo0A6NumberCSgFZ
    NSDecimal._unconditionallyBridgeFromObjectiveC(NSDecimalNumber) -> NSDecimal
$sSo17CGAffineTransformV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    CGAffineTransform._bridgeToObjectiveC() -> NSValue
$sSo17CGAffineTransformV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    CGAffineTransform._unconditionallyBridgeFromObjectiveC(NSValue) -> CGAffineTransform
$s10Foundation12CharacterSetV19_bridgeToObjectiveCSo011NSCharacterC0CyF
    Foundation.CharacterSet._bridgeToObjectiveC() -> NSCharacterSet
$s10Foundation12CharacterSetV36_unconditionallyBridgeFromObjectiveCyACSo011NSCharacterC0CSgFZ
    Foundation.CharacterSet._unconditionallyBridgeFromObjectiveC(NSCharacterSet) -> CharacterSet
$s10Foundation6LocaleV19_bridgeToObjectiveCSo8NSLocaleCyF
    Foundation.Locale._bridgeToObjectiveC() -> NSLocale
$s10Foundation6LocaleV36_unconditionallyBridgeFromObjectiveCyACSo8NSLocaleCSgFZ
    Foundation.Locale._unconditionallyBridgeFromObjectiveC(NSLocale) -> Locale
$sSo8_NSRangeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    NSRange._bridgeToObjectiveC() -> NSValue
$sSo8_NSRangeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    NSRange._unconditionallyBridgeFromObjectiveC(NSValue) -> NSRange
$sSo6CGRectV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    CGRect._bridgeToObjectiveC() -> NSValue
$sSo6CGRectV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    CGRect._unconditionallyBridgeFromObjectiveC(NSValue) -> CGRect
$sSo6CGSizeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
    CGSize._bridgeToObjectiveC() -> NSValue
$sSo6CGSizeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
    CGSize._unconditionallyBridgeFromObjectiveC(NSValue) -> CGSize
$s10Foundation12NotificationV19_bridgeToObjectiveCSo14NSNotificationCyF 
    Foundation.Notification._bridgeToObjectiveC() -> NSNotification
$s10Foundation12NotificationV36_unconditionallyBridgeFromObjectiveCyACSo14NSNotificationCSgFZ       
    Foundation.Notification._unconditionallyBridgeFromObjectiveC(NSNotification?) -> Notification
$ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE19_bridgeToObjectiveCADyF
    Swift._SwiftNewtypeWrapper<AnyObject>._bridgeToObjectiveC(AnyObject) -> RawValue
$ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE36_unconditionallyBridgeFromObjectiveCyxADSgFZ
    Swift._SwiftNewtypeWrapper<AnyObject>._unconditionallyBridgeFromObjectiveC(RawValue) -> AnyObject
$sSq19_bridgeToObjectiveCyXlyF
    Swift.Optional._bridgeToObjectiveC() -> Swift.AnyObject
$sSq36_unconditionallyBridgeFromObjectiveCyxSgyXlSgFZ
    Swift.Optional._unconditionallyBridgeFromObjectiveC(Swift.AnyObject) -> AnyObject
$ss19_BridgeableMetatypeV19_bridgeToObjectiveCyXlyF
    Swift._BridgeableMetatype._bridgeToObjectiveC() -> Swift.AnyObject
$ss19_BridgeableMetatypeV36_unconditionallyBridgeFromObjectiveCyAByXlSgFZ
    Swift._BridgeableMetatype._unconditionallyBridgeFromObjectiveC(AnyObject) -> _BridgeableMetatype
$s8Dispatch0A4DataV19_bridgeToObjectiveCSo16OS_dispatch_dataCyF
    Dispatch.DispatchData._bridgeToObjectiveC() -> OS_dispatch_data
$s8Dispatch0A4DataV36_unconditionallyBridgeFromObjectiveCyACSo16OS_dispatch_dataCSgFZ
    Dispatch.DispatchData._unconditionallyBridgeFromObjectiveC(OS_dispatch_data) -> DispatchData
$s10Foundation11MeasurementV19_bridgeToObjectiveCSo13NSMeasurementCyF
    Foundation.Measurement._bridgeToObjectiveC(Measurement) -> NSMeasurement
$s10Foundation11MeasurementV36_unconditionallyBridgeFromObjectiveCyACyxGSo13NSMeasurementCSgFZ
    Foundation.Measurement._unconditionallyBridgeFromObjectiveC(NSMeasurement) -> Measurement
$s10Foundation9IndexPathV19_bridgeToObjectiveCSo07NSIndexC0CyF
    Foundation.IndexPath._bridgeToObjectiveC(IndexPath) -> NSIndexPath
$s10Foundation9IndexPathV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
    Foundation.IndexPath._unconditionallyBridgeFromObjectiveC(NSIndexPath) -> IndexPath
$s10Foundation20PersonNameComponentsV19_bridgeToObjectiveCSo08NSPersoncD0CyF
    Foundation.PersonNameComponents._bridgeToObjectiveC(PersonNameComponents) -> NSPersonNameComponents
$s10Foundation20PersonNameComponentsV36_unconditionallyBridgeFromObjectiveCyACSo08NSPersoncD0CSgFZ  
    PersonNameComponents._unconditionallyBridgeFromObjectiveC(NSPersonNameComponents) -> PersonNameComponents