From 524f536a5341e70e616dcb61536df469b9d38a10 Mon Sep 17 00:00:00 2001 From: dayu <506228475@qq.com> Date: Thu, 22 Oct 2026 23:53:32 +0800 Subject: [PATCH] WIP: align the 2.4.0 detector, pin quality gates and sequence box tracker; investigate remaining clip motion --- .../FCP-BeautyGirl/Plugin/PGFaceProcessor.m | 423 +- .../current-clip-aligned-summary.json | 321 + .../implementation-evidence.json | 7448 +++++++++++++++++ docs/analysis/跟踪闪烁对齐分析.md | 7 + scripts/inspect-tracking-sequence.m | 4 +- 5 files changed, 8064 insertions(+), 139 deletions(-) create mode 100644 docs/analysis/tracking-flicker-20261022/current-clip-aligned-summary.json create mode 100644 docs/analysis/tracking-flicker-20261022/implementation-evidence.json diff --git a/FCP-BeautyGirl/FCP-BeautyGirl/Plugin/PGFaceProcessor.m b/FCP-BeautyGirl/FCP-BeautyGirl/Plugin/PGFaceProcessor.m index ba9841a..9f189a1 100644 --- a/FCP-BeautyGirl/FCP-BeautyGirl/Plugin/PGFaceProcessor.m +++ b/FCP-BeautyGirl/FCP-BeautyGirl/Plugin/PGFaceProcessor.m @@ -90,7 +90,7 @@ static NSArray *PGSanitizedPoints76(id value) { return [points copy]; } static NSArray *PGFullPoints76(VNFaceLandmarkRegion2D *region, CGRect box) { - if (region.pointCount != 76 || !region.normalizedPoints) return nil; + if (region.pointCount < 76 || !region.normalizedPoints) return nil; const CGPoint *raw = region.normalizedPoints; NSMutableArray *points = [NSMutableArray arrayWithCapacity:76]; for (NSUInteger i=0; i<76; i++) { @@ -110,6 +110,7 @@ static NSDictionary *PGGeometry(VNFaceObservation *observation) { @"mouth": PGRegion(lm.innerLips, box), @"contour": PGRegion(lm.faceContour, box)} mutableCopy]; NSArray *points = PGFullPoints76(lm.allPoints, box); if (points) geometry[@"points76"] = points; + geometry[@"landmarkConfidence"] = @(lm ? lm.confidence : 0); return [geometry copy]; } static NSDictionary *PGSanitizedGeometry(id value) { @@ -133,6 +134,7 @@ static NSDictionary *PGSanitizedGeometry(id value) { // thin/chin/jaw/short fields without discarding otherwise usable old records. NSArray *points76 = PGSanitizedPoints76(value[@"points76"]); if (points76) result[@"points76"] = points76; + if ([value[@"landmarkConfidence"] isKindOfClass:NSNumber.class]) result[@"landmarkConfidence"] = value[@"landmarkConfidence"]; return [result copy]; } static CGRect PGRegionBounds(NSDictionary *geometry, NSString *name, CGRect fallback) { @@ -178,154 +180,259 @@ static CGPoint PGRemapPoint(NSArray *point, CGRect old, CGRect current) { return CGPointMake(current.origin.x+([point[0] doubleValue]-old.origin.x)*current.size.width/old.size.width, current.origin.y+([point[1] doubleValue]-old.origin.y)*current.size.height/old.size.height); } -static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previous, double dt, BOOL stabilizePoints76) { - CGRect old=PGArrayRect(previous[@"box"]),box=PGArrayRect(current[@"box"]); - if(!PGValidRect(old) || !PGValidRect(box))return current; - // Independent stabilization: translate/scale old landmarks into the current - // detection box first, so normal head motion does not accumulate box lag. - double weight=.9*fmin(1,fmax(0,dt/.03)); - CGPoint oldLE=PGCenter(PGRegionBounds(previous,@"leftEye",PGInFace(old,.16,.53,.25,.15))); - CGPoint oldRE=PGCenter(PGRegionBounds(previous,@"rightEye",PGInFace(old,.59,.53,.25,.15))); - CGPoint newLE=PGCenter(PGRegionBounds(current,@"leftEye",PGInFace(box,.16,.53,.25,.15))); - CGPoint newRE=PGCenter(PGRegionBounds(current,@"rightEye",PGInFace(box,.59,.53,.25,.15))); - double ox=oldRE.x-oldLE.x,oy=oldRE.y-oldLE.y,nx=newRE.x-newLE.x,ny=newRE.y-newLE.y; - double oldLength=hypot(ox,oy),newLength=hypot(nx,ny); - BOOL axisHold=oldLength>MAX(.003,.055*MIN(old.size.height,box.size.height)) && - newLength>MAX(.003,.055*MIN(old.size.height,box.size.height)) && - (ox*nx+oy*ny)/(oldLength*newLength)<-.18; - NSMutableDictionary *stable=[NSMutableDictionary dictionaryWithObject:current[@"box"] forKey:@"box"]; - for(NSString *name in PGGeometryRegions()) { - NSArray *a=previous[name],*b=current[name]; - if(!a.count || (!axisHold && a.count!=b.count)) {stable[name]=b;continue;} - NSMutableArray *points=[NSMutableArray arrayWithCapacity:a.count]; - for(NSUInteger i=0;ipoints.count) return CGPointMake(NAN,NAN); + CGPoint sum=CGPointZero; + for(NSUInteger i=first;i1.35||p.y<-.35||p.y>1.35)return @"localBounds"; } - NSArray *current76 = PGSanitizedPoints76(current[@"points76"]); - NSArray *previous76 = PGSanitizedPoints76(previous[@"points76"]); - if (current76) { - if (stabilizePoints76 && previous76) { - NSMutableArray *points = [NSMutableArray arrayWithCapacity:76]; - for (NSUInteger i=0; i<76; i++) { - CGPoint p = PGRemapPoint(previous76[i], old, box); - if (!axisHold) { - p.x += ([current76[i][0] doubleValue]-p.x)*weight; - p.y += ([current76[i][1] doubleValue]-p.y)*weight; - } - [points addObject:@[@(p.x),@(p.y)]]; - } - stable[@"points76"] = [points copy]; - } else { - // Reacquired detections and changes from/to incomplete topology do - // not borrow a held face's old projected pose or invent missing points. - stable[@"points76"] = current76; - } + CGPoint centers[5];NSArray *names=@[@"leftEye",@"rightEye",@"nose",@"lips"]; + for(NSUInteger i=0;i<4;i++) { + NSArray *region=g[names[i]];if(!region.count)return @"missingRegion"; + centers[i]=PGLocalPoint(PGMeanPoints(region,0,region.count),box); + if(!isfinite(centers[i].x)||!isfinite(centers[i].y))return @"regionBounds"; } - return [stable copy]; + centers[4]=PGLocalPoint(PGMeanPoints(contour,contour.count/2-1,3),box); + CGPoint left=centers[0],right=centers[1],nose=centers[2],mouth=centers[3],chin=centers[4]; + double dx=right.x-left.x,dy=right.y-left.y,length=hypot(dx,dy); + if(!isfinite(length)||length<.1)return @"eyeDistance"; + dx/=length;dy/=length; + CGPoint eye=CGPointMake((left.x+right.x)*.5,(left.y+right.y)*.5); + double vx=-dy,vy=dx; + if(vx*(mouth.x-eye.x)+vy*(mouth.y-eye.y)<0){vx=-vx;vy=-vy;} + double mouthProjection=vx*(mouth.x-eye.x)+vy*(mouth.y-eye.y); + double noseProjection=vx*(nose.x-eye.x)+vy*(nose.y-eye.y); + double chinProjection=vx*(chin.x-eye.x)+vy*(chin.y-eye.y); + double lateral=dx*(chin.x-eye.x)+dy*(chin.y-eye.y); + if(!isfinite(chinProjection)||mouthProjection<.08||chinProjection-mouthProjection<.06||chinProjection<.2)return @"anatomy"; + if(noseProjection<-.12||noseProjection>mouthProjection+.16||fabs(lateral)>length*.5+.3)return @"anatomy"; + return @""; +} +static double PGBoxIoU(CGRect a,CGRect b) { + CGRect intersection=CGRectIntersection(a,b);double area=CGRectIsNull(intersection)?0:intersection.size.width*intersection.size.height; + double total=a.size.width*a.size.height+b.size.width*b.size.height-area;return total>0?area/total:0; +} +static BOOL PGCompatibleBoxes(CGRect a,CGRect b) { + if(!PGValidRect(a)||!PGValidRect(b))return NO; + CGPoint x=PGCenter(a),y=PGCenter(b); + return hypot(x.x-y.x,x.y-y.y)<=MAX(.04,.82*MAX(b.size.width,b.size.height))||PGBoxIoU(a,b)>=.08; +} +static CGPoint PGChinAxis(NSDictionary *g) { + NSArray *p=g[@"points76"];if(p.count!=76)return CGPointMake(NAN,NAN); + CGPoint a=PGPoint(p[66]),b=PGPoint(p[67]),c=PGPoint(p[68]),center=PGCenter(PGArrayRect(g[@"box"])); + return CGPointMake((a.x+1.65*b.x+c.x)/3.65-center.x,(a.y+1.65*b.y+c.y)/3.65-center.y); +} +static BOOL PGGeometryAxisFlip(NSDictionary *current,NSDictionary *previous) { + CGRect a=PGArrayRect(current[@"box"]),b=PGArrayRect(previous[@"box"]); + if(!PGCompatibleBoxes(a,b))return NO; + CGPoint x=PGChinAxis(current),y=PGChinAxis(previous);double lx=hypot(x.x,x.y),ly=hypot(y.x,y.y); + double threshold=MAX(.003,.055*MIN(a.size.height,b.size.height)); + if(!isfinite(lx)||!isfinite(ly)||lx<.0008||ly<.0008||lx=0||fabs(x.y)<.35*threshold||fabs(y.y)<.35*threshold)return NO; + double cosine=fmax(-1,fmin(1,(x.x*y.x+x.y*y.y)/(lx*ly))); + return cosine<=-.18||fabs(x.y-y.y)>=threshold; +} +static NSDictionary *PGRemappedGeometry(NSDictionary *previous,CGRect box) { + CGRect old=PGArrayRect(previous[@"box"]);if(!PGValidRect(old)||!PGValidRect(box))return previous; + NSMutableDictionary *result=[previous mutableCopy];result[@"box"]=PGRectArray(box); + NSMutableArray *names=[PGGeometryRegions() mutableCopy];[names addObject:@"points76"]; + for(NSString *name in names) { + NSMutableArray *points=[NSMutableArray new]; + for(NSArray *point in previous[name]) {CGPoint p=PGRemapPoint(point,old,box);[points addObject:@[@(p.x),@(p.y)]];} + if(points.count)result[name]=points; + } + return result; +} +// Reference hold validation uses the 76 points plus the box center. Keep our +// persisted topology at 76 and reconstruct the center rather than changing archives. +static BOOL PGValidHeldGeometry(NSDictionary *g) { + CGRect box=PGArrayRect(g[@"box"]);NSArray *p=PGSanitizedPoints76(g[@"points76"]); + if(!PGValidRect(box)||p.count!=76)return NO; + CGRect expanded=CGRectInset(box,-.4*box.size.width,-.4*box.size.height); + double minX=CGRectGetMidX(box),maxX=minX,minY=CGRectGetMidY(box),maxY=minY; + double contourMinX=DBL_MAX,contourMaxX=-DBL_MAX,contourMinY=DBL_MAX,contourMaxY=-DBL_MAX,left=0,mid=0,right=0; + for(NSUInteger i=0;i<76;i++) { + CGPoint point=PGPoint(p[i]); + if(point.x<-.25||point.x>1.25||point.y<-.25||point.y>1.25)return NO; + minX=MIN(minX,point.x);maxX=MAX(maxX,point.x);minY=MIN(minY,point.y);maxY=MAX(maxY,point.y); + if(i<59)continue; + if(!CGRectContainsPoint(expanded,point))return NO; + contourMinX=MIN(contourMinX,point.x);contourMaxX=MAX(contourMaxX,point.x); + contourMinY=MIN(contourMinY,point.y);contourMaxY=MAX(contourMaxY,point.y); + if(i<66)left+=point.x;else if(i<=68)mid+=point.x;else right+=point.x; + } + double w=box.size.width,h=box.size.height,cw=contourMaxX-contourMinX,ch=contourMaxY-contourMinY; + left/=7;mid/=3;right/=7; + return maxX-minX>=.25*w&&maxY-minY>=.25*h&&cw>=.2*w&&ch>=.04*h&&cw<=1.85*w&&ch<=1.85*h&& + fabs(right-left)>=.12*w&&mid>=MIN(left,right)-.35*w&&mid<=MAX(left,right)+.35*w; +} +static NSString *PGGeometryTransitionReason(NSDictionary *current,NSDictionary *previous) { + CGRect box=PGArrayRect(current[@"box"]),old=PGArrayRect(previous[@"box"]); + if(!PGCompatibleBoxes(box,old))return @""; + if(PGGeometryAxisFlip(current,previous))return @"axisFlip"; + NSArray *a=current[@"points76"],*b=previous[@"points76"]; + if(a.count!=76||b.count!=76)return @""; + NSMutableArray *distances=[NSMutableArray new];double scale=MAX(box.size.width,box.size.height); + for(NSUInteger i=0;i<76;i++) { + CGPoint p=PGRemapPoint(b[i],old,box),q=PGPoint(a[i]); + [distances addObject:@(hypot(p.x-q.x,p.y-q.y)/scale)]; + } + [distances sortUsingSelector:@selector(compare:)]; + return [distances[38] doubleValue]>.30||[distances[67] doubleValue]>.58?@"pointJump":@""; +} +static CIImage *PGPreparedVisionImage(CIImage *image,CGFloat limit) { + CGRect e=image.extent; + CIImage *prepared=[image imageByApplyingTransform:CGAffineTransformMakeTranslation(-e.origin.x,-e.origin.y)]; + CGFloat scale=MIN(1,limit/MAX(e.size.width,e.size.height)); + if(scale<1)prepared=[prepared imageByApplyingTransform:CGAffineTransformMakeScale(scale,scale)]; + return [prepared imageByCroppingToRect:CGRectMake(0,0,MAX(1,floor(e.size.width*scale)),MAX(1,floor(e.size.height*scale)))]; } -// This live selector is deliberately independent of _targets. Its past-only -// .35s reference window is a documented project policy, not a recovered exact -// vendor formula. Continuous held outputs advance time, so this is not a hold -// timeout. Locks protect state, not global render-order equivalence: a cold seek -// cannot reconstruct frames the host has never supplied. @interface PGRealtimeFaceTracker : NSObject { NSLock *_mutex; NSMutableArray *_entries; NSUInteger _estimatedBytes; + NSDictionary *_liveReference; + VNSequenceRequestHandler *_sequence; + VNTrackObjectRequest *_objectRequest; + CGRect _objectBox; + CMTime _objectTime; + BOOL _objectValid; } - (NSDictionary *)resultForGeometry:(NSArray *)raw settings:(PGBeautySettings)settings time:(CMTime)time extent:(CGRect)extent; +- (NSDictionary *)resultForGeometry:(NSArray *)raw settings:(PGBeautySettings)settings time:(CMTime)time extent:(CGRect)extent image:(CIImage *)image; +- (CGRect)trackedBoxForImage:(CIImage *)image time:(CMTime)time seedBox:(CGRect)seed; - (void)reset; - (NSDictionary *)cacheStatistics; @end @implementation PGRealtimeFaceTracker -- (instancetype)init {if((self=[super init])){_mutex=[NSLock new];_entries=[NSMutableArray new];}return self;} -- (void)reset {[_mutex lock];[_entries removeAllObjects];_estimatedBytes=0;[_mutex unlock];} +- (instancetype)init {if((self=[super init])){_mutex=[NSLock new];_entries=[NSMutableArray new];_objectTime=kCMTimeInvalid;}return self;} +- (void)resetObjectTracker { _sequence=[VNSequenceRequestHandler new];_objectRequest=nil;_objectBox=CGRectNull;_objectTime=kCMTimeInvalid;_objectValid=NO; } +- (void)reset {[_mutex lock];[_entries removeAllObjects];_estimatedBytes=0;_liveReference=nil;[self resetObjectTracker];[_mutex unlock];} - (NSDictionary *)cacheStatistics {[_mutex lock];NSDictionary *stats=@{@"frames":@(_entries.count),@"estimatedBytes":@(_estimatedBytes)};[_mutex unlock];return stats;} -- (NSDictionary *)resultForGeometry:(NSArray *)input settings:(PGBeautySettings)s time:(CMTime)time extent:(CGRect)extent { +- (CGRect)trackedBoxForImage:(CIImage *)image time:(CMTime)time seedBox:(CGRect)seed { + if(!image||!PGTimeKey(time))return CGRectNull; + BOOL hasSeed=PGValidRect(seed),hasBox=PGValidRect(_objectBox); + double dt=PGTimeKey(_objectTime)?CMTimeGetSeconds(CMTimeSubtract(time,_objectTime)):NAN; + BOOL backward=isfinite(dt)&&dt<0; + if(hasBox&&_objectValid&&isfinite(dt)&&fabs(dt)<=.0005)return _objectBox; + if(!_sequence)_sequence=[VNSequenceRequestHandler new]; + if(!_objectRequest||!_objectValid||backward||(isfinite(dt)&&dt>.2)) { + if(!backward&&hasBox&&!_objectValid&&isfinite(dt)&&dt<=.45&&(!hasSeed||!PGCompatibleBoxes(seed,_objectBox)))return _objectBox; + if(!hasSeed)return CGRectNull; + _sequence=[VNSequenceRequestHandler new]; + _objectRequest=[[VNTrackObjectRequest alloc] initWithDetectedObjectObservation:[VNDetectedObjectObservation observationWithBoundingBox:seed]]; + NSUInteger revision=VNTrackObjectRequest.defaultRevision; + if(![VNTrackObjectRequest.supportedRevisions containsIndex:revision])revision=VNTrackObjectRequest.currentRevision; + if([VNTrackObjectRequest.supportedRevisions containsIndex:revision])_objectRequest.revision=revision; + _objectRequest.trackingLevel=VNRequestTrackingLevelAccurate; + _objectBox=seed;_objectTime=time;_objectValid=YES;return seed; + } + NSError *error=nil; + BOOL ok=[_sequence performRequests:@[_objectRequest] onCIImage:PGPreparedVisionImage(image,960) orientation:kCGImagePropertyOrientationUp error:&error]; + VNDetectedObjectObservation *result=ok?_objectRequest.results.firstObject:nil; + CGRect box=result.boundingBox; + if(result&&result.confidence>=.22&&PGValidRect(box)) { + _objectRequest.inputObservation=result;_objectRequest.trackingLevel=VNRequestTrackingLevelAccurate; + _objectBox=box;_objectTime=time;_objectValid=YES;return box; + } + _objectRequest=nil;_sequence=[VNSequenceRequestHandler new];_objectValid=NO; + return hasBox?_objectBox:(hasSeed?seed:CGRectNull); +} +- (NSDictionary *)resultForGeometry:(NSArray *)raw settings:(PGBeautySettings)s time:(CMTime)time extent:(CGRect)extent { + return [self resultForGeometry:raw settings:s time:time extent:extent image:nil]; +} +- (NSDictionary *)resultForGeometry:(NSArray *)input settings:(PGBeautySettings)s time:(CMTime)time extent:(CGRect)extent image:(CIImage *)image { NSMutableArray *valid=[NSMutableArray new]; - for(id item in input) {NSDictionary *g=PGSanitizedGeometry(item);if(g && valid.count<16)[valid addObject:g];} - NSArray *raw=[valid copy]; - NSUInteger mode=s.fastMultiFace?2:(s.singleFace?1:0); + for(id item in input) {NSDictionary *g=PGSanitizedGeometry(item);if(g&&valid.count<16)[valid addObject:g];} + NSArray *raw=[valid copy];NSUInteger mode=s.fastMultiFace?2:(s.singleFace?1:0); NSString *key=PGTimeKey(time); NSString *context=[NSString stringWithFormat:@"%lu/%u/%lld/%.17g/%.17g/%.17g/%.17g/%.9g",(unsigned long)mode,s.targetIndex, (long long)time.epoch,extent.origin.x,extent.origin.y,extent.size.width,extent.size.height,s.faceJumpGuardRange]; [_mutex lock]; - NSDictionary *head=nil; - for(NSDictionary *record in _entries) if([record[@"context"] isEqual:context] && - (!head || CMTimeCompare(PGRecordTime(record),PGRecordTime(head))>=0)) head=record; - NSString *scope=@"automatic"; + BOOL contextChanged=![_liveReference[@"context"] isEqual:context]; + NSDictionary *reference=contextChanged?nil:_liveReference; + if(contextChanged) { + // Fast-multi bypasses pin selection. Returning to a prior mode can use + // its accepted shape, but must never continue another mode's VN sequence. + for(NSDictionary *record in _entries)if([record[@"context"] isEqual:context]&&CMTimeCompare(PGRecordTime(record),time)<=0&& + (!reference||CMTimeCompare(PGRecordTime(record),PGRecordTime(reference))>0))reference=record; + } double seedX=PGClamp(s.selectionX,0,1),seedY=PGClamp(s.selectionY,0,1); - if(mode==1) { - // A real point change (> .01) starts a new identity scope. Older render - // snapshots may use their own past scope, but never replace a newer head. - NSDictionary *seedRecord=head; - if(seedRecord && CMTimeCompare(time,PGRecordTime(seedRecord))<0) { - seedRecord=nil; - for(NSDictionary *record in _entries) if([record[@"context"] isEqual:context] && PGSeedDistance(record,s)<=.01 && - CMTimeCompare(PGRecordTime(record),time)<=0 && (!seedRecord || CMTimeCompare(PGRecordTime(record),PGRecordTime(seedRecord))>=0))seedRecord=record; - } - if(seedRecord && PGSeedDistance(seedRecord,s)<=.01) { - scope=seedRecord[@"scope"];seedX=[seedRecord[@"seedX"] doubleValue];seedY=[seedRecord[@"seedY"] doubleValue]; - } else scope=[NSString stringWithFormat:@"%@/%.9g/%.9g",key?:@"invalid",seedX,seedY]; - } - NSDictionary *reference=nil; - if(key) for(NSDictionary *record in _entries) { - if(![record[@"context"] isEqual:context] || ![record[@"scope"] isEqual:scope])continue; - if([record[@"key"] isEqual:key] && [record[@"raw"] isEqual:raw]) {[_mutex unlock];return record;} - CMTime stored=PGRecordTime(record); - // Same-time changed detections recompute from an earlier frame, never - // feed an already smoothed result into another pass at that same time. - if(CMTimeCompare(stored,time)>=0)continue; - double dt=CMTimeGetSeconds(CMTimeSubtract(time,stored)); - if(dt<=.35 && (!reference || CMTimeCompare(stored,PGRecordTime(reference))>0))reference=record; - } - NSArray *prior=reference[@"output"]; - NSDictionary *previous=prior.count?prior.firstObject:nil; + NSString *scope=mode==1?[NSString stringWithFormat:@"%.9g/%.9g",seedX,seedY]:@"automatic"; + if(mode==1&&reference&&PGSeedDistance(reference,s)<=.01){scope=reference[@"scope"];seedX=[reference[@"seedX"] doubleValue];seedY=[reference[@"seedY"] doubleValue];} + if(reference&&![reference[@"scope"] isEqual:scope])reference=nil; + // Exact frame reuse is independent of a second Vision result or render count. + // A new uncached rewind clears live geometry and the stateful sequence handler. + NSDictionary *cached=nil; + if(key)for(NSDictionary *record in _entries)if([record[@"context"] isEqual:context]&&[record[@"scope"] isEqual:scope]&&[record[@"key"] isEqual:key]){cached=record;break;} + BOOL backward=reference&&CMTimeCompare(time,PGRecordTime(reference))<0; + if(contextChanged||!reference||backward)[self resetObjectTracker]; + if(cached){_liveReference=cached;[_mutex unlock];return cached;} + if(backward||!key)reference=nil; + NSDictionary *previous=reference[@"accepted"]; CGRect previousBox=PGArrayRect(previous[@"box"]); + CGRect tracked=mode==2?CGRectNull:[self trackedBoxForImage:image time:time seedBox:CGRectNull]; + CGRect selectionBox=PGValidRect(tracked)?tracked:previousBox; NSInteger index=-1;double best=-DBL_MAX; - if(mode!=2) for(NSUInteger i=0;iCGRectGetMaxX(guard)||center.yCGRectGetMaxY(guard))continue; - CGPoint p=PGCenter(previousBox);score=-((center.x-p.x)*(center.x-p.x)+(center.y-p.y)*(center.y-p.y)); - } else if(mode==1) score=-((center.x-seedX)*(center.x-seedX)+(center.y-seedY)*(center.y-seedY)); + if(!CGRectContainsPoint(guard,center))continue; + } + if(PGValidRect(selectionBox)) { + CGPoint p=PGCenter(selectionBox);double distance=hypot(center.x-p.x,center.y-p.y); + score=8*PGBoxIoU(box,selectionBox)+3.2*(1-MIN(1,distance/.32))-.35*distance; + if(CGRectContainsPoint(box,p))score+=1.2; + }else if(mode==1)score=-hypot(center.x-seedX,center.y-seedY); else {CGRect clipped=CGRectIntersection(box,CGRectMake(0,0,1,1));CGPoint p=PGCenter(clipped); score=1.8*fmin(1,clipped.size.width*clipped.size.height)+1.1*(1-fmin(1,hypot(p.x-.5,p.y-.5)/.72));} - if(index<0 || score>best) {index=(NSInteger)i;best=score;} + if(index<0||score>best){index=(NSInteger)i;best=score;} + } + NSDictionary *current=index>=0?raw[(NSUInteger)index]:nil; + if(mode!=2&&!PGValidRect(tracked)&¤t)tracked=[self trackedBoxForImage:image time:time seedBox:PGArrayRect(current[@"box"])]; + NSString *reason=current?PGGeometryQualityReason(current):@"missingFace"; + if(!reason.length&&previous)reason=PGGeometryTransitionReason(current,previous); + BOOL held=NO;NSArray *output=@[];NSDictionary *accepted=previous; + if(mode==2){output=raw;accepted=nil;reason=@"fastMulti";} + else if(!reason.length){output=@[current];accepted=current;} + else if(previous) { + CGRect box=PGValidRect(tracked)?tracked:(current?PGArrayRect(current[@"box"]):previousBox); + NSDictionary *mapped=PGRemappedGeometry(previous,box); + output=@[PGValidHeldGeometry(mapped)?mapped:previous];held=YES; } - NSArray *output;BOOL held=NO; - if(mode==2) output=raw; - else if(index>=0) { - NSDictionary *current=raw[(NSUInteger)index]; - double dt=reference?CMTimeGetSeconds(CMTimeSubtract(time,PGRecordTime(reference))):0; - output=@[previous?PGStableGeometry(current,previous,dt,![reference[@"held"] boolValue]):current]; - } else {output=prior?:@[];held=output.count>0;} NSMutableDictionary *record=[@{@"context":context,@"scope":scope,@"key":key?:@"invalid",@"value":@(time.value),@"scale":@(time.timescale),@"epoch":@(time.epoch), - @"seedX":@(seedX),@"seedY":@(seedY),@"raw":raw,@"output":output,@"index":@(index),@"held":@(held),@"referenceKey":reference[@"key"]?:@""} mutableCopy]; + @"seedX":@(seedX),@"seedY":@(seedY),@"raw":raw,@"output":output,@"index":@(index),@"held":@(held),@"reason":reason, + @"trackedBox":PGValidRect(tracked)?PGRectArray(tracked):@[],@"referenceKey":reference[@"key"]?:@""} mutableCopy]; + if(accepted)record[@"accepted"]=accepted; + // Keep the accepted time distinct from the output/held time for diagnostics. + record[@"acceptedKey"]=(!reason.length?key:reference[@"acceptedKey"])?:@""; if(key) { NSData *serialized=[NSPropertyListSerialization dataWithPropertyList:record format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil]; - NSUInteger bytes=serialized.length+512; - record[@"bytes"]=@(bytes); - // Replace changed raw geometry at the same timestamp rather than letting - // callbacks grow history or make smoothing depend on redraw count. - for(NSInteger i=(NSInteger)_entries.count-1;i>=0;i--) { - NSDictionary *old=_entries[(NSUInteger)i]; - if([old[@"context"] isEqual:context] && [old[@"scope"] isEqual:scope] && [old[@"key"] isEqual:key]) { - _estimatedBytes-=[old[@"bytes"] unsignedIntegerValue];[_entries removeObjectAtIndex:(NSUInteger)i]; - } - } - if(bytes<=16*1024*1024) {[_entries addObject:[record copy]];_estimatedBytes+=bytes;} - while(_entries.count>1200 || _estimatedBytes>16*1024*1024) { - _estimatedBytes-=[_entries.firstObject[@"bytes"] unsignedIntegerValue];[_entries removeObjectAtIndex:0]; - } - } + NSUInteger bytes=serialized.length+512;record[@"bytes"]=@(bytes); + if(bytes<=16*1024*1024){[_entries addObject:[record copy]];_estimatedBytes+=bytes;} + while(_entries.count>1200||_estimatedBytes>16*1024*1024){_estimatedBytes-=[_entries.firstObject[@"bytes"] unsignedIntegerValue];[_entries removeObjectAtIndex:0];} + _liveReference=[record copy]; + }else{_liveReference=nil;[self resetObjectTracker];} [_mutex unlock];return [record copy]; } @end @@ -338,6 +445,8 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ CIColorKernel *_subtract; CIColorKernel *_box; PGRealtimeFaceTracker *_realtime; + NSMutableArray *_observationCache; + CIContext *_visionContext; } @end @@ -348,6 +457,8 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ if (self) { _lock = [[NSLock alloc] init]; _realtime = [PGRealtimeFaceTracker new]; + _observationCache = [NSMutableArray new]; + _visionContext = [CIContext contextWithOptions:@{kCIContextCacheIntermediates:@NO}]; _targets = [NSMutableArray arrayWithObjects:[NSMutableDictionary dictionary], [NSMutableDictionary dictionary], [NSMutableDictionary dictionary], nil]; // Thin/V/chin/jaw/short reconstruct recovered local coordinate math. // Four other controls retain this project's analytic approximation. @@ -423,26 +534,53 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ } - (NSArray *)observationsInImage:(CIImage *)image settings:(PGBeautySettings)settings error:(NSError **)error { - CGRect extent = image.extent; - CGFloat longest = MAX(extent.size.width, extent.size.height); - CGFloat scale = MIN(1.0, (settings.fastMultiFace ? 720.0 : 1280.0) / longest); - CIImage *prepared = [image imageByApplyingTransform:CGAffineTransformMakeTranslation(-extent.origin.x, -extent.origin.y)]; - prepared = [prepared imageByApplyingTransform:CGAffineTransformMakeScale(scale, scale)]; - VNDetectFaceLandmarksRequest *request = [[VNDetectFaceLandmarksRequest alloc] init]; - request.revision = VNDetectFaceLandmarksRequestRevision3; - request.constellation = VNRequestFaceLandmarksConstellation76Points; - // An image request handler is intentionally local to one invocation. A shared - // sequence handler would make parallel / reverse render order observable. - VNImageRequestHandler *handler = [[VNImageRequestHandler alloc] initWithCIImage:prepared options:@{}]; - if (![handler performRequests:@[request] error:error]) return nil; - NSArray *faces = request.results ?: @[]; - return [faces sortedArrayUsingComparator:^NSComparisonResult(VNFaceObservation *a, VNFaceObservation *b) { - CGRect x = a.boundingBox, y = b.boundingBox; - if (CGRectGetMidX(x) != CGRectGetMidX(y)) return CGRectGetMidX(x) < CGRectGetMidX(y) ? NSOrderedAscending : NSOrderedDescending; - if (CGRectGetMidY(x) != CGRectGetMidY(y)) return CGRectGetMidY(x) < CGRectGetMidY(y) ? NSOrderedAscending : NSOrderedDescending; - return x.size.width > y.size.width ? NSOrderedAscending : NSOrderedDescending; + // 2.4.0 defaults to a 960-pixel long edge (its configurable downsample + // limit), not the former 1280-pixel path. The explicit fast mode keeps its + // lower-cost detector. Both handlers receive an upright, zero-origin image. + CIImage *prepared=PGPreparedVisionImage(image,settings.fastMultiFace?720:960); + VNDetectFaceLandmarksRequest *(^newRequest)(void)=^{ + VNDetectFaceLandmarksRequest *r=[VNDetectFaceLandmarksRequest new]; + r.revision=VNDetectFaceLandmarksRequestRevision3;r.constellation=VNRequestFaceLandmarksConstellation76Points;return r; + }; + VNDetectFaceLandmarksRequest *request=newRequest();NSError *firstError=nil; + VNImageRequestHandler *handler=[[VNImageRequestHandler alloc] initWithCIImage:prepared orientation:kCGImagePropertyOrientationUp options:@{}]; + BOOL ok=[handler performRequests:@[request] error:&firstError]; + NSArray *faces=ok?(request.results?:@[]):@[]; + NSUInteger count=0;for(VNFaceObservation *face in faces)count=MAX(count,face.landmarks.allPoints.pointCount); + if(!ok||!faces.count||count<76) { + // The reference retries a materialized RGBA image, not the same lazy + // CIImage request. Retain a successful first result if retry finds none. + CGColorSpaceRef space=CGColorSpaceCreateWithName(kCGColorSpaceSRGB); + CGImageRef cg=[_visionContext createCGImage:prepared fromRect:prepared.extent format:kCIFormatRGBA8 colorSpace:space]; + CGColorSpaceRelease(space); + if(cg) { + VNDetectFaceLandmarksRequest *retry=newRequest();NSError *retryError=nil; + VNImageRequestHandler *fallback=[[VNImageRequestHandler alloc] initWithCGImage:cg orientation:kCGImagePropertyOrientationUp options:@{}]; + BOOL retried=[fallback performRequests:@[retry] error:&retryError];CGImageRelease(cg); + if(retried){ok=YES;firstError=nil;if(retry.results.count)faces=retry.results;} + else if(!ok)firstError=retryError?:firstError; + } + } + if(!ok){if(error)*error=firstError;return nil;} + return [faces sortedArrayUsingComparator:^NSComparisonResult(VNFaceObservation *a,VNFaceObservation *b) { + CGRect x=a.boundingBox,y=b.boundingBox; + if(CGRectGetMidX(x)!=CGRectGetMidX(y))return CGRectGetMidX(x)y.size.width?NSOrderedAscending:NSOrderedDescending; }]; } +- (NSArray *)cachedObservationsInImage:(CIImage *)image settings:(PGBeautySettings)settings time:(CMTime)time error:(NSError **)error { + NSString *key=PGTimeKey(time);CGRect e=image.extent; + NSString *context=[NSString stringWithFormat:@"%u/%.17g/%.17g/%.17g/%.17g",settings.fastMultiFace,e.origin.x,e.origin.y,e.size.width,e.size.height]; + @synchronized(_observationCache) { + if(key)for(NSDictionary *entry in _observationCache)if([entry[@"key"] isEqual:key]&&[entry[@"context"] isEqual:context])return entry[@"faces"]; + NSArray *faces=[self observationsInImage:image settings:settings error:error]; + // A transient API error is retriable; a successful empty result is a + // real frame result and is cached, so redraws cannot toggle the effect. + if(key&&faces){[_observationCache addObject:@{@"key":key,@"context":context,@"faces":faces}];while(_observationCache.count>120)[_observationCache removeObjectAtIndex:0];} + return faces; + } +} - (NSDictionary *)recordForTime:(CMTime)time target:(NSUInteger)target nearest:(BOOL)nearest { NSString *key = PGTimeKey(time); @@ -508,7 +646,7 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ if (error) *error = [NSError errorWithDomain:PGFaceErrorDomain code:1 userInfo:@{NSLocalizedDescriptionKey:@"Face analysis requires a finite image and valid frame time."}]; return NO; } - NSArray *observations = [self observationsInImage:image settings:settings error:error]; + NSArray *observations = [self cachedObservationsInImage:image settings:settings time:time error:error]; if (!observations) return NO; NSUInteger target = MIN((NSUInteger)settings.targetIndex, 2); NSDictionary *prior = [self recordForTime:time target:target nearest:YES]; @@ -628,7 +766,7 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ for (NSDictionary *face in geometry) [restored addObject:[VNFaceObservation faceObservationWithRequestRevision:VNDetectFaceLandmarksRequestRevision3 boundingBox:PGArrayRect(face[@"box"]) roll:nil yaw:nil pitch:nil]]; observations = restored; } else { - NSArray *detected = [self observationsInImage:image settings:settings error:error]; + NSArray *detected = [self cachedObservationsInImage:image settings:settings time:time error:error]; if (!detected) return nil; if(settings.trackingEnabled) { // Preserve the explicit offline-analysis contract. Its stored @@ -645,7 +783,7 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ for(VNFaceObservation *observation in detected) if(PGValidRect(observation.boundingBox) && raw.count<16) { [raw addObject:PGGeometry(observation)];[validObservations addObject:observation]; } - NSDictionary *live=[_realtime resultForGeometry:raw settings:settings time:time extent:extent]; + NSDictionary *live=[_realtime resultForGeometry:raw settings:settings time:time extent:extent image:image]; geometry=live[@"output"]; if(settings.singleFace && !settings.fastMultiFace) { NSInteger index=[live[@"index"] integerValue]; @@ -665,6 +803,16 @@ static NSDictionary *PGStableGeometry(NSDictionary *current, NSDictionary *previ // skin/teeth/eyes support, which still covers the detected group. appearance=raw;observations=validObservations; } + if([live[@"held"] boolValue] && geometry.count) { + // Keep beauty masks on the same held primary shape as the warp, + // while retaining support for independently detected secondary faces. + NSMutableArray *supported=[appearance mutableCopy]; + NSInteger index=[live[@"index"] integerValue]; + if(!settings.singleFace && index>=0 && (NSUInteger)index:0x.", + "Only Ghidra-defined string Data is observed; packed or undefined string bytes may be absent. Completeness applies to that inventory, and an empty search does not establish that text is absent from the artifact. If an address is known, use read_bytes and xrefs to inspect bytes and references.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + { + "address": "0x1000c2b40", + "value": "_$s10Foundation10URLRequestV8httpBodyAA4DataVSgvs" + }, + { + "address": "0x1000cb7dd", + "value": "_$s10Foundation10URLRequestV8httpBodyAA4DataVSgvs" + } + ], + "operation": "search_strings", + "parameters": { + "case_sensitive": false, + "mode": "regex", + "pattern": "瘦|身体|身材|长腿|肤色范围|非肤色区|body|slim|waist" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + { + "address": "0x1000c2b40", + "value": "_$s10Foundation10URLRequestV8httpBodyAA4DataVSgvs" + }, + { + "address": "0x1000cb7dd", + "value": "_$s10Foundation10URLRequestV8httpBodyAA4DataVSgvs" + } + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_0197ec45c278a1cf0f9ed142f39ea2e4bee639d708a5e47b48168a16c05c7339", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\ndouble FUN_10003d49c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n ulong param_5)\n\n{\n undefined *puVar1;\n ID IVar2;\n double extraout_d0;\n double dVar3;\n double dVar4;\n double dVar5;\n \n puVar1 = PTR__CGRectNull_1000a8148;\n if (param_5 == 0) {\n dVar5 = *(double *)PTR__CGRectNull_1000a8148;\n param_2 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 8);\n param_3 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x10);\n param_4 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18);\n IVar2 = 0;\n }\n else {\n IVar2 = objc_stub::boundingBox(param_5);\n dVar5 = extraout_d0;\n _CGRectStandardize();\n _CGRectIntersection();\n }\n _CGRectIsNull(dVar5,param_2,param_3,param_4);\n if (((((IVar2 & 1) != 0) || (_CGRectIsEmpty(dVar5,param_2,param_3,param_4), (IVar2 & 1) != 0)) ||\n (dVar3 = dVar5, _CGRectGetWidth(dVar5,param_2,param_3,param_4), dVar3 <= 2.220446049250313e-16\n )) || (dVar3 = dVar5, _CGRectGetHeight(dVar5,param_2,param_3,param_4),\n dVar3 <= 2.220446049250313e-16)) {\n dVar5 = *(double *)puVar1;\n }\n else {\n FUN_100029d4c();\n dVar3 = dVar5;\n FUN_100042f9c(dVar5,param_2,param_3,param_4);\n _CGRectIsNull();\n if ((((param_5 & 1) == 0) && (_CGRectIsEmpty(dVar3,param_2,param_3,param_4), (param_5 & 1) == 0)\n ) && ((dVar4 = dVar3, _CGRectGetWidth(dVar3,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar4 &&\n (dVar4 = dVar3, _CGRectGetHeight(dVar3,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar4)))) {\n dVar5 = dVar3;\n }\n }\n return dVar5;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003d49c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\ndouble FUN_10003d49c(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n ulong param_5)\n\n{\n undefined *puVar1;\n ID IVar2;\n double extraout_d0;\n double dVar3;\n double dVar4;\n double dVar5;\n \n puVar1 = PTR__CGRectNull_1000a8148;\n if (param_5 == 0) {\n dVar5 = *(double *)PTR__CGRectNull_1000a8148;\n param_2 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 8);\n param_3 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x10);\n param_4 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18);\n IVar2 = 0;\n }\n else {\n IVar2 = objc_stub::boundingBox(param_5);\n dVar5 = extraout_d0;\n _CGRectStandardize();\n _CGRectIntersection();\n }\n _CGRectIsNull(dVar5,param_2,param_3,param_4);\n if (((((IVar2 & 1) != 0) || (_CGRectIsEmpty(dVar5,param_2,param_3,param_4), (IVar2 & 1) != 0)) ||\n (dVar3 = dVar5, _CGRectGetWidth(dVar5,param_2,param_3,param_4), dVar3 <= 2.220446049250313e-16\n )) || (dVar3 = dVar5, _CGRectGetHeight(dVar5,param_2,param_3,param_4),\n dVar3 <= 2.220446049250313e-16)) {\n dVar5 = *(double *)puVar1;\n }\n else {\n FUN_100029d4c();\n dVar3 = dVar5;\n FUN_100042f9c(dVar5,param_2,param_3,param_4);\n _CGRectIsNull();\n if ((((param_5 & 1) == 0) && (_CGRectIsEmpty(dVar3,param_2,param_3,param_4), (param_5 & 1) == 0)\n ) && ((dVar4 = dVar3, _CGRectGetWidth(dVar3,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar4 &&\n (dVar4 = dVar3, _CGRectGetHeight(dVar3,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar4)))) {\n dVar5 = dVar3;\n }\n }\n return dVar5;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_0ba2509e191826cd11e58e6681326918d0a43464277717fdf57e75d4ff48537a", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nID FUN_1000502b0(double param_1,double param_2,double param_3,double param_4,ID param_5,\n double *param_6)\n\n{\n int iVar1;\n ID IVar2;\n cfstringStruct *self;\n double dVar4;\n double dVar5;\n double dVar6;\n double dVar7;\n double dVar8;\n undefined8 local_d0;\n undefined8 uStack_c8;\n undefined8 uStack_c0;\n undefined8 uStack_b8;\n undefined8 local_b0;\n undefined8 uStack_a8;\n undefined8 local_a0;\n undefined8 uStack_98;\n undefined8 uStack_90;\n undefined8 uStack_88;\n undefined8 local_80;\n undefined8 uStack_78;\n ID IVar3;\n \n if (param_6 != (double *)0x0) {\n *param_6 = param_1;\n param_6[1] = param_2;\n param_6[2] = param_3;\n param_6[3] = param_4;\n }\n IVar2 = param_5;\n _CGRectIsEmpty(param_1,param_2,param_3,param_4);\n if ((IVar2 & 1) == 0) {\n if (DAT_1000bdf40 != -1) {\n FUN_100079cc8();\n }\n if ((DAT_1000bd1f0 & 1) != 0) {\n dVar6 = param_1;\n _CGRectGetWidth(param_1,param_2,param_3,param_4);\n dVar7 = param_1;\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n dVar8 = dVar7;\n if (dVar7 <= dVar6) {\n dVar8 = dVar6;\n }\n if (DAT_1000bdf48 != -1) {\n FUN_100079cdc();\n }\n if ((dVar8 <= DAT_1000bd1f8) || (DAT_1000bd1f8 <= 0.0)) {\n self = &cf_vision_downsample_skipped_small;\n }\n else {\n dVar8 = DAT_1000bd1f8 / dVar8;\n dVar4 = ABS(dVar8);\n if (((0x7ff0000000000000 < (ulong)dVar4 ||\n (dVar4 == INFINITY ||\n (dVar4 == 0.0 || (long)dVar8 < 0 && (long)ABS(dVar8) - 1U < 0xfffffffffffff))) ||\n (long)dVar8 < 0 && (long)ABS(dVar8) + 0xfff0000000000000U >> 0x35 < 0x3ff) ||\n (1.0 <= dVar8)) {\n self = &cf_vision_downsample_skipped_invalid_scale;\n }\n else {\n dVar4 = param_1;\n _CGRectGetMinX(param_1,param_2,param_3,param_4);\n dVar5 = param_1;\n _CGRectGetMinY(param_1,param_2,param_3,param_4);\n _CGAffineTransformMakeTranslation(&local_a0,-dVar4,-dVar5);\n uStack_c8 = uStack_98;\n local_d0 = local_a0;\n uStack_b8 = uStack_88;\n uStack_c0 = uStack_90;\n uStack_a8 = uStack_78;\n local_b0 = local_80;\n IVar2 = objc_stub::imageByApplyingTransform_(param_5,&local_d0);\n _CGAffineTransformMakeScale(&local_d0,dVar8,dVar8);\n IVar2 = objc_stub::imageByApplyingTransform_(IVar2,&local_d0);\n dVar6 = (double)(long)(dVar6 * dVar8);\n if (dVar6 <= 1.0) {\n dVar6 = 1.0;\n }\n dVar7 = (double)(long)(dVar7 * dVar8);\n if (dVar7 <= 1.0) {\n dVar7 = 1.0;\n }\n IVar2 = objc_stub::imageByCroppingToRect_(IVar2,0,0,dVar6,dVar7);\n if (IVar2 != 0) {\n IVar3 = objc_stub::extent(IVar2);\n iVar1 = (int)IVar3;\n _CGRectIsEmpty();\n if (iVar1 == 0) {\n if (param_6 != (double *)0x0) {\n *param_6 = 0.0;\n param_6[1] = 0.0;\n param_6[2] = dVar6;\n param_6[3] = dVar7;\n }\n objc_stub::length(0x1000aeca0);\n _NSStringFromRect(param_1,param_2,param_3,param_4);\n _NSStringFromRect(0,0,dVar6,dVar7);\n return IVar2;\n }\n }\n self = &cf_vision_downsample_skipped_empty_result;\n }\n }\n goto LAB_1000504c4;\n }\n }\n self = &cf_vision_downsample_skipped_disabled_or_empty;\nLAB_1000504c4:\n objc_stub::length((ID)self);\n return param_5;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x1000502b0" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nID FUN_1000502b0(double param_1,double param_2,double param_3,double param_4,ID param_5,\n double *param_6)\n\n{\n int iVar1;\n ID IVar2;\n cfstringStruct *self;\n double dVar4;\n double dVar5;\n double dVar6;\n double dVar7;\n double dVar8;\n undefined8 local_d0;\n undefined8 uStack_c8;\n undefined8 uStack_c0;\n undefined8 uStack_b8;\n undefined8 local_b0;\n undefined8 uStack_a8;\n undefined8 local_a0;\n undefined8 uStack_98;\n undefined8 uStack_90;\n undefined8 uStack_88;\n undefined8 local_80;\n undefined8 uStack_78;\n ID IVar3;\n \n if (param_6 != (double *)0x0) {\n *param_6 = param_1;\n param_6[1] = param_2;\n param_6[2] = param_3;\n param_6[3] = param_4;\n }\n IVar2 = param_5;\n _CGRectIsEmpty(param_1,param_2,param_3,param_4);\n if ((IVar2 & 1) == 0) {\n if (DAT_1000bdf40 != -1) {\n FUN_100079cc8();\n }\n if ((DAT_1000bd1f0 & 1) != 0) {\n dVar6 = param_1;\n _CGRectGetWidth(param_1,param_2,param_3,param_4);\n dVar7 = param_1;\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n dVar8 = dVar7;\n if (dVar7 <= dVar6) {\n dVar8 = dVar6;\n }\n if (DAT_1000bdf48 != -1) {\n FUN_100079cdc();\n }\n if ((dVar8 <= DAT_1000bd1f8) || (DAT_1000bd1f8 <= 0.0)) {\n self = &cf_vision_downsample_skipped_small;\n }\n else {\n dVar8 = DAT_1000bd1f8 / dVar8;\n dVar4 = ABS(dVar8);\n if (((0x7ff0000000000000 < (ulong)dVar4 ||\n (dVar4 == INFINITY ||\n (dVar4 == 0.0 || (long)dVar8 < 0 && (long)ABS(dVar8) - 1U < 0xfffffffffffff))) ||\n (long)dVar8 < 0 && (long)ABS(dVar8) + 0xfff0000000000000U >> 0x35 < 0x3ff) ||\n (1.0 <= dVar8)) {\n self = &cf_vision_downsample_skipped_invalid_scale;\n }\n else {\n dVar4 = param_1;\n _CGRectGetMinX(param_1,param_2,param_3,param_4);\n dVar5 = param_1;\n _CGRectGetMinY(param_1,param_2,param_3,param_4);\n _CGAffineTransformMakeTranslation(&local_a0,-dVar4,-dVar5);\n uStack_c8 = uStack_98;\n local_d0 = local_a0;\n uStack_b8 = uStack_88;\n uStack_c0 = uStack_90;\n uStack_a8 = uStack_78;\n local_b0 = local_80;\n IVar2 = objc_stub::imageByApplyingTransform_(param_5,&local_d0);\n _CGAffineTransformMakeScale(&local_d0,dVar8,dVar8);\n IVar2 = objc_stub::imageByApplyingTransform_(IVar2,&local_d0);\n dVar6 = (double)(long)(dVar6 * dVar8);\n if (dVar6 <= 1.0) {\n dVar6 = 1.0;\n }\n dVar7 = (double)(long)(dVar7 * dVar8);\n if (dVar7 <= 1.0) {\n dVar7 = 1.0;\n }\n IVar2 = objc_stub::imageByCroppingToRect_(IVar2,0,0,dVar6,dVar7);\n if (IVar2 != 0) {\n IVar3 = objc_stub::extent(IVar2);\n iVar1 = (int)IVar3;\n _CGRectIsEmpty();\n if (iVar1 == 0) {\n if (param_6 != (double *)0x0) {\n *param_6 = 0.0;\n param_6[1] = 0.0;\n param_6[2] = dVar6;\n param_6[3] = dVar7;\n }\n objc_stub::length(0x1000aeca0);\n _NSStringFromRect(param_1,param_2,param_3,param_4);\n _NSStringFromRect(0,0,dVar6,dVar7);\n return IVar2;\n }\n }\n self = &cf_vision_downsample_skipped_empty_result;\n }\n }\n goto LAB_1000504c4;\n }\n }\n self = &cf_vision_downsample_skipped_disabled_or_empty;\nLAB_1000504c4:\n objc_stub::length((ID)self);\n return param_5;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_12d242f25c4d714d4191d3f2c4ad88735910a6f89d06e6ca26531bc5772e8abf", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x100043338: sub sp, sp, #0xc0\n0x10004333c: stp d15, d14, [sp, #0x40]\n0x100043340: stp d13, d12, [sp, #0x50]\n0x100043344: stp d11, d10, [sp, #0x60]\n0x100043348: stp d9, d8, [sp, #0x70]\n0x10004334c: stp x24, x23, [sp, #0x80]\n0x100043350: stp x22, x21, [sp, #0x90]\n0x100043354: stp x20, x19, [sp, #0xa0]\n0x100043358: stp x29, x30, [sp, #0xb0]\n0x10004335c: add x29, sp, #0xb0\n0x100043360: mov x19, x4\n0x100043364: mov x20, x3\n0x100043368: mov x21, x2\n0x10004336c: fmov d8, d7\n0x100043370: fmov d10, d6\n0x100043374: fmov d11, d5\n0x100043378: fmov d12, d4\n0x10004337c: mov x23, x1\n0x100043380: fmov d13, d3\n0x100043384: fmov d14, d2\n0x100043388: fmov d15, d1\n0x10004338c: fmov d9, d0\n0x100043390: adrp x8, 0x1000a8000\n0x100043394: ldr x8, [x8, #0x140]\n0x100043398: ldr q0, [x8]\n0x10004339c: stp q0, q0, [sp, #0x20]\n0x1000433a0: stp xzr, xzr, [sp, #0x10]\n0x1000433a4: add x1, sp, #0x30\n0x1000433a8: add x2, sp, #0x18\n0x1000433ac: bl 0x100054d78\n0x1000433b0: mov x22, x0\n0x1000433b4: add x1, sp, #0x20\n0x1000433b8: add x2, sp, #0x10\n0x1000433bc: mov x0, x23\n0x1000433c0: bl 0x100054d78\n0x1000433c4: fmov d7, d8\n0x1000433c8: cbz w22, 0x1000433f8\n0x1000433cc: ldr d0, [sp, #0x18]\n0x1000433d0: mov x8, #0x3cb0000000000000\n0x1000433d4: fmov d1, x8\n0x1000433d8: fcmp d0, d1\n0x1000433dc: csel w8, wzr, w0, le\n0x1000433e0: ldr d1, [sp, #0x10]\n0x1000433e4: cmp w8, #0x1\n0x1000433e8: mov x8, #0x3cb0000000000000\n0x1000433ec: fmov d2, x8\n0x1000433f0: fccmp d1, d2, #0x4, eq\n0x1000433f4: b.gt 0x100043508\n0x1000433f8: mov x8, #0x7ff8000000000000\n0x1000433fc: fmov d2, x8\n0x100043400: cbz x21, 0x10004341c\n0x100043404: ldr d0, [sp, #0x38]\n0x100043408: cmp w22, #0x0\n0x10004340c: mov x8, #0x7ff8000000000000\n0x100043410: fmov d1, x8\n0x100043414: fcsel d0, d0, d1, ne\n0x100043418: str d0, [x21]\n0x10004341c: cbz x20, 0x100043438\n0x100043420: ldr d0, [sp, #0x28]\n0x100043424: cmp w0, #0x0\n0x100043428: mov x8, #0x7ff8000000000000\n0x10004342c: fmov d1, x8\n0x100043430: fcsel d0, d0, d1, ne\n0x100043434: str d0, [x20]\n0x100043438: cbz x19, 0x100043440\n0x10004343c: str d2, [x19]\n0x100043440: and w8, w22, w0\n0x100043444: cmp w8, #0x1\n0x100043448: b.ne 0x1000434dc\n0x10004344c: stp d2, d13, [sp]\n0x100043450: fmov d0, d9\n0x100043454: fmov d1, d15\n0x100043458: fmov d8, d9\n0x10004345c: fmov d2, d14\n0x100043460: fmov d3, d13\n0x100043464: fmov d13, d12\n0x100043468: fmov d4, d12\n0x10004346c: fmov d5, d11\n0x100043470: fmov d6, d10\n0x100043474: fmov d9, d7\n0x100043478: bl 0x1000549d4\n0x10004347c: cbz w0, 0x1000434e0\n0x100043480: fmov d0, d8\n0x100043484: fmov d1, d15\n0x100043488: fmov d2, d14\n0x10004348c: ldr d3, [sp, #0x8]\n0x100043490: bl 0x10007a934\n0x100043494: fmov d12, d0\n0x100043498: fmov d0, d13\n0x10004349c: fmov d1, d11\n0x1000434a0: fmov d2, d10\n0x1000434a4: fmov d3, d9\n0x1000434a8: bl 0x10007a934\n0x1000434ac: fcmp d12, d0\n0x1000434b0: fcsel d0, d12, d0, mi\n0x1000434b4: adrp x8, 0x100086000\n0x1000434b8: ldr d1, [x8, #0x358]\n0x1000434bc: fmul d0, d0, d1\n0x1000434c0: adrp x8, 0x100086000\n0x1000434c4: ldr d1, [x8, #0x418]\n0x1000434c8: fmaxnm d0, d0, d1\n0x1000434cc: ldp d2, d1, [sp, #0x10]\n0x1000434d0: fcmp d1, d0\n0x1000434d4: fccmp d2, d0, #0x8, pl\n0x1000434d8: b.pl 0x100043540\n0x1000434dc: mov w0, #0x0\n0x1000434e0: ldp x29, x30, [sp, #0xb0]\n0x1000434e4: ldp x20, x19, [sp, #0xa0]\n0x1000434e8: ldp x22, x21, [sp, #0x90]\n0x1000434ec: ldp x24, x23, [sp, #0x80]\n0x1000434f0: ldp d9, d8, [sp, #0x70]\n0x1000434f4: ldp d11, d10, [sp, #0x60]\n0x1000434f8: ldp d13, d12, [sp, #0x50]\n0x1000434fc: ldp d15, d14, [sp, #0x40]\n0x100043500: add sp, sp, #0xc0\n0x100043504: ret\n0x100043508: ldp d2, d3, [sp, #0x30]\n0x10004350c: ldp d4, d5, [sp, #0x20]\n0x100043510: fmul d3, d3, d5\n0x100043514: fmadd d2, d2, d4, d3\n0x100043518: fmul d0, d0, d1\n0x10004351c: fdiv d0, d2, d0\n0x100043520: fmov d1, 0x3ff0000000000000\n0x100043524: fcmp d0, d1\n0x100043528: fcsel d1, d1, d0, gt\n0x10004352c: fmov d2, -0x4010000000000000\n0x100043530: fcmp d0, d2\n0x100043534: fcsel d2, d2, d1, mi\n0x100043538: cbnz x21, 0x100043404\n0x10004353c: b 0x10004341c\n0x100043540: ldr d1, [sp, #0x38]\n0x100043544: ldr d2, [sp, #0x28]\n0x100043548: fmul d3, d1, d2\n0x10004354c: fcmp d3, #0.0\n0x100043550: b.pl 0x10004356c\n0x100043554: fabs d4, d1\n0x100043558: adrp x8, 0x100086000\n0x10004355c: ldr d3, [x8, #0x228]\n0x100043560: fmul d3, d0, d3\n0x100043564: fcmp d4, d3\n0x100043568: b.ge 0x10004358c\n0x10004356c: mov w8, #0x0\n0x100043570: adrp x9, 0x100086000\n0x100043574: ldr d0, [x9, #0x3e0]\n0x100043578: ldr d1, [sp]\n0x10004357c: fcmp d1, d0\n0x100043580: cset w9, ls\n0x100043584: and w0, w8, w9\n0x100043588: b 0x1000434e0\n0x10004358c: fabs d4, d2\n0x100043590: fcmp d4, d3\n0x100043594: cset w8, ge\n0x100043598: adrp x9, 0x100086000\n0x10004359c: ldr d5, [x9, #0x3e0]\n0x1000435a0: ldr d6, [sp]\n0x1000435a4: fcmp d6, d5\n0x1000435a8: cset w9, ls\n0x1000435ac: b.ls 0x100043584\n0x1000435b0: fcmp d4, d3\n0x1000435b4: b.lt 0x100043584\n0x1000435b8: fabd d1, d1, d2\n0x1000435bc: fcmp d1, d0\n0x1000435c0: cset w9, ge\n0x1000435c4: b 0x100043584", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x100043338" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "0x100043338: sub sp, sp, #0xc0\n0x10004333c: stp d15, d14, [sp, #0x40]\n0x100043340: stp d13, d12, [sp, #0x50]\n0x100043344: stp d11, d10, [sp, #0x60]\n0x100043348: stp d9, d8, [sp, #0x70]\n0x10004334c: stp x24, x23, [sp, #0x80]\n0x100043350: stp x22, x21, [sp, #0x90]\n0x100043354: stp x20, x19, [sp, #0xa0]\n0x100043358: stp x29, x30, [sp, #0xb0]\n0x10004335c: add x29, sp, #0xb0\n0x100043360: mov x19, x4\n0x100043364: mov x20, x3\n0x100043368: mov x21, x2\n0x10004336c: fmov d8, d7\n0x100043370: fmov d10, d6\n0x100043374: fmov d11, d5\n0x100043378: fmov d12, d4\n0x10004337c: mov x23, x1\n0x100043380: fmov d13, d3\n0x100043384: fmov d14, d2\n0x100043388: fmov d15, d1\n0x10004338c: fmov d9, d0\n0x100043390: adrp x8, 0x1000a8000\n0x100043394: ldr x8, [x8, #0x140]\n0x100043398: ldr q0, [x8]\n0x10004339c: stp q0, q0, [sp, #0x20]\n0x1000433a0: stp xzr, xzr, [sp, #0x10]\n0x1000433a4: add x1, sp, #0x30\n0x1000433a8: add x2, sp, #0x18\n0x1000433ac: bl 0x100054d78\n0x1000433b0: mov x22, x0\n0x1000433b4: add x1, sp, #0x20\n0x1000433b8: add x2, sp, #0x10\n0x1000433bc: mov x0, x23\n0x1000433c0: bl 0x100054d78\n0x1000433c4: fmov d7, d8\n0x1000433c8: cbz w22, 0x1000433f8\n0x1000433cc: ldr d0, [sp, #0x18]\n0x1000433d0: mov x8, #0x3cb0000000000000\n0x1000433d4: fmov d1, x8\n0x1000433d8: fcmp d0, d1\n0x1000433dc: csel w8, wzr, w0, le\n0x1000433e0: ldr d1, [sp, #0x10]\n0x1000433e4: cmp w8, #0x1\n0x1000433e8: mov x8, #0x3cb0000000000000\n0x1000433ec: fmov d2, x8\n0x1000433f0: fccmp d1, d2, #0x4, eq\n0x1000433f4: b.gt 0x100043508\n0x1000433f8: mov x8, #0x7ff8000000000000\n0x1000433fc: fmov d2, x8\n0x100043400: cbz x21, 0x10004341c\n0x100043404: ldr d0, [sp, #0x38]\n0x100043408: cmp w22, #0x0\n0x10004340c: mov x8, #0x7ff8000000000000\n0x100043410: fmov d1, x8\n0x100043414: fcsel d0, d0, d1, ne\n0x100043418: str d0, [x21]\n0x10004341c: cbz x20, 0x100043438\n0x100043420: ldr d0, [sp, #0x28]\n0x100043424: cmp w0, #0x0\n0x100043428: mov x8, #0x7ff8000000000000\n0x10004342c: fmov d1, x8\n0x100043430: fcsel d0, d0, d1, ne\n0x100043434: str d0, [x20]\n0x100043438: cbz x19, 0x100043440\n0x10004343c: str d2, [x19]\n0x100043440: and w8, w22, w0\n0x100043444: cmp w8, #0x1\n0x100043448: b.ne 0x1000434dc\n0x10004344c: stp d2, d13, [sp]\n0x100043450: fmov d0, d9\n0x100043454: fmov d1, d15\n0x100043458: fmov d8, d9\n0x10004345c: fmov d2, d14\n0x100043460: fmov d3, d13\n0x100043464: fmov d13, d12\n0x100043468: fmov d4, d12\n0x10004346c: fmov d5, d11\n0x100043470: fmov d6, d10\n0x100043474: fmov d9, d7\n0x100043478: bl 0x1000549d4\n0x10004347c: cbz w0, 0x1000434e0\n0x100043480: fmov d0, d8\n0x100043484: fmov d1, d15\n0x100043488: fmov d2, d14\n0x10004348c: ldr d3, [sp, #0x8]\n0x100043490: bl 0x10007a934\n0x100043494: fmov d12, d0\n0x100043498: fmov d0, d13\n0x10004349c: fmov d1, d11\n0x1000434a0: fmov d2, d10\n0x1000434a4: fmov d3, d9\n0x1000434a8: bl 0x10007a934\n0x1000434ac: fcmp d12, d0\n0x1000434b0: fcsel d0, d12, d0, mi\n0x1000434b4: adrp x8, 0x100086000\n0x1000434b8: ldr d1, [x8, #0x358]\n0x1000434bc: fmul d0, d0, d1\n0x1000434c0: adrp x8, 0x100086000\n0x1000434c4: ldr d1, [x8, #0x418]\n0x1000434c8: fmaxnm d0, d0, d1\n0x1000434cc: ldp d2, d1, [sp, #0x10]\n0x1000434d0: fcmp d1, d0\n0x1000434d4: fccmp d2, d0, #0x8, pl\n0x1000434d8: b.pl 0x100043540\n0x1000434dc: mov w0, #0x0\n0x1000434e0: ldp x29, x30, [sp, #0xb0]\n0x1000434e4: ldp x20, x19, [sp, #0xa0]\n0x1000434e8: ldp x22, x21, [sp, #0x90]\n0x1000434ec: ldp x24, x23, [sp, #0x80]\n0x1000434f0: ldp d9, d8, [sp, #0x70]\n0x1000434f4: ldp d11, d10, [sp, #0x60]\n0x1000434f8: ldp d13, d12, [sp, #0x50]\n0x1000434fc: ldp d15, d14, [sp, #0x40]\n0x100043500: add sp, sp, #0xc0\n0x100043504: ret\n0x100043508: ldp d2, d3, [sp, #0x30]\n0x10004350c: ldp d4, d5, [sp, #0x20]\n0x100043510: fmul d3, d3, d5\n0x100043514: fmadd d2, d2, d4, d3\n0x100043518: fmul d0, d0, d1\n0x10004351c: fdiv d0, d2, d0\n0x100043520: fmov d1, 0x3ff0000000000000\n0x100043524: fcmp d0, d1\n0x100043528: fcsel d1, d1, d0, gt\n0x10004352c: fmov d2, -0x4010000000000000\n0x100043530: fcmp d0, d2\n0x100043534: fcsel d2, d2, d1, mi\n0x100043538: cbnz x21, 0x100043404\n0x10004353c: b 0x10004341c\n0x100043540: ldr d1, [sp, #0x38]\n0x100043544: ldr d2, [sp, #0x28]\n0x100043548: fmul d3, d1, d2\n0x10004354c: fcmp d3, #0.0\n0x100043550: b.pl 0x10004356c\n0x100043554: fabs d4, d1\n0x100043558: adrp x8, 0x100086000\n0x10004355c: ldr d3, [x8, #0x228]\n0x100043560: fmul d3, d0, d3\n0x100043564: fcmp d4, d3\n0x100043568: b.ge 0x10004358c\n0x10004356c: mov w8, #0x0\n0x100043570: adrp x9, 0x100086000\n0x100043574: ldr d0, [x9, #0x3e0]\n0x100043578: ldr d1, [sp]\n0x10004357c: fcmp d1, d0\n0x100043580: cset w9, ls\n0x100043584: and w0, w8, w9\n0x100043588: b 0x1000434e0\n0x10004358c: fabs d4, d2\n0x100043590: fcmp d4, d3\n0x100043594: cset w8, ge\n0x100043598: adrp x9, 0x100086000\n0x10004359c: ldr d5, [x9, #0x3e0]\n0x1000435a0: ldr d6, [sp]\n0x1000435a4: fcmp d6, d5\n0x1000435a8: cset w9, ls\n0x1000435ac: b.ls 0x100043584\n0x1000435b0: fcmp d4, d3\n0x1000435b4: b.lt 0x100043584\n0x1000435b8: fabd d1, d1, d2\n0x1000435bc: fcmp d1, d0\n0x1000435c0: cset w9, ge\n0x1000435c4: b 0x100043584" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_157df22ee7802216f3581c9842a9629c69ee66097db068b825695bdfd99385d1", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + { + "address": "EXTERNAL:0x5", + "value": "/usr/lib/swift/libswiftFoundation.dylib::Foundation::URLRequest::$set_httpBody" + }, + { + "address": "EXTERNAL:0xda", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGImageGetHeight" + }, + { + "address": "EXTERNAL:0xe2", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGRectGetHeight" + }, + { + "address": "EXTERNAL:0xff", + "value": "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface::_IOSurfaceGetHeight" + }, + { + "address": "EXTERNAL:0x336", + "value": "/System/Library/Frameworks/Metal.framework/Versions/A/Metal::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + }, + { + "address": "0x10000b6f8", + "value": "MSSSkinControlPanelView::mss_preferredPanelHeight" + }, + { + "address": "0x10000dfec", + "value": "MSSSkinControlPanelView::legacyControlPanelValueAtTime:" + }, + { + "address": "0x10000ed08", + "value": "MSSSkinControlPanelView::legacyFallbackControlPanelValueAtPreferredTime:" + }, + { + "address": "0x10000fec4", + "value": "MSSSkinControlPanelView::syncLegacyParametersFromControlPanelValue:hostTime:settingAPI:" + }, + { + "address": "0x10001eba8", + "value": "MSSuperSkinSmoothingPlugIn::mss_runtimeBlockTextureForDevice:width:height:" + }, + { + "address": "0x1000337e8", + "value": "MSSuperSkinSmoothingPlugIn::legacyControlPanelValueAtTime:" + }, + { + "address": "0x100039e14", + "value": "MSSuperSkinSmoothingPlugIn::playbackStabilizedMaskImageFromInputImage:params:renderTime:trackingGrayBytes:trackingGrayWidth:trackingGrayHeight:trackingAlphaBytes:trackingAlphaWidth:trackingAlphaHeight:previewMaskImage:rawPreviewSmallMaskImage:maskImage:smoothCarrierImageOut:" + }, + { + "address": "0x100043ac0", + "value": "MSSuperSkinSmoothingFaceSelectOSC::drawOSCWithWidth:height:activePart:destinationImage:atTime:" + }, + { + "address": "0x100079ed8", + "value": "/usr/lib/swift/libswiftFoundation.dylib::Foundation::URLRequest::$set_httpBody" + }, + { + "address": "0x10007a8d4", + "value": "_CGImageGetHeight" + }, + { + "address": "0x10007a934", + "value": "_CGRectGetHeight" + }, + { + "address": "0x10007aa90", + "value": "_IOSurfaceGetHeight" + }, + { + "address": "0x10007ee60", + "value": "objc_stub::height" + }, + { + "address": "0x10007f9e0", + "value": "objc_stub::legacyControlPanelValueAtTime:" + }, + { + "address": "0x10007fa00", + "value": "objc_stub::legacyFallbackControlPanelValueAtPreferredTime:" + }, + { + "address": "0x10007fe80", + "value": "objc_stub::mss_preferredPanelHeight" + }, + { + "address": "0x10007ff80", + "value": "objc_stub::mss_runtimeBlockTextureForDevice:width:height:" + }, + { + "address": "0x1000806a0", + "value": "objc_stub::playbackStabilizedMaskImageFromInputImage:params:renderTime:trackingGrayBytes:trackingGrayWidth:trackingGrayHeight:trackingAlphaBytes:trackingAlphaWidth:trackingAlphaHeight:previewMaskImage:rawPreviewSmallMaskImage:maskImage:smoothCarrierImageOut:" + }, + { + "address": "0x100082400", + "value": "objc_stub::setMaximumLineHeight:" + }, + { + "address": "0x100082480", + "value": "objc_stub::setMinimumLineHeight:" + }, + { + "address": "0x100083300", + "value": "objc_stub::syncLegacyParametersFromControlPanelValue:hostTime:settingAPI:" + }, + { + "address": "0x1000833c0", + "value": "objc_stub::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + }, + { + "address": "0x1000e0c01", + "value": "MTLTextureDescriptor::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + } + ], + "operation": "search_procedures", + "parameters": { + "case_sensitive": false, + "mode": "regex", + "pattern": "body|slim|waist|leg|height|stretch" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + { + "address": "EXTERNAL:0x5", + "value": "/usr/lib/swift/libswiftFoundation.dylib::Foundation::URLRequest::$set_httpBody" + }, + { + "address": "EXTERNAL:0xda", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGImageGetHeight" + }, + { + "address": "EXTERNAL:0xe2", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGRectGetHeight" + }, + { + "address": "EXTERNAL:0xff", + "value": "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface::_IOSurfaceGetHeight" + }, + { + "address": "EXTERNAL:0x336", + "value": "/System/Library/Frameworks/Metal.framework/Versions/A/Metal::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + }, + { + "address": "0x10000b6f8", + "value": "MSSSkinControlPanelView::mss_preferredPanelHeight" + }, + { + "address": "0x10000dfec", + "value": "MSSSkinControlPanelView::legacyControlPanelValueAtTime:" + }, + { + "address": "0x10000ed08", + "value": "MSSSkinControlPanelView::legacyFallbackControlPanelValueAtPreferredTime:" + }, + { + "address": "0x10000fec4", + "value": "MSSSkinControlPanelView::syncLegacyParametersFromControlPanelValue:hostTime:settingAPI:" + }, + { + "address": "0x10001eba8", + "value": "MSSuperSkinSmoothingPlugIn::mss_runtimeBlockTextureForDevice:width:height:" + }, + { + "address": "0x1000337e8", + "value": "MSSuperSkinSmoothingPlugIn::legacyControlPanelValueAtTime:" + }, + { + "address": "0x100039e14", + "value": "MSSuperSkinSmoothingPlugIn::playbackStabilizedMaskImageFromInputImage:params:renderTime:trackingGrayBytes:trackingGrayWidth:trackingGrayHeight:trackingAlphaBytes:trackingAlphaWidth:trackingAlphaHeight:previewMaskImage:rawPreviewSmallMaskImage:maskImage:smoothCarrierImageOut:" + }, + { + "address": "0x100043ac0", + "value": "MSSuperSkinSmoothingFaceSelectOSC::drawOSCWithWidth:height:activePart:destinationImage:atTime:" + }, + { + "address": "0x100079ed8", + "value": "/usr/lib/swift/libswiftFoundation.dylib::Foundation::URLRequest::$set_httpBody" + }, + { + "address": "0x10007a8d4", + "value": "_CGImageGetHeight" + }, + { + "address": "0x10007a934", + "value": "_CGRectGetHeight" + }, + { + "address": "0x10007aa90", + "value": "_IOSurfaceGetHeight" + }, + { + "address": "0x10007ee60", + "value": "objc_stub::height" + }, + { + "address": "0x10007f9e0", + "value": "objc_stub::legacyControlPanelValueAtTime:" + }, + { + "address": "0x10007fa00", + "value": "objc_stub::legacyFallbackControlPanelValueAtPreferredTime:" + }, + { + "address": "0x10007fe80", + "value": "objc_stub::mss_preferredPanelHeight" + }, + { + "address": "0x10007ff80", + "value": "objc_stub::mss_runtimeBlockTextureForDevice:width:height:" + }, + { + "address": "0x1000806a0", + "value": "objc_stub::playbackStabilizedMaskImageFromInputImage:params:renderTime:trackingGrayBytes:trackingGrayWidth:trackingGrayHeight:trackingAlphaBytes:trackingAlphaWidth:trackingAlphaHeight:previewMaskImage:rawPreviewSmallMaskImage:maskImage:smoothCarrierImageOut:" + }, + { + "address": "0x100082400", + "value": "objc_stub::setMaximumLineHeight:" + }, + { + "address": "0x100082480", + "value": "objc_stub::setMinimumLineHeight:" + }, + { + "address": "0x100083300", + "value": "objc_stub::syncLegacyParametersFromControlPanelValue:hostTime:settingAPI:" + }, + { + "address": "0x1000833c0", + "value": "objc_stub::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + }, + { + "address": "0x1000e0c01", + "value": "MTLTextureDescriptor::texture2DDescriptorWithPixelFormat:width:height:mipmapped:" + } + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_15e194ed5225284360721e2ddf870e61b3c1d8e16259f40ad4e48f7a8b47fb99", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000a8b38", + "bytes_hex": "004e0e00010000000000005000000000d808050001000000a8840a0001000000", + "complete": true, + "requested_bytes": 32, + "returned_bytes": 32 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000a8b38", + "length": 32 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000a8b38", + "bytes_hex": "004e0e00010000000000005000000000d808050001000000a8840a0001000000", + "complete": true, + "requested_bytes": 32, + "returned_bytes": 32 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_201143d0ae628503be360c7056158a603cda550aaea7fecce199e2a6e3ec0a27", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000861b0", + "bytes_hex": "8fc2f5285c8fe23f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000861b0", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000861b0", + "bytes_hex": "8fc2f5285c8fe23f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_2217951d210de0192b07ec21d0908329af36226deb87cfc0226a016d9e08020e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10001ce7c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* Function Stack Size: 0x54 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::\n mss_timeLocalFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_detectionTimeOut_outputTimeOut_usedHistoryOut_\n (ID param_1,SEL param_2,AnonymousStructure0 param_3,bool param_4,ID *param_5,\n CGRect *param_6,AnonymousStructure0 *param_7,AnonymousStructure0 *param_8,\n bool *param_9)\n\n{\n uint uVar1;\n undefined4 uVar2;\n undefined *puVar3;\n undefined *puVar4;\n double dVar5;\n double dVar6;\n double dVar7;\n bool bVar8;\n ulong uVar9;\n CGRect *pCVar10;\n double *pdVar11;\n ID *pIVar12;\n double *pdVar13;\n long lVar14;\n uint *puVar15;\n double dVar16;\n ID IVar17;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n ID IVar24;\n double dVar25;\n double dVar26;\n undefined8 uVar27;\n undefined8 uVar28;\n undefined8 uVar29;\n undefined1 local_150 [16];\n double local_140;\n CGRect local_130;\n ID local_108;\n undefined1 local_100 [16];\n double local_f0;\n CGRect local_e0;\n ID local_b8;\n undefined1 local_b0 [12];\n uint uStack_a4;\n double local_a0;\n long local_90;\n \n pIVar12 = (ID *)param_3.field3_0x10;\n pdVar11 = (double *)param_3.field0_0x0;\n pdVar13 = (double *)(ulong)param_4;\n local_90 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = 0;\n }\n puVar3 = PTR__CGRectNull_1000a8148;\n if (pdVar13 != (double *)0x0) {\n dVar16 = *(double *)PTR__CGRectNull_1000a8148;\n dVar19 = *(double *)(PTR__CGRectNull_1000a8148 + 0x18);\n dVar18 = *(double *)(PTR__CGRectNull_1000a8148 + 0x10);\n pdVar13[1] = *(double *)(PTR__CGRectNull_1000a8148 + 8);\n *pdVar13 = dVar16;\n pdVar13[3] = dVar19;\n pdVar13[2] = dVar18;\n }\n puVar4 = PTR__kCMTimeInvalid_1000a8208;\n if (param_5 != (ID *)0x0) {\n IVar17 = *(ID *)PTR__kCMTimeInvalid_1000a8208;\n param_5[1] = *(ID *)(PTR__kCMTimeInvalid_1000a8208 + 8);\n *param_5 = IVar17;\n param_5[2] = *(ID *)(puVar4 + 0x10);\n }\n if (param_6 != (CGRect *)0x0) {\n dVar16 = *(double *)puVar4;\n (param_6->field0_0x0).field1_0x8 = *(double *)(puVar4 + 8);\n (param_6->field0_0x0).field0_0x0 = dVar16;\n (param_6->field1_0x10).field0_0x0 = *(double *)(puVar4 + 0x10);\n }\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 0;\n }\n uVar1 = *(uint *)((long)pdVar11 + 0xc) & 0x1d;\n local_b8 = 0;\n dVar22 = *(double *)(puVar3 + 8);\n dVar18 = *(double *)puVar3;\n dVar26 = *(double *)(puVar3 + 0x18);\n dVar25 = *(double *)(puVar3 + 0x10);\n dVar23 = *(double *)(puVar4 + 8);\n dVar19 = *(double *)puVar4;\n dVar16 = *(double *)(puVar4 + 0x10);\n local_100._0_8_ = dVar19;\n local_100._8_8_ = dVar23;\n local_f0 = dVar16;\n local_e0.field0_0x0.field0_0x0 = dVar18;\n local_e0.field0_0x0.field1_0x8 = dVar22;\n local_e0.field1_0x10.field0_0x0 = dVar25;\n local_e0.field1_0x10.field1_0x8 = dVar26;\n if (uVar1 != 1) goto LAB_10001cbbc;\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n local_130.field0_0x0.field0_0x0 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n bVar8 = mss_rewindFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_timeOut_\n (param_1,(AnonymousStructure0 *)&local_130,param_3.field1_0x8,&local_b8,\n &local_e0,(AnonymousStructure0 *)local_100);\n if ((((bVar8 != 0) &&\n (uVar9 = objc_stub::count(local_b8), dVar7 = local_e0.field1_0x10.field1_0x8,\n dVar6 = local_e0.field1_0x10.field0_0x0, dVar5 = local_e0.field0_0x0.field1_0x8,\n dVar21 = local_e0.field0_0x0.field0_0x0, 0x4c < uVar9)) &&\n (_CGRectIsNull(local_e0.field0_0x0.field0_0x0,local_e0.field0_0x0.field1_0x8,\n local_e0.field1_0x10.field0_0x0,local_e0.field1_0x10.field1_0x8),\n (uVar9 & 1) == 0)) &&\n (((_CGRectIsEmpty(dVar21,dVar5,dVar6,dVar7), (uVar9 & 1) == 0 &&\n (dVar20 = dVar21, _CGRectGetWidth(dVar21,dVar5,dVar6,dVar7), 2.220446049250313e-16 < dVar20))\n && (_CGRectGetHeight(dVar21,dVar5,dVar6,dVar7), 2.220446049250313e-16 < dVar21)))) {\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = local_b8;\n }\n if (pdVar13 != (double *)0x0) {\n pdVar13[1] = local_e0.field0_0x0.field1_0x8;\n *pdVar13 = local_e0.field0_0x0.field0_0x0;\n pdVar13[3] = local_e0.field1_0x10.field1_0x8;\n pdVar13[2] = local_e0.field1_0x10.field0_0x0;\n }\n if (param_5 != (ID *)0x0) {\n param_5[1] = local_100._8_8_;\n *param_5 = local_100._0_8_;\n param_5[2] = (ID)local_f0;\n }\n if (param_6 != (CGRect *)0x0) {\n (param_6->field0_0x0).field1_0x8 = (double)local_100._8_8_;\n (param_6->field0_0x0).field0_0x0 = (double)local_100._0_8_;\n (param_6->field1_0x10).field0_0x0 = local_f0;\n }\n bVar8 = 1;\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 1;\n }\n goto LAB_10001ce3c;\n }\n if ((param_3._8_8_ & 1) == 0) {\n local_108 = 0;\n local_150._8_8_ = pdVar11[1];\n local_150._0_8_ = *pdVar11;\n local_140 = pdVar11[2];\n local_130.field0_0x0.field0_0x0 = dVar18;\n local_130.field0_0x0.field1_0x8 = dVar22;\n local_130.field1_0x10.field0_0x0 = dVar25;\n local_130.field1_0x10.field1_0x8 = dVar26;\n local_b0._0_8_ = dVar19;\n unique0x100007b1 = dVar23;\n local_a0 = dVar16;\n bVar8 = mss_rewindFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_timeOut_\n (param_1,(AnonymousStructure0 *)local_150,1,&local_108,&local_130,\n (AnonymousStructure0 *)local_b0);\n if (((bVar8 == 0) ||\n (uVar9 = objc_stub::count(local_108), dVar22 = local_130.field1_0x10.field1_0x8,\n dVar19 = local_130.field1_0x10.field0_0x0, dVar18 = local_130.field0_0x0.field1_0x8,\n dVar16 = local_130.field0_0x0.field0_0x0, uVar9 < 0x4d)) ||\n ((_CGRectIsNull(local_130.field0_0x0.field0_0x0,local_130.field0_0x0.field1_0x8,\n local_130.field1_0x10.field0_0x0,local_130.field1_0x10.field1_0x8),\n (uVar9 & 1) != 0 ||\n (((_CGRectIsEmpty(dVar16,dVar18,dVar19,dVar22), (uVar9 & 1) != 0 ||\n (dVar23 = dVar16, _CGRectGetWidth(dVar16,dVar18,dVar19,dVar22),\n dVar23 <= 2.220446049250313e-16)) ||\n (_CGRectGetHeight(dVar16,dVar18,dVar19,dVar22), dVar16 <= 2.220446049250313e-16))))))\n goto LAB_10001cbbc;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = local_108;\n }\n if (pdVar13 != (double *)0x0) {\n pdVar13[1] = local_130.field0_0x0.field1_0x8;\n *pdVar13 = local_130.field0_0x0.field0_0x0;\n pdVar13[3] = local_130.field1_0x10.field1_0x8;\n pdVar13[2] = local_130.field1_0x10.field0_0x0;\n }\n if (param_5 != (ID *)0x0) {\n param_5[1] = (ID)stack0xffffffffffffff58;\n *param_5 = local_b0._0_8_;\n param_5[2] = (ID)local_a0;\n }\n if (param_6 != (CGRect *)0x0) {\n (param_6->field0_0x0).field1_0x8 = stack0xffffffffffffff58;\n (param_6->field0_0x0).field0_0x0 = (double)local_b0._0_8_;\n (param_6->field1_0x10).field0_0x0 = local_a0;\n }\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 1;\n }\n local_150._8_8_ = pdVar11[1];\n local_150._0_8_ = *pdVar11;\n local_140 = pdVar11[2];\n _CMTimeGetSeconds(local_150);\n if ((uStack_a4 & 0x1d) == 1) {\n local_150._8_8_ = stack0xffffffffffffff58;\n local_150._0_8_ = local_b0._0_8_;\n local_140 = local_a0;\n _CMTimeGetSeconds(local_150);\n }\n FUN_10001b584(local_130.field0_0x0.field0_0x0,local_130.field0_0x0.field1_0x8,\n local_130.field1_0x10.field0_0x0,local_130.field1_0x10.field1_0x8);\nLAB_10001cdd0:\n bVar8 = 1;\n }\n else {\nLAB_10001cbbc:\n if ((*(char *)(param_1 + 0x308) == '\\x01') &&\n (uVar9 = objc_stub::count(*(ID *)(param_1 + 0x2b0)), 0x4c < uVar9)) {\n dVar16 = *(double *)(param_1 + 0x2b8);\n uVar27 = *(undefined8 *)(param_1 + 0x2c0);\n uVar28 = *(undefined8 *)(param_1 + 0x2c8);\n uVar29 = *(undefined8 *)(param_1 + 0x2d0);\n _CGRectIsNull(dVar16,uVar27,uVar28,uVar29);\n if (((uVar9 & 1) == 0) &&\n (((_CGRectIsEmpty(dVar16,uVar27,uVar28,uVar29), (uVar9 & 1) == 0 &&\n (dVar18 = dVar16, _CGRectGetWidth(dVar16,uVar27,uVar28,uVar29),\n 2.220446049250313e-16 < dVar18)) &&\n (_CGRectGetHeight(dVar16,uVar27,uVar28,uVar29), 2.220446049250313e-16 < dVar16)))) {\n if ((uVar1 == 1) && ((param_3._8_8_ & 1) == 0)) {\n if ((*(byte *)(param_1 + 0x2fc) & 1) == 0) {\n local_b0._0_8_ = *(double *)(param_1 + 0x2d8);\n uVar2 = *(undefined4 *)(param_1 + 0x2e0);\n puVar15 = (uint *)(param_1 + 0x2e4);\n lVar14 = 0x2e8;\n }\n else {\n puVar15 = (uint *)(param_1 + 0x2fc);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n uVar2 = *(undefined4 *)(param_1 + 0x2f8);\n lVar14 = 0x300;\n }\n stack0xffffffffffffff58 = (double)CONCAT44(uStack_a4,uVar2);\n if ((*puVar15 & 0x1d) == 1) {\n local_130.field1_0x10.field0_0x0 = *(double *)(param_1 + lVar14);\n local_130.field0_0x0.field0_0x0 = (double)local_b0._0_8_;\n local_130.field0_0x0.field1_0x8 = (double)CONCAT44(*puVar15,uVar2);\n _CMTimeGetSeconds(&local_130);\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n dVar18 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n local_130.field0_0x0.field0_0x0 = dVar18;\n _CMTimeGetSeconds(&local_130);\n if ((((ulong)ABS(dVar16) < 0x7ff0000000000000) &&\n ((ulong)ABS(dVar18) < 0x7ff0000000000000)) && (ABS(dVar16 - dVar18) <= 0.0005))\n goto LAB_10001ce38;\n }\nLAB_10001cd40:\n if ((*(uint *)(param_1 + 0x2fc) & 0x1d) == 1) {\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n local_130.field0_0x0.field0_0x0 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n register0x00005008 = *(double *)(param_1 + 0x2f8);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n local_a0 = *(double *)(param_1 + 0x300);\n pCVar10 = &local_130;\n _CMTimeCompare(pCVar10,local_b0);\n if ((int)pCVar10 < 0) {\n register0x00005008 = *(double *)(param_1 + 0x2f8);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n local_a0 = *(double *)(param_1 + 0x300);\n local_150._8_8_ = pdVar11[1];\n dVar16 = *pdVar11;\n local_140 = pdVar11[2];\n local_150._0_8_ = dVar16;\n _CMTimeSubtract(&local_130,local_b0,local_150);\n _CMTimeGetSeconds(&local_130);\n if ((0.05 < dVar16) && ((ulong)ABS(dVar16) < 0x7ff0000000000000)) goto LAB_10001ce38;\n }\n }\n }\n else if (uVar1 == 1) goto LAB_10001cd40;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = *(ID *)(param_1 + 0x2b0);\n }\n if (pdVar13 != (double *)0x0) {\n dVar16 = *(double *)(param_1 + 0x2b8);\n dVar19 = *(double *)(param_1 + 0x2d0);\n dVar18 = *(double *)(param_1 + 0x2c8);\n pdVar13[1] = *(double *)(param_1 + 0x2c0);\n *pdVar13 = dVar16;\n pdVar13[3] = dVar19;\n pdVar13[2] = dVar18;\n }\n if (param_5 != (ID *)0x0) {\n IVar24 = *(ID *)(param_1 + 0x2e0);\n IVar17 = *(ID *)(param_1 + 0x2d8);\n param_5[2] = *(ID *)(param_1 + 0x2e8);\n param_5[1] = IVar24;\n *param_5 = IVar17;\n }\n if (param_6 != (CGRect *)0x0) {\n dVar18 = *(double *)(param_1 + 0x2f8);\n dVar16 = *(double *)(param_1 + 0x2f0);\n (param_6->field1_0x10).field0_0x0 = *(double *)(param_1 + 0x300);\n (param_6->field0_0x0).field1_0x8 = dVar18;\n (param_6->field0_0x0).field0_0x0 = dVar16;\n }\n goto LAB_10001cdd0;\n }\n }\nLAB_10001ce38:\n bVar8 = 0;\n }\nLAB_10001ce3c:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_90) {\n return bVar8;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10001c84c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10001ce7c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* Function Stack Size: 0x54 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::\n mss_timeLocalFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_detectionTimeOut_outputTimeOut_usedHistoryOut_\n (ID param_1,SEL param_2,AnonymousStructure0 param_3,bool param_4,ID *param_5,\n CGRect *param_6,AnonymousStructure0 *param_7,AnonymousStructure0 *param_8,\n bool *param_9)\n\n{\n uint uVar1;\n undefined4 uVar2;\n undefined *puVar3;\n undefined *puVar4;\n double dVar5;\n double dVar6;\n double dVar7;\n bool bVar8;\n ulong uVar9;\n CGRect *pCVar10;\n double *pdVar11;\n ID *pIVar12;\n double *pdVar13;\n long lVar14;\n uint *puVar15;\n double dVar16;\n ID IVar17;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n ID IVar24;\n double dVar25;\n double dVar26;\n undefined8 uVar27;\n undefined8 uVar28;\n undefined8 uVar29;\n undefined1 local_150 [16];\n double local_140;\n CGRect local_130;\n ID local_108;\n undefined1 local_100 [16];\n double local_f0;\n CGRect local_e0;\n ID local_b8;\n undefined1 local_b0 [12];\n uint uStack_a4;\n double local_a0;\n long local_90;\n \n pIVar12 = (ID *)param_3.field3_0x10;\n pdVar11 = (double *)param_3.field0_0x0;\n pdVar13 = (double *)(ulong)param_4;\n local_90 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = 0;\n }\n puVar3 = PTR__CGRectNull_1000a8148;\n if (pdVar13 != (double *)0x0) {\n dVar16 = *(double *)PTR__CGRectNull_1000a8148;\n dVar19 = *(double *)(PTR__CGRectNull_1000a8148 + 0x18);\n dVar18 = *(double *)(PTR__CGRectNull_1000a8148 + 0x10);\n pdVar13[1] = *(double *)(PTR__CGRectNull_1000a8148 + 8);\n *pdVar13 = dVar16;\n pdVar13[3] = dVar19;\n pdVar13[2] = dVar18;\n }\n puVar4 = PTR__kCMTimeInvalid_1000a8208;\n if (param_5 != (ID *)0x0) {\n IVar17 = *(ID *)PTR__kCMTimeInvalid_1000a8208;\n param_5[1] = *(ID *)(PTR__kCMTimeInvalid_1000a8208 + 8);\n *param_5 = IVar17;\n param_5[2] = *(ID *)(puVar4 + 0x10);\n }\n if (param_6 != (CGRect *)0x0) {\n dVar16 = *(double *)puVar4;\n (param_6->field0_0x0).field1_0x8 = *(double *)(puVar4 + 8);\n (param_6->field0_0x0).field0_0x0 = dVar16;\n (param_6->field1_0x10).field0_0x0 = *(double *)(puVar4 + 0x10);\n }\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 0;\n }\n uVar1 = *(uint *)((long)pdVar11 + 0xc) & 0x1d;\n local_b8 = 0;\n dVar22 = *(double *)(puVar3 + 8);\n dVar18 = *(double *)puVar3;\n dVar26 = *(double *)(puVar3 + 0x18);\n dVar25 = *(double *)(puVar3 + 0x10);\n dVar23 = *(double *)(puVar4 + 8);\n dVar19 = *(double *)puVar4;\n dVar16 = *(double *)(puVar4 + 0x10);\n local_100._0_8_ = dVar19;\n local_100._8_8_ = dVar23;\n local_f0 = dVar16;\n local_e0.field0_0x0.field0_0x0 = dVar18;\n local_e0.field0_0x0.field1_0x8 = dVar22;\n local_e0.field1_0x10.field0_0x0 = dVar25;\n local_e0.field1_0x10.field1_0x8 = dVar26;\n if (uVar1 != 1) goto LAB_10001cbbc;\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n local_130.field0_0x0.field0_0x0 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n bVar8 = mss_rewindFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_timeOut_\n (param_1,(AnonymousStructure0 *)&local_130,param_3.field1_0x8,&local_b8,\n &local_e0,(AnonymousStructure0 *)local_100);\n if ((((bVar8 != 0) &&\n (uVar9 = objc_stub::count(local_b8), dVar7 = local_e0.field1_0x10.field1_0x8,\n dVar6 = local_e0.field1_0x10.field0_0x0, dVar5 = local_e0.field0_0x0.field1_0x8,\n dVar21 = local_e0.field0_0x0.field0_0x0, 0x4c < uVar9)) &&\n (_CGRectIsNull(local_e0.field0_0x0.field0_0x0,local_e0.field0_0x0.field1_0x8,\n local_e0.field1_0x10.field0_0x0,local_e0.field1_0x10.field1_0x8),\n (uVar9 & 1) == 0)) &&\n (((_CGRectIsEmpty(dVar21,dVar5,dVar6,dVar7), (uVar9 & 1) == 0 &&\n (dVar20 = dVar21, _CGRectGetWidth(dVar21,dVar5,dVar6,dVar7), 2.220446049250313e-16 < dVar20))\n && (_CGRectGetHeight(dVar21,dVar5,dVar6,dVar7), 2.220446049250313e-16 < dVar21)))) {\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = local_b8;\n }\n if (pdVar13 != (double *)0x0) {\n pdVar13[1] = local_e0.field0_0x0.field1_0x8;\n *pdVar13 = local_e0.field0_0x0.field0_0x0;\n pdVar13[3] = local_e0.field1_0x10.field1_0x8;\n pdVar13[2] = local_e0.field1_0x10.field0_0x0;\n }\n if (param_5 != (ID *)0x0) {\n param_5[1] = local_100._8_8_;\n *param_5 = local_100._0_8_;\n param_5[2] = (ID)local_f0;\n }\n if (param_6 != (CGRect *)0x0) {\n (param_6->field0_0x0).field1_0x8 = (double)local_100._8_8_;\n (param_6->field0_0x0).field0_0x0 = (double)local_100._0_8_;\n (param_6->field1_0x10).field0_0x0 = local_f0;\n }\n bVar8 = 1;\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 1;\n }\n goto LAB_10001ce3c;\n }\n if ((param_3._8_8_ & 1) == 0) {\n local_108 = 0;\n local_150._8_8_ = pdVar11[1];\n local_150._0_8_ = *pdVar11;\n local_140 = pdVar11[2];\n local_130.field0_0x0.field0_0x0 = dVar18;\n local_130.field0_0x0.field1_0x8 = dVar22;\n local_130.field1_0x10.field0_0x0 = dVar25;\n local_130.field1_0x10.field1_0x8 = dVar26;\n local_b0._0_8_ = dVar19;\n unique0x100007b1 = dVar23;\n local_a0 = dVar16;\n bVar8 = mss_rewindFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_timeOut_\n (param_1,(AnonymousStructure0 *)local_150,1,&local_108,&local_130,\n (AnonymousStructure0 *)local_b0);\n if (((bVar8 == 0) ||\n (uVar9 = objc_stub::count(local_108), dVar22 = local_130.field1_0x10.field1_0x8,\n dVar19 = local_130.field1_0x10.field0_0x0, dVar18 = local_130.field0_0x0.field1_0x8,\n dVar16 = local_130.field0_0x0.field0_0x0, uVar9 < 0x4d)) ||\n ((_CGRectIsNull(local_130.field0_0x0.field0_0x0,local_130.field0_0x0.field1_0x8,\n local_130.field1_0x10.field0_0x0,local_130.field1_0x10.field1_0x8),\n (uVar9 & 1) != 0 ||\n (((_CGRectIsEmpty(dVar16,dVar18,dVar19,dVar22), (uVar9 & 1) != 0 ||\n (dVar23 = dVar16, _CGRectGetWidth(dVar16,dVar18,dVar19,dVar22),\n dVar23 <= 2.220446049250313e-16)) ||\n (_CGRectGetHeight(dVar16,dVar18,dVar19,dVar22), dVar16 <= 2.220446049250313e-16))))))\n goto LAB_10001cbbc;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = local_108;\n }\n if (pdVar13 != (double *)0x0) {\n pdVar13[1] = local_130.field0_0x0.field1_0x8;\n *pdVar13 = local_130.field0_0x0.field0_0x0;\n pdVar13[3] = local_130.field1_0x10.field1_0x8;\n pdVar13[2] = local_130.field1_0x10.field0_0x0;\n }\n if (param_5 != (ID *)0x0) {\n param_5[1] = (ID)stack0xffffffffffffff58;\n *param_5 = local_b0._0_8_;\n param_5[2] = (ID)local_a0;\n }\n if (param_6 != (CGRect *)0x0) {\n (param_6->field0_0x0).field1_0x8 = stack0xffffffffffffff58;\n (param_6->field0_0x0).field0_0x0 = (double)local_b0._0_8_;\n (param_6->field1_0x10).field0_0x0 = local_a0;\n }\n if (param_7 != (AnonymousStructure0 *)0x0) {\n *(undefined1 *)¶m_7->field0_0x0 = 1;\n }\n local_150._8_8_ = pdVar11[1];\n local_150._0_8_ = *pdVar11;\n local_140 = pdVar11[2];\n _CMTimeGetSeconds(local_150);\n if ((uStack_a4 & 0x1d) == 1) {\n local_150._8_8_ = stack0xffffffffffffff58;\n local_150._0_8_ = local_b0._0_8_;\n local_140 = local_a0;\n _CMTimeGetSeconds(local_150);\n }\n FUN_10001b584(local_130.field0_0x0.field0_0x0,local_130.field0_0x0.field1_0x8,\n local_130.field1_0x10.field0_0x0,local_130.field1_0x10.field1_0x8);\nLAB_10001cdd0:\n bVar8 = 1;\n }\n else {\nLAB_10001cbbc:\n if ((*(char *)(param_1 + 0x308) == '\\x01') &&\n (uVar9 = objc_stub::count(*(ID *)(param_1 + 0x2b0)), 0x4c < uVar9)) {\n dVar16 = *(double *)(param_1 + 0x2b8);\n uVar27 = *(undefined8 *)(param_1 + 0x2c0);\n uVar28 = *(undefined8 *)(param_1 + 0x2c8);\n uVar29 = *(undefined8 *)(param_1 + 0x2d0);\n _CGRectIsNull(dVar16,uVar27,uVar28,uVar29);\n if (((uVar9 & 1) == 0) &&\n (((_CGRectIsEmpty(dVar16,uVar27,uVar28,uVar29), (uVar9 & 1) == 0 &&\n (dVar18 = dVar16, _CGRectGetWidth(dVar16,uVar27,uVar28,uVar29),\n 2.220446049250313e-16 < dVar18)) &&\n (_CGRectGetHeight(dVar16,uVar27,uVar28,uVar29), 2.220446049250313e-16 < dVar16)))) {\n if ((uVar1 == 1) && ((param_3._8_8_ & 1) == 0)) {\n if ((*(byte *)(param_1 + 0x2fc) & 1) == 0) {\n local_b0._0_8_ = *(double *)(param_1 + 0x2d8);\n uVar2 = *(undefined4 *)(param_1 + 0x2e0);\n puVar15 = (uint *)(param_1 + 0x2e4);\n lVar14 = 0x2e8;\n }\n else {\n puVar15 = (uint *)(param_1 + 0x2fc);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n uVar2 = *(undefined4 *)(param_1 + 0x2f8);\n lVar14 = 0x300;\n }\n stack0xffffffffffffff58 = (double)CONCAT44(uStack_a4,uVar2);\n if ((*puVar15 & 0x1d) == 1) {\n local_130.field1_0x10.field0_0x0 = *(double *)(param_1 + lVar14);\n local_130.field0_0x0.field0_0x0 = (double)local_b0._0_8_;\n local_130.field0_0x0.field1_0x8 = (double)CONCAT44(*puVar15,uVar2);\n _CMTimeGetSeconds(&local_130);\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n dVar18 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n local_130.field0_0x0.field0_0x0 = dVar18;\n _CMTimeGetSeconds(&local_130);\n if ((((ulong)ABS(dVar16) < 0x7ff0000000000000) &&\n ((ulong)ABS(dVar18) < 0x7ff0000000000000)) && (ABS(dVar16 - dVar18) <= 0.0005))\n goto LAB_10001ce38;\n }\nLAB_10001cd40:\n if ((*(uint *)(param_1 + 0x2fc) & 0x1d) == 1) {\n local_130.field0_0x0.field1_0x8 = pdVar11[1];\n local_130.field0_0x0.field0_0x0 = *pdVar11;\n local_130.field1_0x10.field0_0x0 = pdVar11[2];\n register0x00005008 = *(double *)(param_1 + 0x2f8);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n local_a0 = *(double *)(param_1 + 0x300);\n pCVar10 = &local_130;\n _CMTimeCompare(pCVar10,local_b0);\n if ((int)pCVar10 < 0) {\n register0x00005008 = *(double *)(param_1 + 0x2f8);\n local_b0._0_8_ = *(double *)(param_1 + 0x2f0);\n local_a0 = *(double *)(param_1 + 0x300);\n local_150._8_8_ = pdVar11[1];\n dVar16 = *pdVar11;\n local_140 = pdVar11[2];\n local_150._0_8_ = dVar16;\n _CMTimeSubtract(&local_130,local_b0,local_150);\n _CMTimeGetSeconds(&local_130);\n if ((0.05 < dVar16) && ((ulong)ABS(dVar16) < 0x7ff0000000000000)) goto LAB_10001ce38;\n }\n }\n }\n else if (uVar1 == 1) goto LAB_10001cd40;\n if (pIVar12 != (ID *)0x0) {\n *pIVar12 = *(ID *)(param_1 + 0x2b0);\n }\n if (pdVar13 != (double *)0x0) {\n dVar16 = *(double *)(param_1 + 0x2b8);\n dVar19 = *(double *)(param_1 + 0x2d0);\n dVar18 = *(double *)(param_1 + 0x2c8);\n pdVar13[1] = *(double *)(param_1 + 0x2c0);\n *pdVar13 = dVar16;\n pdVar13[3] = dVar19;\n pdVar13[2] = dVar18;\n }\n if (param_5 != (ID *)0x0) {\n IVar24 = *(ID *)(param_1 + 0x2e0);\n IVar17 = *(ID *)(param_1 + 0x2d8);\n param_5[2] = *(ID *)(param_1 + 0x2e8);\n param_5[1] = IVar24;\n *param_5 = IVar17;\n }\n if (param_6 != (CGRect *)0x0) {\n dVar18 = *(double *)(param_1 + 0x2f8);\n dVar16 = *(double *)(param_1 + 0x2f0);\n (param_6->field1_0x10).field0_0x0 = *(double *)(param_1 + 0x300);\n (param_6->field0_0x0).field1_0x8 = dVar18;\n (param_6->field0_0x0).field0_0x0 = dVar16;\n }\n goto LAB_10001cdd0;\n }\n }\nLAB_10001ce38:\n bVar8 = 0;\n }\nLAB_10001ce3c:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_90) {\n return bVar8;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_264edabb63f8a287fb3982372bc0c6980b11c0eaf1c9d1707b7b10f05e538be9", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x1000547c8: cbz x0, 0x1000548bc\n0x1000547cc: stp d9, d8, [sp, #-0x50]!\n0x1000547d0: stp x24, x23, [sp, #0x10]\n0x1000547d4: stp x22, x21, [sp, #0x20]\n0x1000547d8: stp x20, x19, [sp, #0x30]\n0x1000547dc: stp x29, x30, [sp, #0x40]\n0x1000547e0: add x29, sp, #0x40\n0x1000547e4: mov x19, x1\n0x1000547e8: mov x20, x0\n0x1000547ec: bl 0x1000806c0\n0x1000547f0: cbz x0, 0x1000548a8\n0x1000547f4: mov x0, x20\n0x1000547f8: bl 0x1000801c0\n0x1000547fc: cbz x0, 0x1000548a8\n0x100054800: mov x0, x20\n0x100054804: bl 0x1000801c0\n0x100054808: mov x21, x0\n0x10005480c: mov x0, x20\n0x100054810: bl 0x1000806c0\n0x100054814: cbz x0, 0x1000548c0\n0x100054818: mov x22, #0x0\n0x10005481c: add x21, x21, #0x8\n0x100054820: movi d9, #0x0\n0x100054824: mov x23, #0x7fefffffffffffff\n0x100054828: movi d8, #0x0\n0x10005482c: mov w0, #0x0\n0x100054830: ldp d0, d1, [x21, #-0x8]\n0x100054834: fmov x8, d0\n0x100054838: fmov x9, d1\n0x10005483c: and x10, x8, #0x7fffffffffffffff\n0x100054840: and x8, x9, #0x7fffffffffffffff\n0x100054844: cmp x8, x23\n0x100054848: cset w8, gt\n0x10005484c: cmp x10, x23\n0x100054850: b.gt 0x1000548a8\n0x100054854: tbnz w8, #0x0, 0x1000548a8\n0x100054858: fadd d9, d9, d0\n0x10005485c: fadd d8, d8, d1\n0x100054860: add x22, x22, #0x1\n0x100054864: mov x0, x20\n0x100054868: bl 0x1000806c0\n0x10005486c: add x21, x21, #0x10\n0x100054870: cmp x22, x0\n0x100054874: b.cc 0x10005482c\n0x100054878: cbz x19, 0x1000548a4\n0x10005487c: mov x0, x20\n0x100054880: bl 0x1000806c0\n0x100054884: ucvtf d0, x0\n0x100054888: fdiv d0, d9, d0\n0x10005488c: str d0, [x19]\n0x100054890: mov x0, x20\n0x100054894: bl 0x1000806c0\n0x100054898: ucvtf d0, x0\n0x10005489c: fdiv d0, d8, d0\n0x1000548a0: str d0, [x19, #0x8]\n0x1000548a4: mov w0, #0x1\n0x1000548a8: ldp x29, x30, [sp, #0x40]\n0x1000548ac: ldp x20, x19, [sp, #0x30]\n0x1000548b0: ldp x22, x21, [sp, #0x20]\n0x1000548b4: ldp x24, x23, [sp, #0x10]\n0x1000548b8: ldp d9, d8, [sp], #0x50\n0x1000548bc: ret\n0x1000548c0: movi d8, #0x0\n0x1000548c4: movi d9, #0x0\n0x1000548c8: cbnz x19, 0x10005487c\n0x1000548cc: b 0x1000548a4", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x1000547c8" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "0x1000547c8: cbz x0, 0x1000548bc\n0x1000547cc: stp d9, d8, [sp, #-0x50]!\n0x1000547d0: stp x24, x23, [sp, #0x10]\n0x1000547d4: stp x22, x21, [sp, #0x20]\n0x1000547d8: stp x20, x19, [sp, #0x30]\n0x1000547dc: stp x29, x30, [sp, #0x40]\n0x1000547e0: add x29, sp, #0x40\n0x1000547e4: mov x19, x1\n0x1000547e8: mov x20, x0\n0x1000547ec: bl 0x1000806c0\n0x1000547f0: cbz x0, 0x1000548a8\n0x1000547f4: mov x0, x20\n0x1000547f8: bl 0x1000801c0\n0x1000547fc: cbz x0, 0x1000548a8\n0x100054800: mov x0, x20\n0x100054804: bl 0x1000801c0\n0x100054808: mov x21, x0\n0x10005480c: mov x0, x20\n0x100054810: bl 0x1000806c0\n0x100054814: cbz x0, 0x1000548c0\n0x100054818: mov x22, #0x0\n0x10005481c: add x21, x21, #0x8\n0x100054820: movi d9, #0x0\n0x100054824: mov x23, #0x7fefffffffffffff\n0x100054828: movi d8, #0x0\n0x10005482c: mov w0, #0x0\n0x100054830: ldp d0, d1, [x21, #-0x8]\n0x100054834: fmov x8, d0\n0x100054838: fmov x9, d1\n0x10005483c: and x10, x8, #0x7fffffffffffffff\n0x100054840: and x8, x9, #0x7fffffffffffffff\n0x100054844: cmp x8, x23\n0x100054848: cset w8, gt\n0x10005484c: cmp x10, x23\n0x100054850: b.gt 0x1000548a8\n0x100054854: tbnz w8, #0x0, 0x1000548a8\n0x100054858: fadd d9, d9, d0\n0x10005485c: fadd d8, d8, d1\n0x100054860: add x22, x22, #0x1\n0x100054864: mov x0, x20\n0x100054868: bl 0x1000806c0\n0x10005486c: add x21, x21, #0x10\n0x100054870: cmp x22, x0\n0x100054874: b.cc 0x10005482c\n0x100054878: cbz x19, 0x1000548a4\n0x10005487c: mov x0, x20\n0x100054880: bl 0x1000806c0\n0x100054884: ucvtf d0, x0\n0x100054888: fdiv d0, d9, d0\n0x10005488c: str d0, [x19]\n0x100054890: mov x0, x20\n0x100054894: bl 0x1000806c0\n0x100054898: ucvtf d0, x0\n0x10005489c: fdiv d0, d8, d0\n0x1000548a0: str d0, [x19, #0x8]\n0x1000548a4: mov w0, #0x1\n0x1000548a8: ldp x29, x30, [sp, #0x40]\n0x1000548ac: ldp x20, x19, [sp, #0x30]\n0x1000548b0: ldp x22, x21, [sp, #0x20]\n0x1000548b4: ldp x24, x23, [sp, #0x10]\n0x1000548b8: ldp d9, d8, [sp], #0x50\n0x1000548bc: ret\n0x1000548c0: movi d8, #0x0\n0x1000548c4: movi d9, #0x0\n0x1000548c8: cbnz x19, 0x10005487c\n0x1000548cc: b 0x1000548a4" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_27062c506b59b55db5e5174b0bcd9d64018055e8836e6e73e06d5689d4db0005", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x100054d78: stp d13, d12, [sp, #-0x70]!\n0x100054d7c: stp d11, d10, [sp, #0x10]\n0x100054d80: stp d9, d8, [sp, #0x20]\n0x100054d84: stp x24, x23, [sp, #0x30]\n0x100054d88: stp x22, x21, [sp, #0x40]\n0x100054d8c: stp x20, x19, [sp, #0x50]\n0x100054d90: stp x29, x30, [sp, #0x60]\n0x100054d94: add x29, sp, #0x60\n0x100054d98: mov x19, x2\n0x100054d9c: mov x20, x1\n0x100054da0: mov x23, x0\n0x100054da4: bl 0x10007d560\n0x100054da8: cmp x0, #0x4d\n0x100054dac: b.cs 0x100054dd4\n0x100054db0: mov w0, #0x0\n0x100054db4: ldp x29, x30, [sp, #0x60]\n0x100054db8: ldp x20, x19, [sp, #0x50]\n0x100054dbc: ldp x22, x21, [sp, #0x40]\n0x100054dc0: ldp x24, x23, [sp, #0x30]\n0x100054dc4: ldp d9, d8, [sp, #0x20]\n0x100054dc8: ldp d11, d10, [sp, #0x10]\n0x100054dcc: ldp d13, d12, [sp], #0x70\n0x100054dd0: ret\n0x100054dd4: mov x0, x23\n0x100054dd8: mov w2, #0x4c\n0x100054ddc: bl 0x1000803c0\n0x100054de0: mov x24, x0\n0x100054de4: mov x0, x23\n0x100054de8: mov w2, #0x42\n0x100054dec: bl 0x1000803c0\n0x100054df0: mov x21, x0\n0x100054df4: mov x0, x23\n0x100054df8: mov w2, #0x43\n0x100054dfc: bl 0x1000803c0\n0x100054e00: mov x22, x0\n0x100054e04: mov x0, x23\n0x100054e08: mov w2, #0x44\n0x100054e0c: bl 0x1000803c0\n0x100054e10: mov x23, x0\n0x100054e14: mov w0, #0x0\n0x100054e18: cbz x24, 0x100054db4\n0x100054e1c: cbz x21, 0x100054db4\n0x100054e20: cbz x22, 0x100054db4\n0x100054e24: cbz x23, 0x100054db4\n0x100054e28: mov x0, x24\n0x100054e2c: bl 0x10007d560\n0x100054e30: cmp x0, #0x2\n0x100054e34: b.cc 0x100054db0\n0x100054e38: mov x0, x21\n0x100054e3c: bl 0x10007d560\n0x100054e40: cmp x0, #0x2\n0x100054e44: b.cc 0x100054db0\n0x100054e48: mov x0, x22\n0x100054e4c: bl 0x10007d560\n0x100054e50: cmp x0, #0x2\n0x100054e54: b.cc 0x100054db0\n0x100054e58: mov x0, x23\n0x100054e5c: bl 0x10007d560\n0x100054e60: cmp x0, #0x2\n0x100054e64: b.cc 0x100054db0\n0x100054e68: mov x0, x24\n0x100054e6c: bl 0x10007c8c0\n0x100054e70: fmov d8, d0\n0x100054e74: mov x0, x24\n0x100054e78: bl 0x10007c8e0\n0x100054e7c: fmov d9, d0\n0x100054e80: mov x0, x21\n0x100054e84: bl 0x10007c8c0\n0x100054e88: fmov d10, d0\n0x100054e8c: mov x0, x22\n0x100054e90: bl 0x10007c8c0\n0x100054e94: adrp x8, 0x100086000\n0x100054e98: ldr d11, [x8, #0x558]\n0x100054e9c: fmadd d10, d0, d11, d10\n0x100054ea0: mov x0, x23\n0x100054ea4: bl 0x10007c8c0\n0x100054ea8: fadd d0, d10, d0\n0x100054eac: adrp x8, 0x100086000\n0x100054eb0: ldr d12, [x8, #0x7d0]\n0x100054eb4: fdiv d13, d0, d12\n0x100054eb8: mov x0, x21\n0x100054ebc: bl 0x10007c8e0\n0x100054ec0: fmov d10, d0\n0x100054ec4: mov x0, x22\n0x100054ec8: bl 0x10007c8e0\n0x100054ecc: fmadd d10, d0, d11, d10\n0x100054ed0: mov x0, x23\n0x100054ed4: bl 0x10007c8e0\n0x100054ed8: fadd d0, d10, d0\n0x100054edc: fdiv d0, d0, d12\n0x100054ee0: fsub d8, d13, d8\n0x100054ee4: fmov x21, d8\n0x100054ee8: fsub d9, d0, d9\n0x100054eec: fmov x22, d9\n0x100054ef0: fmov d0, d8\n0x100054ef4: fmov d1, d9\n0x100054ef8: bl 0x10007ad84\n0x100054efc: mov w0, #0x0\n0x100054f00: and x9, x21, #0x7fffffffffffffff\n0x100054f04: and x8, x22, #0x7fffffffffffffff\n0x100054f08: mov x10, #0x7fefffffffffffff\n0x100054f0c: cmp x8, x10\n0x100054f10: cset w8, gt\n0x100054f14: cmp x9, x10\n0x100054f18: b.gt 0x100054db4\n0x100054f1c: tbnz w8, #0x0, 0x100054db4\n0x100054f20: mov w0, #0x0\n0x100054f24: fmov x8, d0\n0x100054f28: and x8, x8, #0x7fffffffffffffff\n0x100054f2c: mov x9, #0x7fefffffffffffff\n0x100054f30: cmp x8, x9\n0x100054f34: b.gt 0x100054db4\n0x100054f38: adrp x8, 0x100086000\n0x100054f3c: ldr d1, [x8, #0x7d8]\n0x100054f40: fcmp d0, d1\n0x100054f44: b.ls 0x100054db4\n0x100054f48: cbz x20, 0x100054f50\n0x100054f4c: stp d8, d9, [x20]\n0x100054f50: cbz x19, 0x100054f58\n0x100054f54: str d0, [x19]\n0x100054f58: mov w0, #0x1\n0x100054f5c: b 0x100054db4", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x100054d78" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "0x100054d78: stp d13, d12, [sp, #-0x70]!\n0x100054d7c: stp d11, d10, [sp, #0x10]\n0x100054d80: stp d9, d8, [sp, #0x20]\n0x100054d84: stp x24, x23, [sp, #0x30]\n0x100054d88: stp x22, x21, [sp, #0x40]\n0x100054d8c: stp x20, x19, [sp, #0x50]\n0x100054d90: stp x29, x30, [sp, #0x60]\n0x100054d94: add x29, sp, #0x60\n0x100054d98: mov x19, x2\n0x100054d9c: mov x20, x1\n0x100054da0: mov x23, x0\n0x100054da4: bl 0x10007d560\n0x100054da8: cmp x0, #0x4d\n0x100054dac: b.cs 0x100054dd4\n0x100054db0: mov w0, #0x0\n0x100054db4: ldp x29, x30, [sp, #0x60]\n0x100054db8: ldp x20, x19, [sp, #0x50]\n0x100054dbc: ldp x22, x21, [sp, #0x40]\n0x100054dc0: ldp x24, x23, [sp, #0x30]\n0x100054dc4: ldp d9, d8, [sp, #0x20]\n0x100054dc8: ldp d11, d10, [sp, #0x10]\n0x100054dcc: ldp d13, d12, [sp], #0x70\n0x100054dd0: ret\n0x100054dd4: mov x0, x23\n0x100054dd8: mov w2, #0x4c\n0x100054ddc: bl 0x1000803c0\n0x100054de0: mov x24, x0\n0x100054de4: mov x0, x23\n0x100054de8: mov w2, #0x42\n0x100054dec: bl 0x1000803c0\n0x100054df0: mov x21, x0\n0x100054df4: mov x0, x23\n0x100054df8: mov w2, #0x43\n0x100054dfc: bl 0x1000803c0\n0x100054e00: mov x22, x0\n0x100054e04: mov x0, x23\n0x100054e08: mov w2, #0x44\n0x100054e0c: bl 0x1000803c0\n0x100054e10: mov x23, x0\n0x100054e14: mov w0, #0x0\n0x100054e18: cbz x24, 0x100054db4\n0x100054e1c: cbz x21, 0x100054db4\n0x100054e20: cbz x22, 0x100054db4\n0x100054e24: cbz x23, 0x100054db4\n0x100054e28: mov x0, x24\n0x100054e2c: bl 0x10007d560\n0x100054e30: cmp x0, #0x2\n0x100054e34: b.cc 0x100054db0\n0x100054e38: mov x0, x21\n0x100054e3c: bl 0x10007d560\n0x100054e40: cmp x0, #0x2\n0x100054e44: b.cc 0x100054db0\n0x100054e48: mov x0, x22\n0x100054e4c: bl 0x10007d560\n0x100054e50: cmp x0, #0x2\n0x100054e54: b.cc 0x100054db0\n0x100054e58: mov x0, x23\n0x100054e5c: bl 0x10007d560\n0x100054e60: cmp x0, #0x2\n0x100054e64: b.cc 0x100054db0\n0x100054e68: mov x0, x24\n0x100054e6c: bl 0x10007c8c0\n0x100054e70: fmov d8, d0\n0x100054e74: mov x0, x24\n0x100054e78: bl 0x10007c8e0\n0x100054e7c: fmov d9, d0\n0x100054e80: mov x0, x21\n0x100054e84: bl 0x10007c8c0\n0x100054e88: fmov d10, d0\n0x100054e8c: mov x0, x22\n0x100054e90: bl 0x10007c8c0\n0x100054e94: adrp x8, 0x100086000\n0x100054e98: ldr d11, [x8, #0x558]\n0x100054e9c: fmadd d10, d0, d11, d10\n0x100054ea0: mov x0, x23\n0x100054ea4: bl 0x10007c8c0\n0x100054ea8: fadd d0, d10, d0\n0x100054eac: adrp x8, 0x100086000\n0x100054eb0: ldr d12, [x8, #0x7d0]\n0x100054eb4: fdiv d13, d0, d12\n0x100054eb8: mov x0, x21\n0x100054ebc: bl 0x10007c8e0\n0x100054ec0: fmov d10, d0\n0x100054ec4: mov x0, x22\n0x100054ec8: bl 0x10007c8e0\n0x100054ecc: fmadd d10, d0, d11, d10\n0x100054ed0: mov x0, x23\n0x100054ed4: bl 0x10007c8e0\n0x100054ed8: fadd d0, d10, d0\n0x100054edc: fdiv d0, d0, d12\n0x100054ee0: fsub d8, d13, d8\n0x100054ee4: fmov x21, d8\n0x100054ee8: fsub d9, d0, d9\n0x100054eec: fmov x22, d9\n0x100054ef0: fmov d0, d8\n0x100054ef4: fmov d1, d9\n0x100054ef8: bl 0x10007ad84\n0x100054efc: mov w0, #0x0\n0x100054f00: and x9, x21, #0x7fffffffffffffff\n0x100054f04: and x8, x22, #0x7fffffffffffffff\n0x100054f08: mov x10, #0x7fefffffffffffff\n0x100054f0c: cmp x8, x10\n0x100054f10: cset w8, gt\n0x100054f14: cmp x9, x10\n0x100054f18: b.gt 0x100054db4\n0x100054f1c: tbnz w8, #0x0, 0x100054db4\n0x100054f20: mov w0, #0x0\n0x100054f24: fmov x8, d0\n0x100054f28: and x8, x8, #0x7fffffffffffffff\n0x100054f2c: mov x9, #0x7fefffffffffffff\n0x100054f30: cmp x8, x9\n0x100054f34: b.gt 0x100054db4\n0x100054f38: adrp x8, 0x100086000\n0x100054f3c: ldr d1, [x8, #0x7d8]\n0x100054f40: fcmp d0, d1\n0x100054f44: b.ls 0x100054db4\n0x100054f48: cbz x20, 0x100054f50\n0x100054f4c: stp d8, d9, [x20]\n0x100054f50: cbz x19, 0x100054f58\n0x100054f54: str d0, [x19]\n0x100054f58: mov w0, #0x1\n0x100054f5c: b 0x100054db4" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_29ca303e3abf1c03c3086fde29c52c6abcbe852790038891fc7fe99362f2e301", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x100086240", + "bytes_hex": "9a9999999999d9bf", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x100086240", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x100086240", + "bytes_hex": "9a9999999999d9bf", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_31e545eab6b0d8b08bee4c6ffc195f644e12cea5d2cf00ace66935efa1756e8e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nundefined8 FUN_1000548d0(ID param_1,double *param_2)\n\n{\n ID IVar1;\n ID IVar2;\n ulong uVar3;\n double *pdVar4;\n ulong uVar5;\n ulong uVar6;\n double dVar7;\n double dVar8;\n double dVar9;\n \n if (param_1 == 0) {\n return 0;\n }\n IVar1 = objc_stub::pointCount(param_1);\n if (4 < IVar1) {\n IVar1 = objc_stub::normalizedPoints(param_1);\n if (IVar1 == 0) {\n return 0;\n }\n IVar1 = objc_stub::normalizedPoints(param_1);\n IVar2 = objc_stub::pointCount(param_1);\n uVar6 = IVar2 >> 1;\n uVar5 = uVar6 - (1 < IVar2);\n IVar2 = objc_stub::pointCount(param_1);\n uVar3 = IVar2 - 1;\n if (uVar6 + 1 <= uVar3) {\n uVar3 = uVar6 + 1;\n }\n if (uVar5 <= uVar3) {\n uVar3 = (uVar3 - uVar5) + 1;\n pdVar4 = (double *)(IVar1 + uVar5 * 0x10);\n dVar7 = 0.0;\n dVar8 = 0.0;\n uVar5 = uVar3;\n while( true ) {\n if (0x7fefffffffffffff < ((ulong)*pdVar4 >> 0x30 & 0x7ff8) << 0x30 ||\n 0x7fefffffffffffff < ((ulong)pdVar4[1] >> 0x30 & 0x7ff8) << 0x30) break;\n dVar7 = dVar7 + *pdVar4;\n dVar8 = dVar8 + pdVar4[1];\n pdVar4 = pdVar4 + 2;\n uVar5 = uVar5 - 1;\n if (uVar5 == 0) {\n if (param_2 != (double *)0x0) {\n dVar9 = (double)uVar3;\n param_2[1] = dVar8 / dVar9;\n *param_2 = dVar7 / dVar9;\n }\n return 1;\n }\n }\n }\n }\n return 0;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x1000548d0" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nundefined8 FUN_1000548d0(ID param_1,double *param_2)\n\n{\n ID IVar1;\n ID IVar2;\n ulong uVar3;\n double *pdVar4;\n ulong uVar5;\n ulong uVar6;\n double dVar7;\n double dVar8;\n double dVar9;\n \n if (param_1 == 0) {\n return 0;\n }\n IVar1 = objc_stub::pointCount(param_1);\n if (4 < IVar1) {\n IVar1 = objc_stub::normalizedPoints(param_1);\n if (IVar1 == 0) {\n return 0;\n }\n IVar1 = objc_stub::normalizedPoints(param_1);\n IVar2 = objc_stub::pointCount(param_1);\n uVar6 = IVar2 >> 1;\n uVar5 = uVar6 - (1 < IVar2);\n IVar2 = objc_stub::pointCount(param_1);\n uVar3 = IVar2 - 1;\n if (uVar6 + 1 <= uVar3) {\n uVar3 = uVar6 + 1;\n }\n if (uVar5 <= uVar3) {\n uVar3 = (uVar3 - uVar5) + 1;\n pdVar4 = (double *)(IVar1 + uVar5 * 0x10);\n dVar7 = 0.0;\n dVar8 = 0.0;\n uVar5 = uVar3;\n while( true ) {\n if (0x7fefffffffffffff < ((ulong)*pdVar4 >> 0x30 & 0x7ff8) << 0x30 ||\n 0x7fefffffffffffff < ((ulong)pdVar4[1] >> 0x30 & 0x7ff8) << 0x30) break;\n dVar7 = dVar7 + *pdVar4;\n dVar8 = dVar8 + pdVar4[1];\n pdVar4 = pdVar4 + 2;\n uVar5 = uVar5 - 1;\n if (uVar5 == 0) {\n if (param_2 != (double *)0x0) {\n dVar9 = (double)uVar3;\n param_2[1] = dVar8 / dVar9;\n *param_2 = dVar7 / dVar9;\n }\n return 1;\n }\n }\n }\n }\n return 0;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_4262a57fba63d463ae97c4986acb212b8240d86b0afd35ed06fcc9c941d1b38d", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10003f2bc to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nulong FUN_10003f020(undefined8 param_1,double param_2,undefined8 param_3,undefined8 param_4,\n ID param_5)\n\n{\n ID IVar1;\n ulong uVar2;\n ulong uVar3;\n ulong uVar4;\n long lVar5;\n ID IVar6;\n double dVar7;\n double dVar8;\n double extraout_d0;\n double dVar9;\n double dVar10;\n undefined8 local_178;\n undefined8 local_170;\n undefined8 local_160;\n long lStack_158;\n long *local_150;\n undefined8 uStack_148;\n undefined8 local_140;\n undefined8 uStack_138;\n undefined8 uStack_130;\n undefined8 uStack_128;\n undefined1 auStack_118 [128];\n long local_98;\n \n local_98 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar1 = objc_stub::count(param_5);\n if (IVar1 == 0) {\n uVar2 = 0;\n }\n else {\n _CGRectGetMidX(param_1,param_2,param_3,param_4);\n _CGRectGetMidY(param_1,param_2,param_3,param_4);\n lStack_158 = 0;\n local_160 = 0;\n uStack_148 = 0;\n local_150 = (long *)0x0;\n uStack_138 = 0;\n local_140 = 0;\n uStack_128 = 0;\n uStack_130 = 0;\n IVar1 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_5,&local_160,auStack_118,0x10);\n if (IVar1 != 0) {\n uVar2 = 0;\n lVar5 = *local_150;\n dVar9 = -1.7976931348623157e+308;\n local_170 = 0x3fe70a3d70a3d70a;\n dVar7 = 1.1;\n local_178 = 0x3ff199999999999a;\n do {\n IVar6 = 0;\n uVar3 = uVar2;\n dVar10 = dVar9;\n do {\n if (*local_150 != lVar5) {\n _objc_enumerationMutation(param_5);\n }\n uVar4 = *(ulong *)(lStack_158 + IVar6 * 8);\n uVar2 = uVar3;\n dVar9 = dVar10;\n if (uVar4 != 0) {\n uVar2 = uVar4;\n FUN_10003d49c();\n _CGRectStandardize();\n dVar9 = 0.0;\n _CGRectIntersection();\n _CGRectIsNull();\n if (((uVar2 & 1) == 0) &&\n (_CGRectIsEmpty(dVar7,param_2,param_3,param_4), (uVar2 & 1) == 0)) {\n dVar9 = dVar7;\n _CGRectGetWidth(dVar7,param_2,param_3,param_4);\n if (dVar9 <= 0.0) {\n dVar9 = 0.0;\n }\n dVar8 = dVar7;\n _CGRectGetHeight(dVar7,param_2,param_3,param_4);\n if (dVar8 <= 0.0) {\n dVar8 = 0.0;\n }\n dVar9 = dVar9 * dVar8;\n }\n dVar8 = 1.0;\n if (dVar9 <= 1.0) {\n dVar8 = dVar9;\n }\n dVar9 = dVar7;\n _CGRectGetMidX(dVar7,param_2,param_3,param_4);\n _CGRectGetMidY(dVar7,param_2,param_3,param_4);\n param_2 = dVar8 * 1.8;\n dVar9 = SQRT((dVar7 + -0.5) * (dVar7 + -0.5) + (dVar9 + -0.5) * (dVar9 + -0.5)) / 0.72;\n dVar7 = 1.0;\n if (dVar9 <= 1.0) {\n dVar7 = dVar9;\n }\n dVar7 = param_2 + (1.0 - dVar7) * 1.1;\n uVar2 = uVar4;\n param_3 = local_178;\n param_4 = local_170;\n dVar9 = dVar7;\n if (dVar7 <= dVar10 && uVar3 != 0) {\n uVar2 = uVar3;\n dVar9 = dVar10;\n }\n }\n IVar6 = IVar6 + 1;\n uVar3 = uVar2;\n dVar10 = dVar9;\n } while (IVar1 != IVar6);\n IVar1 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_5,&local_160,auStack_118,0x10);\n dVar7 = extraout_d0;\n } while (IVar1 != 0);\n if (uVar2 != 0) goto LAB_10003f274;\n }\n uVar2 = objc_stub::firstObject(param_5);\n }\nLAB_10003f274:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_98) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return uVar2;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003f020" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10003f2bc to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\nulong FUN_10003f020(undefined8 param_1,double param_2,undefined8 param_3,undefined8 param_4,\n ID param_5)\n\n{\n ID IVar1;\n ulong uVar2;\n ulong uVar3;\n ulong uVar4;\n long lVar5;\n ID IVar6;\n double dVar7;\n double dVar8;\n double extraout_d0;\n double dVar9;\n double dVar10;\n undefined8 local_178;\n undefined8 local_170;\n undefined8 local_160;\n long lStack_158;\n long *local_150;\n undefined8 uStack_148;\n undefined8 local_140;\n undefined8 uStack_138;\n undefined8 uStack_130;\n undefined8 uStack_128;\n undefined1 auStack_118 [128];\n long local_98;\n \n local_98 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar1 = objc_stub::count(param_5);\n if (IVar1 == 0) {\n uVar2 = 0;\n }\n else {\n _CGRectGetMidX(param_1,param_2,param_3,param_4);\n _CGRectGetMidY(param_1,param_2,param_3,param_4);\n lStack_158 = 0;\n local_160 = 0;\n uStack_148 = 0;\n local_150 = (long *)0x0;\n uStack_138 = 0;\n local_140 = 0;\n uStack_128 = 0;\n uStack_130 = 0;\n IVar1 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_5,&local_160,auStack_118,0x10);\n if (IVar1 != 0) {\n uVar2 = 0;\n lVar5 = *local_150;\n dVar9 = -1.7976931348623157e+308;\n local_170 = 0x3fe70a3d70a3d70a;\n dVar7 = 1.1;\n local_178 = 0x3ff199999999999a;\n do {\n IVar6 = 0;\n uVar3 = uVar2;\n dVar10 = dVar9;\n do {\n if (*local_150 != lVar5) {\n _objc_enumerationMutation(param_5);\n }\n uVar4 = *(ulong *)(lStack_158 + IVar6 * 8);\n uVar2 = uVar3;\n dVar9 = dVar10;\n if (uVar4 != 0) {\n uVar2 = uVar4;\n FUN_10003d49c();\n _CGRectStandardize();\n dVar9 = 0.0;\n _CGRectIntersection();\n _CGRectIsNull();\n if (((uVar2 & 1) == 0) &&\n (_CGRectIsEmpty(dVar7,param_2,param_3,param_4), (uVar2 & 1) == 0)) {\n dVar9 = dVar7;\n _CGRectGetWidth(dVar7,param_2,param_3,param_4);\n if (dVar9 <= 0.0) {\n dVar9 = 0.0;\n }\n dVar8 = dVar7;\n _CGRectGetHeight(dVar7,param_2,param_3,param_4);\n if (dVar8 <= 0.0) {\n dVar8 = 0.0;\n }\n dVar9 = dVar9 * dVar8;\n }\n dVar8 = 1.0;\n if (dVar9 <= 1.0) {\n dVar8 = dVar9;\n }\n dVar9 = dVar7;\n _CGRectGetMidX(dVar7,param_2,param_3,param_4);\n _CGRectGetMidY(dVar7,param_2,param_3,param_4);\n param_2 = dVar8 * 1.8;\n dVar9 = SQRT((dVar7 + -0.5) * (dVar7 + -0.5) + (dVar9 + -0.5) * (dVar9 + -0.5)) / 0.72;\n dVar7 = 1.0;\n if (dVar9 <= 1.0) {\n dVar7 = dVar9;\n }\n dVar7 = param_2 + (1.0 - dVar7) * 1.1;\n uVar2 = uVar4;\n param_3 = local_178;\n param_4 = local_170;\n dVar9 = dVar7;\n if (dVar7 <= dVar10 && uVar3 != 0) {\n uVar2 = uVar3;\n dVar9 = dVar10;\n }\n }\n IVar6 = IVar6 + 1;\n uVar3 = uVar2;\n dVar10 = dVar9;\n } while (IVar1 != IVar6);\n IVar1 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_5,&local_160,auStack_118,0x10);\n dVar7 = extraout_d0;\n } while (IVar1 != 0);\n if (uVar2 != 0) goto LAB_10003f274;\n }\n uVar2 = objc_stub::firstObject(param_5);\n }\nLAB_10003f274:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_98) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return uVar2;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_446e4a969ff46db0600fe15988d0f396f394641aaeac760d6372a0c0509bf177", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + { + "address": "EXTERNAL:0xa9", + "value": "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation::_CFErrorCreate" + }, + { + "address": "EXTERNAL:0xb2", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGBitmapContextCreate" + }, + { + "address": "EXTERNAL:0xb3", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGBitmapContextCreateImage" + }, + { + "address": "EXTERNAL:0xb4", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorCreateGenericRGB" + }, + { + "address": "EXTERNAL:0xb6", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorSpaceCreateDeviceRGB" + }, + { + "address": "EXTERNAL:0xb7", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorSpaceCreateWithName" + }, + { + "address": "EXTERNAL:0xd7", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGDataProviderCreateWithData" + }, + { + "address": "EXTERNAL:0xd9", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGImageCreate" + }, + { + "address": "EXTERNAL:0xdd", + "value": "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO::_CGImageSourceCreateImageAtIndex" + }, + { + "address": "EXTERNAL:0xde", + "value": "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO::_CGImageSourceCreateWithData" + }, + { + "address": "EXTERNAL:0xec", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGRectIntersection" + }, + { + "address": "EXTERNAL:0xf5", + "value": "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText::_CTFontCreateWithName" + }, + { + "address": "EXTERNAL:0xf6", + "value": "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText::_CTLineCreateWithAttributedString" + }, + { + "address": "EXTERNAL:0xfa", + "value": "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit::_IORegistryEntryCreateCFProperty" + }, + { + "address": "EXTERNAL:0x105", + "value": "/System/Library/Frameworks/Metal.framework/Versions/A/Metal::_MTLCreateSystemDefaultDevice" + }, + { + "address": "EXTERNAL:0x112", + "value": "/System/Library/Frameworks/Security.framework/Versions/A/Security::_SecRequirementCreateWithString" + }, + { + "address": "EXTERNAL:0x114", + "value": "/System/Library/Frameworks/Security.framework/Versions/A/Security::_SecStaticCodeCreateWithPath" + }, + { + "address": "EXTERNAL:0x11a", + "value": "@rpath/libopencv_video.413.dylib::__ZN2cv14DISOpticalFlow6createEi" + }, + { + "address": "EXTERNAL:0x136", + "value": "/usr/lib/libSystem.B.dylib::_dispatch_semaphore_create" + }, + { + "address": "EXTERNAL:0x2f3", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::ephemeralSessionConfiguration" + }, + { + "address": "EXTERNAL:0x2f6", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::sessionWithConfiguration:" + }, + { + "address": "EXTERNAL:0x371", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "EXTERNAL:0x377", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createFileAtPath:contents:attributes:" + }, + { + "address": "EXTERNAL:0x38c", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "EXTERNAL:0x38f", + "value": "/System/Library/Frameworks/CoreML.framework/Versions/A/CoreML::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x100003dbc", + "value": "MSSSectionCardParameterValue::dealloc" + }, + { + "address": "0x100003e38", + "value": "MSSSectionCardParameterValue::init" + }, + { + "address": "0x100003f4c", + "value": "MSSSectionCardParameterValue::defaultValue" + }, + { + "address": "0x100003f60", + "value": "MSSSectionCardParameterValue::supportsSecureCoding" + }, + { + "address": "0x100003f68", + "value": "MSSSectionCardParameterValue::encodeWithCoder:" + }, + { + "address": "0x100004c08", + "value": "MSSSectionCardParameterValue::initWithCoder:" + }, + { + "address": "0x100006344", + "value": "MSSSectionCardParameterValue::copyWithZone:" + }, + { + "address": "0x100006c30", + "value": "MSSSectionCardParameterValue::interpolateBetween:withWeight:" + }, + { + "address": "0x100007a14", + "value": "MSSSectionCardParameterValue::isEqual:" + }, + { + "address": "0x100008b20", + "value": "MSSSectionCardParameterValue::skinBrightness" + }, + { + "address": "0x100008b28", + "value": "MSSSectionCardParameterValue::setSkinBrightness:" + }, + { + "address": "0x100008b30", + "value": "MSSSectionCardParameterValue::skinHue" + }, + { + "address": "0x100008b38", + "value": "MSSSectionCardParameterValue::setSkinHue:" + }, + { + "address": "0x100008b40", + "value": "MSSSectionCardParameterValue::skinSaturation" + }, + { + "address": "0x100008b48", + "value": "MSSSectionCardParameterValue::setSkinSaturation:" + }, + { + "address": "0x100008b50", + "value": "MSSSectionCardParameterValue::skinTonePreset" + }, + { + "address": "0x100008b58", + "value": "MSSSectionCardParameterValue::setSkinTonePreset:" + }, + { + "address": "0x100008b60", + "value": "MSSSectionCardParameterValue::skinEvenTone" + }, + { + "address": "0x100008b68", + "value": "MSSSectionCardParameterValue::setSkinEvenTone:" + }, + { + "address": "0x100008b70", + "value": "MSSSectionCardParameterValue::midtoneDetail" + }, + { + "address": "0x100008b78", + "value": "MSSSectionCardParameterValue::setMidtoneDetail:" + }, + { + "address": "0x100008b80", + "value": "MSSSectionCardParameterValue::featureProtection" + }, + { + "address": "0x100008b88", + "value": "MSSSectionCardParameterValue::setFeatureProtection:" + }, + { + "address": "0x100008b90", + "value": "MSSSectionCardParameterValue::featureProtectionRelease" + }, + { + "address": "0x100008b98", + "value": "MSSSectionCardParameterValue::setFeatureProtectionRelease:" + }, + { + "address": "0x100008ba0", + "value": "MSSSectionCardParameterValue::highPassDetail" + }, + { + "address": "0x100008ba8", + "value": "MSSSectionCardParameterValue::setHighPassDetail:" + }, + { + "address": "0x100008bb0", + "value": "MSSSectionCardParameterValue::teethWhitening" + }, + { + "address": "0x100008bb8", + "value": "MSSSectionCardParameterValue::setTeethWhitening:" + }, + { + "address": "0x100008bc0", + "value": "MSSSectionCardParameterValue::eyeBrightening" + }, + { + "address": "0x100008bc8", + "value": "MSSSectionCardParameterValue::setEyeBrightening:" + }, + { + "address": "0x100008bd0", + "value": "MSSSectionCardParameterValue::faceThin" + }, + { + "address": "0x100008bd8", + "value": "MSSSectionCardParameterValue::setFaceThin:" + }, + { + "address": "0x100008be0", + "value": "MSSSectionCardParameterValue::faceBigEye" + }, + { + "address": "0x100008be8", + "value": "MSSSectionCardParameterValue::setFaceBigEye:" + }, + { + "address": "0x100008bf0", + "value": "MSSSectionCardParameterValue::faceShort" + }, + { + "address": "0x100008bf8", + "value": "MSSSectionCardParameterValue::setFaceShort:" + }, + { + "address": "0x100008c00", + "value": "MSSSectionCardParameterValue::faceNarrow" + }, + { + "address": "0x100008c08", + "value": "MSSSectionCardParameterValue::setFaceNarrow:" + }, + { + "address": "0x100008c10", + "value": "MSSSectionCardParameterValue::faceChin" + }, + { + "address": "0x100008c18", + "value": "MSSSectionCardParameterValue::setFaceChin:" + }, + { + "address": "0x100008c20", + "value": "MSSSectionCardParameterValue::faceV" + }, + { + "address": "0x100008c28", + "value": "MSSSectionCardParameterValue::setFaceV:" + }, + { + "address": "0x100008c30", + "value": "MSSSectionCardParameterValue::faceJaw" + }, + { + "address": "0x100008c38", + "value": "MSSSectionCardParameterValue::setFaceJaw:" + }, + { + "address": "0x100008c40", + "value": "MSSSectionCardParameterValue::faceCheekbone" + }, + { + "address": "0x100008c48", + "value": "MSSSectionCardParameterValue::setFaceCheekbone:" + }, + { + "address": "0x100008c50", + "value": "MSSSectionCardParameterValue::faceSmallHead" + }, + { + "address": "0x100008c58", + "value": "MSSSectionCardParameterValue::setFaceSmallHead:" + }, + { + "address": "0x100008c60", + "value": "MSSSectionCardParameterValue::faceSmallHeadRange" + }, + { + "address": "0x100008c68", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadRange:" + }, + { + "address": "0x100008c70", + "value": "MSSSectionCardParameterValue::radius" + }, + { + "address": "0x100008c78", + "value": "MSSSectionCardParameterValue::setRadius:" + }, + { + "address": "0x100008c80", + "value": "MSSSectionCardParameterValue::sharpness" + }, + { + "address": "0x100008c88", + "value": "MSSSectionCardParameterValue::setSharpness:" + }, + { + "address": "0x100008c90", + "value": "MSSSectionCardParameterValue::maskSoftness" + }, + { + "address": "0x100008c98", + "value": "MSSSectionCardParameterValue::setMaskSoftness:" + }, + { + "address": "0x100008ca0", + "value": "MSSSectionCardParameterValue::maskEdgeProtect" + }, + { + "address": "0x100008ca8", + "value": "MSSSectionCardParameterValue::setMaskEdgeProtect:" + }, + { + "address": "0x100008cb0", + "value": "MSSSectionCardParameterValue::showFaceBoxes" + }, + { + "address": "0x100008cb8", + "value": "MSSSectionCardParameterValue::setShowFaceBoxes:" + }, + { + "address": "0x100008cc0", + "value": "MSSSectionCardParameterValue::showFaceTrackBox" + }, + { + "address": "0x100008cc8", + "value": "MSSSectionCardParameterValue::setShowFaceTrackBox:" + }, + { + "address": "0x100008cd0", + "value": "MSSSectionCardParameterValue::fastMultiFaceMode" + }, + { + "address": "0x100008cd8", + "value": "MSSSectionCardParameterValue::setFastMultiFaceMode:" + }, + { + "address": "0x100008ce0", + "value": "MSSSectionCardParameterValue::faceJumpGuardRange" + }, + { + "address": "0x100008ce8", + "value": "MSSSectionCardParameterValue::setFaceJumpGuardRange:" + }, + { + "address": "0x100008cf0", + "value": "MSSSectionCardParameterValue::faceSingleSelection" + }, + { + "address": "0x100008cf8", + "value": "MSSSectionCardParameterValue::setFaceSingleSelection:" + }, + { + "address": "0x100008d00", + "value": "MSSSectionCardParameterValue::faceSelectionX" + }, + { + "address": "0x100008d08", + "value": "MSSSectionCardParameterValue::setFaceSelectionX:" + }, + { + "address": "0x100008d10", + "value": "MSSSectionCardParameterValue::faceSelectionY" + }, + { + "address": "0x100008d18", + "value": "MSSSectionCardParameterValue::setFaceSelectionY:" + }, + { + "address": "0x100008d20", + "value": "MSSSectionCardParameterValue::faceSelectionRevision" + }, + { + "address": "0x100008d28", + "value": "MSSSectionCardParameterValue::setFaceSelectionRevision:" + }, + { + "address": "0x100008d30", + "value": "MSSSectionCardParameterValue::faceTrackEnabled" + }, + { + "address": "0x100008d38", + "value": "MSSSectionCardParameterValue::setFaceTrackEnabled:" + }, + { + "address": "0x100008d40", + "value": "MSSSectionCardParameterValue::faceTrackStatus" + }, + { + "address": "0x100008d48", + "value": "MSSSectionCardParameterValue::setFaceTrackStatus:" + }, + { + "address": "0x100008d50", + "value": "MSSSectionCardParameterValue::faceTrackRevision" + }, + { + "address": "0x100008d58", + "value": "MSSSectionCardParameterValue::setFaceTrackRevision:" + }, + { + "address": "0x100008d60", + "value": "MSSSectionCardParameterValue::faceTrackFrameCount" + }, + { + "address": "0x100008d68", + "value": "MSSSectionCardParameterValue::setFaceTrackFrameCount:" + }, + { + "address": "0x100008d70", + "value": "MSSSectionCardParameterValue::faceTrackSeedTimeSeconds" + }, + { + "address": "0x100008d78", + "value": "MSSSectionCardParameterValue::setFaceTrackSeedTimeSeconds:" + }, + { + "address": "0x100008d80", + "value": "MSSSectionCardParameterValue::faceTrackProgress" + }, + { + "address": "0x100008d88", + "value": "MSSSectionCardParameterValue::setFaceTrackProgress:" + }, + { + "address": "0x100008d90", + "value": "MSSSectionCardParameterValue::faceTrackAppendMode" + }, + { + "address": "0x100008d98", + "value": "MSSSectionCardParameterValue::setFaceTrackAppendMode:" + }, + { + "address": "0x100008da0", + "value": "MSSSectionCardParameterValue::faceTrackData" + }, + { + "address": "0x100008da8", + "value": "MSSSectionCardParameterValue::setFaceTrackData:" + }, + { + "address": "0x100008db0", + "value": "MSSSectionCardParameterValue::faceTrackTargetCount" + }, + { + "address": "0x100008db8", + "value": "MSSSectionCardParameterValue::setFaceTrackTargetCount:" + }, + { + "address": "0x100008dc0", + "value": "MSSSectionCardParameterValue::faceTrackActiveTargetIndex" + }, + { + "address": "0x100008dc8", + "value": "MSSSectionCardParameterValue::setFaceTrackActiveTargetIndex:" + }, + { + "address": "0x100008dd0", + "value": "MSSSectionCardParameterValue::faceTrackAnalysisTargetIndex" + }, + { + "address": "0x100008dd8", + "value": "MSSSectionCardParameterValue::setFaceTrackAnalysisTargetIndex:" + }, + { + "address": "0x100008de0", + "value": "MSSSectionCardParameterValue::faceTrackTargetPageStartIndex" + }, + { + "address": "0x100008de8", + "value": "MSSSectionCardParameterValue::setFaceTrackTargetPageStartIndex:" + }, + { + "address": "0x100008df0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Data" + }, + { + "address": "0x100008df8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Data:" + }, + { + "address": "0x100008e00", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Data" + }, + { + "address": "0x100008e08", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Data:" + }, + { + "address": "0x100008e10", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Data" + }, + { + "address": "0x100008e18", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Data:" + }, + { + "address": "0x100008e20", + "value": "MSSSectionCardParameterValue::faceTrackTargets" + }, + { + "address": "0x100008e28", + "value": "MSSSectionCardParameterValue::setFaceTrackTargets:" + }, + { + "address": "0x100008e30", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Status" + }, + { + "address": "0x100008e38", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Status:" + }, + { + "address": "0x100008e40", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Status" + }, + { + "address": "0x100008e48", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Status:" + }, + { + "address": "0x100008e50", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Status" + }, + { + "address": "0x100008e58", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Status:" + }, + { + "address": "0x100008e60", + "value": "MSSSectionCardParameterValue::faceTrackTarget1FrameCount" + }, + { + "address": "0x100008e68", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1FrameCount:" + }, + { + "address": "0x100008e70", + "value": "MSSSectionCardParameterValue::faceTrackTarget2FrameCount" + }, + { + "address": "0x100008e78", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2FrameCount:" + }, + { + "address": "0x100008e80", + "value": "MSSSectionCardParameterValue::faceTrackTarget3FrameCount" + }, + { + "address": "0x100008e88", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3FrameCount:" + }, + { + "address": "0x100008e90", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Revision" + }, + { + "address": "0x100008e98", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Revision:" + }, + { + "address": "0x100008ea0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Revision" + }, + { + "address": "0x100008ea8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Revision:" + }, + { + "address": "0x100008eb0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Revision" + }, + { + "address": "0x100008eb8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Revision:" + }, + { + "address": "0x100008ec0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Progress" + }, + { + "address": "0x100008ec8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Progress:" + }, + { + "address": "0x100008ed0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Progress" + }, + { + "address": "0x100008ed8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Progress:" + }, + { + "address": "0x100008ee0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Progress" + }, + { + "address": "0x100008ee8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Progress:" + }, + { + "address": "0x100008ef0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1HasSelection" + }, + { + "address": "0x100008ef8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1HasSelection:" + }, + { + "address": "0x100008f00", + "value": "MSSSectionCardParameterValue::faceTrackTarget2HasSelection" + }, + { + "address": "0x100008f08", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2HasSelection:" + }, + { + "address": "0x100008f10", + "value": "MSSSectionCardParameterValue::faceTrackTarget3HasSelection" + }, + { + "address": "0x100008f18", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3HasSelection:" + }, + { + "address": "0x100008f20", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionX" + }, + { + "address": "0x100008f28", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionX:" + }, + { + "address": "0x100008f30", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionX" + }, + { + "address": "0x100008f38", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionX:" + }, + { + "address": "0x100008f40", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionX" + }, + { + "address": "0x100008f48", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionX:" + }, + { + "address": "0x100008f50", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionY" + }, + { + "address": "0x100008f58", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionY:" + }, + { + "address": "0x100008f60", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionY" + }, + { + "address": "0x100008f68", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionY:" + }, + { + "address": "0x100008f70", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionY" + }, + { + "address": "0x100008f78", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionY:" + }, + { + "address": "0x100008f80", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SeedTimeSeconds" + }, + { + "address": "0x100008f88", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SeedTimeSeconds:" + }, + { + "address": "0x100008f90", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SeedTimeSeconds" + }, + { + "address": "0x100008f98", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SeedTimeSeconds:" + }, + { + "address": "0x100008fa0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SeedTimeSeconds" + }, + { + "address": "0x100008fa8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SeedTimeSeconds:" + }, + { + "address": "0x100008fb0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1HasSelectionBox" + }, + { + "address": "0x100008fb8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1HasSelectionBox:" + }, + { + "address": "0x100008fc0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2HasSelectionBox" + }, + { + "address": "0x100008fc8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2HasSelectionBox:" + }, + { + "address": "0x100008fd0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3HasSelectionBox" + }, + { + "address": "0x100008fd8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3HasSelectionBox:" + }, + { + "address": "0x100008fe0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxX" + }, + { + "address": "0x100008fe8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxX:" + }, + { + "address": "0x100008ff0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxY" + }, + { + "address": "0x100008ff8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxY:" + }, + { + "address": "0x100009000", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxW" + }, + { + "address": "0x100009008", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxW:" + }, + { + "address": "0x100009010", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxH" + }, + { + "address": "0x100009018", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxH:" + }, + { + "address": "0x100009020", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxX" + }, + { + "address": "0x100009028", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxX:" + }, + { + "address": "0x100009030", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxY" + }, + { + "address": "0x100009038", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxY:" + }, + { + "address": "0x100009040", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxW" + }, + { + "address": "0x100009048", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxW:" + }, + { + "address": "0x100009050", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxH" + }, + { + "address": "0x100009058", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxH:" + }, + { + "address": "0x100009060", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxX" + }, + { + "address": "0x100009068", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxX:" + }, + { + "address": "0x100009070", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxY" + }, + { + "address": "0x100009078", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxY:" + }, + { + "address": "0x100009080", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxW" + }, + { + "address": "0x100009088", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxW:" + }, + { + "address": "0x100009090", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxH" + }, + { + "address": "0x100009098", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxH:" + }, + { + "address": "0x1000090a0", + "value": "MSSSectionCardParameterValue::showChannelInfo" + }, + { + "address": "0x1000090a8", + "value": "MSSSectionCardParameterValue::setShowChannelInfo:" + }, + { + "address": "0x1000090b0", + "value": "MSSSectionCardParameterValue::debugChannelMode" + }, + { + "address": "0x1000090b8", + "value": "MSSSectionCardParameterValue::setDebugChannelMode:" + }, + { + "address": "0x1000090c0", + "value": "MSSSectionCardParameterValue::skinModuleEnabled" + }, + { + "address": "0x1000090c8", + "value": "MSSSectionCardParameterValue::setSkinModuleEnabled:" + }, + { + "address": "0x1000090d0", + "value": "MSSSectionCardParameterValue::toneModuleEnabled" + }, + { + "address": "0x1000090d8", + "value": "MSSSectionCardParameterValue::setToneModuleEnabled:" + }, + { + "address": "0x1000090e0", + "value": "MSSSectionCardParameterValue::faceModuleEnabled" + }, + { + "address": "0x1000090e8", + "value": "MSSSectionCardParameterValue::setFaceModuleEnabled:" + }, + { + "address": "0x1000090f0", + "value": "MSSSectionCardParameterValue::hasCommittedState" + }, + { + "address": "0x1000090f8", + "value": "MSSSectionCardParameterValue::setHasCommittedState:" + }, + { + "address": "0x100009100", + "value": "MSSSectionCardParameterValue::committedStateRevision" + }, + { + "address": "0x100009108", + "value": "MSSSectionCardParameterValue::setCommittedStateRevision:" + }, + { + "address": "0x100009110", + "value": "MSSSectionCardParameterValue::skinBrightnessEnabled" + }, + { + "address": "0x100009118", + "value": "MSSSectionCardParameterValue::setSkinBrightnessEnabled:" + }, + { + "address": "0x100009120", + "value": "MSSSectionCardParameterValue::skinHueEnabled" + }, + { + "address": "0x100009128", + "value": "MSSSectionCardParameterValue::setSkinHueEnabled:" + }, + { + "address": "0x100009130", + "value": "MSSSectionCardParameterValue::skinSaturationEnabled" + }, + { + "address": "0x100009138", + "value": "MSSSectionCardParameterValue::setSkinSaturationEnabled:" + }, + { + "address": "0x100009140", + "value": "MSSSectionCardParameterValue::skinEvenToneEnabled" + }, + { + "address": "0x100009148", + "value": "MSSSectionCardParameterValue::setSkinEvenToneEnabled:" + }, + { + "address": "0x100009150", + "value": "MSSSectionCardParameterValue::midtoneDetailEnabled" + }, + { + "address": "0x100009158", + "value": "MSSSectionCardParameterValue::setMidtoneDetailEnabled:" + }, + { + "address": "0x100009160", + "value": "MSSSectionCardParameterValue::featureProtectionEnabled" + }, + { + "address": "0x100009168", + "value": "MSSSectionCardParameterValue::setFeatureProtectionEnabled:" + }, + { + "address": "0x100009170", + "value": "MSSSectionCardParameterValue::highPassDetailEnabled" + }, + { + "address": "0x100009178", + "value": "MSSSectionCardParameterValue::setHighPassDetailEnabled:" + }, + { + "address": "0x100009180", + "value": "MSSSectionCardParameterValue::teethWhiteningEnabled" + }, + { + "address": "0x100009188", + "value": "MSSSectionCardParameterValue::setTeethWhiteningEnabled:" + }, + { + "address": "0x100009190", + "value": "MSSSectionCardParameterValue::eyeBrighteningEnabled" + }, + { + "address": "0x100009198", + "value": "MSSSectionCardParameterValue::setEyeBrighteningEnabled:" + }, + { + "address": "0x1000091a0", + "value": "MSSSectionCardParameterValue::faceThinEnabled" + }, + { + "address": "0x1000091a8", + "value": "MSSSectionCardParameterValue::setFaceThinEnabled:" + }, + { + "address": "0x1000091b0", + "value": "MSSSectionCardParameterValue::faceBigEyeEnabled" + }, + { + "address": "0x1000091b8", + "value": "MSSSectionCardParameterValue::setFaceBigEyeEnabled:" + }, + { + "address": "0x1000091c0", + "value": "MSSSectionCardParameterValue::faceShortEnabled" + }, + { + "address": "0x1000091c8", + "value": "MSSSectionCardParameterValue::setFaceShortEnabled:" + }, + { + "address": "0x1000091d0", + "value": "MSSSectionCardParameterValue::faceNarrowEnabled" + }, + { + "address": "0x1000091d8", + "value": "MSSSectionCardParameterValue::setFaceNarrowEnabled:" + }, + { + "address": "0x1000091e0", + "value": "MSSSectionCardParameterValue::faceChinEnabled" + }, + { + "address": "0x1000091e8", + "value": "MSSSectionCardParameterValue::setFaceChinEnabled:" + }, + { + "address": "0x1000091f0", + "value": "MSSSectionCardParameterValue::faceVEnabled" + }, + { + "address": "0x1000091f8", + "value": "MSSSectionCardParameterValue::setFaceVEnabled:" + }, + { + "address": "0x100009200", + "value": "MSSSectionCardParameterValue::faceJawEnabled" + }, + { + "address": "0x100009208", + "value": "MSSSectionCardParameterValue::setFaceJawEnabled:" + }, + { + "address": "0x100009210", + "value": "MSSSectionCardParameterValue::faceCheekboneEnabled" + }, + { + "address": "0x100009218", + "value": "MSSSectionCardParameterValue::setFaceCheekboneEnabled:" + }, + { + "address": "0x100009220", + "value": "MSSSectionCardParameterValue::faceSmallHeadEnabled" + }, + { + "address": "0x100009228", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadEnabled:" + }, + { + "address": "0x100009230", + "value": "MSSSectionCardParameterValue::faceSmallHeadRangeEnabled" + }, + { + "address": "0x100009238", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadRangeEnabled:" + }, + { + "address": "0x100009240", + "value": "MSSSectionCardParameterValue::radiusEnabled" + }, + { + "address": "0x100009248", + "value": "MSSSectionCardParameterValue::setRadiusEnabled:" + }, + { + "address": "0x100009250", + "value": "MSSSectionCardParameterValue::sharpnessEnabled" + }, + { + "address": "0x100009258", + "value": "MSSSectionCardParameterValue::setSharpnessEnabled:" + }, + { + "address": "0x100009260", + "value": "MSSSectionCardParameterValue::maskSoftnessEnabled" + }, + { + "address": "0x100009268", + "value": "MSSSectionCardParameterValue::setMaskSoftnessEnabled:" + }, + { + "address": "0x100009270", + "value": "MSSSectionCardParameterValue::maskEdgeProtectEnabled" + }, + { + "address": "0x100009278", + "value": "MSSSectionCardParameterValue::setMaskEdgeProtectEnabled:" + }, + { + "address": "0x100009280", + "value": "MSSSectionCardParameterValue::showFaceBoxesEnabled" + }, + { + "address": "0x100009288", + "value": "MSSSectionCardParameterValue::setShowFaceBoxesEnabled:" + }, + { + "address": "0x100009290", + "value": "MSSSectionCardParameterValue::showFaceTrackBoxEnabled" + }, + { + "address": "0x100009298", + "value": "MSSSectionCardParameterValue::setShowFaceTrackBoxEnabled:" + }, + { + "address": "0x1000092a0", + "value": "MSSSectionCardParameterValue::faceSingleSelectionEnabled" + }, + { + "address": "0x1000092a8", + "value": "MSSSectionCardParameterValue::setFaceSingleSelectionEnabled:" + }, + { + "address": "0x1000092b0", + "value": "MSSSectionCardParameterValue::showChannelInfoEnabled" + }, + { + "address": "0x1000092b8", + "value": "MSSSectionCardParameterValue::setShowChannelInfoEnabled:" + }, + { + "address": "0x1000092c0", + "value": "MSSSkinSectionCardView::initWithFrame:parameterID:" + }, + { + "address": "0x100009324", + "value": "MSSSkinSectionCardView::isFlipped" + }, + { + "address": "0x10000932c", + "value": "MSSSkinSectionCardView::isOpaque" + }, + { + "address": "0x100009334", + "value": "MSSSkinSectionCardView::intrinsicContentSize" + }, + { + "address": "0x10000934c", + "value": "MSSSkinSectionCardView::drawChipText:inRect:accentColor:" + }, + { + "address": "0x100009510", + "value": "MSSSkinSectionCardView::drawRect:" + }, + { + "address": "0x100009f6c", + "value": "MSSSkinSectionCardView::parameterID" + }, + { + "address": "0x100009f7c", + "value": "MSSSkinSectionCardView::setParameterID:" + }, + { + "address": "0x10000c18c", + "value": "MSSSkinControlPanelView::visibleControlsForSection:controlPanelValue:" + }, + { + "address": "0x100011a84", + "value": "MSSSkinControlPanelView::toggleSectionModuleForHeaderID:" + }, + { + "address": "0x100012b28", + "value": "MSSSkinControlPanelView::skinTonePresetItemsForSectionRect:" + }, + { + "address": "0x100015f90", + "value": "MSSSkinControlPanelView::drawSkinTonePresetStripInSectionRect:accentColor:selectedPreset:" + }, + { + "address": "0x100018210", + "value": "MSSSkinControlPanelView::drawSection:inRect:controls:values:controlPanelValue:" + }, + { + "address": "0x10001fc10", + "value": "MSSuperSkinSmoothingPlugIn::addParametersWithError:" + }, + { + "address": "0x1000355a0", + "value": "MSSuperSkinSmoothingPlugIn::createViewForParameterID:" + }, + { + "address": "0x100043a60", + "value": "MSSuperSkinSmoothingFaceSelectOSC::createViewForParameterID:" + }, + { + "address": "0x10007a688", + "value": "_CFErrorCreate" + }, + { + "address": "0x10007a6f4", + "value": "_CGBitmapContextCreate" + }, + { + "address": "0x10007a700", + "value": "_CGBitmapContextCreateImage" + }, + { + "address": "0x10007a70c", + "value": "_CGColorCreateGenericRGB" + }, + { + "address": "0x10007a724", + "value": "_CGColorSpaceCreateDeviceRGB" + }, + { + "address": "0x10007a730", + "value": "_CGColorSpaceCreateWithName" + }, + { + "address": "0x10007a8b0", + "value": "_CGDataProviderCreateWithData" + }, + { + "address": "0x10007a8c8", + "value": "_CGImageCreate" + }, + { + "address": "0x10007a8f8", + "value": "_CGImageSourceCreateImageAtIndex" + }, + { + "address": "0x10007a904", + "value": "_CGImageSourceCreateWithData" + }, + { + "address": "0x10007a9ac", + "value": "_CGRectIntersection" + }, + { + "address": "0x10007aa18", + "value": "_CTFontCreateWithName" + }, + { + "address": "0x10007aa24", + "value": "_CTLineCreateWithAttributedString" + }, + { + "address": "0x10007aa54", + "value": "_IORegistryEntryCreateCFProperty" + }, + { + "address": "0x10007aad8", + "value": "_MTLCreateSystemDefaultDevice" + }, + { + "address": "0x10007ab74", + "value": "_SecRequirementCreateWithString" + }, + { + "address": "0x10007ab8c", + "value": "_SecStaticCodeCreateWithPath" + }, + { + "address": "0x10007abd4", + "value": "__ZN2cv14DISOpticalFlow6createEi" + }, + { + "address": "0x10007ad24", + "value": "_dispatch_semaphore_create" + }, + { + "address": "0x10007d5a0", + "value": "objc_stub::createCGImage:fromRect:" + }, + { + "address": "0x10007d5c0", + "value": "objc_stub::createCGImage:fromRect:format:colorSpace:deferred:" + }, + { + "address": "0x10007d5e0", + "value": "objc_stub::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x10007d600", + "value": "objc_stub::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x10007d620", + "value": "objc_stub::createFileAtPath:contents:attributes:" + }, + { + "address": "0x10007dcc0", + "value": "objc_stub::drawSection:inRect:controls:values:controlPanelValue:" + }, + { + "address": "0x10007dce0", + "value": "objc_stub::drawSkinTonePresetStripInSectionRect:accentColor:selectedPreset:" + }, + { + "address": "0x10007df00", + "value": "objc_stub::ephemeralSessionConfiguration" + }, + { + "address": "0x10007f2e0", + "value": "objc_stub::initWithShape:dataType:error:" + }, + { + "address": "0x10007fc20", + "value": "objc_stub::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x100080d80", + "value": "objc_stub::sessionWithConfiguration:" + }, + { + "address": "0x100082c40", + "value": "objc_stub::shape" + }, + { + "address": "0x100082f40", + "value": "objc_stub::skinTonePresetItemsForSectionRect:" + }, + { + "address": "0x100083400", + "value": "objc_stub::toggleSectionModuleForHeaderID:" + }, + { + "address": "0x1000836e0", + "value": "objc_stub::visibleControlsForSection:controlPanelValue:" + }, + { + "address": "0x1000e0601", + "value": "MLModel::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x1000e1d07", + "value": "NSFileManager::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x1000e1d0d", + "value": "NSFileManager::createFileAtPath:contents:attributes:" + }, + { + "address": "0x1000e1d11", + "value": "NSFileManager::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x1000e3601", + "value": "NSURLSession::sessionWithConfiguration:" + }, + { + "address": "0x1000e3701", + "value": "NSURLSessionConfiguration::ephemeralSessionConfiguration" + }, + { + "address": "0x1000e3702", + "value": "NSURLSessionConfiguration::setTimeoutIntervalForRequest:" + }, + { + "address": "0x1000e3703", + "value": "NSURLSessionConfiguration::setTimeoutIntervalForResource:" + } + ], + "operation": "search_procedures", + "parameters": { + "case_sensitive": false, + "mode": "regex", + "pattern": "addParameters|build|create|Section|shape|Config|configure" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + { + "address": "EXTERNAL:0xa9", + "value": "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation::_CFErrorCreate" + }, + { + "address": "EXTERNAL:0xb2", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGBitmapContextCreate" + }, + { + "address": "EXTERNAL:0xb3", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGBitmapContextCreateImage" + }, + { + "address": "EXTERNAL:0xb4", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorCreateGenericRGB" + }, + { + "address": "EXTERNAL:0xb6", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorSpaceCreateDeviceRGB" + }, + { + "address": "EXTERNAL:0xb7", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGColorSpaceCreateWithName" + }, + { + "address": "EXTERNAL:0xd7", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGDataProviderCreateWithData" + }, + { + "address": "EXTERNAL:0xd9", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGImageCreate" + }, + { + "address": "EXTERNAL:0xdd", + "value": "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO::_CGImageSourceCreateImageAtIndex" + }, + { + "address": "EXTERNAL:0xde", + "value": "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO::_CGImageSourceCreateWithData" + }, + { + "address": "EXTERNAL:0xec", + "value": "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics::_CGRectIntersection" + }, + { + "address": "EXTERNAL:0xf5", + "value": "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText::_CTFontCreateWithName" + }, + { + "address": "EXTERNAL:0xf6", + "value": "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText::_CTLineCreateWithAttributedString" + }, + { + "address": "EXTERNAL:0xfa", + "value": "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit::_IORegistryEntryCreateCFProperty" + }, + { + "address": "EXTERNAL:0x105", + "value": "/System/Library/Frameworks/Metal.framework/Versions/A/Metal::_MTLCreateSystemDefaultDevice" + }, + { + "address": "EXTERNAL:0x112", + "value": "/System/Library/Frameworks/Security.framework/Versions/A/Security::_SecRequirementCreateWithString" + }, + { + "address": "EXTERNAL:0x114", + "value": "/System/Library/Frameworks/Security.framework/Versions/A/Security::_SecStaticCodeCreateWithPath" + }, + { + "address": "EXTERNAL:0x11a", + "value": "@rpath/libopencv_video.413.dylib::__ZN2cv14DISOpticalFlow6createEi" + }, + { + "address": "EXTERNAL:0x136", + "value": "/usr/lib/libSystem.B.dylib::_dispatch_semaphore_create" + }, + { + "address": "EXTERNAL:0x2f3", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::ephemeralSessionConfiguration" + }, + { + "address": "EXTERNAL:0x2f6", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::sessionWithConfiguration:" + }, + { + "address": "EXTERNAL:0x371", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "EXTERNAL:0x377", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createFileAtPath:contents:attributes:" + }, + { + "address": "EXTERNAL:0x38c", + "value": "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "EXTERNAL:0x38f", + "value": "/System/Library/Frameworks/CoreML.framework/Versions/A/CoreML::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x100003dbc", + "value": "MSSSectionCardParameterValue::dealloc" + }, + { + "address": "0x100003e38", + "value": "MSSSectionCardParameterValue::init" + }, + { + "address": "0x100003f4c", + "value": "MSSSectionCardParameterValue::defaultValue" + }, + { + "address": "0x100003f60", + "value": "MSSSectionCardParameterValue::supportsSecureCoding" + }, + { + "address": "0x100003f68", + "value": "MSSSectionCardParameterValue::encodeWithCoder:" + }, + { + "address": "0x100004c08", + "value": "MSSSectionCardParameterValue::initWithCoder:" + }, + { + "address": "0x100006344", + "value": "MSSSectionCardParameterValue::copyWithZone:" + }, + { + "address": "0x100006c30", + "value": "MSSSectionCardParameterValue::interpolateBetween:withWeight:" + }, + { + "address": "0x100007a14", + "value": "MSSSectionCardParameterValue::isEqual:" + }, + { + "address": "0x100008b20", + "value": "MSSSectionCardParameterValue::skinBrightness" + }, + { + "address": "0x100008b28", + "value": "MSSSectionCardParameterValue::setSkinBrightness:" + }, + { + "address": "0x100008b30", + "value": "MSSSectionCardParameterValue::skinHue" + }, + { + "address": "0x100008b38", + "value": "MSSSectionCardParameterValue::setSkinHue:" + }, + { + "address": "0x100008b40", + "value": "MSSSectionCardParameterValue::skinSaturation" + }, + { + "address": "0x100008b48", + "value": "MSSSectionCardParameterValue::setSkinSaturation:" + }, + { + "address": "0x100008b50", + "value": "MSSSectionCardParameterValue::skinTonePreset" + }, + { + "address": "0x100008b58", + "value": "MSSSectionCardParameterValue::setSkinTonePreset:" + }, + { + "address": "0x100008b60", + "value": "MSSSectionCardParameterValue::skinEvenTone" + }, + { + "address": "0x100008b68", + "value": "MSSSectionCardParameterValue::setSkinEvenTone:" + }, + { + "address": "0x100008b70", + "value": "MSSSectionCardParameterValue::midtoneDetail" + }, + { + "address": "0x100008b78", + "value": "MSSSectionCardParameterValue::setMidtoneDetail:" + }, + { + "address": "0x100008b80", + "value": "MSSSectionCardParameterValue::featureProtection" + }, + { + "address": "0x100008b88", + "value": "MSSSectionCardParameterValue::setFeatureProtection:" + }, + { + "address": "0x100008b90", + "value": "MSSSectionCardParameterValue::featureProtectionRelease" + }, + { + "address": "0x100008b98", + "value": "MSSSectionCardParameterValue::setFeatureProtectionRelease:" + }, + { + "address": "0x100008ba0", + "value": "MSSSectionCardParameterValue::highPassDetail" + }, + { + "address": "0x100008ba8", + "value": "MSSSectionCardParameterValue::setHighPassDetail:" + }, + { + "address": "0x100008bb0", + "value": "MSSSectionCardParameterValue::teethWhitening" + }, + { + "address": "0x100008bb8", + "value": "MSSSectionCardParameterValue::setTeethWhitening:" + }, + { + "address": "0x100008bc0", + "value": "MSSSectionCardParameterValue::eyeBrightening" + }, + { + "address": "0x100008bc8", + "value": "MSSSectionCardParameterValue::setEyeBrightening:" + }, + { + "address": "0x100008bd0", + "value": "MSSSectionCardParameterValue::faceThin" + }, + { + "address": "0x100008bd8", + "value": "MSSSectionCardParameterValue::setFaceThin:" + }, + { + "address": "0x100008be0", + "value": "MSSSectionCardParameterValue::faceBigEye" + }, + { + "address": "0x100008be8", + "value": "MSSSectionCardParameterValue::setFaceBigEye:" + }, + { + "address": "0x100008bf0", + "value": "MSSSectionCardParameterValue::faceShort" + }, + { + "address": "0x100008bf8", + "value": "MSSSectionCardParameterValue::setFaceShort:" + }, + { + "address": "0x100008c00", + "value": "MSSSectionCardParameterValue::faceNarrow" + }, + { + "address": "0x100008c08", + "value": "MSSSectionCardParameterValue::setFaceNarrow:" + }, + { + "address": "0x100008c10", + "value": "MSSSectionCardParameterValue::faceChin" + }, + { + "address": "0x100008c18", + "value": "MSSSectionCardParameterValue::setFaceChin:" + }, + { + "address": "0x100008c20", + "value": "MSSSectionCardParameterValue::faceV" + }, + { + "address": "0x100008c28", + "value": "MSSSectionCardParameterValue::setFaceV:" + }, + { + "address": "0x100008c30", + "value": "MSSSectionCardParameterValue::faceJaw" + }, + { + "address": "0x100008c38", + "value": "MSSSectionCardParameterValue::setFaceJaw:" + }, + { + "address": "0x100008c40", + "value": "MSSSectionCardParameterValue::faceCheekbone" + }, + { + "address": "0x100008c48", + "value": "MSSSectionCardParameterValue::setFaceCheekbone:" + }, + { + "address": "0x100008c50", + "value": "MSSSectionCardParameterValue::faceSmallHead" + }, + { + "address": "0x100008c58", + "value": "MSSSectionCardParameterValue::setFaceSmallHead:" + }, + { + "address": "0x100008c60", + "value": "MSSSectionCardParameterValue::faceSmallHeadRange" + }, + { + "address": "0x100008c68", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadRange:" + }, + { + "address": "0x100008c70", + "value": "MSSSectionCardParameterValue::radius" + }, + { + "address": "0x100008c78", + "value": "MSSSectionCardParameterValue::setRadius:" + }, + { + "address": "0x100008c80", + "value": "MSSSectionCardParameterValue::sharpness" + }, + { + "address": "0x100008c88", + "value": "MSSSectionCardParameterValue::setSharpness:" + }, + { + "address": "0x100008c90", + "value": "MSSSectionCardParameterValue::maskSoftness" + }, + { + "address": "0x100008c98", + "value": "MSSSectionCardParameterValue::setMaskSoftness:" + }, + { + "address": "0x100008ca0", + "value": "MSSSectionCardParameterValue::maskEdgeProtect" + }, + { + "address": "0x100008ca8", + "value": "MSSSectionCardParameterValue::setMaskEdgeProtect:" + }, + { + "address": "0x100008cb0", + "value": "MSSSectionCardParameterValue::showFaceBoxes" + }, + { + "address": "0x100008cb8", + "value": "MSSSectionCardParameterValue::setShowFaceBoxes:" + }, + { + "address": "0x100008cc0", + "value": "MSSSectionCardParameterValue::showFaceTrackBox" + }, + { + "address": "0x100008cc8", + "value": "MSSSectionCardParameterValue::setShowFaceTrackBox:" + }, + { + "address": "0x100008cd0", + "value": "MSSSectionCardParameterValue::fastMultiFaceMode" + }, + { + "address": "0x100008cd8", + "value": "MSSSectionCardParameterValue::setFastMultiFaceMode:" + }, + { + "address": "0x100008ce0", + "value": "MSSSectionCardParameterValue::faceJumpGuardRange" + }, + { + "address": "0x100008ce8", + "value": "MSSSectionCardParameterValue::setFaceJumpGuardRange:" + }, + { + "address": "0x100008cf0", + "value": "MSSSectionCardParameterValue::faceSingleSelection" + }, + { + "address": "0x100008cf8", + "value": "MSSSectionCardParameterValue::setFaceSingleSelection:" + }, + { + "address": "0x100008d00", + "value": "MSSSectionCardParameterValue::faceSelectionX" + }, + { + "address": "0x100008d08", + "value": "MSSSectionCardParameterValue::setFaceSelectionX:" + }, + { + "address": "0x100008d10", + "value": "MSSSectionCardParameterValue::faceSelectionY" + }, + { + "address": "0x100008d18", + "value": "MSSSectionCardParameterValue::setFaceSelectionY:" + }, + { + "address": "0x100008d20", + "value": "MSSSectionCardParameterValue::faceSelectionRevision" + }, + { + "address": "0x100008d28", + "value": "MSSSectionCardParameterValue::setFaceSelectionRevision:" + }, + { + "address": "0x100008d30", + "value": "MSSSectionCardParameterValue::faceTrackEnabled" + }, + { + "address": "0x100008d38", + "value": "MSSSectionCardParameterValue::setFaceTrackEnabled:" + }, + { + "address": "0x100008d40", + "value": "MSSSectionCardParameterValue::faceTrackStatus" + }, + { + "address": "0x100008d48", + "value": "MSSSectionCardParameterValue::setFaceTrackStatus:" + }, + { + "address": "0x100008d50", + "value": "MSSSectionCardParameterValue::faceTrackRevision" + }, + { + "address": "0x100008d58", + "value": "MSSSectionCardParameterValue::setFaceTrackRevision:" + }, + { + "address": "0x100008d60", + "value": "MSSSectionCardParameterValue::faceTrackFrameCount" + }, + { + "address": "0x100008d68", + "value": "MSSSectionCardParameterValue::setFaceTrackFrameCount:" + }, + { + "address": "0x100008d70", + "value": "MSSSectionCardParameterValue::faceTrackSeedTimeSeconds" + }, + { + "address": "0x100008d78", + "value": "MSSSectionCardParameterValue::setFaceTrackSeedTimeSeconds:" + }, + { + "address": "0x100008d80", + "value": "MSSSectionCardParameterValue::faceTrackProgress" + }, + { + "address": "0x100008d88", + "value": "MSSSectionCardParameterValue::setFaceTrackProgress:" + }, + { + "address": "0x100008d90", + "value": "MSSSectionCardParameterValue::faceTrackAppendMode" + }, + { + "address": "0x100008d98", + "value": "MSSSectionCardParameterValue::setFaceTrackAppendMode:" + }, + { + "address": "0x100008da0", + "value": "MSSSectionCardParameterValue::faceTrackData" + }, + { + "address": "0x100008da8", + "value": "MSSSectionCardParameterValue::setFaceTrackData:" + }, + { + "address": "0x100008db0", + "value": "MSSSectionCardParameterValue::faceTrackTargetCount" + }, + { + "address": "0x100008db8", + "value": "MSSSectionCardParameterValue::setFaceTrackTargetCount:" + }, + { + "address": "0x100008dc0", + "value": "MSSSectionCardParameterValue::faceTrackActiveTargetIndex" + }, + { + "address": "0x100008dc8", + "value": "MSSSectionCardParameterValue::setFaceTrackActiveTargetIndex:" + }, + { + "address": "0x100008dd0", + "value": "MSSSectionCardParameterValue::faceTrackAnalysisTargetIndex" + }, + { + "address": "0x100008dd8", + "value": "MSSSectionCardParameterValue::setFaceTrackAnalysisTargetIndex:" + }, + { + "address": "0x100008de0", + "value": "MSSSectionCardParameterValue::faceTrackTargetPageStartIndex" + }, + { + "address": "0x100008de8", + "value": "MSSSectionCardParameterValue::setFaceTrackTargetPageStartIndex:" + }, + { + "address": "0x100008df0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Data" + }, + { + "address": "0x100008df8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Data:" + }, + { + "address": "0x100008e00", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Data" + }, + { + "address": "0x100008e08", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Data:" + }, + { + "address": "0x100008e10", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Data" + }, + { + "address": "0x100008e18", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Data:" + }, + { + "address": "0x100008e20", + "value": "MSSSectionCardParameterValue::faceTrackTargets" + }, + { + "address": "0x100008e28", + "value": "MSSSectionCardParameterValue::setFaceTrackTargets:" + }, + { + "address": "0x100008e30", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Status" + }, + { + "address": "0x100008e38", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Status:" + }, + { + "address": "0x100008e40", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Status" + }, + { + "address": "0x100008e48", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Status:" + }, + { + "address": "0x100008e50", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Status" + }, + { + "address": "0x100008e58", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Status:" + }, + { + "address": "0x100008e60", + "value": "MSSSectionCardParameterValue::faceTrackTarget1FrameCount" + }, + { + "address": "0x100008e68", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1FrameCount:" + }, + { + "address": "0x100008e70", + "value": "MSSSectionCardParameterValue::faceTrackTarget2FrameCount" + }, + { + "address": "0x100008e78", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2FrameCount:" + }, + { + "address": "0x100008e80", + "value": "MSSSectionCardParameterValue::faceTrackTarget3FrameCount" + }, + { + "address": "0x100008e88", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3FrameCount:" + }, + { + "address": "0x100008e90", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Revision" + }, + { + "address": "0x100008e98", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Revision:" + }, + { + "address": "0x100008ea0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Revision" + }, + { + "address": "0x100008ea8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Revision:" + }, + { + "address": "0x100008eb0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Revision" + }, + { + "address": "0x100008eb8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Revision:" + }, + { + "address": "0x100008ec0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1Progress" + }, + { + "address": "0x100008ec8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1Progress:" + }, + { + "address": "0x100008ed0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2Progress" + }, + { + "address": "0x100008ed8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2Progress:" + }, + { + "address": "0x100008ee0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3Progress" + }, + { + "address": "0x100008ee8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3Progress:" + }, + { + "address": "0x100008ef0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1HasSelection" + }, + { + "address": "0x100008ef8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1HasSelection:" + }, + { + "address": "0x100008f00", + "value": "MSSSectionCardParameterValue::faceTrackTarget2HasSelection" + }, + { + "address": "0x100008f08", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2HasSelection:" + }, + { + "address": "0x100008f10", + "value": "MSSSectionCardParameterValue::faceTrackTarget3HasSelection" + }, + { + "address": "0x100008f18", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3HasSelection:" + }, + { + "address": "0x100008f20", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionX" + }, + { + "address": "0x100008f28", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionX:" + }, + { + "address": "0x100008f30", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionX" + }, + { + "address": "0x100008f38", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionX:" + }, + { + "address": "0x100008f40", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionX" + }, + { + "address": "0x100008f48", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionX:" + }, + { + "address": "0x100008f50", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionY" + }, + { + "address": "0x100008f58", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionY:" + }, + { + "address": "0x100008f60", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionY" + }, + { + "address": "0x100008f68", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionY:" + }, + { + "address": "0x100008f70", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionY" + }, + { + "address": "0x100008f78", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionY:" + }, + { + "address": "0x100008f80", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SeedTimeSeconds" + }, + { + "address": "0x100008f88", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SeedTimeSeconds:" + }, + { + "address": "0x100008f90", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SeedTimeSeconds" + }, + { + "address": "0x100008f98", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SeedTimeSeconds:" + }, + { + "address": "0x100008fa0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SeedTimeSeconds" + }, + { + "address": "0x100008fa8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SeedTimeSeconds:" + }, + { + "address": "0x100008fb0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1HasSelectionBox" + }, + { + "address": "0x100008fb8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1HasSelectionBox:" + }, + { + "address": "0x100008fc0", + "value": "MSSSectionCardParameterValue::faceTrackTarget2HasSelectionBox" + }, + { + "address": "0x100008fc8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2HasSelectionBox:" + }, + { + "address": "0x100008fd0", + "value": "MSSSectionCardParameterValue::faceTrackTarget3HasSelectionBox" + }, + { + "address": "0x100008fd8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3HasSelectionBox:" + }, + { + "address": "0x100008fe0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxX" + }, + { + "address": "0x100008fe8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxX:" + }, + { + "address": "0x100008ff0", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxY" + }, + { + "address": "0x100008ff8", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxY:" + }, + { + "address": "0x100009000", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxW" + }, + { + "address": "0x100009008", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxW:" + }, + { + "address": "0x100009010", + "value": "MSSSectionCardParameterValue::faceTrackTarget1SelectionBoxH" + }, + { + "address": "0x100009018", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget1SelectionBoxH:" + }, + { + "address": "0x100009020", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxX" + }, + { + "address": "0x100009028", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxX:" + }, + { + "address": "0x100009030", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxY" + }, + { + "address": "0x100009038", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxY:" + }, + { + "address": "0x100009040", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxW" + }, + { + "address": "0x100009048", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxW:" + }, + { + "address": "0x100009050", + "value": "MSSSectionCardParameterValue::faceTrackTarget2SelectionBoxH" + }, + { + "address": "0x100009058", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget2SelectionBoxH:" + }, + { + "address": "0x100009060", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxX" + }, + { + "address": "0x100009068", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxX:" + }, + { + "address": "0x100009070", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxY" + }, + { + "address": "0x100009078", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxY:" + }, + { + "address": "0x100009080", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxW" + }, + { + "address": "0x100009088", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxW:" + }, + { + "address": "0x100009090", + "value": "MSSSectionCardParameterValue::faceTrackTarget3SelectionBoxH" + }, + { + "address": "0x100009098", + "value": "MSSSectionCardParameterValue::setFaceTrackTarget3SelectionBoxH:" + }, + { + "address": "0x1000090a0", + "value": "MSSSectionCardParameterValue::showChannelInfo" + }, + { + "address": "0x1000090a8", + "value": "MSSSectionCardParameterValue::setShowChannelInfo:" + }, + { + "address": "0x1000090b0", + "value": "MSSSectionCardParameterValue::debugChannelMode" + }, + { + "address": "0x1000090b8", + "value": "MSSSectionCardParameterValue::setDebugChannelMode:" + }, + { + "address": "0x1000090c0", + "value": "MSSSectionCardParameterValue::skinModuleEnabled" + }, + { + "address": "0x1000090c8", + "value": "MSSSectionCardParameterValue::setSkinModuleEnabled:" + }, + { + "address": "0x1000090d0", + "value": "MSSSectionCardParameterValue::toneModuleEnabled" + }, + { + "address": "0x1000090d8", + "value": "MSSSectionCardParameterValue::setToneModuleEnabled:" + }, + { + "address": "0x1000090e0", + "value": "MSSSectionCardParameterValue::faceModuleEnabled" + }, + { + "address": "0x1000090e8", + "value": "MSSSectionCardParameterValue::setFaceModuleEnabled:" + }, + { + "address": "0x1000090f0", + "value": "MSSSectionCardParameterValue::hasCommittedState" + }, + { + "address": "0x1000090f8", + "value": "MSSSectionCardParameterValue::setHasCommittedState:" + }, + { + "address": "0x100009100", + "value": "MSSSectionCardParameterValue::committedStateRevision" + }, + { + "address": "0x100009108", + "value": "MSSSectionCardParameterValue::setCommittedStateRevision:" + }, + { + "address": "0x100009110", + "value": "MSSSectionCardParameterValue::skinBrightnessEnabled" + }, + { + "address": "0x100009118", + "value": "MSSSectionCardParameterValue::setSkinBrightnessEnabled:" + }, + { + "address": "0x100009120", + "value": "MSSSectionCardParameterValue::skinHueEnabled" + }, + { + "address": "0x100009128", + "value": "MSSSectionCardParameterValue::setSkinHueEnabled:" + }, + { + "address": "0x100009130", + "value": "MSSSectionCardParameterValue::skinSaturationEnabled" + }, + { + "address": "0x100009138", + "value": "MSSSectionCardParameterValue::setSkinSaturationEnabled:" + }, + { + "address": "0x100009140", + "value": "MSSSectionCardParameterValue::skinEvenToneEnabled" + }, + { + "address": "0x100009148", + "value": "MSSSectionCardParameterValue::setSkinEvenToneEnabled:" + }, + { + "address": "0x100009150", + "value": "MSSSectionCardParameterValue::midtoneDetailEnabled" + }, + { + "address": "0x100009158", + "value": "MSSSectionCardParameterValue::setMidtoneDetailEnabled:" + }, + { + "address": "0x100009160", + "value": "MSSSectionCardParameterValue::featureProtectionEnabled" + }, + { + "address": "0x100009168", + "value": "MSSSectionCardParameterValue::setFeatureProtectionEnabled:" + }, + { + "address": "0x100009170", + "value": "MSSSectionCardParameterValue::highPassDetailEnabled" + }, + { + "address": "0x100009178", + "value": "MSSSectionCardParameterValue::setHighPassDetailEnabled:" + }, + { + "address": "0x100009180", + "value": "MSSSectionCardParameterValue::teethWhiteningEnabled" + }, + { + "address": "0x100009188", + "value": "MSSSectionCardParameterValue::setTeethWhiteningEnabled:" + }, + { + "address": "0x100009190", + "value": "MSSSectionCardParameterValue::eyeBrighteningEnabled" + }, + { + "address": "0x100009198", + "value": "MSSSectionCardParameterValue::setEyeBrighteningEnabled:" + }, + { + "address": "0x1000091a0", + "value": "MSSSectionCardParameterValue::faceThinEnabled" + }, + { + "address": "0x1000091a8", + "value": "MSSSectionCardParameterValue::setFaceThinEnabled:" + }, + { + "address": "0x1000091b0", + "value": "MSSSectionCardParameterValue::faceBigEyeEnabled" + }, + { + "address": "0x1000091b8", + "value": "MSSSectionCardParameterValue::setFaceBigEyeEnabled:" + }, + { + "address": "0x1000091c0", + "value": "MSSSectionCardParameterValue::faceShortEnabled" + }, + { + "address": "0x1000091c8", + "value": "MSSSectionCardParameterValue::setFaceShortEnabled:" + }, + { + "address": "0x1000091d0", + "value": "MSSSectionCardParameterValue::faceNarrowEnabled" + }, + { + "address": "0x1000091d8", + "value": "MSSSectionCardParameterValue::setFaceNarrowEnabled:" + }, + { + "address": "0x1000091e0", + "value": "MSSSectionCardParameterValue::faceChinEnabled" + }, + { + "address": "0x1000091e8", + "value": "MSSSectionCardParameterValue::setFaceChinEnabled:" + }, + { + "address": "0x1000091f0", + "value": "MSSSectionCardParameterValue::faceVEnabled" + }, + { + "address": "0x1000091f8", + "value": "MSSSectionCardParameterValue::setFaceVEnabled:" + }, + { + "address": "0x100009200", + "value": "MSSSectionCardParameterValue::faceJawEnabled" + }, + { + "address": "0x100009208", + "value": "MSSSectionCardParameterValue::setFaceJawEnabled:" + }, + { + "address": "0x100009210", + "value": "MSSSectionCardParameterValue::faceCheekboneEnabled" + }, + { + "address": "0x100009218", + "value": "MSSSectionCardParameterValue::setFaceCheekboneEnabled:" + }, + { + "address": "0x100009220", + "value": "MSSSectionCardParameterValue::faceSmallHeadEnabled" + }, + { + "address": "0x100009228", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadEnabled:" + }, + { + "address": "0x100009230", + "value": "MSSSectionCardParameterValue::faceSmallHeadRangeEnabled" + }, + { + "address": "0x100009238", + "value": "MSSSectionCardParameterValue::setFaceSmallHeadRangeEnabled:" + }, + { + "address": "0x100009240", + "value": "MSSSectionCardParameterValue::radiusEnabled" + }, + { + "address": "0x100009248", + "value": "MSSSectionCardParameterValue::setRadiusEnabled:" + }, + { + "address": "0x100009250", + "value": "MSSSectionCardParameterValue::sharpnessEnabled" + }, + { + "address": "0x100009258", + "value": "MSSSectionCardParameterValue::setSharpnessEnabled:" + }, + { + "address": "0x100009260", + "value": "MSSSectionCardParameterValue::maskSoftnessEnabled" + }, + { + "address": "0x100009268", + "value": "MSSSectionCardParameterValue::setMaskSoftnessEnabled:" + }, + { + "address": "0x100009270", + "value": "MSSSectionCardParameterValue::maskEdgeProtectEnabled" + }, + { + "address": "0x100009278", + "value": "MSSSectionCardParameterValue::setMaskEdgeProtectEnabled:" + }, + { + "address": "0x100009280", + "value": "MSSSectionCardParameterValue::showFaceBoxesEnabled" + }, + { + "address": "0x100009288", + "value": "MSSSectionCardParameterValue::setShowFaceBoxesEnabled:" + }, + { + "address": "0x100009290", + "value": "MSSSectionCardParameterValue::showFaceTrackBoxEnabled" + }, + { + "address": "0x100009298", + "value": "MSSSectionCardParameterValue::setShowFaceTrackBoxEnabled:" + }, + { + "address": "0x1000092a0", + "value": "MSSSectionCardParameterValue::faceSingleSelectionEnabled" + }, + { + "address": "0x1000092a8", + "value": "MSSSectionCardParameterValue::setFaceSingleSelectionEnabled:" + }, + { + "address": "0x1000092b0", + "value": "MSSSectionCardParameterValue::showChannelInfoEnabled" + }, + { + "address": "0x1000092b8", + "value": "MSSSectionCardParameterValue::setShowChannelInfoEnabled:" + }, + { + "address": "0x1000092c0", + "value": "MSSSkinSectionCardView::initWithFrame:parameterID:" + }, + { + "address": "0x100009324", + "value": "MSSSkinSectionCardView::isFlipped" + }, + { + "address": "0x10000932c", + "value": "MSSSkinSectionCardView::isOpaque" + }, + { + "address": "0x100009334", + "value": "MSSSkinSectionCardView::intrinsicContentSize" + }, + { + "address": "0x10000934c", + "value": "MSSSkinSectionCardView::drawChipText:inRect:accentColor:" + }, + { + "address": "0x100009510", + "value": "MSSSkinSectionCardView::drawRect:" + }, + { + "address": "0x100009f6c", + "value": "MSSSkinSectionCardView::parameterID" + }, + { + "address": "0x100009f7c", + "value": "MSSSkinSectionCardView::setParameterID:" + }, + { + "address": "0x10000c18c", + "value": "MSSSkinControlPanelView::visibleControlsForSection:controlPanelValue:" + }, + { + "address": "0x100011a84", + "value": "MSSSkinControlPanelView::toggleSectionModuleForHeaderID:" + }, + { + "address": "0x100012b28", + "value": "MSSSkinControlPanelView::skinTonePresetItemsForSectionRect:" + }, + { + "address": "0x100015f90", + "value": "MSSSkinControlPanelView::drawSkinTonePresetStripInSectionRect:accentColor:selectedPreset:" + }, + { + "address": "0x100018210", + "value": "MSSSkinControlPanelView::drawSection:inRect:controls:values:controlPanelValue:" + }, + { + "address": "0x10001fc10", + "value": "MSSuperSkinSmoothingPlugIn::addParametersWithError:" + }, + { + "address": "0x1000355a0", + "value": "MSSuperSkinSmoothingPlugIn::createViewForParameterID:" + }, + { + "address": "0x100043a60", + "value": "MSSuperSkinSmoothingFaceSelectOSC::createViewForParameterID:" + }, + { + "address": "0x10007a688", + "value": "_CFErrorCreate" + }, + { + "address": "0x10007a6f4", + "value": "_CGBitmapContextCreate" + }, + { + "address": "0x10007a700", + "value": "_CGBitmapContextCreateImage" + }, + { + "address": "0x10007a70c", + "value": "_CGColorCreateGenericRGB" + }, + { + "address": "0x10007a724", + "value": "_CGColorSpaceCreateDeviceRGB" + }, + { + "address": "0x10007a730", + "value": "_CGColorSpaceCreateWithName" + }, + { + "address": "0x10007a8b0", + "value": "_CGDataProviderCreateWithData" + }, + { + "address": "0x10007a8c8", + "value": "_CGImageCreate" + }, + { + "address": "0x10007a8f8", + "value": "_CGImageSourceCreateImageAtIndex" + }, + { + "address": "0x10007a904", + "value": "_CGImageSourceCreateWithData" + }, + { + "address": "0x10007a9ac", + "value": "_CGRectIntersection" + }, + { + "address": "0x10007aa18", + "value": "_CTFontCreateWithName" + }, + { + "address": "0x10007aa24", + "value": "_CTLineCreateWithAttributedString" + }, + { + "address": "0x10007aa54", + "value": "_IORegistryEntryCreateCFProperty" + }, + { + "address": "0x10007aad8", + "value": "_MTLCreateSystemDefaultDevice" + }, + { + "address": "0x10007ab74", + "value": "_SecRequirementCreateWithString" + }, + { + "address": "0x10007ab8c", + "value": "_SecStaticCodeCreateWithPath" + }, + { + "address": "0x10007abd4", + "value": "__ZN2cv14DISOpticalFlow6createEi" + }, + { + "address": "0x10007ad24", + "value": "_dispatch_semaphore_create" + }, + { + "address": "0x10007d5a0", + "value": "objc_stub::createCGImage:fromRect:" + }, + { + "address": "0x10007d5c0", + "value": "objc_stub::createCGImage:fromRect:format:colorSpace:deferred:" + }, + { + "address": "0x10007d5e0", + "value": "objc_stub::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x10007d600", + "value": "objc_stub::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x10007d620", + "value": "objc_stub::createFileAtPath:contents:attributes:" + }, + { + "address": "0x10007dcc0", + "value": "objc_stub::drawSection:inRect:controls:values:controlPanelValue:" + }, + { + "address": "0x10007dce0", + "value": "objc_stub::drawSkinTonePresetStripInSectionRect:accentColor:selectedPreset:" + }, + { + "address": "0x10007df00", + "value": "objc_stub::ephemeralSessionConfiguration" + }, + { + "address": "0x10007f2e0", + "value": "objc_stub::initWithShape:dataType:error:" + }, + { + "address": "0x10007fc20", + "value": "objc_stub::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x100080d80", + "value": "objc_stub::sessionWithConfiguration:" + }, + { + "address": "0x100082c40", + "value": "objc_stub::shape" + }, + { + "address": "0x100082f40", + "value": "objc_stub::skinTonePresetItemsForSectionRect:" + }, + { + "address": "0x100083400", + "value": "objc_stub::toggleSectionModuleForHeaderID:" + }, + { + "address": "0x1000836e0", + "value": "objc_stub::visibleControlsForSection:controlPanelValue:" + }, + { + "address": "0x1000e0601", + "value": "MLModel::modelWithContentsOfURL:configuration:error:" + }, + { + "address": "0x1000e1d07", + "value": "NSFileManager::createDirectoryAtPath:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x1000e1d0d", + "value": "NSFileManager::createFileAtPath:contents:attributes:" + }, + { + "address": "0x1000e1d11", + "value": "NSFileManager::createDirectoryAtURL:withIntermediateDirectories:attributes:error:" + }, + { + "address": "0x1000e3601", + "value": "NSURLSession::sessionWithConfiguration:" + }, + { + "address": "0x1000e3701", + "value": "NSURLSessionConfiguration::ephemeralSessionConfiguration" + }, + { + "address": "0x1000e3702", + "value": "NSURLSessionConfiguration::setTimeoutIntervalForRequest:" + }, + { + "address": "0x1000e3703", + "value": "NSURLSessionConfiguration::setTimeoutIntervalForResource:" + } + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_449313a9a5467175197706c4d94896f07c7083084fba2a3b066dcd8f4b7fa19b", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\ndouble FUN_100042f9c(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n ID param_5)\n\n{\n undefined *puVar1;\n ID IVar2;\n ID IVar3;\n ID self;\n ID IVar4;\n ulong uVar5;\n ulong extraout_d0;\n ulong extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n double dVar6;\n double dVar7;\n double dVar8;\n double dVar9;\n double dVar10;\n double dVar11;\n double dVar12;\n double dVar13;\n \n IVar2 = param_5;\n _CGRectIsNull();\n puVar1 = PTR__CGRectNull_1000a8148;\n if (((((IVar2 & 1) != 0) || (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (IVar2 & 1) != 0))\n || (dVar10 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)) ||\n (dVar10 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)) {\n param_1 = *(double *)puVar1;\n param_2 = *(undefined8 *)(puVar1 + 8);\n param_3 = *(undefined8 *)(puVar1 + 0x10);\n param_4 = *(undefined8 *)(puVar1 + 0x18);\n }\n else {\n FUN_10001bef0(param_1,param_2,param_3,param_4);\n }\n _CGRectIsNull(param_1,param_2,param_3,param_4);\n if ((((IVar2 & 1) != 0) || (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (IVar2 & 1) != 0)) ||\n ((dVar10 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16 ||\n (dVar10 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)))) {\n IVar3 = objc_stub::count(param_5);\n IVar2 = IVar3;\n if (0x4b < IVar3) {\n IVar2 = 0x4c;\n }\n if (IVar3 != 0) {\n uVar5 = 0;\n IVar3 = 0;\n dVar10 = 1.7976931348623157e+308;\n dVar11 = 1.7976931348623157e+308;\n dVar8 = -1.7976931348623157e+308;\n dVar6 = -1.7976931348623157e+308;\n do {\n self = objc_stub::objectAtIndexedSubscript_(param_5,IVar3);\n IVar4 = 0;\n dVar12 = dVar8;\n dVar13 = dVar6;\n if (((self != 0) && (IVar4 = objc_stub::count(self), 1 < IVar4)) &&\n (((IVar4 = objc_stub::X(self), (extraout_d0 & 0x7fffffffffffffff) < 0x7ff0000000000000 &&\n (((IVar4 = objc_stub::Y(self),\n (extraout_d0_00 & 0x7fffffffffffffff) < 0x7ff0000000000000 &&\n (IVar4 = objc_stub::X(self), -0.2 <= extraout_d0_01)) &&\n (IVar4 = objc_stub::X(self), extraout_d0_02 <= 1.2)))) &&\n ((IVar4 = objc_stub::Y(self), -0.2 <= extraout_d0_03 &&\n (IVar4 = objc_stub::Y(self), extraout_d0_04 <= 1.2)))))) {\n objc_stub::X(self);\n if (extraout_d0_05 <= dVar10) {\n dVar10 = extraout_d0_05;\n }\n objc_stub::X(self);\n dVar12 = extraout_d0_06;\n if (extraout_d0_06 <= dVar8) {\n dVar12 = dVar8;\n }\n objc_stub::Y(self);\n if (extraout_d0_07 <= dVar11) {\n dVar11 = extraout_d0_07;\n }\n IVar4 = objc_stub::Y(self);\n dVar13 = extraout_d0_08;\n if (extraout_d0_08 <= dVar6) {\n dVar13 = dVar6;\n }\n uVar5 = uVar5 + 1;\n }\n IVar3 = IVar3 + 1;\n dVar8 = dVar12;\n dVar6 = dVar13;\n } while (IVar2 != IVar3);\n if (((7 < uVar5) && (dVar10 < dVar12)) && (dVar11 < dVar13)) {\n dVar6 = (dVar12 - dVar10) * 0.1;\n dVar8 = 0.004;\n if (0.004 <= dVar6) {\n dVar8 = dVar6;\n }\n dVar7 = (dVar13 - dVar11) * 0.14;\n dVar6 = 0.005;\n if (0.005 <= dVar7) {\n dVar6 = dVar7;\n }\n dVar7 = dVar10 - dVar8;\n dVar9 = dVar11 - dVar6;\n dVar10 = (dVar12 - dVar10) + dVar8 * 2.0;\n dVar11 = (dVar13 - dVar11) + dVar6 * 2.0;\n FUN_10001bef0(dVar7,dVar9,dVar10,dVar11);\n _CGRectIsNull();\n if (((((IVar4 & 1) == 0) && (_CGRectIsEmpty(dVar7,dVar9,dVar10,dVar11), (IVar4 & 1) == 0))\n && (dVar8 = dVar7, _CGRectGetWidth(dVar7,dVar9,dVar10,dVar11),\n 2.220446049250313e-16 < dVar8)) &&\n (dVar8 = dVar7, _CGRectGetHeight(dVar7,dVar9,dVar10,dVar11),\n 2.220446049250313e-16 < dVar8)) {\n return dVar7;\n }\n }\n }\n param_1 = *(double *)puVar1;\n }\n return param_1;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100042f9c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\ndouble FUN_100042f9c(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n ID param_5)\n\n{\n undefined *puVar1;\n ID IVar2;\n ID IVar3;\n ID self;\n ID IVar4;\n ulong uVar5;\n ulong extraout_d0;\n ulong extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n double dVar6;\n double dVar7;\n double dVar8;\n double dVar9;\n double dVar10;\n double dVar11;\n double dVar12;\n double dVar13;\n \n IVar2 = param_5;\n _CGRectIsNull();\n puVar1 = PTR__CGRectNull_1000a8148;\n if (((((IVar2 & 1) != 0) || (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (IVar2 & 1) != 0))\n || (dVar10 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)) ||\n (dVar10 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)) {\n param_1 = *(double *)puVar1;\n param_2 = *(undefined8 *)(puVar1 + 8);\n param_3 = *(undefined8 *)(puVar1 + 0x10);\n param_4 = *(undefined8 *)(puVar1 + 0x18);\n }\n else {\n FUN_10001bef0(param_1,param_2,param_3,param_4);\n }\n _CGRectIsNull(param_1,param_2,param_3,param_4);\n if ((((IVar2 & 1) != 0) || (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (IVar2 & 1) != 0)) ||\n ((dVar10 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16 ||\n (dVar10 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar10 <= 2.220446049250313e-16)))) {\n IVar3 = objc_stub::count(param_5);\n IVar2 = IVar3;\n if (0x4b < IVar3) {\n IVar2 = 0x4c;\n }\n if (IVar3 != 0) {\n uVar5 = 0;\n IVar3 = 0;\n dVar10 = 1.7976931348623157e+308;\n dVar11 = 1.7976931348623157e+308;\n dVar8 = -1.7976931348623157e+308;\n dVar6 = -1.7976931348623157e+308;\n do {\n self = objc_stub::objectAtIndexedSubscript_(param_5,IVar3);\n IVar4 = 0;\n dVar12 = dVar8;\n dVar13 = dVar6;\n if (((self != 0) && (IVar4 = objc_stub::count(self), 1 < IVar4)) &&\n (((IVar4 = objc_stub::X(self), (extraout_d0 & 0x7fffffffffffffff) < 0x7ff0000000000000 &&\n (((IVar4 = objc_stub::Y(self),\n (extraout_d0_00 & 0x7fffffffffffffff) < 0x7ff0000000000000 &&\n (IVar4 = objc_stub::X(self), -0.2 <= extraout_d0_01)) &&\n (IVar4 = objc_stub::X(self), extraout_d0_02 <= 1.2)))) &&\n ((IVar4 = objc_stub::Y(self), -0.2 <= extraout_d0_03 &&\n (IVar4 = objc_stub::Y(self), extraout_d0_04 <= 1.2)))))) {\n objc_stub::X(self);\n if (extraout_d0_05 <= dVar10) {\n dVar10 = extraout_d0_05;\n }\n objc_stub::X(self);\n dVar12 = extraout_d0_06;\n if (extraout_d0_06 <= dVar8) {\n dVar12 = dVar8;\n }\n objc_stub::Y(self);\n if (extraout_d0_07 <= dVar11) {\n dVar11 = extraout_d0_07;\n }\n IVar4 = objc_stub::Y(self);\n dVar13 = extraout_d0_08;\n if (extraout_d0_08 <= dVar6) {\n dVar13 = dVar6;\n }\n uVar5 = uVar5 + 1;\n }\n IVar3 = IVar3 + 1;\n dVar8 = dVar12;\n dVar6 = dVar13;\n } while (IVar2 != IVar3);\n if (((7 < uVar5) && (dVar10 < dVar12)) && (dVar11 < dVar13)) {\n dVar6 = (dVar12 - dVar10) * 0.1;\n dVar8 = 0.004;\n if (0.004 <= dVar6) {\n dVar8 = dVar6;\n }\n dVar7 = (dVar13 - dVar11) * 0.14;\n dVar6 = 0.005;\n if (0.005 <= dVar7) {\n dVar6 = dVar7;\n }\n dVar7 = dVar10 - dVar8;\n dVar9 = dVar11 - dVar6;\n dVar10 = (dVar12 - dVar10) + dVar8 * 2.0;\n dVar11 = (dVar13 - dVar11) + dVar6 * 2.0;\n FUN_10001bef0(dVar7,dVar9,dVar10,dVar11);\n _CGRectIsNull();\n if (((((IVar4 & 1) == 0) && (_CGRectIsEmpty(dVar7,dVar9,dVar10,dVar11), (IVar4 & 1) == 0))\n && (dVar8 = dVar7, _CGRectGetWidth(dVar7,dVar9,dVar10,dVar11),\n 2.220446049250313e-16 < dVar8)) &&\n (dVar8 = dVar7, _CGRectGetHeight(dVar7,dVar9,dVar10,dVar11),\n 2.220446049250313e-16 < dVar8)) {\n return dVar7;\n }\n }\n }\n param_1 = *(double *)puVar1;\n }\n return param_1;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_45acad6cf9082ec6b10eddf30f1e7635335035a21348c7510076aeec821d4d34", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nbool FUN_1000549d4(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n double param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,\n ulong param_9)\n\n{\n double dVar1;\n double dVar2;\n double dVar3;\n double dVar4;\n double dVar5;\n \n _CGRectIsNull();\n if (((((param_9 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_9 & 1) == 0)) &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (((dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1 &&\n (_CGRectIsNull(param_5,param_6,param_7,param_8), (param_9 & 1) == 0)) &&\n ((_CGRectIsEmpty(param_5,param_6,param_7,param_8), (param_9 & 1) == 0 &&\n ((dVar1 = param_5, _CGRectGetWidth(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_5, _CGRectGetHeight(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1)))))))) {\n _CGRectStandardize(param_1,param_2,param_3,param_4);\n _CGRectIntersection();\n _CGRectStandardize(param_5,param_6,param_7,param_8);\n _CGRectIntersection();\n _CGRectIsNull(param_1,param_2,param_3,param_4);\n if (((param_9 & 1) == 0) &&\n (((((_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_9 & 1) == 0 &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n ((_CGRectIsNull(param_5,param_6,param_7,param_8), (param_9 & 1) == 0 &&\n (_CGRectIsEmpty(param_5,param_6,param_7,param_8), (param_9 & 1) == 0)))) &&\n ((dVar1 = param_5, _CGRectGetWidth(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_5, _CGRectGetHeight(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1)))))) {\n dVar1 = param_1;\n FUN_10001a910(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n dVar2 = param_1;\n _CGRectGetMidX(param_1,param_2,param_3,param_4);\n _CGRectGetMidY(param_1,param_2,param_3,param_4);\n dVar3 = param_5;\n _CGRectGetMidX(param_5,param_6,param_7,param_8);\n dVar4 = param_5;\n _CGRectGetMidY(param_5,param_6,param_7,param_8);\n dVar5 = param_5;\n _CGRectGetWidth(param_5,param_6,param_7,param_8);\n _CGRectGetHeight(param_5,param_6,param_7,param_8);\n if (param_5 <= dVar5) {\n param_5 = dVar5;\n }\n dVar5 = param_5 * 0.82;\n if (param_5 * 0.82 <= 0.04) {\n dVar5 = 0.04;\n }\n if (dVar5 < SQRT((param_1 - dVar4) * (param_1 - dVar4) + (dVar2 - dVar3) * (dVar2 - dVar3))) {\n return 0.08 <= dVar1;\n }\n return true;\n }\n }\n return false;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x1000549d4" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nbool FUN_1000549d4(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n double param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,\n ulong param_9)\n\n{\n double dVar1;\n double dVar2;\n double dVar3;\n double dVar4;\n double dVar5;\n \n _CGRectIsNull();\n if (((((param_9 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_9 & 1) == 0)) &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (((dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1 &&\n (_CGRectIsNull(param_5,param_6,param_7,param_8), (param_9 & 1) == 0)) &&\n ((_CGRectIsEmpty(param_5,param_6,param_7,param_8), (param_9 & 1) == 0 &&\n ((dVar1 = param_5, _CGRectGetWidth(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_5, _CGRectGetHeight(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1)))))))) {\n _CGRectStandardize(param_1,param_2,param_3,param_4);\n _CGRectIntersection();\n _CGRectStandardize(param_5,param_6,param_7,param_8);\n _CGRectIntersection();\n _CGRectIsNull(param_1,param_2,param_3,param_4);\n if (((param_9 & 1) == 0) &&\n (((((_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_9 & 1) == 0 &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n ((_CGRectIsNull(param_5,param_6,param_7,param_8), (param_9 & 1) == 0 &&\n (_CGRectIsEmpty(param_5,param_6,param_7,param_8), (param_9 & 1) == 0)))) &&\n ((dVar1 = param_5, _CGRectGetWidth(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_5, _CGRectGetHeight(param_5,param_6,param_7,param_8),\n 2.220446049250313e-16 < dVar1)))))) {\n dVar1 = param_1;\n FUN_10001a910(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n dVar2 = param_1;\n _CGRectGetMidX(param_1,param_2,param_3,param_4);\n _CGRectGetMidY(param_1,param_2,param_3,param_4);\n dVar3 = param_5;\n _CGRectGetMidX(param_5,param_6,param_7,param_8);\n dVar4 = param_5;\n _CGRectGetMidY(param_5,param_6,param_7,param_8);\n dVar5 = param_5;\n _CGRectGetWidth(param_5,param_6,param_7,param_8);\n _CGRectGetHeight(param_5,param_6,param_7,param_8);\n if (param_5 <= dVar5) {\n param_5 = dVar5;\n }\n dVar5 = param_5 * 0.82;\n if (param_5 * 0.82 <= 0.04) {\n dVar5 = 0.04;\n }\n if (dVar5 < SQRT((param_1 - dVar4) * (param_1 - dVar4) + (dVar2 - dVar3) * (dVar2 - dVar3))) {\n return 0.08 <= dVar1;\n }\n return true;\n }\n }\n return false;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_4c6688f53462d794893ab766a368b6b156fc6cea9bc11c801c358cba420bce53", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000860c0", + "bytes_hex": "0000000000805640", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000860c0", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000860c0", + "bytes_hex": "0000000000805640", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_4d3e7e7dc8aa21347adbd0f0847fab13e8b69462bd5e6adf3657cbc0c1998266", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* Function Stack Size: 0x18 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::addParametersWithError_(ID param_1,SEL param_2,ID *param_3)\n\n{\n cfstringStruct *pcVar1;\n ID self;\n ID IVar2;\n class_t *pcVar3;\n ID IVar4;\n ID IVar5;\n cfstringStruct *pcVar6;\n \n self = objc_stub::apiForProtocol_\n (*(ID *)(param_1 + 8),&objc::protocol_t::FxParameterCreationAPI_v5);\n if (self == 0) {\n if (param_3 != (ID *)0x0) {\n pcVar6 = &cf_UnabletogetFxParameterCreationAPI_v5;\n FUN_10001fb70();\n *param_3 = (ID)pcVar6;\n }\n goto LAB_1000203e0;\n }\n IVar2 = MSSSectionCardParameterValue::defaultValue\n ((ID)&objc::class_t::MSSSectionCardParameterValue);\n objc_stub::addCustomParameterWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf___,0xd2,IVar2,0x861);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0x3ff0000000000000,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,\n &cf_xv___,1,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_rN_,2,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x4014000000000000,0,0x4014000000000000,0x3ff0000000000000,&cf_r,0x29,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_xvz_,0xc,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_N_Ob,0x1e,0x23)\n ;\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf__r_SOb,0x11,\n 0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf__vYr,0x1f,0x23)\n ;\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_Nf_ySOo_,10,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_hKmFh,0x13,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_hKmFhr_,0x23,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cfstringStruct_1000ac2a0,0x27,0,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0x3ff8000000000000,0x3ff0000000000000,0x4010000000000000,0x3ff0000000000000,\n 0x4010000000000000,0x3fa999999999999a,&cf_28V,0x28,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_USNb,0x14,0,0x23);\n objc_stub::addPointParameterWithName_parameterID_defaultX_defaultY_parameterFlags_\n (self,0x3fe0000000000000,0x3fe0000000000000,&cf_8p,0x15,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3ff0000000000000,&cf_S__W,0xd,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_SlrS,0xb,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_xv_jWW,0x2a,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cfstringStruct_1000ac380,0x2b,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf__v8_jWW,0x2c,1,0x23);\n pcVar3 = &objc::class_t::MSSuperSkinSmoothingPlugIn;\n _objc_opt_class(&objc::class_t::MSSuperSkinSmoothingPlugIn);\n IVar2 = NSBundle::bundleForClass_((ID)&_OBJC_CLASS___NSBundle,pcVar3);\n IVar4 = NSBundle::objectForInfoDictionaryKey_(IVar2,&cf_CFBundleShortVersionString);\n IVar2 = NSBundle::objectForInfoDictionaryKey_(IVar2,&cf_infoString);\n IVar5 = NSBundle::length(IVar4);\n if ((IVar5 == 0) || (IVar5 = NSBundle::length(IVar2), IVar5 == 0)) {\n IVar4 = NSBundle::length(IVar4);\n if ((IVar4 != 0) || (IVar2 = NSBundle::length(IVar2), IVar2 != 0)) {\n pcVar6 = &cf_Build__;\n goto override_prt_1000203bc_6e7d234f;\n }\n pcVar6 = &cf_Buildinfounavailable;\n }\n else {\n pcVar6 = &cf_Build______;\noverride_prt_1000203bc_6e7d234f:\n pcVar6 = (cfstringStruct *)NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,pcVar6);\n }\n pcVar1 = &cf___;\n if (pcVar6 != (cfstringStruct *)0x0) {\n pcVar1 = pcVar6;\n }\n objc_stub::addStringParameterWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_Hr_gOo_,6,pcVar1,0x37);\nLAB_1000203e0:\n return (bool)(self != 0);\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10001fc10" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\n/* Function Stack Size: 0x18 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::addParametersWithError_(ID param_1,SEL param_2,ID *param_3)\n\n{\n cfstringStruct *pcVar1;\n ID self;\n ID IVar2;\n class_t *pcVar3;\n ID IVar4;\n ID IVar5;\n cfstringStruct *pcVar6;\n \n self = objc_stub::apiForProtocol_\n (*(ID *)(param_1 + 8),&objc::protocol_t::FxParameterCreationAPI_v5);\n if (self == 0) {\n if (param_3 != (ID *)0x0) {\n pcVar6 = &cf_UnabletogetFxParameterCreationAPI_v5;\n FUN_10001fb70();\n *param_3 = (ID)pcVar6;\n }\n goto LAB_1000203e0;\n }\n IVar2 = MSSSectionCardParameterValue::defaultValue\n ((ID)&objc::class_t::MSSSectionCardParameterValue);\n objc_stub::addCustomParameterWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf___,0xd2,IVar2,0x861);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0x3ff0000000000000,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,\n &cf_xv___,1,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_rN_,2,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x4014000000000000,0,0x4014000000000000,0x3ff0000000000000,&cf_r,0x29,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_xvz_,0xc,0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_N_Ob,0x1e,0x23)\n ;\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf__r_SOb,0x11,\n 0x23);\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf__vYr,0x1f,0x23)\n ;\n objc_stub::\n addPercentSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3f847ae147ae147b,&cf_Nf_ySOo_,10,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_hKmFh,0x13,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_hKmFhr_,0x23,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cfstringStruct_1000ac2a0,0x27,0,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0x3ff8000000000000,0x3ff0000000000000,0x4010000000000000,0x3ff0000000000000,\n 0x4010000000000000,0x3fa999999999999a,&cf_28V,0x28,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_USNb,0x14,0,0x23);\n objc_stub::addPointParameterWithName_parameterID_defaultX_defaultY_parameterFlags_\n (self,0x3fe0000000000000,0x3fe0000000000000,&cf_8p,0x15,0x23);\n objc_stub::\n addFloatSliderWithName_parameterID_defaultValue_parameterMin_parameterMax_sliderMin_sliderMax_delta_parameterFlags_\n (self,0,0,0x3ff0000000000000,0,0x3ff0000000000000,0x3ff0000000000000,&cf_S__W,0xd,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_SlrS,0xb,0,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_xv_jWW,0x2a,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cfstringStruct_1000ac380,0x2b,1,0x23);\n objc_stub::addToggleButtonWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf__v8_jWW,0x2c,1,0x23);\n pcVar3 = &objc::class_t::MSSuperSkinSmoothingPlugIn;\n _objc_opt_class(&objc::class_t::MSSuperSkinSmoothingPlugIn);\n IVar2 = NSBundle::bundleForClass_((ID)&_OBJC_CLASS___NSBundle,pcVar3);\n IVar4 = NSBundle::objectForInfoDictionaryKey_(IVar2,&cf_CFBundleShortVersionString);\n IVar2 = NSBundle::objectForInfoDictionaryKey_(IVar2,&cf_infoString);\n IVar5 = NSBundle::length(IVar4);\n if ((IVar5 == 0) || (IVar5 = NSBundle::length(IVar2), IVar5 == 0)) {\n IVar4 = NSBundle::length(IVar4);\n if ((IVar4 != 0) || (IVar2 = NSBundle::length(IVar2), IVar2 != 0)) {\n pcVar6 = &cf_Build__;\n goto override_prt_1000203bc_6e7d234f;\n }\n pcVar6 = &cf_Buildinfounavailable;\n }\n else {\n pcVar6 = &cf_Build______;\noverride_prt_1000203bc_6e7d234f:\n pcVar6 = (cfstringStruct *)NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,pcVar6);\n }\n pcVar1 = &cf___;\n if (pcVar6 != (cfstringStruct *)0x0) {\n pcVar1 = pcVar6;\n }\n objc_stub::addStringParameterWithName_parameterID_defaultValue_parameterFlags_\n (self,&cf_Hr_gOo_,6,pcVar1,0x37);\nLAB_1000203e0:\n return (bool)(self != 0);\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_5304cf54726c9130ad4d83b03feb1d4aeaee58790e37f37f541b9621a180c70e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x100029d34 to 0x10002d838 FUN_10002d838 (external=false, thunk=false, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "Ghidra Listing reports a terminal call at 0x100029d48 to 0x10002d838 FUN_10002d838 (external=false, thunk=false, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_100029d20(ID param_1)\n\n{\n if (param_1 != 0) {\n objc_stub::boundingBox(param_1);\n FUN_10002d838();\n return;\n }\n FUN_10002d838(*(undefined8 *)PTR__CGRectNull_1000a8148,\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 8),\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x10),\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18));\n return;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100029d20" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100029d34 to 0x10002d838 FUN_10002d838 (external=false, thunk=false, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "Ghidra Listing reports a terminal call at 0x100029d48 to 0x10002d838 FUN_10002d838 (external=false, thunk=false, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "\nvoid FUN_100029d20(ID param_1)\n\n{\n if (param_1 != 0) {\n objc_stub::boundingBox(param_1);\n FUN_10002d838();\n return;\n }\n FUN_10002d838(*(undefined8 *)PTR__CGRectNull_1000a8148,\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 8),\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x10),\n *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18));\n return;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_579370aa1c2e4630fac75921ae4fe62413194477c0e5991040d1181237cdfbee", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nID FUN_10003b730(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n long param_5,ID param_6,undefined8 *param_7)\n\n{\n undefined8 *puVar1;\n ID IVar2;\n undefined8 extraout_d0;\n undefined8 uVar3;\n undefined8 uVar4;\n undefined8 uVar5;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 local_60;\n undefined8 uStack_58;\n undefined8 local_50;\n \n if ((param_5 != 0) && ((*(uint *)((long)param_7 + 0xc) & 0x1d) == 1)) {\n if ((*(uint *)(param_5 + 0x14) & 0x1d) == 1) {\n uStack_58 = *(undefined8 *)(param_5 + 0x10);\n local_60 = *(undefined8 *)(param_5 + 8);\n local_50 = *(undefined8 *)(param_5 + 0x18);\n uStack_78 = param_7[1];\n local_80 = *param_7;\n local_70 = param_7[2];\n puVar1 = &local_60;\n uVar3 = param_2;\n uVar4 = param_3;\n uVar5 = param_4;\n _CMTimeCompare(puVar1,&local_80);\n if ((int)puVar1 == 0) {\n IVar2 = objc_stub::extent(param_6);\n _CGRectEqualToRect(*(undefined8 *)(param_5 + 0x20),*(undefined8 *)(param_5 + 0x28),\n *(undefined8 *)(param_5 + 0x30),*(undefined8 *)(param_5 + 0x38),\n extraout_d0,uVar3,uVar4,uVar5);\n if ((int)IVar2 == 0) {\n return IVar2;\n }\n _CGRectEqualToRect(*(undefined8 *)(param_5 + 0x40),*(undefined8 *)(param_5 + 0x48),\n *(undefined8 *)(param_5 + 0x50),*(undefined8 *)(param_5 + 0x58),param_1,\n param_2,param_3,param_4);\n return IVar2;\n }\n }\n return 0;\n }\n return 0;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003b730" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nID FUN_10003b730(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n long param_5,ID param_6,undefined8 *param_7)\n\n{\n undefined8 *puVar1;\n ID IVar2;\n undefined8 extraout_d0;\n undefined8 uVar3;\n undefined8 uVar4;\n undefined8 uVar5;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 local_60;\n undefined8 uStack_58;\n undefined8 local_50;\n \n if ((param_5 != 0) && ((*(uint *)((long)param_7 + 0xc) & 0x1d) == 1)) {\n if ((*(uint *)(param_5 + 0x14) & 0x1d) == 1) {\n uStack_58 = *(undefined8 *)(param_5 + 0x10);\n local_60 = *(undefined8 *)(param_5 + 8);\n local_50 = *(undefined8 *)(param_5 + 0x18);\n uStack_78 = param_7[1];\n local_80 = *param_7;\n local_70 = param_7[2];\n puVar1 = &local_60;\n uVar3 = param_2;\n uVar4 = param_3;\n uVar5 = param_4;\n _CMTimeCompare(puVar1,&local_80);\n if ((int)puVar1 == 0) {\n IVar2 = objc_stub::extent(param_6);\n _CGRectEqualToRect(*(undefined8 *)(param_5 + 0x20),*(undefined8 *)(param_5 + 0x28),\n *(undefined8 *)(param_5 + 0x30),*(undefined8 *)(param_5 + 0x38),\n extraout_d0,uVar3,uVar4,uVar5);\n if ((int)IVar2 == 0) {\n return IVar2;\n }\n _CGRectEqualToRect(*(undefined8 *)(param_5 + 0x40),*(undefined8 *)(param_5 + 0x48),\n *(undefined8 *)(param_5 + 0x50),*(undefined8 *)(param_5 + 0x58),param_1,\n param_2,param_3,param_4);\n return IVar2;\n }\n }\n return 0;\n }\n return 0;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_5822e17dfb0413e77933c4b0a774b80a74615dd3f1908dffdfff86a6a0546711", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + { + "address": "0x1000028f4", + "value": "FxMTLDeviceCacheItem::faceThinPipelineState" + }, + { + "address": "0x1000028fc", + "value": "FxMTLDeviceCacheItem::faceThinOffsetMapPipelineState" + }, + { + "address": "0x100002904", + "value": "FxMTLDeviceCacheItem::faceThinOffsetBlurHPipelineState" + }, + { + "address": "0x10000290c", + "value": "FxMTLDeviceCacheItem::faceThinOffsetBlurVPipelineState" + }, + { + "address": "0x100002914", + "value": "FxMTLDeviceCacheItem::faceThinOffsetApplyPipelineState" + }, + { + "address": "0x10000291c", + "value": "FxMTLDeviceCacheItem::faceThinMaskPreviewPipelineState" + }, + { + "address": "0x100002ec0", + "value": "FxMTLDeviceCache::faceThinPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003038", + "value": "FxMTLDeviceCache::faceThinOffsetMapPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x1000031b0", + "value": "FxMTLDeviceCache::faceThinOffsetBlurHPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003328", + "value": "FxMTLDeviceCache::faceThinOffsetBlurVPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x1000034a0", + "value": "FxMTLDeviceCache::faceThinOffsetApplyPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003790", + "value": "FxMTLDeviceCache::faceThinMaskPreviewPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100008bd0", + "value": "MSSSectionCardParameterValue::faceThin" + }, + { + "address": "0x100008bd8", + "value": "MSSSectionCardParameterValue::setFaceThin:" + }, + { + "address": "0x100008c00", + "value": "MSSSectionCardParameterValue::faceNarrow" + }, + { + "address": "0x100008c08", + "value": "MSSSectionCardParameterValue::setFaceNarrow:" + }, + { + "address": "0x1000091a0", + "value": "MSSSectionCardParameterValue::faceThinEnabled" + }, + { + "address": "0x1000091a8", + "value": "MSSSectionCardParameterValue::setFaceThinEnabled:" + }, + { + "address": "0x1000091d0", + "value": "MSSSectionCardParameterValue::faceNarrowEnabled" + }, + { + "address": "0x1000091d8", + "value": "MSSSectionCardParameterValue::setFaceNarrowEnabled:" + }, + { + "address": "0x10001a198", + "value": "MSSuperSkinSmoothingPlugIn::mss_faceThinRememberedPointsForBox:renderTime:source:" + }, + { + "address": "0x10001b6b8", + "value": "MSSuperSkinSmoothingPlugIn::mss_faceThinRenderTimeCanUpdateMemory:" + }, + { + "address": "0x10001b7a0", + "value": "MSSuperSkinSmoothingPlugIn::mss_rememberFaceThinPoints:forBox:renderTime:source:" + }, + { + "address": "0x10001be00", + "value": "MSSuperSkinSmoothingPlugIn::mss_rememberFaceThinPointSets:boxes:renderTime:source:" + }, + { + "address": "0x10001c048", + "value": "MSSuperSkinSmoothingPlugIn::mss_resetFaceThinTransientStateForReason:call:renderTime:sourceRect:destinationRect:tileRect:" + }, + { + "address": "0x10002179c", + "value": "MSSuperSkinSmoothingPlugIn::renderDestinationImage:sourceImages:pluginState:atTime:error:" + }, + { + "address": "0x10007e100", + "value": "objc_stub::faceNarrow" + }, + { + "address": "0x10007e120", + "value": "objc_stub::faceNarrowEnabled" + }, + { + "address": "0x10007e2a0", + "value": "objc_stub::faceThin" + }, + { + "address": "0x10007e2c0", + "value": "objc_stub::faceThinEnabled" + }, + { + "address": "0x10007e2e0", + "value": "objc_stub::faceThinMaskPreviewPipelineState" + }, + { + "address": "0x10007e300", + "value": "objc_stub::faceThinOffsetApplyPipelineState" + }, + { + "address": "0x10007e320", + "value": "objc_stub::faceThinOffsetBlurHPipelineState" + }, + { + "address": "0x10007e340", + "value": "objc_stub::faceThinOffsetBlurVPipelineState" + }, + { + "address": "0x10007e360", + "value": "objc_stub::faceThinOffsetMapPipelineState" + }, + { + "address": "0x10007e380", + "value": "objc_stub::faceThinPipelineState" + }, + { + "address": "0x10007e3a0", + "value": "objc_stub::faceThinPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x10007fd80", + "value": "objc_stub::mss_faceThinRenderTimeCanUpdateMemory:" + }, + { + "address": "0x10007fea0", + "value": "objc_stub::mss_rememberFaceThinPoints:forBox:renderTime:source:" + }, + { + "address": "0x10007ff00", + "value": "objc_stub::mss_resetFaceThinTransientStateForReason:call:renderTime:sourceRect:destinationRect:tileRect:" + }, + { + "address": "0x100081320", + "value": "objc_stub::setFaceNarrow:" + }, + { + "address": "0x100081340", + "value": "objc_stub::setFaceNarrowEnabled:" + }, + { + "address": "0x1000814c0", + "value": "objc_stub::setFaceThin:" + }, + { + "address": "0x1000814e0", + "value": "objc_stub::setFaceThinEnabled:" + }, + { + "address": "0x1000e0301", + "value": "CIWarpKernel::kernelWithString:" + } + ], + "operation": "search_procedures", + "parameters": { + "case_sensitive": false, + "mode": "regex", + "pattern": "FaceThin|Warp|Narrow|RenderDestination" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + { + "address": "0x1000028f4", + "value": "FxMTLDeviceCacheItem::faceThinPipelineState" + }, + { + "address": "0x1000028fc", + "value": "FxMTLDeviceCacheItem::faceThinOffsetMapPipelineState" + }, + { + "address": "0x100002904", + "value": "FxMTLDeviceCacheItem::faceThinOffsetBlurHPipelineState" + }, + { + "address": "0x10000290c", + "value": "FxMTLDeviceCacheItem::faceThinOffsetBlurVPipelineState" + }, + { + "address": "0x100002914", + "value": "FxMTLDeviceCacheItem::faceThinOffsetApplyPipelineState" + }, + { + "address": "0x10000291c", + "value": "FxMTLDeviceCacheItem::faceThinMaskPreviewPipelineState" + }, + { + "address": "0x100002ec0", + "value": "FxMTLDeviceCache::faceThinPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003038", + "value": "FxMTLDeviceCache::faceThinOffsetMapPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x1000031b0", + "value": "FxMTLDeviceCache::faceThinOffsetBlurHPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003328", + "value": "FxMTLDeviceCache::faceThinOffsetBlurVPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x1000034a0", + "value": "FxMTLDeviceCache::faceThinOffsetApplyPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100003790", + "value": "FxMTLDeviceCache::faceThinMaskPreviewPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x100008bd0", + "value": "MSSSectionCardParameterValue::faceThin" + }, + { + "address": "0x100008bd8", + "value": "MSSSectionCardParameterValue::setFaceThin:" + }, + { + "address": "0x100008c00", + "value": "MSSSectionCardParameterValue::faceNarrow" + }, + { + "address": "0x100008c08", + "value": "MSSSectionCardParameterValue::setFaceNarrow:" + }, + { + "address": "0x1000091a0", + "value": "MSSSectionCardParameterValue::faceThinEnabled" + }, + { + "address": "0x1000091a8", + "value": "MSSSectionCardParameterValue::setFaceThinEnabled:" + }, + { + "address": "0x1000091d0", + "value": "MSSSectionCardParameterValue::faceNarrowEnabled" + }, + { + "address": "0x1000091d8", + "value": "MSSSectionCardParameterValue::setFaceNarrowEnabled:" + }, + { + "address": "0x10001a198", + "value": "MSSuperSkinSmoothingPlugIn::mss_faceThinRememberedPointsForBox:renderTime:source:" + }, + { + "address": "0x10001b6b8", + "value": "MSSuperSkinSmoothingPlugIn::mss_faceThinRenderTimeCanUpdateMemory:" + }, + { + "address": "0x10001b7a0", + "value": "MSSuperSkinSmoothingPlugIn::mss_rememberFaceThinPoints:forBox:renderTime:source:" + }, + { + "address": "0x10001be00", + "value": "MSSuperSkinSmoothingPlugIn::mss_rememberFaceThinPointSets:boxes:renderTime:source:" + }, + { + "address": "0x10001c048", + "value": "MSSuperSkinSmoothingPlugIn::mss_resetFaceThinTransientStateForReason:call:renderTime:sourceRect:destinationRect:tileRect:" + }, + { + "address": "0x10002179c", + "value": "MSSuperSkinSmoothingPlugIn::renderDestinationImage:sourceImages:pluginState:atTime:error:" + }, + { + "address": "0x10007e100", + "value": "objc_stub::faceNarrow" + }, + { + "address": "0x10007e120", + "value": "objc_stub::faceNarrowEnabled" + }, + { + "address": "0x10007e2a0", + "value": "objc_stub::faceThin" + }, + { + "address": "0x10007e2c0", + "value": "objc_stub::faceThinEnabled" + }, + { + "address": "0x10007e2e0", + "value": "objc_stub::faceThinMaskPreviewPipelineState" + }, + { + "address": "0x10007e300", + "value": "objc_stub::faceThinOffsetApplyPipelineState" + }, + { + "address": "0x10007e320", + "value": "objc_stub::faceThinOffsetBlurHPipelineState" + }, + { + "address": "0x10007e340", + "value": "objc_stub::faceThinOffsetBlurVPipelineState" + }, + { + "address": "0x10007e360", + "value": "objc_stub::faceThinOffsetMapPipelineState" + }, + { + "address": "0x10007e380", + "value": "objc_stub::faceThinPipelineState" + }, + { + "address": "0x10007e3a0", + "value": "objc_stub::faceThinPipelineStateWithRegistryID:pixelFormat:" + }, + { + "address": "0x10007fd80", + "value": "objc_stub::mss_faceThinRenderTimeCanUpdateMemory:" + }, + { + "address": "0x10007fea0", + "value": "objc_stub::mss_rememberFaceThinPoints:forBox:renderTime:source:" + }, + { + "address": "0x10007ff00", + "value": "objc_stub::mss_resetFaceThinTransientStateForReason:call:renderTime:sourceRect:destinationRect:tileRect:" + }, + { + "address": "0x100081320", + "value": "objc_stub::setFaceNarrow:" + }, + { + "address": "0x100081340", + "value": "objc_stub::setFaceNarrowEnabled:" + }, + { + "address": "0x1000814c0", + "value": "objc_stub::setFaceThin:" + }, + { + "address": "0x1000814e0", + "value": "objc_stub::setFaceThinEnabled:" + }, + { + "address": "0x1000e0301", + "value": "CIWarpKernel::kernelWithString:" + } + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_5e6a4333ca31b1e9b29cc9d97856c505a05ba54a4c93e0819109c9619dbdc188", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10003f01c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nulong FUN_10003ec44(double param_1,double param_2,double param_3,double param_4,undefined8 param_5,\n undefined8 param_6,ID param_7,int param_8)\n\n{\n bool bVar1;\n int iVar2;\n ulong uVar3;\n ID IVar4;\n ulong uVar5;\n ulong uVar6;\n ulong uVar7;\n long lVar8;\n ID IVar9;\n double dVar10;\n double extraout_d0;\n double dVar11;\n double dVar12;\n double dVar13;\n double extraout_d0_00;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n undefined8 uVar18;\n undefined8 uVar19;\n undefined8 uVar20;\n undefined8 uVar21;\n double dVar22;\n double dVar23;\n double local_190;\n double local_188;\n undefined8 local_170;\n long lStack_168;\n long *local_160;\n undefined8 uStack_158;\n undefined8 local_150;\n undefined8 uStack_148;\n undefined8 uStack_140;\n undefined8 uStack_138;\n undefined1 auStack_130 [128];\n long local_b0;\n \n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n uVar3 = objc_stub::count(param_7);\n if (uVar3 != 0) {\n dVar16 = 1.0;\n if (param_1 <= 1.0) {\n dVar16 = param_1;\n }\n dVar14 = 0.0;\n if (0.0 <= param_1) {\n dVar14 = dVar16;\n }\n dVar16 = 1.0;\n if (param_2 <= 1.0) {\n dVar16 = param_2;\n }\n dVar10 = 0.0;\n if (0.0 <= param_2) {\n dVar10 = dVar16;\n }\n FUN_10001bef0();\n uVar18 = param_5;\n uVar20 = param_6;\n if ((((param_8 == 0) || (_CGRectIsNull(param_3,param_4,param_5,param_6), (uVar3 & 1) != 0)) ||\n (uVar18 = param_5, uVar20 = param_6, _CGRectIsEmpty(param_3,param_4,param_5,param_6),\n (uVar3 & 1) != 0)) ||\n ((dVar16 = param_3, uVar18 = param_5, uVar20 = param_6,\n _CGRectGetWidth(param_3,param_4,param_5,param_6), dVar16 <= 2.220446049250313e-16 ||\n (dVar16 = param_3, uVar18 = param_5, uVar20 = param_6,\n _CGRectGetHeight(param_3,param_4,param_5,param_6), dVar16 <= 2.220446049250313e-16)))) {\n bVar1 = false;\n dVar16 = *(double *)PTR__CGPointZero_1000a8140;\n local_190 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_188 = dVar16;\n }\n else {\n local_188 = param_3;\n _CGRectGetMidX(param_3,param_4,param_5,param_6);\n local_190 = param_3;\n dVar16 = param_4;\n uVar18 = param_5;\n uVar20 = param_6;\n _CGRectGetMidY(param_3,param_4,param_5,param_6);\n bVar1 = true;\n }\n uStack_148 = 0;\n local_150 = 0;\n uStack_138 = 0;\n uStack_140 = 0;\n lStack_168 = 0;\n local_170 = 0;\n uStack_158 = 0;\n local_160 = (long *)0x0;\n IVar4 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_7,&local_170,auStack_130,0x10);\n if (IVar4 != 0) {\n uVar3 = 0;\n lVar8 = *local_160;\n dVar22 = -1.7976931348623157e+308;\n dVar13 = extraout_d0;\n do {\n IVar9 = 0;\n uVar6 = uVar3;\n dVar23 = dVar22;\n do {\n dVar11 = dVar13;\n dVar15 = dVar16;\n uVar19 = uVar18;\n uVar21 = uVar20;\n if (*local_160 != lVar8) {\n _objc_enumerationMutation(param_7);\n dVar11 = dVar13;\n dVar15 = dVar16;\n uVar19 = uVar18;\n uVar21 = uVar20;\n }\n uVar7 = *(ulong *)(lStack_168 + IVar9 * 8);\n uVar5 = uVar7;\n FUN_100029d20();\n dVar13 = dVar11;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectIsNull();\n uVar3 = uVar6;\n dVar22 = dVar23;\n if ((uVar5 & 1) == 0) {\n dVar13 = dVar11;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectIsEmpty(dVar11,dVar15,uVar19,uVar21);\n iVar2 = (int)uVar5;\n if ((uVar5 & 1) == 0) {\n dVar13 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetWidth(dVar11,dVar15);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar13) {\n dVar13 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetHeight(dVar11,dVar15);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar13) {\n dVar17 = dVar11;\n _CGRectGetMidX(dVar11,dVar15,uVar19,uVar21);\n dVar12 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetMidY(dVar11,dVar15);\n dVar16 = (dVar12 - dVar10) * (dVar12 - dVar10);\n dVar13 = SQRT(dVar16 + (dVar17 - dVar14) * (dVar17 - dVar14));\n dVar22 = -dVar13;\n if (bVar1) {\n dVar16 = dVar11;\n FUN_10001a910(dVar11,dVar15,uVar19,uVar21,param_3,param_4,param_5,param_6);\n dVar17 = SQRT((dVar12 - local_190) * (dVar12 - local_190) +\n (dVar17 - local_188) * (dVar17 - local_188)) / 0.32;\n dVar22 = 1.0;\n if (dVar17 <= 1.0) {\n dVar22 = dVar17;\n }\n dVar17 = (1.0 - dVar22) * 3.2 + dVar16 * 8.0 + -dVar13 * 0.35;\n _CGRectContainsPoint(dVar11);\n dVar13 = dVar17 + 1.2;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n dVar22 = dVar13;\n if (iVar2 == 0) {\n dVar22 = dVar17;\n }\n }\n uVar3 = uVar7;\n if (dVar22 <= dVar23 && uVar6 != 0) {\n uVar3 = uVar6;\n dVar22 = dVar23;\n }\n }\n }\n }\n }\n IVar9 = IVar9 + 1;\n uVar6 = uVar3;\n dVar23 = dVar22;\n } while (IVar4 != IVar9);\n IVar4 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_7,&local_170,auStack_130,0x10);\n dVar13 = extraout_d0_00;\n } while (IVar4 != 0);\n goto LAB_10003efd0;\n }\n }\n uVar3 = 0;\nLAB_10003efd0:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_b0) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return uVar3;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003ec44" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10003f01c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\nulong FUN_10003ec44(double param_1,double param_2,double param_3,double param_4,undefined8 param_5,\n undefined8 param_6,ID param_7,int param_8)\n\n{\n bool bVar1;\n int iVar2;\n ulong uVar3;\n ID IVar4;\n ulong uVar5;\n ulong uVar6;\n ulong uVar7;\n long lVar8;\n ID IVar9;\n double dVar10;\n double extraout_d0;\n double dVar11;\n double dVar12;\n double dVar13;\n double extraout_d0_00;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n undefined8 uVar18;\n undefined8 uVar19;\n undefined8 uVar20;\n undefined8 uVar21;\n double dVar22;\n double dVar23;\n double local_190;\n double local_188;\n undefined8 local_170;\n long lStack_168;\n long *local_160;\n undefined8 uStack_158;\n undefined8 local_150;\n undefined8 uStack_148;\n undefined8 uStack_140;\n undefined8 uStack_138;\n undefined1 auStack_130 [128];\n long local_b0;\n \n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n uVar3 = objc_stub::count(param_7);\n if (uVar3 != 0) {\n dVar16 = 1.0;\n if (param_1 <= 1.0) {\n dVar16 = param_1;\n }\n dVar14 = 0.0;\n if (0.0 <= param_1) {\n dVar14 = dVar16;\n }\n dVar16 = 1.0;\n if (param_2 <= 1.0) {\n dVar16 = param_2;\n }\n dVar10 = 0.0;\n if (0.0 <= param_2) {\n dVar10 = dVar16;\n }\n FUN_10001bef0();\n uVar18 = param_5;\n uVar20 = param_6;\n if ((((param_8 == 0) || (_CGRectIsNull(param_3,param_4,param_5,param_6), (uVar3 & 1) != 0)) ||\n (uVar18 = param_5, uVar20 = param_6, _CGRectIsEmpty(param_3,param_4,param_5,param_6),\n (uVar3 & 1) != 0)) ||\n ((dVar16 = param_3, uVar18 = param_5, uVar20 = param_6,\n _CGRectGetWidth(param_3,param_4,param_5,param_6), dVar16 <= 2.220446049250313e-16 ||\n (dVar16 = param_3, uVar18 = param_5, uVar20 = param_6,\n _CGRectGetHeight(param_3,param_4,param_5,param_6), dVar16 <= 2.220446049250313e-16)))) {\n bVar1 = false;\n dVar16 = *(double *)PTR__CGPointZero_1000a8140;\n local_190 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_188 = dVar16;\n }\n else {\n local_188 = param_3;\n _CGRectGetMidX(param_3,param_4,param_5,param_6);\n local_190 = param_3;\n dVar16 = param_4;\n uVar18 = param_5;\n uVar20 = param_6;\n _CGRectGetMidY(param_3,param_4,param_5,param_6);\n bVar1 = true;\n }\n uStack_148 = 0;\n local_150 = 0;\n uStack_138 = 0;\n uStack_140 = 0;\n lStack_168 = 0;\n local_170 = 0;\n uStack_158 = 0;\n local_160 = (long *)0x0;\n IVar4 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_7,&local_170,auStack_130,0x10);\n if (IVar4 != 0) {\n uVar3 = 0;\n lVar8 = *local_160;\n dVar22 = -1.7976931348623157e+308;\n dVar13 = extraout_d0;\n do {\n IVar9 = 0;\n uVar6 = uVar3;\n dVar23 = dVar22;\n do {\n dVar11 = dVar13;\n dVar15 = dVar16;\n uVar19 = uVar18;\n uVar21 = uVar20;\n if (*local_160 != lVar8) {\n _objc_enumerationMutation(param_7);\n dVar11 = dVar13;\n dVar15 = dVar16;\n uVar19 = uVar18;\n uVar21 = uVar20;\n }\n uVar7 = *(ulong *)(lStack_168 + IVar9 * 8);\n uVar5 = uVar7;\n FUN_100029d20();\n dVar13 = dVar11;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectIsNull();\n uVar3 = uVar6;\n dVar22 = dVar23;\n if ((uVar5 & 1) == 0) {\n dVar13 = dVar11;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectIsEmpty(dVar11,dVar15,uVar19,uVar21);\n iVar2 = (int)uVar5;\n if ((uVar5 & 1) == 0) {\n dVar13 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetWidth(dVar11,dVar15);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar13) {\n dVar13 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetHeight(dVar11,dVar15);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar13) {\n dVar17 = dVar11;\n _CGRectGetMidX(dVar11,dVar15,uVar19,uVar21);\n dVar12 = dVar11;\n uVar18 = uVar19;\n uVar20 = uVar21;\n _CGRectGetMidY(dVar11,dVar15);\n dVar16 = (dVar12 - dVar10) * (dVar12 - dVar10);\n dVar13 = SQRT(dVar16 + (dVar17 - dVar14) * (dVar17 - dVar14));\n dVar22 = -dVar13;\n if (bVar1) {\n dVar16 = dVar11;\n FUN_10001a910(dVar11,dVar15,uVar19,uVar21,param_3,param_4,param_5,param_6);\n dVar17 = SQRT((dVar12 - local_190) * (dVar12 - local_190) +\n (dVar17 - local_188) * (dVar17 - local_188)) / 0.32;\n dVar22 = 1.0;\n if (dVar17 <= 1.0) {\n dVar22 = dVar17;\n }\n dVar17 = (1.0 - dVar22) * 3.2 + dVar16 * 8.0 + -dVar13 * 0.35;\n _CGRectContainsPoint(dVar11);\n dVar13 = dVar17 + 1.2;\n dVar16 = dVar15;\n uVar18 = uVar19;\n uVar20 = uVar21;\n dVar22 = dVar13;\n if (iVar2 == 0) {\n dVar22 = dVar17;\n }\n }\n uVar3 = uVar7;\n if (dVar22 <= dVar23 && uVar6 != 0) {\n uVar3 = uVar6;\n dVar22 = dVar23;\n }\n }\n }\n }\n }\n IVar9 = IVar9 + 1;\n uVar6 = uVar3;\n dVar23 = dVar22;\n } while (IVar4 != IVar9);\n IVar4 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_7,&local_170,auStack_130,0x10);\n dVar13 = extraout_d0_00;\n } while (IVar4 != 0);\n goto LAB_10003efd0;\n }\n }\n uVar3 = 0;\nLAB_10003efd0:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_b0) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return uVar3;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_6068961ccd1b5aa78696bc8f157b8e9b7322dc68f56cf76ef2d3f8bc28837b26", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x100019078 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* Function Stack Size: 0x50 bytes */\n\nvoid MSSSkinControlPanelView::drawSection_inRect_controls_values_controlPanelValue_\n (ID param_1,SEL param_2,ID param_3,CGRect param_4,ID param_5,ID param_6,ID param_7)\n\n{\n cfstringStruct *self;\n CGRect CVar1;\n CGRect CVar2;\n CGRect CVar3;\n CGRect CVar4;\n CGRect CVar5;\n CGRect CVar6;\n CGRect CVar7;\n CGRect CVar8;\n CGRect CVar9;\n CGRect CVar10;\n CGRect CVar11;\n int iVar12;\n bool bVar13;\n ID IVar14;\n ID IVar15;\n cfstringStruct *pcVar16;\n ID IVar17;\n ID IVar18;\n undefined *self_00;\n ID IVar19;\n ID IVar20;\n undefined **ppuVar21;\n undefined **self_01;\n double self_02;\n double self_03;\n long lVar22;\n uint uVar23;\n long lVar24;\n ID self_04;\n ID self_05;\n ID IVar25;\n int iVar26;\n double in_d0;\n undefined8 uVar27;\n double extraout_d0;\n double dVar28;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n double extraout_d0_09;\n double extraout_d0_10;\n double extraout_d0_11;\n double extraout_d0_12;\n double extraout_d0_13;\n double extraout_d0_14;\n double extraout_d0_15;\n double extraout_d0_16;\n double extraout_d0_17;\n double extraout_d0_18;\n double extraout_d0_19;\n double extraout_d0_20;\n double extraout_d0_21;\n double extraout_d0_22;\n double extraout_d0_23;\n double extraout_d0_24;\n double dVar29;\n double extraout_d0_25;\n undefined8 extraout_d0_26;\n undefined8 extraout_d0_27;\n undefined8 extraout_d0_28;\n double extraout_d0_29;\n undefined8 extraout_d0_30;\n undefined8 extraout_d0_31;\n undefined8 extraout_d0_32;\n double extraout_d0_33;\n undefined8 extraout_d0_34;\n undefined8 extraout_d0_35;\n double extraout_d0_36;\n double dVar30;\n double extraout_d0_37;\n undefined8 extraout_d0_38;\n undefined8 extraout_d0_39;\n undefined8 extraout_d0_40;\n double extraout_d0_41;\n double extraout_d0_42;\n double extraout_d0_43;\n double extraout_d0_44;\n double in_d1;\n double dVar31;\n double dVar32;\n double dVar33;\n double dVar34;\n double dVar35;\n double in_d2;\n undefined8 uVar36;\n double dVar37;\n undefined8 uVar38;\n double dVar39;\n double dVar40;\n double dVar41;\n double in_d3;\n double dVar42;\n double dVar43;\n double dVar44;\n double dVar45;\n CGRect CVar46;\n CGRect CVar47;\n CGRect CVar48;\n CGRect CVar49;\n CGRect CVar50;\n CGRect CVar51;\n CGRect CVar52;\n CGRect CVar53;\n CGRect CVar54;\n CGRect CVar55;\n double local_300;\n ID local_260;\n undefined8 local_230;\n long lStack_228;\n long *local_220;\n undefined8 uStack_218;\n undefined8 local_210;\n undefined8 uStack_208;\n undefined8 uStack_200;\n undefined8 uStack_1f8;\n undefined8 local_1f0;\n long lStack_1e8;\n long *local_1e0;\n undefined8 uStack_1d8;\n undefined8 local_1d0;\n undefined8 uStack_1c8;\n undefined8 uStack_1c0;\n undefined8 uStack_1b8;\n undefined1 auStack_1b0 [128];\n undefined1 auStack_130 [128];\n long local_b0;\n \n self_03 = param_4.field1_0x10.field0_0x0;\n self_02 = param_4.field0_0x0.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar14 = objc_stub::objectForKeyedSubscript_(param_3,&cf_headerID);\n IVar15 = objc_stub::unsignedIntValue(IVar14);\n IVar14 = IVar15;\n FUN_100009b28();\n pcVar16 = (cfstringStruct *)objc_stub::objectForKeyedSubscript_(IVar14,&cf_badge);\n self = &cf___;\n if (pcVar16 != (cfstringStruct *)0x0) {\n self = pcVar16;\n }\n local_260 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_accent);\n if (local_260 == 0) {\n local_260 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3feb333333333333,0x3ff0000000000000);\n }\n IVar17 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_surfaceTop);\n if (IVar17 == 0) {\n IVar17 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fbeb851eb851eb8,0x3ff0000000000000);\n }\n IVar14 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_surfaceBottom);\n if (IVar14 == 0) {\n IVar14 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fb47ae147ae147b,0x3ff0000000000000);\n }\n dVar33 = self_03;\n FUN_100011b40(self_03,IVar15);\n IVar18 = NSBezierPath::bezierPathWithRoundedRect_xRadius_yRadius_((ID)&_OBJC_CLASS___NSBezierPath)\n ;\n self_00 = &_OBJC_CLASS___NSGradient;\n _objc_alloc();\n IVar17 = NSColor::colorWithAlphaComponent_(IVar17,0x3fec28f5c28f5c29);\n IVar14 = NSColor::colorWithAlphaComponent_(IVar14,0x3fec28f5c28f5c29);\n IVar14 = objc_stub::initWithStartingColor_endingColor_((ID)self_00,IVar17,IVar14);\n objc_stub::drawInBezierPath_angle_(IVar14,0x4056800000000000,IVar18);\n IVar14 = NSColor::colorWithAlphaComponent_(local_260,0x3fc1eb851eb851ec);\n NSColor::setStroke(IVar14);\n NSBezierPath::setLineWidth_(IVar18,0x3feccccccccccccd);\n NSBezierPath::stroke(IVar18);\n if (SUB84(dVar33,0) == 0) {\n dVar31 = 0.54;\n uVar36 = 0x3fe28f5c28f5c28f;\n uVar27 = 0x3ff0000000000000;\n }\n else {\n uVar27 = 0x3fe1eb851eb851ec;\n dVar31 = 1.0;\n uVar36 = 0x3fe8000000000000;\n }\n IVar14 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,uVar27,dVar31,uVar36,0x3ff0000000000000);\n FUN_10001907c();\n objc_stub::sizeWithAttributes_((ID)self,IVar14);\n dVar28 = in_d0;\n dVar32 = in_d1;\n dVar37 = in_d2;\n dVar42 = in_d3;\n FUN_100013c5c(self);\n IVar17 = NSBezierPath::bezierPathWithRoundedRect_xRadius_yRadius_((ID)&_OBJC_CLASS___NSBezierPath)\n ;\n if (SUB84(dVar33,0) == 0) {\n uVar36 = 0x3fd47ae147ae147b;\n IVar18 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3feccccccccccccd,0x3fc70a3d70a3d70a,\n 0x3fcc28f5c28f5c29,0x3fd47ae147ae147b);\n uVar38 = 0x3fd70a3d70a3d70a;\n uVar27 = 0x3ff0000000000000;\n }\n else {\n IVar18 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fc1eb851eb851ec,0x3fe51eb851eb851f,\n 0x3fd851eb851eb852,0x3fd47ae147ae147b);\n uVar27 = 0x3fd3333333333333;\n uVar36 = 0x3fee666666666666;\n uVar38 = 0x3fe28f5c28f5c28f;\n }\n IVar19 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,uVar27,uVar36,uVar38,0x3fe3d70a3d70a3d7);\n NSColor::setFill(IVar18);\n NSBezierPath::fill(IVar17);\n NSColor::setStroke(IVar19);\n NSBezierPath::setLineWidth_(IVar17,0x3fe999999999999a);\n NSBezierPath::stroke(IVar17);\n IVar17 = NSBezierPath::bezierPath((ID)&_OBJC_CLASS___NSBezierPath);\n NSBezierPath::moveToPoint_(IVar17,in_d0 + 14.0,in_d1 + 34.0);\n NSBezierPath::lineToPoint_(IVar17,in_d0 + in_d2 + -14.0,in_d1 + 34.0);\n IVar18 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3ff0000000000000,0x3fb47ae147ae147b);\n NSColor::setStroke(IVar18);\n NSBezierPath::setLineWidth_(IVar17,0x3ff0000000000000);\n NSBezierPath::stroke(IVar17);\n dVar33 = dVar32 + (double)(long)((dVar42 - dVar31) * 0.5) + -1.0;\n dVar32 = extraout_d0;\n objc_stub::drawInRect_withAttributes_\n ((ID)self,dVar28 + (double)(long)((dVar37 - extraout_d0) * 0.5),IVar14);\n if ((int)IVar15 == 0xc9) {\n IVar14 = objc_stub::skinTonePreset((ID)self_03);\n CVar46.field0_0x0.field1_0x8 = in_d1;\n CVar46.field0_0x0.field0_0x0 = in_d0;\n CVar46.field1_0x10.field1_0x8 = in_d3;\n CVar46.field1_0x10.field0_0x0 = in_d2;\n dVar33 = in_d1;\n dVar32 = in_d2;\n dVar31 = in_d3;\n drawSkinTonePresetStripInSectionRect_accentColor_selectedPreset_\n (param_1,CVar46,local_260,IVar14);\n }\n objc_stub::bounds(param_1);\n CVar47.field0_0x0.field1_0x8 = dVar33;\n CVar47.field0_0x0.field0_0x0 = extraout_d0_00;\n CVar47.field1_0x10.field1_0x8 = dVar31;\n CVar47.field1_0x10.field0_0x0 = dVar32;\n IVar14 = interactionItemsForBounds_(param_1,CVar47);\n lStack_1e8 = 0;\n local_1f0 = 0;\n uStack_1d8 = 0;\n local_1e0 = (long *)0x0;\n uStack_1c8 = 0;\n local_1d0 = 0;\n uStack_1b8 = 0;\n uStack_1c0 = 0;\n IVar15 = objc_stub::countByEnumeratingWithState_objects_count_\n ((ID)self_02,&local_1f0,auStack_130,0x10);\n if (IVar15 != 0) {\n lVar22 = *local_1e0;\n local_300 = 0.12;\n do {\n IVar17 = 0;\n do {\n dVar28 = dVar33;\n dVar37 = dVar32;\n dVar42 = dVar31;\n if (*local_1e0 != lVar22) {\n _objc_enumerationMutation(self_02);\n dVar28 = dVar33;\n dVar37 = dVar32;\n dVar42 = dVar31;\n }\n self_05 = *(ID *)(lStack_1e8 + IVar17 * 8);\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_id);\n IVar18 = objc_stub::unsignedIntValue(IVar18);\n lStack_228 = 0;\n local_230 = 0;\n uStack_218 = 0;\n local_220 = (long *)0x0;\n uStack_208 = 0;\n local_210 = 0;\n uStack_1f8 = 0;\n uStack_200 = 0;\n IVar19 = objc_stub::countByEnumeratingWithState_objects_count_\n (IVar14,&local_230,auStack_1b0,0x10);\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (IVar19 != 0) {\n lVar24 = *local_220;\nLAB_10001872c:\n IVar25 = 0;\nLAB_100018730:\n if (*local_220 != lVar24) {\n _objc_enumerationMutation(IVar14);\n }\n self_04 = *(ID *)(lStack_228 + IVar25 * 8);\n IVar20 = objc_stub::objectForKeyedSubscript_(self_04,&cf_parameterID);\n IVar20 = objc_stub::unsignedIntValue(IVar20);\n iVar26 = (int)IVar18;\n if ((int)IVar20 != iVar26) goto code_r0x000100018768;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (self_04 != 0) {\n IVar19 = objc_stub::objectForKeyedSubscript_(self_04,&cf_rowRect);\n IVar19 = objc_stub::rectValue(IVar19);\n iVar12 = (int)IVar19;\n dVar33 = in_d1;\n dVar32 = in_d2;\n dVar31 = in_d3;\n _NSIntersectsRect(in_d0);\n if (iVar12 != 0) {\n IVar19 = NSNumber::numberWithUnsignedInt_((ID)&_OBJC_CLASS___NSNumber,IVar18);\n ppuVar21 = (undefined **)\n objc_stub::objectForKeyedSubscript_\n ((ID)param_4.field0_0x0.field1_0x8,IVar19);\n self_01 = &PTR__OBJC_CLASS___NSConstantDoubleNumber_1000b04c0;\n if (ppuVar21 != (undefined **)0x0) {\n self_01 = ppuVar21;\n }\n IVar19 = objc_stub::objectForKeyedSubscript_(self_05,&cf_targetIndex);\n if (IVar19 != 0) {\n IVar19 = objc_stub::objectForKeyedSubscript_(self_05,&cf_targetIndex);\n IVar19 = objc_stub::integerValue(IVar19);\n dVar29 = self_03;\n FUN_1000110d4(self_03,IVar19);\n self_01 = (undefined **)\n NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,dVar29);\n }\n dVar29 = self_03;\n FUN_10001120c(self_03,IVar18);\n bVar13 = SUB84(dVar29,0);\n uVar23 = 1;\n if (self_03 == 0.0) goto switchD_1000188a0_caseD_5;\n switch(iVar26) {\n case 2:\n objc_stub::skinBrightness((ID)self_03);\n dVar29 = extraout_d0_16;\n break;\n case 3:\n objc_stub::radius((ID)self_03);\n dVar33 = -8.0;\n dVar29 = extraout_d0_20;\n goto LAB_100018b1c;\n case 4:\n objc_stub::sharpness((ID)self_03);\n dVar29 = extraout_d0_18;\n break;\n default:\n goto switchD_1000188a0_caseD_5;\n case 8:\n objc_stub::maskSoftness((ID)self_03);\n dVar33 = -0.6;\n dVar29 = extraout_d0_11;\n goto LAB_100018b1c;\n case 9:\n objc_stub::maskEdgeProtect((ID)self_03);\n dVar33 = -0.4;\n dVar29 = extraout_d0_13;\n goto LAB_100018b1c;\n case 10:\n IVar18 = objc_stub::showChannelInfo((ID)self_03);\n uVar23 = (uint)IVar18;\n goto LAB_100018ac4;\n case 0xc:\n objc_stub::midtoneDetail((ID)self_03);\n dVar29 = extraout_d0_10;\n break;\n case 0xd:\n dVar29 = (double)objc_stub::debugChannelMode((ID)self_03);\nLAB_100018a18:\n uVar23 = (uint)(dVar29 == 0.0);\n goto switchD_1000188a0_caseD_5;\n case 0xe:\n objc_stub::skinHue((ID)self_03);\n dVar29 = extraout_d0_17;\n break;\n case 0xf:\n objc_stub::skinSaturation((ID)self_03);\n dVar29 = extraout_d0_15;\n break;\n case 0x10:\n objc_stub::skinEvenTone((ID)self_03);\n dVar29 = extraout_d0_21;\n break;\n case 0x11:\n objc_stub::highPassDetail((ID)self_03);\n dVar29 = extraout_d0_08;\n break;\n case 0x12:\n objc_stub::faceThin((ID)self_03);\n dVar29 = extraout_d0_07;\n break;\n case 0x13:\n case 0x23:\n IVar18 = NSUserDefaults::standardUserDefaults((ID)&_OBJC_CLASS___NSUserDefaults);\n IVar19 = NSUserDefaults::objectForKey_(IVar18,&cf_MSE18GlobalFaceBoxPreviewEnabled);\n uVar23 = 0;\n if (IVar19 != 0) {\n IVar18 = NSUserDefaults::boolForKey_(IVar18,&cf_MSE18GlobalFaceBoxPreviewEnabled);\n uVar23 = (uint)IVar18;\n }\n uVar23 = iVar26 != 0x1e ^ uVar23;\n goto switchD_1000188a0_caseD_5;\n case 0x14:\n IVar18 = objc_stub::faceSingleSelection((ID)self_03);\n uVar23 = (uint)IVar18;\n goto LAB_100018ac4;\n case 0x15:\n objc_stub::faceSelectionX((ID)self_03);\n dVar33 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < ABS(extraout_d0_23 + -0.5)) goto LAB_100018b08;\n objc_stub::faceSelectionY((ID)self_03);\n dVar29 = extraout_d0_44 + -0.5;\n break;\n case 0x16:\n objc_stub::faceShort((ID)self_03);\n dVar29 = extraout_d0_22;\n break;\n case 0x17:\n objc_stub::faceNarrow((ID)self_03);\n dVar29 = extraout_d0_03;\n break;\n case 0x18:\n objc_stub::faceChin((ID)self_03);\n dVar29 = extraout_d0_14;\n break;\n case 0x19:\n objc_stub::faceV((ID)self_03);\n dVar29 = extraout_d0_41;\n break;\n case 0x1a:\n objc_stub::faceJaw((ID)self_03);\n dVar29 = extraout_d0_04;\n break;\n case 0x1b:\n objc_stub::faceCheekbone((ID)self_03);\n dVar29 = extraout_d0_12;\n break;\n case 0x1c:\n objc_stub::faceSmallHead((ID)self_03);\n dVar29 = extraout_d0_06;\n break;\n case 0x1d:\n objc_stub::faceSmallHeadRange((ID)self_03);\n dVar29 = extraout_d0_19;\n break;\n case 0x1e:\n objc_stub::featureProtectionRelease((ID)self_03);\n dVar29 = extraout_d0_05;\n break;\n case 0x1f:\n objc_stub::teethWhitening((ID)self_03);\n dVar29 = extraout_d0_43;\n break;\n case 0x20:\n objc_stub::eyeBrightening((ID)self_03);\n dVar29 = extraout_d0_42;\n break;\n case 0x21:\n objc_stub::faceBigEye((ID)self_03);\n dVar29 = extraout_d0_09;\n break;\n case 0x22:\n case 0x24:\n case 0x25:\n case 0x26:\n FUN_10000c4d0(self_03);\n IVar18 = objc_stub::faceTrackEnabled((ID)self_03);\n if ((((IVar18 & 1) == 0) &&\n (IVar18 = objc_stub::faceTrackStatus((ID)self_03), IVar18 == 0)) &&\n (IVar18 = objc_stub::faceTrackFrameCount((ID)self_03), IVar18 == 0)) {\n objc_stub::faceTrackProgress((ID)self_03);\n dVar33 = 2.220446049250313e-16;\n if (ABS(extraout_d0_02) <= 2.220446049250313e-16) {\n IVar18 = objc_stub::faceTrackData((ID)self_03);\n IVar18 = objc_stub::length(IVar18);\n if ((IVar18 == 0) &&\n (IVar18 = objc_stub::faceTrackTargetCount((ID)self_03), IVar18 == 1)) {\n dVar29 = self_03;\n FUN_1000181b4(self_03,0);\n IVar18 = objc_stub::length((ID)dVar29);\n if ((IVar18 == 0) &&\n ((dVar29 = self_03, FUN_1000110d4(self_03,0), dVar29 == 0.0 &&\n (IVar18 = objc_stub::faceTrackTargetCount((ID)self_03), IVar18 == 1)))) {\n dVar29 = self_03;\n FUN_1000181b4(self_03,0);\n IVar18 = objc_stub::length((ID)dVar29);\n if (IVar18 == 0) {\n dVar29 = self_03;\n FUN_1000110d4(self_03,0);\n goto LAB_100018a18;\n }\n }\n }\n }\n }\nLAB_100018b08:\n uVar23 = 0;\n goto switchD_1000188a0_caseD_5;\n case 0x27:\n IVar18 = objc_stub::fastMultiFaceMode((ID)self_03);\n uVar23 = (uint)IVar18;\nLAB_100018ac4:\n uVar23 = uVar23 ^ 1;\n goto switchD_1000188a0_caseD_5;\n case 0x28:\n objc_stub::faceJumpGuardRange((ID)self_03);\n dVar33 = -1.5;\n dVar29 = extraout_d0_24;\nLAB_100018b1c:\n dVar29 = dVar29 + dVar33;\n }\n dVar33 = 2.220446049250313e-16;\n uVar23 = (uint)(ABS(dVar29) <= 2.220446049250313e-16);\nswitchD_1000188a0_caseD_5:\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_toggle);\n if ((int)IVar18 == 0) {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_button);\n if ((int)IVar18 == 0) {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_mode);\n if ((int)IVar18 == 0) {\n objc_stub::doubleValue((ID)self_01);\n if ((iVar26 == 0x1e) || (dVar29 = extraout_d0_36, iVar26 == 0x11)) {\n dVar33 = 1.0;\n dVar30 = 1.0;\n if (extraout_d0_36 <= 1.0) {\n dVar30 = extraout_d0_36;\n }\n dVar29 = 1.0;\n if (0.0 <= extraout_d0_36) {\n dVar29 = 1.0 - dVar30;\n }\n }\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar33;\n dVar39 = dVar32;\n dVar43 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_trackRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar35 = dVar34;\n dVar41 = dVar40;\n dVar45 = dVar44;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n CVar4.field0_0x0.field1_0x8 = dVar30;\n CVar4.field0_0x0.field0_0x0 = (double)extraout_d0_38;\n CVar4.field1_0x10.field0_0x0 = dVar39;\n CVar4.field1_0x10.field1_0x8 = dVar43;\n CVar8.field0_0x0.field1_0x8 = dVar34;\n CVar8.field0_0x0.field0_0x0 = (double)extraout_d0_39;\n CVar8.field1_0x10.field0_0x0 = dVar40;\n CVar8.field1_0x10.field1_0x8 = dVar44;\n CVar11.field0_0x0.field1_0x8 = dVar35;\n CVar11.field0_0x0.field0_0x0 = (double)extraout_d0_40;\n CVar11.field1_0x10.field0_0x0 = dVar41;\n CVar11.field1_0x10.field1_0x8 = dVar45;\n CVar51.field0_0x0.field1_0x8 = dVar28;\n CVar51.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar51.field1_0x10.field1_0x8 = dVar42;\n CVar51.field1_0x10.field0_0x0 = dVar37;\n CVar55.field0_0x0.field1_0x8 = dVar33;\n CVar55.field0_0x0.field0_0x0 = extraout_d0_37;\n CVar55.field1_0x10.field1_0x8 = dVar31;\n CVar55.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawSliderControl_rowRect_eyeRect_trackRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar51,CVar55,CVar4,CVar8,CVar11,dVar29,bVar13,uVar23\n ,local_260);\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar34 = dVar32;\n dVar39 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar35 = dVar34;\n dVar40 = dVar39;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n IVar18 = objc_stub::integerValue((ID)self_01);\n CVar3.field0_0x0.field1_0x8 = dVar29;\n CVar3.field0_0x0.field0_0x0 = (double)extraout_d0_34;\n CVar3.field1_0x10.field0_0x0 = dVar34;\n CVar3.field1_0x10.field1_0x8 = dVar39;\n CVar7.field0_0x0.field1_0x8 = dVar30;\n CVar7.field0_0x0.field0_0x0 = (double)extraout_d0_35;\n CVar7.field1_0x10.field0_0x0 = dVar35;\n CVar7.field1_0x10.field1_0x8 = dVar40;\n CVar50.field0_0x0.field1_0x8 = dVar28;\n CVar50.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar50.field1_0x10.field1_0x8 = dVar42;\n CVar50.field1_0x10.field0_0x0 = dVar37;\n CVar54.field0_0x0.field1_0x8 = dVar33;\n CVar54.field0_0x0.field0_0x0 = extraout_d0_33;\n CVar54.field1_0x10.field1_0x8 = dVar31;\n CVar54.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawModeControl_rowRect_eyeRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar50,CVar54,CVar3,CVar7,IVar18,bVar13,uVar23,\n local_260);\n }\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar35 = dVar32;\n dVar41 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar39 = dVar35;\n dVar43 = dVar41;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_deleteRect);\n objc_stub::rectValue(IVar18);\n CVar2.field0_0x0.field1_0x8 = dVar29;\n CVar2.field0_0x0.field0_0x0 = (double)extraout_d0_30;\n CVar2.field1_0x10.field0_0x0 = dVar35;\n CVar2.field1_0x10.field1_0x8 = dVar41;\n CVar6.field0_0x0.field1_0x8 = dVar30;\n CVar6.field0_0x0.field0_0x0 = (double)extraout_d0_31;\n CVar6.field1_0x10.field0_0x0 = dVar39;\n CVar6.field1_0x10.field1_0x8 = dVar43;\n CVar10.field0_0x0.field1_0x8 = dVar34;\n CVar10.field0_0x0.field0_0x0 = (double)extraout_d0_32;\n CVar10.field1_0x10.field0_0x0 = dVar40;\n CVar10.field1_0x10.field1_0x8 = dVar44;\n CVar49.field0_0x0.field1_0x8 = dVar28;\n CVar49.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar49.field1_0x10.field1_0x8 = dVar42;\n CVar49.field1_0x10.field0_0x0 = dVar37;\n CVar53.field0_0x0.field1_0x8 = dVar33;\n CVar53.field0_0x0.field0_0x0 = extraout_d0_29;\n CVar53.field1_0x10.field1_0x8 = dVar31;\n CVar53.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawButtonControl_rowRect_eyeRect_buttonRect_resetRect_deleteRect_enabled_usesDefaultValue_accentColor_controlPanelValue_\n (param_1,self_05,CVar49,CVar53,CVar2,CVar6,CVar10,bVar13,uVar23,\n local_260,(ID)self_03);\n }\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar35 = dVar32;\n dVar41 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_toggleRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar39 = dVar35;\n dVar43 = dVar41;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n IVar18 = objc_stub::boolValue((ID)self_01);\n CVar1.field0_0x0.field1_0x8 = dVar29;\n CVar1.field0_0x0.field0_0x0 = (double)extraout_d0_26;\n CVar1.field1_0x10.field0_0x0 = dVar35;\n CVar1.field1_0x10.field1_0x8 = dVar41;\n CVar5.field0_0x0.field1_0x8 = dVar30;\n CVar5.field0_0x0.field0_0x0 = (double)extraout_d0_27;\n CVar5.field1_0x10.field0_0x0 = dVar39;\n CVar5.field1_0x10.field1_0x8 = dVar43;\n CVar9.field0_0x0.field1_0x8 = dVar34;\n CVar9.field0_0x0.field0_0x0 = (double)extraout_d0_28;\n CVar9.field1_0x10.field0_0x0 = dVar40;\n CVar9.field1_0x10.field1_0x8 = dVar44;\n CVar48.field0_0x0.field1_0x8 = dVar28;\n CVar48.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar48.field1_0x10.field1_0x8 = dVar42;\n CVar48.field1_0x10.field0_0x0 = dVar37;\n CVar52.field0_0x0.field1_0x8 = dVar33;\n CVar52.field0_0x0.field0_0x0 = extraout_d0_25;\n CVar52.field1_0x10.field1_0x8 = dVar31;\n CVar52.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawToggleControl_rowRect_eyeRect_toggleRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar48,CVar52,CVar1,CVar5,CVar9,(bool)IVar18,bVar13,\n uVar23,local_260);\n }\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_dividerAfter);\n IVar18 = objc_stub::boolValue(IVar18);\n if ((int)IVar18 != 0) {\n dVar33 = dVar28 + dVar42 + 5.0;\n IVar18 = NSBezierPath::bezierPath((ID)&_OBJC_CLASS___NSBezierPath);\n NSBezierPath::moveToPoint_(IVar18,extraout_d0_01 + 4.0,dVar33);\n NSBezierPath::lineToPoint_(IVar18,extraout_d0_01 + dVar37 + -4.0,dVar33);\n dVar33 = local_300;\n IVar19 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3ff0000000000000);\n NSColor::setStroke(IVar19);\n NSBezierPath::setLineWidth_(IVar18,0x3ff0000000000000);\n NSBezierPath::stroke(IVar18);\n }\n }\n }\n }\nLAB_100018fd0:\n IVar17 = IVar17 + 1;\n } while (IVar17 != IVar15);\n IVar15 = objc_stub::countByEnumeratingWithState_objects_count_\n ((ID)self_02,&local_1f0,auStack_130,0x10);\n } while (IVar15 != 0);\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\ncode_r0x000100018768:\n IVar25 = IVar25 + 1;\n if (IVar19 == IVar25) goto code_r0x000100018774;\n goto LAB_100018730;\ncode_r0x000100018774:\n IVar19 = objc_stub::countByEnumeratingWithState_objects_count_(IVar14,&local_230,auStack_1b0,0x10)\n ;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (IVar19 == 0) goto LAB_100018fd0;\n goto LAB_10001872c;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100018210" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100019078 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* Function Stack Size: 0x50 bytes */\n\nvoid MSSSkinControlPanelView::drawSection_inRect_controls_values_controlPanelValue_\n (ID param_1,SEL param_2,ID param_3,CGRect param_4,ID param_5,ID param_6,ID param_7)\n\n{\n cfstringStruct *self;\n CGRect CVar1;\n CGRect CVar2;\n CGRect CVar3;\n CGRect CVar4;\n CGRect CVar5;\n CGRect CVar6;\n CGRect CVar7;\n CGRect CVar8;\n CGRect CVar9;\n CGRect CVar10;\n CGRect CVar11;\n int iVar12;\n bool bVar13;\n ID IVar14;\n ID IVar15;\n cfstringStruct *pcVar16;\n ID IVar17;\n ID IVar18;\n undefined *self_00;\n ID IVar19;\n ID IVar20;\n undefined **ppuVar21;\n undefined **self_01;\n double self_02;\n double self_03;\n long lVar22;\n uint uVar23;\n long lVar24;\n ID self_04;\n ID self_05;\n ID IVar25;\n int iVar26;\n double in_d0;\n undefined8 uVar27;\n double extraout_d0;\n double dVar28;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n double extraout_d0_09;\n double extraout_d0_10;\n double extraout_d0_11;\n double extraout_d0_12;\n double extraout_d0_13;\n double extraout_d0_14;\n double extraout_d0_15;\n double extraout_d0_16;\n double extraout_d0_17;\n double extraout_d0_18;\n double extraout_d0_19;\n double extraout_d0_20;\n double extraout_d0_21;\n double extraout_d0_22;\n double extraout_d0_23;\n double extraout_d0_24;\n double dVar29;\n double extraout_d0_25;\n undefined8 extraout_d0_26;\n undefined8 extraout_d0_27;\n undefined8 extraout_d0_28;\n double extraout_d0_29;\n undefined8 extraout_d0_30;\n undefined8 extraout_d0_31;\n undefined8 extraout_d0_32;\n double extraout_d0_33;\n undefined8 extraout_d0_34;\n undefined8 extraout_d0_35;\n double extraout_d0_36;\n double dVar30;\n double extraout_d0_37;\n undefined8 extraout_d0_38;\n undefined8 extraout_d0_39;\n undefined8 extraout_d0_40;\n double extraout_d0_41;\n double extraout_d0_42;\n double extraout_d0_43;\n double extraout_d0_44;\n double in_d1;\n double dVar31;\n double dVar32;\n double dVar33;\n double dVar34;\n double dVar35;\n double in_d2;\n undefined8 uVar36;\n double dVar37;\n undefined8 uVar38;\n double dVar39;\n double dVar40;\n double dVar41;\n double in_d3;\n double dVar42;\n double dVar43;\n double dVar44;\n double dVar45;\n CGRect CVar46;\n CGRect CVar47;\n CGRect CVar48;\n CGRect CVar49;\n CGRect CVar50;\n CGRect CVar51;\n CGRect CVar52;\n CGRect CVar53;\n CGRect CVar54;\n CGRect CVar55;\n double local_300;\n ID local_260;\n undefined8 local_230;\n long lStack_228;\n long *local_220;\n undefined8 uStack_218;\n undefined8 local_210;\n undefined8 uStack_208;\n undefined8 uStack_200;\n undefined8 uStack_1f8;\n undefined8 local_1f0;\n long lStack_1e8;\n long *local_1e0;\n undefined8 uStack_1d8;\n undefined8 local_1d0;\n undefined8 uStack_1c8;\n undefined8 uStack_1c0;\n undefined8 uStack_1b8;\n undefined1 auStack_1b0 [128];\n undefined1 auStack_130 [128];\n long local_b0;\n \n self_03 = param_4.field1_0x10.field0_0x0;\n self_02 = param_4.field0_0x0.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar14 = objc_stub::objectForKeyedSubscript_(param_3,&cf_headerID);\n IVar15 = objc_stub::unsignedIntValue(IVar14);\n IVar14 = IVar15;\n FUN_100009b28();\n pcVar16 = (cfstringStruct *)objc_stub::objectForKeyedSubscript_(IVar14,&cf_badge);\n self = &cf___;\n if (pcVar16 != (cfstringStruct *)0x0) {\n self = pcVar16;\n }\n local_260 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_accent);\n if (local_260 == 0) {\n local_260 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3feb333333333333,0x3ff0000000000000);\n }\n IVar17 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_surfaceTop);\n if (IVar17 == 0) {\n IVar17 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fbeb851eb851eb8,0x3ff0000000000000);\n }\n IVar14 = objc_stub::objectForKeyedSubscript_(IVar14,&cf_surfaceBottom);\n if (IVar14 == 0) {\n IVar14 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fb47ae147ae147b,0x3ff0000000000000);\n }\n dVar33 = self_03;\n FUN_100011b40(self_03,IVar15);\n IVar18 = NSBezierPath::bezierPathWithRoundedRect_xRadius_yRadius_((ID)&_OBJC_CLASS___NSBezierPath)\n ;\n self_00 = &_OBJC_CLASS___NSGradient;\n _objc_alloc();\n IVar17 = NSColor::colorWithAlphaComponent_(IVar17,0x3fec28f5c28f5c29);\n IVar14 = NSColor::colorWithAlphaComponent_(IVar14,0x3fec28f5c28f5c29);\n IVar14 = objc_stub::initWithStartingColor_endingColor_((ID)self_00,IVar17,IVar14);\n objc_stub::drawInBezierPath_angle_(IVar14,0x4056800000000000,IVar18);\n IVar14 = NSColor::colorWithAlphaComponent_(local_260,0x3fc1eb851eb851ec);\n NSColor::setStroke(IVar14);\n NSBezierPath::setLineWidth_(IVar18,0x3feccccccccccccd);\n NSBezierPath::stroke(IVar18);\n if (SUB84(dVar33,0) == 0) {\n dVar31 = 0.54;\n uVar36 = 0x3fe28f5c28f5c28f;\n uVar27 = 0x3ff0000000000000;\n }\n else {\n uVar27 = 0x3fe1eb851eb851ec;\n dVar31 = 1.0;\n uVar36 = 0x3fe8000000000000;\n }\n IVar14 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,uVar27,dVar31,uVar36,0x3ff0000000000000);\n FUN_10001907c();\n objc_stub::sizeWithAttributes_((ID)self,IVar14);\n dVar28 = in_d0;\n dVar32 = in_d1;\n dVar37 = in_d2;\n dVar42 = in_d3;\n FUN_100013c5c(self);\n IVar17 = NSBezierPath::bezierPathWithRoundedRect_xRadius_yRadius_((ID)&_OBJC_CLASS___NSBezierPath)\n ;\n if (SUB84(dVar33,0) == 0) {\n uVar36 = 0x3fd47ae147ae147b;\n IVar18 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3feccccccccccccd,0x3fc70a3d70a3d70a,\n 0x3fcc28f5c28f5c29,0x3fd47ae147ae147b);\n uVar38 = 0x3fd70a3d70a3d70a;\n uVar27 = 0x3ff0000000000000;\n }\n else {\n IVar18 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3fc1eb851eb851ec,0x3fe51eb851eb851f,\n 0x3fd851eb851eb852,0x3fd47ae147ae147b);\n uVar27 = 0x3fd3333333333333;\n uVar36 = 0x3fee666666666666;\n uVar38 = 0x3fe28f5c28f5c28f;\n }\n IVar19 = NSColor::colorWithCalibratedRed_green_blue_alpha_\n ((ID)&_OBJC_CLASS___NSColor,uVar27,uVar36,uVar38,0x3fe3d70a3d70a3d7);\n NSColor::setFill(IVar18);\n NSBezierPath::fill(IVar17);\n NSColor::setStroke(IVar19);\n NSBezierPath::setLineWidth_(IVar17,0x3fe999999999999a);\n NSBezierPath::stroke(IVar17);\n IVar17 = NSBezierPath::bezierPath((ID)&_OBJC_CLASS___NSBezierPath);\n NSBezierPath::moveToPoint_(IVar17,in_d0 + 14.0,in_d1 + 34.0);\n NSBezierPath::lineToPoint_(IVar17,in_d0 + in_d2 + -14.0,in_d1 + 34.0);\n IVar18 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3ff0000000000000,0x3fb47ae147ae147b);\n NSColor::setStroke(IVar18);\n NSBezierPath::setLineWidth_(IVar17,0x3ff0000000000000);\n NSBezierPath::stroke(IVar17);\n dVar33 = dVar32 + (double)(long)((dVar42 - dVar31) * 0.5) + -1.0;\n dVar32 = extraout_d0;\n objc_stub::drawInRect_withAttributes_\n ((ID)self,dVar28 + (double)(long)((dVar37 - extraout_d0) * 0.5),IVar14);\n if ((int)IVar15 == 0xc9) {\n IVar14 = objc_stub::skinTonePreset((ID)self_03);\n CVar46.field0_0x0.field1_0x8 = in_d1;\n CVar46.field0_0x0.field0_0x0 = in_d0;\n CVar46.field1_0x10.field1_0x8 = in_d3;\n CVar46.field1_0x10.field0_0x0 = in_d2;\n dVar33 = in_d1;\n dVar32 = in_d2;\n dVar31 = in_d3;\n drawSkinTonePresetStripInSectionRect_accentColor_selectedPreset_\n (param_1,CVar46,local_260,IVar14);\n }\n objc_stub::bounds(param_1);\n CVar47.field0_0x0.field1_0x8 = dVar33;\n CVar47.field0_0x0.field0_0x0 = extraout_d0_00;\n CVar47.field1_0x10.field1_0x8 = dVar31;\n CVar47.field1_0x10.field0_0x0 = dVar32;\n IVar14 = interactionItemsForBounds_(param_1,CVar47);\n lStack_1e8 = 0;\n local_1f0 = 0;\n uStack_1d8 = 0;\n local_1e0 = (long *)0x0;\n uStack_1c8 = 0;\n local_1d0 = 0;\n uStack_1b8 = 0;\n uStack_1c0 = 0;\n IVar15 = objc_stub::countByEnumeratingWithState_objects_count_\n ((ID)self_02,&local_1f0,auStack_130,0x10);\n if (IVar15 != 0) {\n lVar22 = *local_1e0;\n local_300 = 0.12;\n do {\n IVar17 = 0;\n do {\n dVar28 = dVar33;\n dVar37 = dVar32;\n dVar42 = dVar31;\n if (*local_1e0 != lVar22) {\n _objc_enumerationMutation(self_02);\n dVar28 = dVar33;\n dVar37 = dVar32;\n dVar42 = dVar31;\n }\n self_05 = *(ID *)(lStack_1e8 + IVar17 * 8);\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_id);\n IVar18 = objc_stub::unsignedIntValue(IVar18);\n lStack_228 = 0;\n local_230 = 0;\n uStack_218 = 0;\n local_220 = (long *)0x0;\n uStack_208 = 0;\n local_210 = 0;\n uStack_1f8 = 0;\n uStack_200 = 0;\n IVar19 = objc_stub::countByEnumeratingWithState_objects_count_\n (IVar14,&local_230,auStack_1b0,0x10);\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (IVar19 != 0) {\n lVar24 = *local_220;\nLAB_10001872c:\n IVar25 = 0;\nLAB_100018730:\n if (*local_220 != lVar24) {\n _objc_enumerationMutation(IVar14);\n }\n self_04 = *(ID *)(lStack_228 + IVar25 * 8);\n IVar20 = objc_stub::objectForKeyedSubscript_(self_04,&cf_parameterID);\n IVar20 = objc_stub::unsignedIntValue(IVar20);\n iVar26 = (int)IVar18;\n if ((int)IVar20 != iVar26) goto code_r0x000100018768;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (self_04 != 0) {\n IVar19 = objc_stub::objectForKeyedSubscript_(self_04,&cf_rowRect);\n IVar19 = objc_stub::rectValue(IVar19);\n iVar12 = (int)IVar19;\n dVar33 = in_d1;\n dVar32 = in_d2;\n dVar31 = in_d3;\n _NSIntersectsRect(in_d0);\n if (iVar12 != 0) {\n IVar19 = NSNumber::numberWithUnsignedInt_((ID)&_OBJC_CLASS___NSNumber,IVar18);\n ppuVar21 = (undefined **)\n objc_stub::objectForKeyedSubscript_\n ((ID)param_4.field0_0x0.field1_0x8,IVar19);\n self_01 = &PTR__OBJC_CLASS___NSConstantDoubleNumber_1000b04c0;\n if (ppuVar21 != (undefined **)0x0) {\n self_01 = ppuVar21;\n }\n IVar19 = objc_stub::objectForKeyedSubscript_(self_05,&cf_targetIndex);\n if (IVar19 != 0) {\n IVar19 = objc_stub::objectForKeyedSubscript_(self_05,&cf_targetIndex);\n IVar19 = objc_stub::integerValue(IVar19);\n dVar29 = self_03;\n FUN_1000110d4(self_03,IVar19);\n self_01 = (undefined **)\n NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,dVar29);\n }\n dVar29 = self_03;\n FUN_10001120c(self_03,IVar18);\n bVar13 = SUB84(dVar29,0);\n uVar23 = 1;\n if (self_03 == 0.0) goto switchD_1000188a0_caseD_5;\n switch(iVar26) {\n case 2:\n objc_stub::skinBrightness((ID)self_03);\n dVar29 = extraout_d0_16;\n break;\n case 3:\n objc_stub::radius((ID)self_03);\n dVar33 = -8.0;\n dVar29 = extraout_d0_20;\n goto LAB_100018b1c;\n case 4:\n objc_stub::sharpness((ID)self_03);\n dVar29 = extraout_d0_18;\n break;\n default:\n goto switchD_1000188a0_caseD_5;\n case 8:\n objc_stub::maskSoftness((ID)self_03);\n dVar33 = -0.6;\n dVar29 = extraout_d0_11;\n goto LAB_100018b1c;\n case 9:\n objc_stub::maskEdgeProtect((ID)self_03);\n dVar33 = -0.4;\n dVar29 = extraout_d0_13;\n goto LAB_100018b1c;\n case 10:\n IVar18 = objc_stub::showChannelInfo((ID)self_03);\n uVar23 = (uint)IVar18;\n goto LAB_100018ac4;\n case 0xc:\n objc_stub::midtoneDetail((ID)self_03);\n dVar29 = extraout_d0_10;\n break;\n case 0xd:\n dVar29 = (double)objc_stub::debugChannelMode((ID)self_03);\nLAB_100018a18:\n uVar23 = (uint)(dVar29 == 0.0);\n goto switchD_1000188a0_caseD_5;\n case 0xe:\n objc_stub::skinHue((ID)self_03);\n dVar29 = extraout_d0_17;\n break;\n case 0xf:\n objc_stub::skinSaturation((ID)self_03);\n dVar29 = extraout_d0_15;\n break;\n case 0x10:\n objc_stub::skinEvenTone((ID)self_03);\n dVar29 = extraout_d0_21;\n break;\n case 0x11:\n objc_stub::highPassDetail((ID)self_03);\n dVar29 = extraout_d0_08;\n break;\n case 0x12:\n objc_stub::faceThin((ID)self_03);\n dVar29 = extraout_d0_07;\n break;\n case 0x13:\n case 0x23:\n IVar18 = NSUserDefaults::standardUserDefaults((ID)&_OBJC_CLASS___NSUserDefaults);\n IVar19 = NSUserDefaults::objectForKey_(IVar18,&cf_MSE18GlobalFaceBoxPreviewEnabled);\n uVar23 = 0;\n if (IVar19 != 0) {\n IVar18 = NSUserDefaults::boolForKey_(IVar18,&cf_MSE18GlobalFaceBoxPreviewEnabled);\n uVar23 = (uint)IVar18;\n }\n uVar23 = iVar26 != 0x1e ^ uVar23;\n goto switchD_1000188a0_caseD_5;\n case 0x14:\n IVar18 = objc_stub::faceSingleSelection((ID)self_03);\n uVar23 = (uint)IVar18;\n goto LAB_100018ac4;\n case 0x15:\n objc_stub::faceSelectionX((ID)self_03);\n dVar33 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < ABS(extraout_d0_23 + -0.5)) goto LAB_100018b08;\n objc_stub::faceSelectionY((ID)self_03);\n dVar29 = extraout_d0_44 + -0.5;\n break;\n case 0x16:\n objc_stub::faceShort((ID)self_03);\n dVar29 = extraout_d0_22;\n break;\n case 0x17:\n objc_stub::faceNarrow((ID)self_03);\n dVar29 = extraout_d0_03;\n break;\n case 0x18:\n objc_stub::faceChin((ID)self_03);\n dVar29 = extraout_d0_14;\n break;\n case 0x19:\n objc_stub::faceV((ID)self_03);\n dVar29 = extraout_d0_41;\n break;\n case 0x1a:\n objc_stub::faceJaw((ID)self_03);\n dVar29 = extraout_d0_04;\n break;\n case 0x1b:\n objc_stub::faceCheekbone((ID)self_03);\n dVar29 = extraout_d0_12;\n break;\n case 0x1c:\n objc_stub::faceSmallHead((ID)self_03);\n dVar29 = extraout_d0_06;\n break;\n case 0x1d:\n objc_stub::faceSmallHeadRange((ID)self_03);\n dVar29 = extraout_d0_19;\n break;\n case 0x1e:\n objc_stub::featureProtectionRelease((ID)self_03);\n dVar29 = extraout_d0_05;\n break;\n case 0x1f:\n objc_stub::teethWhitening((ID)self_03);\n dVar29 = extraout_d0_43;\n break;\n case 0x20:\n objc_stub::eyeBrightening((ID)self_03);\n dVar29 = extraout_d0_42;\n break;\n case 0x21:\n objc_stub::faceBigEye((ID)self_03);\n dVar29 = extraout_d0_09;\n break;\n case 0x22:\n case 0x24:\n case 0x25:\n case 0x26:\n FUN_10000c4d0(self_03);\n IVar18 = objc_stub::faceTrackEnabled((ID)self_03);\n if ((((IVar18 & 1) == 0) &&\n (IVar18 = objc_stub::faceTrackStatus((ID)self_03), IVar18 == 0)) &&\n (IVar18 = objc_stub::faceTrackFrameCount((ID)self_03), IVar18 == 0)) {\n objc_stub::faceTrackProgress((ID)self_03);\n dVar33 = 2.220446049250313e-16;\n if (ABS(extraout_d0_02) <= 2.220446049250313e-16) {\n IVar18 = objc_stub::faceTrackData((ID)self_03);\n IVar18 = objc_stub::length(IVar18);\n if ((IVar18 == 0) &&\n (IVar18 = objc_stub::faceTrackTargetCount((ID)self_03), IVar18 == 1)) {\n dVar29 = self_03;\n FUN_1000181b4(self_03,0);\n IVar18 = objc_stub::length((ID)dVar29);\n if ((IVar18 == 0) &&\n ((dVar29 = self_03, FUN_1000110d4(self_03,0), dVar29 == 0.0 &&\n (IVar18 = objc_stub::faceTrackTargetCount((ID)self_03), IVar18 == 1)))) {\n dVar29 = self_03;\n FUN_1000181b4(self_03,0);\n IVar18 = objc_stub::length((ID)dVar29);\n if (IVar18 == 0) {\n dVar29 = self_03;\n FUN_1000110d4(self_03,0);\n goto LAB_100018a18;\n }\n }\n }\n }\n }\nLAB_100018b08:\n uVar23 = 0;\n goto switchD_1000188a0_caseD_5;\n case 0x27:\n IVar18 = objc_stub::fastMultiFaceMode((ID)self_03);\n uVar23 = (uint)IVar18;\nLAB_100018ac4:\n uVar23 = uVar23 ^ 1;\n goto switchD_1000188a0_caseD_5;\n case 0x28:\n objc_stub::faceJumpGuardRange((ID)self_03);\n dVar33 = -1.5;\n dVar29 = extraout_d0_24;\nLAB_100018b1c:\n dVar29 = dVar29 + dVar33;\n }\n dVar33 = 2.220446049250313e-16;\n uVar23 = (uint)(ABS(dVar29) <= 2.220446049250313e-16);\nswitchD_1000188a0_caseD_5:\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_toggle);\n if ((int)IVar18 == 0) {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_button);\n if ((int)IVar18 == 0) {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_kind);\n IVar18 = objc_stub::isEqualToString_(IVar18,&cf_mode);\n if ((int)IVar18 == 0) {\n objc_stub::doubleValue((ID)self_01);\n if ((iVar26 == 0x1e) || (dVar29 = extraout_d0_36, iVar26 == 0x11)) {\n dVar33 = 1.0;\n dVar30 = 1.0;\n if (extraout_d0_36 <= 1.0) {\n dVar30 = extraout_d0_36;\n }\n dVar29 = 1.0;\n if (0.0 <= extraout_d0_36) {\n dVar29 = 1.0 - dVar30;\n }\n }\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar33;\n dVar39 = dVar32;\n dVar43 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_trackRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar35 = dVar34;\n dVar41 = dVar40;\n dVar45 = dVar44;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n CVar4.field0_0x0.field1_0x8 = dVar30;\n CVar4.field0_0x0.field0_0x0 = (double)extraout_d0_38;\n CVar4.field1_0x10.field0_0x0 = dVar39;\n CVar4.field1_0x10.field1_0x8 = dVar43;\n CVar8.field0_0x0.field1_0x8 = dVar34;\n CVar8.field0_0x0.field0_0x0 = (double)extraout_d0_39;\n CVar8.field1_0x10.field0_0x0 = dVar40;\n CVar8.field1_0x10.field1_0x8 = dVar44;\n CVar11.field0_0x0.field1_0x8 = dVar35;\n CVar11.field0_0x0.field0_0x0 = (double)extraout_d0_40;\n CVar11.field1_0x10.field0_0x0 = dVar41;\n CVar11.field1_0x10.field1_0x8 = dVar45;\n CVar51.field0_0x0.field1_0x8 = dVar28;\n CVar51.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar51.field1_0x10.field1_0x8 = dVar42;\n CVar51.field1_0x10.field0_0x0 = dVar37;\n CVar55.field0_0x0.field1_0x8 = dVar33;\n CVar55.field0_0x0.field0_0x0 = extraout_d0_37;\n CVar55.field1_0x10.field1_0x8 = dVar31;\n CVar55.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawSliderControl_rowRect_eyeRect_trackRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar51,CVar55,CVar4,CVar8,CVar11,dVar29,bVar13,uVar23\n ,local_260);\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar34 = dVar32;\n dVar39 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar35 = dVar34;\n dVar40 = dVar39;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n IVar18 = objc_stub::integerValue((ID)self_01);\n CVar3.field0_0x0.field1_0x8 = dVar29;\n CVar3.field0_0x0.field0_0x0 = (double)extraout_d0_34;\n CVar3.field1_0x10.field0_0x0 = dVar34;\n CVar3.field1_0x10.field1_0x8 = dVar39;\n CVar7.field0_0x0.field1_0x8 = dVar30;\n CVar7.field0_0x0.field0_0x0 = (double)extraout_d0_35;\n CVar7.field1_0x10.field0_0x0 = dVar35;\n CVar7.field1_0x10.field1_0x8 = dVar40;\n CVar50.field0_0x0.field1_0x8 = dVar28;\n CVar50.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar50.field1_0x10.field1_0x8 = dVar42;\n CVar50.field1_0x10.field0_0x0 = dVar37;\n CVar54.field0_0x0.field1_0x8 = dVar33;\n CVar54.field0_0x0.field0_0x0 = extraout_d0_33;\n CVar54.field1_0x10.field1_0x8 = dVar31;\n CVar54.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawModeControl_rowRect_eyeRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar50,CVar54,CVar3,CVar7,IVar18,bVar13,uVar23,\n local_260);\n }\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar35 = dVar32;\n dVar41 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar39 = dVar35;\n dVar43 = dVar41;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_deleteRect);\n objc_stub::rectValue(IVar18);\n CVar2.field0_0x0.field1_0x8 = dVar29;\n CVar2.field0_0x0.field0_0x0 = (double)extraout_d0_30;\n CVar2.field1_0x10.field0_0x0 = dVar35;\n CVar2.field1_0x10.field1_0x8 = dVar41;\n CVar6.field0_0x0.field1_0x8 = dVar30;\n CVar6.field0_0x0.field0_0x0 = (double)extraout_d0_31;\n CVar6.field1_0x10.field0_0x0 = dVar39;\n CVar6.field1_0x10.field1_0x8 = dVar43;\n CVar10.field0_0x0.field1_0x8 = dVar34;\n CVar10.field0_0x0.field0_0x0 = (double)extraout_d0_32;\n CVar10.field1_0x10.field0_0x0 = dVar40;\n CVar10.field1_0x10.field1_0x8 = dVar44;\n CVar49.field0_0x0.field1_0x8 = dVar28;\n CVar49.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar49.field1_0x10.field1_0x8 = dVar42;\n CVar49.field1_0x10.field0_0x0 = dVar37;\n CVar53.field0_0x0.field1_0x8 = dVar33;\n CVar53.field0_0x0.field0_0x0 = extraout_d0_29;\n CVar53.field1_0x10.field1_0x8 = dVar31;\n CVar53.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawButtonControl_rowRect_eyeRect_buttonRect_resetRect_deleteRect_enabled_usesDefaultValue_accentColor_controlPanelValue_\n (param_1,self_05,CVar49,CVar53,CVar2,CVar6,CVar10,bVar13,uVar23,\n local_260,(ID)self_03);\n }\n }\n else {\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_eyeRect);\n objc_stub::rectValue(IVar18);\n dVar29 = dVar33;\n dVar35 = dVar32;\n dVar41 = dVar31;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_toggleRect);\n objc_stub::rectValue(IVar18);\n dVar30 = dVar29;\n dVar39 = dVar35;\n dVar43 = dVar41;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_valueRect);\n objc_stub::rectValue(IVar18);\n dVar34 = dVar30;\n dVar40 = dVar39;\n dVar44 = dVar43;\n IVar18 = objc_stub::objectForKeyedSubscript_(self_04,&cf_resetRect);\n objc_stub::rectValue(IVar18);\n IVar18 = objc_stub::boolValue((ID)self_01);\n CVar1.field0_0x0.field1_0x8 = dVar29;\n CVar1.field0_0x0.field0_0x0 = (double)extraout_d0_26;\n CVar1.field1_0x10.field0_0x0 = dVar35;\n CVar1.field1_0x10.field1_0x8 = dVar41;\n CVar5.field0_0x0.field1_0x8 = dVar30;\n CVar5.field0_0x0.field0_0x0 = (double)extraout_d0_27;\n CVar5.field1_0x10.field0_0x0 = dVar39;\n CVar5.field1_0x10.field1_0x8 = dVar43;\n CVar9.field0_0x0.field1_0x8 = dVar34;\n CVar9.field0_0x0.field0_0x0 = (double)extraout_d0_28;\n CVar9.field1_0x10.field0_0x0 = dVar40;\n CVar9.field1_0x10.field1_0x8 = dVar44;\n CVar48.field0_0x0.field1_0x8 = dVar28;\n CVar48.field0_0x0.field0_0x0 = extraout_d0_01;\n CVar48.field1_0x10.field1_0x8 = dVar42;\n CVar48.field1_0x10.field0_0x0 = dVar37;\n CVar52.field0_0x0.field1_0x8 = dVar33;\n CVar52.field0_0x0.field0_0x0 = extraout_d0_25;\n CVar52.field1_0x10.field1_0x8 = dVar31;\n CVar52.field1_0x10.field0_0x0 = dVar32;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n drawToggleControl_rowRect_eyeRect_toggleRect_valueRect_resetRect_value_enabled_usesDefaultValue_accentColor_\n (param_1,self_05,CVar48,CVar52,CVar1,CVar5,CVar9,(bool)IVar18,bVar13,\n uVar23,local_260);\n }\n IVar18 = objc_stub::objectForKeyedSubscript_(self_05,&cf_dividerAfter);\n IVar18 = objc_stub::boolValue(IVar18);\n if ((int)IVar18 != 0) {\n dVar33 = dVar28 + dVar42 + 5.0;\n IVar18 = NSBezierPath::bezierPath((ID)&_OBJC_CLASS___NSBezierPath);\n NSBezierPath::moveToPoint_(IVar18,extraout_d0_01 + 4.0,dVar33);\n NSBezierPath::lineToPoint_(IVar18,extraout_d0_01 + dVar37 + -4.0,dVar33);\n dVar33 = local_300;\n IVar19 = NSColor::colorWithCalibratedWhite_alpha_\n ((ID)&_OBJC_CLASS___NSColor,0x3ff0000000000000);\n NSColor::setStroke(IVar19);\n NSBezierPath::setLineWidth_(IVar18,0x3ff0000000000000);\n NSBezierPath::stroke(IVar18);\n }\n }\n }\n }\nLAB_100018fd0:\n IVar17 = IVar17 + 1;\n } while (IVar17 != IVar15);\n IVar15 = objc_stub::countByEnumeratingWithState_objects_count_\n ((ID)self_02,&local_1f0,auStack_130,0x10);\n } while (IVar15 != 0);\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\ncode_r0x000100018768:\n IVar25 = IVar25 + 1;\n if (IVar19 == IVar25) goto code_r0x000100018774;\n goto LAB_100018730;\ncode_r0x000100018774:\n IVar19 = objc_stub::countByEnumeratingWithState_objects_count_(IVar14,&local_230,auStack_1b0,0x10)\n ;\n dVar33 = dVar28;\n dVar32 = dVar37;\n dVar31 = dVar42;\n if (IVar19 == 0) goto LAB_100018fd0;\n goto LAB_10001872c;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_62a1eeb98eefadf5e0f8a555f87edabce4769883914b86b4e797e66e2bd27320", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\ndouble FUN_10002d838(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n uint param_5)\n\n{\n double dVar1;\n \n _CGRectStandardize();\n _CGRectIntersection();\n _CGRectIsNull();\n if (((((param_5 & 1) != 0) ||\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) != 0)) ||\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar1 <= 2.220446049250313e-16)) ||\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar1 <= 2.220446049250313e-16)) {\n dVar1 = *(double *)PTR__CGRectNull_1000a8148;\n }\n else {\n dVar1 = param_1;\n _CGRectGetMinX(param_1,param_2,param_3,param_4);\n _CGRectGetMaxY(param_1,param_2,param_3,param_4);\n _CGRectGetWidth(param_1,param_2,param_3,param_4);\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n }\n return dVar1;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10002d838" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\ndouble FUN_10002d838(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n uint param_5)\n\n{\n double dVar1;\n \n _CGRectStandardize();\n _CGRectIntersection();\n _CGRectIsNull();\n if (((((param_5 & 1) != 0) ||\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) != 0)) ||\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n dVar1 <= 2.220446049250313e-16)) ||\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n dVar1 <= 2.220446049250313e-16)) {\n dVar1 = *(double *)PTR__CGRectNull_1000a8148;\n }\n else {\n dVar1 = param_1;\n _CGRectGetMinX(param_1,param_2,param_3,param_4);\n _CGRectGetMaxY(param_1,param_2,param_3,param_4);\n _CGRectGetWidth(param_1,param_2,param_3,param_4);\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n }\n return dVar1;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_69860933a82c3d59dc66557ca0d83702be829cb7e9d9172372f0c4893965fcbb", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000bd1f8", + "bytes_hex": "0000000000008e40", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000bd1f8", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000bd1f8", + "bytes_hex": "0000000000008e40", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_6dd564c4672e60ef0e8c046eb49449486ee1eda5481eaa04f0e5a0dda1c4b47e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_1000508d8(void)\n\n{\n bool bVar1;\n bool bVar2;\n char *pcVar3;\n double dVar4;\n \n pcVar3 = _getenv(\"MSE18_VISION_DOWNSAMPLE_LONG_EDGE\");\n if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\\0')) {\n dVar4 = _strtod(pcVar3,(char **)0x0);\n bVar1 = true;\n bVar2 = false;\n if (dVar4 <= 4096.0) {\n bVar1 = false;\n bVar2 = true;\n if (!NAN(dVar4)) {\n bVar1 = dVar4 < 640.0;\n bVar2 = false;\n }\n }\n if (bVar1 == bVar2 && (ulong)ABS(dVar4) < 0x7ff0000000000000) {\n DAT_1000bd1f8 = dVar4;\n }\n }\n return;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x1000508d8" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nvoid FUN_1000508d8(void)\n\n{\n bool bVar1;\n bool bVar2;\n char *pcVar3;\n double dVar4;\n \n pcVar3 = _getenv(\"MSE18_VISION_DOWNSAMPLE_LONG_EDGE\");\n if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\\0')) {\n dVar4 = _strtod(pcVar3,(char **)0x0);\n bVar1 = true;\n bVar2 = false;\n if (dVar4 <= 4096.0) {\n bVar1 = false;\n bVar2 = true;\n if (!NAN(dVar4)) {\n bVar1 = dVar4 < 640.0;\n bVar2 = false;\n }\n }\n if (bVar1 == bVar2 && (ulong)ABS(dVar4) < 0x7ff0000000000000) {\n DAT_1000bd1f8 = dVar4;\n }\n }\n return;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_83a46caee609281fe936d7bb17d234c6ab732565936a8a005b7ca84166d84250", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10003b72c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* Function Stack Size: 0x60 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::\n mss_lockedCachedFrameAnalysisFaceObservationsInCache_inputImage_sourceTileRect_renderTime_observationsOut_\n (ID param_1,SEL param_2,ID param_3,ID param_4,CGRect param_5,\n AnonymousStructure0 param_6,ID *param_7)\n\n{\n undefined *puVar1;\n bool bVar2;\n ID IVar3;\n ulong uVar4;\n undefined8 *puVar5;\n undefined8 *puVar6;\n ulong uVar7;\n long lVar8;\n ID IVar9;\n undefined8 local_170;\n undefined8 uStack_168;\n undefined8 local_160;\n undefined8 local_150;\n long lStack_148;\n long *local_140;\n undefined8 uStack_138;\n undefined8 local_130;\n undefined8 uStack_128;\n undefined8 uStack_120;\n undefined8 uStack_118;\n undefined1 auStack_108 [128];\n long local_88;\n \n puVar6 = param_5.field0_0x0.field1_0x8;\n puVar5 = param_5.field0_0x0.field0_0x0;\n local_88 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (puVar6 != (undefined8 *)0x0) {\n *puVar6 = 0;\n }\n bVar2 = 0;\n if ((param_3 != 0) && (param_4 != 0)) {\n if ((*(uint *)((long)puVar5 + 0xc) & 0x1d) == 1) {\n uStack_128 = 0;\n local_130 = 0;\n uStack_118 = 0;\n uStack_120 = 0;\n lStack_148 = 0;\n local_150 = 0;\n uStack_138 = 0;\n local_140 = (long *)0x0;\n IVar3 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_3,&local_150,auStack_108,0x10,puVar6,param_5.field1_0x10.field0_0x0,\n param_5.field1_0x10.field1_0x8);\n bVar2 = 0;\n if (IVar3 != 0) {\n lVar8 = *local_140;\n do {\n IVar9 = 0;\n do {\n if (*local_140 != lVar8) {\n _objc_enumerationMutation(param_3);\n }\n uVar7 = *(ulong *)(lStack_148 + IVar9 * 8);\n uStack_168 = puVar5[1];\n local_170 = *puVar5;\n local_160 = puVar5[2];\n uVar4 = uVar7;\n FUN_10003b730(uVar7,param_4,&local_170);\n if ((uVar4 & 1) != 0) {\n if (uVar7 == 0) goto LAB_10003b6e8;\n lVar8 = *(long *)(param_1 + 0x2a8) + 1;\n *(long *)(param_1 + 0x2a8) = lVar8;\n *(long *)(uVar7 + 0x68) = lVar8;\n if (puVar6 != (undefined8 *)0x0) {\n puVar1 = PTR____NSArray0__struct_1000a8110;\n if (*(undefined **)(uVar7 + 0x60) != (undefined *)0x0) {\n puVar1 = *(undefined **)(uVar7 + 0x60);\n }\n *puVar6 = puVar1;\n }\n bVar2 = 1;\n goto LAB_10003b6ec;\n }\n IVar9 = IVar9 + 1;\n } while (IVar3 != IVar9);\n IVar3 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_3,&local_150,auStack_108,0x10);\n bVar2 = 0;\n } while (IVar3 != 0);\n }\n }\n else {\nLAB_10003b6e8:\n bVar2 = 0;\n }\n }\nLAB_10003b6ec:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_88) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return bVar2;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003b56c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10003b72c to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* Function Stack Size: 0x60 bytes */\n\nbool MSSuperSkinSmoothingPlugIn::\n mss_lockedCachedFrameAnalysisFaceObservationsInCache_inputImage_sourceTileRect_renderTime_observationsOut_\n (ID param_1,SEL param_2,ID param_3,ID param_4,CGRect param_5,\n AnonymousStructure0 param_6,ID *param_7)\n\n{\n undefined *puVar1;\n bool bVar2;\n ID IVar3;\n ulong uVar4;\n undefined8 *puVar5;\n undefined8 *puVar6;\n ulong uVar7;\n long lVar8;\n ID IVar9;\n undefined8 local_170;\n undefined8 uStack_168;\n undefined8 local_160;\n undefined8 local_150;\n long lStack_148;\n long *local_140;\n undefined8 uStack_138;\n undefined8 local_130;\n undefined8 uStack_128;\n undefined8 uStack_120;\n undefined8 uStack_118;\n undefined1 auStack_108 [128];\n long local_88;\n \n puVar6 = param_5.field0_0x0.field1_0x8;\n puVar5 = param_5.field0_0x0.field0_0x0;\n local_88 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (puVar6 != (undefined8 *)0x0) {\n *puVar6 = 0;\n }\n bVar2 = 0;\n if ((param_3 != 0) && (param_4 != 0)) {\n if ((*(uint *)((long)puVar5 + 0xc) & 0x1d) == 1) {\n uStack_128 = 0;\n local_130 = 0;\n uStack_118 = 0;\n uStack_120 = 0;\n lStack_148 = 0;\n local_150 = 0;\n uStack_138 = 0;\n local_140 = (long *)0x0;\n IVar3 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_3,&local_150,auStack_108,0x10,puVar6,param_5.field1_0x10.field0_0x0,\n param_5.field1_0x10.field1_0x8);\n bVar2 = 0;\n if (IVar3 != 0) {\n lVar8 = *local_140;\n do {\n IVar9 = 0;\n do {\n if (*local_140 != lVar8) {\n _objc_enumerationMutation(param_3);\n }\n uVar7 = *(ulong *)(lStack_148 + IVar9 * 8);\n uStack_168 = puVar5[1];\n local_170 = *puVar5;\n local_160 = puVar5[2];\n uVar4 = uVar7;\n FUN_10003b730(uVar7,param_4,&local_170);\n if ((uVar4 & 1) != 0) {\n if (uVar7 == 0) goto LAB_10003b6e8;\n lVar8 = *(long *)(param_1 + 0x2a8) + 1;\n *(long *)(param_1 + 0x2a8) = lVar8;\n *(long *)(uVar7 + 0x68) = lVar8;\n if (puVar6 != (undefined8 *)0x0) {\n puVar1 = PTR____NSArray0__struct_1000a8110;\n if (*(undefined **)(uVar7 + 0x60) != (undefined *)0x0) {\n puVar1 = *(undefined **)(uVar7 + 0x60);\n }\n *puVar6 = puVar1;\n }\n bVar2 = 1;\n goto LAB_10003b6ec;\n }\n IVar9 = IVar9 + 1;\n } while (IVar3 != IVar9);\n IVar3 = objc_stub::countByEnumeratingWithState_objects_count_\n (param_3,&local_150,auStack_108,0x10);\n bVar2 = 0;\n } while (IVar3 != 0);\n }\n }\n else {\nLAB_10003b6e8:\n bVar2 = 0;\n }\n }\nLAB_10003b6ec:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_88) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return bVar2;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_91e7726258e4e472fd1fc7641818b6f0b270b01ffc0296d4a1c9bb1a33c50c51", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_100050868(void)\n\n{\n bool bVar1;\n byte bVar2;\n char *pcVar3;\n \n pcVar3 = _getenv(\"MSE18_DISABLE_VISION_DOWNSAMPLE\");\n if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\\0')) {\n bVar1 = false;\n }\n else if (*pcVar3 == '0') {\n bVar1 = pcVar3[1] != '\\0';\n }\n else {\n bVar1 = true;\n }\n bVar2 = 0xc0;\n FUN_10004970c();\n DAT_1000bd1f0 = (bVar1 | bVar2) ^ 1;\n return;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100050868" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nvoid FUN_100050868(void)\n\n{\n bool bVar1;\n byte bVar2;\n char *pcVar3;\n \n pcVar3 = _getenv(\"MSE18_DISABLE_VISION_DOWNSAMPLE\");\n if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\\0')) {\n bVar1 = false;\n }\n else if (*pcVar3 == '0') {\n bVar1 = pcVar3[1] != '\\0';\n }\n else {\n bVar1 = true;\n }\n bVar2 = 0xc0;\n FUN_10004970c();\n DAT_1000bd1f0 = (bVar1 | bVar2) ^ 1;\n return;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_945c29e86b136b0f4cb98503710f100400ad983ec1908da17b45e2af372ee3a8", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000863e0", + "bytes_hex": "0ad7a3703d0ac7bf", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000863e0", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000863e0", + "bytes_hex": "0ad7a3703d0ac7bf", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_a846fea7e395bae6a728ccf108f6fd3bbfa326b642da56b28726f78295fe7dee", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "Ghidra Listing reports a terminal call at 0x10001b580 to 0x10007a910 _CGRectContainsPoint (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x10001b070: sub sp, sp, #0xf0\n0x10001b074: stp d15, d14, [sp, #0x60]\n0x10001b078: stp d13, d12, [sp, #0x70]\n0x10001b07c: stp d11, d10, [sp, #0x80]\n0x10001b080: stp d9, d8, [sp, #0x90]\n0x10001b084: stp x26, x25, [sp, #0xa0]\n0x10001b088: stp x24, x23, [sp, #0xb0]\n0x10001b08c: stp x22, x21, [sp, #0xc0]\n0x10001b090: stp x20, x19, [sp, #0xd0]\n0x10001b094: stp x29, x30, [sp, #0xe0]\n0x10001b098: add x29, sp, #0xe0\n0x10001b09c: fmov d8, d3\n0x10001b0a0: fmov d9, d2\n0x10001b0a4: fmov d10, d1\n0x10001b0a8: fmov d11, d0\n0x10001b0ac: mov x19, x0\n0x10001b0b0: bl 0x10007d560\n0x10001b0b4: cmp x0, #0x4d\n0x10001b0b8: b.cc 0x10001b408\n0x10001b0bc: fmov d0, d11\n0x10001b0c0: fmov d1, d10\n0x10001b0c4: fmov d2, d9\n0x10001b0c8: fmov d3, d8\n0x10001b0cc: bl 0x10007a9d0\n0x10001b0d0: tbnz w0, #0x0, 0x10001b408\n0x10001b0d4: fmov d0, d11\n0x10001b0d8: fmov d1, d10\n0x10001b0dc: fmov d2, d9\n0x10001b0e0: fmov d3, d8\n0x10001b0e4: bl 0x10007a9b8\n0x10001b0e8: tbnz w0, #0x0, 0x10001b408\n0x10001b0ec: fmov d0, d11\n0x10001b0f0: fmov d1, d10\n0x10001b0f4: fmov d2, d9\n0x10001b0f8: fmov d3, d8\n0x10001b0fc: bl 0x10007a988\n0x10001b100: mov x8, #0x3cb0000000000000\n0x10001b104: fmov d1, x8\n0x10001b108: fcmp d0, d1\n0x10001b10c: b.le 0x10001b408\n0x10001b110: fmov d0, d11\n0x10001b114: fmov d1, d10\n0x10001b118: fmov d2, d9\n0x10001b11c: fmov d3, d8\n0x10001b120: bl 0x10007a934\n0x10001b124: mov x8, #0x3cb0000000000000\n0x10001b128: fmov d1, x8\n0x10001b12c: fcmp d0, d1\n0x10001b130: b.le 0x10001b408\n0x10001b134: fmov d0, d11\n0x10001b138: fmov d1, d10\n0x10001b13c: fmov d2, d9\n0x10001b140: fmov d3, d8\n0x10001b144: bl 0x10007a9dc\n0x10001b148: fmov d9, d0\n0x10001b14c: fmov d10, d1\n0x10001b150: fmov d11, d2\n0x10001b154: fmov d12, d3\n0x10001b158: bl 0x10007a988\n0x10001b15c: fmov d8, d0\n0x10001b160: fmov d0, d9\n0x10001b164: fmov d1, d10\n0x10001b168: fmov d2, d11\n0x10001b16c: fmov d3, d12\n0x10001b170: bl 0x10007a934\n0x10001b174: str d0, [sp, #0x58]\n0x10001b178: mov x8, #0x3cb0000000000000\n0x10001b17c: fmov d0, x8\n0x10001b180: str d8, [sp, #0x48]\n0x10001b184: fcmp d8, d0\n0x10001b188: b.ls 0x10001b408\n0x10001b18c: fmov d0, x8\n0x10001b190: ldr d1, [sp, #0x58]\n0x10001b194: fcmp d1, d0\n0x10001b198: b.ls 0x10001b408\n0x10001b19c: ldr d1, [sp, #0x48]\n0x10001b1a0: fneg d0, d1\n0x10001b1a4: str d0, [sp, #0x8]\n0x10001b1a8: adrp x8, 0x100086000\n0x10001b1ac: ldr d0, [x8, #0x240]\n0x10001b1b0: fmul d4, d1, d0\n0x10001b1b4: ldr d1, [sp, #0x58]\n0x10001b1b8: fmul d5, d1, d0\n0x10001b1bc: fmov d0, d9\n0x10001b1c0: fmov d1, d10\n0x10001b1c4: fmov d2, d11\n0x10001b1c8: fmov d3, d12\n0x10001b1cc: bl 0x10007a994\n0x10001b1d0: stp d1, d0, [sp, #0x38]\n0x10001b1d4: stp d3, d2, [sp, #0x28]\n0x10001b1d8: mov x24, #0x0\n0x10001b1dc: mov x23, #0x0\n0x10001b1e0: mov x22, #0x0\n0x10001b1e4: mov x20, #0x0\n0x10001b1e8: adrp x8, 0x1000a8000\n0x10001b1ec: ldr x8, [x8, #0x140]\n0x10001b1f0: ldr d0, [x8]\n0x10001b1f4: mov x8, #-0x10000000000001\n0x10001b1f8: fmov d10, x8\n0x10001b1fc: mov x25, #0x7fefffffffffffff\n0x10001b200: fmov d9, x25\n0x10001b204: fmov d14, -0x4030000000000000\n0x10001b208: fmov d8, d9\n0x10001b20c: fmov d13, d10\n0x10001b210: fmov d12, d9\n0x10001b214: fmov d15, d10\n0x10001b218: str d9, [sp, #0x50]\n0x10001b21c: fmov d11, d10\n0x10001b220: stp d0, d0, [sp, #0x18]\n0x10001b224: str d0, [sp, #0x10]\n0x10001b228: mov x0, x19\n0x10001b22c: mov x2, x20\n0x10001b230: bl 0x1000803c0\n0x10001b234: cbz x0, 0x10001b408\n0x10001b238: mov x21, x0\n0x10001b23c: bl 0x10007c8c0\n0x10001b240: fmov x8, d0\n0x10001b244: and x8, x8, #0x7fffffffffffffff\n0x10001b248: cmp x8, x25\n0x10001b24c: b.gt 0x10001b408\n0x10001b250: mov x0, x21\n0x10001b254: bl 0x10007c8e0\n0x10001b258: fmov x8, d0\n0x10001b25c: and x8, x8, #0x7fffffffffffffff\n0x10001b260: cmp x8, x25\n0x10001b264: b.gt 0x10001b408\n0x10001b268: mov x0, x21\n0x10001b26c: bl 0x10007c8c0\n0x10001b270: fcmp d0, d14\n0x10001b274: b.mi 0x10001b408\n0x10001b278: mov x0, x21\n0x10001b27c: bl 0x10007c8c0\n0x10001b280: fmov d1, 0x3ff4000000000000\n0x10001b284: fcmp d0, d1\n0x10001b288: b.gt 0x10001b408\n0x10001b28c: mov x0, x21\n0x10001b290: bl 0x10007c8e0\n0x10001b294: fcmp d0, d14\n0x10001b298: b.mi 0x10001b408\n0x10001b29c: mov x0, x21\n0x10001b2a0: bl 0x10007c8e0\n0x10001b2a4: fmov d1, 0x3ff4000000000000\n0x10001b2a8: fcmp d0, d1\n0x10001b2ac: b.gt 0x10001b408\n0x10001b2b0: mov x0, x21\n0x10001b2b4: bl 0x10007c8c0\n0x10001b2b8: fcmp d9, d0\n0x10001b2bc: fcsel d9, d9, d0, mi\n0x10001b2c0: mov x0, x21\n0x10001b2c4: bl 0x10007c8c0\n0x10001b2c8: fcmp d10, d0\n0x10001b2cc: fcsel d10, d0, d10, mi\n0x10001b2d0: mov x0, x21\n0x10001b2d4: bl 0x10007c8e0\n0x10001b2d8: fcmp d8, d0\n0x10001b2dc: fcsel d8, d8, d0, mi\n0x10001b2e0: mov x0, x21\n0x10001b2e4: bl 0x10007c8e0\n0x10001b2e8: fcmp d13, d0\n0x10001b2ec: fcsel d13, d0, d13, mi\n0x10001b2f0: cmp x20, #0x3b\n0x10001b2f4: b.cc 0x10001b3e4\n0x10001b2f8: cmp x20, #0x4c\n0x10001b2fc: b.eq 0x10001b3e4\n0x10001b300: mov x0, x21\n0x10001b304: bl 0x10007c8c0\n0x10001b308: fmov d14, d0\n0x10001b30c: mov x0, x21\n0x10001b310: bl 0x10007c8e0\n0x10001b314: fmov d5, d0\n0x10001b318: ldp d1, d0, [sp, #0x38]\n0x10001b31c: ldp d3, d2, [sp, #0x28]\n0x10001b320: fmov d4, d14\n0x10001b324: fmov d14, -0x4030000000000000\n0x10001b328: bl 0x10007a910\n0x10001b32c: cbz w0, 0x10001b408\n0x10001b330: mov x0, x21\n0x10001b334: bl 0x10007c8c0\n0x10001b338: fcmp d12, d0\n0x10001b33c: fcsel d12, d12, d0, mi\n0x10001b340: mov x0, x21\n0x10001b344: bl 0x10007c8c0\n0x10001b348: fcmp d15, d0\n0x10001b34c: fcsel d15, d0, d15, mi\n0x10001b350: mov x0, x21\n0x10001b354: bl 0x10007c8e0\n0x10001b358: ldr d1, [sp, #0x50]\n0x10001b35c: fcmp d1, d0\n0x10001b360: fcsel d1, d1, d0, mi\n0x10001b364: str d1, [sp, #0x50]\n0x10001b368: mov x0, x21\n0x10001b36c: bl 0x10007c8e0\n0x10001b370: fcmp d11, d0\n0x10001b374: fcsel d11, d0, d11, mi\n0x10001b378: mov x0, x21\n0x10001b37c: cmp x20, #0x45\n0x10001b380: b.cc 0x10001b3a4\n0x10001b384: bl 0x10007c8c0\n0x10001b388: ldr d1, [sp, #0x20]\n0x10001b38c: fadd d1, d1, d0\n0x10001b390: str d1, [sp, #0x20]\n0x10001b394: mov x0, x21\n0x10001b398: bl 0x10007c8e0\n0x10001b39c: add x24, x24, #0x1\n0x10001b3a0: b 0x10001b3e4\n0x10001b3a4: bl 0x10007c8c0\n0x10001b3a8: fmov d14, d0\n0x10001b3ac: mov x0, x21\n0x10001b3b0: bl 0x10007c8e0\n0x10001b3b4: cmp x20, #0x41\n0x10001b3b8: b.hi 0x10001b3d0\n0x10001b3bc: ldr d0, [sp, #0x18]\n0x10001b3c0: fadd d0, d0, d14\n0x10001b3c4: str d0, [sp, #0x18]\n0x10001b3c8: add x23, x23, #0x1\n0x10001b3cc: b 0x10001b3e0\n0x10001b3d0: ldr d0, [sp, #0x10]\n0x10001b3d4: fadd d0, d0, d14\n0x10001b3d8: str d0, [sp, #0x10]\n0x10001b3dc: add x22, x22, #0x1\n0x10001b3e0: fmov d14, -0x4030000000000000\n0x10001b3e4: add x20, x20, #0x1\n0x10001b3e8: cmp x20, #0x4d\n0x10001b3ec: b.ne 0x10001b228\n0x10001b3f0: fsub d1, d10, d9\n0x10001b3f4: fmov d0, 0x3fd0000000000000\n0x10001b3f8: ldr d2, [sp, #0x48]\n0x10001b3fc: fmul d2, d2, d0\n0x10001b400: fcmp d1, d2\n0x10001b404: b.pl 0x10001b438\n0x10001b408: mov w0, #0x0\n0x10001b40c: ldp x29, x30, [sp, #0xe0]\n0x10001b410: ldp x20, x19, [sp, #0xd0]\n0x10001b414: ldp x22, x21, [sp, #0xc0]\n0x10001b418: ldp x24, x23, [sp, #0xb0]\n0x10001b41c: ldp x26, x25, [sp, #0xa0]\n0x10001b420: ldp d9, d8, [sp, #0x90]\n0x10001b424: ldp d11, d10, [sp, #0x80]\n0x10001b428: ldp d13, d12, [sp, #0x70]\n0x10001b42c: ldp d15, d14, [sp, #0x60]\n0x10001b430: add sp, sp, #0xf0\n0x10001b434: ret\n0x10001b438: fsub d1, d13, d8\n0x10001b43c: ldr d2, [sp, #0x58]\n0x10001b440: fmul d0, d2, d0\n0x10001b444: fcmp d1, d0\n0x10001b448: b.mi 0x10001b408\n0x10001b44c: fsub d0, d15, d12\n0x10001b450: adrp x8, 0x100086000\n0x10001b454: ldr d1, [x8, #0x118]\n0x10001b458: ldr d2, [sp, #0x48]\n0x10001b45c: fmul d1, d2, d1\n0x10001b460: fcmp d0, d1\n0x10001b464: b.mi 0x10001b408\n0x10001b468: ldp d1, d3, [sp, #0x50]\n0x10001b46c: fsub d1, d11, d1\n0x10001b470: adrp x8, 0x100086000\n0x10001b474: ldr d2, [x8, #0x318]\n0x10001b478: fmul d2, d3, d2\n0x10001b47c: fcmp d1, d2\n0x10001b480: b.mi 0x10001b408\n0x10001b484: adrp x8, 0x100086000\n0x10001b488: ldr d2, [x8, #0x368]\n0x10001b48c: ldr d3, [sp, #0x48]\n0x10001b490: fmul d3, d3, d2\n0x10001b494: fcmp d0, d3\n0x10001b498: b.gt 0x10001b408\n0x10001b49c: ldr d0, [sp, #0x58]\n0x10001b4a0: fmul d0, d0, d2\n0x10001b4a4: fcmp d1, d0\n0x10001b4a8: b.gt 0x10001b408\n0x10001b4ac: cbz x24, 0x10001b408\n0x10001b4b0: cbz x23, 0x10001b408\n0x10001b4b4: cbz x22, 0x10001b408\n0x10001b4b8: ucvtf d0, x24\n0x10001b4bc: ldp d2, d1, [sp, #0x18]\n0x10001b4c0: fdiv d0, d1, d0\n0x10001b4c4: ucvtf d1, x23\n0x10001b4c8: fdiv d1, d2, d1\n0x10001b4cc: fabd d2, d0, d1\n0x10001b4d0: adrp x8, 0x100086000\n0x10001b4d4: ldr d3, [x8, #0xa8]\n0x10001b4d8: ldr d4, [sp, #0x48]\n0x10001b4dc: fmul d3, d4, d3\n0x10001b4e0: fcmp d2, d3\n0x10001b4e4: b.mi 0x10001b408\n0x10001b4e8: fcmp d0, d1\n0x10001b4ec: fcsel d2, d1, d0, mi\n0x10001b4f0: adrp x8, 0x100086000\n0x10001b4f4: ldr d3, [x8, #0x228]\n0x10001b4f8: ucvtf d4, x22\n0x10001b4fc: ldr d5, [sp, #0x48]\n0x10001b500: fmadd d2, d5, d3, d2\n0x10001b504: ldr d5, [sp, #0x10]\n0x10001b508: fdiv d4, d5, d4\n0x10001b50c: fcsel d0, d0, d1, mi\n0x10001b510: ldr d1, [sp, #0x8]\n0x10001b514: fmadd d0, d1, d3, d0\n0x10001b518: fcmp d4, d0\n0x10001b51c: fccmp d4, d2, #0x0, pl\n0x10001b520: b.gt 0x10001b408\n0x10001b524: mov x0, x19\n0x10001b528: mov w2, #0x4c\n0x10001b52c: bl 0x1000803c0\n0x10001b530: cbz x0, 0x10001b408\n0x10001b534: mov x19, x0\n0x10001b538: bl 0x10007c8c0\n0x10001b53c: fmov d8, d0\n0x10001b540: mov x0, x19\n0x10001b544: bl 0x10007c8e0\n0x10001b548: fmov d5, d0\n0x10001b54c: ldp d1, d0, [sp, #0x38]\n0x10001b550: ldp d3, d2, [sp, #0x28]\n0x10001b554: fmov d4, d8\n0x10001b558: ldp x29, x30, [sp, #0xe0]\n0x10001b55c: ldp x20, x19, [sp, #0xd0]\n0x10001b560: ldp x22, x21, [sp, #0xc0]\n0x10001b564: ldp x24, x23, [sp, #0xb0]\n0x10001b568: ldp x26, x25, [sp, #0xa0]\n0x10001b56c: ldp d9, d8, [sp, #0x90]\n0x10001b570: ldp d11, d10, [sp, #0x80]\n0x10001b574: ldp d13, d12, [sp, #0x70]\n0x10001b578: ldp d15, d14, [sp, #0x60]\n0x10001b57c: add sp, sp, #0xf0\n0x10001b580: b 0x10007a910", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x10001b070" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10001b580 to 0x10007a910 _CGRectContainsPoint (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "0x10001b070: sub sp, sp, #0xf0\n0x10001b074: stp d15, d14, [sp, #0x60]\n0x10001b078: stp d13, d12, [sp, #0x70]\n0x10001b07c: stp d11, d10, [sp, #0x80]\n0x10001b080: stp d9, d8, [sp, #0x90]\n0x10001b084: stp x26, x25, [sp, #0xa0]\n0x10001b088: stp x24, x23, [sp, #0xb0]\n0x10001b08c: stp x22, x21, [sp, #0xc0]\n0x10001b090: stp x20, x19, [sp, #0xd0]\n0x10001b094: stp x29, x30, [sp, #0xe0]\n0x10001b098: add x29, sp, #0xe0\n0x10001b09c: fmov d8, d3\n0x10001b0a0: fmov d9, d2\n0x10001b0a4: fmov d10, d1\n0x10001b0a8: fmov d11, d0\n0x10001b0ac: mov x19, x0\n0x10001b0b0: bl 0x10007d560\n0x10001b0b4: cmp x0, #0x4d\n0x10001b0b8: b.cc 0x10001b408\n0x10001b0bc: fmov d0, d11\n0x10001b0c0: fmov d1, d10\n0x10001b0c4: fmov d2, d9\n0x10001b0c8: fmov d3, d8\n0x10001b0cc: bl 0x10007a9d0\n0x10001b0d0: tbnz w0, #0x0, 0x10001b408\n0x10001b0d4: fmov d0, d11\n0x10001b0d8: fmov d1, d10\n0x10001b0dc: fmov d2, d9\n0x10001b0e0: fmov d3, d8\n0x10001b0e4: bl 0x10007a9b8\n0x10001b0e8: tbnz w0, #0x0, 0x10001b408\n0x10001b0ec: fmov d0, d11\n0x10001b0f0: fmov d1, d10\n0x10001b0f4: fmov d2, d9\n0x10001b0f8: fmov d3, d8\n0x10001b0fc: bl 0x10007a988\n0x10001b100: mov x8, #0x3cb0000000000000\n0x10001b104: fmov d1, x8\n0x10001b108: fcmp d0, d1\n0x10001b10c: b.le 0x10001b408\n0x10001b110: fmov d0, d11\n0x10001b114: fmov d1, d10\n0x10001b118: fmov d2, d9\n0x10001b11c: fmov d3, d8\n0x10001b120: bl 0x10007a934\n0x10001b124: mov x8, #0x3cb0000000000000\n0x10001b128: fmov d1, x8\n0x10001b12c: fcmp d0, d1\n0x10001b130: b.le 0x10001b408\n0x10001b134: fmov d0, d11\n0x10001b138: fmov d1, d10\n0x10001b13c: fmov d2, d9\n0x10001b140: fmov d3, d8\n0x10001b144: bl 0x10007a9dc\n0x10001b148: fmov d9, d0\n0x10001b14c: fmov d10, d1\n0x10001b150: fmov d11, d2\n0x10001b154: fmov d12, d3\n0x10001b158: bl 0x10007a988\n0x10001b15c: fmov d8, d0\n0x10001b160: fmov d0, d9\n0x10001b164: fmov d1, d10\n0x10001b168: fmov d2, d11\n0x10001b16c: fmov d3, d12\n0x10001b170: bl 0x10007a934\n0x10001b174: str d0, [sp, #0x58]\n0x10001b178: mov x8, #0x3cb0000000000000\n0x10001b17c: fmov d0, x8\n0x10001b180: str d8, [sp, #0x48]\n0x10001b184: fcmp d8, d0\n0x10001b188: b.ls 0x10001b408\n0x10001b18c: fmov d0, x8\n0x10001b190: ldr d1, [sp, #0x58]\n0x10001b194: fcmp d1, d0\n0x10001b198: b.ls 0x10001b408\n0x10001b19c: ldr d1, [sp, #0x48]\n0x10001b1a0: fneg d0, d1\n0x10001b1a4: str d0, [sp, #0x8]\n0x10001b1a8: adrp x8, 0x100086000\n0x10001b1ac: ldr d0, [x8, #0x240]\n0x10001b1b0: fmul d4, d1, d0\n0x10001b1b4: ldr d1, [sp, #0x58]\n0x10001b1b8: fmul d5, d1, d0\n0x10001b1bc: fmov d0, d9\n0x10001b1c0: fmov d1, d10\n0x10001b1c4: fmov d2, d11\n0x10001b1c8: fmov d3, d12\n0x10001b1cc: bl 0x10007a994\n0x10001b1d0: stp d1, d0, [sp, #0x38]\n0x10001b1d4: stp d3, d2, [sp, #0x28]\n0x10001b1d8: mov x24, #0x0\n0x10001b1dc: mov x23, #0x0\n0x10001b1e0: mov x22, #0x0\n0x10001b1e4: mov x20, #0x0\n0x10001b1e8: adrp x8, 0x1000a8000\n0x10001b1ec: ldr x8, [x8, #0x140]\n0x10001b1f0: ldr d0, [x8]\n0x10001b1f4: mov x8, #-0x10000000000001\n0x10001b1f8: fmov d10, x8\n0x10001b1fc: mov x25, #0x7fefffffffffffff\n0x10001b200: fmov d9, x25\n0x10001b204: fmov d14, -0x4030000000000000\n0x10001b208: fmov d8, d9\n0x10001b20c: fmov d13, d10\n0x10001b210: fmov d12, d9\n0x10001b214: fmov d15, d10\n0x10001b218: str d9, [sp, #0x50]\n0x10001b21c: fmov d11, d10\n0x10001b220: stp d0, d0, [sp, #0x18]\n0x10001b224: str d0, [sp, #0x10]\n0x10001b228: mov x0, x19\n0x10001b22c: mov x2, x20\n0x10001b230: bl 0x1000803c0\n0x10001b234: cbz x0, 0x10001b408\n0x10001b238: mov x21, x0\n0x10001b23c: bl 0x10007c8c0\n0x10001b240: fmov x8, d0\n0x10001b244: and x8, x8, #0x7fffffffffffffff\n0x10001b248: cmp x8, x25\n0x10001b24c: b.gt 0x10001b408\n0x10001b250: mov x0, x21\n0x10001b254: bl 0x10007c8e0\n0x10001b258: fmov x8, d0\n0x10001b25c: and x8, x8, #0x7fffffffffffffff\n0x10001b260: cmp x8, x25\n0x10001b264: b.gt 0x10001b408\n0x10001b268: mov x0, x21\n0x10001b26c: bl 0x10007c8c0\n0x10001b270: fcmp d0, d14\n0x10001b274: b.mi 0x10001b408\n0x10001b278: mov x0, x21\n0x10001b27c: bl 0x10007c8c0\n0x10001b280: fmov d1, 0x3ff4000000000000\n0x10001b284: fcmp d0, d1\n0x10001b288: b.gt 0x10001b408\n0x10001b28c: mov x0, x21\n0x10001b290: bl 0x10007c8e0\n0x10001b294: fcmp d0, d14\n0x10001b298: b.mi 0x10001b408\n0x10001b29c: mov x0, x21\n0x10001b2a0: bl 0x10007c8e0\n0x10001b2a4: fmov d1, 0x3ff4000000000000\n0x10001b2a8: fcmp d0, d1\n0x10001b2ac: b.gt 0x10001b408\n0x10001b2b0: mov x0, x21\n0x10001b2b4: bl 0x10007c8c0\n0x10001b2b8: fcmp d9, d0\n0x10001b2bc: fcsel d9, d9, d0, mi\n0x10001b2c0: mov x0, x21\n0x10001b2c4: bl 0x10007c8c0\n0x10001b2c8: fcmp d10, d0\n0x10001b2cc: fcsel d10, d0, d10, mi\n0x10001b2d0: mov x0, x21\n0x10001b2d4: bl 0x10007c8e0\n0x10001b2d8: fcmp d8, d0\n0x10001b2dc: fcsel d8, d8, d0, mi\n0x10001b2e0: mov x0, x21\n0x10001b2e4: bl 0x10007c8e0\n0x10001b2e8: fcmp d13, d0\n0x10001b2ec: fcsel d13, d0, d13, mi\n0x10001b2f0: cmp x20, #0x3b\n0x10001b2f4: b.cc 0x10001b3e4\n0x10001b2f8: cmp x20, #0x4c\n0x10001b2fc: b.eq 0x10001b3e4\n0x10001b300: mov x0, x21\n0x10001b304: bl 0x10007c8c0\n0x10001b308: fmov d14, d0\n0x10001b30c: mov x0, x21\n0x10001b310: bl 0x10007c8e0\n0x10001b314: fmov d5, d0\n0x10001b318: ldp d1, d0, [sp, #0x38]\n0x10001b31c: ldp d3, d2, [sp, #0x28]\n0x10001b320: fmov d4, d14\n0x10001b324: fmov d14, -0x4030000000000000\n0x10001b328: bl 0x10007a910\n0x10001b32c: cbz w0, 0x10001b408\n0x10001b330: mov x0, x21\n0x10001b334: bl 0x10007c8c0\n0x10001b338: fcmp d12, d0\n0x10001b33c: fcsel d12, d12, d0, mi\n0x10001b340: mov x0, x21\n0x10001b344: bl 0x10007c8c0\n0x10001b348: fcmp d15, d0\n0x10001b34c: fcsel d15, d0, d15, mi\n0x10001b350: mov x0, x21\n0x10001b354: bl 0x10007c8e0\n0x10001b358: ldr d1, [sp, #0x50]\n0x10001b35c: fcmp d1, d0\n0x10001b360: fcsel d1, d1, d0, mi\n0x10001b364: str d1, [sp, #0x50]\n0x10001b368: mov x0, x21\n0x10001b36c: bl 0x10007c8e0\n0x10001b370: fcmp d11, d0\n0x10001b374: fcsel d11, d0, d11, mi\n0x10001b378: mov x0, x21\n0x10001b37c: cmp x20, #0x45\n0x10001b380: b.cc 0x10001b3a4\n0x10001b384: bl 0x10007c8c0\n0x10001b388: ldr d1, [sp, #0x20]\n0x10001b38c: fadd d1, d1, d0\n0x10001b390: str d1, [sp, #0x20]\n0x10001b394: mov x0, x21\n0x10001b398: bl 0x10007c8e0\n0x10001b39c: add x24, x24, #0x1\n0x10001b3a0: b 0x10001b3e4\n0x10001b3a4: bl 0x10007c8c0\n0x10001b3a8: fmov d14, d0\n0x10001b3ac: mov x0, x21\n0x10001b3b0: bl 0x10007c8e0\n0x10001b3b4: cmp x20, #0x41\n0x10001b3b8: b.hi 0x10001b3d0\n0x10001b3bc: ldr d0, [sp, #0x18]\n0x10001b3c0: fadd d0, d0, d14\n0x10001b3c4: str d0, [sp, #0x18]\n0x10001b3c8: add x23, x23, #0x1\n0x10001b3cc: b 0x10001b3e0\n0x10001b3d0: ldr d0, [sp, #0x10]\n0x10001b3d4: fadd d0, d0, d14\n0x10001b3d8: str d0, [sp, #0x10]\n0x10001b3dc: add x22, x22, #0x1\n0x10001b3e0: fmov d14, -0x4030000000000000\n0x10001b3e4: add x20, x20, #0x1\n0x10001b3e8: cmp x20, #0x4d\n0x10001b3ec: b.ne 0x10001b228\n0x10001b3f0: fsub d1, d10, d9\n0x10001b3f4: fmov d0, 0x3fd0000000000000\n0x10001b3f8: ldr d2, [sp, #0x48]\n0x10001b3fc: fmul d2, d2, d0\n0x10001b400: fcmp d1, d2\n0x10001b404: b.pl 0x10001b438\n0x10001b408: mov w0, #0x0\n0x10001b40c: ldp x29, x30, [sp, #0xe0]\n0x10001b410: ldp x20, x19, [sp, #0xd0]\n0x10001b414: ldp x22, x21, [sp, #0xc0]\n0x10001b418: ldp x24, x23, [sp, #0xb0]\n0x10001b41c: ldp x26, x25, [sp, #0xa0]\n0x10001b420: ldp d9, d8, [sp, #0x90]\n0x10001b424: ldp d11, d10, [sp, #0x80]\n0x10001b428: ldp d13, d12, [sp, #0x70]\n0x10001b42c: ldp d15, d14, [sp, #0x60]\n0x10001b430: add sp, sp, #0xf0\n0x10001b434: ret\n0x10001b438: fsub d1, d13, d8\n0x10001b43c: ldr d2, [sp, #0x58]\n0x10001b440: fmul d0, d2, d0\n0x10001b444: fcmp d1, d0\n0x10001b448: b.mi 0x10001b408\n0x10001b44c: fsub d0, d15, d12\n0x10001b450: adrp x8, 0x100086000\n0x10001b454: ldr d1, [x8, #0x118]\n0x10001b458: ldr d2, [sp, #0x48]\n0x10001b45c: fmul d1, d2, d1\n0x10001b460: fcmp d0, d1\n0x10001b464: b.mi 0x10001b408\n0x10001b468: ldp d1, d3, [sp, #0x50]\n0x10001b46c: fsub d1, d11, d1\n0x10001b470: adrp x8, 0x100086000\n0x10001b474: ldr d2, [x8, #0x318]\n0x10001b478: fmul d2, d3, d2\n0x10001b47c: fcmp d1, d2\n0x10001b480: b.mi 0x10001b408\n0x10001b484: adrp x8, 0x100086000\n0x10001b488: ldr d2, [x8, #0x368]\n0x10001b48c: ldr d3, [sp, #0x48]\n0x10001b490: fmul d3, d3, d2\n0x10001b494: fcmp d0, d3\n0x10001b498: b.gt 0x10001b408\n0x10001b49c: ldr d0, [sp, #0x58]\n0x10001b4a0: fmul d0, d0, d2\n0x10001b4a4: fcmp d1, d0\n0x10001b4a8: b.gt 0x10001b408\n0x10001b4ac: cbz x24, 0x10001b408\n0x10001b4b0: cbz x23, 0x10001b408\n0x10001b4b4: cbz x22, 0x10001b408\n0x10001b4b8: ucvtf d0, x24\n0x10001b4bc: ldp d2, d1, [sp, #0x18]\n0x10001b4c0: fdiv d0, d1, d0\n0x10001b4c4: ucvtf d1, x23\n0x10001b4c8: fdiv d1, d2, d1\n0x10001b4cc: fabd d2, d0, d1\n0x10001b4d0: adrp x8, 0x100086000\n0x10001b4d4: ldr d3, [x8, #0xa8]\n0x10001b4d8: ldr d4, [sp, #0x48]\n0x10001b4dc: fmul d3, d4, d3\n0x10001b4e0: fcmp d2, d3\n0x10001b4e4: b.mi 0x10001b408\n0x10001b4e8: fcmp d0, d1\n0x10001b4ec: fcsel d2, d1, d0, mi\n0x10001b4f0: adrp x8, 0x100086000\n0x10001b4f4: ldr d3, [x8, #0x228]\n0x10001b4f8: ucvtf d4, x22\n0x10001b4fc: ldr d5, [sp, #0x48]\n0x10001b500: fmadd d2, d5, d3, d2\n0x10001b504: ldr d5, [sp, #0x10]\n0x10001b508: fdiv d4, d5, d4\n0x10001b50c: fcsel d0, d0, d1, mi\n0x10001b510: ldr d1, [sp, #0x8]\n0x10001b514: fmadd d0, d1, d3, d0\n0x10001b518: fcmp d4, d0\n0x10001b51c: fccmp d4, d2, #0x0, pl\n0x10001b520: b.gt 0x10001b408\n0x10001b524: mov x0, x19\n0x10001b528: mov w2, #0x4c\n0x10001b52c: bl 0x1000803c0\n0x10001b530: cbz x0, 0x10001b408\n0x10001b534: mov x19, x0\n0x10001b538: bl 0x10007c8c0\n0x10001b53c: fmov d8, d0\n0x10001b540: mov x0, x19\n0x10001b544: bl 0x10007c8e0\n0x10001b548: fmov d5, d0\n0x10001b54c: ldp d1, d0, [sp, #0x38]\n0x10001b550: ldp d3, d2, [sp, #0x28]\n0x10001b554: fmov d4, d8\n0x10001b558: ldp x29, x30, [sp, #0xe0]\n0x10001b55c: ldp x20, x19, [sp, #0xd0]\n0x10001b560: ldp x22, x21, [sp, #0xc0]\n0x10001b564: ldp x24, x23, [sp, #0xb0]\n0x10001b568: ldp x26, x25, [sp, #0xa0]\n0x10001b56c: ldp d9, d8, [sp, #0x90]\n0x10001b570: ldp d11, d10, [sp, #0x80]\n0x10001b574: ldp d13, d12, [sp, #0x70]\n0x10001b578: ldp d15, d14, [sp, #0x60]\n0x10001b57c: add sp, sp, #0xf0\n0x10001b580: b 0x10007a910" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_a89c1a83d7c13eac0b2cbeafa67dcde6a9d995d5a50431a077063528b6fe761a", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x100050864 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n\nvoid FUN_100050634(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n undefined8 param_5,undefined8 param_6,ID param_7,long *param_8)\n\n{\n uint uVar1;\n undefined8 uVar2;\n undefined8 uVar3;\n undefined8 uVar4;\n ID IVar5;\n ulong uVar6;\n undefined *self;\n ID IVar7;\n ID IVar8;\n undefined8 uVar9;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 uStack_68;\n undefined8 local_60;\n long local_58;\n \n local_58 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (param_8 != (long *)0x0) {\n *param_8 = 0;\n }\n local_80 = param_1;\n uStack_78 = param_2;\n local_70 = param_3;\n uStack_68 = param_4;\n IVar5 = objc_stub::length(param_7);\n if (IVar5 != 0) {\n objc_stub::stringByAppendingString_(param_7,&cf__cg);\n }\n FUN_1000502b0(param_1,param_2,param_3,param_4,param_5,&local_80);\n uVar6 = objc_stub::length(0x1000aed00);\n uVar4 = uStack_68;\n uVar3 = local_70;\n uVar2 = uStack_78;\n uVar9 = local_80;\n _CGRectIsEmpty(local_80,uStack_78,local_70,uStack_68);\n if ((uVar6 & 1) == 0) {\n if (DAT_1000be140 != -1) {\n FUN_100079cf0();\n }\n IVar5 = DAT_1000be138;\n if (DAT_1000be138 == 0) goto LAB_100050808;\n IVar7 = DAT_1000be138;\n _objc_opt_respondsToSelector(DAT_1000be138,\"createCGImage:fromRect:format:colorSpace:deferred:\")\n ;\n if ((IVar7 & 1) == 0) {\n IVar5 = objc_stub::createCGImage_fromRect_(IVar5,uVar9,uVar2,uVar3,uVar4,param_5);\n }\n else {\n uVar1 = *(uint *)PTR__kCIFormatRGBA8_1000a81b0;\n if (DAT_1000bdf18 != -1) {\n FUN_100079628();\n }\n IVar5 = objc_stub::createCGImage_fromRect_format_colorSpace_deferred_\n (IVar5,uVar9,uVar2,uVar3,uVar4,param_5,(ulong)uVar1,DAT_1000bdf10,0);\n }\n if (IVar5 == 0) goto LAB_100050808;\n self = &_OBJC_CLASS___VNImageRequestHandler;\n _objc_alloc();\n IVar7 = objc_stub::initWithCGImage_orientation_options_\n ((ID)self,IVar5,1,PTR____NSDictionary0__struct_1000a8118);\n local_60 = param_6;\n IVar8 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_60,1);\n IVar7 = objc_stub::performRequests_error_(IVar7,IVar8,param_8);\n _CGImageRelease(IVar5);\n if (((int)IVar7 != 0) && ((param_8 == (long *)0x0 || (*param_8 == 0)))) {\n uVar9 = 1;\n goto LAB_100050818;\n }\n }\n else {\nLAB_100050808:\n _NSStringFromRect(local_80,uStack_78,local_70,uStack_68);\n }\n uVar9 = 0;\nLAB_100050818:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_58) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(uVar9);\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100050634" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100050864 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n\nvoid FUN_100050634(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n undefined8 param_5,undefined8 param_6,ID param_7,long *param_8)\n\n{\n uint uVar1;\n undefined8 uVar2;\n undefined8 uVar3;\n undefined8 uVar4;\n ID IVar5;\n ulong uVar6;\n undefined *self;\n ID IVar7;\n ID IVar8;\n undefined8 uVar9;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 uStack_68;\n undefined8 local_60;\n long local_58;\n \n local_58 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (param_8 != (long *)0x0) {\n *param_8 = 0;\n }\n local_80 = param_1;\n uStack_78 = param_2;\n local_70 = param_3;\n uStack_68 = param_4;\n IVar5 = objc_stub::length(param_7);\n if (IVar5 != 0) {\n objc_stub::stringByAppendingString_(param_7,&cf__cg);\n }\n FUN_1000502b0(param_1,param_2,param_3,param_4,param_5,&local_80);\n uVar6 = objc_stub::length(0x1000aed00);\n uVar4 = uStack_68;\n uVar3 = local_70;\n uVar2 = uStack_78;\n uVar9 = local_80;\n _CGRectIsEmpty(local_80,uStack_78,local_70,uStack_68);\n if ((uVar6 & 1) == 0) {\n if (DAT_1000be140 != -1) {\n FUN_100079cf0();\n }\n IVar5 = DAT_1000be138;\n if (DAT_1000be138 == 0) goto LAB_100050808;\n IVar7 = DAT_1000be138;\n _objc_opt_respondsToSelector(DAT_1000be138,\"createCGImage:fromRect:format:colorSpace:deferred:\")\n ;\n if ((IVar7 & 1) == 0) {\n IVar5 = objc_stub::createCGImage_fromRect_(IVar5,uVar9,uVar2,uVar3,uVar4,param_5);\n }\n else {\n uVar1 = *(uint *)PTR__kCIFormatRGBA8_1000a81b0;\n if (DAT_1000bdf18 != -1) {\n FUN_100079628();\n }\n IVar5 = objc_stub::createCGImage_fromRect_format_colorSpace_deferred_\n (IVar5,uVar9,uVar2,uVar3,uVar4,param_5,(ulong)uVar1,DAT_1000bdf10,0);\n }\n if (IVar5 == 0) goto LAB_100050808;\n self = &_OBJC_CLASS___VNImageRequestHandler;\n _objc_alloc();\n IVar7 = objc_stub::initWithCGImage_orientation_options_\n ((ID)self,IVar5,1,PTR____NSDictionary0__struct_1000a8118);\n local_60 = param_6;\n IVar8 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_60,1);\n IVar7 = objc_stub::performRequests_error_(IVar7,IVar8,param_8);\n _CGImageRelease(IVar5);\n if (((int)IVar7 != 0) && ((param_8 == (long *)0x0 || (*param_8 == 0)))) {\n uVar9 = 1;\n goto LAB_100050818;\n }\n }\n else {\nLAB_100050808:\n _NSStringFromRect(local_80,uStack_78,local_70,uStack_68);\n }\n uVar9 = 0;\nLAB_100050818:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_58) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(uVar9);\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_a9a6991c21a0e41b6bb6dc5d0dd83cbfa20b556fc8086c46ccdf486bd3bec69a", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "Ghidra Listing reports a terminal call at 0x100079cd8 to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x100079cc8: adrp x0, 0x1000bd000\n0x100079ccc: add x0, x0, #0xf40\n0x100079cd0: adrp x1, 0x1000a8000\n0x100079cd4: add x1, x1, #0xb18\n0x100079cd8: b 0x10007ad0c", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x100079cc8" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100079cd8 to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "0x100079cc8: adrp x0, 0x1000bd000\n0x100079ccc: add x0, x0, #0xf40\n0x100079cd0: adrp x1, 0x1000a8000\n0x100079cd4: add x1, x1, #0xb18\n0x100079cd8: b 0x10007ad0c" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_ab6153be535ae5c395e0375c021af364aad35e9a38a31e78be6584a6775a4882", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10001a868 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_release replaced with injection: _objc_release_fixup */\n/* Function Stack Size: 0x50 bytes */\n\nID MSSuperSkinSmoothingPlugIn::mss_faceThinRememberedPointsForBox_renderTime_source_\n (ID param_1,SEL param_2,CGRect param_3,AnonymousStructure0 param_4,ID param_5)\n\n{\n uint uVar1;\n ID IVar2;\n ID self;\n ID self_00;\n ID IVar3;\n ulong uVar4;\n double *pdVar5;\n long lVar6;\n ID self_01;\n ID IVar7;\n ID self_02;\n double in_d0;\n double extraout_d0;\n double dVar8;\n double dVar9;\n double extraout_d0_00;\n double dVar10;\n double dVar11;\n double dVar12;\n double dVar13;\n double dVar14;\n undefined8 in_d1;\n double dVar15;\n double dVar16;\n double dVar17;\n double in_d2;\n double dVar18;\n undefined8 in_d3;\n undefined8 uVar19;\n undefined8 uVar20;\n double dVar21;\n double dVar22;\n undefined8 local_218;\n double dStack_210;\n double local_208;\n double dStack_200;\n double local_1f0;\n ID local_1e8;\n double local_1d0;\n undefined8 local_190;\n long lStack_188;\n long *local_180;\n undefined8 uStack_178;\n undefined8 local_170;\n undefined8 uStack_168;\n undefined8 uStack_160;\n undefined8 uStack_158;\n double local_150;\n double dStack_148;\n double local_140;\n undefined1 auStack_130 [128];\n long local_b0;\n \n pdVar5 = param_3.field0_0x0.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar2 = param_1;\n _CGRectStandardize();\n _CGRectIntersection();\n _CGRectIsNull();\n if (((((IVar2 & 1) == 0) && (_CGRectIsEmpty(in_d0,in_d1,in_d2,in_d3), (IVar2 & 1) == 0)) &&\n (dVar15 = in_d0, _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3), 2.220446049250313e-16 < dVar15)) &&\n (dVar15 = in_d0, dVar22 = in_d2, uVar19 = in_d3, _CGRectGetHeight(in_d0,in_d1),\n 2.220446049250313e-16 < dVar15)) {\n if ((*(uint *)((long)pdVar5 + 0xc) & 0x1d) == 1) {\n dStack_148 = pdVar5[1];\n dVar15 = *pdVar5;\n local_140 = pdVar5[2];\n local_150 = dVar15;\n _CMTimeGetSeconds(&local_150);\n }\n else {\n dVar15 = 1.7976931348623157e+308;\n }\n objc_stub::lock(*(ID *)(param_1 + 0x28));\n objc_stub::count(*(ID *)(param_1 + 0x440));\n uStack_168 = 0;\n local_170 = 0;\n uStack_158 = 0;\n uStack_160 = 0;\n lStack_188 = 0;\n local_190 = 0;\n uStack_178 = 0;\n local_180 = (long *)0x0;\n self_01 = *(ID *)(param_1 + 0x440);\n IVar2 = objc_stub::countByEnumeratingWithState_objects_count_\n (self_01,&local_190,auStack_130,0x10);\n dStack_200 = *(double *)PTR__CGRectNull_1000a8148;\n local_208 = *(double *)(PTR__CGRectNull_1000a8148 + 8);\n dVar16 = *(double *)(PTR__CGRectNull_1000a8148 + 0x10);\n local_218 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18);\n dStack_210 = dVar16;\n if (IVar2 == 0) {\n local_1e8 = 0;\n }\n else {\n local_1f0 = -1.7976931348623157e+308;\n local_1e8 = 0;\n lVar6 = *local_180;\n do {\n IVar7 = 0;\n do {\n dVar17 = dVar16;\n dVar18 = dVar22;\n uVar20 = uVar19;\n if (*local_180 != lVar6) {\n _objc_enumerationMutation(self_01);\n dVar17 = dVar16;\n dVar18 = dVar22;\n uVar20 = uVar19;\n }\n self_02 = *(ID *)(lStack_188 + IVar7 * 8);\n self = objc_stub::objectForKeyedSubscript_(self_02,&cf_points);\n self_00 = objc_stub::objectForKeyedSubscript_(self_02,&cf_box);\n IVar3 = objc_stub::count(self);\n dVar16 = dVar17;\n dVar22 = dVar18;\n uVar19 = uVar20;\n if (0x4c < IVar3 && self_00 != 0) {\n uVar4 = objc_stub::rectValue(self_00);\n dVar8 = extraout_d0;\n _CGRectStandardize();\n _CGRectIntersection();\n dVar16 = dVar17;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectIsNull();\n if (((uVar4 & 1) == 0) &&\n (dVar16 = dVar17, dVar22 = dVar18, uVar19 = uVar20, _CGRectIsEmpty(dVar8),\n (uVar4 & 1) == 0)) {\n dVar9 = dVar8;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectGetWidth(dVar8,dVar17);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar9) {\n dVar9 = dVar8;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectGetHeight(dVar8,dVar17);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar9) {\n uVar4 = objc_stub::objectForKeyedSubscript_(self_02,&cf_time);\n dVar9 = 0.0;\n if (uVar4 != 0 &&\n (dVar15 != 1.7976931348623157e+308 && (ulong)ABS(dVar15) < 0x7ff0000000000000)\n ) {\n uVar4 = objc_stub::doubleValue(uVar4);\n dVar16 = 1.25;\n if (1.25 < ABS(dVar15 - extraout_d0_00)) goto LAB_10001a724;\n dVar9 = (double)NEON_fminnm(ABS(dVar15 - extraout_d0_00),0x3ff4000000000000);\n dVar9 = dVar9 * 0.45;\n }\n dVar16 = dVar8;\n FUN_10001a910(dVar8,dVar17,dVar18,uVar20,in_d0,in_d1,in_d2,in_d3);\n dVar14 = dVar8;\n _CGRectGetMidX(dVar8,dVar17,dVar18,uVar20);\n dVar21 = dVar8;\n _CGRectGetMidY(dVar8,dVar17,dVar18,uVar20);\n dVar10 = in_d0;\n _CGRectGetMidX(in_d0,in_d1,in_d2,in_d3);\n dVar11 = in_d0;\n _CGRectGetMidY(in_d0,in_d1,in_d2,in_d3);\n _CGRectIsNull(dVar8,dVar17,dVar18,uVar20);\n dVar22 = 0.0;\n if (((uVar4 & 1) == 0) &&\n (_CGRectIsEmpty(dVar8,dVar17,dVar18,uVar20), (uVar4 & 1) == 0)) {\n dVar22 = dVar8;\n _CGRectGetWidth(dVar8,dVar17,dVar18,uVar20);\n dVar12 = dVar8;\n _CGRectGetHeight(dVar8,dVar17,dVar18,uVar20);\n if (dVar22 <= 0.0) {\n dVar22 = 0.0;\n }\n if (dVar12 <= 0.0) {\n dVar12 = 0.0;\n }\n dVar22 = dVar22 * dVar12;\n }\n _CGRectIsNull(in_d0,in_d1,in_d2,in_d3);\n local_1d0 = 0.0;\n if (((uVar4 & 1) == 0) &&\n (_CGRectIsEmpty(in_d0,in_d1,in_d2,in_d3), (uVar4 & 1) == 0)) {\n dVar12 = in_d0;\n _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3);\n dVar13 = in_d0;\n _CGRectGetHeight(in_d0,in_d1,in_d2,in_d3);\n if (dVar22 <= 2.220446049250313e-16) {\n local_1d0 = 0.0;\n }\n else {\n if (dVar13 <= 0.0) {\n dVar13 = 0.0;\n }\n dVar12 = dVar12 * dVar13;\n dVar13 = dVar12;\n if (dVar12 <= dVar22) {\n dVar13 = dVar22;\n dVar22 = dVar12;\n }\n local_1d0 = 0.0;\n if (2.220446049250313e-16 < dVar12) {\n local_1d0 = dVar22 / dVar13;\n }\n }\n }\n dVar22 = in_d0;\n _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3);\n dVar12 = in_d0;\n _CGRectGetHeight(in_d0,in_d1,in_d2,in_d3);\n if (dVar12 <= dVar22) {\n dVar12 = dVar22;\n }\n uVar19 = uVar20;\n _CGRectContainsPoint(dVar8,dVar17,dVar18,uVar20,dVar10,dVar11);\n uVar1 = (uint)uVar4;\n dVar21 = SQRT((dVar21 - dVar11) * (dVar21 - dVar11) +\n (dVar14 - dVar10) * (dVar14 - dVar10));\n dVar14 = dVar12 * 0.72;\n if (dVar12 * 0.72 <= 0.055) {\n dVar14 = 0.055;\n }\n if (((uVar4 & 1) != 0) ||\n (dVar22 = in_d2, uVar19 = in_d3, _CGRectContainsPoint(in_d0,in_d1),\n (dVar21 <= dVar14 || 0.08 <= dVar16) || (uVar1 & 1) != 0)) {\n dVar22 = 2.220446049250313e-16;\n if (2.220446049250313e-16 <= dVar14) {\n dVar22 = dVar14;\n }\n dVar21 = dVar21 / dVar22;\n dVar22 = 1.0;\n if (dVar21 <= 1.0) {\n dVar22 = dVar21;\n }\n dVar14 = ((1.0 - dVar22) * 3.0 + dVar16 * 8.0 + local_1d0 * 1.3) - dVar9;\n dVar16 = dVar9;\n dVar22 = local_1d0;\n if ((local_1e8 == 0) || (dVar16 = local_1f0, local_1f0 < dVar14)) {\n local_218 = uVar20;\n dStack_210 = dVar18;\n local_208 = dVar17;\n dStack_200 = dVar8;\n local_1f0 = dVar14;\n local_1e8 = self;\n }\n }\n }\n }\n }\n }\nLAB_10001a724:\n IVar7 = IVar7 + 1;\n } while (IVar2 != IVar7);\n IVar2 = objc_stub::countByEnumeratingWithState_objects_count_\n (self_01,&local_190,auStack_130,0x10);\n } while (IVar2 != 0);\n }\n objc_stub::unlock(*(ID *)(param_1 + 0x28));\n FUN_10001ab3c(dStack_200,local_208,dStack_210,local_218,in_d0,in_d1,in_d2,in_d3);\n IVar2 = objc_stub::count(local_1e8);\n if ((0x4c < IVar2) &&\n (IVar2 = local_1e8, FUN_10001b070(in_d0,in_d1,in_d2,in_d3), (IVar2 & 1) != 0)) {\n FUN_10001b584(in_d0,in_d1,in_d2,in_d3);\n FUN_10001b584(dStack_200,local_208,dStack_210,local_218);\n objc_stub::count(local_1e8);\n objc_stub::count(local_1e8);\n _NSStringFromRect(dStack_200,local_208,dStack_210,local_218);\n _NSStringFromRect(in_d0,in_d1,in_d2,in_d3);\n goto LAB_10001a81c;\n }\n FUN_10001b584(in_d0,in_d1,in_d2,in_d3);\n FUN_10001b584(dStack_200,local_208,dStack_210,local_218);\n objc_stub::count(local_1e8);\n }\n local_1e8 = 0;\nLAB_10001a81c:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_b0) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return local_1e8;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10001a198" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10001a868 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_release replaced with injection: _objc_release_fixup */\n/* Function Stack Size: 0x50 bytes */\n\nID MSSuperSkinSmoothingPlugIn::mss_faceThinRememberedPointsForBox_renderTime_source_\n (ID param_1,SEL param_2,CGRect param_3,AnonymousStructure0 param_4,ID param_5)\n\n{\n uint uVar1;\n ID IVar2;\n ID self;\n ID self_00;\n ID IVar3;\n ulong uVar4;\n double *pdVar5;\n long lVar6;\n ID self_01;\n ID IVar7;\n ID self_02;\n double in_d0;\n double extraout_d0;\n double dVar8;\n double dVar9;\n double extraout_d0_00;\n double dVar10;\n double dVar11;\n double dVar12;\n double dVar13;\n double dVar14;\n undefined8 in_d1;\n double dVar15;\n double dVar16;\n double dVar17;\n double in_d2;\n double dVar18;\n undefined8 in_d3;\n undefined8 uVar19;\n undefined8 uVar20;\n double dVar21;\n double dVar22;\n undefined8 local_218;\n double dStack_210;\n double local_208;\n double dStack_200;\n double local_1f0;\n ID local_1e8;\n double local_1d0;\n undefined8 local_190;\n long lStack_188;\n long *local_180;\n undefined8 uStack_178;\n undefined8 local_170;\n undefined8 uStack_168;\n undefined8 uStack_160;\n undefined8 uStack_158;\n double local_150;\n double dStack_148;\n double local_140;\n undefined1 auStack_130 [128];\n long local_b0;\n \n pdVar5 = param_3.field0_0x0.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar2 = param_1;\n _CGRectStandardize();\n _CGRectIntersection();\n _CGRectIsNull();\n if (((((IVar2 & 1) == 0) && (_CGRectIsEmpty(in_d0,in_d1,in_d2,in_d3), (IVar2 & 1) == 0)) &&\n (dVar15 = in_d0, _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3), 2.220446049250313e-16 < dVar15)) &&\n (dVar15 = in_d0, dVar22 = in_d2, uVar19 = in_d3, _CGRectGetHeight(in_d0,in_d1),\n 2.220446049250313e-16 < dVar15)) {\n if ((*(uint *)((long)pdVar5 + 0xc) & 0x1d) == 1) {\n dStack_148 = pdVar5[1];\n dVar15 = *pdVar5;\n local_140 = pdVar5[2];\n local_150 = dVar15;\n _CMTimeGetSeconds(&local_150);\n }\n else {\n dVar15 = 1.7976931348623157e+308;\n }\n objc_stub::lock(*(ID *)(param_1 + 0x28));\n objc_stub::count(*(ID *)(param_1 + 0x440));\n uStack_168 = 0;\n local_170 = 0;\n uStack_158 = 0;\n uStack_160 = 0;\n lStack_188 = 0;\n local_190 = 0;\n uStack_178 = 0;\n local_180 = (long *)0x0;\n self_01 = *(ID *)(param_1 + 0x440);\n IVar2 = objc_stub::countByEnumeratingWithState_objects_count_\n (self_01,&local_190,auStack_130,0x10);\n dStack_200 = *(double *)PTR__CGRectNull_1000a8148;\n local_208 = *(double *)(PTR__CGRectNull_1000a8148 + 8);\n dVar16 = *(double *)(PTR__CGRectNull_1000a8148 + 0x10);\n local_218 = *(undefined8 *)(PTR__CGRectNull_1000a8148 + 0x18);\n dStack_210 = dVar16;\n if (IVar2 == 0) {\n local_1e8 = 0;\n }\n else {\n local_1f0 = -1.7976931348623157e+308;\n local_1e8 = 0;\n lVar6 = *local_180;\n do {\n IVar7 = 0;\n do {\n dVar17 = dVar16;\n dVar18 = dVar22;\n uVar20 = uVar19;\n if (*local_180 != lVar6) {\n _objc_enumerationMutation(self_01);\n dVar17 = dVar16;\n dVar18 = dVar22;\n uVar20 = uVar19;\n }\n self_02 = *(ID *)(lStack_188 + IVar7 * 8);\n self = objc_stub::objectForKeyedSubscript_(self_02,&cf_points);\n self_00 = objc_stub::objectForKeyedSubscript_(self_02,&cf_box);\n IVar3 = objc_stub::count(self);\n dVar16 = dVar17;\n dVar22 = dVar18;\n uVar19 = uVar20;\n if (0x4c < IVar3 && self_00 != 0) {\n uVar4 = objc_stub::rectValue(self_00);\n dVar8 = extraout_d0;\n _CGRectStandardize();\n _CGRectIntersection();\n dVar16 = dVar17;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectIsNull();\n if (((uVar4 & 1) == 0) &&\n (dVar16 = dVar17, dVar22 = dVar18, uVar19 = uVar20, _CGRectIsEmpty(dVar8),\n (uVar4 & 1) == 0)) {\n dVar9 = dVar8;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectGetWidth(dVar8,dVar17);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar9) {\n dVar9 = dVar8;\n dVar22 = dVar18;\n uVar19 = uVar20;\n _CGRectGetHeight(dVar8,dVar17);\n dVar16 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar9) {\n uVar4 = objc_stub::objectForKeyedSubscript_(self_02,&cf_time);\n dVar9 = 0.0;\n if (uVar4 != 0 &&\n (dVar15 != 1.7976931348623157e+308 && (ulong)ABS(dVar15) < 0x7ff0000000000000)\n ) {\n uVar4 = objc_stub::doubleValue(uVar4);\n dVar16 = 1.25;\n if (1.25 < ABS(dVar15 - extraout_d0_00)) goto LAB_10001a724;\n dVar9 = (double)NEON_fminnm(ABS(dVar15 - extraout_d0_00),0x3ff4000000000000);\n dVar9 = dVar9 * 0.45;\n }\n dVar16 = dVar8;\n FUN_10001a910(dVar8,dVar17,dVar18,uVar20,in_d0,in_d1,in_d2,in_d3);\n dVar14 = dVar8;\n _CGRectGetMidX(dVar8,dVar17,dVar18,uVar20);\n dVar21 = dVar8;\n _CGRectGetMidY(dVar8,dVar17,dVar18,uVar20);\n dVar10 = in_d0;\n _CGRectGetMidX(in_d0,in_d1,in_d2,in_d3);\n dVar11 = in_d0;\n _CGRectGetMidY(in_d0,in_d1,in_d2,in_d3);\n _CGRectIsNull(dVar8,dVar17,dVar18,uVar20);\n dVar22 = 0.0;\n if (((uVar4 & 1) == 0) &&\n (_CGRectIsEmpty(dVar8,dVar17,dVar18,uVar20), (uVar4 & 1) == 0)) {\n dVar22 = dVar8;\n _CGRectGetWidth(dVar8,dVar17,dVar18,uVar20);\n dVar12 = dVar8;\n _CGRectGetHeight(dVar8,dVar17,dVar18,uVar20);\n if (dVar22 <= 0.0) {\n dVar22 = 0.0;\n }\n if (dVar12 <= 0.0) {\n dVar12 = 0.0;\n }\n dVar22 = dVar22 * dVar12;\n }\n _CGRectIsNull(in_d0,in_d1,in_d2,in_d3);\n local_1d0 = 0.0;\n if (((uVar4 & 1) == 0) &&\n (_CGRectIsEmpty(in_d0,in_d1,in_d2,in_d3), (uVar4 & 1) == 0)) {\n dVar12 = in_d0;\n _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3);\n dVar13 = in_d0;\n _CGRectGetHeight(in_d0,in_d1,in_d2,in_d3);\n if (dVar22 <= 2.220446049250313e-16) {\n local_1d0 = 0.0;\n }\n else {\n if (dVar13 <= 0.0) {\n dVar13 = 0.0;\n }\n dVar12 = dVar12 * dVar13;\n dVar13 = dVar12;\n if (dVar12 <= dVar22) {\n dVar13 = dVar22;\n dVar22 = dVar12;\n }\n local_1d0 = 0.0;\n if (2.220446049250313e-16 < dVar12) {\n local_1d0 = dVar22 / dVar13;\n }\n }\n }\n dVar22 = in_d0;\n _CGRectGetWidth(in_d0,in_d1,in_d2,in_d3);\n dVar12 = in_d0;\n _CGRectGetHeight(in_d0,in_d1,in_d2,in_d3);\n if (dVar12 <= dVar22) {\n dVar12 = dVar22;\n }\n uVar19 = uVar20;\n _CGRectContainsPoint(dVar8,dVar17,dVar18,uVar20,dVar10,dVar11);\n uVar1 = (uint)uVar4;\n dVar21 = SQRT((dVar21 - dVar11) * (dVar21 - dVar11) +\n (dVar14 - dVar10) * (dVar14 - dVar10));\n dVar14 = dVar12 * 0.72;\n if (dVar12 * 0.72 <= 0.055) {\n dVar14 = 0.055;\n }\n if (((uVar4 & 1) != 0) ||\n (dVar22 = in_d2, uVar19 = in_d3, _CGRectContainsPoint(in_d0,in_d1),\n (dVar21 <= dVar14 || 0.08 <= dVar16) || (uVar1 & 1) != 0)) {\n dVar22 = 2.220446049250313e-16;\n if (2.220446049250313e-16 <= dVar14) {\n dVar22 = dVar14;\n }\n dVar21 = dVar21 / dVar22;\n dVar22 = 1.0;\n if (dVar21 <= 1.0) {\n dVar22 = dVar21;\n }\n dVar14 = ((1.0 - dVar22) * 3.0 + dVar16 * 8.0 + local_1d0 * 1.3) - dVar9;\n dVar16 = dVar9;\n dVar22 = local_1d0;\n if ((local_1e8 == 0) || (dVar16 = local_1f0, local_1f0 < dVar14)) {\n local_218 = uVar20;\n dStack_210 = dVar18;\n local_208 = dVar17;\n dStack_200 = dVar8;\n local_1f0 = dVar14;\n local_1e8 = self;\n }\n }\n }\n }\n }\n }\nLAB_10001a724:\n IVar7 = IVar7 + 1;\n } while (IVar2 != IVar7);\n IVar2 = objc_stub::countByEnumeratingWithState_objects_count_\n (self_01,&local_190,auStack_130,0x10);\n } while (IVar2 != 0);\n }\n objc_stub::unlock(*(ID *)(param_1 + 0x28));\n FUN_10001ab3c(dStack_200,local_208,dStack_210,local_218,in_d0,in_d1,in_d2,in_d3);\n IVar2 = objc_stub::count(local_1e8);\n if ((0x4c < IVar2) &&\n (IVar2 = local_1e8, FUN_10001b070(in_d0,in_d1,in_d2,in_d3), (IVar2 & 1) != 0)) {\n FUN_10001b584(in_d0,in_d1,in_d2,in_d3);\n FUN_10001b584(dStack_200,local_208,dStack_210,local_218);\n objc_stub::count(local_1e8);\n objc_stub::count(local_1e8);\n _NSStringFromRect(dStack_200,local_208,dStack_210,local_218);\n _NSStringFromRect(in_d0,in_d1,in_d2,in_d3);\n goto LAB_10001a81c;\n }\n FUN_10001b584(in_d0,in_d1,in_d2,in_d3);\n FUN_10001b584(dStack_200,local_208,dStack_210,local_218);\n objc_stub::count(local_1e8);\n }\n local_1e8 = 0;\nLAB_10001a81c:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 != local_b0) {\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n }\n return local_1e8;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_c01322d703544f55fa57b7ba267f4ae6ac6ac500e7b1810572ad2886d2720d8c", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [], + "operation": "search_procedures", + "parameters": { + "case_sensitive": false, + "mode": "literal", + "pattern": "MSSSkinControlPanelView::sections" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_c026d2020bec8132d328058574f401a0943745e52fcf12301b223ebfa03f1590", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\ndouble FUN_10001bef0(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n uint param_5)\n\n{\n double dVar1;\n \n _CGRectIsNull();\n if (((((param_5 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) == 0)) &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) {\n _CGRectStandardize(param_1,param_2,param_3,param_4);\n _CGRectIntersection();\n _CGRectIsNull();\n if ((((param_5 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) == 0)) &&\n ((dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)))) {\n return param_1;\n }\n }\n return *(double *)PTR__CGRectNull_1000a8148;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10001bef0" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\ndouble FUN_10001bef0(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n uint param_5)\n\n{\n double dVar1;\n \n _CGRectIsNull();\n if (((((param_5 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) == 0)) &&\n (dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)) {\n _CGRectStandardize(param_1,param_2,param_3,param_4);\n _CGRectIntersection();\n _CGRectIsNull();\n if ((((param_5 & 1) == 0) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (param_5 & 1) == 0)) &&\n ((dVar1 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1 &&\n (dVar1 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar1)))) {\n return param_1;\n }\n }\n return *(double *)PTR__CGRectNull_1000a8148;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_c1a665914a489c44d2d8e71befd9f91872d9125e425b0d05b9dbb846876322ba", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x1000428d8 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_release replaced with injection: _objc_release_fixup */\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* Function Stack Size: 0x50 bytes */\n\nID MSSuperSkinSmoothingPlugIn::\n temporalFacePointsForObservations_renderTime_params_selectedObservationOut_strengthMultiplierOut_pointsBoxOut_\n (ID param_1,SEL param_2,ID param_3,AnonymousStructure0 param_4,\n const_AnonymousStructure7__ param_5,ID *param_6,double *param_7,CGRect *param_8)\n\n{\n uint uVar1;\n undefined1 auVar2 [16];\n undefined1 auVar3 [16];\n double *pdVar4;\n undefined1 auVar5 [16];\n undefined *puVar6;\n undefined *puVar7;\n bool bVar8;\n bool bVar9;\n bool bVar10;\n bool bVar11;\n bool bVar12;\n int iVar13;\n bool bVar14;\n undefined4 uVar15;\n ulong uVar17;\n CGRect *pCVar18;\n undefined1 *puVar19;\n ID IVar20;\n double *pdVar21;\n byte bVar22;\n uint uVar23;\n long lVar24;\n uint uVar25;\n ulong uVar26;\n long lVar27;\n double dVar28;\n double dVar29;\n double dVar30;\n double dVar31;\n double dVar32;\n double dVar33;\n double dVar34;\n double dVar35;\n double dVar36;\n double dVar37;\n double dVar38;\n double dVar39;\n double dVar40;\n double dVar41;\n double dVar42;\n double dVar43;\n double dVar44;\n double dVar45;\n double extraout_d0;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double dVar46;\n undefined1 auVar47 [16];\n undefined1 auVar48 [16];\n undefined1 auVar49 [16];\n double dVar50;\n double dVar51;\n double dVar52;\n undefined8 uVar53;\n unsigned_long_long uVar54;\n undefined8 uVar55;\n undefined8 uVar56;\n undefined8 uVar57;\n double dVar58;\n double dVar59;\n undefined1 auVar60 [16];\n undefined1 auVar61 [16];\n CGRect CVar62;\n CGRect CVar63;\n double dStack_398;\n uint local_358;\n uint local_354;\n uint local_330;\n uint local_318;\n double local_310;\n double local_308;\n double local_300;\n double local_2f8;\n double local_2f0;\n undefined8 local_2e8;\n double local_2e0;\n uint local_2d4;\n double local_2d0;\n double dStack_2c8;\n double *local_2b8;\n double local_2b0;\n double dStack_2a8;\n undefined8 local_2a0;\n double dStack_298;\n double local_290;\n uint local_284;\n double local_280;\n undefined8 local_278;\n double *local_270;\n double local_268;\n double dStack_260;\n double local_258;\n double local_250;\n double local_248;\n double local_240;\n double local_238;\n double dStack_230;\n uint local_228;\n uint local_224;\n double local_220;\n double local_218;\n double local_210;\n double local_208;\n double local_200;\n double local_1f8;\n double local_1f0;\n double dStack_1e8;\n double local_1e0;\n double dStack_1d8;\n double local_1d0;\n double local_1c8;\n double local_1c0;\n double dStack_1b8;\n double local_1b0;\n undefined8 local_1a8;\n double local_1a0;\n double local_190;\n undefined8 uStack_188;\n double local_180;\n undefined1 local_170 [16];\n double local_160;\n double local_158;\n byte local_141;\n undefined1 local_140 [12];\n uint uStack_134;\n double local_130;\n CGRect local_120;\n double local_f8;\n undefined1 local_f0 [12];\n uint uStack_e4;\n double local_e0;\n double local_d0;\n int local_c8;\n double local_c0;\n int local_b8;\n long local_b0;\n ID IVar16;\n \n lVar27 = param_4._8_8_;\n pdVar21 = (double *)param_4.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n local_2b8 = (double *)param_6;\n local_290 = (double)param_3;\n IVar16 = objc_stub::lock(*(ID *)(param_1 + 0x28));\n iVar13 = (int)IVar16;\n if (lVar27 == 0) {\n local_330 = 0;\n local_224 = 0;\n uVar23 = *(uint *)((long)pdVar21 + 0xc);\n }\n else {\n local_330 = (uint)*(byte *)(lVar27 + 0xf8);\n uVar23 = *(uint *)((long)pdVar21 + 0xc);\n if ((*(char *)(lVar27 + 0x172) == '\\x01') && (FUN_1000500b0(), iVar13 != 0)) {\n if ((((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x68))) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x70)))) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x78)))) ||\n (((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x80)) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x88)))) ||\n ((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x90)) ||\n ((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x98)) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0xa0)))))))))) {\n local_224 = 1;\n }\n else {\n local_224 = (uint)(2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0xa8)));\n }\n }\n else {\n local_224 = 0;\n }\n }\n if ((*(char *)(param_1 + 0x368) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x310)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x318);\n uVar55 = *(undefined8 *)(param_1 + 800);\n uVar56 = *(undefined8 *)(param_1 + 0x328);\n uVar57 = *(undefined8 *)(param_1 + 0x330);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) != 0) ||\n ((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) != 0 ||\n (dVar29 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n dVar29 <= 2.220446049250313e-16)))) goto LAB_10003fa84;\n dVar29 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57);\n local_354 = (uint)(2.220446049250313e-16 < dVar29);\n }\n else {\nLAB_10003fa84:\n local_354 = 0;\n }\n puVar7 = PTR__kCMTimeInvalid_1000a8208;\n puVar6 = PTR__CGRectNull_1000a8148;\n local_228 = uVar23 & 0x1d;\n local_270 = pdVar21;\n if ((local_224 & 1) == 0) {\n if ((((*(byte *)(param_1 + 0x308) & 1) != 0) || ((*(byte *)(param_1 + 0x410) & 1) != 0)) ||\n (IVar16 = objc_stub::count(*(ID *)(param_1 + 0x418)), IVar16 != 0)) {\n if (local_228 == 1) {\n local_120.field0_0x0.field0_0x0 = *local_270;\n local_120.field0_0x0.field1_0x8 = local_270[1];\n local_120.field1_0x10.field0_0x0 = local_270[2];\n _CMTimeGetSeconds(&local_120);\n }\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n FUN_10001b584(*(undefined8 *)(param_1 + 0x318),*(undefined8 *)(param_1 + 800),\n *(undefined8 *)(param_1 + 0x328),*(undefined8 *)(param_1 + 0x330));\n objc_stub::count(*(ID *)(param_1 + 0x418));\n }\n *(undefined8 *)(param_1 + 0x2b0) = 0;\n uVar53 = *(undefined8 *)puVar6;\n uVar56 = *(undefined8 *)(puVar6 + 0x18);\n uVar55 = *(undefined8 *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x2c0) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x2b8) = uVar53;\n *(undefined8 *)(param_1 + 0x2d0) = uVar56;\n *(undefined8 *)(param_1 + 0x2c8) = uVar55;\n uVar53 = *(undefined8 *)puVar7;\n uVar55 = *(undefined8 *)(puVar7 + 8);\n *(undefined8 *)(param_1 + 0x2e0) = uVar55;\n *(undefined8 *)(param_1 + 0x2d8) = uVar53;\n uVar56 = *(undefined8 *)(puVar7 + 0x10);\n *(undefined8 *)(param_1 + 0x2e8) = uVar56;\n *(undefined8 *)(param_1 + 0x2f8) = uVar55;\n *(undefined8 *)(param_1 + 0x2f0) = uVar53;\n *(undefined8 *)(param_1 + 0x300) = uVar56;\n *(undefined1 *)(param_1 + 0x308) = 0;\n mss_clearRewindFaceReferences(param_1);\n }\n dVar29 = 0.0;\n if (((*(char *)(param_1 + 0x308) == '\\x01') && (local_228 == 1)) &&\n ((*(uint *)(param_1 + 0x2fc) & 0x1d) == 1)) {\n local_120.field0_0x0.field0_0x0 = *local_270;\n local_120.field0_0x0.field1_0x8 = local_270[1];\n local_120.field1_0x10.field0_0x0 = local_270[2];\n local_170._0_8_ = *(long_long *)(param_1 + 0x2f0);\n local_170._8_8_ = *(undefined8 *)(param_1 + 0x2f8);\n local_160 = *(double *)(param_1 + 0x300);\n pCVar18 = &local_120;\n _CMTimeCompare(pCVar18,local_170);\n local_284 = local_224;\n dVar29 = 0.0;\n if ((int)pCVar18 < 0) {\n local_170._0_8_ = *(long_long *)(param_1 + 0x2f0);\n local_170._8_8_ = *(undefined8 *)(param_1 + 0x2f8);\n local_160 = *(double *)(param_1 + 0x300);\n local_f0._0_8_ = *local_270;\n unique0x10003b1c = local_270[1];\n local_e0 = local_270[2];\n _CMTimeSubtract(&local_120,local_170,local_f0);\n dVar30 = (double)_CMTimeGetSeconds(&local_120);\n local_284 = (uint)(dVar30 <= 0.05 || 0x7fefffffffffffff < (ulong)ABS(dVar30));\n dVar29 = 0.0;\n if (local_284 == 0) {\n dVar29 = dVar30;\n }\n local_284 = local_284 & local_224;\n }\n }\n else {\n local_284 = local_224;\n }\n local_f8 = 0.0;\n local_2d4 = (uint)(0.05 < dVar29 && (ulong)ABS(dVar29) < 0x7ff0000000000000);\n dVar29 = *(double *)puVar6;\n dVar30 = *(double *)(puVar6 + 8);\n dVar52 = *(double *)(puVar6 + 0x18);\n dVar50 = *(double *)(puVar6 + 0x10);\n dVar45 = *(double *)puVar7;\n dVar46 = *(double *)(puVar7 + 8);\n dVar28 = *(double *)(puVar7 + 0x10);\n local_141 = 0;\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_140._0_8_ = dVar45;\n unique0x1000573d = dVar46;\n local_130 = dVar28;\n local_120.field0_0x0.field0_0x0 = dVar29;\n local_120.field0_0x0.field1_0x8 = dVar30;\n local_120.field1_0x10.field0_0x0 = dVar50;\n local_120.field1_0x10.field1_0x8 = dVar52;\n local_f0._0_8_ = dVar45;\n unique0x10005775 = dVar46;\n local_e0 = dVar28;\n bVar14 = mss_timeLocalFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_detectionTimeOut_outputTimeOut_usedHistoryOut_\n (param_1,(AnonymousStructure0 *)local_170,0,(ID *)&local_f8,&local_120,\n (AnonymousStructure0 *)local_f0,(AnonymousStructure0 *)local_140,\n (bool *)&local_141);\n dStack_230 = *(double *)puVar6;\n local_238 = *(double *)(puVar6 + 8);\n local_240 = *(double *)(puVar6 + 0x10);\n local_248 = *(double *)(puVar6 + 0x18);\n if (((bVar14 | local_2d4) & 1) != 0) goto LAB_10003fec0;\n if ((*(char *)(param_1 + 0x308) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x2b0)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x2b8);\n uVar55 = *(undefined8 *)(param_1 + 0x2c0);\n uVar56 = *(undefined8 *)(param_1 + 0x2c8);\n uVar57 = *(undefined8 *)(param_1 + 0x2d0);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) != 0) ||\n (((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) != 0 ||\n (dVar31 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n dVar31 <= 2.220446049250313e-16)) ||\n (dVar31 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57),\n dVar31 <= 2.220446049250313e-16)))) goto LAB_10003fddc;\n local_f8 = *(double *)(param_1 + 0x2b0);\n local_120.field0_0x0.field0_0x0 = *(double *)(param_1 + 0x2b8);\n local_120.field0_0x0.field1_0x8 = *(double *)(param_1 + 0x2c0);\n local_120.field1_0x10.field1_0x8 = *(double *)(param_1 + 0x2d0);\n local_120.field1_0x10.field0_0x0 = *(double *)(param_1 + 0x2c8);\n local_e0 = *(double *)(param_1 + 0x2e8);\n local_f0._0_8_ = *(double *)(param_1 + 0x2d8);\n unique0x10003b94 = *(double *)(param_1 + 0x2e0);\n pdVar21 = (double *)(param_1 + 0x2f0);\nLAB_10003fea8:\n local_358 = 0;\n local_140._0_8_ = *pdVar21;\n unique0x10003bdc = pdVar21[1];\n local_130 = pdVar21[2];\nLAB_10003fec8:\n local_218 = local_120.field1_0x10.field0_0x0;\n local_220 = local_120.field1_0x10.field1_0x8;\n bVar12 = true;\n local_210 = local_120.field0_0x0.field1_0x8;\n local_208 = local_120.field0_0x0.field0_0x0;\n dVar31 = local_f8;\n }\n else {\nLAB_10003fddc:\n if ((*(char *)(param_1 + 0x410) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x3d0)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x3d8);\n uVar55 = *(undefined8 *)(param_1 + 0x3e0);\n uVar56 = *(undefined8 *)(param_1 + 1000);\n uVar57 = *(undefined8 *)(param_1 + 0x3f0);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) == 0) &&\n ((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) == 0 &&\n (dVar31 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n 2.220446049250313e-16 < dVar31)))) {\n dVar31 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57);\n if (2.220446049250313e-16 < dVar31) {\n local_f8 = *(double *)(param_1 + 0x3d0);\n local_120.field0_0x0.field0_0x0 = *(double *)(param_1 + 0x3d8);\n local_120.field0_0x0.field1_0x8 = *(double *)(param_1 + 0x3e0);\n local_120.field1_0x10.field1_0x8 = *(double *)(param_1 + 0x3f0);\n local_120.field1_0x10.field0_0x0 = *(double *)(param_1 + 1000);\n pdVar21 = (double *)(param_1 + 0x3f8);\n local_e0 = *(double *)(param_1 + 0x408);\n local_f0._0_8_ = *pdVar21;\n unique0x10003bc4 = *(double *)(param_1 + 0x400);\n goto LAB_10003fea8;\n }\n goto LAB_10003fec0;\n }\n }\n else {\nLAB_10003fec0:\n local_358 = 1;\n if ((bVar14 & 1) != 0) goto LAB_10003fec8;\n }\n local_358 = 1;\n bVar12 = false;\n dVar31 = 0.0;\n local_208 = dStack_230;\n local_210 = local_238;\n local_218 = local_240;\n local_220 = local_248;\n }\n local_c0 = (double)local_f0._0_8_;\n uVar23 = uStack_e4;\n local_b8 = local_f0._8_4_;\n local_2d0 = local_e0;\n local_d0 = (double)local_140._0_8_;\n local_318 = uStack_134;\n local_c8 = local_140._8_4_;\n local_2e0 = local_130;\n if (bVar12) {\n uVar17 = objc_stub::count((ID)dVar31);\n if ((((uVar17 < 0x4d) ||\n (_CGRectIsNull(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar32 <= 2.220446049250313e-16)) {\n uVar25 = 0;\n }\n else {\n dVar32 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n uVar25 = (uint)(2.220446049250313e-16 < dVar32);\n }\n }\n else {\n uVar25 = 0;\n }\n local_358 = local_358 & local_141;\n local_2b0 = dVar31;\n if (local_358 == 0) {\n local_2b0 = 0.0;\n }\n local_300 = local_210;\n local_2f8 = local_208;\n local_310 = local_220;\n local_308 = local_218;\n local_2a0._0_4_ = uVar25;\n if (local_358 == 0) {\n local_2a0._0_4_ = 0;\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_310 = local_248;\n local_308 = local_240;\n }\n if ((local_224 & 1) == 0) {\n if (local_354 != 0) {\n local_2a0 = (double)((ulong)local_2a0._4_4_ << 0x20);\n local_2b0 = 0.0;\n local_358 = 0;\n dVar31 = *(double *)(param_1 + 0x310);\n local_208 = *(double *)(param_1 + 0x318);\n local_210 = *(double *)(param_1 + 800);\n local_218 = *(double *)(param_1 + 0x328);\n local_220 = *(double *)(param_1 + 0x330);\n local_c0 = *(double *)(param_1 + 0x338);\n local_b8 = *(int *)(param_1 + 0x340);\n uVar23 = *(uint *)(param_1 + 0x344);\n local_2d0 = *(double *)(param_1 + 0x348);\n local_d0 = *(double *)(param_1 + 0x350);\n local_c8 = *(int *)(param_1 + 0x358);\n uVar25 = 1;\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_318 = *(uint *)(param_1 + 0x35c);\n local_310 = local_248;\n local_308 = local_240;\n local_2e0 = *(double *)(param_1 + 0x360);\n goto LAB_1000400cc;\n }\n bVar12 = false;\n dVar31 = 0.0;\n local_2a0 = (double)((ulong)local_2a0._4_4_ << 0x20);\n local_358 = 0;\n uVar25 = 0;\n local_2b0 = 0.0;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n local_d0 = *(double *)puVar7;\n local_c8 = *(int *)(puVar7 + 8);\n uVar23 = *(uint *)(puVar7 + 0xc);\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_310 = local_248;\n local_308 = local_240;\n local_208 = dStack_230;\n local_210 = local_238;\n local_218 = local_240;\n local_220 = local_248;\n local_2e0 = dVar28;\n local_2d0 = dVar28;\n local_c0 = local_d0;\n local_b8 = local_c8;\n local_318 = uVar23;\n }\n else {\nLAB_1000400cc:\n if ((((uint)local_2a0 == 0) || (local_2b0 == 0.0)) || (local_2b0 == dVar31)) {\n if (uVar25 != 0) goto LAB_100040128;\n bVar12 = false;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n uVar25 = 0;\n }\n else if (uVar25 == 0) {\n bVar12 = false;\n uVar25 = 0;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n }\n else {\nLAB_100040128:\n IVar16 = objc_stub::count((ID)dVar31);\n if (IVar16 < 0x4d) {\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n }\n else {\n local_2e8 = (double)CONCAT44(local_2e8._4_4_,local_2d4 ^ 1 | (uint)local_141);\n }\n bVar12 = IVar16 >= 0x4d;\n uVar25 = 1;\n }\n }\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,uVar23);\n local_200 = dVar31;\n if ((local_284 & 1) == 0) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n }\n uVar17 = objc_stub::count((ID)local_290);\n puVar6 = PTR__CGRectZero_1000a8150;\n local_250 = *(double *)PTR__CGRectZero_1000a8150;\n local_258 = *(double *)(PTR__CGRectZero_1000a8150 + 8);\n dStack_260 = *(double *)(PTR__CGRectZero_1000a8150 + 0x10);\n local_268 = *(double *)(PTR__CGRectZero_1000a8150 + 0x18);\n if (uVar17 == 0) {\n bVar22 = 0;\n local_280 = 0.0;\n local_1f8 = 0.0;\nLAB_100041320:\n local_278 = 0;\n bVar11 = false;\n }\n else {\n if ((uVar25 & (uint)local_2e8) == 1) {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n uVar15 = (undefined4)uVar17;\n if ((uVar17 & 1) != 0) goto LAB_10004029c;\n _CGRectIsEmpty(local_208,local_210,local_218,local_220);\n local_278 = CONCAT44(local_278._4_4_,uVar15) ^ 1;\n }\n else {\nLAB_10004029c:\n local_278 = (ulong)local_278._4_4_ << 0x20;\n }\n if (local_330 == 0) {\n if ((uVar25 & (uint)local_278) != 1) {\n dVar59 = local_290;\n dVar58 = local_210;\n dVar32 = local_218;\n dVar31 = local_220;\n FUN_10003f020(local_208);\n local_280 = dVar59;\nLAB_1000406b4:\n bVar10 = false;\n goto LAB_1000406bc;\n }\n if (lVar27 == 0) {\n uVar53 = 0x3ff8000000000000;\n }\n else {\n uVar53 = *(undefined8 *)(lVar27 + 0xf0);\n }\n dVar31 = local_290;\n local_170._0_8_ = dVar29;\n local_170._8_8_ = dVar30;\n local_160 = dVar50;\n local_158 = dVar52;\n FUN_1000428e0(local_208,local_210,local_218,local_220,uVar53,local_290,local_170);\n IVar16 = objc_stub::count((ID)dVar31);\n if (IVar16 == 0) {\n if (local_228 == 1) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&cf_faceSelectauto_guard_holdfaces__lurange___2fprevious___search___);\n }\n else {\n bVar11 = local_228 == 1;\n dVar32 = dVar31;\n dVar58 = local_210;\n dVar59 = local_218;\n dVar34 = local_220;\n FUN_100042c58(local_208,local_210,local_218,local_220);\n local_280 = dVar32;\n uVar53 = FUN_10003d49c(dVar32);\n if (bVar11) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar31);\n FUN_10001b584(uVar53,dVar58,dVar59,dVar34);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar31);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&\n cf_faceSelectauto_guard_searchfaces__lucandidates__lurange___2fprevious___search___\n );\n if (local_280 != 0.0) {\n bVar22 = 0;\n *(undefined1 *)(param_1 + 0x4a9) = 0;\n uVar53 = *(undefined8 *)puVar6;\n uVar55 = *(undefined8 *)(puVar6 + 0x18);\n dVar58 = *(double *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x4b8) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x4b0) = uVar53;\n *(undefined8 *)(param_1 + 0x4c8) = uVar55;\n *(double *)(param_1 + 0x4c0) = dVar58;\n *(double *)(param_1 + 0x4d8) = dVar46;\n *(double *)(param_1 + 0x4d0) = dVar45;\n *(double *)(param_1 + 0x4e0) = dVar28;\n bVar11 = true;\n goto LAB_100040a18;\n }\n }\n local_280 = 0.0;\n bVar11 = false;\n bVar22 = 1;\nLAB_100040a18:\n bVar10 = false;\n }\n else {\n dVar59 = *(double *)(lVar27 + 0x100);\n dVar58 = *(double *)(lVar27 + 0x108);\n if (*(char *)(param_1 + 0x420) == '\\x01') {\n lVar24 = *(long *)(lVar27 + 0x168);\n if (lVar24 < 1) {\n bVar11 = false;\n }\n else {\n bVar11 = *(long *)(param_1 + 0x438) < lVar24;\n if (lVar24 <= *(long *)(param_1 + 0x438)) {\n bVar11 = false;\n dVar31 = dVar59 - *(double *)(param_1 + 0x428);\n dVar32 = dVar58 - *(double *)(param_1 + 0x430);\n dVar31 = SQRT(dVar32 * dVar32 + dVar31 * dVar31);\n if (((ulong)ABS(dVar31) < 0x7ff0000000000000) && (0.01 < dVar31)) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n bVar11 = false;\n }\n }\n }\n }\n else {\n bVar11 = true;\n }\n if (((uint)local_278 == 0) || (uVar17 = objc_stub::count((ID)local_200), uVar17 < 0x4d)) {\n bVar10 = false;\n dVar34 = local_290;\n dVar31 = local_210;\n dVar32 = local_208;\n }\n else {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n if ((((uVar17 & 1) != 0) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar31 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar31 <= 2.220446049250313e-16)) {\n bVar10 = false;\n }\n else {\n dVar31 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n bVar10 = 2.220446049250313e-16 < dVar31;\n }\n bVar10 = (bool)(bVar10 & (bVar11 ^ 1U));\n dVar34 = local_290;\n dVar31 = local_210;\n dVar32 = local_208;\n }\n local_290 = dVar34;\n local_210 = dVar31;\n local_208 = dVar32;\n if (!bVar11) {\n if (!bVar10) {\n FUN_10003f44c(dVar59,dVar34,local_278 & 0xffffffff);\n local_280 = dVar34;\n goto LAB_1000406b4;\n }\n local_170._0_8_ = dVar29;\n local_170._8_8_ = dVar30;\n local_160 = dVar50;\n local_158 = dVar52;\n FUN_1000428e0(dVar32,dVar31,local_218,local_220,*(undefined8 *)(lVar27 + 0xf0),dVar34,\n local_170);\n IVar16 = objc_stub::count((ID)dVar34);\n if (IVar16 == 0) {\n if (local_228 == 1) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&cf_faceSelectmanual_guard_holdfaces__lurange___2fprevious___search___);\n local_280 = 0.0;\n bVar11 = false;\n }\n else {\n bVar10 = local_228 == 1;\n dVar31 = dVar34;\n dVar32 = local_210;\n dVar58 = local_218;\n dVar59 = local_220;\n FUN_100042c58(local_208,local_210,local_218,local_220);\n bVar11 = dVar31 != 0.0;\n local_280 = dVar31;\n uVar53 = FUN_10003d49c();\n if (bVar10) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar34);\n FUN_10001b584(uVar53,dVar32,dVar58,dVar59);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar34);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&\n cf_faceSelectmanual_guard_searchfaces__lucandidates__lurange___2fprevious___search___\n );\n }\n bVar22 = 0;\n goto LAB_100040a18;\n }\n bVar11 = local_228 == 1;\n FUN_10003f44c(dVar59,dVar58,local_250,local_258,dStack_260,local_268,dVar34,0);\n local_280 = dVar34;\n if (bVar11) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n objc_stub::count((ID)local_290);\n FUN_10003d49c(local_280);\n FUN_10001b584();\n dVar58 = local_210;\n dVar32 = local_218;\n dVar31 = local_220;\n FUN_10001b584(local_208);\n bVar10 = true;\nLAB_1000406bc:\n bVar22 = 0;\n bVar11 = true;\n }\n if (local_280 == 0.0) {\n local_1f8 = 0.0;\n if (!bVar11) {\n local_280 = 0.0;\n goto LAB_100041320;\n }\nLAB_100041068:\n objc_stub::count((ID)local_290);\n local_278 = 0;\n dVar28 = local_2e0;\n }\n else {\n objc_stub::boundingBox((ID)local_280);\n _CGRectStandardize();\n dVar33 = (double)_CGRectIntersection();\n dVar59 = local_280;\n FUN_100029d4c();\n dVar34 = dVar58;\n dVar51 = dVar32;\n dVar39 = dVar31;\n local_1f8 = dVar59;\n local_250 = (double)FUN_100042f9c(dVar33);\n local_268 = dVar39;\n dStack_260 = dVar51;\n local_258 = dVar34;\n _CGRectIsNull(local_250,dVar34,dVar51,dVar39);\n if (((((ulong)dVar59 & 1) != 0) ||\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) != 0)) ||\n ((dVar34 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar34 <= 2.220446049250313e-16 ||\n (dVar34 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n dVar34 <= 2.220446049250313e-16)))) {\n local_268 = dVar31;\n dStack_260 = dVar32;\n local_258 = dVar58;\n local_250 = dVar33;\n }\n _CGRectIsNull(dVar33,dVar58,dVar32,dVar31);\n if (((((ulong)dVar59 & 1) == 0) &&\n (_CGRectIsEmpty(dVar33,dVar58,dVar32,dVar31), ((ulong)dVar59 & 1) == 0)) &&\n (((dVar34 = (double)_CGRectGetWidth(dVar33,dVar58,dVar32,dVar31),\n 2.220446049250313e-16 < dVar34 &&\n (((dVar34 = (double)_CGRectGetHeight(dVar33,dVar58,dVar32,dVar31),\n 2.220446049250313e-16 < dVar34 &&\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) == 0)) &&\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) == 0))))\n && (((dVar34 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n 2.220446049250313e-16 < dVar34 &&\n (dVar34 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n 2.220446049250313e-16 < dVar34)) &&\n (FUN_10002a568(local_250,local_258,dStack_260,local_268,dVar33,dVar58,dVar32,dVar31),\n ((ulong)dVar59 & 1) == 0)))))) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dVar33,dVar58,dVar32,dVar31);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_1f8);\n }\n uVar17 = objc_stub::count((ID)local_1f8);\n if (((uVar17 < 0x4d) ||\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), (uVar17 & 1) != 0)) ||\n ((_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), (uVar17 & 1) != 0 ||\n (dVar31 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar31 <= 2.220446049250313e-16)))) goto LAB_100041320;\n dVar31 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268);\n uVar23 = (uint)local_2e8 ^ 1;\n uVar1 = (uint)(dVar31 <= 2.220446049250313e-16) | local_224 ^ 1;\n if (((uVar1 | uVar23) & 1) == 0) {\n IVar16 = objc_stub::count((ID)local_200);\n uVar17 = objc_stub::count((ID)local_1f8);\n if ((((IVar16 != uVar17) ||\n (_CGRectIsNull(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar32 <= 2.220446049250313e-16)) goto LAB_100041140;\n dVar32 = local_218;\n dVar58 = local_220;\n dVar59 = (double)_CGRectGetHeight(local_208,local_210);\n uVar53 = 0x3cb0000000000000;\n if (dVar59 <= 2.220446049250313e-16) goto LAB_100041140;\n uVar56 = FUN_10002a7b8(local_1f8,0x3b,0x4b);\n dVar59 = local_200;\n uVar55 = uVar53;\n dVar34 = dVar32;\n dVar51 = dVar58;\n uVar57 = FUN_10002a7b8(local_200,0x3b,0x4b);\n dVar33 = (double)_CGRectGetMidX(local_250,local_258,dStack_260,local_268);\n dVar35 = (double)_CGRectGetMidY(local_250,local_258,dStack_260,local_268);\n dVar36 = (double)_CGRectGetMidX(local_208,local_210,local_218,local_220);\n dVar37 = (double)_CGRectGetMidY(local_208,local_210,local_218,local_220);\n dVar38 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268);\n dVar39 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268);\n if (dVar39 <= dVar38) {\n dVar39 = dVar38;\n }\n dVar40 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220);\n dVar38 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n if (dVar38 <= dVar40) {\n dVar38 = dVar40;\n }\n if (dVar38 <= dVar39) {\n dVar38 = dVar39;\n }\n dVar39 = dVar38 * 0.16;\n if (dVar38 * 0.16 <= 0.045) {\n dVar39 = 0.045;\n }\n dVar38 = 0.09;\n if (dVar39 <= 0.09) {\n dVar38 = dVar39;\n }\n dVar40 = 0.045;\n if (0.045 <= dVar39) {\n dVar40 = dVar38;\n }\n _CGRectIsNull(uVar56,uVar53,dVar32,dVar58);\n dVar38 = 0.0;\n dVar39 = 0.07;\n if ((((((ulong)dVar59 & 1) != 0) ||\n (_CGRectIsEmpty(uVar56,uVar53,dVar32,dVar58), ((ulong)dVar59 & 1) != 0)) ||\n (((dVar41 = (double)_CGRectGetWidth(uVar56,uVar53,dVar32,dVar58),\n dVar41 <= 2.220446049250313e-16 ||\n ((dVar41 = (double)_CGRectGetHeight(uVar56,uVar53,dVar32,dVar58),\n dVar41 <= 2.220446049250313e-16 ||\n (_CGRectIsNull(uVar57,uVar55,dVar34,dVar51), ((ulong)dVar59 & 1) != 0)))) ||\n (_CGRectIsEmpty(uVar57,uVar55,dVar34,dVar51), ((ulong)dVar59 & 1) != 0)))) ||\n ((dVar59 = (double)_CGRectGetWidth(uVar57,uVar55,dVar34,dVar51),\n dVar59 <= 2.220446049250313e-16 ||\n (dVar59 = (double)_CGRectGetHeight(uVar57,uVar55,dVar34,dVar51),\n dVar59 <= 2.220446049250313e-16)))) {\n bVar11 = false;\n }\n else {\n dVar39 = (double)_CGRectGetMidX(uVar56,uVar53,dVar32,dVar58);\n dVar38 = (double)_CGRectGetMidY(uVar56,uVar53,dVar32,dVar58);\n dVar41 = (double)_CGRectGetMidX(uVar57,uVar55,dVar34,dVar51);\n dVar42 = (double)_CGRectGetMidY(uVar57,uVar55,dVar34,dVar51);\n dVar43 = (double)_CGRectGetWidth(uVar56,uVar53,dVar32,dVar58);\n dVar59 = (double)_CGRectGetHeight(uVar56,uVar53,dVar32,dVar58);\n if (dVar59 <= dVar43) {\n dVar59 = dVar43;\n }\n dVar44 = (double)_CGRectGetWidth(uVar57,uVar55,dVar34,dVar51);\n dVar43 = (double)_CGRectGetHeight(uVar57,uVar55,dVar34,dVar51);\n dVar38 = SQRT((dVar38 - dVar42) * (dVar38 - dVar42) +\n (dVar39 - dVar41) * (dVar39 - dVar41));\n if (dVar43 <= dVar44) {\n dVar43 = dVar44;\n }\n if (dVar43 <= dVar59) {\n dVar43 = dVar59;\n }\n dVar59 = dVar43 * 0.18;\n if (dVar43 * 0.18 <= 0.04) {\n dVar59 = 0.04;\n }\n dVar41 = 0.08;\n if (dVar59 <= 0.08) {\n dVar41 = dVar59;\n }\n dVar39 = 0.04;\n if (0.04 <= dVar59) {\n dVar39 = dVar41;\n }\n bVar11 = true;\n }\n bVar8 = false;\n if (dVar39 < dVar38) {\n bVar8 = bVar11;\n }\n if ((SQRT((dVar35 - dVar37) * (dVar35 - dVar37) + (dVar33 - dVar36) * (dVar33 - dVar36)) <=\n dVar40) && (!bVar8)) goto LAB_100041140;\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001c338(uVar57,uVar55,dVar34,dVar51);\n FUN_10001c338(uVar56,uVar53,dVar32,dVar58);\n local_2e8 = (double)((ulong)local_2e8 & 0xffffffff00000000);\n }\n else {\nLAB_100041140:\n if ((((uVar1 | (uint)local_278 ^ 0xffffffff | uVar23) & 1) == 0) &&\n (uVar17 = objc_stub::count((ID)local_200), 0x4c < uVar17)) {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n if ((((uVar17 & 1) == 0) &&\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) == 0)) &&\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n 2.220446049250313e-16 < dVar32)) {\n dVar32 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n if (dVar32 <= 2.220446049250313e-16) goto LAB_10004130c;\n local_190 = NAN;\n bVar11 = local_228 == 1;\n local_1b0 = NAN;\n local_1c0 = NAN;\n dVar31 = local_1f8;\n FUN_100043338(local_250,local_258,dStack_260,local_268,local_208,local_210,local_218,\n local_220,local_1f8,local_200,&local_190,&local_1b0,&local_1c0);\n if (bVar11) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n if (SUB84(dVar31,0) != 0) {\n dVar31 = local_200;\n FUN_10001ab3c(local_208,local_210,local_218,local_220,local_250,local_258,dStack_260,\n local_268);\n IVar16 = objc_stub::count((ID)dVar31);\n if ((0x4c < IVar16) &&\n (dVar32 = dVar31, FUN_10001b070(local_250,local_258,dStack_260,local_268),\n SUB84(dVar32,0) != 0)) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n objc_stub::count((ID)dVar31);\n local_1f8 = dVar31;\n }\n }\n }\n }\n else {\nLAB_10004130c:\n if (dVar31 <= 2.220446049250313e-16) goto LAB_100041320;\n }\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_1f8);\n if ((local_330 == 0) || (!bVar10)) goto LAB_100041068;\n uVar53 = *(undefined8 *)puVar6;\n uVar56 = *(undefined8 *)(puVar6 + 0x18);\n uVar55 = *(undefined8 *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x4b8) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x4b0) = uVar53;\n local_d0 = *(double *)puVar7;\n local_c8 = *(int *)(puVar7 + 8);\n *(undefined1 *)(param_1 + 0x4a9) = 0;\n *(undefined8 *)(param_1 + 0x4c8) = uVar56;\n *(undefined8 *)(param_1 + 0x4c0) = uVar55;\n *(double *)(param_1 + 0x4d8) = dVar46;\n *(double *)(param_1 + 0x4d0) = dVar45;\n *(double *)(param_1 + 0x4e0) = dVar28;\n local_c0 = local_d0;\n local_b8 = local_c8;\n mss_clearRewindFaceReferences(param_1);\n if (lVar27 != 0) {\n *(undefined1 *)(param_1 + 0x420) = 1;\n dVar46 = *(double *)(lVar27 + 0x100);\n dVar45 = 1.0;\n if (dVar46 <= 1.0) {\n dVar45 = dVar46;\n }\n dVar31 = 0.0;\n if (0.0 <= dVar46) {\n dVar31 = dVar45;\n }\n *(double *)(param_1 + 0x428) = dVar31;\n dVar46 = *(double *)(lVar27 + 0x108);\n dVar45 = 1.0;\n if (dVar46 <= 1.0) {\n dVar45 = dVar46;\n }\n dVar31 = 0.0;\n if (0.0 <= dVar46) {\n dVar31 = dVar45;\n }\n *(double *)(param_1 + 0x430) = dVar31;\n lVar24 = *(long *)(lVar27 + 0x168);\n if (*(long *)(lVar27 + 0x168) <= *(long *)(param_1 + 0x438)) {\n lVar24 = *(long *)(param_1 + 0x438);\n }\n *(long *)(param_1 + 0x438) = lVar24;\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_290);\n local_200 = 0.0;\n uVar25 = 0;\n local_318 = *(uint *)(puVar7 + 0xc);\n local_278 = 1;\n local_2e8 = (double)((ulong)local_2e8 & 0xffffffff00000000);\n if (lVar27 == 0) {\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,local_318);\n local_210 = local_238;\n local_208 = dStack_230;\n local_220 = local_248;\n local_218 = local_240;\n local_2d0 = dVar28;\n }\n else {\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,local_318);\n local_210 = local_238;\n local_208 = dStack_230;\n local_220 = local_248;\n local_218 = local_240;\n local_2d0 = dVar28;\n }\n }\n _NSStringFromRect(local_250,local_258,dStack_260,local_268);\n FUN_1000329ac(&cf_faceSelectmode___faces__luclick____4f___4f_switched__dbbox___);\n bVar11 = true;\n local_2e0 = dVar28;\n }\n dVar45 = local_200;\n if ((((uVar25 ^ 1) == 0) && (local_228 == 1)) && ((local_2f0._0_4_ & 0x1d) == 1)) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_190 = local_c0;\n uStack_188 = (double)CONCAT44(local_2f0._0_4_,local_b8);\n local_180 = local_2d0;\n puVar19 = local_170;\n _CMTimeCompare(puVar19,&local_190);\n dVar45 = local_200;\n if (-1 < (int)puVar19) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n local_1b0 = local_c0;\n local_1a8 = (double)CONCAT44(local_2f0._0_4_,local_b8);\n local_1a0 = local_2d0;\n _CMTimeSubtract(local_170,&local_190,&local_1b0);\n _CMTimeGetSeconds(local_170);\n dVar45 = local_200;\n }\n }\n local_200 = dVar45;\n if (!bVar11) {\n if ((bool)(bVar12 & bVar22)) {\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n _NSStringFromRect(*(undefined8 *)(param_1 + 0x4e8),*(undefined8 *)(param_1 + 0x4f0),\n *(undefined8 *)(param_1 + 0x4f8),*(undefined8 *)(param_1 + 0x500));\n FUN_1000329ac(&cf_faceSelecthold_unstable_targetautoHold__dautoMissing__dbbox___tracked___);\nLAB_1000416e8:\n local_238 = local_210;\n dStack_230 = local_208;\n local_240 = local_218;\n local_310 = local_220;\n }\n else {\n if (bVar12) {\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n FUN_1000329ac(&cf_faceSelecthold_missing_indefinitefaces__lumissing___3fbbox___manual__d);\n goto LAB_1000416e8;\n }\n if (((local_224 & (uint)local_2a0) != 1) ||\n (IVar16 = objc_stub::count((ID)local_2b0), dVar45 = local_2b0, IVar16 < 0x4d)) {\n dVar45 = 0.0;\n uVar54 = 0;\n local_310 = local_248;\n dVar31 = local_240;\n dVar28 = local_238;\n dVar46 = dStack_230;\n goto LAB_100042444;\n }\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_2f8,local_300,local_308,local_310);\n FUN_1000329ac(&cf_faceSelectrewind_fallback_holdfaces__lubbox___manual__d);\n local_238 = local_300;\n dStack_230 = local_2f8;\n local_240 = local_308;\n }\n local_280 = 0.0;\n uVar54 = 0x3ff0000000000000;\n dVar31 = local_240;\n dVar28 = local_238;\n dVar46 = dStack_230;\n goto LAB_100042444;\n }\n if (((uint)local_2e8 & uVar25) == 1) {\n IVar16 = objc_stub::count((ID)dVar45);\n IVar20 = objc_stub::count((ID)local_1f8);\n bVar12 = IVar16 == IVar20;\n }\n else {\n bVar12 = false;\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n uVar23 = local_224 ^ 1;\n if ((((uint)local_278 | uVar23 | uVar25 ^ 1) & 1) == 0 && IVar16 != 0) {\n IVar16 = objc_stub::count((ID)local_200);\n IVar20 = objc_stub::count((ID)local_1f8);\n if (IVar16 == IVar20 && !bVar12) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n }\n }\n bVar11 = local_228 != 1;\n IVar16 = objc_stub::count((ID)local_1f8);\n local_290 = 1.0;\n if (((((((uint)local_278 | uVar23) & 1) != 0 || (bool)(bVar12 ^ 1U)) || IVar16 == 0) || bVar11) ||\n ((local_318 & 0x1d) != 1)) {\nLAB_1000417a0:\n bVar11 = false;\n }\n else {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_190 = local_d0;\n uStack_188 = (double)CONCAT44(local_318,local_c8);\n local_180 = local_2e0;\n puVar19 = local_170;\n _CMTimeCompare(puVar19,&local_190);\n if ((int)puVar19 < 0) goto LAB_1000417a0;\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n local_1b0 = local_d0;\n local_1a8 = (double)CONCAT44(local_318,local_c8);\n local_1a0 = local_2e0;\n _CMTimeSubtract(local_170,&local_190,&local_1b0);\n dVar45 = (double)_CMTimeGetSeconds(local_170);\n bVar11 = false;\n if (((0x7fffffffffffffff < (ulong)dVar45 ||\n 0x3fe < (long)ABS(dVar45) + 0xfff0000000000000U >> 0x35) &&\n 0xffffffffffffe < (long)dVar45 - 1U) && ABS(dVar45) != 0.0) goto LAB_1000417a0;\n if (dVar45 < 0.03) {\n dVar45 = dVar45 / 0.03;\n dVar46 = 1.0;\n if (dVar45 <= 1.0) {\n dVar46 = dVar45;\n }\n local_290 = 0.0;\n if (0.0 <= dVar45) {\n local_290 = dVar46;\n }\n bVar11 = true;\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar46 = 1.0;\n if (((((uint)local_278 | uVar23) & 1) == 0 && !(bool)(bVar12 ^ 1U)) && IVar16 != 0) {\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = 0.0;\n dVar46 = 0.0;\n if (0x4c < IVar16) {\n IVar16 = objc_stub::lastObject((ID)local_1f8);\n objc_stub::X(IVar16);\n dVar45 = (double)_CGRectGetMaxX(local_250,local_258,dStack_260,local_268);\n objc_stub::X(IVar16);\n dVar46 = ABS(extraout_d0 - local_250);\n dVar45 = ABS(dVar45 - extraout_d0_00);\n }\n dVar28 = 1.0;\n if (0.0001 < dVar45 + dVar46) {\n dVar28 = 1.0 - ABS(dVar46 - dVar45) / (dVar45 + dVar46);\n }\n dVar45 = 1.0;\n if (dVar28 <= 1.0) {\n dVar45 = dVar28;\n }\n dVar46 = 0.0;\n if (0.0 <= dVar28) {\n dVar46 = dVar45;\n }\n dVar28 = dVar46 * 0.12 + 0.84;\n dVar45 = 0.96;\n if (dVar28 <= 0.96) {\n dVar45 = dVar28;\n }\n dVar46 = 0.82;\n if (0.82 <= dVar28) {\n dVar46 = dVar45;\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = local_1f8;\n if ((((uint)local_278 | uVar23) & 1) == 0 && IVar16 != 0) {\n dVar28 = local_290;\n if (!bVar11) {\n dVar28 = dVar46;\n }\n if (bVar11 || bVar12) {\n if (bVar11) {\n bVar22 = 0;\n }\n else {\n bVar22 = DAT_1000be160;\n if (DAT_1000be168 != -1) {\n FUN_1000799f0();\n bVar22 = DAT_1000be160;\n }\n }\n local_2e8 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_2d0 = *(double *)PTR__CGPointZero_1000a8140;\n dStack_398 = 0.0;\n dVar31 = 0.0;\n dStack_2c8 = local_2e8;\n local_1f0 = local_2d0;\n dStack_1e8 = local_2e8;\n local_1e0 = local_2d0;\n dStack_1d8 = local_2e8;\n local_1d0 = local_2d0;\n local_1c8 = local_2e8;\n local_1c0 = local_2d0;\n dStack_1b8 = local_2e8;\n local_1b0 = local_2d0;\n local_1a8 = local_2e8;\n local_190 = local_2d0;\n uStack_188 = local_2e8;\n if ((bVar22 & 1) == 0) {\n bVar12 = false;\n local_2b0 = local_2d0;\n dStack_2a8 = local_2e8;\n local_2a0 = local_2d0;\n dStack_298 = local_2e8;\n }\n else {\n dVar45 = local_200;\n FUN_1000435c8(local_200,0x45,0x4b,&local_190);\n if (((((SUB84(dVar45,0) == 0) ||\n (dVar45 = local_200, FUN_1000435c8(local_200,0x3b,0x41,&local_1b0),\n SUB84(dVar45,0) == 0)) ||\n (dVar45 = local_200, FUN_1000435c8(local_200,0x42,0x44,&local_1c0),\n SUB84(dVar45,0) == 0)) ||\n ((dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x45,0x4b,&local_1d0),\n SUB84(dVar45,0) == 0 ||\n (dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x3b,0x41,&local_1e0),\n SUB84(dVar45,0) == 0)))) ||\n (dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x42,0x44,&local_1f0), SUB84(dVar45,0) == 0)\n ) {\n bVar12 = false;\n dStack_2a8 = dStack_2c8;\n local_2b0 = local_2d0;\n dStack_298 = dStack_2c8;\n local_2a0 = local_2d0;\n dVar31 = 0.0;\n }\n else {\n auVar47._0_8_ = dVar28 * 0.58;\n auVar47._8_8_ = dVar28 * 0.72;\n auVar60._0_8_ = -(ulong)(auVar47._0_8_ < 0.34);\n auVar60._8_8_ = -(ulong)(auVar47._8_8_ < 0.42);\n auVar3._8_8_ = -(ulong)(0.7 < auVar47._8_8_);\n auVar3._0_8_ = -(ulong)(0.62 < auVar47._0_8_);\n auVar47 = auVar47 ^ (auVar47 ^ _DAT_100085ff0) & auVar3;\n auVar61[9] = 0x7a;\n auVar61._0_9_ = _DAT_100085fe0;\n auVar61[10] = 0x14;\n auVar61[0xb] = 0xae;\n auVar61[0xc] = 0x47;\n auVar61[0xd] = 0xe1;\n auVar61[0xe] = 0xda;\n auVar61[0xf] = 0x3f;\n auVar47 = auVar47 ^ (auVar47 ^ auVar61) & auVar60;\n lVar27 = -(ulong)(auVar47._0_8_ < 0.0);\n lVar24 = -(ulong)(auVar47._8_8_ < 0.0);\n auVar61 = NEON_fmov(0x3ff0000000000000,8);\n auVar2._8_8_ = -(ulong)(auVar61._8_8_ < auVar47._8_8_);\n auVar2._0_8_ = -(ulong)(auVar61._0_8_ < auVar47._0_8_);\n auVar47 = auVar47 ^ (auVar47 ^ auVar61) & auVar2;\n auVar48._0_8_ =\n (double)CONCAT17(auVar47[7] & ~(byte)((ulong)lVar27 >> 0x38),\n CONCAT16(auVar47[6] & ~(byte)((ulong)lVar27 >> 0x30),\n CONCAT15(auVar47[5] & ~(byte)((ulong)lVar27 >> 0x28),\n CONCAT14(auVar47[4] &\n ~(byte)((ulong)lVar27 >> 0x20),\n CONCAT13(auVar47[3] &\n ~(byte)((ulong)lVar27 >> 0x18),\n CONCAT12(auVar47[2] &\n ~(byte)((ulong)lVar27\n >> 0x10),\n CONCAT11(auVar47[1] &\n ~(byte)((ulong\n )lVar27 >> 8),auVar47[0] & ~(byte)lVar27)))))));\n auVar48[8] = auVar47[8] & ~(byte)lVar24;\n auVar48[9] = auVar47[9] & ~(byte)((ulong)lVar24 >> 8);\n auVar48[10] = auVar47[10] & ~(byte)((ulong)lVar24 >> 0x10);\n auVar48[0xb] = auVar47[0xb] & ~(byte)((ulong)lVar24 >> 0x18);\n auVar48[0xc] = auVar47[0xc] & ~(byte)((ulong)lVar24 >> 0x20);\n auVar48[0xd] = auVar47[0xd] & ~(byte)((ulong)lVar24 >> 0x28);\n auVar48[0xe] = auVar47[0xe] & ~(byte)((ulong)lVar24 >> 0x30);\n auVar48[0xf] = auVar47[0xf] & ~(byte)((ulong)lVar24 >> 0x38);\n dVar31 = auVar48._8_8_;\n dVar45 = local_1f0 - local_1c0;\n dVar28 = dStack_1e8 - dStack_1b8;\n dVar32 = local_1e0 - local_1b0;\n dVar58 = dStack_1d8 - local_1a8;\n local_2d0 = (local_190 + (local_1d0 - local_190) * dVar31) - local_1d0;\n dStack_2c8 = 0.0;\n local_2e8 = (uStack_188 + (local_1c8 - uStack_188) * dVar31) - local_1c8;\n local_2b0 = (local_1b0 + dVar32 * dVar31) - local_1e0;\n dStack_2a8 = (local_1a8 + dVar58 * dVar31) - dStack_1d8;\n local_2a0 = (local_1c0 + dVar45 * auVar48._0_8_) - local_1f0;\n dStack_298 = (dStack_1b8 + dVar28 * auVar48._0_8_) - dStack_1e8;\n dStack_398 = SQRT(dVar58 * dVar58 + dVar32 * dVar32);\n bVar12 = true;\n dVar31 = SQRT(dVar28 * dVar28 + dVar45 * dVar45);\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = (double)NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar16);\n IVar16 = objc_stub::count((ID)local_1f8);\n if (IVar16 != 0) {\n uVar17 = 0;\n lVar27 = 0;\n dVar28 = 1.0;\n if (dVar46 <= 1.0) {\n dVar28 = dVar46;\n }\n local_2f8 = 0.72;\n dVar32 = 0.72;\n if (0.72 <= dVar46) {\n dVar32 = dVar28;\n }\n dVar46 = dVar46 * 0.96;\n dVar28 = 0.96;\n if (dVar46 <= 0.96) {\n dVar28 = dVar46;\n }\n dVar58 = 0.07999999999999996;\n if (0.82 <= dVar46) {\n dVar58 = dVar28 + -0.74;\n }\n local_308 = dStack_2a8;\n local_300 = dStack_298;\n local_2f0 = 0.075;\n local_2e0 = 0.0;\n do {\n IVar16 = objc_stub::objectAtIndexedSubscript_((ID)local_200,uVar17);\n IVar20 = objc_stub::objectAtIndexedSubscript_((ID)local_1f8,uVar17);\n objc_stub::X(IVar20);\n objc_stub::X(IVar16);\n objc_stub::Y(IVar20);\n objc_stub::Y(IVar16);\n uVar26 = uVar17 - 0x3b;\n dVar28 = extraout_d0_01 - extraout_d0_02;\n dVar59 = extraout_d0_03 - extraout_d0_04;\n dVar46 = (double)_hypot(dVar28,dVar59);\n if (bVar11) {\n dVar34 = (double)(&DAT_100086000)[uVar26 < 0x11];\n if ((double)(&DAT_100086000)[uVar26 < 0x11] <= local_290) {\n dVar34 = local_290;\n }\n dVar39 = local_2f0;\n if (uVar26 < 0x11) {\nLAB_100041c88:\n bVar10 = false;\n bVar8 = true;\n bVar9 = false;\n if (2.220446049250313e-16 < dVar46) {\n bVar10 = false;\n bVar8 = false;\n bVar9 = true;\n if (!NAN(dVar46) && !NAN(dVar39)) {\n bVar10 = dVar46 < dVar39;\n bVar8 = dVar46 == dVar39;\n bVar9 = false;\n }\n }\n if (!bVar8 && bVar10 == bVar9) {\n dVar28 = dVar28 * (dVar39 / dVar46);\n dVar59 = dVar59 * (dVar39 / dVar46);\n }\n }\n }\n else {\n dVar34 = dVar32;\n if (uVar26 < 0x11) {\n dVar51 = (dVar46 + -0.01) / 0.03;\n dVar34 = 1.0;\n if (dVar51 <= 1.0) {\n dVar34 = dVar51;\n }\n dVar39 = 0.0;\n if (0.0 <= dVar51) {\n dVar39 = dVar34;\n }\n dVar39 = dVar39 * dVar39 * (dVar39 * -2.0 + 3.0) * dVar58 + 0.74;\n dVar51 = dVar46;\n if (dVar46 <= local_2e0) {\n dVar51 = local_2e0;\n }\n lVar27 = lVar27 + 1;\n dVar33 = 1.0;\n if (dVar39 <= 1.0) {\n dVar33 = dVar39;\n }\n dVar34 = 0.68;\n if (0.68 <= dVar39) {\n dVar34 = dVar33;\n }\n dVar39 = 0.052;\n local_2e0 = dVar51;\n goto LAB_100041c88;\n }\n }\n objc_stub::X(IVar16);\n objc_stub::Y(IVar16);\n dVar46 = extraout_d0_05 + dVar34 * dVar28;\n dVar34 = extraout_d0_06 + dVar34 * dVar59;\n if ((bool)(bVar12 & uVar26 < 0x11)) {\n pdVar21 = &local_308;\n if (0x41 < uVar17) {\n pdVar21 = &local_300;\n }\n pdVar4 = &local_2b0;\n if (0x41 < uVar17) {\n pdVar4 = (double *)&local_2a0;\n }\n dVar39 = local_2d0;\n dVar51 = local_2e8;\n if (uVar17 < 0x45) {\n dVar39 = *pdVar4;\n dVar51 = *pdVar21;\n }\n dVar35 = ABS((double)uVar17 + -67.0) * 0.125;\n dVar33 = 1.0;\n if (dVar35 <= 1.0) {\n dVar33 = dVar35;\n }\n dVar33 = *(double *)(&UNK_100086010 + (ulong)(uVar17 - 0x45 < 0xfffffffffffffffd) * 8) *\n (local_2f8 + dVar33 * dVar33 * (dVar33 * -2.0 + 3.0) * 0.28);\n dVar28 = (double)_hypot(dVar28,dVar59);\n dVar59 = dVar28 * 0.3 + 0.018;\n dVar28 = (double)_hypot(dVar39,dVar51);\n bVar10 = false;\n bVar8 = true;\n bVar9 = false;\n if (dVar59 < dVar28) {\n bVar10 = false;\n bVar8 = false;\n bVar9 = true;\n if (!NAN(dVar28)) {\n bVar10 = dVar28 < 2.220446049250313e-16;\n bVar8 = dVar28 == 2.220446049250313e-16;\n bVar9 = false;\n }\n }\n dVar59 = dVar59 / dVar28;\n if (!bVar8 && bVar10 == bVar9) {\n dVar39 = dVar39 * dVar59;\n dVar51 = dVar51 * dVar59;\n }\n dVar46 = dVar46 + dVar33 * dVar39;\n dVar34 = dVar34 + dVar33 * dVar51;\n }\n auVar49._8_8_ = 0;\n auVar49._0_8_ = dVar46;\n IVar16 = CIVector::vectorWithX_Y_((ID)&_OBJC_CLASS___CIVector,auVar49,dVar34);\n objc_stub::addObject_((ID)dVar45,IVar16);\n IVar16 = objc_stub::count((ID)local_1f8);\n uVar17 = uVar17 + 1;\n } while (uVar17 < IVar16);\n if (((lVar27 != 0) && (0.012 < local_2e0)) && (local_228 == 1)) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n }\n if (bVar12) {\n auVar5._8_8_ = dStack_398;\n auVar5._0_8_ = dVar31;\n NEON_ext(auVar5,auVar5,8,1);\n FUN_1000329ac(&cf_faceThinRegionTemporalblend___3fleftJump___4frightJump___4fchinJump___4f);\n }\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n dVar46 = local_250;\n dVar28 = local_258;\n dVar31 = dStack_260;\n local_310 = local_268;\n if (((((0x4c < uVar17) &&\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, (uVar17 & 1) == 0)) &&\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, (uVar17 & 1) == 0)) &&\n ((dVar32 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar46 = local_250, dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268,\n 2.220446049250313e-16 < dVar32 &&\n (dVar32 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n dVar46 = local_250, dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268,\n 2.220446049250313e-16 < dVar32)))) &&\n (dVar32 = dVar45, FUN_1000436e4(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, ((ulong)dVar32 & 1) == 0)) {\n IVar16 = objc_stub::count((ID)local_1f8);\n if (IVar16 < 0x4d) {\n dVar32 = 0.0;\n }\n else {\n dVar32 = local_1f8;\n FUN_1000436e4(local_250,local_258,dStack_260,local_268);\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n dVar45 = local_1f8;\n dVar46 = local_250;\n dVar28 = local_258;\n dVar31 = dStack_260;\n local_310 = local_268;\n if (((ulong)dVar32 & 1) == 0) {\n local_280 = 0.0;\n dVar45 = 0.0;\n dVar46 = dStack_230;\n dVar28 = local_238;\n dVar31 = local_240;\n local_310 = local_248;\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32)))) {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar23 = (uint)local_278;\n if (dVar32 <= 2.220446049250313e-16) {\n uVar23 = 1;\n }\n if (((uVar23 | local_330) & 1) == 0) {\n if (((local_224 | local_354 ^ 0xffffffff) & 1) != 0) goto LAB_100041f94;\n }\n else if (2.220446049250313e-16 < dVar32) {\nLAB_100041f94:\n IVar16 = objc_stub::copy((ID)dVar45);\n *(ID *)(param_1 + 0x310) = IVar16;\n *(double *)(param_1 + 0x318) = dVar46;\n *(double *)(param_1 + 800) = dVar28;\n *(double *)(param_1 + 0x328) = dVar31;\n *(double *)(param_1 + 0x330) = local_310;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x348) = local_270[2];\n *(double *)(param_1 + 0x340) = dVar58;\n *(double *)(param_1 + 0x338) = dVar32;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x360) = local_270[2];\n *(double *)(param_1 + 0x358) = dVar58;\n *(double *)(param_1 + 0x350) = dVar32;\n *(undefined1 *)(param_1 + 0x368) = 1;\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if ((local_224 & (local_284 | (uint)local_278)) == 0) {\n if ((((uVar17 < 0x4d) || (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16)) {\n uVar23 = 0;\n }\n else {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar23 = (uint)(2.220446049250313e-16 < dVar32);\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n ((dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32 &&\n (dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310),\n ((uint)(2.220446049250313e-16 < dVar32) & uVar23 & (local_358 | local_2d4)) == 1)))))) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n CVar63.field0_0x0.field1_0x8 = dVar28;\n CVar63.field0_0x0.field0_0x0 = dVar46;\n CVar63.field1_0x10.field1_0x8 = local_310;\n CVar63.field1_0x10.field0_0x0 = dVar31;\n mss_storeRewindFaceReferencePoints_forBox_renderTime_\n (param_1,(ID)dVar45,CVar63,(AnonymousStructure0 *)local_170);\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds();\n }\n FUN_10001b584(dVar46,dVar28,dVar31,local_310);\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n _NSStringFromRect(dVar46,dVar28,dVar31,local_310);\n _NSStringFromRect(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n FUN_1000329ac(&cf_faceSelectskip_temporal_commitrewind___4fstoredRewind__dbbox___current___);\n }\n else if ((((uVar17 < 0x4d) || (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0))\n || (_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n ((dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16 ||\n (dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16)))) {\n _NSStringFromRect(dVar46,dVar28,dVar31,local_310);\n objc_stub::count((ID)dVar45);\n FUN_1000329ac(&cf_faceSelectskip_temporal_commitinvalidresultbbox___points__lu);\n }\n else {\n IVar16 = objc_stub::copy((ID)dVar45);\n *(ID *)(param_1 + 0x2b0) = IVar16;\n *(double *)(param_1 + 0x2b8) = dVar46;\n *(double *)(param_1 + 0x2c0) = dVar28;\n *(double *)(param_1 + 0x2c8) = dVar31;\n *(double *)(param_1 + 0x2d0) = local_310;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x2e8) = local_270[2];\n *(double *)(param_1 + 0x2e0) = dVar58;\n *(double *)(param_1 + 0x2d8) = dVar32;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x300) = local_270[2];\n *(double *)(param_1 + 0x2f8) = dVar58;\n *(double *)(param_1 + 0x2f0) = dVar32;\n *(undefined1 *)(param_1 + 0x308) = 1;\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n CVar62.field0_0x0.field1_0x8 = dVar28;\n CVar62.field0_0x0.field0_0x0 = dVar46;\n CVar62.field1_0x10.field1_0x8 = local_310;\n CVar62.field1_0x10.field0_0x0 = dVar31;\n mss_storeRewindFaceReferencePoints_forBox_renderTime_\n (param_1,(ID)dVar45,CVar62,(AnonymousStructure0 *)local_170);\n if (((local_284 | (uint)local_278 ^ 0xffffffff) & 1) == 0) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dVar46,dVar28,dVar31,local_310);\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n uVar54 = 0;\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32)))) {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar54 = 0x3ff0000000000000;\n if (dVar32 <= 2.220446049250313e-16) {\n uVar54 = 0;\n }\n }\nLAB_100042444:\n dStack_230 = dVar46;\n local_238 = dVar28;\n local_240 = dVar31;\n local_248 = local_310;\n if ((((local_224 & (local_284 | (uint)local_278)) == 1) && (*(char *)(param_1 + 0x308) == '\\x01'))\n && (dVar45 != 0.0)) {\n dVar46 = *local_270;\n dVar28 = local_270[1];\n *(double *)(param_1 + 0x300) = local_270[2];\n *(double *)(param_1 + 0x2f8) = dVar28;\n *(double *)(param_1 + 0x2f0) = dVar46;\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dStack_230,local_238,local_240,local_248);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10002a7b8(dVar45,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002a7b8(local_1f8,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002a7b8(local_200,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002ab0c(dVar45);\n FUN_10002ab0c(local_1f8);\n FUN_10002ab0c(local_200);\n uVar17 = objc_stub::unlock(*(ID *)(param_1 + 0x28));\n if (param_5 != (const_AnonymousStructure7__)0x0) {\n param_5->field0_0x0 = uVar54;\n }\n if (local_2b8 != (double *)0x0) {\n _CGRectIsNull(dStack_230,local_238,local_240,local_248);\n if ((((uVar17 & 1) != 0) ||\n (_CGRectIsEmpty(dStack_230,local_238,local_240,local_248), (uVar17 & 1) != 0)) ||\n ((dVar46 = (double)_CGRectGetWidth(dStack_230,local_238,local_240,local_248),\n dVar46 <= 2.220446049250313e-16 ||\n (dVar46 = (double)_CGRectGetHeight(dStack_230,local_238,local_240,local_248),\n dVar46 <= 2.220446049250313e-16)))) {\n local_2b8[1] = dVar30;\n *local_2b8 = dVar29;\n local_2b8[3] = dVar52;\n local_2b8[2] = dVar50;\n }\n else {\n *local_2b8 = dStack_230;\n local_2b8[1] = local_238;\n local_2b8[2] = local_240;\n local_2b8[3] = local_248;\n }\n }\n if ((double *)param_4.field3_0x10 != (double *)0x0) {\n *(double *)param_4.field3_0x10 = local_280;\n }\n objc_stub::length(0x1000ad660);\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return (ID)dVar45;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10003f88c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x1000428d8 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_release replaced with injection: _objc_release_fixup */\n/* WARNING: Function: _objc_retain replaced with injection: _objc_retain_fixup */\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* Function Stack Size: 0x50 bytes */\n\nID MSSuperSkinSmoothingPlugIn::\n temporalFacePointsForObservations_renderTime_params_selectedObservationOut_strengthMultiplierOut_pointsBoxOut_\n (ID param_1,SEL param_2,ID param_3,AnonymousStructure0 param_4,\n const_AnonymousStructure7__ param_5,ID *param_6,double *param_7,CGRect *param_8)\n\n{\n uint uVar1;\n undefined1 auVar2 [16];\n undefined1 auVar3 [16];\n double *pdVar4;\n undefined1 auVar5 [16];\n undefined *puVar6;\n undefined *puVar7;\n bool bVar8;\n bool bVar9;\n bool bVar10;\n bool bVar11;\n bool bVar12;\n int iVar13;\n bool bVar14;\n undefined4 uVar15;\n ulong uVar17;\n CGRect *pCVar18;\n undefined1 *puVar19;\n ID IVar20;\n double *pdVar21;\n byte bVar22;\n uint uVar23;\n long lVar24;\n uint uVar25;\n ulong uVar26;\n long lVar27;\n double dVar28;\n double dVar29;\n double dVar30;\n double dVar31;\n double dVar32;\n double dVar33;\n double dVar34;\n double dVar35;\n double dVar36;\n double dVar37;\n double dVar38;\n double dVar39;\n double dVar40;\n double dVar41;\n double dVar42;\n double dVar43;\n double dVar44;\n double dVar45;\n double extraout_d0;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double dVar46;\n undefined1 auVar47 [16];\n undefined1 auVar48 [16];\n undefined1 auVar49 [16];\n double dVar50;\n double dVar51;\n double dVar52;\n undefined8 uVar53;\n unsigned_long_long uVar54;\n undefined8 uVar55;\n undefined8 uVar56;\n undefined8 uVar57;\n double dVar58;\n double dVar59;\n undefined1 auVar60 [16];\n undefined1 auVar61 [16];\n CGRect CVar62;\n CGRect CVar63;\n double dStack_398;\n uint local_358;\n uint local_354;\n uint local_330;\n uint local_318;\n double local_310;\n double local_308;\n double local_300;\n double local_2f8;\n double local_2f0;\n undefined8 local_2e8;\n double local_2e0;\n uint local_2d4;\n double local_2d0;\n double dStack_2c8;\n double *local_2b8;\n double local_2b0;\n double dStack_2a8;\n undefined8 local_2a0;\n double dStack_298;\n double local_290;\n uint local_284;\n double local_280;\n undefined8 local_278;\n double *local_270;\n double local_268;\n double dStack_260;\n double local_258;\n double local_250;\n double local_248;\n double local_240;\n double local_238;\n double dStack_230;\n uint local_228;\n uint local_224;\n double local_220;\n double local_218;\n double local_210;\n double local_208;\n double local_200;\n double local_1f8;\n double local_1f0;\n double dStack_1e8;\n double local_1e0;\n double dStack_1d8;\n double local_1d0;\n double local_1c8;\n double local_1c0;\n double dStack_1b8;\n double local_1b0;\n undefined8 local_1a8;\n double local_1a0;\n double local_190;\n undefined8 uStack_188;\n double local_180;\n undefined1 local_170 [16];\n double local_160;\n double local_158;\n byte local_141;\n undefined1 local_140 [12];\n uint uStack_134;\n double local_130;\n CGRect local_120;\n double local_f8;\n undefined1 local_f0 [12];\n uint uStack_e4;\n double local_e0;\n double local_d0;\n int local_c8;\n double local_c0;\n int local_b8;\n long local_b0;\n ID IVar16;\n \n lVar27 = param_4._8_8_;\n pdVar21 = (double *)param_4.field0_0x0;\n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n local_2b8 = (double *)param_6;\n local_290 = (double)param_3;\n IVar16 = objc_stub::lock(*(ID *)(param_1 + 0x28));\n iVar13 = (int)IVar16;\n if (lVar27 == 0) {\n local_330 = 0;\n local_224 = 0;\n uVar23 = *(uint *)((long)pdVar21 + 0xc);\n }\n else {\n local_330 = (uint)*(byte *)(lVar27 + 0xf8);\n uVar23 = *(uint *)((long)pdVar21 + 0xc);\n if ((*(char *)(lVar27 + 0x172) == '\\x01') && (FUN_1000500b0(), iVar13 != 0)) {\n if ((((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x68))) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x70)))) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x78)))) ||\n (((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x80)) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x88)))) ||\n ((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x90)) ||\n ((2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0x98)) ||\n (2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0xa0)))))))))) {\n local_224 = 1;\n }\n else {\n local_224 = (uint)(2.220446049250313e-16 < ABS(*(double *)(lVar27 + 0xa8)));\n }\n }\n else {\n local_224 = 0;\n }\n }\n if ((*(char *)(param_1 + 0x368) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x310)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x318);\n uVar55 = *(undefined8 *)(param_1 + 800);\n uVar56 = *(undefined8 *)(param_1 + 0x328);\n uVar57 = *(undefined8 *)(param_1 + 0x330);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) != 0) ||\n ((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) != 0 ||\n (dVar29 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n dVar29 <= 2.220446049250313e-16)))) goto LAB_10003fa84;\n dVar29 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57);\n local_354 = (uint)(2.220446049250313e-16 < dVar29);\n }\n else {\nLAB_10003fa84:\n local_354 = 0;\n }\n puVar7 = PTR__kCMTimeInvalid_1000a8208;\n puVar6 = PTR__CGRectNull_1000a8148;\n local_228 = uVar23 & 0x1d;\n local_270 = pdVar21;\n if ((local_224 & 1) == 0) {\n if ((((*(byte *)(param_1 + 0x308) & 1) != 0) || ((*(byte *)(param_1 + 0x410) & 1) != 0)) ||\n (IVar16 = objc_stub::count(*(ID *)(param_1 + 0x418)), IVar16 != 0)) {\n if (local_228 == 1) {\n local_120.field0_0x0.field0_0x0 = *local_270;\n local_120.field0_0x0.field1_0x8 = local_270[1];\n local_120.field1_0x10.field0_0x0 = local_270[2];\n _CMTimeGetSeconds(&local_120);\n }\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n FUN_10001b584(*(undefined8 *)(param_1 + 0x318),*(undefined8 *)(param_1 + 800),\n *(undefined8 *)(param_1 + 0x328),*(undefined8 *)(param_1 + 0x330));\n objc_stub::count(*(ID *)(param_1 + 0x418));\n }\n *(undefined8 *)(param_1 + 0x2b0) = 0;\n uVar53 = *(undefined8 *)puVar6;\n uVar56 = *(undefined8 *)(puVar6 + 0x18);\n uVar55 = *(undefined8 *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x2c0) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x2b8) = uVar53;\n *(undefined8 *)(param_1 + 0x2d0) = uVar56;\n *(undefined8 *)(param_1 + 0x2c8) = uVar55;\n uVar53 = *(undefined8 *)puVar7;\n uVar55 = *(undefined8 *)(puVar7 + 8);\n *(undefined8 *)(param_1 + 0x2e0) = uVar55;\n *(undefined8 *)(param_1 + 0x2d8) = uVar53;\n uVar56 = *(undefined8 *)(puVar7 + 0x10);\n *(undefined8 *)(param_1 + 0x2e8) = uVar56;\n *(undefined8 *)(param_1 + 0x2f8) = uVar55;\n *(undefined8 *)(param_1 + 0x2f0) = uVar53;\n *(undefined8 *)(param_1 + 0x300) = uVar56;\n *(undefined1 *)(param_1 + 0x308) = 0;\n mss_clearRewindFaceReferences(param_1);\n }\n dVar29 = 0.0;\n if (((*(char *)(param_1 + 0x308) == '\\x01') && (local_228 == 1)) &&\n ((*(uint *)(param_1 + 0x2fc) & 0x1d) == 1)) {\n local_120.field0_0x0.field0_0x0 = *local_270;\n local_120.field0_0x0.field1_0x8 = local_270[1];\n local_120.field1_0x10.field0_0x0 = local_270[2];\n local_170._0_8_ = *(long_long *)(param_1 + 0x2f0);\n local_170._8_8_ = *(undefined8 *)(param_1 + 0x2f8);\n local_160 = *(double *)(param_1 + 0x300);\n pCVar18 = &local_120;\n _CMTimeCompare(pCVar18,local_170);\n local_284 = local_224;\n dVar29 = 0.0;\n if ((int)pCVar18 < 0) {\n local_170._0_8_ = *(long_long *)(param_1 + 0x2f0);\n local_170._8_8_ = *(undefined8 *)(param_1 + 0x2f8);\n local_160 = *(double *)(param_1 + 0x300);\n local_f0._0_8_ = *local_270;\n unique0x10003b1c = local_270[1];\n local_e0 = local_270[2];\n _CMTimeSubtract(&local_120,local_170,local_f0);\n dVar30 = (double)_CMTimeGetSeconds(&local_120);\n local_284 = (uint)(dVar30 <= 0.05 || 0x7fefffffffffffff < (ulong)ABS(dVar30));\n dVar29 = 0.0;\n if (local_284 == 0) {\n dVar29 = dVar30;\n }\n local_284 = local_284 & local_224;\n }\n }\n else {\n local_284 = local_224;\n }\n local_f8 = 0.0;\n local_2d4 = (uint)(0.05 < dVar29 && (ulong)ABS(dVar29) < 0x7ff0000000000000);\n dVar29 = *(double *)puVar6;\n dVar30 = *(double *)(puVar6 + 8);\n dVar52 = *(double *)(puVar6 + 0x18);\n dVar50 = *(double *)(puVar6 + 0x10);\n dVar45 = *(double *)puVar7;\n dVar46 = *(double *)(puVar7 + 8);\n dVar28 = *(double *)(puVar7 + 0x10);\n local_141 = 0;\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_140._0_8_ = dVar45;\n unique0x1000573d = dVar46;\n local_130 = dVar28;\n local_120.field0_0x0.field0_0x0 = dVar29;\n local_120.field0_0x0.field1_0x8 = dVar30;\n local_120.field1_0x10.field0_0x0 = dVar50;\n local_120.field1_0x10.field1_0x8 = dVar52;\n local_f0._0_8_ = dVar45;\n unique0x10005775 = dVar46;\n local_e0 = dVar28;\n bVar14 = mss_timeLocalFaceReferenceForRenderTime_allowCurrentTime_pointsOut_boxOut_detectionTimeOut_outputTimeOut_usedHistoryOut_\n (param_1,(AnonymousStructure0 *)local_170,0,(ID *)&local_f8,&local_120,\n (AnonymousStructure0 *)local_f0,(AnonymousStructure0 *)local_140,\n (bool *)&local_141);\n dStack_230 = *(double *)puVar6;\n local_238 = *(double *)(puVar6 + 8);\n local_240 = *(double *)(puVar6 + 0x10);\n local_248 = *(double *)(puVar6 + 0x18);\n if (((bVar14 | local_2d4) & 1) != 0) goto LAB_10003fec0;\n if ((*(char *)(param_1 + 0x308) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x2b0)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x2b8);\n uVar55 = *(undefined8 *)(param_1 + 0x2c0);\n uVar56 = *(undefined8 *)(param_1 + 0x2c8);\n uVar57 = *(undefined8 *)(param_1 + 0x2d0);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) != 0) ||\n (((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) != 0 ||\n (dVar31 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n dVar31 <= 2.220446049250313e-16)) ||\n (dVar31 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57),\n dVar31 <= 2.220446049250313e-16)))) goto LAB_10003fddc;\n local_f8 = *(double *)(param_1 + 0x2b0);\n local_120.field0_0x0.field0_0x0 = *(double *)(param_1 + 0x2b8);\n local_120.field0_0x0.field1_0x8 = *(double *)(param_1 + 0x2c0);\n local_120.field1_0x10.field1_0x8 = *(double *)(param_1 + 0x2d0);\n local_120.field1_0x10.field0_0x0 = *(double *)(param_1 + 0x2c8);\n local_e0 = *(double *)(param_1 + 0x2e8);\n local_f0._0_8_ = *(double *)(param_1 + 0x2d8);\n unique0x10003b94 = *(double *)(param_1 + 0x2e0);\n pdVar21 = (double *)(param_1 + 0x2f0);\nLAB_10003fea8:\n local_358 = 0;\n local_140._0_8_ = *pdVar21;\n unique0x10003bdc = pdVar21[1];\n local_130 = pdVar21[2];\nLAB_10003fec8:\n local_218 = local_120.field1_0x10.field0_0x0;\n local_220 = local_120.field1_0x10.field1_0x8;\n bVar12 = true;\n local_210 = local_120.field0_0x0.field1_0x8;\n local_208 = local_120.field0_0x0.field0_0x0;\n dVar31 = local_f8;\n }\n else {\nLAB_10003fddc:\n if ((*(char *)(param_1 + 0x410) == '\\x01') &&\n (uVar17 = objc_stub::count(*(ID *)(param_1 + 0x3d0)), 0x4c < uVar17)) {\n uVar53 = *(undefined8 *)(param_1 + 0x3d8);\n uVar55 = *(undefined8 *)(param_1 + 0x3e0);\n uVar56 = *(undefined8 *)(param_1 + 1000);\n uVar57 = *(undefined8 *)(param_1 + 0x3f0);\n _CGRectIsNull(uVar53,uVar55,uVar56,uVar57);\n if (((uVar17 & 1) == 0) &&\n ((_CGRectIsEmpty(uVar53,uVar55,uVar56,uVar57), (uVar17 & 1) == 0 &&\n (dVar31 = (double)_CGRectGetWidth(uVar53,uVar55,uVar56,uVar57),\n 2.220446049250313e-16 < dVar31)))) {\n dVar31 = (double)_CGRectGetHeight(uVar53,uVar55,uVar56,uVar57);\n if (2.220446049250313e-16 < dVar31) {\n local_f8 = *(double *)(param_1 + 0x3d0);\n local_120.field0_0x0.field0_0x0 = *(double *)(param_1 + 0x3d8);\n local_120.field0_0x0.field1_0x8 = *(double *)(param_1 + 0x3e0);\n local_120.field1_0x10.field1_0x8 = *(double *)(param_1 + 0x3f0);\n local_120.field1_0x10.field0_0x0 = *(double *)(param_1 + 1000);\n pdVar21 = (double *)(param_1 + 0x3f8);\n local_e0 = *(double *)(param_1 + 0x408);\n local_f0._0_8_ = *pdVar21;\n unique0x10003bc4 = *(double *)(param_1 + 0x400);\n goto LAB_10003fea8;\n }\n goto LAB_10003fec0;\n }\n }\n else {\nLAB_10003fec0:\n local_358 = 1;\n if ((bVar14 & 1) != 0) goto LAB_10003fec8;\n }\n local_358 = 1;\n bVar12 = false;\n dVar31 = 0.0;\n local_208 = dStack_230;\n local_210 = local_238;\n local_218 = local_240;\n local_220 = local_248;\n }\n local_c0 = (double)local_f0._0_8_;\n uVar23 = uStack_e4;\n local_b8 = local_f0._8_4_;\n local_2d0 = local_e0;\n local_d0 = (double)local_140._0_8_;\n local_318 = uStack_134;\n local_c8 = local_140._8_4_;\n local_2e0 = local_130;\n if (bVar12) {\n uVar17 = objc_stub::count((ID)dVar31);\n if ((((uVar17 < 0x4d) ||\n (_CGRectIsNull(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar32 <= 2.220446049250313e-16)) {\n uVar25 = 0;\n }\n else {\n dVar32 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n uVar25 = (uint)(2.220446049250313e-16 < dVar32);\n }\n }\n else {\n uVar25 = 0;\n }\n local_358 = local_358 & local_141;\n local_2b0 = dVar31;\n if (local_358 == 0) {\n local_2b0 = 0.0;\n }\n local_300 = local_210;\n local_2f8 = local_208;\n local_310 = local_220;\n local_308 = local_218;\n local_2a0._0_4_ = uVar25;\n if (local_358 == 0) {\n local_2a0._0_4_ = 0;\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_310 = local_248;\n local_308 = local_240;\n }\n if ((local_224 & 1) == 0) {\n if (local_354 != 0) {\n local_2a0 = (double)((ulong)local_2a0._4_4_ << 0x20);\n local_2b0 = 0.0;\n local_358 = 0;\n dVar31 = *(double *)(param_1 + 0x310);\n local_208 = *(double *)(param_1 + 0x318);\n local_210 = *(double *)(param_1 + 800);\n local_218 = *(double *)(param_1 + 0x328);\n local_220 = *(double *)(param_1 + 0x330);\n local_c0 = *(double *)(param_1 + 0x338);\n local_b8 = *(int *)(param_1 + 0x340);\n uVar23 = *(uint *)(param_1 + 0x344);\n local_2d0 = *(double *)(param_1 + 0x348);\n local_d0 = *(double *)(param_1 + 0x350);\n local_c8 = *(int *)(param_1 + 0x358);\n uVar25 = 1;\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_318 = *(uint *)(param_1 + 0x35c);\n local_310 = local_248;\n local_308 = local_240;\n local_2e0 = *(double *)(param_1 + 0x360);\n goto LAB_1000400cc;\n }\n bVar12 = false;\n dVar31 = 0.0;\n local_2a0 = (double)((ulong)local_2a0._4_4_ << 0x20);\n local_358 = 0;\n uVar25 = 0;\n local_2b0 = 0.0;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n local_d0 = *(double *)puVar7;\n local_c8 = *(int *)(puVar7 + 8);\n uVar23 = *(uint *)(puVar7 + 0xc);\n local_300 = local_238;\n local_2f8 = dStack_230;\n local_310 = local_248;\n local_308 = local_240;\n local_208 = dStack_230;\n local_210 = local_238;\n local_218 = local_240;\n local_220 = local_248;\n local_2e0 = dVar28;\n local_2d0 = dVar28;\n local_c0 = local_d0;\n local_b8 = local_c8;\n local_318 = uVar23;\n }\n else {\nLAB_1000400cc:\n if ((((uint)local_2a0 == 0) || (local_2b0 == 0.0)) || (local_2b0 == dVar31)) {\n if (uVar25 != 0) goto LAB_100040128;\n bVar12 = false;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n uVar25 = 0;\n }\n else if (uVar25 == 0) {\n bVar12 = false;\n uVar25 = 0;\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n }\n else {\nLAB_100040128:\n IVar16 = objc_stub::count((ID)dVar31);\n if (IVar16 < 0x4d) {\n local_2e8 = (double)((ulong)local_2e8._4_4_ << 0x20);\n }\n else {\n local_2e8 = (double)CONCAT44(local_2e8._4_4_,local_2d4 ^ 1 | (uint)local_141);\n }\n bVar12 = IVar16 >= 0x4d;\n uVar25 = 1;\n }\n }\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,uVar23);\n local_200 = dVar31;\n if ((local_284 & 1) == 0) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n }\n uVar17 = objc_stub::count((ID)local_290);\n puVar6 = PTR__CGRectZero_1000a8150;\n local_250 = *(double *)PTR__CGRectZero_1000a8150;\n local_258 = *(double *)(PTR__CGRectZero_1000a8150 + 8);\n dStack_260 = *(double *)(PTR__CGRectZero_1000a8150 + 0x10);\n local_268 = *(double *)(PTR__CGRectZero_1000a8150 + 0x18);\n if (uVar17 == 0) {\n bVar22 = 0;\n local_280 = 0.0;\n local_1f8 = 0.0;\nLAB_100041320:\n local_278 = 0;\n bVar11 = false;\n }\n else {\n if ((uVar25 & (uint)local_2e8) == 1) {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n uVar15 = (undefined4)uVar17;\n if ((uVar17 & 1) != 0) goto LAB_10004029c;\n _CGRectIsEmpty(local_208,local_210,local_218,local_220);\n local_278 = CONCAT44(local_278._4_4_,uVar15) ^ 1;\n }\n else {\nLAB_10004029c:\n local_278 = (ulong)local_278._4_4_ << 0x20;\n }\n if (local_330 == 0) {\n if ((uVar25 & (uint)local_278) != 1) {\n dVar59 = local_290;\n dVar58 = local_210;\n dVar32 = local_218;\n dVar31 = local_220;\n FUN_10003f020(local_208);\n local_280 = dVar59;\nLAB_1000406b4:\n bVar10 = false;\n goto LAB_1000406bc;\n }\n if (lVar27 == 0) {\n uVar53 = 0x3ff8000000000000;\n }\n else {\n uVar53 = *(undefined8 *)(lVar27 + 0xf0);\n }\n dVar31 = local_290;\n local_170._0_8_ = dVar29;\n local_170._8_8_ = dVar30;\n local_160 = dVar50;\n local_158 = dVar52;\n FUN_1000428e0(local_208,local_210,local_218,local_220,uVar53,local_290,local_170);\n IVar16 = objc_stub::count((ID)dVar31);\n if (IVar16 == 0) {\n if (local_228 == 1) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&cf_faceSelectauto_guard_holdfaces__lurange___2fprevious___search___);\n }\n else {\n bVar11 = local_228 == 1;\n dVar32 = dVar31;\n dVar58 = local_210;\n dVar59 = local_218;\n dVar34 = local_220;\n FUN_100042c58(local_208,local_210,local_218,local_220);\n local_280 = dVar32;\n uVar53 = FUN_10003d49c(dVar32);\n if (bVar11) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar31);\n FUN_10001b584(uVar53,dVar58,dVar59,dVar34);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar31);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&\n cf_faceSelectauto_guard_searchfaces__lucandidates__lurange___2fprevious___search___\n );\n if (local_280 != 0.0) {\n bVar22 = 0;\n *(undefined1 *)(param_1 + 0x4a9) = 0;\n uVar53 = *(undefined8 *)puVar6;\n uVar55 = *(undefined8 *)(puVar6 + 0x18);\n dVar58 = *(double *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x4b8) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x4b0) = uVar53;\n *(undefined8 *)(param_1 + 0x4c8) = uVar55;\n *(double *)(param_1 + 0x4c0) = dVar58;\n *(double *)(param_1 + 0x4d8) = dVar46;\n *(double *)(param_1 + 0x4d0) = dVar45;\n *(double *)(param_1 + 0x4e0) = dVar28;\n bVar11 = true;\n goto LAB_100040a18;\n }\n }\n local_280 = 0.0;\n bVar11 = false;\n bVar22 = 1;\nLAB_100040a18:\n bVar10 = false;\n }\n else {\n dVar59 = *(double *)(lVar27 + 0x100);\n dVar58 = *(double *)(lVar27 + 0x108);\n if (*(char *)(param_1 + 0x420) == '\\x01') {\n lVar24 = *(long *)(lVar27 + 0x168);\n if (lVar24 < 1) {\n bVar11 = false;\n }\n else {\n bVar11 = *(long *)(param_1 + 0x438) < lVar24;\n if (lVar24 <= *(long *)(param_1 + 0x438)) {\n bVar11 = false;\n dVar31 = dVar59 - *(double *)(param_1 + 0x428);\n dVar32 = dVar58 - *(double *)(param_1 + 0x430);\n dVar31 = SQRT(dVar32 * dVar32 + dVar31 * dVar31);\n if (((ulong)ABS(dVar31) < 0x7ff0000000000000) && (0.01 < dVar31)) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n bVar11 = false;\n }\n }\n }\n }\n else {\n bVar11 = true;\n }\n if (((uint)local_278 == 0) || (uVar17 = objc_stub::count((ID)local_200), uVar17 < 0x4d)) {\n bVar10 = false;\n dVar34 = local_290;\n dVar31 = local_210;\n dVar32 = local_208;\n }\n else {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n if ((((uVar17 & 1) != 0) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar31 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar31 <= 2.220446049250313e-16)) {\n bVar10 = false;\n }\n else {\n dVar31 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n bVar10 = 2.220446049250313e-16 < dVar31;\n }\n bVar10 = (bool)(bVar10 & (bVar11 ^ 1U));\n dVar34 = local_290;\n dVar31 = local_210;\n dVar32 = local_208;\n }\n local_290 = dVar34;\n local_210 = dVar31;\n local_208 = dVar32;\n if (!bVar11) {\n if (!bVar10) {\n FUN_10003f44c(dVar59,dVar34,local_278 & 0xffffffff);\n local_280 = dVar34;\n goto LAB_1000406b4;\n }\n local_170._0_8_ = dVar29;\n local_170._8_8_ = dVar30;\n local_160 = dVar50;\n local_158 = dVar52;\n FUN_1000428e0(dVar32,dVar31,local_218,local_220,*(undefined8 *)(lVar27 + 0xf0),dVar34,\n local_170);\n IVar16 = objc_stub::count((ID)dVar34);\n if (IVar16 == 0) {\n if (local_228 == 1) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&cf_faceSelectmanual_guard_holdfaces__lurange___2fprevious___search___);\n local_280 = 0.0;\n bVar11 = false;\n }\n else {\n bVar10 = local_228 == 1;\n dVar31 = dVar34;\n dVar32 = local_210;\n dVar58 = local_218;\n dVar59 = local_220;\n FUN_100042c58(local_208,local_210,local_218,local_220);\n bVar11 = dVar31 != 0.0;\n local_280 = dVar31;\n uVar53 = FUN_10003d49c();\n if (bVar10) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n _CMTimeGetSeconds(&local_190);\n }\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar34);\n FUN_10001b584(uVar53,dVar32,dVar58,dVar59);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_170._0_8_,local_170._8_8_,local_160,local_158);\n objc_stub::count((ID)local_290);\n objc_stub::count((ID)dVar34);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n dVar58 = *(double *)((ulong)local_170 | 8);\n dVar32 = local_160;\n dVar31 = local_158;\n _NSStringFromRect(local_170._0_8_);\n FUN_1000329ac(&\n cf_faceSelectmanual_guard_searchfaces__lucandidates__lurange___2fprevious___search___\n );\n }\n bVar22 = 0;\n goto LAB_100040a18;\n }\n bVar11 = local_228 == 1;\n FUN_10003f44c(dVar59,dVar58,local_250,local_258,dStack_260,local_268,dVar34,0);\n local_280 = dVar34;\n if (bVar11) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n objc_stub::count((ID)local_290);\n FUN_10003d49c(local_280);\n FUN_10001b584();\n dVar58 = local_210;\n dVar32 = local_218;\n dVar31 = local_220;\n FUN_10001b584(local_208);\n bVar10 = true;\nLAB_1000406bc:\n bVar22 = 0;\n bVar11 = true;\n }\n if (local_280 == 0.0) {\n local_1f8 = 0.0;\n if (!bVar11) {\n local_280 = 0.0;\n goto LAB_100041320;\n }\nLAB_100041068:\n objc_stub::count((ID)local_290);\n local_278 = 0;\n dVar28 = local_2e0;\n }\n else {\n objc_stub::boundingBox((ID)local_280);\n _CGRectStandardize();\n dVar33 = (double)_CGRectIntersection();\n dVar59 = local_280;\n FUN_100029d4c();\n dVar34 = dVar58;\n dVar51 = dVar32;\n dVar39 = dVar31;\n local_1f8 = dVar59;\n local_250 = (double)FUN_100042f9c(dVar33);\n local_268 = dVar39;\n dStack_260 = dVar51;\n local_258 = dVar34;\n _CGRectIsNull(local_250,dVar34,dVar51,dVar39);\n if (((((ulong)dVar59 & 1) != 0) ||\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) != 0)) ||\n ((dVar34 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar34 <= 2.220446049250313e-16 ||\n (dVar34 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n dVar34 <= 2.220446049250313e-16)))) {\n local_268 = dVar31;\n dStack_260 = dVar32;\n local_258 = dVar58;\n local_250 = dVar33;\n }\n _CGRectIsNull(dVar33,dVar58,dVar32,dVar31);\n if (((((ulong)dVar59 & 1) == 0) &&\n (_CGRectIsEmpty(dVar33,dVar58,dVar32,dVar31), ((ulong)dVar59 & 1) == 0)) &&\n (((dVar34 = (double)_CGRectGetWidth(dVar33,dVar58,dVar32,dVar31),\n 2.220446049250313e-16 < dVar34 &&\n (((dVar34 = (double)_CGRectGetHeight(dVar33,dVar58,dVar32,dVar31),\n 2.220446049250313e-16 < dVar34 &&\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) == 0)) &&\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), ((ulong)dVar59 & 1) == 0))))\n && (((dVar34 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n 2.220446049250313e-16 < dVar34 &&\n (dVar34 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n 2.220446049250313e-16 < dVar34)) &&\n (FUN_10002a568(local_250,local_258,dStack_260,local_268,dVar33,dVar58,dVar32,dVar31),\n ((ulong)dVar59 & 1) == 0)))))) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dVar33,dVar58,dVar32,dVar31);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_1f8);\n }\n uVar17 = objc_stub::count((ID)local_1f8);\n if (((uVar17 < 0x4d) ||\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), (uVar17 & 1) != 0)) ||\n ((_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), (uVar17 & 1) != 0 ||\n (dVar31 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar31 <= 2.220446049250313e-16)))) goto LAB_100041320;\n dVar31 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268);\n uVar23 = (uint)local_2e8 ^ 1;\n uVar1 = (uint)(dVar31 <= 2.220446049250313e-16) | local_224 ^ 1;\n if (((uVar1 | uVar23) & 1) == 0) {\n IVar16 = objc_stub::count((ID)local_200);\n uVar17 = objc_stub::count((ID)local_1f8);\n if ((((IVar16 != uVar17) ||\n (_CGRectIsNull(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n dVar32 <= 2.220446049250313e-16)) goto LAB_100041140;\n dVar32 = local_218;\n dVar58 = local_220;\n dVar59 = (double)_CGRectGetHeight(local_208,local_210);\n uVar53 = 0x3cb0000000000000;\n if (dVar59 <= 2.220446049250313e-16) goto LAB_100041140;\n uVar56 = FUN_10002a7b8(local_1f8,0x3b,0x4b);\n dVar59 = local_200;\n uVar55 = uVar53;\n dVar34 = dVar32;\n dVar51 = dVar58;\n uVar57 = FUN_10002a7b8(local_200,0x3b,0x4b);\n dVar33 = (double)_CGRectGetMidX(local_250,local_258,dStack_260,local_268);\n dVar35 = (double)_CGRectGetMidY(local_250,local_258,dStack_260,local_268);\n dVar36 = (double)_CGRectGetMidX(local_208,local_210,local_218,local_220);\n dVar37 = (double)_CGRectGetMidY(local_208,local_210,local_218,local_220);\n dVar38 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268);\n dVar39 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268);\n if (dVar39 <= dVar38) {\n dVar39 = dVar38;\n }\n dVar40 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220);\n dVar38 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n if (dVar38 <= dVar40) {\n dVar38 = dVar40;\n }\n if (dVar38 <= dVar39) {\n dVar38 = dVar39;\n }\n dVar39 = dVar38 * 0.16;\n if (dVar38 * 0.16 <= 0.045) {\n dVar39 = 0.045;\n }\n dVar38 = 0.09;\n if (dVar39 <= 0.09) {\n dVar38 = dVar39;\n }\n dVar40 = 0.045;\n if (0.045 <= dVar39) {\n dVar40 = dVar38;\n }\n _CGRectIsNull(uVar56,uVar53,dVar32,dVar58);\n dVar38 = 0.0;\n dVar39 = 0.07;\n if ((((((ulong)dVar59 & 1) != 0) ||\n (_CGRectIsEmpty(uVar56,uVar53,dVar32,dVar58), ((ulong)dVar59 & 1) != 0)) ||\n (((dVar41 = (double)_CGRectGetWidth(uVar56,uVar53,dVar32,dVar58),\n dVar41 <= 2.220446049250313e-16 ||\n ((dVar41 = (double)_CGRectGetHeight(uVar56,uVar53,dVar32,dVar58),\n dVar41 <= 2.220446049250313e-16 ||\n (_CGRectIsNull(uVar57,uVar55,dVar34,dVar51), ((ulong)dVar59 & 1) != 0)))) ||\n (_CGRectIsEmpty(uVar57,uVar55,dVar34,dVar51), ((ulong)dVar59 & 1) != 0)))) ||\n ((dVar59 = (double)_CGRectGetWidth(uVar57,uVar55,dVar34,dVar51),\n dVar59 <= 2.220446049250313e-16 ||\n (dVar59 = (double)_CGRectGetHeight(uVar57,uVar55,dVar34,dVar51),\n dVar59 <= 2.220446049250313e-16)))) {\n bVar11 = false;\n }\n else {\n dVar39 = (double)_CGRectGetMidX(uVar56,uVar53,dVar32,dVar58);\n dVar38 = (double)_CGRectGetMidY(uVar56,uVar53,dVar32,dVar58);\n dVar41 = (double)_CGRectGetMidX(uVar57,uVar55,dVar34,dVar51);\n dVar42 = (double)_CGRectGetMidY(uVar57,uVar55,dVar34,dVar51);\n dVar43 = (double)_CGRectGetWidth(uVar56,uVar53,dVar32,dVar58);\n dVar59 = (double)_CGRectGetHeight(uVar56,uVar53,dVar32,dVar58);\n if (dVar59 <= dVar43) {\n dVar59 = dVar43;\n }\n dVar44 = (double)_CGRectGetWidth(uVar57,uVar55,dVar34,dVar51);\n dVar43 = (double)_CGRectGetHeight(uVar57,uVar55,dVar34,dVar51);\n dVar38 = SQRT((dVar38 - dVar42) * (dVar38 - dVar42) +\n (dVar39 - dVar41) * (dVar39 - dVar41));\n if (dVar43 <= dVar44) {\n dVar43 = dVar44;\n }\n if (dVar43 <= dVar59) {\n dVar43 = dVar59;\n }\n dVar59 = dVar43 * 0.18;\n if (dVar43 * 0.18 <= 0.04) {\n dVar59 = 0.04;\n }\n dVar41 = 0.08;\n if (dVar59 <= 0.08) {\n dVar41 = dVar59;\n }\n dVar39 = 0.04;\n if (0.04 <= dVar59) {\n dVar39 = dVar41;\n }\n bVar11 = true;\n }\n bVar8 = false;\n if (dVar39 < dVar38) {\n bVar8 = bVar11;\n }\n if ((SQRT((dVar35 - dVar37) * (dVar35 - dVar37) + (dVar33 - dVar36) * (dVar33 - dVar36)) <=\n dVar40) && (!bVar8)) goto LAB_100041140;\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001c338(uVar57,uVar55,dVar34,dVar51);\n FUN_10001c338(uVar56,uVar53,dVar32,dVar58);\n local_2e8 = (double)((ulong)local_2e8 & 0xffffffff00000000);\n }\n else {\nLAB_100041140:\n if ((((uVar1 | (uint)local_278 ^ 0xffffffff | uVar23) & 1) == 0) &&\n (uVar17 = objc_stub::count((ID)local_200), 0x4c < uVar17)) {\n _CGRectIsNull(local_208,local_210,local_218,local_220);\n if ((((uVar17 & 1) == 0) &&\n (_CGRectIsEmpty(local_208,local_210,local_218,local_220), (uVar17 & 1) == 0)) &&\n (dVar32 = (double)_CGRectGetWidth(local_208,local_210,local_218,local_220),\n 2.220446049250313e-16 < dVar32)) {\n dVar32 = (double)_CGRectGetHeight(local_208,local_210,local_218,local_220);\n if (dVar32 <= 2.220446049250313e-16) goto LAB_10004130c;\n local_190 = NAN;\n bVar11 = local_228 == 1;\n local_1b0 = NAN;\n local_1c0 = NAN;\n dVar31 = local_1f8;\n FUN_100043338(local_250,local_258,dStack_260,local_268,local_208,local_210,local_218,\n local_220,local_1f8,local_200,&local_190,&local_1b0,&local_1c0);\n if (bVar11) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n if (SUB84(dVar31,0) != 0) {\n dVar31 = local_200;\n FUN_10001ab3c(local_208,local_210,local_218,local_220,local_250,local_258,dStack_260,\n local_268);\n IVar16 = objc_stub::count((ID)dVar31);\n if ((0x4c < IVar16) &&\n (dVar32 = dVar31, FUN_10001b070(local_250,local_258,dStack_260,local_268),\n SUB84(dVar32,0) != 0)) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n objc_stub::count((ID)dVar31);\n local_1f8 = dVar31;\n }\n }\n }\n }\n else {\nLAB_10004130c:\n if (dVar31 <= 2.220446049250313e-16) goto LAB_100041320;\n }\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_1f8);\n if ((local_330 == 0) || (!bVar10)) goto LAB_100041068;\n uVar53 = *(undefined8 *)puVar6;\n uVar56 = *(undefined8 *)(puVar6 + 0x18);\n uVar55 = *(undefined8 *)(puVar6 + 0x10);\n *(undefined8 *)(param_1 + 0x4b8) = *(undefined8 *)(puVar6 + 8);\n *(undefined8 *)(param_1 + 0x4b0) = uVar53;\n local_d0 = *(double *)puVar7;\n local_c8 = *(int *)(puVar7 + 8);\n *(undefined1 *)(param_1 + 0x4a9) = 0;\n *(undefined8 *)(param_1 + 0x4c8) = uVar56;\n *(undefined8 *)(param_1 + 0x4c0) = uVar55;\n *(double *)(param_1 + 0x4d8) = dVar46;\n *(double *)(param_1 + 0x4d0) = dVar45;\n *(double *)(param_1 + 0x4e0) = dVar28;\n local_c0 = local_d0;\n local_b8 = local_c8;\n mss_clearRewindFaceReferences(param_1);\n if (lVar27 != 0) {\n *(undefined1 *)(param_1 + 0x420) = 1;\n dVar46 = *(double *)(lVar27 + 0x100);\n dVar45 = 1.0;\n if (dVar46 <= 1.0) {\n dVar45 = dVar46;\n }\n dVar31 = 0.0;\n if (0.0 <= dVar46) {\n dVar31 = dVar45;\n }\n *(double *)(param_1 + 0x428) = dVar31;\n dVar46 = *(double *)(lVar27 + 0x108);\n dVar45 = 1.0;\n if (dVar46 <= 1.0) {\n dVar45 = dVar46;\n }\n dVar31 = 0.0;\n if (0.0 <= dVar46) {\n dVar31 = dVar45;\n }\n *(double *)(param_1 + 0x430) = dVar31;\n lVar24 = *(long *)(lVar27 + 0x168);\n if (*(long *)(lVar27 + 0x168) <= *(long *)(param_1 + 0x438)) {\n lVar24 = *(long *)(param_1 + 0x438);\n }\n *(long *)(param_1 + 0x438) = lVar24;\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n objc_stub::count((ID)local_290);\n local_200 = 0.0;\n uVar25 = 0;\n local_318 = *(uint *)(puVar7 + 0xc);\n local_278 = 1;\n local_2e8 = (double)((ulong)local_2e8 & 0xffffffff00000000);\n if (lVar27 == 0) {\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,local_318);\n local_210 = local_238;\n local_208 = dStack_230;\n local_220 = local_248;\n local_218 = local_240;\n local_2d0 = dVar28;\n }\n else {\n local_2f0 = (double)CONCAT44(local_2f0._4_4_,local_318);\n local_210 = local_238;\n local_208 = dStack_230;\n local_220 = local_248;\n local_218 = local_240;\n local_2d0 = dVar28;\n }\n }\n _NSStringFromRect(local_250,local_258,dStack_260,local_268);\n FUN_1000329ac(&cf_faceSelectmode___faces__luclick____4f___4f_switched__dbbox___);\n bVar11 = true;\n local_2e0 = dVar28;\n }\n dVar45 = local_200;\n if ((((uVar25 ^ 1) == 0) && (local_228 == 1)) && ((local_2f0._0_4_ & 0x1d) == 1)) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_190 = local_c0;\n uStack_188 = (double)CONCAT44(local_2f0._0_4_,local_b8);\n local_180 = local_2d0;\n puVar19 = local_170;\n _CMTimeCompare(puVar19,&local_190);\n dVar45 = local_200;\n if (-1 < (int)puVar19) {\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n local_1b0 = local_c0;\n local_1a8 = (double)CONCAT44(local_2f0._0_4_,local_b8);\n local_1a0 = local_2d0;\n _CMTimeSubtract(local_170,&local_190,&local_1b0);\n _CMTimeGetSeconds(local_170);\n dVar45 = local_200;\n }\n }\n local_200 = dVar45;\n if (!bVar11) {\n if ((bool)(bVar12 & bVar22)) {\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n _NSStringFromRect(*(undefined8 *)(param_1 + 0x4e8),*(undefined8 *)(param_1 + 0x4f0),\n *(undefined8 *)(param_1 + 0x4f8),*(undefined8 *)(param_1 + 0x500));\n FUN_1000329ac(&cf_faceSelecthold_unstable_targetautoHold__dautoMissing__dbbox___tracked___);\nLAB_1000416e8:\n local_238 = local_210;\n dStack_230 = local_208;\n local_240 = local_218;\n local_310 = local_220;\n }\n else {\n if (bVar12) {\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_208,local_210,local_218,local_220);\n FUN_1000329ac(&cf_faceSelecthold_missing_indefinitefaces__lumissing___3fbbox___manual__d);\n goto LAB_1000416e8;\n }\n if (((local_224 & (uint)local_2a0) != 1) ||\n (IVar16 = objc_stub::count((ID)local_2b0), dVar45 = local_2b0, IVar16 < 0x4d)) {\n dVar45 = 0.0;\n uVar54 = 0;\n local_310 = local_248;\n dVar31 = local_240;\n dVar28 = local_238;\n dVar46 = dStack_230;\n goto LAB_100042444;\n }\n objc_stub::count((ID)local_290);\n _NSStringFromRect(local_2f8,local_300,local_308,local_310);\n FUN_1000329ac(&cf_faceSelectrewind_fallback_holdfaces__lubbox___manual__d);\n local_238 = local_300;\n dStack_230 = local_2f8;\n local_240 = local_308;\n }\n local_280 = 0.0;\n uVar54 = 0x3ff0000000000000;\n dVar31 = local_240;\n dVar28 = local_238;\n dVar46 = dStack_230;\n goto LAB_100042444;\n }\n if (((uint)local_2e8 & uVar25) == 1) {\n IVar16 = objc_stub::count((ID)dVar45);\n IVar20 = objc_stub::count((ID)local_1f8);\n bVar12 = IVar16 == IVar20;\n }\n else {\n bVar12 = false;\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n uVar23 = local_224 ^ 1;\n if ((((uint)local_278 | uVar23 | uVar25 ^ 1) & 1) == 0 && IVar16 != 0) {\n IVar16 = objc_stub::count((ID)local_200);\n IVar20 = objc_stub::count((ID)local_1f8);\n if (IVar16 == IVar20 && !bVar12) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n }\n }\n bVar11 = local_228 != 1;\n IVar16 = objc_stub::count((ID)local_1f8);\n local_290 = 1.0;\n if (((((((uint)local_278 | uVar23) & 1) != 0 || (bool)(bVar12 ^ 1U)) || IVar16 == 0) || bVar11) ||\n ((local_318 & 0x1d) != 1)) {\nLAB_1000417a0:\n bVar11 = false;\n }\n else {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n local_190 = local_d0;\n uStack_188 = (double)CONCAT44(local_318,local_c8);\n local_180 = local_2e0;\n puVar19 = local_170;\n _CMTimeCompare(puVar19,&local_190);\n if ((int)puVar19 < 0) goto LAB_1000417a0;\n local_190 = *local_270;\n uStack_188 = local_270[1];\n local_180 = local_270[2];\n local_1b0 = local_d0;\n local_1a8 = (double)CONCAT44(local_318,local_c8);\n local_1a0 = local_2e0;\n _CMTimeSubtract(local_170,&local_190,&local_1b0);\n dVar45 = (double)_CMTimeGetSeconds(local_170);\n bVar11 = false;\n if (((0x7fffffffffffffff < (ulong)dVar45 ||\n 0x3fe < (long)ABS(dVar45) + 0xfff0000000000000U >> 0x35) &&\n 0xffffffffffffe < (long)dVar45 - 1U) && ABS(dVar45) != 0.0) goto LAB_1000417a0;\n if (dVar45 < 0.03) {\n dVar45 = dVar45 / 0.03;\n dVar46 = 1.0;\n if (dVar45 <= 1.0) {\n dVar46 = dVar45;\n }\n local_290 = 0.0;\n if (0.0 <= dVar45) {\n local_290 = dVar46;\n }\n bVar11 = true;\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar46 = 1.0;\n if (((((uint)local_278 | uVar23) & 1) == 0 && !(bool)(bVar12 ^ 1U)) && IVar16 != 0) {\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = 0.0;\n dVar46 = 0.0;\n if (0x4c < IVar16) {\n IVar16 = objc_stub::lastObject((ID)local_1f8);\n objc_stub::X(IVar16);\n dVar45 = (double)_CGRectGetMaxX(local_250,local_258,dStack_260,local_268);\n objc_stub::X(IVar16);\n dVar46 = ABS(extraout_d0 - local_250);\n dVar45 = ABS(dVar45 - extraout_d0_00);\n }\n dVar28 = 1.0;\n if (0.0001 < dVar45 + dVar46) {\n dVar28 = 1.0 - ABS(dVar46 - dVar45) / (dVar45 + dVar46);\n }\n dVar45 = 1.0;\n if (dVar28 <= 1.0) {\n dVar45 = dVar28;\n }\n dVar46 = 0.0;\n if (0.0 <= dVar28) {\n dVar46 = dVar45;\n }\n dVar28 = dVar46 * 0.12 + 0.84;\n dVar45 = 0.96;\n if (dVar28 <= 0.96) {\n dVar45 = dVar28;\n }\n dVar46 = 0.82;\n if (0.82 <= dVar28) {\n dVar46 = dVar45;\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = local_1f8;\n if ((((uint)local_278 | uVar23) & 1) == 0 && IVar16 != 0) {\n dVar28 = local_290;\n if (!bVar11) {\n dVar28 = dVar46;\n }\n if (bVar11 || bVar12) {\n if (bVar11) {\n bVar22 = 0;\n }\n else {\n bVar22 = DAT_1000be160;\n if (DAT_1000be168 != -1) {\n FUN_1000799f0();\n bVar22 = DAT_1000be160;\n }\n }\n local_2e8 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_2d0 = *(double *)PTR__CGPointZero_1000a8140;\n dStack_398 = 0.0;\n dVar31 = 0.0;\n dStack_2c8 = local_2e8;\n local_1f0 = local_2d0;\n dStack_1e8 = local_2e8;\n local_1e0 = local_2d0;\n dStack_1d8 = local_2e8;\n local_1d0 = local_2d0;\n local_1c8 = local_2e8;\n local_1c0 = local_2d0;\n dStack_1b8 = local_2e8;\n local_1b0 = local_2d0;\n local_1a8 = local_2e8;\n local_190 = local_2d0;\n uStack_188 = local_2e8;\n if ((bVar22 & 1) == 0) {\n bVar12 = false;\n local_2b0 = local_2d0;\n dStack_2a8 = local_2e8;\n local_2a0 = local_2d0;\n dStack_298 = local_2e8;\n }\n else {\n dVar45 = local_200;\n FUN_1000435c8(local_200,0x45,0x4b,&local_190);\n if (((((SUB84(dVar45,0) == 0) ||\n (dVar45 = local_200, FUN_1000435c8(local_200,0x3b,0x41,&local_1b0),\n SUB84(dVar45,0) == 0)) ||\n (dVar45 = local_200, FUN_1000435c8(local_200,0x42,0x44,&local_1c0),\n SUB84(dVar45,0) == 0)) ||\n ((dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x45,0x4b,&local_1d0),\n SUB84(dVar45,0) == 0 ||\n (dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x3b,0x41,&local_1e0),\n SUB84(dVar45,0) == 0)))) ||\n (dVar45 = local_1f8, FUN_1000435c8(local_1f8,0x42,0x44,&local_1f0), SUB84(dVar45,0) == 0)\n ) {\n bVar12 = false;\n dStack_2a8 = dStack_2c8;\n local_2b0 = local_2d0;\n dStack_298 = dStack_2c8;\n local_2a0 = local_2d0;\n dVar31 = 0.0;\n }\n else {\n auVar47._0_8_ = dVar28 * 0.58;\n auVar47._8_8_ = dVar28 * 0.72;\n auVar60._0_8_ = -(ulong)(auVar47._0_8_ < 0.34);\n auVar60._8_8_ = -(ulong)(auVar47._8_8_ < 0.42);\n auVar3._8_8_ = -(ulong)(0.7 < auVar47._8_8_);\n auVar3._0_8_ = -(ulong)(0.62 < auVar47._0_8_);\n auVar47 = auVar47 ^ (auVar47 ^ _DAT_100085ff0) & auVar3;\n auVar61[9] = 0x7a;\n auVar61._0_9_ = _DAT_100085fe0;\n auVar61[10] = 0x14;\n auVar61[0xb] = 0xae;\n auVar61[0xc] = 0x47;\n auVar61[0xd] = 0xe1;\n auVar61[0xe] = 0xda;\n auVar61[0xf] = 0x3f;\n auVar47 = auVar47 ^ (auVar47 ^ auVar61) & auVar60;\n lVar27 = -(ulong)(auVar47._0_8_ < 0.0);\n lVar24 = -(ulong)(auVar47._8_8_ < 0.0);\n auVar61 = NEON_fmov(0x3ff0000000000000,8);\n auVar2._8_8_ = -(ulong)(auVar61._8_8_ < auVar47._8_8_);\n auVar2._0_8_ = -(ulong)(auVar61._0_8_ < auVar47._0_8_);\n auVar47 = auVar47 ^ (auVar47 ^ auVar61) & auVar2;\n auVar48._0_8_ =\n (double)CONCAT17(auVar47[7] & ~(byte)((ulong)lVar27 >> 0x38),\n CONCAT16(auVar47[6] & ~(byte)((ulong)lVar27 >> 0x30),\n CONCAT15(auVar47[5] & ~(byte)((ulong)lVar27 >> 0x28),\n CONCAT14(auVar47[4] &\n ~(byte)((ulong)lVar27 >> 0x20),\n CONCAT13(auVar47[3] &\n ~(byte)((ulong)lVar27 >> 0x18),\n CONCAT12(auVar47[2] &\n ~(byte)((ulong)lVar27\n >> 0x10),\n CONCAT11(auVar47[1] &\n ~(byte)((ulong\n )lVar27 >> 8),auVar47[0] & ~(byte)lVar27)))))));\n auVar48[8] = auVar47[8] & ~(byte)lVar24;\n auVar48[9] = auVar47[9] & ~(byte)((ulong)lVar24 >> 8);\n auVar48[10] = auVar47[10] & ~(byte)((ulong)lVar24 >> 0x10);\n auVar48[0xb] = auVar47[0xb] & ~(byte)((ulong)lVar24 >> 0x18);\n auVar48[0xc] = auVar47[0xc] & ~(byte)((ulong)lVar24 >> 0x20);\n auVar48[0xd] = auVar47[0xd] & ~(byte)((ulong)lVar24 >> 0x28);\n auVar48[0xe] = auVar47[0xe] & ~(byte)((ulong)lVar24 >> 0x30);\n auVar48[0xf] = auVar47[0xf] & ~(byte)((ulong)lVar24 >> 0x38);\n dVar31 = auVar48._8_8_;\n dVar45 = local_1f0 - local_1c0;\n dVar28 = dStack_1e8 - dStack_1b8;\n dVar32 = local_1e0 - local_1b0;\n dVar58 = dStack_1d8 - local_1a8;\n local_2d0 = (local_190 + (local_1d0 - local_190) * dVar31) - local_1d0;\n dStack_2c8 = 0.0;\n local_2e8 = (uStack_188 + (local_1c8 - uStack_188) * dVar31) - local_1c8;\n local_2b0 = (local_1b0 + dVar32 * dVar31) - local_1e0;\n dStack_2a8 = (local_1a8 + dVar58 * dVar31) - dStack_1d8;\n local_2a0 = (local_1c0 + dVar45 * auVar48._0_8_) - local_1f0;\n dStack_298 = (dStack_1b8 + dVar28 * auVar48._0_8_) - dStack_1e8;\n dStack_398 = SQRT(dVar58 * dVar58 + dVar32 * dVar32);\n bVar12 = true;\n dVar31 = SQRT(dVar28 * dVar28 + dVar45 * dVar45);\n }\n }\n IVar16 = objc_stub::count((ID)local_1f8);\n dVar45 = (double)NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar16);\n IVar16 = objc_stub::count((ID)local_1f8);\n if (IVar16 != 0) {\n uVar17 = 0;\n lVar27 = 0;\n dVar28 = 1.0;\n if (dVar46 <= 1.0) {\n dVar28 = dVar46;\n }\n local_2f8 = 0.72;\n dVar32 = 0.72;\n if (0.72 <= dVar46) {\n dVar32 = dVar28;\n }\n dVar46 = dVar46 * 0.96;\n dVar28 = 0.96;\n if (dVar46 <= 0.96) {\n dVar28 = dVar46;\n }\n dVar58 = 0.07999999999999996;\n if (0.82 <= dVar46) {\n dVar58 = dVar28 + -0.74;\n }\n local_308 = dStack_2a8;\n local_300 = dStack_298;\n local_2f0 = 0.075;\n local_2e0 = 0.0;\n do {\n IVar16 = objc_stub::objectAtIndexedSubscript_((ID)local_200,uVar17);\n IVar20 = objc_stub::objectAtIndexedSubscript_((ID)local_1f8,uVar17);\n objc_stub::X(IVar20);\n objc_stub::X(IVar16);\n objc_stub::Y(IVar20);\n objc_stub::Y(IVar16);\n uVar26 = uVar17 - 0x3b;\n dVar28 = extraout_d0_01 - extraout_d0_02;\n dVar59 = extraout_d0_03 - extraout_d0_04;\n dVar46 = (double)_hypot(dVar28,dVar59);\n if (bVar11) {\n dVar34 = (double)(&DAT_100086000)[uVar26 < 0x11];\n if ((double)(&DAT_100086000)[uVar26 < 0x11] <= local_290) {\n dVar34 = local_290;\n }\n dVar39 = local_2f0;\n if (uVar26 < 0x11) {\nLAB_100041c88:\n bVar10 = false;\n bVar8 = true;\n bVar9 = false;\n if (2.220446049250313e-16 < dVar46) {\n bVar10 = false;\n bVar8 = false;\n bVar9 = true;\n if (!NAN(dVar46) && !NAN(dVar39)) {\n bVar10 = dVar46 < dVar39;\n bVar8 = dVar46 == dVar39;\n bVar9 = false;\n }\n }\n if (!bVar8 && bVar10 == bVar9) {\n dVar28 = dVar28 * (dVar39 / dVar46);\n dVar59 = dVar59 * (dVar39 / dVar46);\n }\n }\n }\n else {\n dVar34 = dVar32;\n if (uVar26 < 0x11) {\n dVar51 = (dVar46 + -0.01) / 0.03;\n dVar34 = 1.0;\n if (dVar51 <= 1.0) {\n dVar34 = dVar51;\n }\n dVar39 = 0.0;\n if (0.0 <= dVar51) {\n dVar39 = dVar34;\n }\n dVar39 = dVar39 * dVar39 * (dVar39 * -2.0 + 3.0) * dVar58 + 0.74;\n dVar51 = dVar46;\n if (dVar46 <= local_2e0) {\n dVar51 = local_2e0;\n }\n lVar27 = lVar27 + 1;\n dVar33 = 1.0;\n if (dVar39 <= 1.0) {\n dVar33 = dVar39;\n }\n dVar34 = 0.68;\n if (0.68 <= dVar39) {\n dVar34 = dVar33;\n }\n dVar39 = 0.052;\n local_2e0 = dVar51;\n goto LAB_100041c88;\n }\n }\n objc_stub::X(IVar16);\n objc_stub::Y(IVar16);\n dVar46 = extraout_d0_05 + dVar34 * dVar28;\n dVar34 = extraout_d0_06 + dVar34 * dVar59;\n if ((bool)(bVar12 & uVar26 < 0x11)) {\n pdVar21 = &local_308;\n if (0x41 < uVar17) {\n pdVar21 = &local_300;\n }\n pdVar4 = &local_2b0;\n if (0x41 < uVar17) {\n pdVar4 = (double *)&local_2a0;\n }\n dVar39 = local_2d0;\n dVar51 = local_2e8;\n if (uVar17 < 0x45) {\n dVar39 = *pdVar4;\n dVar51 = *pdVar21;\n }\n dVar35 = ABS((double)uVar17 + -67.0) * 0.125;\n dVar33 = 1.0;\n if (dVar35 <= 1.0) {\n dVar33 = dVar35;\n }\n dVar33 = *(double *)(&UNK_100086010 + (ulong)(uVar17 - 0x45 < 0xfffffffffffffffd) * 8) *\n (local_2f8 + dVar33 * dVar33 * (dVar33 * -2.0 + 3.0) * 0.28);\n dVar28 = (double)_hypot(dVar28,dVar59);\n dVar59 = dVar28 * 0.3 + 0.018;\n dVar28 = (double)_hypot(dVar39,dVar51);\n bVar10 = false;\n bVar8 = true;\n bVar9 = false;\n if (dVar59 < dVar28) {\n bVar10 = false;\n bVar8 = false;\n bVar9 = true;\n if (!NAN(dVar28)) {\n bVar10 = dVar28 < 2.220446049250313e-16;\n bVar8 = dVar28 == 2.220446049250313e-16;\n bVar9 = false;\n }\n }\n dVar59 = dVar59 / dVar28;\n if (!bVar8 && bVar10 == bVar9) {\n dVar39 = dVar39 * dVar59;\n dVar51 = dVar51 * dVar59;\n }\n dVar46 = dVar46 + dVar33 * dVar39;\n dVar34 = dVar34 + dVar33 * dVar51;\n }\n auVar49._8_8_ = 0;\n auVar49._0_8_ = dVar46;\n IVar16 = CIVector::vectorWithX_Y_((ID)&_OBJC_CLASS___CIVector,auVar49,dVar34);\n objc_stub::addObject_((ID)dVar45,IVar16);\n IVar16 = objc_stub::count((ID)local_1f8);\n uVar17 = uVar17 + 1;\n } while (uVar17 < IVar16);\n if (((lVar27 != 0) && (0.012 < local_2e0)) && (local_228 == 1)) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n }\n if (bVar12) {\n auVar5._8_8_ = dStack_398;\n auVar5._0_8_ = dVar31;\n NEON_ext(auVar5,auVar5,8,1);\n FUN_1000329ac(&cf_faceThinRegionTemporalblend___3fleftJump___4frightJump___4fchinJump___4f);\n }\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n dVar46 = local_250;\n dVar28 = local_258;\n dVar31 = dStack_260;\n local_310 = local_268;\n if (((((0x4c < uVar17) &&\n (_CGRectIsNull(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, (uVar17 & 1) == 0)) &&\n (_CGRectIsEmpty(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, (uVar17 & 1) == 0)) &&\n ((dVar32 = (double)_CGRectGetWidth(local_250,local_258,dStack_260,local_268),\n dVar46 = local_250, dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268,\n 2.220446049250313e-16 < dVar32 &&\n (dVar32 = (double)_CGRectGetHeight(local_250,local_258,dStack_260,local_268),\n dVar46 = local_250, dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268,\n 2.220446049250313e-16 < dVar32)))) &&\n (dVar32 = dVar45, FUN_1000436e4(local_250,local_258,dStack_260,local_268), dVar46 = local_250,\n dVar28 = local_258, dVar31 = dStack_260, local_310 = local_268, ((ulong)dVar32 & 1) == 0)) {\n IVar16 = objc_stub::count((ID)local_1f8);\n if (IVar16 < 0x4d) {\n dVar32 = 0.0;\n }\n else {\n dVar32 = local_1f8;\n FUN_1000436e4(local_250,local_258,dStack_260,local_268);\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n dVar45 = local_1f8;\n dVar46 = local_250;\n dVar28 = local_258;\n dVar31 = dStack_260;\n local_310 = local_268;\n if (((ulong)dVar32 & 1) == 0) {\n local_280 = 0.0;\n dVar45 = 0.0;\n dVar46 = dStack_230;\n dVar28 = local_238;\n dVar31 = local_240;\n local_310 = local_248;\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32)))) {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar23 = (uint)local_278;\n if (dVar32 <= 2.220446049250313e-16) {\n uVar23 = 1;\n }\n if (((uVar23 | local_330) & 1) == 0) {\n if (((local_224 | local_354 ^ 0xffffffff) & 1) != 0) goto LAB_100041f94;\n }\n else if (2.220446049250313e-16 < dVar32) {\nLAB_100041f94:\n IVar16 = objc_stub::copy((ID)dVar45);\n *(ID *)(param_1 + 0x310) = IVar16;\n *(double *)(param_1 + 0x318) = dVar46;\n *(double *)(param_1 + 800) = dVar28;\n *(double *)(param_1 + 0x328) = dVar31;\n *(double *)(param_1 + 0x330) = local_310;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x348) = local_270[2];\n *(double *)(param_1 + 0x340) = dVar58;\n *(double *)(param_1 + 0x338) = dVar32;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x360) = local_270[2];\n *(double *)(param_1 + 0x358) = dVar58;\n *(double *)(param_1 + 0x350) = dVar32;\n *(undefined1 *)(param_1 + 0x368) = 1;\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if ((local_224 & (local_284 | (uint)local_278)) == 0) {\n if ((((uVar17 < 0x4d) || (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n (_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16)) {\n uVar23 = 0;\n }\n else {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar23 = (uint)(2.220446049250313e-16 < dVar32);\n }\n uVar17 = objc_stub::count((ID)dVar45);\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n ((dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32 &&\n (dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310),\n ((uint)(2.220446049250313e-16 < dVar32) & uVar23 & (local_358 | local_2d4)) == 1)))))) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n CVar63.field0_0x0.field1_0x8 = dVar28;\n CVar63.field0_0x0.field0_0x0 = dVar46;\n CVar63.field1_0x10.field1_0x8 = local_310;\n CVar63.field1_0x10.field0_0x0 = dVar31;\n mss_storeRewindFaceReferencePoints_forBox_renderTime_\n (param_1,(ID)dVar45,CVar63,(AnonymousStructure0 *)local_170);\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds();\n }\n FUN_10001b584(dVar46,dVar28,dVar31,local_310);\n FUN_10001b584(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n _NSStringFromRect(dVar46,dVar28,dVar31,local_310);\n _NSStringFromRect(*(undefined8 *)(param_1 + 0x2b8),*(undefined8 *)(param_1 + 0x2c0),\n *(undefined8 *)(param_1 + 0x2c8),*(undefined8 *)(param_1 + 0x2d0));\n FUN_1000329ac(&cf_faceSelectskip_temporal_commitrewind___4fstoredRewind__dbbox___current___);\n }\n else if ((((uVar17 < 0x4d) || (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0))\n || (_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) != 0)) ||\n ((dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16 ||\n (dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310),\n dVar32 <= 2.220446049250313e-16)))) {\n _NSStringFromRect(dVar46,dVar28,dVar31,local_310);\n objc_stub::count((ID)dVar45);\n FUN_1000329ac(&cf_faceSelectskip_temporal_commitinvalidresultbbox___points__lu);\n }\n else {\n IVar16 = objc_stub::copy((ID)dVar45);\n *(ID *)(param_1 + 0x2b0) = IVar16;\n *(double *)(param_1 + 0x2b8) = dVar46;\n *(double *)(param_1 + 0x2c0) = dVar28;\n *(double *)(param_1 + 0x2c8) = dVar31;\n *(double *)(param_1 + 0x2d0) = local_310;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x2e8) = local_270[2];\n *(double *)(param_1 + 0x2e0) = dVar58;\n *(double *)(param_1 + 0x2d8) = dVar32;\n dVar32 = *local_270;\n dVar58 = local_270[1];\n *(double *)(param_1 + 0x300) = local_270[2];\n *(double *)(param_1 + 0x2f8) = dVar58;\n *(double *)(param_1 + 0x2f0) = dVar32;\n *(undefined1 *)(param_1 + 0x308) = 1;\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n CVar62.field0_0x0.field1_0x8 = dVar28;\n CVar62.field0_0x0.field0_0x0 = dVar46;\n CVar62.field1_0x10.field1_0x8 = local_310;\n CVar62.field1_0x10.field0_0x0 = dVar31;\n mss_storeRewindFaceReferencePoints_forBox_renderTime_\n (param_1,(ID)dVar45,CVar62,(AnonymousStructure0 *)local_170);\n if (((local_284 | (uint)local_278 ^ 0xffffffff) & 1) == 0) {\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dVar46,dVar28,dVar31,local_310);\n }\n }\n uVar17 = objc_stub::count((ID)dVar45);\n uVar54 = 0;\n if (((0x4c < uVar17) && (_CGRectIsNull(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0)) &&\n ((_CGRectIsEmpty(dVar46,dVar28,dVar31,local_310), (uVar17 & 1) == 0 &&\n (dVar32 = (double)_CGRectGetWidth(dVar46,dVar28,dVar31,local_310),\n 2.220446049250313e-16 < dVar32)))) {\n dVar32 = (double)_CGRectGetHeight(dVar46,dVar28,dVar31,local_310);\n uVar54 = 0x3ff0000000000000;\n if (dVar32 <= 2.220446049250313e-16) {\n uVar54 = 0;\n }\n }\nLAB_100042444:\n dStack_230 = dVar46;\n local_238 = dVar28;\n local_240 = dVar31;\n local_248 = local_310;\n if ((((local_224 & (local_284 | (uint)local_278)) == 1) && (*(char *)(param_1 + 0x308) == '\\x01'))\n && (dVar45 != 0.0)) {\n dVar46 = *local_270;\n dVar28 = local_270[1];\n *(double *)(param_1 + 0x300) = local_270[2];\n *(double *)(param_1 + 0x2f8) = dVar28;\n *(double *)(param_1 + 0x2f0) = dVar46;\n }\n if (local_228 == 1) {\n local_170._0_8_ = *local_270;\n local_170._8_8_ = local_270[1];\n local_160 = local_270[2];\n _CMTimeGetSeconds(local_170);\n }\n FUN_10001b584(dStack_230,local_238,local_240,local_248);\n FUN_10001b584(local_250,local_258,dStack_260,local_268);\n FUN_10001b584(local_208,local_210,local_218,local_220);\n FUN_10002a7b8(dVar45,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002a7b8(local_1f8,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002a7b8(local_200,0x3b,0x4b);\n FUN_10001c338();\n FUN_10002ab0c(dVar45);\n FUN_10002ab0c(local_1f8);\n FUN_10002ab0c(local_200);\n uVar17 = objc_stub::unlock(*(ID *)(param_1 + 0x28));\n if (param_5 != (const_AnonymousStructure7__)0x0) {\n param_5->field0_0x0 = uVar54;\n }\n if (local_2b8 != (double *)0x0) {\n _CGRectIsNull(dStack_230,local_238,local_240,local_248);\n if ((((uVar17 & 1) != 0) ||\n (_CGRectIsEmpty(dStack_230,local_238,local_240,local_248), (uVar17 & 1) != 0)) ||\n ((dVar46 = (double)_CGRectGetWidth(dStack_230,local_238,local_240,local_248),\n dVar46 <= 2.220446049250313e-16 ||\n (dVar46 = (double)_CGRectGetHeight(dStack_230,local_238,local_240,local_248),\n dVar46 <= 2.220446049250313e-16)))) {\n local_2b8[1] = dVar30;\n *local_2b8 = dVar29;\n local_2b8[3] = dVar52;\n local_2b8[2] = dVar50;\n }\n else {\n *local_2b8 = dStack_230;\n local_2b8[1] = local_238;\n local_2b8[2] = local_240;\n local_2b8[3] = local_248;\n }\n }\n if ((double *)param_4.field3_0x10 != (double *)0x0) {\n *(double *)param_4.field3_0x10 = local_280;\n }\n objc_stub::length(0x1000ad660);\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return (ID)dVar45;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_c527bbb1bb619caf73d4c98d29b462332091d9e1ee9b6541aca21b237512b44b", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x100050868: stp x20, x19, [sp, #-0x20]!\n0x10005086c: stp x29, x30, [sp, #0x10]\n0x100050870: add x29, sp, #0x10\n0x100050874: adrp x0, 0x100096000\n0x100050878: add x0, x0, #0x3fd\n0x10005087c: bl 0x10007ad60\n0x100050880: cbz x0, 0x1000508a4\n0x100050884: ldrb w8, [x0]\n0x100050888: cbz w8, 0x1000508a4\n0x10005088c: cmp w8, #0x30\n0x100050890: b.ne 0x1000508ac\n0x100050894: ldrb w8, [x0, #0x1]\n0x100050898: cmp w8, #0x0\n0x10005089c: cset w19, ne\n0x1000508a0: b 0x1000508b0\n0x1000508a4: mov w19, #0x0\n0x1000508a8: b 0x1000508b0\n0x1000508ac: mov w19, #0x1\n0x1000508b0: adrp x0, 0x1000ae000\n0x1000508b4: add x0, x0, #0xcc0\n0x1000508b8: bl 0x10004970c\n0x1000508bc: orr w8, w19, w0\n0x1000508c0: eor w8, w8, #0x1\n0x1000508c4: adrp x9, 0x1000bd000\n0x1000508c8: strb w8, [x9, #0x1f0]\n0x1000508cc: ldp x29, x30, [sp, #0x10]\n0x1000508d0: ldp x20, x19, [sp], #0x20\n0x1000508d4: ret", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x100050868" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "0x100050868: stp x20, x19, [sp, #-0x20]!\n0x10005086c: stp x29, x30, [sp, #0x10]\n0x100050870: add x29, sp, #0x10\n0x100050874: adrp x0, 0x100096000\n0x100050878: add x0, x0, #0x3fd\n0x10005087c: bl 0x10007ad60\n0x100050880: cbz x0, 0x1000508a4\n0x100050884: ldrb w8, [x0]\n0x100050888: cbz w8, 0x1000508a4\n0x10005088c: cmp w8, #0x30\n0x100050890: b.ne 0x1000508ac\n0x100050894: ldrb w8, [x0, #0x1]\n0x100050898: cmp w8, #0x0\n0x10005089c: cset w19, ne\n0x1000508a0: b 0x1000508b0\n0x1000508a4: mov w19, #0x0\n0x1000508a8: b 0x1000508b0\n0x1000508ac: mov w19, #0x1\n0x1000508b0: adrp x0, 0x1000ae000\n0x1000508b4: add x0, x0, #0xcc0\n0x1000508b8: bl 0x10004970c\n0x1000508bc: orr w8, w19, w0\n0x1000508c0: eor w8, w8, #0x1\n0x1000508c4: adrp x9, 0x1000bd000\n0x1000508c8: strb w8, [x9, #0x1f0]\n0x1000508cc: ldp x29, x30, [sp, #0x10]\n0x1000508d0: ldp x20, x19, [sp], #0x20\n0x1000508d4: ret" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_c68fb633462923be528c3c493d4886f5644afa7d646e2a2f866e7318c4566ae0", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "Ghidra Listing reports a terminal call at 0x100079cec to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x100079cdc: adrp x0, 0x1000bd000\n0x100079ce0: add x0, x0, #0xf48\n0x100079ce4: adrp x1, 0x1000a8000\n0x100079ce8: add x1, x1, #0xb38\n0x100079cec: b 0x10007ad0c", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x100079cdc" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100079cec to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "0x100079cdc: adrp x0, 0x1000bd000\n0x100079ce0: add x0, x0, #0xf48\n0x100079ce4: adrp x1, 0x1000a8000\n0x100079ce8: add x1, x1, #0xb38\n0x100079cec: b 0x10007ad0c" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_ca6c7497f85e54b30978c159ebc02c92ce76d06d6352582676785f15006f9390", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x100086358", + "bytes_hex": "295c8fc2f528ac3f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x100086358", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x100086358", + "bytes_hex": "295c8fc2f528ac3f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_cd0514686c2aaa1f26b9d67aef5c62f6540f36c926e416deb51cc8a74cf79f39", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10002a420 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_100029d4c(undefined8 param_1,double param_2,double param_3,double param_4,ID param_5)\n\n{\n ID IVar1;\n ID IVar2;\n ID IVar3;\n ID IVar4;\n ulong uVar5;\n double *pdVar6;\n ID IVar7;\n long lVar8;\n ID IVar9;\n long lVar10;\n double extraout_d0;\n double extraout_d0_00;\n double dVar11;\n double extraout_d0_01;\n double dVar12;\n double extraout_d0_02;\n double dVar13;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n ulong extraout_d0_03;\n ulong extraout_d0_04;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n undefined8 local_1d0;\n long lStack_1c8;\n long *local_1c0;\n undefined8 uStack_1b8;\n undefined8 local_1b0;\n undefined8 uStack_1a8;\n undefined8 uStack_1a0;\n undefined8 uStack_198;\n undefined1 auStack_188 [128];\n ID local_108;\n ulong local_100 [10];\n long local_b0;\n \n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar2 = 0;\n if (param_5 == 0) goto LAB_10002a3d8;\n IVar1 = objc_stub::landmarks(param_5);\n IVar2 = 0;\n if (IVar1 == 0) goto LAB_10002a3d8;\n IVar2 = objc_stub::landmarks(param_5);\n IVar1 = objc_stub::allPoints(IVar2);\n IVar2 = 0;\n if (IVar1 == 0) goto LAB_10002a3d8;\n IVar2 = objc_stub::landmarks(param_5);\n local_108 = objc_stub::allPoints(IVar2);\n IVar1 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_108,1);\n IVar2 = NSMutableArray::array((ID)&_OBJC_CLASS___NSMutableArray);\n objc_stub::boundingBox(param_5);\n uStack_1a8 = 0;\n local_1b0 = 0;\n uStack_198 = 0;\n uStack_1a0 = 0;\n lStack_1c8 = 0;\n local_1d0 = 0;\n uStack_1b8 = 0;\n local_1c0 = (long *)0x0;\n dVar18 = param_2;\n dVar20 = param_3;\n dVar22 = param_4;\n IVar3 = NSArray::countByEnumeratingWithState_objects_count_(IVar1,&local_1d0,auStack_188,0x10);\n if (IVar3 != 0) {\n lVar8 = *local_1c0;\n do {\n IVar9 = 0;\n do {\n if (*local_1c0 != lVar8) {\n _objc_enumerationMutation(IVar1);\n }\n IVar7 = *(ID *)(lStack_1c8 + IVar9 * 8);\n if (((IVar7 != 0) && (IVar4 = objc_stub::pointCount(IVar7), 0x4b < IVar4)) &&\n (IVar4 = objc_stub::normalizedPoints(IVar7), IVar4 != 0)) {\n IVar7 = objc_stub::normalizedPoints(IVar7);\n pdVar6 = (double *)(IVar7 + 8);\n lVar10 = 0x4c;\n do {\n dVar18 = param_2 + *pdVar6 * param_4;\n IVar7 = CIVector::vectorWithX_Y_\n ((ID)&_OBJC_CLASS___CIVector,extraout_d0 + pdVar6[-1] * param_3);\n NSMutableArray::addObject_(IVar2,IVar7);\n pdVar6 = pdVar6 + 2;\n lVar10 = lVar10 + -1;\n } while (lVar10 != 0);\n }\n IVar9 = IVar9 + 1;\n } while (IVar9 != IVar3);\n IVar3 = NSArray::countByEnumeratingWithState_objects_count_(IVar1,&local_1d0,auStack_188,0x10)\n ;\n } while (IVar3 != 0);\n }\n IVar1 = NSMutableArray::count(IVar2);\n dVar11 = extraout_d0_00;\n if (IVar1 == 0x4c) {\n dVar11 = extraout_d0;\n _CGRectGetMidX(extraout_d0,param_2,param_3,param_4);\n dVar18 = extraout_d0;\n dVar20 = param_3;\n dVar22 = param_4;\n _CGRectGetMidY(extraout_d0,param_2);\n IVar1 = CIVector::vectorWithX_Y_((ID)&_OBJC_CLASS___CIVector,dVar11);\n NSMutableArray::addObject_(IVar2,IVar1);\n dVar11 = extraout_d0_01;\n }\n FUN_10002a7b8(IVar2,0x3b,0x4b);\n dVar19 = dVar18;\n dVar21 = dVar20;\n dVar23 = dVar22;\n IVar1 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::faceContour(IVar1);\n IVar1 = 0;\n if (IVar3 != 0) {\n IVar1 = objc_stub::pointCount(IVar3);\n if (((IVar1 != 0) && (uVar5 = objc_stub::normalizedPoints(IVar3), uVar5 != 0)) &&\n ((dVar19 = param_2, dVar21 = param_3, dVar23 = param_4,\n _CGRectIsNull(extraout_d0,param_2,param_3,param_4), (uVar5 & 1) == 0 &&\n (dVar19 = param_2, dVar21 = param_3, dVar23 = param_4,\n _CGRectIsEmpty(extraout_d0,param_2,param_3,param_4), (uVar5 & 1) == 0)))) {\n dVar12 = extraout_d0;\n dVar21 = param_3;\n dVar23 = param_4;\n _CGRectGetWidth(extraout_d0,param_2,param_3,param_4);\n dVar19 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar12) {\n dVar12 = extraout_d0;\n dVar21 = param_3;\n dVar23 = param_4;\n _CGRectGetHeight(extraout_d0,param_2,param_3,param_4);\n dVar19 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar12) {\n IVar9 = objc_stub::pointCount(IVar3);\n IVar1 = IVar9;\n if (0x4b < IVar9) {\n IVar1 = 0x4c;\n }\n IVar7 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar1);\n IVar3 = objc_stub::normalizedPoints(IVar3);\n if (IVar9 != 0) {\n pdVar6 = (double *)(IVar3 + 8);\n do {\n dVar19 = param_2 + *pdVar6 * param_4;\n IVar3 = CIVector::vectorWithX_Y_\n ((ID)&_OBJC_CLASS___CIVector,extraout_d0 + pdVar6[-1] * param_3,\n dVar19);\n NSMutableArray::addObject_(IVar7,IVar3);\n pdVar6 = pdVar6 + 2;\n IVar1 = IVar1 - 1;\n } while (IVar1 != 0);\n }\n IVar3 = NSMutableArray::count(IVar7);\n IVar1 = 0;\n if (IVar3 != 0) {\n IVar1 = IVar7;\n }\n goto LAB_10002a06c;\n }\n }\n }\n IVar1 = 0;\n }\nLAB_10002a06c:\n IVar9 = NSMutableArray::count(IVar1);\n IVar3 = IVar1;\n dVar12 = extraout_d0_02;\n FUN_10002a7b8(IVar1,0,IVar9 - 1);\n dVar17 = dVar11;\n _CGRectGetMidX(dVar11,dVar18,dVar20,dVar22);\n dVar13 = dVar11;\n _CGRectGetMidY(dVar11,dVar18,dVar20,dVar22);\n dVar14 = dVar12;\n _CGRectGetMidX(dVar12,dVar19,dVar21,dVar23);\n dVar15 = dVar12;\n _CGRectGetMidY(dVar12,dVar19,dVar21,dVar23);\n _CGRectIsNull(dVar11,dVar18,dVar20,dVar22);\n if ((((IVar3 & 1) == 0) && (_CGRectIsEmpty(dVar11,dVar18,dVar20,dVar22), (IVar3 & 1) == 0)) &&\n (((dVar16 = dVar11, _CGRectGetWidth(dVar11,dVar18,dVar20,dVar22),\n 2.220446049250313e-16 < dVar16 &&\n (((dVar16 = dVar11, _CGRectGetHeight(dVar11,dVar18,dVar20,dVar22),\n 2.220446049250313e-16 < dVar16 &&\n (_CGRectIsNull(dVar12,dVar19,dVar21,dVar23), (IVar3 & 1) == 0)) &&\n (_CGRectIsEmpty(dVar12,dVar19,dVar21,dVar23), (IVar3 & 1) == 0)))) &&\n ((dVar16 = dVar12, _CGRectGetWidth(dVar12,dVar19,dVar21,dVar23),\n 2.220446049250313e-16 < dVar16 &&\n (dVar16 = dVar12, _CGRectGetHeight(dVar12,dVar19,dVar21,dVar23),\n 2.220446049250313e-16 < dVar16)))))) {\n dVar17 = dVar17 - dVar14;\n _hypot(dVar17,dVar13 - dVar15);\n if ((0.03 < dVar17) && ((ulong)ABS(dVar17) < 0x7ff0000000000000)) {\n objc_stub::requestRevision(param_5);\n IVar3 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::allPoints(IVar3);\n objc_stub::pointCount(IVar3);\n IVar3 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::faceContour(IVar3);\n objc_stub::pointCount(IVar3);\n FUN_10001c338(dVar11,dVar18,dVar20,dVar22);\n FUN_10001c338(dVar12,dVar19,dVar21,dVar23);\n FUN_10002ab0c(IVar2);\n IVar3 = NSMutableArray::count(IVar1);\n if (IVar3 != 0) {\n IVar3 = NSMutableArray::count(IVar1);\n local_100[9] = IVar3 - 1;\n local_100[1] = 1;\n local_100[0] = 0;\n local_100[3] = 3;\n local_100[2] = 2;\n local_100[5] = 5;\n local_100[4] = 4;\n local_100[7] = 7;\n local_100[6] = 6;\n local_100[8] = 8;\n IVar3 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,10);\n IVar9 = NSMutableIndexSet::indexSet((ID)&_OBJC_CLASS___NSMutableIndexSet);\n lVar8 = 0;\n do {\n uVar5 = *(ulong *)((long)local_100 + lVar8);\n IVar7 = NSMutableArray::count(IVar1);\n if ((uVar5 < IVar7) &&\n (IVar7 = NSMutableIndexSet::containsIndex_(IVar9,uVar5), (IVar7 & 1) == 0)) {\n NSMutableIndexSet::addIndex_(IVar9,uVar5);\n IVar7 = NSMutableArray::objectAtIndexedSubscript_(IVar1,uVar5);\n if ((IVar7 == 0) ||\n (((IVar4 = NSMutableArray::count(IVar7), IVar4 < 2 ||\n (NSMutableArray::X(IVar7),\n 0x7fefffffffffffff < (extraout_d0_03 & 0x7fffffffffffffff))) ||\n (NSMutableArray::Y(IVar7),\n 0x7fefffffffffffff < (extraout_d0_04 & 0x7fffffffffffffff))))) {\n IVar7 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf__lu_null);\n }\n else {\n NSMutableArray::X(IVar7);\n NSMutableArray::Y(IVar7);\n IVar7 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf__lu____5f___5f_);\n }\n NSMutableArray::addObject_(IVar3,IVar7);\n }\n lVar8 = lVar8 + 8;\n } while (lVar8 != 0x50);\n NSMutableArray::componentsJoinedByString_(IVar3,&cf_space_s_);\n }\n }\n }\n IVar1 = IVar2;\n FUN_10001b070(extraout_d0,param_2,param_3,param_4);\n if ((int)IVar1 == 0) {\n IVar2 = 0;\n }\nLAB_10002a3d8:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(IVar2);\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100029d4c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10002a420 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\nvoid FUN_100029d4c(undefined8 param_1,double param_2,double param_3,double param_4,ID param_5)\n\n{\n ID IVar1;\n ID IVar2;\n ID IVar3;\n ID IVar4;\n ulong uVar5;\n double *pdVar6;\n ID IVar7;\n long lVar8;\n ID IVar9;\n long lVar10;\n double extraout_d0;\n double extraout_d0_00;\n double dVar11;\n double extraout_d0_01;\n double dVar12;\n double extraout_d0_02;\n double dVar13;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n ulong extraout_d0_03;\n ulong extraout_d0_04;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n undefined8 local_1d0;\n long lStack_1c8;\n long *local_1c0;\n undefined8 uStack_1b8;\n undefined8 local_1b0;\n undefined8 uStack_1a8;\n undefined8 uStack_1a0;\n undefined8 uStack_198;\n undefined1 auStack_188 [128];\n ID local_108;\n ulong local_100 [10];\n long local_b0;\n \n local_b0 = *(long *)PTR____stack_chk_guard_1000a80e8;\n IVar2 = 0;\n if (param_5 == 0) goto LAB_10002a3d8;\n IVar1 = objc_stub::landmarks(param_5);\n IVar2 = 0;\n if (IVar1 == 0) goto LAB_10002a3d8;\n IVar2 = objc_stub::landmarks(param_5);\n IVar1 = objc_stub::allPoints(IVar2);\n IVar2 = 0;\n if (IVar1 == 0) goto LAB_10002a3d8;\n IVar2 = objc_stub::landmarks(param_5);\n local_108 = objc_stub::allPoints(IVar2);\n IVar1 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_108,1);\n IVar2 = NSMutableArray::array((ID)&_OBJC_CLASS___NSMutableArray);\n objc_stub::boundingBox(param_5);\n uStack_1a8 = 0;\n local_1b0 = 0;\n uStack_198 = 0;\n uStack_1a0 = 0;\n lStack_1c8 = 0;\n local_1d0 = 0;\n uStack_1b8 = 0;\n local_1c0 = (long *)0x0;\n dVar18 = param_2;\n dVar20 = param_3;\n dVar22 = param_4;\n IVar3 = NSArray::countByEnumeratingWithState_objects_count_(IVar1,&local_1d0,auStack_188,0x10);\n if (IVar3 != 0) {\n lVar8 = *local_1c0;\n do {\n IVar9 = 0;\n do {\n if (*local_1c0 != lVar8) {\n _objc_enumerationMutation(IVar1);\n }\n IVar7 = *(ID *)(lStack_1c8 + IVar9 * 8);\n if (((IVar7 != 0) && (IVar4 = objc_stub::pointCount(IVar7), 0x4b < IVar4)) &&\n (IVar4 = objc_stub::normalizedPoints(IVar7), IVar4 != 0)) {\n IVar7 = objc_stub::normalizedPoints(IVar7);\n pdVar6 = (double *)(IVar7 + 8);\n lVar10 = 0x4c;\n do {\n dVar18 = param_2 + *pdVar6 * param_4;\n IVar7 = CIVector::vectorWithX_Y_\n ((ID)&_OBJC_CLASS___CIVector,extraout_d0 + pdVar6[-1] * param_3);\n NSMutableArray::addObject_(IVar2,IVar7);\n pdVar6 = pdVar6 + 2;\n lVar10 = lVar10 + -1;\n } while (lVar10 != 0);\n }\n IVar9 = IVar9 + 1;\n } while (IVar9 != IVar3);\n IVar3 = NSArray::countByEnumeratingWithState_objects_count_(IVar1,&local_1d0,auStack_188,0x10)\n ;\n } while (IVar3 != 0);\n }\n IVar1 = NSMutableArray::count(IVar2);\n dVar11 = extraout_d0_00;\n if (IVar1 == 0x4c) {\n dVar11 = extraout_d0;\n _CGRectGetMidX(extraout_d0,param_2,param_3,param_4);\n dVar18 = extraout_d0;\n dVar20 = param_3;\n dVar22 = param_4;\n _CGRectGetMidY(extraout_d0,param_2);\n IVar1 = CIVector::vectorWithX_Y_((ID)&_OBJC_CLASS___CIVector,dVar11);\n NSMutableArray::addObject_(IVar2,IVar1);\n dVar11 = extraout_d0_01;\n }\n FUN_10002a7b8(IVar2,0x3b,0x4b);\n dVar19 = dVar18;\n dVar21 = dVar20;\n dVar23 = dVar22;\n IVar1 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::faceContour(IVar1);\n IVar1 = 0;\n if (IVar3 != 0) {\n IVar1 = objc_stub::pointCount(IVar3);\n if (((IVar1 != 0) && (uVar5 = objc_stub::normalizedPoints(IVar3), uVar5 != 0)) &&\n ((dVar19 = param_2, dVar21 = param_3, dVar23 = param_4,\n _CGRectIsNull(extraout_d0,param_2,param_3,param_4), (uVar5 & 1) == 0 &&\n (dVar19 = param_2, dVar21 = param_3, dVar23 = param_4,\n _CGRectIsEmpty(extraout_d0,param_2,param_3,param_4), (uVar5 & 1) == 0)))) {\n dVar12 = extraout_d0;\n dVar21 = param_3;\n dVar23 = param_4;\n _CGRectGetWidth(extraout_d0,param_2,param_3,param_4);\n dVar19 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar12) {\n dVar12 = extraout_d0;\n dVar21 = param_3;\n dVar23 = param_4;\n _CGRectGetHeight(extraout_d0,param_2,param_3,param_4);\n dVar19 = 2.220446049250313e-16;\n if (2.220446049250313e-16 < dVar12) {\n IVar9 = objc_stub::pointCount(IVar3);\n IVar1 = IVar9;\n if (0x4b < IVar9) {\n IVar1 = 0x4c;\n }\n IVar7 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar1);\n IVar3 = objc_stub::normalizedPoints(IVar3);\n if (IVar9 != 0) {\n pdVar6 = (double *)(IVar3 + 8);\n do {\n dVar19 = param_2 + *pdVar6 * param_4;\n IVar3 = CIVector::vectorWithX_Y_\n ((ID)&_OBJC_CLASS___CIVector,extraout_d0 + pdVar6[-1] * param_3,\n dVar19);\n NSMutableArray::addObject_(IVar7,IVar3);\n pdVar6 = pdVar6 + 2;\n IVar1 = IVar1 - 1;\n } while (IVar1 != 0);\n }\n IVar3 = NSMutableArray::count(IVar7);\n IVar1 = 0;\n if (IVar3 != 0) {\n IVar1 = IVar7;\n }\n goto LAB_10002a06c;\n }\n }\n }\n IVar1 = 0;\n }\nLAB_10002a06c:\n IVar9 = NSMutableArray::count(IVar1);\n IVar3 = IVar1;\n dVar12 = extraout_d0_02;\n FUN_10002a7b8(IVar1,0,IVar9 - 1);\n dVar17 = dVar11;\n _CGRectGetMidX(dVar11,dVar18,dVar20,dVar22);\n dVar13 = dVar11;\n _CGRectGetMidY(dVar11,dVar18,dVar20,dVar22);\n dVar14 = dVar12;\n _CGRectGetMidX(dVar12,dVar19,dVar21,dVar23);\n dVar15 = dVar12;\n _CGRectGetMidY(dVar12,dVar19,dVar21,dVar23);\n _CGRectIsNull(dVar11,dVar18,dVar20,dVar22);\n if ((((IVar3 & 1) == 0) && (_CGRectIsEmpty(dVar11,dVar18,dVar20,dVar22), (IVar3 & 1) == 0)) &&\n (((dVar16 = dVar11, _CGRectGetWidth(dVar11,dVar18,dVar20,dVar22),\n 2.220446049250313e-16 < dVar16 &&\n (((dVar16 = dVar11, _CGRectGetHeight(dVar11,dVar18,dVar20,dVar22),\n 2.220446049250313e-16 < dVar16 &&\n (_CGRectIsNull(dVar12,dVar19,dVar21,dVar23), (IVar3 & 1) == 0)) &&\n (_CGRectIsEmpty(dVar12,dVar19,dVar21,dVar23), (IVar3 & 1) == 0)))) &&\n ((dVar16 = dVar12, _CGRectGetWidth(dVar12,dVar19,dVar21,dVar23),\n 2.220446049250313e-16 < dVar16 &&\n (dVar16 = dVar12, _CGRectGetHeight(dVar12,dVar19,dVar21,dVar23),\n 2.220446049250313e-16 < dVar16)))))) {\n dVar17 = dVar17 - dVar14;\n _hypot(dVar17,dVar13 - dVar15);\n if ((0.03 < dVar17) && ((ulong)ABS(dVar17) < 0x7ff0000000000000)) {\n objc_stub::requestRevision(param_5);\n IVar3 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::allPoints(IVar3);\n objc_stub::pointCount(IVar3);\n IVar3 = objc_stub::landmarks(param_5);\n IVar3 = objc_stub::faceContour(IVar3);\n objc_stub::pointCount(IVar3);\n FUN_10001c338(dVar11,dVar18,dVar20,dVar22);\n FUN_10001c338(dVar12,dVar19,dVar21,dVar23);\n FUN_10002ab0c(IVar2);\n IVar3 = NSMutableArray::count(IVar1);\n if (IVar3 != 0) {\n IVar3 = NSMutableArray::count(IVar1);\n local_100[9] = IVar3 - 1;\n local_100[1] = 1;\n local_100[0] = 0;\n local_100[3] = 3;\n local_100[2] = 2;\n local_100[5] = 5;\n local_100[4] = 4;\n local_100[7] = 7;\n local_100[6] = 6;\n local_100[8] = 8;\n IVar3 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,10);\n IVar9 = NSMutableIndexSet::indexSet((ID)&_OBJC_CLASS___NSMutableIndexSet);\n lVar8 = 0;\n do {\n uVar5 = *(ulong *)((long)local_100 + lVar8);\n IVar7 = NSMutableArray::count(IVar1);\n if ((uVar5 < IVar7) &&\n (IVar7 = NSMutableIndexSet::containsIndex_(IVar9,uVar5), (IVar7 & 1) == 0)) {\n NSMutableIndexSet::addIndex_(IVar9,uVar5);\n IVar7 = NSMutableArray::objectAtIndexedSubscript_(IVar1,uVar5);\n if ((IVar7 == 0) ||\n (((IVar4 = NSMutableArray::count(IVar7), IVar4 < 2 ||\n (NSMutableArray::X(IVar7),\n 0x7fefffffffffffff < (extraout_d0_03 & 0x7fffffffffffffff))) ||\n (NSMutableArray::Y(IVar7),\n 0x7fefffffffffffff < (extraout_d0_04 & 0x7fffffffffffffff))))) {\n IVar7 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf__lu_null);\n }\n else {\n NSMutableArray::X(IVar7);\n NSMutableArray::Y(IVar7);\n IVar7 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf__lu____5f___5f_);\n }\n NSMutableArray::addObject_(IVar3,IVar7);\n }\n lVar8 = lVar8 + 8;\n } while (lVar8 != 0x50);\n NSMutableArray::componentsJoinedByString_(IVar3,&cf_space_s_);\n }\n }\n }\n IVar1 = IVar2;\n FUN_10001b070(extraout_d0,param_2,param_3,param_4);\n if ((int)IVar1 == 0) {\n IVar2 = 0;\n }\nLAB_10002a3d8:\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_b0) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(IVar2);\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_d1932e6344ea1cb1c7f1745d76c0a43604ccffcb099cb0c92447bffa966c473e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "0x10003d49c: stp d15, d14, [sp, #-0x60]!\n0x10003d4a0: stp d13, d12, [sp, #0x10]\n0x10003d4a4: stp d11, d10, [sp, #0x20]\n0x10003d4a8: stp d9, d8, [sp, #0x30]\n0x10003d4ac: stp x20, x19, [sp, #0x40]\n0x10003d4b0: stp x29, x30, [sp, #0x50]\n0x10003d4b4: add x29, sp, #0x50\n0x10003d4b8: mov x19, x0\n0x10003d4bc: adrp x20, 0x1000a8000\n0x10003d4c0: ldr x20, [x20, #0x148]\n0x10003d4c4: cbz x0, 0x10003d4fc\n0x10003d4c8: mov x0, x19\n0x10003d4cc: bl 0x10007cea0\n0x10003d4d0: bl 0x10007a9dc\n0x10003d4d4: movi d4, #0x0\n0x10003d4d8: movi d5, #0x0\n0x10003d4dc: fmov d6, 0x3ff0000000000000\n0x10003d4e0: fmov d7, 0x3ff0000000000000\n0x10003d4e4: bl 0x10007a9ac\n0x10003d4e8: fmov d8, d0\n0x10003d4ec: fmov d9, d1\n0x10003d4f0: fmov d10, d2\n0x10003d4f4: fmov d11, d3\n0x10003d4f8: b 0x10003d504\n0x10003d4fc: ldp d8, d9, [x20]\n0x10003d500: ldp d10, d11, [x20, #0x10]\n0x10003d504: fmov d0, d8\n0x10003d508: fmov d1, d9\n0x10003d50c: fmov d2, d10\n0x10003d510: fmov d3, d11\n0x10003d514: bl 0x10007a9d0\n0x10003d518: tbnz w0, #0x0, 0x10003d624\n0x10003d51c: fmov d0, d8\n0x10003d520: fmov d1, d9\n0x10003d524: fmov d2, d10\n0x10003d528: fmov d3, d11\n0x10003d52c: bl 0x10007a9b8\n0x10003d530: tbnz w0, #0x0, 0x10003d624\n0x10003d534: fmov d0, d8\n0x10003d538: fmov d1, d9\n0x10003d53c: fmov d2, d10\n0x10003d540: fmov d3, d11\n0x10003d544: bl 0x10007a988\n0x10003d548: mov x8, #0x3cb0000000000000\n0x10003d54c: fmov d1, x8\n0x10003d550: fcmp d0, d1\n0x10003d554: b.le 0x10003d624\n0x10003d558: fmov d0, d8\n0x10003d55c: fmov d1, d9\n0x10003d560: fmov d2, d10\n0x10003d564: fmov d3, d11\n0x10003d568: bl 0x10007a934\n0x10003d56c: mov x8, #0x3cb0000000000000\n0x10003d570: fmov d1, x8\n0x10003d574: fcmp d0, d1\n0x10003d578: b.le 0x10003d624\n0x10003d57c: mov x0, x19\n0x10003d580: bl 0x100029d4c\n0x10003d584: fmov d0, d8\n0x10003d588: fmov d1, d9\n0x10003d58c: fmov d2, d10\n0x10003d590: fmov d3, d11\n0x10003d594: bl 0x100042f9c\n0x10003d598: fmov d12, d0\n0x10003d59c: fmov d13, d1\n0x10003d5a0: fmov d14, d2\n0x10003d5a4: fmov d15, d3\n0x10003d5a8: bl 0x10007a9d0\n0x10003d5ac: tbnz w0, #0x0, 0x10003d62c\n0x10003d5b0: fmov d0, d12\n0x10003d5b4: fmov d1, d13\n0x10003d5b8: fmov d2, d14\n0x10003d5bc: fmov d3, d15\n0x10003d5c0: bl 0x10007a9b8\n0x10003d5c4: tbnz w0, #0x0, 0x10003d62c\n0x10003d5c8: fmov d0, d12\n0x10003d5cc: fmov d1, d13\n0x10003d5d0: fmov d2, d14\n0x10003d5d4: fmov d3, d15\n0x10003d5d8: bl 0x10007a988\n0x10003d5dc: mov x8, #0x3cb0000000000000\n0x10003d5e0: fmov d1, x8\n0x10003d5e4: fcmp d0, d1\n0x10003d5e8: b.le 0x10003d62c\n0x10003d5ec: fmov d0, d12\n0x10003d5f0: fmov d1, d13\n0x10003d5f4: fmov d2, d14\n0x10003d5f8: fmov d3, d15\n0x10003d5fc: bl 0x10007a934\n0x10003d600: mov x8, #0x3cb0000000000000\n0x10003d604: fmov d1, x8\n0x10003d608: fcmp d0, d1\n0x10003d60c: b.le 0x10003d62c\n0x10003d610: fmov d8, d12\n0x10003d614: fmov d9, d13\n0x10003d618: fmov d10, d14\n0x10003d61c: fmov d11, d15\n0x10003d620: b 0x10003d62c\n0x10003d624: ldp d8, d9, [x20]\n0x10003d628: ldp d10, d11, [x20, #0x10]\n0x10003d62c: fmov d0, d8\n0x10003d630: fmov d1, d9\n0x10003d634: fmov d2, d10\n0x10003d638: fmov d3, d11\n0x10003d63c: ldp x29, x30, [sp, #0x50]\n0x10003d640: ldp x20, x19, [sp, #0x40]\n0x10003d644: ldp d9, d8, [sp, #0x30]\n0x10003d648: ldp d11, d10, [sp, #0x20]\n0x10003d64c: ldp d13, d12, [sp, #0x10]\n0x10003d650: ldp d15, d14, [sp], #0x60\n0x10003d654: ret", + "operation": "procedure_assembly", + "parameters": { + "procedure": "0x10003d49c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "0x10003d49c: stp d15, d14, [sp, #-0x60]!\n0x10003d4a0: stp d13, d12, [sp, #0x10]\n0x10003d4a4: stp d11, d10, [sp, #0x20]\n0x10003d4a8: stp d9, d8, [sp, #0x30]\n0x10003d4ac: stp x20, x19, [sp, #0x40]\n0x10003d4b0: stp x29, x30, [sp, #0x50]\n0x10003d4b4: add x29, sp, #0x50\n0x10003d4b8: mov x19, x0\n0x10003d4bc: adrp x20, 0x1000a8000\n0x10003d4c0: ldr x20, [x20, #0x148]\n0x10003d4c4: cbz x0, 0x10003d4fc\n0x10003d4c8: mov x0, x19\n0x10003d4cc: bl 0x10007cea0\n0x10003d4d0: bl 0x10007a9dc\n0x10003d4d4: movi d4, #0x0\n0x10003d4d8: movi d5, #0x0\n0x10003d4dc: fmov d6, 0x3ff0000000000000\n0x10003d4e0: fmov d7, 0x3ff0000000000000\n0x10003d4e4: bl 0x10007a9ac\n0x10003d4e8: fmov d8, d0\n0x10003d4ec: fmov d9, d1\n0x10003d4f0: fmov d10, d2\n0x10003d4f4: fmov d11, d3\n0x10003d4f8: b 0x10003d504\n0x10003d4fc: ldp d8, d9, [x20]\n0x10003d500: ldp d10, d11, [x20, #0x10]\n0x10003d504: fmov d0, d8\n0x10003d508: fmov d1, d9\n0x10003d50c: fmov d2, d10\n0x10003d510: fmov d3, d11\n0x10003d514: bl 0x10007a9d0\n0x10003d518: tbnz w0, #0x0, 0x10003d624\n0x10003d51c: fmov d0, d8\n0x10003d520: fmov d1, d9\n0x10003d524: fmov d2, d10\n0x10003d528: fmov d3, d11\n0x10003d52c: bl 0x10007a9b8\n0x10003d530: tbnz w0, #0x0, 0x10003d624\n0x10003d534: fmov d0, d8\n0x10003d538: fmov d1, d9\n0x10003d53c: fmov d2, d10\n0x10003d540: fmov d3, d11\n0x10003d544: bl 0x10007a988\n0x10003d548: mov x8, #0x3cb0000000000000\n0x10003d54c: fmov d1, x8\n0x10003d550: fcmp d0, d1\n0x10003d554: b.le 0x10003d624\n0x10003d558: fmov d0, d8\n0x10003d55c: fmov d1, d9\n0x10003d560: fmov d2, d10\n0x10003d564: fmov d3, d11\n0x10003d568: bl 0x10007a934\n0x10003d56c: mov x8, #0x3cb0000000000000\n0x10003d570: fmov d1, x8\n0x10003d574: fcmp d0, d1\n0x10003d578: b.le 0x10003d624\n0x10003d57c: mov x0, x19\n0x10003d580: bl 0x100029d4c\n0x10003d584: fmov d0, d8\n0x10003d588: fmov d1, d9\n0x10003d58c: fmov d2, d10\n0x10003d590: fmov d3, d11\n0x10003d594: bl 0x100042f9c\n0x10003d598: fmov d12, d0\n0x10003d59c: fmov d13, d1\n0x10003d5a0: fmov d14, d2\n0x10003d5a4: fmov d15, d3\n0x10003d5a8: bl 0x10007a9d0\n0x10003d5ac: tbnz w0, #0x0, 0x10003d62c\n0x10003d5b0: fmov d0, d12\n0x10003d5b4: fmov d1, d13\n0x10003d5b8: fmov d2, d14\n0x10003d5bc: fmov d3, d15\n0x10003d5c0: bl 0x10007a9b8\n0x10003d5c4: tbnz w0, #0x0, 0x10003d62c\n0x10003d5c8: fmov d0, d12\n0x10003d5cc: fmov d1, d13\n0x10003d5d0: fmov d2, d14\n0x10003d5d4: fmov d3, d15\n0x10003d5d8: bl 0x10007a988\n0x10003d5dc: mov x8, #0x3cb0000000000000\n0x10003d5e0: fmov d1, x8\n0x10003d5e4: fcmp d0, d1\n0x10003d5e8: b.le 0x10003d62c\n0x10003d5ec: fmov d0, d12\n0x10003d5f0: fmov d1, d13\n0x10003d5f4: fmov d2, d14\n0x10003d5f8: fmov d3, d15\n0x10003d5fc: bl 0x10007a934\n0x10003d600: mov x8, #0x3cb0000000000000\n0x10003d604: fmov d1, x8\n0x10003d608: fcmp d0, d1\n0x10003d60c: b.le 0x10003d62c\n0x10003d610: fmov d8, d12\n0x10003d614: fmov d9, d13\n0x10003d618: fmov d10, d14\n0x10003d61c: fmov d11, d15\n0x10003d620: b 0x10003d62c\n0x10003d624: ldp d8, d9, [x20]\n0x10003d628: ldp d10, d11, [x20, #0x10]\n0x10003d62c: fmov d0, d8\n0x10003d630: fmov d1, d9\n0x10003d634: fmov d2, d10\n0x10003d638: fmov d3, d11\n0x10003d63c: ldp x29, x30, [sp, #0x50]\n0x10003d640: ldp x20, x19, [sp, #0x40]\n0x10003d644: ldp d9, d8, [sp, #0x30]\n0x10003d648: ldp d11, d10, [sp, #0x20]\n0x10003d64c: ldp d13, d12, [sp, #0x10]\n0x10003d650: ldp d15, d14, [sp], #0x60\n0x10003d654: ret" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_d3467a45e410adebb25931175cdb00f6b81b052b92940ce6701a511d973bce59", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x100050630 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n\nvoid FUN_100050560(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n undefined *self;\n ID IVar1;\n ID IVar2;\n undefined8 uVar3;\n undefined8 local_40;\n long local_38;\n \n local_38 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (param_3 != (long *)0x0) {\n *param_3 = 0;\n }\n self = &_OBJC_CLASS___VNImageRequestHandler;\n _objc_alloc();\n IVar1 = objc_stub::initWithCIImage_orientation_options_\n ((ID)self,param_1,1,PTR____NSDictionary0__struct_1000a8118);\n local_40 = param_2;\n IVar2 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_40,1);\n IVar1 = objc_stub::performRequests_error_(IVar1,IVar2,param_3);\n if (((int)IVar1 == 0) || ((param_3 != (long *)0x0 && (*param_3 != 0)))) {\n uVar3 = 0;\n }\n else {\n uVar3 = 1;\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_38) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(uVar3);\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100050560" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x100050630 to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* WARNING: Function: _objc_autorelease replaced with injection: _objc_retain_fixup */\n\nvoid FUN_100050560(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n undefined *self;\n ID IVar1;\n ID IVar2;\n undefined8 uVar3;\n undefined8 local_40;\n long local_38;\n \n local_38 = *(long *)PTR____stack_chk_guard_1000a80e8;\n if (param_3 != (long *)0x0) {\n *param_3 = 0;\n }\n self = &_OBJC_CLASS___VNImageRequestHandler;\n _objc_alloc();\n IVar1 = objc_stub::initWithCIImage_orientation_options_\n ((ID)self,param_1,1,PTR____NSDictionary0__struct_1000a8118);\n local_40 = param_2;\n IVar2 = NSArray::arrayWithObjects_count_((ID)&_OBJC_CLASS___NSArray,&local_40,1);\n IVar1 = objc_stub::performRequests_error_(IVar1,IVar2,param_3);\n if (((int)IVar1 == 0) || ((param_3 != (long *)0x0 && (*param_3 != 0)))) {\n uVar3 = 0;\n }\n else {\n uVar3 = 1;\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_38) {\n return;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail(uVar3);\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_d496d7ee84574987481a3c6714fe4a587e4654ef0f94b182e140fc183eeb5e06", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x1000a8b18", + "bytes_hex": "004e0e000100000000000050000000006808050001000000a8840a0001000000", + "complete": true, + "requested_bytes": 32, + "returned_bytes": 32 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x1000a8b18", + "length": 32 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x1000a8b18", + "bytes_hex": "004e0e000100000000000050000000006808050001000000a8840a0001000000", + "complete": true, + "requested_bytes": 32, + "returned_bytes": 32 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_d6616be03cd7c613da62d6d5e38b87cac366241edae320b05b72ad773bca239a", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x1000799ec to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_1000799dc(void)\n\n{\n _dispatch_once(&DAT_1000be158,&PTR___NSConcreteGlobalBlock_1000a8f58);\n return;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x1000799dc" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x1000799ec to 0x10007ad0c _dispatch_once (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "\nvoid FUN_1000799dc(void)\n\n{\n _dispatch_once(&DAT_1000be158,&PTR___NSConcreteGlobalBlock_1000a8f58);\n return;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_dc809f2f363a6597743e9fa9d1d779f87190c71545950ee6138dab67155322e4", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x100086418", + "bytes_hex": "fa7e6abc7493683f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x100086418", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x100086418", + "bytes_hex": "fa7e6abc7493683f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_e045bdd0d59b0d0d7bcd53b0c73304d0dd3bd2d9e0df00d4e306b1c3c8e3a92d", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* Function Stack Size: 0x40 bytes */\n\nID MSSSkinControlPanelView::initWithFrame_apiManager_pluginHost_\n (ID param_1,SEL param_2,CGRect param_3,ID param_4,ID param_5)\n\n{\n ID self;\n undefined *puVar1;\n ID IVar2;\n ID local_40;\n class_t *pcStack_38;\n \n pcStack_38 = &objc::class_t::MSSSkinControlPanelView;\n local_40 = param_1;\n self = NSView::initWithFrame_\n ((ID)&local_40,\"initWithFrame:\",param_3.field0_0x0.field0_0x0,\n param_3.field0_0x0.field1_0x8,param_3.field1_0x10.field0_0x0,\n param_3.field1_0x10.field1_0x8);\n if (self != 0) {\n *(double *)(self + (long)_apiManager) = param_3.field0_0x0.field0_0x0;\n *(double *)(self + (long)_pluginHost) = param_3.field0_0x0.field1_0x8;\n *(undefined8 *)(self + (long)_cachedControlPanelValue) = 0;\n puVar1 = &_OBJC_CLASS___NSMutableDictionary;\n _objc_alloc_init();\n *(undefined **)(self + (long)_sliderControls) = puVar1;\n puVar1 = &_OBJC_CLASS___NSMutableDictionary;\n _objc_alloc_init();\n *(undefined **)(self + (long)_toggleControls) = puVar1;\n IVar2 = objc_stub::copy(0x1000aade0);\n *(ID *)(self + (long)_resolvedUpdateURLString) = IVar2;\n NSView::setAutoresizingMask_(self,0x12);\n FUN_10000ac28(self);\n NSView::setContentHuggingPriority_forOrientation_(self,0x437a0000,0);\n NSView::setContentCompressionResistancePriority_forOrientation_(self,0x447a0000,0);\n FUN_10000ac84(&cf____controlpanelinitbuild__llu___);\n NSView::mss_logGeometry_(self,&cf_init);\n }\n return self;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10000ab00" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\n/* Function Stack Size: 0x40 bytes */\n\nID MSSSkinControlPanelView::initWithFrame_apiManager_pluginHost_\n (ID param_1,SEL param_2,CGRect param_3,ID param_4,ID param_5)\n\n{\n ID self;\n undefined *puVar1;\n ID IVar2;\n ID local_40;\n class_t *pcStack_38;\n \n pcStack_38 = &objc::class_t::MSSSkinControlPanelView;\n local_40 = param_1;\n self = NSView::initWithFrame_\n ((ID)&local_40,\"initWithFrame:\",param_3.field0_0x0.field0_0x0,\n param_3.field0_0x0.field1_0x8,param_3.field1_0x10.field0_0x0,\n param_3.field1_0x10.field1_0x8);\n if (self != 0) {\n *(double *)(self + (long)_apiManager) = param_3.field0_0x0.field0_0x0;\n *(double *)(self + (long)_pluginHost) = param_3.field0_0x0.field1_0x8;\n *(undefined8 *)(self + (long)_cachedControlPanelValue) = 0;\n puVar1 = &_OBJC_CLASS___NSMutableDictionary;\n _objc_alloc_init();\n *(undefined **)(self + (long)_sliderControls) = puVar1;\n puVar1 = &_OBJC_CLASS___NSMutableDictionary;\n _objc_alloc_init();\n *(undefined **)(self + (long)_toggleControls) = puVar1;\n IVar2 = objc_stub::copy(0x1000aade0);\n *(ID *)(self + (long)_resolvedUpdateURLString) = IVar2;\n NSView::setAutoresizingMask_(self,0x12);\n FUN_10000ac28(self);\n NSView::setContentHuggingPriority_forOrientation_(self,0x437a0000,0);\n NSView::setContentCompressionResistancePriority_forOrientation_(self,0x447a0000,0);\n FUN_10000ac84(&cf____controlpanelinitbuild__llu___);\n NSView::mss_logGeometry_(self,&cf_init);\n }\n return self;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_ea56f92ff686beeff6c9ea93b6008e9e2e55c432f8c609d355768f75a45332fc", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10000c4cc to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\n/* Function Stack Size: 0x20 bytes */\n\nID MSSSkinControlPanelView::visibleControlsForSection_controlPanelValue_\n (ID param_1,SEL param_2,ID param_3,ID param_4)\n\n{\n uint uVar1;\n undefined *puVar2;\n ID self;\n ID IVar3;\n ID IVar4;\n ID IVar5;\n ID IVar6;\n ID IVar7;\n ID IVar8;\n long extraout_x1;\n long lVar9;\n long lVar10;\n ID IVar11;\n ID local_278;\n ID local_268;\n undefined8 local_250;\n long lStack_248;\n long *local_240;\n undefined8 uStack_238;\n undefined8 local_230;\n undefined8 uStack_228;\n undefined8 uStack_220;\n undefined8 uStack_218;\n undefined8 local_210;\n long lStack_208;\n long *local_200;\n undefined8 uStack_1f8;\n undefined8 local_1f0;\n undefined8 uStack_1e8;\n undefined8 uStack_1e0;\n undefined8 uStack_1d8;\n cfstringStruct *local_1d0;\n cfstringStruct *local_1c8;\n cfstringStruct *local_1c0;\n cfstringStruct *pcStack_1b8;\n cfstringStruct *local_1b0;\n cfstringStruct *pcStack_1a8;\n ID local_1a0;\n ID local_198;\n cfstringStruct *pcStack_190;\n ID local_188;\n undefined *puStack_180;\n ID local_178;\n undefined1 auStack_170 [128];\n undefined1 auStack_f0 [128];\n long local_70;\n \n local_70 = *(long *)PTR____stack_chk_guard_1000a80e8;\n self = objc_stub::objectForKeyedSubscript_(param_3,&cf_controls);\n IVar3 = objc_stub::objectForKeyedSubscript_(param_3,&cf_headerID);\n IVar3 = objc_stub::unsignedIntValue(IVar3);\n local_278 = self;\n if ((int)IVar3 == 0xca) {\n lVar9 = extraout_x1;\n FUN_10000c4d0(param_4);\n FUN_100018160(param_4);\n IVar3 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,lVar9);\n for (; lVar9 != 0; lVar9 = lVar9 + -1) {\n IVar4 = NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,param_4);\n NSMutableArray::addObject_(IVar3,IVar4);\n param_4 = param_4 + 1;\n }\n IVar4 = objc_stub::count(self);\n IVar5 = NSMutableArray::count(IVar3);\n local_278 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar5 + IVar4);\n lStack_208 = 0;\n local_210 = 0;\n uStack_1f8 = 0;\n local_200 = (long *)0x0;\n uStack_1e8 = 0;\n local_1f0 = 0;\n uStack_1d8 = 0;\n uStack_1e0 = 0;\n local_268 = objc_stub::countByEnumeratingWithState_objects_count_\n (self,&local_210,auStack_f0,0x10);\n puVar2 = PTR____kCFBooleanTrue_1000a8128;\n if (local_268 != 0) {\n lVar9 = *local_200;\n do {\n IVar4 = 0;\n do {\n if (*local_200 != lVar9) {\n _objc_enumerationMutation(self);\n }\n IVar5 = *(ID *)(lStack_208 + IVar4 * 8);\n IVar6 = objc_stub::objectForKeyedSubscript_(IVar5,&cf_addTargetButton);\n IVar6 = objc_stub::boolValue(IVar6);\n if ((int)IVar6 != 0) {\n uStack_228 = 0;\n local_230 = 0;\n uStack_218 = 0;\n uStack_220 = 0;\n lStack_248 = 0;\n local_250 = 0;\n uStack_238 = 0;\n local_240 = (long *)0x0;\n IVar6 = NSMutableArray::countByEnumeratingWithState_objects_count_\n (IVar3,&local_250,auStack_170,0x10);\n if (IVar6 != 0) {\n lVar10 = *local_240;\n do {\n IVar11 = 0;\n do {\n if (*local_240 != lVar10) {\n _objc_enumerationMutation(IVar3);\n }\n IVar7 = objc_stub::integerValue(*(ID *)(lStack_248 + IVar11 * 8));\n local_1d0 = &cf_id;\n IVar8 = IVar7;\n if (0x7e < IVar7) {\n IVar8 = 0x7f;\n }\n uVar1 = 0x22;\n if (0 < (long)IVar7) {\n uVar1 = (int)IVar8 + 1000;\n }\n local_1a0 = NSNumber::numberWithUnsignedInt_\n ((ID)&_OBJC_CLASS___NSNumber,(ulong)uVar1);\n local_1c8 = &cf_title;\n local_198 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf_Nir_);\n pcStack_190 = &cf_button;\n local_1c0 = &cf_kind;\n pcStack_1b8 = &cf_targetIndex;\n local_188 = NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,IVar7);\n puStack_180 = puVar2;\n local_1b0 = &cf_hideEye;\n pcStack_1a8 = &cf_deletable;\n local_178 = NSNumber::numberWithInt_\n ((ID)&_OBJC_CLASS___NSNumber,(ulong)(0 < (long)IVar7));\n IVar8 = NSDictionary::dictionaryWithObjects_forKeys_count_\n ((ID)&_OBJC_CLASS___NSDictionary,&local_1a0,&local_1d0,6);\n NSMutableArray::addObject_(local_278,IVar8);\n IVar11 = IVar11 + 1;\n } while (IVar6 != IVar11);\n IVar6 = NSMutableArray::countByEnumeratingWithState_objects_count_\n (IVar3,&local_250,auStack_170,0x10);\n } while (IVar6 != 0);\n }\n }\n NSMutableArray::addObject_(local_278,IVar5);\n IVar4 = IVar4 + 1;\n } while (IVar4 != local_268);\n local_268 = objc_stub::countByEnumeratingWithState_objects_count_\n (self,&local_210,auStack_f0,0x10);\n } while (local_268 != 0);\n }\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_70) {\n return local_278;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10000c18c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10000c4cc to 0x10007aca0 ___stack_chk_fail (external=false, thunk=true, hasNoReturn=true); fallthrough is excluded by Ghidra's flow model. This records Ghidra's FunctionManager flag, not an independent verification that the callee cannot return." + ], + "value": "\n/* Function Stack Size: 0x20 bytes */\n\nID MSSSkinControlPanelView::visibleControlsForSection_controlPanelValue_\n (ID param_1,SEL param_2,ID param_3,ID param_4)\n\n{\n uint uVar1;\n undefined *puVar2;\n ID self;\n ID IVar3;\n ID IVar4;\n ID IVar5;\n ID IVar6;\n ID IVar7;\n ID IVar8;\n long extraout_x1;\n long lVar9;\n long lVar10;\n ID IVar11;\n ID local_278;\n ID local_268;\n undefined8 local_250;\n long lStack_248;\n long *local_240;\n undefined8 uStack_238;\n undefined8 local_230;\n undefined8 uStack_228;\n undefined8 uStack_220;\n undefined8 uStack_218;\n undefined8 local_210;\n long lStack_208;\n long *local_200;\n undefined8 uStack_1f8;\n undefined8 local_1f0;\n undefined8 uStack_1e8;\n undefined8 uStack_1e0;\n undefined8 uStack_1d8;\n cfstringStruct *local_1d0;\n cfstringStruct *local_1c8;\n cfstringStruct *local_1c0;\n cfstringStruct *pcStack_1b8;\n cfstringStruct *local_1b0;\n cfstringStruct *pcStack_1a8;\n ID local_1a0;\n ID local_198;\n cfstringStruct *pcStack_190;\n ID local_188;\n undefined *puStack_180;\n ID local_178;\n undefined1 auStack_170 [128];\n undefined1 auStack_f0 [128];\n long local_70;\n \n local_70 = *(long *)PTR____stack_chk_guard_1000a80e8;\n self = objc_stub::objectForKeyedSubscript_(param_3,&cf_controls);\n IVar3 = objc_stub::objectForKeyedSubscript_(param_3,&cf_headerID);\n IVar3 = objc_stub::unsignedIntValue(IVar3);\n local_278 = self;\n if ((int)IVar3 == 0xca) {\n lVar9 = extraout_x1;\n FUN_10000c4d0(param_4);\n FUN_100018160(param_4);\n IVar3 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,lVar9);\n for (; lVar9 != 0; lVar9 = lVar9 + -1) {\n IVar4 = NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,param_4);\n NSMutableArray::addObject_(IVar3,IVar4);\n param_4 = param_4 + 1;\n }\n IVar4 = objc_stub::count(self);\n IVar5 = NSMutableArray::count(IVar3);\n local_278 = NSMutableArray::arrayWithCapacity_((ID)&_OBJC_CLASS___NSMutableArray,IVar5 + IVar4);\n lStack_208 = 0;\n local_210 = 0;\n uStack_1f8 = 0;\n local_200 = (long *)0x0;\n uStack_1e8 = 0;\n local_1f0 = 0;\n uStack_1d8 = 0;\n uStack_1e0 = 0;\n local_268 = objc_stub::countByEnumeratingWithState_objects_count_\n (self,&local_210,auStack_f0,0x10);\n puVar2 = PTR____kCFBooleanTrue_1000a8128;\n if (local_268 != 0) {\n lVar9 = *local_200;\n do {\n IVar4 = 0;\n do {\n if (*local_200 != lVar9) {\n _objc_enumerationMutation(self);\n }\n IVar5 = *(ID *)(lStack_208 + IVar4 * 8);\n IVar6 = objc_stub::objectForKeyedSubscript_(IVar5,&cf_addTargetButton);\n IVar6 = objc_stub::boolValue(IVar6);\n if ((int)IVar6 != 0) {\n uStack_228 = 0;\n local_230 = 0;\n uStack_218 = 0;\n uStack_220 = 0;\n lStack_248 = 0;\n local_250 = 0;\n uStack_238 = 0;\n local_240 = (long *)0x0;\n IVar6 = NSMutableArray::countByEnumeratingWithState_objects_count_\n (IVar3,&local_250,auStack_170,0x10);\n if (IVar6 != 0) {\n lVar10 = *local_240;\n do {\n IVar11 = 0;\n do {\n if (*local_240 != lVar10) {\n _objc_enumerationMutation(IVar3);\n }\n IVar7 = objc_stub::integerValue(*(ID *)(lStack_248 + IVar11 * 8));\n local_1d0 = &cf_id;\n IVar8 = IVar7;\n if (0x7e < IVar7) {\n IVar8 = 0x7f;\n }\n uVar1 = 0x22;\n if (0 < (long)IVar7) {\n uVar1 = (int)IVar8 + 1000;\n }\n local_1a0 = NSNumber::numberWithUnsignedInt_\n ((ID)&_OBJC_CLASS___NSNumber,(ulong)uVar1);\n local_1c8 = &cf_title;\n local_198 = NSString::stringWithFormat_((ID)&_OBJC_CLASS___NSString,&cf_Nir_);\n pcStack_190 = &cf_button;\n local_1c0 = &cf_kind;\n pcStack_1b8 = &cf_targetIndex;\n local_188 = NSNumber::numberWithInteger_((ID)&_OBJC_CLASS___NSNumber,IVar7);\n puStack_180 = puVar2;\n local_1b0 = &cf_hideEye;\n pcStack_1a8 = &cf_deletable;\n local_178 = NSNumber::numberWithInt_\n ((ID)&_OBJC_CLASS___NSNumber,(ulong)(0 < (long)IVar7));\n IVar8 = NSDictionary::dictionaryWithObjects_forKeys_count_\n ((ID)&_OBJC_CLASS___NSDictionary,&local_1a0,&local_1d0,6);\n NSMutableArray::addObject_(local_278,IVar8);\n IVar11 = IVar11 + 1;\n } while (IVar6 != IVar11);\n IVar6 = NSMutableArray::countByEnumeratingWithState_objects_count_\n (IVar3,&local_250,auStack_170,0x10);\n } while (IVar6 != 0);\n }\n }\n NSMutableArray::addObject_(local_278,IVar5);\n IVar4 = IVar4 + 1;\n } while (IVar4 != local_268);\n local_268 = objc_stub::countByEnumeratingWithState_objects_count_\n (self,&local_210,auStack_f0,0x10);\n } while (local_268 != 0);\n }\n }\n if (*(long *)PTR____stack_chk_guard_1000a80e8 == local_70) {\n return local_278;\n }\n /* WARNING: Subroutine does not return */\n ___stack_chk_fail();\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_f0f9ded4bb2ed70150ccc49b7b46c68937c5e6205935976a614b94ceea515696", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nID FUN_10002ee0c(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,ID param_5)\n\n{\n ID IVar1;\n undefined8 uVar2;\n undefined8 uVar3;\n double dVar4;\n double dVar5;\n undefined8 uVar6;\n undefined8 uVar7;\n undefined8 uVar8;\n undefined8 uVar9;\n undefined8 local_e0;\n undefined8 uStack_d8;\n undefined8 uStack_d0;\n undefined8 uStack_c8;\n undefined8 local_c0;\n undefined8 uStack_b8;\n undefined8 local_b0;\n undefined8 uStack_a8;\n undefined8 local_a0;\n undefined8 uStack_98;\n undefined8 local_90;\n undefined8 uStack_88;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 uStack_68;\n undefined8 local_60;\n undefined8 uStack_58;\n \n if ((param_5 != 0) && (IVar1 = param_5, _CGRectIsEmpty(), (IVar1 & 1) == 0)) {\n uVar6 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 8);\n uVar2 = *(undefined8 *)PTR__CGAffineTransformIdentity_1000a8138;\n uVar9 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x18);\n uVar8 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x10);\n uVar7 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x28);\n uVar3 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x20);\n dVar4 = param_1;\n local_80 = uVar2;\n uStack_78 = uVar6;\n local_70 = uVar8;\n uStack_68 = uVar9;\n local_60 = uVar3;\n uStack_58 = uVar7;\n _CGRectGetMinY(param_1,param_2,param_3,param_4);\n dVar5 = param_1;\n _CGRectGetMaxY(param_1,param_2,param_3,param_4);\n local_b0 = uVar2;\n uStack_a8 = uVar6;\n local_a0 = uVar8;\n uStack_98 = uVar9;\n local_90 = uVar3;\n uStack_88 = uVar7;\n _CGAffineTransformTranslate(&local_80,0,dVar4 + dVar5,&local_b0);\n uStack_d8 = uStack_78;\n local_e0 = local_80;\n uStack_c8 = uStack_68;\n uStack_d0 = local_70;\n uStack_b8 = uStack_58;\n local_c0 = local_60;\n _CGAffineTransformScale(&local_b0,0x3ff0000000000000,0xbff0000000000000,&local_e0);\n uStack_68 = uStack_98;\n local_70 = local_a0;\n uStack_58 = uStack_88;\n local_60 = local_90;\n uStack_78 = uStack_a8;\n local_80 = local_b0;\n IVar1 = objc_stub::imageByApplyingTransform_(param_5,&local_b0);\n param_5 = objc_stub::imageByCroppingToRect_(IVar1,param_1,param_2,param_3,param_4);\n }\n return param_5;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10002ee0c" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nID FUN_10002ee0c(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,ID param_5)\n\n{\n ID IVar1;\n undefined8 uVar2;\n undefined8 uVar3;\n double dVar4;\n double dVar5;\n undefined8 uVar6;\n undefined8 uVar7;\n undefined8 uVar8;\n undefined8 uVar9;\n undefined8 local_e0;\n undefined8 uStack_d8;\n undefined8 uStack_d0;\n undefined8 uStack_c8;\n undefined8 local_c0;\n undefined8 uStack_b8;\n undefined8 local_b0;\n undefined8 uStack_a8;\n undefined8 local_a0;\n undefined8 uStack_98;\n undefined8 local_90;\n undefined8 uStack_88;\n undefined8 local_80;\n undefined8 uStack_78;\n undefined8 local_70;\n undefined8 uStack_68;\n undefined8 local_60;\n undefined8 uStack_58;\n \n if ((param_5 != 0) && (IVar1 = param_5, _CGRectIsEmpty(), (IVar1 & 1) == 0)) {\n uVar6 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 8);\n uVar2 = *(undefined8 *)PTR__CGAffineTransformIdentity_1000a8138;\n uVar9 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x18);\n uVar8 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x10);\n uVar7 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x28);\n uVar3 = *(undefined8 *)(PTR__CGAffineTransformIdentity_1000a8138 + 0x20);\n dVar4 = param_1;\n local_80 = uVar2;\n uStack_78 = uVar6;\n local_70 = uVar8;\n uStack_68 = uVar9;\n local_60 = uVar3;\n uStack_58 = uVar7;\n _CGRectGetMinY(param_1,param_2,param_3,param_4);\n dVar5 = param_1;\n _CGRectGetMaxY(param_1,param_2,param_3,param_4);\n local_b0 = uVar2;\n uStack_a8 = uVar6;\n local_a0 = uVar8;\n uStack_98 = uVar9;\n local_90 = uVar3;\n uStack_88 = uVar7;\n _CGAffineTransformTranslate(&local_80,0,dVar4 + dVar5,&local_b0);\n uStack_d8 = uStack_78;\n local_e0 = local_80;\n uStack_c8 = uStack_68;\n uStack_d0 = local_70;\n uStack_b8 = uStack_58;\n local_c0 = local_60;\n _CGAffineTransformScale(&local_b0,0x3ff0000000000000,0xbff0000000000000,&local_e0);\n uStack_68 = uStack_98;\n local_70 = local_a0;\n uStack_58 = uStack_88;\n local_60 = local_90;\n uStack_78 = uStack_a8;\n local_80 = local_b0;\n IVar1 = objc_stub::imageByApplyingTransform_(param_5,&local_b0);\n param_5 = objc_stub::imageByCroppingToRect_(IVar1,param_1,param_2,param_3,param_4);\n }\n return param_5;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_f90a13efef3e41010b8b44cf22ab0ecdc6864b251e23af6c6fb4c0c4f9f1fdc7", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "The direct address list projects exact Ghidra references to one address but does not expose their kinds; procedure_references and analyze_function preserve available kind metadata.", + "Synthetic Ghidra entry-point references without actionable memory sources are omitted.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + "0x1000799e8" + ], + "operation": "xrefs", + "parameters": { + "address": "0x1000a8f58" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + "0x1000799e8" + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_f9c0e9c7e69e78756b7c28011db79a12bb9bae3f5088c55499d15630fa8d6ee8", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nvoid FUN_100043338(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,\n undefined8 param_9,undefined8 param_10,double *param_11,double *param_12,\n double *param_13)\n\n{\n uint uVar1;\n double dVar2;\n bool bVar3;\n bool bVar4;\n bool bVar5;\n uint uVar6;\n uint uVar7;\n double dVar8;\n double dVar9;\n double local_b0;\n double local_a8;\n double local_a0;\n double dStack_98;\n double local_90;\n double local_88;\n \n dStack_98 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_a0 = *(double *)PTR__CGPointZero_1000a8140;\n local_b0 = 0.0;\n local_a8 = 0.0;\n local_90 = local_a0;\n local_88 = dStack_98;\n FUN_100054d78(param_9,&local_90,&local_a8);\n FUN_100054d78(param_10,&local_a0,&local_b0);\n uVar7 = (uint)param_9;\n uVar6 = (uint)param_10;\n if (uVar7 != 0) {\n uVar1 = 0;\n if (2.220446049250313e-16 < local_a8) {\n uVar1 = uVar6;\n }\n bVar3 = false;\n bVar4 = true;\n bVar5 = false;\n if (uVar1 == 1) {\n bVar3 = false;\n bVar4 = false;\n bVar5 = true;\n if (!NAN(local_b0)) {\n bVar3 = local_b0 < 2.220446049250313e-16;\n bVar4 = local_b0 == 2.220446049250313e-16;\n bVar5 = false;\n }\n }\n if (!bVar4 && bVar3 == bVar5) {\n dVar9 = (local_88 * dStack_98 + local_a0 * local_90) / (local_a8 * local_b0);\n dVar8 = 1.0;\n if (dVar9 <= 1.0) {\n dVar8 = dVar9;\n }\n dVar2 = -1.0;\n if (-1.0 <= dVar9) {\n dVar2 = dVar8;\n }\n goto joined_r0x000100043400;\n }\n }\n dVar2 = NAN;\njoined_r0x000100043400:\n if (param_11 != (double *)0x0) {\n dVar8 = local_88;\n if (uVar7 == 0) {\n dVar8 = NAN;\n }\n *param_11 = dVar8;\n }\n if (param_12 != (double *)0x0) {\n dVar8 = dStack_98;\n if (uVar6 == 0) {\n dVar8 = NAN;\n }\n *param_12 = dVar8;\n }\n if (param_13 != (double *)0x0) {\n *param_13 = dVar2;\n }\n if (((uVar7 & uVar6) == 1) &&\n (FUN_1000549d4(param_1,param_2,param_3,param_4,param_5,param_6,param_7), uVar6 != 0)) {\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n _CGRectGetHeight(param_5,param_6,param_7,param_8);\n }\n return;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100043338" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nvoid FUN_100043338(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,\n undefined8 param_9,undefined8 param_10,double *param_11,double *param_12,\n double *param_13)\n\n{\n uint uVar1;\n double dVar2;\n bool bVar3;\n bool bVar4;\n bool bVar5;\n uint uVar6;\n uint uVar7;\n double dVar8;\n double dVar9;\n double local_b0;\n double local_a8;\n double local_a0;\n double dStack_98;\n double local_90;\n double local_88;\n \n dStack_98 = *(double *)(PTR__CGPointZero_1000a8140 + 8);\n local_a0 = *(double *)PTR__CGPointZero_1000a8140;\n local_b0 = 0.0;\n local_a8 = 0.0;\n local_90 = local_a0;\n local_88 = dStack_98;\n FUN_100054d78(param_9,&local_90,&local_a8);\n FUN_100054d78(param_10,&local_a0,&local_b0);\n uVar7 = (uint)param_9;\n uVar6 = (uint)param_10;\n if (uVar7 != 0) {\n uVar1 = 0;\n if (2.220446049250313e-16 < local_a8) {\n uVar1 = uVar6;\n }\n bVar3 = false;\n bVar4 = true;\n bVar5 = false;\n if (uVar1 == 1) {\n bVar3 = false;\n bVar4 = false;\n bVar5 = true;\n if (!NAN(local_b0)) {\n bVar3 = local_b0 < 2.220446049250313e-16;\n bVar4 = local_b0 == 2.220446049250313e-16;\n bVar5 = false;\n }\n }\n if (!bVar4 && bVar3 == bVar5) {\n dVar9 = (local_88 * dStack_98 + local_a0 * local_90) / (local_a8 * local_b0);\n dVar8 = 1.0;\n if (dVar9 <= 1.0) {\n dVar8 = dVar9;\n }\n dVar2 = -1.0;\n if (-1.0 <= dVar9) {\n dVar2 = dVar8;\n }\n goto joined_r0x000100043400;\n }\n }\n dVar2 = NAN;\njoined_r0x000100043400:\n if (param_11 != (double *)0x0) {\n dVar8 = local_88;\n if (uVar7 == 0) {\n dVar8 = NAN;\n }\n *param_11 = dVar8;\n }\n if (param_12 != (double *)0x0) {\n dVar8 = dStack_98;\n if (uVar6 == 0) {\n dVar8 = NAN;\n }\n *param_12 = dVar8;\n }\n if (param_13 != (double *)0x0) {\n *param_13 = dVar2;\n }\n if (((uVar7 & uVar6) == 1) &&\n (FUN_1000549d4(param_1,param_2,param_3,param_4,param_5,param_6,param_7), uVar6 != 0)) {\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n _CGRectGetHeight(param_5,param_6,param_7,param_8);\n }\n return;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_fa2e076ee32cbf3894515a5e2c122049bd11804fab211933a733621ba8041e4b", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Bytes reflect Ghidra's initialized memory, including loader fixups. Reads stop at an unmapped or uninitialized byte and report completeness explicitly.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": { + "address": "0x100086228", + "bytes_hex": "666666666666d63f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "operation": "read_bytes", + "parameters": { + "address": "0x100086228", + "length": 8 + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "address": "0x100086228", + "bytes_hex": "666666666666d63f", + "complete": true, + "requested_bytes": 8, + "returned_bytes": 8 + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_fdc9e7ba7cba32aaf779882b031e0226a9727810a56ebbe3d5e6b7f2d9ae99c0", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nundefined8 FUN_100054d78(ID param_1,double *param_2,double *param_3)\n\n{\n ID IVar1;\n ID self;\n ID self_00;\n ID self_01;\n ID IVar2;\n double extraout_d0;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double dVar3;\n double dVar4;\n double dVar5;\n \n IVar1 = objc_stub::count(param_1);\n if (0x4c < IVar1) {\n IVar1 = objc_stub::objectAtIndexedSubscript_(param_1,0x4c);\n self = objc_stub::objectAtIndexedSubscript_(param_1,0x42);\n self_00 = objc_stub::objectAtIndexedSubscript_(param_1,0x43);\n self_01 = objc_stub::objectAtIndexedSubscript_(param_1,0x44);\n if (IVar1 == 0) {\n return 0;\n }\n if (self == 0) {\n return 0;\n }\n if (self_00 == 0) {\n return 0;\n }\n if (self_01 == 0) {\n return 0;\n }\n IVar2 = objc_stub::count(IVar1);\n if ((((1 < IVar2) && (IVar2 = objc_stub::count(self), 1 < IVar2)) &&\n (IVar2 = objc_stub::count(self_00), 1 < IVar2)) &&\n (IVar2 = objc_stub::count(self_01), 1 < IVar2)) {\n objc_stub::X(IVar1);\n objc_stub::Y(IVar1);\n objc_stub::X(self);\n objc_stub::X(self_00);\n objc_stub::X(self_01);\n objc_stub::Y(self);\n objc_stub::Y(self_00);\n objc_stub::Y(self_01);\n dVar4 = (extraout_d0_01 + extraout_d0_02 * 1.65 + extraout_d0_03) / 3.65 - extraout_d0;\n dVar5 = (extraout_d0_04 + extraout_d0_05 * 1.65 + extraout_d0_06) / 3.65 - extraout_d0_00;\n dVar3 = dVar4;\n _hypot(dVar4,dVar5);\n if (0x7fefffffffffffff < (ulong)ABS(dVar4)) {\n return 0;\n }\n if (0x7fefffffffffffff < (ulong)ABS(dVar5)) {\n return 0;\n }\n if (0x7fefffffffffffff < (ulong)ABS(dVar3)) {\n return 0;\n }\n if (dVar3 <= 0.0008) {\n return 0;\n }\n if (param_2 != (double *)0x0) {\n *param_2 = dVar4;\n param_2[1] = dVar5;\n }\n if (param_3 != (double *)0x0) {\n *param_3 = dVar3;\n }\n return 1;\n }\n }\n return 0;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x100054d78" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [], + "value": "\nundefined8 FUN_100054d78(ID param_1,double *param_2,double *param_3)\n\n{\n ID IVar1;\n ID self;\n ID self_00;\n ID self_01;\n ID IVar2;\n double extraout_d0;\n double extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double dVar3;\n double dVar4;\n double dVar5;\n \n IVar1 = objc_stub::count(param_1);\n if (0x4c < IVar1) {\n IVar1 = objc_stub::objectAtIndexedSubscript_(param_1,0x4c);\n self = objc_stub::objectAtIndexedSubscript_(param_1,0x42);\n self_00 = objc_stub::objectAtIndexedSubscript_(param_1,0x43);\n self_01 = objc_stub::objectAtIndexedSubscript_(param_1,0x44);\n if (IVar1 == 0) {\n return 0;\n }\n if (self == 0) {\n return 0;\n }\n if (self_00 == 0) {\n return 0;\n }\n if (self_01 == 0) {\n return 0;\n }\n IVar2 = objc_stub::count(IVar1);\n if ((((1 < IVar2) && (IVar2 = objc_stub::count(self), 1 < IVar2)) &&\n (IVar2 = objc_stub::count(self_00), 1 < IVar2)) &&\n (IVar2 = objc_stub::count(self_01), 1 < IVar2)) {\n objc_stub::X(IVar1);\n objc_stub::Y(IVar1);\n objc_stub::X(self);\n objc_stub::X(self_00);\n objc_stub::X(self_01);\n objc_stub::Y(self);\n objc_stub::Y(self_00);\n objc_stub::Y(self_01);\n dVar4 = (extraout_d0_01 + extraout_d0_02 * 1.65 + extraout_d0_03) / 3.65 - extraout_d0;\n dVar5 = (extraout_d0_04 + extraout_d0_05 * 1.65 + extraout_d0_06) / 3.65 - extraout_d0_00;\n dVar3 = dVar4;\n _hypot(dVar4,dVar5);\n if (0x7fefffffffffffff < (ulong)ABS(dVar4)) {\n return 0;\n }\n if (0x7fefffffffffffff < (ulong)ABS(dVar5)) {\n return 0;\n }\n if (0x7fefffffffffffff < (ulong)ABS(dVar3)) {\n return 0;\n }\n if (dVar3 <= 0.0008) {\n return 0;\n }\n if (param_2 != (double *)0x0) {\n *param_2 = dVar4;\n param_2[1] = dVar5;\n }\n if (param_3 != (double *)0x0) {\n *param_3 = dVar3;\n }\n return 1;\n }\n }\n return 0;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_fdff6a5ce2d8206a3e6bb15c8839c9595810eb261f4d74a641fe6abc6ef6a3b6", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Pseudocode is Ghidra decompiler output, not original source and not text-equivalent to Hopper output.", + "External functions and functions without an analyzable body return null; other decompiler failures remain explicit.", + "Ghidra Listing reports a terminal call at 0x10001b580 to 0x10007a910 _CGRectContainsPoint (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": "\nID FUN_10001b070(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,ID param_5)\n\n{\n bool bVar1;\n bool bVar2;\n bool bVar3;\n int iVar4;\n ulong uVar5;\n ID IVar6;\n ulong uVar8;\n ulong uVar9;\n ulong uVar10;\n double dVar11;\n ulong extraout_d0;\n ulong extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n undefined8 extraout_d0_09;\n undefined8 extraout_d0_10;\n double extraout_d0_11;\n double extraout_d0_12;\n double extraout_d0_13;\n double extraout_d0_14;\n double extraout_d0_15;\n double extraout_d0_16;\n undefined8 extraout_d0_17;\n undefined8 extraout_d0_18;\n double dVar12;\n double dVar13;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n double local_e0;\n double local_d8;\n double local_d0;\n double local_a0;\n ID IVar7;\n \n uVar5 = objc_stub::count(param_5);\n if ((((0x4c < uVar5) && (_CGRectIsNull(param_1,param_2,param_3,param_4), (uVar5 & 1) == 0)) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (uVar5 & 1) == 0)) &&\n ((dVar11 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar11 &&\n (dVar11 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar11)))) {\n _CGRectStandardize();\n dVar11 = param_1;\n _CGRectGetWidth();\n dVar12 = param_1;\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n if ((2.220446049250313e-16 < dVar11) && (2.220446049250313e-16 < dVar12)) {\n _CGRectInset();\n uVar5 = 0;\n uVar10 = 0;\n uVar9 = 0;\n uVar8 = 0;\n local_e0 = *(double *)PTR__CGPointZero_1000a8140;\n dVar14 = 1.7976931348623157e+308;\n dVar13 = 1.7976931348623157e+308;\n dVar19 = 1.7976931348623157e+308;\n local_a0 = 1.7976931348623157e+308;\n dVar15 = -1.7976931348623157e+308;\n dVar17 = -1.7976931348623157e+308;\n dVar20 = -1.7976931348623157e+308;\n dVar22 = -1.7976931348623157e+308;\n local_d8 = local_e0;\n local_d0 = local_e0;\n do {\n IVar6 = objc_stub::objectAtIndexedSubscript_(param_5,uVar8);\n if (IVar6 == 0) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (0x7fefffffffffffff < (extraout_d0 & 0x7fffffffffffffff)) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (0x7fefffffffffffff < (extraout_d0_00 & 0x7fffffffffffffff)) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_01 < -0.25) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (1.25 < extraout_d0_02) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_03 < -0.25) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (1.25 < extraout_d0_04) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_05 <= dVar14) {\n dVar14 = extraout_d0_05;\n }\n objc_stub::X(IVar6);\n dVar16 = extraout_d0_06;\n if (extraout_d0_06 <= dVar15) {\n dVar16 = dVar15;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_07 <= dVar13) {\n dVar13 = extraout_d0_07;\n }\n objc_stub::Y(IVar6);\n dVar21 = extraout_d0_08;\n if (extraout_d0_08 <= dVar20) {\n dVar21 = dVar20;\n }\n dVar18 = dVar17;\n dVar23 = dVar22;\n if ((0x3a < uVar8) && (uVar8 != 0x4c)) {\n objc_stub::X(IVar6);\n IVar7 = objc_stub::Y(IVar6);\n iVar4 = (int)IVar7;\n _CGRectContainsPoint(param_1,param_2,param_3,param_4,extraout_d0_09,extraout_d0_10);\n if (iVar4 == 0) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_11 <= dVar19) {\n dVar19 = extraout_d0_11;\n }\n objc_stub::X(IVar6);\n dVar23 = extraout_d0_12;\n if (extraout_d0_12 <= dVar22) {\n dVar23 = dVar22;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_13 <= local_a0) {\n local_a0 = extraout_d0_13;\n }\n objc_stub::Y(IVar6);\n dVar18 = extraout_d0_14;\n if (extraout_d0_14 <= dVar17) {\n dVar18 = dVar17;\n }\n if (uVar8 < 0x45) {\n objc_stub::X(IVar6);\n objc_stub::Y(IVar6);\n if (uVar8 < 0x42) {\n local_d8 = local_d8 + extraout_d0_16;\n uVar10 = uVar10 + 1;\n }\n else {\n local_e0 = local_e0 + extraout_d0_16;\n uVar9 = uVar9 + 1;\n }\n }\n else {\n objc_stub::X(IVar6);\n local_d0 = local_d0 + extraout_d0_15;\n objc_stub::Y(IVar6);\n uVar5 = uVar5 + 1;\n }\n }\n uVar8 = uVar8 + 1;\n dVar15 = dVar16;\n dVar17 = dVar18;\n dVar20 = dVar21;\n dVar22 = dVar23;\n } while (uVar8 != 0x4d);\n if (((((dVar11 * 0.25 <= dVar16 - dVar14) && (dVar12 * 0.25 <= dVar21 - dVar13)) &&\n (dVar11 * 0.2 <= dVar23 - dVar19)) &&\n (((dVar12 * 0.04 <= dVar18 - local_a0 && (dVar23 - dVar19 <= dVar11 * 1.85)) &&\n ((dVar18 - local_a0 <= dVar12 * 1.85 && ((uVar5 != 0 && (uVar10 != 0)))))))) &&\n (uVar9 != 0)) {\n local_d0 = local_d0 / (double)uVar5;\n local_d8 = local_d8 / (double)uVar10;\n if (dVar11 * 0.12 <= ABS(local_d0 - local_d8)) {\n dVar12 = local_d8;\n if (local_d8 <= local_d0) {\n dVar12 = local_d0;\n }\n dVar12 = dVar12 + dVar11 * 0.35;\n local_e0 = local_e0 / (double)uVar9;\n if (local_d8 <= local_d0) {\n local_d0 = local_d8;\n }\n bVar1 = false;\n bVar2 = false;\n bVar3 = false;\n if (local_d0 + -dVar11 * 0.35 <= local_e0) {\n bVar1 = false;\n bVar2 = false;\n bVar3 = true;\n if (!NAN(local_e0) && !NAN(dVar12)) {\n bVar1 = local_e0 < dVar12;\n bVar2 = local_e0 == dVar12;\n bVar3 = false;\n }\n }\n if ((bVar2 || bVar1 != bVar3) &&\n (IVar6 = objc_stub::objectAtIndexedSubscript_(param_5,0x4c), IVar6 != 0)) {\n objc_stub::X(IVar6);\n IVar6 = objc_stub::Y(IVar6);\n _CGRectContainsPoint(param_1,param_2,param_3,param_4,extraout_d0_17,extraout_d0_18);\n return IVar6;\n }\n }\n }\n }\n }\n return 0;\n}\n\n", + "operation": "procedure_pseudo_code", + "parameters": { + "procedure": "0x10001b070" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": { + "limitations": [ + "Ghidra Listing reports a terminal call at 0x10001b580 to 0x10007a910 _CGRectContainsPoint (external=false, thunk=true, hasNoReturn=false); fallthrough is excluded by Ghidra's flow model. The reason for the terminal flow is not established by this observation." + ], + "value": "\nID FUN_10001b070(double param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,ID param_5)\n\n{\n bool bVar1;\n bool bVar2;\n bool bVar3;\n int iVar4;\n ulong uVar5;\n ID IVar6;\n ulong uVar8;\n ulong uVar9;\n ulong uVar10;\n double dVar11;\n ulong extraout_d0;\n ulong extraout_d0_00;\n double extraout_d0_01;\n double extraout_d0_02;\n double extraout_d0_03;\n double extraout_d0_04;\n double extraout_d0_05;\n double extraout_d0_06;\n double extraout_d0_07;\n double extraout_d0_08;\n undefined8 extraout_d0_09;\n undefined8 extraout_d0_10;\n double extraout_d0_11;\n double extraout_d0_12;\n double extraout_d0_13;\n double extraout_d0_14;\n double extraout_d0_15;\n double extraout_d0_16;\n undefined8 extraout_d0_17;\n undefined8 extraout_d0_18;\n double dVar12;\n double dVar13;\n double dVar14;\n double dVar15;\n double dVar16;\n double dVar17;\n double dVar18;\n double dVar19;\n double dVar20;\n double dVar21;\n double dVar22;\n double dVar23;\n double local_e0;\n double local_d8;\n double local_d0;\n double local_a0;\n ID IVar7;\n \n uVar5 = objc_stub::count(param_5);\n if ((((0x4c < uVar5) && (_CGRectIsNull(param_1,param_2,param_3,param_4), (uVar5 & 1) == 0)) &&\n (_CGRectIsEmpty(param_1,param_2,param_3,param_4), (uVar5 & 1) == 0)) &&\n ((dVar11 = param_1, _CGRectGetWidth(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar11 &&\n (dVar11 = param_1, _CGRectGetHeight(param_1,param_2,param_3,param_4),\n 2.220446049250313e-16 < dVar11)))) {\n _CGRectStandardize();\n dVar11 = param_1;\n _CGRectGetWidth();\n dVar12 = param_1;\n _CGRectGetHeight(param_1,param_2,param_3,param_4);\n if ((2.220446049250313e-16 < dVar11) && (2.220446049250313e-16 < dVar12)) {\n _CGRectInset();\n uVar5 = 0;\n uVar10 = 0;\n uVar9 = 0;\n uVar8 = 0;\n local_e0 = *(double *)PTR__CGPointZero_1000a8140;\n dVar14 = 1.7976931348623157e+308;\n dVar13 = 1.7976931348623157e+308;\n dVar19 = 1.7976931348623157e+308;\n local_a0 = 1.7976931348623157e+308;\n dVar15 = -1.7976931348623157e+308;\n dVar17 = -1.7976931348623157e+308;\n dVar20 = -1.7976931348623157e+308;\n dVar22 = -1.7976931348623157e+308;\n local_d8 = local_e0;\n local_d0 = local_e0;\n do {\n IVar6 = objc_stub::objectAtIndexedSubscript_(param_5,uVar8);\n if (IVar6 == 0) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (0x7fefffffffffffff < (extraout_d0 & 0x7fffffffffffffff)) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (0x7fefffffffffffff < (extraout_d0_00 & 0x7fffffffffffffff)) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_01 < -0.25) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (1.25 < extraout_d0_02) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_03 < -0.25) {\n return 0;\n }\n objc_stub::Y(IVar6);\n if (1.25 < extraout_d0_04) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_05 <= dVar14) {\n dVar14 = extraout_d0_05;\n }\n objc_stub::X(IVar6);\n dVar16 = extraout_d0_06;\n if (extraout_d0_06 <= dVar15) {\n dVar16 = dVar15;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_07 <= dVar13) {\n dVar13 = extraout_d0_07;\n }\n objc_stub::Y(IVar6);\n dVar21 = extraout_d0_08;\n if (extraout_d0_08 <= dVar20) {\n dVar21 = dVar20;\n }\n dVar18 = dVar17;\n dVar23 = dVar22;\n if ((0x3a < uVar8) && (uVar8 != 0x4c)) {\n objc_stub::X(IVar6);\n IVar7 = objc_stub::Y(IVar6);\n iVar4 = (int)IVar7;\n _CGRectContainsPoint(param_1,param_2,param_3,param_4,extraout_d0_09,extraout_d0_10);\n if (iVar4 == 0) {\n return 0;\n }\n objc_stub::X(IVar6);\n if (extraout_d0_11 <= dVar19) {\n dVar19 = extraout_d0_11;\n }\n objc_stub::X(IVar6);\n dVar23 = extraout_d0_12;\n if (extraout_d0_12 <= dVar22) {\n dVar23 = dVar22;\n }\n objc_stub::Y(IVar6);\n if (extraout_d0_13 <= local_a0) {\n local_a0 = extraout_d0_13;\n }\n objc_stub::Y(IVar6);\n dVar18 = extraout_d0_14;\n if (extraout_d0_14 <= dVar17) {\n dVar18 = dVar17;\n }\n if (uVar8 < 0x45) {\n objc_stub::X(IVar6);\n objc_stub::Y(IVar6);\n if (uVar8 < 0x42) {\n local_d8 = local_d8 + extraout_d0_16;\n uVar10 = uVar10 + 1;\n }\n else {\n local_e0 = local_e0 + extraout_d0_16;\n uVar9 = uVar9 + 1;\n }\n }\n else {\n objc_stub::X(IVar6);\n local_d0 = local_d0 + extraout_d0_15;\n objc_stub::Y(IVar6);\n uVar5 = uVar5 + 1;\n }\n }\n uVar8 = uVar8 + 1;\n dVar15 = dVar16;\n dVar17 = dVar18;\n dVar20 = dVar21;\n dVar22 = dVar23;\n } while (uVar8 != 0x4d);\n if (((((dVar11 * 0.25 <= dVar16 - dVar14) && (dVar12 * 0.25 <= dVar21 - dVar13)) &&\n (dVar11 * 0.2 <= dVar23 - dVar19)) &&\n (((dVar12 * 0.04 <= dVar18 - local_a0 && (dVar23 - dVar19 <= dVar11 * 1.85)) &&\n ((dVar18 - local_a0 <= dVar12 * 1.85 && ((uVar5 != 0 && (uVar10 != 0)))))))) &&\n (uVar9 != 0)) {\n local_d0 = local_d0 / (double)uVar5;\n local_d8 = local_d8 / (double)uVar10;\n if (dVar11 * 0.12 <= ABS(local_d0 - local_d8)) {\n dVar12 = local_d8;\n if (local_d8 <= local_d0) {\n dVar12 = local_d0;\n }\n dVar12 = dVar12 + dVar11 * 0.35;\n local_e0 = local_e0 / (double)uVar9;\n if (local_d8 <= local_d0) {\n local_d0 = local_d8;\n }\n bVar1 = false;\n bVar2 = false;\n bVar3 = false;\n if (local_d0 + -dVar11 * 0.35 <= local_e0) {\n bVar1 = false;\n bVar2 = false;\n bVar3 = true;\n if (!NAN(local_e0) && !NAN(dVar12)) {\n bVar1 = local_e0 < dVar12;\n bVar2 = local_e0 == dVar12;\n bVar3 = false;\n }\n }\n if ((bVar2 || bVar1 != bVar3) &&\n (IVar6 = objc_stub::objectAtIndexedSubscript_(param_5,0x4c), IVar6 != 0)) {\n objc_stub::X(IVar6);\n IVar6 = objc_stub::Y(IVar6);\n _CGRectContainsPoint(param_1,param_2,param_3,param_4,extraout_d0_17,extraout_d0_18);\n return IVar6;\n }\n }\n }\n }\n }\n return 0;\n}\n\n" + }, + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + }, + { + "analysis_profile": { + "digest": "20565088524a2d0359b9b96f46ac48e679d774c7b0092c56abc06de8fdbec11c", + "parameters": { + "analyzer_preset": "ghidra-default", + "annotation_policy": "atomic-function-entry-metadata-v1", + "architecture": "arm64", + "available_architectures": [ + "arm64" + ], + "compiler_spec_id": "auto-default", + "decompiler_jump_loads": true, + "function_body_evidence": "complete-inclusive-ranges-v1", + "function_boundary_observations": "ghidra-terminal-call-limitations-v1", + "function_references": "complete-body-and-entry-reference-manager-v2", + "import_mode": "ephemeral-source-immutable", + "instruction_flow_evidence": "decoded-return-pcode-v1", + "jump_table_evidence": "typed-case-default-blocks-v1", + "language_id": "auto-from-header", + "load_image_observations": "source-mappings-entry-context-v2", + "loader": "auto-from-header", + "location_resolution": "explicit-address-exact-entry-symbol-first-v3", + "no_return_repair": "returning-imports-decoded-return-v2", + "process_launch": "inspected-jvm-launch-support-v1", + "string_inventory_evidence": "defined-data-coverage-v1", + "target_format": "mach-o", + "target_kind": "executable" + }, + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + } + }, + "authority": "shipped-artifact", + "confidence": "observed", + "environment": null, + "evidence_id": "ev_ffd2c726d25e486ca8fc5efedbef3bb05109eb27699557be08d44ef8e777414e", + "evidence_links": [], + "limitations": [ + "The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.", + "The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.", + "Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.", + "Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.", + "Regex mode uses Java Pattern semantics. Matcher or compiler stack exhaustion returns a resource constraint without closing the session; literal mode avoids regex recursion and returns complete matching values.", + "macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state." + ], + "locations": [], + "normalized_result": [ + { + "address": "0x10000ab00", + "value": "MSSSkinControlPanelView::initWithFrame:apiManager:pluginHost:" + } + ], + "operation": "search_procedures", + "parameters": { + "case_sensitive": false, + "mode": "literal", + "pattern": "MSSSkinControlPanelView::init" + }, + "predicate_type": "rea.analysis", + "provider": { + "id": "ghidra", + "name": "Ghidra", + "version": "12.1.4" + }, + "raw_result": [ + { + "address": "0x10000ab00", + "value": "MSSSkinControlPanelView::initWithFrame:apiManager:pluginHost:" + } + ], + "subject": { + "architecture": "arm64", + "digest": { + "sha256": "afc71d0d21fd3c1ca95ca745ddafcd729e36ad95f17d8638009f2e45d9b7e8df" + }, + "format": "mach-o", + "local_path": "/Users/dayu/Documents/PaintFCP/build/body-analysis/MSE18V2-arm64", + "name": "MSE18V2-arm64" + } + } + ], + "scope": "2.4.0 additional static helpers and ABI checks for the tracking implementation. No target execution." +} diff --git a/docs/analysis/跟踪闪烁对齐分析.md b/docs/analysis/跟踪闪烁对齐分析.md index 0d78aed..e300111 100644 --- a/docs/analysis/跟踪闪烁对齐分析.md +++ b/docs/analysis/跟踪闪烁对齐分析.md @@ -94,3 +94,10 @@ build/tracking-diagnostics/inspect-sequence '/绝对路径/源素材.mov' \ 分析与连续帧诊断的可恢复节点为 `a0c5357efd87a63dbee6269d9335e6aa3ba78799`,已推送并读回双远端。从 GitHub 匿名独立克隆核对284个文件的字节/blob/执行位、strict/full fsck,并重新构建合成诊断、逐项复现保存的JSON;产品源码与v1.3.2相同,无LFS/子模块。见[恢复回执](tracking-flicker-20261022/recovery.json)。后续main仅补充恢复说明,不改变已安装版或历史标签。 + + +## 2.4.0 对齐实施中(2026-10-22) + +用户已要求实施。新增静态证据见 `tracking-flicker-20261022/implementation-evidence.json`。补核对检测长边默认960(0x1000bd1f8),失败/空结果/不足76点时使用RGBA CGImage重试;下巴轴为点66、67、68按1:1.65:1加权减脸框中心,并非眼轴。接纳分支仍为原样复制合格点。新代码已加入对应检测、连续框、质量门槛、下巴轴/中位数/P90保护和保持重映射,反向/模式变化重置对象跟踪,同帧检测和几何复用。 + +同一草帽素材1920解码、25fps离线重跑469帧:连续框469帧可用,检测/完整76/结构/置信均合格,held为0。输出轮廓步幅P95为0.03344、峰值0.06458;旧输出P95为0.02872、峰值0.05240。两者包含真实动作,不能把更大的输出步幅称为闪烁改善,也不能用合成坏点测试代替此片段的最终视觉验收。实施继续追查关键点后的变形路径;尚未发布或替换已安装版。完整实拍点阵/帧不入仓,仅保留标量摘要。 diff --git a/scripts/inspect-tracking-sequence.m b/scripts/inspect-tracking-sequence.m index 9fb007e..1a4a806 100644 --- a/scripts/inspect-tracking-sequence.m +++ b/scripts/inspect-tracking-sequence.m @@ -68,7 +68,7 @@ int main(int argc,const char *argv[]) {@autoreleasepool { NSMutableArray *raw=[NSMutableArray new],*faces=[NSMutableArray new]; for(VNFaceObservation *face in observations)if(PGValidRect(face.boundingBox)&&raw.count<16){[raw addObject:PGGeometry(face)];[faces addObject:face];} CMTime time=CMTimeAdd(CMTimeMake(frame,fps),CMTimeMakeWithSeconds(offset,60000)); - NSDictionary *r=[tracker resultForGeometry:raw settings:settings time:time extent:image.extent]; + NSDictionary *r=[tracker resultForGeometry:raw settings:settings time:time extent:image.extent image:image]; NSInteger index=[r[@"index"] integerValue];NSDictionary *current=(index>=0&&(NSUInteger)index=0&&(NSUInteger)index