; ModuleID = '/tmp/a.ll' source_filename = "../../third_party/skia/src/gpu/ganesh/text/GrTextBlob.cpp" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %0 = type { i32, i32, float, float, i32, %1, i32, %2, i8, i8, i8, i8 } %1 = type { float, i32 } %2 = type { [9 x float], i32 } %3 = type { i8 } %4 = type { %5 } %5 = type { float, float } %6 = type { %7 } %7 = type { i8* } %8 = type { i32 } %9 = type { %10 } %10 = type { %11 } %11 = type { i8*, i32, %12 } %12 = type { i32 } %13 = type <{ %14, %2, i8, [3 x i8] }> %14 = type { [16 x float] } %15 = type { i32 (...)**, %16 } %16 = type { %17 } %17 = type { %18 } %18 = type { %15* } %19 = type { %20, [4 x i8] } %20 = type { %21 } %21 = type <{ i32 (...)**, %22 }> %22 = type { %23 } %23 = type { %24 } %24 = type { %25 } %25 = type { %26 } %26 = type { i32 } %27 = type <{ i8*, i8*, i8*, %28, i32, [4 x i8], %40*, i32, [4 x i8], void (%38*, %27*)**, i32, [4 x i8], %51, i8, [7 x i8] }> %28 = type { %29 } %29 = type { i32, i32, %30 } %30 = type { %31 } %31 = type { %32 } %32 = type { %33 } %33 = type { %34* } %34 = type { i32, %35 } %35 = type { %36 } %36 = type { %37 } %37 = type { i32, void (%38*, %27*)* } %38 = type { %39* } %39 = type { %20, [4 x i8] } %40 = type { %41* } %41 = type <{ %42, i32, %43, %44, %45, i8, [6 x i8] }> %42 = type { %20, %22 } %43 = type { i32 } %44 = type { float, float, float, float } %45 = type { %46 } %46 = type { %47 } %47 = type { %48 } %48 = type { %49 } %49 = type { %50 } %50 = type { i8 } %51 = type { void (%52*, i8*, i64, i8*)*, i8*, void (%58*, i8*, i64, i8*)*, i8*, void (%40*, i8*, i64, i8*)*, i8* } %52 = type { %53* } %53 = type <{ %20, i32, %54, [7 x i8] }> %54 = type { %55 } %55 = type { %56 } %56 = type { %57 } %57 = type { i8 } %58 = type { %59* } %59 = type <{ %20, [4 x i8], %60, i32, [4 x i8] }> %60 = type { %61, %67 } %61 = type { %62, i32, i32 } %62 = type { %63* } %63 = type <{ %64, i32, i32, %65, %66, %65, %66, %45, [3 x i8] }> %64 = type { %22 } %65 = type { float, float, float, float, float, float, float } %66 = type { [3 x [3 x float]] } %67 = type { i32, i32 } %68 = type { %69 } %69 = type { %70 } %70 = type { %71 } %71 = type { %72* } %72 = type opaque %73 = type <{ %74, %77, %79, %81, %83, %85, %87, float, float, %88, [4 x i8] }> %74 = type { %75* } %75 = type { %76, [4 x i8] } %76 = type { %20 } %77 = type { %78* } %78 = type { %76, [4 x i8] } %79 = type { %80* } %80 = type { %76, [4 x i8] } %81 = type { %82* } %82 = type { %76, [4 x i8] } %83 = type { %84* } %84 = type { %76, [4 x i8] } %85 = type { %86* } %86 = type { %76, [4 x i8] } %87 = type { float, float, float, float } %88 = type { %89 } %89 = type { i32 } %90 = type { float, float, float, i32 } %91 = type { i8* (i8*)*, void (i8*)*, i8, %92* } %92 = type { i32 (...)**, i8* } %93 = type { float, float, float, float } %94 = type { %95 } %95 = type { i8* } %96 = type { %97 } %97 = type { %98* } %98 = type { i16, i16, i16, i16, i8*, %99*, %114*, float, float, i8, i16, %117 } %99 = type <{ %100*, %101, i8, i8, [6 x i8] }> %100 = type { %100*, [2 x float], [2 x float] } %101 = type <{ %102, i32, %46, %46, i8, i8 }> %102 = type { %103* } %103 = type <{ %104, %44, [4 x i8], %105, %106, %107, i32, [4 x i8], %108, i8, i8, i8, i8, i8, i8, i8, i8 }> %104 = type { %22 } %105 = type { %5*, i32, i32 } %106 = type { i8*, i32, i32 } %107 = type { float*, i32, i32 } %108 = type { %109, %112 } %109 = type { %110 } %110 = type { %22, %45, %111* } %111 = type opaque %112 = type { %113**, i32, i32 } %113 = type { %20, %54, [3 x i8] } %114 = type <{ %100*, %115, i8, [7 x i8] }> %115 = type { %116* } %116 = type { %76, i32 } %117 = type { i32 } %118 = type { %44 } %119 = type { i8 } %120 = type { %5*, i64 } %121 = type { i16*, i64 } %122 = type { %123 } %123 = type <{ %124, %125, [4 x i8] }> %124 = type { %101* } %125 = type { %126 } %126 = type { i32 } %127 = type <{ %128*, [124 x i8], [4 x i8] }> %128 = type { i32, i32, i32 } %129 = type { %5*, i64 } %130 = type { i16*, i64 } %131 = type { %116**, i64 } %132 = type { %133* } %133 = type <{ %20, [4 x i8], %134, %135, %136*, %133*, %133*, %144, %174, i64, i8, [7 x i8] }> %134 = type { i32 (...)** } %135 = type { %127, %79, %74, %40 } %136 = type { %137, %109, %133*, %133*, %138, i64, i64, i32, i32 } %137 = type { i32 (...)** } %138 = type { i32, i32, %139 } %139 = type { %140 } %140 = type { %141 } %141 = type { %142 } %142 = type { %143* } %143 = type opaque %144 = type { %145, %153, %154, %109, %156, %168, %172 } %145 = type { %146 } %146 = type { %147 } %147 = type { %148* } %148 = type { i32 (...)**, %149, %40, %74, %79, i8, %150 } %149 = type { i32, float, float, float, [2 x [2 x float]], float, float, i32, i32, i8, i8, i8, i8, i8, i8, i16 } %150 = type { %151, i8*, i8*, i8* } %151 = type { %152* } %152 = type { %20, [8 x [256 x i8]], i8, [3 x i8] } %153 = type { i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float } %154 = type { %5, %155, %155 } %155 = type { i32, i32 } %156 = type { %157 } %157 = type { i32, i32, %158 } %158 = type { %159 } %159 = type { %160 } %160 = type { %161 } %161 = type { %162* } %162 = type { i32, %163 } %163 = type { %164 } %164 = type { %165 } %165 = type { %117, %166 } %166 = type { %167, i16, i16, i16, i16 } %167 = type { i24 } %168 = type { %169 } %169 = type { %98**, %98**, %170 } %170 = type { %171 } %171 = type { %98** } %172 = type <{ i8*, i8*, i8*, %173, [4 x i8] }> %173 = type { i32 } %174 = type { %175 } %175 = type { %176 } %176 = type { %177* } %177 = type { i32 (...)** } %178 = type <{ %179, [4 x i8], %180, %178*, %178*, %10, %181, i32, %2, i32, %0, i8, [3 x i8] }> %179 = type { %20 } %180 = type { i32 (...)** } %181 = type { %16, %16* } %182 = type opaque %183 = type { %184 } %184 = type { %3, %185 } %185 = type { %0 } %186 = type { %187, %197*, %44, %5, %204* } %187 = type { %188*, i64 } %188 = type { %189, %194, %195, %120, %196 } %189 = type { %190, i64 } %190 = type { %191 } %191 = type { %192, %193 } %192 = type { i16* } %193 = type { %5* } %194 = type { i8*, i64 } %195 = type { i32*, i64 } %196 = type <{ %40, float, float, float, i8, i8, i8, i8 }> %197 = type { %198, %44, i32, %199 } %198 = type { %22 } %199 = type { %200 } %200 = type { %201 } %201 = type { %202 } %202 = type { %203 } %203 = type { i32 } %204 = type { i32, %205, i32, %205, %209, %213, %221 } %205 = type { %206 } %206 = type { %207 } %207 = type { %208 } %208 = type { %5* } %209 = type { %210 } %210 = type { %188*, %188*, %211 } %211 = type { %212 } %212 = type { %188* } %213 = type { %214, [7 x i8] } %214 = type { %215 } %215 = type { %216 } %216 = type { %217 } %217 = type { %218 } %218 = type { %219 } %219 = type <{ %220, i8 }> %220 = type { %186 } %221 = type { %222 } %222 = type { i16*, i16*, %223 } %223 = type { %224 } %224 = type { i16* } %225 = type { i32, i32 } %226 = type { %62, %227, i32, i32 } %227 = type { %228* } %228 = type { %20, %229 } %229 = type { %230, %65, %65, [9 x float] } %230 = type { i8, i8, i8, i8, i8 } %231 = type <{ float, float, i8, [3 x i8] }> %232 = type { %233, [4 x i8] } %233 = type { %76 } %234 = type { i8 } %235 = type { i8 } %236 = type { i8 } %237 = type { i8 } %238 = type { %239 } %239 = type { %3, %4 } %240 = type { %178* } %241 = type { %225, %225, i32, i32, %137*, %242 } %242 = type { %243, %248 } %243 = type { i64, i64, i64, %244, %205 } %244 = type { %245 } %245 = type { %246 } %246 = type { %247 } %247 = type { %96* } %248 = type { %189, i64, %249, %249, %252, %257, %260 } %249 = type { %250 } %250 = type { %251, %8 } %251 = type { i32 } %252 = type { %253, i64 } %253 = type { %254 } %254 = type { %255, %256 } %255 = type { i16* } %256 = type { %5* } %257 = type { %258, %259 } %258 = type { [8 x i8] } %259 = type { i16*, i64 } %260 = type { %261, %262 } %261 = type { [32 x i8] } %262 = type { %5*, i64 } %263 = type { %264 } %264 = type { %6, %8, %9 } %265 = type { i8 } %266 = type { i8 } %267 = type { %15* } %268 = type { i32 (...)**, [384 x i64], %269, %271*, %284, %225, i32, %285, %289*, %290, i32, %44, %291 } %269 = type { i8*, i8*, %270*, %270*, i64, i8*, i32, i32 } %270 = type opaque %271 = type <{ %272, %276*, %278, %14, i32, [4 x i8] }> %272 = type { %273 } %273 = type { %274 } %274 = type { %275* } %275 = type <{ %284, %83, %73, i8, [7 x i8] }> %276 = type <{ %20, %277, [3 x i8], %60, %225, %14, %14, i8, [7 x i8] }> %277 = type <{ %14, %2, i8 }> %278 = type { %279 } %279 = type { %280 } %280 = type { %281* } %281 = type { %282, %155 } %282 = type { %283* } %283 = type { %20, %225, %290, i32 } %284 = type { %276* } %285 = type { %286 } %286 = type { %287 } %287 = type { %288* } %288 = type { i32 (...)** } %289 = type opaque %290 = type { i32, i32, i32, i32 } %291 = type { %292 } %292 = type { %293 } %293 = type { %204* } %294 = type { i32 (...)** } %295 = type { %296, %225, i8, i8, %241 } %296 = type <{ %297, %527, i8 }> %297 = type { %298, %526 } %298 = type { i32 (...)**, %299*, %526, %226 } %299 = type { %300, %328, %329, %369, %376, %523 } %300 = type <{ %301, %327 }> %301 = type { %20, %302 } %302 = type { %303* } %303 = type <{ %304, i32, %305, i32, [4 x i8], %310, %317, %321, %325, %54, [7 x i8] }> %304 = type { %22 } %305 = type <{ i8, [3 x i8], i32, i32, i32, %306*, i8, i8, i8, i8, i8, [3 x i8], i64, float, float, i32, i8, [3 x i8], i32, i32, i8, i8, [2 x i8], i32, %307*, i32, [4 x i8], %308*, i32, i32, i8, i8, i8, i8, i8, %309, [4 x i8] }> %306 = type opaque %307 = type { i32 (...)** } %308 = type { i32 (...)** } %309 = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 } %310 = type { %311* } %311 = type { %20, %312, i48, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, %309, i8 } %312 = type { %313 } %313 = type { %314 } %314 = type { %315* } %315 = type <{ %316, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8], i8*, i8*, i8*, i8*, i32, [4 x i8] }> %316 = type <{ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8], i8*, i8*, i8*, i8*, i8*, i32 }> %317 = type { %318 } %318 = type { %319 } %319 = type { %320* } %320 = type opaque %321 = type { %322 } %322 = type { %323 } %323 = type { %324* } %324 = type opaque %325 = type { %326* } %326 = type opaque %327 = type { i8 } %328 = type { i8 } %329 = type { %330 } %330 = type { %331 } %331 = type { %332* } %332 = type <{ %333, %341, %351, %362, %368, i32, i8, [3 x i8] }> %333 = type { %334*, i64 } %334 = type { %335 } %335 = type { %336 } %336 = type { %337* } %337 = type <{ %338, %368, %44, i32, i32, i32, [4 x i8] }> %338 = type { %339 } %339 = type { %340* } %340 = type <{ i32, %22, [1 x i8], [3 x i8] }> %341 = type { %342 } %342 = type { i32, i32, %343 } %343 = type { %344 } %344 = type { %345 } %345 = type { %346 } %346 = type { %347* } %347 = type { i32, %348 } %348 = type { %349 } %349 = type { %350 } %350 = type { i32, i32 } %351 = type { %352 } %352 = type { i32, i32, %353 } %353 = type { %354 } %354 = type { %355 } %355 = type { %356 } %356 = type { %357* } %357 = type { i32, %358 } %358 = type { %359 } %359 = type { %360 } %360 = type { i32, %361* } %361 = type { %337**, i64 } %362 = type { %363*, i64 } %363 = type { %364 } %364 = type { %365 } %365 = type { %366* } %366 = type <{ %44, %361, %367, [4 x i8] }> %367 = type { i32 } %368 = type { %338*, i64 } %369 = type { i8, %370, %373 } %370 = type { %371 } %371 = type { %372 } %372 = type { %172* } %373 = type { %374 } %374 = type { %375 } %375 = type { %10* } %376 = type { %377 } %377 = type { %378 } %378 = type { %379* } %379 = type { %299*, %380, %391, %461*, %496, %498, %499, %509, %511, i8, i8, %513, %515 } %380 = type { %381* } %381 = type <{ %382, [4 x i8], %383, i32, [4 x i8] }> %382 = type { i32 } %383 = type { %384 } %384 = type { %385 } %385 = type { %386* } %386 = type <{ %387, i8, [7 x i8] }> %387 = type { %388* } %388 = type { %389, %390, i8*, i64 } %389 = type { i32 (...)** } %390 = type { i32 } %391 = type { %392*, i64 } %392 = type { %393* } %393 = type { %20, %393*, %393*, %394, %442, i32, i32, %457, %457, %460* } %394 = type { %395, %396 } %395 = type { [8 x i8] } %396 = type { %397*, i64 } %397 = type { %398* } %398 = type { i32 (...)**, %399, %400, i32, [4 x i8], %419, %67, i32, i8, i32, %367, %423, i8, i8, i8, i8, i32, %431, %437 } %399 = type { %22 } %400 = type { %401* } %401 = type { %402, %67, i32, i8, %416 } %402 = type { i32 (...)**, %403, i32, i32, %404, %406, %410, %414*, i64, i8, i8, %415, %431 } %403 = type { %22, %22 } %404 = type { %405 } %405 = type { i64 } %406 = type { %407 } %407 = type { %408 } %408 = type <{ i32*, %409, [4 x i8] }> %409 = type { [7 x i32] } %410 = type { %407, %411, i8* } %411 = type { %412* } %412 = type { %413, void (i8*, i8*)*, i8*, i8*, i64 } %413 = type { %22 } %414 = type opaque %415 = type { i32 } %416 = type { %417* } %417 = type <{ %418, [4 x i8], void (i8*)*, void (i8*, i1)*, i8*, i8, [7 x i8] }> %418 = type { %22 } %419 = type { i32, i8, %420, i32, [4 x i8] } %420 = type { %421 } %421 = type { i32, [4 x i8], %422 } %422 = type <{ i32, [4 x i8], i64, i32, i32, i32, i32, i32, i32, i32, [4 x i8] }> %423 = type { %424 } %424 = type { %425, %426, %91* } %425 = type { i8*, [8 x i8] } %426 = type { void (%427*, %425*, %428*, %429*)* } %427 = type <{ %400, i32, i8, [3 x i8] }> %428 = type opaque %429 = type { %67, i32, i8, i8, i32, %419*, i32, i8, i8, %430 } %430 = type { i8*, i64 } %431 = type { %432 } %432 = type { %433 } %433 = type { %434 } %434 = type { %435 } %435 = type { %436 } %436 = type { i8*, i64, i64 } %437 = type { %438 } %438 = type { %439 } %439 = type { %440 } %440 = type { %441 } %441 = type { i64 } %442 = type { %443**, i64 } %443 = type { i32 (...)**, i8, i32, i8, i8, %410, %444*, %453, %398 } %444 = type { %445, %452* } %445 = type { %446 } %446 = type { i32, i32, %447 } %447 = type { %448 } %448 = type { %449 } %449 = type { %450 } %450 = type { %451* } %451 = type opaque %452 = type <{ %301, %327, [7 x i8] }> %453 = type { %454 } %454 = type { %455 } %455 = type { %456* } %456 = type opaque %457 = type { %458, %459 } %458 = type { [8 x i8] } %459 = type { %393**, i64 } %460 = type opaque %461 = type { %393, %332*, i8, %462, i32, i32, %463, i32, i8, i8, i32, %290, i32, i32, %464, %492, %495, %44, %290 } %462 = type { i16 } %463 = type { [4 x float] } %464 = type { %465, %466 } %465 = type { [2000 x i8] } %466 = type { %467*, i64 } %467 = type { %468, %473, [4 x i8], %474, %475*, %44 } %468 = type { %469, %472* } %469 = type { %470 } %470 = type { %471 } %471 = type { %472* } %472 = type { i32 (...)**, %469, %472*, i16, i16, i32, %44 } %473 = type { i16, [2 x i8] } %474 = type { %526, %155, i32, [4 x i8] } %475 = type { %476, %483 } %476 = type <{ %477, %478, i32, [4 x i8] }> %477 = type { %67, %290 } %478 = type { i8, %479 } %479 = type { i32, %480 } %480 = type { %481*, [8 x i8] } %481 = type { %482, [8 x %290] } %482 = type { i32 } %483 = type { %484 } %484 = type { %485 } %485 = type { %486* } %486 = type <{ %487, [4 x i8], %488, %486*, i32, %491, [4 x i8] }> %487 = type <{ i32 (...)**, i32 }> %488 = type { %489, %490 } %489 = type { [8 x i8] } %490 = type { %483*, i64 } %491 = type <{ i32, i8, [3 x i8] }> %492 = type { %493* } %493 = type { %494, [4 x i8], %172, %10 } %494 = type { %22 } %495 = type { %398**, i64 } %496 = type { %497, %391 } %497 = type { [32 x i8] } %498 = type { i8, i32 } %499 = type { %500 } %500 = type { %501 } %501 = type { %502* } %502 = type { %503, %507*, %508* } %503 = type { %504, %505 } %504 = type { [64 x i8] } %505 = type { %506*, i64 } %506 = type { %508* } %507 = type opaque %508 = type { %20, [4 x i8] } %509 = type { %510* } %510 = type opaque %511 = type { %512, %512 } %512 = type { i64 } %513 = type { %514**, i64 } %514 = type { i32 (...)** } %515 = type { %516, i32, %393** } %516 = type { %517 } %517 = type { i32, i32, %518 } %518 = type { %519 } %519 = type { %520 } %520 = type { %521 } %521 = type { %522* } %522 = type opaque %523 = type { %524 } %524 = type { %525 } %525 = type { %444* } %526 = type <{ %397, i32, %462, [2 x i8] }> %527 = type { %461* } %528 = type { i32 (...)** } %529 = type { %21, [4 x i8] } %530 = type { %531, i64 } %531 = type { %532 } %532 = type { %533, %256 } %533 = type { %96* } %534 = type { %178* } %535 = type { %96*, i64 } %536 = type { %537 } %537 = type { %538 } %538 = type { %539* } %539 = type { %15, %540 } %540 = type { i8, float, %120, %121, %122, %127 } %541 = type { %542 } %542 = type { %543 } %543 = type { %544* } %544 = type { %15, %545 } %545 = type { float, %129, %130, %131, %132, %127 } %546 = type { float, float } %547 = type { i32, %5, float, %44, %548 } %548 = type { %549*, i64 } %549 = type { %5, %550 } %550 = type { i16, i16, i16, i16 } %551 = type { %132, %552, %558, i64, %568 } %552 = type { %553*, i64 } %553 = type { %554* } %554 = type { %117, %555 } %555 = type { %556, %557 } %556 = type { i64 } %557 = type { [4 x i16] } %558 = type { %559* } %559 = type { %560, %135, %561, %172 } %560 = type { %22 } %561 = type { i32, i32, %562 } %562 = type { %563 } %563 = type { %564 } %564 = type { %565 } %565 = type { %566* } %566 = type { i32, %567 } %567 = type { %554* } %568 = type { %569, [4 x i32] } %569 = type { %570, %571 } %570 = type { [32 x i8] } %571 = type { %572*, i64 } %572 = type { i32, i32 } %573 = type { %574 } %574 = type { %575 } %575 = type { %576* } %576 = type { %15, %528, %19*, i8, i8, %546, %547, %551 } %577 = type { %178*, float* } %578 = type { %579* } %579 = type { %179, i32 } %580 = type { %581, %584, %587 } %581 = type { %582, %583 } %582 = type <{ %20, %277, [3 x i8], %60, %225, %14, %14, i8 }> %583 = type { %299* } %584 = type { %585 } %585 = type { %586 } %586 = type { %295* } %587 = type <{ %294, [8 x i8], %588, %590, %592, %444*, %290, %13*, i8, [15 x i8] }> %588 = type { %589 } %589 = type { [240 x i8] } %590 = type { %591 } %591 = type { [192 x i8] } %592 = type { %593 } %593 = type { [128 x i8] } %594 = type { %595 } %595 = type { %596 } %596 = type { %301* } %597 = type { %598* } %598 = type { %579, %180, %10, %44, %73, %2, %5, %181 } %599 = type { %600 } %600 = type { %94, %8, %9 } %601 = type { i32 (...)**, %602 } %602 = type { void (%411*, %53*, i8*)*, i8*, void (%411*, %59*, i8*)*, i8*, void (%411*, %41*, i8*)*, i8* } %603 = type { %604 } %604 = type { %605 } %605 = type { %606, %606 } %606 = type { %607 } %607 = type { %608, %608 } %608 = type { i16 } %609 = type { %606*, i64 } %610 = type { %611, [7 x i8] } %611 = type { %612 } %612 = type { %613 } %613 = type { %614 } %614 = type { %615 } %615 = type { %616 } %616 = type <{ %617, i8 }> %617 = type { %551 } %618 = type { %554**, i64 } %619 = type { %620 } %620 = type { %621 } %621 = type { %622* } %622 = type { %15, %528, %19*, i32, [4 x i8], %603, %623, i8, %551 } %623 = type { %606*, i64 } %624 = type { %616, [7 x i8] } %625 = type { %626, [7 x i8] } %626 = type { %627 } %627 = type { %628 } %628 = type { %629 } %629 = type { %630 } %630 = type { %631 } %631 = type <{ %632, i8 }> %632 = type { %547 } %633 = type { %631, [7 x i8] } %634 = type { %635 } %635 = type { %636 } %636 = type { %637* } %637 = type { %15, %528, %19*, %547, %551 } %638 = type { %639, [7 x i8] } %639 = type { %640 } %640 = type { %641 } %641 = type { %642 } %642 = type { %643 } %643 = type { %644 } %644 = type <{ %645, i8 }> %645 = type { %540 } %646 = type { %644, [7 x i8] } %647 = type { %648, [7 x i8] } %648 = type { %649 } %649 = type { %650 } %650 = type { %651 } %651 = type { %652 } %652 = type { %653 } %653 = type <{ %654, i8 }> %654 = type { %545 } %655 = type { %653, [7 x i8] } %656 = type { i8 } %657 = type <{ i32 (...)**, %22, [4 x i8] }> %658 = type { i8 } %659 = type { i8 } %660 = type { i8 } %661 = type { %662, i64, %663, %663 } %662 = type { i8 } %663 = type { %530*, i64 } %664 = type { i64, %663 } %665 = type { %666 } %666 = type { %667, %668, %669 } %667 = type { i64 } %668 = type { %96* } %669 = type { %5* } %670 = type { i8 } %671 = type { %90, %74, %672 } %672 = type { i32, float, %673 } %673 = type { i32, float*, [16 x i8] } %674 = type { %675, i64 } %675 = type { %676 } %676 = type { %677, %193 } %677 = type { %101* } %678 = type { %674*, i64 } %679 = type { %680 } %680 = type { %681, %682 } %681 = type { %101* } %682 = type { %5* } %683 = type <{ %268*, i32, [4 x i8] }> %684 = type { i8 } %685 = type { i8 } %686 = type { i8 } %687 = type { %688 } %688 = type { %689, %690 } %689 = type { %96* } %690 = type { %5* } %691 = type { i8 } %692 = type { i8 } %693 = type { i8 } %694 = type { i8 } %695 = type { %696 } %696 = type { %667 } %697 = type { %698 } %698 = type { %699, %668, %669 } %699 = type { i64* } %700 = type { i8 } %701 = type { i8 } %702 = type { i8 } %703 = type { i8 } %704 = type { i8 } %705 = type { %706 } %706 = type { %699 } %707 = type { i8 } %708 = type { i8 } %709 = type { i8 } %710 = type { i8 } %711 = type { %549*, i64 } %712 = type { float*, %44* } %713 = type { i8 } %714 = type { i8 } %715 = type { i8 } %716 = type { %717 } %717 = type { %718, %719 } %718 = type { %294* } %719 = type { %469 } %720 = type { %721 } %721 = type { %425, %722, %91* } %722 = type { void (%425*, %472*, i32)* } %723 = type <{ %724*, %483, %483, i8, [3 x i8], %93, [4 x i8] }> %724 = type { i32 (...)** } %725 = type { %726 } %726 = type <{ %727, %728, %729, [3 x i8] }> %727 = type { i32 } %728 = type { i32 } %729 = type { i8 } %730 = type { %528*, %731, %2, %5, %290, %93, %730* } %731 = type { %529* } %732 = type { %19* } %733 = type <{ %297, %527, i8, [7 x i8] }> %734 = type { %735 } %735 = type { i32, i32, %736 } %736 = type { %737 } %737 = type { %738 } %738 = type { %739 } %739 = type { %740* } %740 = type opaque %741 = type { i32 (...)** } %742 = type { %743 } %743 = type { %3, %8 } %744 = type { i8 } %745 = type { i8 } %746 = type { i8 } %747 = type { i8 } %748 = type { i8 } %749 = type { %750, %752, i32, i16, i32, %730*, %730** } %750 = type { %751 } %751 = type { %472 } %752 = type <{ %483, %483, %753, i8, [7 x i8] }> %753 = type { %724* } %754 = type { i8 } %755 = type { i8 } %756 = type { i8 } %757 = type { i8 } %758 = type <{ i32 (...)**, i8, i8, i8, i8, %290, [4 x i8], %492, [4 x i8], [4 x i8], %398 }> %759 = type { %547*, %618*, i32*, i32* } %760 = type { %761, i64 } %761 = type { %762 } %762 = type { %763, %766, %767 } %763 = type { [4 x %764]* } %764 = type { %5, %765 } %765 = type { i16, i16 } %766 = type { %554** } %767 = type { %549* } %768 = type { %769, i64 } %769 = type { %770 } %770 = type { %771, %766, %767 } %771 = type { [4 x %772]* } %772 = type { %5, i32, %765 } %773 = type { %774, i64 } %774 = type { %775 } %775 = type { %776, %766, %767 } %776 = type { [4 x %777]* } %777 = type { %778, %765 } %778 = type { float, float, float } %779 = type { %780, i64 } %780 = type { %781 } %781 = type { %782, %766, %767 } %782 = type { [4 x %783]* } %783 = type { %778, i32, %765 } %784 = type { %760*, i64 } %785 = type { %786 } %786 = type { %787, %788, %789 } %787 = type { [4 x %764]* } %788 = type { %554** } %789 = type { %549* } %790 = type { %768*, i64 } %791 = type { %792 } %792 = type { %793, %788, %789 } %793 = type { [4 x %772]* } %794 = type { %2* } %795 = type { %773*, i64 } %796 = type { %797 } %797 = type { %798, %788, %789 } %798 = type { [4 x %777]* } %799 = type { %2* } %800 = type { %779*, i64 } %801 = type { %802 } %802 = type { %803, %788, %789 } %803 = type { [4 x %783]* } %804 = type { i8 } %805 = type { i8 } %806 = type { i8 } %807 = type { i8 } %808 = type { i8 } %809 = type { i8 } %810 = type { i8 } %811 = type { i8 } %812 = type { i8 } %813 = type { i8 } %814 = type { i8 } %815 = type { i8 } %816 = type { i8 } %817 = type { i8 } %818 = type { i8 } %819 = type { i8 } %820 = type { %598* } %821 = type { %598*, float* } %822 = type { i8 } %823 = type { i8 } %824 = type { i16*, i64 } %825 = type { i8 } %826 = type { i8 } %827 = type { i8 } %828 = type { i8 } %829 = type { %830 } %830 = type { %3, %118 } %831 = type { %832 } %832 = type { %833, %834 } %833 = type { i32 } %834 = type { %290 } %835 = type { %622*, i32*, i32* } %836 = type { %837, i64 } %837 = type { %838 } %838 = type { %839, %766, %842 } %839 = type { [4 x %840]* } %840 = type { %5, i32, %841 } %841 = type { i16, i16 } %842 = type { %606* } %843 = type { %844, i64 } %844 = type { %845 } %845 = type { %846, %766, %842 } %846 = type { [4 x %847]* } %847 = type { %5, %841 } %848 = type { %849, i64 } %849 = type { %850 } %850 = type { %851, %766, %842 } %851 = type { [4 x %852]* } %852 = type { %778, i32, %841 } %853 = type { %854, i64 } %854 = type { %855 } %855 = type { %856, %766, %842 } %856 = type { [4 x %857]* } %857 = type { %778, %841 } %858 = type <{ i32, %859, i8, i8, [2 x i8] }> %859 = type { %44, [4 x %5], i32 } %860 = type { i8 } %861 = type { i8 } %862 = type { %836*, i64 } %863 = type { %864 } %864 = type { %865, %788, %866 } %865 = type { [4 x %840]* } %866 = type { %606* } %867 = type { %843*, i64 } %868 = type { %869 } %869 = type { %870, %788, %866 } %870 = type { [4 x %847]* } %871 = type { %872 } %872 = type { %251, %8, %873, %874 } %873 = type { i32 } %874 = type { i32 } %875 = type { %876 } %876 = type { %877, %878, %879, %880 } %877 = type { float* } %878 = type { float* } %879 = type { float* } %880 = type { float* } %881 = type { %882 } %882 = type { %883, %884, %885, %886 } %883 = type { i16* } %884 = type { i16* } %885 = type { i16* } %886 = type { i16* } %887 = type { %2* } %888 = type { %848*, i64 } %889 = type { %890 } %890 = type { %891, %788, %866 } %891 = type { [4 x %852]* } %892 = type { %2* } %893 = type { %853*, i64 } %894 = type { %895 } %895 = type { %896, %788, %866 } %896 = type { [4 x %857]* } %897 = type { i8 } %898 = type { i8 } %899 = type { i8 } %900 = type { i8 } %901 = type { i8 } %902 = type { i8 } %903 = type { i8 } %904 = type { i8 } %905 = type { i8 } %906 = type { i8 } %907 = type { i8 } %908 = type { i8 } %909 = type { i8 } %910 = type <{ %617, i8, [7 x i8] }> %911 = type <{ %632, i8, [7 x i8] }> %912 = type { %627, [7 x i8] } %913 = type { i8 } %914 = type { i8 } %915 = type { %628, [7 x i8] } %916 = type { %629, [7 x i8] } %917 = type { %630, [7 x i8] } %918 = type { %919, [7 x i8] } %919 = type { %920 } %920 = type { %921 } %921 = type { %922 } %922 = type { %923 } %923 = type { %924 } %924 = type { %925, i8 } %925 = type { %127 } %926 = type { %927, %132 } %927 = type { i32, %98**, [160 x i8] } %928 = type { %130, i64, i16*, i16* } %929 = type { i64, i16* } %930 = type { %931 } %931 = type { %667, %884 } %932 = type { %924, [7 x i8] } %933 = type <{ %645, i8, [7 x i8] }> %934 = type { %640, [7 x i8] } %935 = type { i8 } %936 = type { %925, i8, [7 x i8] } %937 = type { %641, [7 x i8] } %938 = type { %642, [7 x i8] } %939 = type { %643, [7 x i8] } %940 = type { i8 } %941 = type { %942 } %942 = type { %883 } %943 = type { %944 } %944 = type { %699, %884 } %945 = type { i8 } %946 = type { i8 } %947 = type { i8 } %948 = type { %927, %132 } %949 = type { %98**, i64 } %950 = type { %662, i64, %98**, %98** } %951 = type { i64, %98** } %952 = type { %953 } %953 = type { %667, %954 } %954 = type { %98** } %955 = type <{ %654, i8, [7 x i8] }> %956 = type { %649, [7 x i8] } %957 = type { %650, [7 x i8] } %958 = type { %651, [7 x i8] } %959 = type { %652, [7 x i8] } %960 = type { i8 } %961 = type { %962 } %962 = type { %963 } %963 = type { %98** } %964 = type { %965 } %965 = type { %699, %954 } %966 = type { i8 } %967 = type { i8 } %968 = type { i8 } %969 = type { %662, i64, %5*, %5* } %970 = type { i64, %5* } %971 = type { %972 } %972 = type { %667, %690 } %973 = type { %974 } %974 = type { %975 } %975 = type { %5* } %976 = type { %977 } %977 = type { %699, %690 } %978 = type { i8 } %979 = type { i8 } %980 = type { i8 } $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev = comdat any $_ZNK7SkPaint13getMaskFilterEv = comdat any $_ZNK14SkGlyphRunList8canCacheEv = comdat any $_ZNK7SkPaint13getPathEffectEv = comdat any $_Z6as_MFBPK12SkMaskFilter = comdat any $_ZN10GrTextBlob3KeyC2Ev = comdat any $_ZNK14SkSurfaceProps13pixelGeometryEv = comdat any $_ZNK7SkPaint8getStyleEv = comdat any $_ZNK7SkPaint14getStrokeWidthEv = comdat any $_ZNK7SkPaint14getStrokeMiterEv = comdat any $_ZNK7SkPaint13getStrokeJoinEv = comdat any $_Z4SkToIj20SkScalerContextFlagsET_T0_ = comdat any $_ZNK14SkGlyphRunList5beginEv = comdat any $_ZNK14SkGlyphRunList3endEv = comdat any $_ZNK10SkGlyphRun4fontEv = comdat any $_ZNK8SkMatrix9mapOriginEv = comdat any $_ZN8SkMatrix13setTranslateXEf = comdat any $_ZNK7SkPoint1xEv = comdat any $_ZN8SkMatrix13setTranslateYEf = comdat any $_ZNK7SkPoint1yEv = comdat any $_ZNSt4__Cr5tupleIJbN10GrTextBlob3KeyEEEC2IJRbRS2_ELi0EEEDpOT_ = comdat any $_ZNK8SkMatrix14hasPerspectiveEv = comdat any $_ZNSt4__Cr3getILm0EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZNSt4__Cr3getILm1EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZN12GrSubRunListD2Ev = comdat any $_ZN6sktext3gpu15SubRunAllocatorD2Ev = comdat any $_ZNK14SkGlyphRunList15totalGlyphCountEv = comdat any $_ZN6sktext3gpu11GlyphVector15GlyphVectorSizeEm = comdat any $_ZNK14SkGlyphRunList8runCountEv = comdat any $_ZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEi = comdat any $_ZNSt4__Cr3getILm0EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_ = comdat any $_ZNSt4__Cr3getILm1EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_ = comdat any $_ZNSt4__Cr3getILm2EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_ = comdat any $_ZN6sktext3gpu17SubRunInitializerI10GrTextBlobE10initializeIJNS0_15SubRunAllocatorERiRK8SkMatrixRjEEEPS2_DpOT_ = comdat any $_ZN5sk_spI10GrTextBlobEC2EPS0_ = comdat any $_ZNK5sk_spI10GrTextBlobE3getEv = comdat any $_ZN5sk_spI10GrTextBlobED2Ev = comdat any $_ZNSt4__Cr5tupleIJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEED2Ev = comdat any $_ZNK12GrSubRunList7isEmptyEv = comdat any $_ZneRK8SkMatrixS1_ = comdat any $_ZNK12GrSubRunList5beginEv = comdat any $_ZNK12GrSubRunList3endEv = comdat any $_ZNK12GrSubRunList8IteratorneERKS0_ = comdat any $_ZN12GrSubRunList8IteratordeEv = comdat any $_ZN12GrSubRunList8IteratorppEv = comdat any $_ZN12GrSubRunList5beginEv = comdat any $_ZN12GrSubRunList3endEv = comdat any $_ZNK12GrSubRunList5frontEv = comdat any $_ZN20GrTextReferenceFrameC2Ev = comdat any $_ZN26SkGlyphRunPainterInterfaceC2Ev = comdat any $_ZN6sktext3gpu15SubRunAllocatorC2EOS1_ = comdat any $_ZN12GrSubRunListC2Ev = comdat any $_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE = comdat any $_ZNK5skgpu10BaseDevice16recordingContextEv = comdat any $_ZN18GrRecordingContext4privEv = comdat any $_ZNK12SkBaseDevice12surfacePropsEv = comdat any $_ZNK14SkSurfaceProps27isUseDeviceIndependentFontsEv = comdat any $_ZNK12SkBaseDevice16asMatrixProviderEv = comdat any $_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEEptEv = comdat any $_ZN5skgpu2v118SurfaceDrawContext15glyphRunPainterEv = comdat any $_ZNK5skgpu2v16Device4clipEv = comdat any $_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE3getEv = comdat any $_ZN12SkReadBuffer8validateEb = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn = comdat any $_ZNK12SkRefCntBase16internal_disposeEv = comdat any $_ZNK10GrTextBlob21initialPositionMatrixEv = comdat any $_ZNK5sk_spI12SkMaskFilterE3getEv = comdat any $_ZNK5sk_spI12SkPathEffectE3getEv = comdat any $_ZN8SkMatrixC2Ev = comdat any $_ZN8SkMatrixC2Efffffffffi = comdat any $_ZN12SkTMaskGammaILi3ELi3ELi3EE14CanonicalColorEj = comdat any $_ZNSt4__Cr6cbeginI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE5beginfp_EERKT_ = comdat any $_ZNSt4__Cr5beginI6SkSpanIK10SkGlyphRunEEEDTcldtfp_5beginEERKT_ = comdat any $_ZNK6SkSpanIK10SkGlyphRunE5beginEv = comdat any $_ZNSt4__Cr4cendI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE3endfp_EERKT_ = comdat any $_ZNSt4__Cr3endI6SkSpanIK10SkGlyphRunEEEDTcldtfp_3endEERKT_ = comdat any $_ZNK6SkSpanIK10SkGlyphRunE3endEv = comdat any $_ZNK8SkMatrix13getTranslateXEv = comdat any $_ZNK8SkMatrix13getTranslateYEv = comdat any $_ZN8SkMatrix3setEif = comdat any $_ZN8SkMatrix11setTypeMaskEi = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJbN10GrTextBlob3KeyEEEC2IJLm0ELm1EEJbS4_EJEJEJRbRS4_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IRbvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EN10GrTextBlob3KeyELb0EEC2IRS2_vEEOT_ = comdat any $_ZNK8SkMatrix26getPerspectiveTypeMaskOnlyEv = comdat any $_ZmiRK7SkPointS1_ = comdat any $_ZNK8SkMatrix9getScaleXEv = comdat any $_ZNK8SkMatrix9getScaleYEv = comdat any $_ZNK8SkMatrix8getSkewXEv = comdat any $_ZNK8SkMatrix8getSkewYEv = comdat any $_ZNSt4__Cr5tupleIJb7SkPointEEC2IJbRS1_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJb7SkPointEEC2IJLm0ELm1EEJbS3_EJEJEJbRS3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS8_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IbvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EEC2IRS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EbLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EE3getEv = comdat any $_ZNK10SkGlyphRun7runSizeEv = comdat any $_ZNK5SkZipIJKtK7SkPointEE4sizeEv = comdat any $_ZNK6SkSpanIK10SkGlyphRunE4sizeEv = comdat any $_ZNSt4__Cr12__tuple_leafILm0EN6sktext3gpu17SubRunInitializerI10GrTextBlobEELb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1EiLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS4_15SubRunAllocatorEEED2Ev = comdat any $_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EED2Ev = comdat any $_ZNSt4__CreqI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn = comdat any $_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEcvbEv = comdat any $_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv = comdat any $_ZNKSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv = comdat any $_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE3getEv = comdat any $_ZN12GrSubRunList8IteratorC2EP8GrSubRun = comdat any $_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEdeEv = comdat any $_ZN8SkRefCntC2Ev = comdat any $_ZN12SkRefCntBaseC2Ev = comdat any $_ZN12SkRefCntBaseD2Ev = comdat any $_ZN8SkRefCntD0Ev = comdat any $_ZNSt4__Cr6atomicIiEC2Ei = comdat any $_ZN12SkRefCntBaseD0Ev = comdat any $_ZNSt4__Cr13__atomic_baseIiLb1EEC2Ei = comdat any $_ZNSt4__Cr13__atomic_baseIiLb0EEC2Ei = comdat any $_ZNSt4__Cr17__cxx_atomic_implIiNS_22__cxx_atomic_base_implIiEEEC2Ei = comdat any $_ZNSt4__Cr22__cxx_atomic_base_implIiEC2Ei = comdat any $_ZN26SkGlyphRunPainterInterfaceD2Ev = comdat any $_ZN26SkGlyphRunPainterInterfaceD0Ev = comdat any $_ZN6sktext3gpu10BagOfBytesC2EOS1_ = comdat any $_ZNSt4__Cr8exchangeIPcDnEET_RS2_OT0_ = comdat any $_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEptEv = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEaSEOS6_ = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5resetEPS1_ = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE7releaseEv = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE11get_deleterEv = comdat any $_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE6secondEv = comdat any $_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv = comdat any $_ZN6sktext3gpu15SubRunAllocator9DestroyerclI8GrSubRunEEvPT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EE5__getEv = comdat any $_ZN6sktext3gpu10BagOfBytes13allocateBytesEii = comdat any $_ZN8GrSubRunC2Ev = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv = comdat any $_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2IS2_NS_18__default_init_tagEEEOT_OT0_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2ENS_18__default_init_tagE = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2EOS7_ = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE7releaseEv = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE11get_deleterEv = comdat any $_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IS2_S6_EEOT_OT0_ = comdat any $_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE6secondEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EE5__getEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EEC2IS4_vEEOT_ = comdat any $_ZN7SkPaint12setAntiAliasEb = comdat any $_Z6as_MFBP12SkMaskFilter = comdat any $_ZN8SkMatrix5ScaleEff = comdat any $_ZN7GrStyleC2ERK7SkPaint = comdat any $_ZNK7SkPaint9getShaderEv = comdat any $_ZNK7GrStyle7appliesEv = comdat any $_ZN5sk_spI12SkMaskFilterED2Ev = comdat any $_Z9SkMakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEDaDpOT_ = comdat any $_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE3getEv = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE5beginEv = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE3endEv = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE8IteratorneERKS4_ = comdat any $_ZN5SkZipIJ6SkPathK7SkPointEE8IteratordeEv = comdat any $_ZNSt4__Cr3getILm0EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_ = comdat any $_ZNSt4__Cr3getILm1EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_ = comdat any $_ZN19SkAutoCanvasRestoreC2EP8SkCanvasb = comdat any $_ZN19SkAutoCanvasRestoreD2Ev = comdat any $_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorppEv = comdat any $_ZN6SkPath13setIsVolatileEb = comdat any $_ZN7GrStyleD2Ev = comdat any $_ZN5sk_spI12SkPathEffectEC2Ev = comdat any $_ZN7GrStyle8DashInfoC2Ev = comdat any $_ZN5sk_spI12SkPathEffectED2Ev = comdat any $_ZN13SkAutoSTArrayILi4EfEC2Ev = comdat any $_ZNK12SkRefCntBase5unrefEv = comdat any $_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE = comdat any $_ZNSt4__Cr22__cxx_atomic_fetch_addIiEET_PNS_22__cxx_atomic_base_implIS1_EES1_NS_12memory_orderE = comdat any $_ZNK5sk_spI8SkShaderE3getEv = comdat any $_ZNK7GrStyle10pathEffectEv = comdat any $_ZNK11SkStrokeRec11isFillStyleEv = comdat any $_ZNK11SkStrokeRec15isHairlineStyleEv = comdat any $_ZN15SkMakeZipDetail7MakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEEDaDpOT_ = comdat any $_ZN15SkMakeZipDetail11PickOneSizeIP6SkPathJRK6SkSpanIK7SkPointEEE4SizeES2_S8_ = comdat any $_ZN15SkMakeZipDetail16ContiguousMemoryIP6SkPathE4DataES2_ = comdat any $_ZN15SkMakeZipDetail16ContiguousMemoryIRK6SkSpanIK7SkPointEE4DataES6_ = comdat any $_ZN5SkZipIJ6SkPathK7SkPointEEC2EmPS0_PS2_ = comdat any $_ZN15SkMakeZipDetail11PickOneSizeIRK6SkSpanIK7SkPointEJEE4SizeES6_ = comdat any $_ZNK6SkSpanIK7SkPointE4sizeEv = comdat any $_ZNK6SkSpanIK7SkPointE4dataEv = comdat any $_ZNK6SkSpanIK7SkPointE5beginEv = comdat any $_ZNSt4__Cr5tupleIJP6SkPathPK7SkPointEEC2IJRS2_RS5_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJP6SkPathPK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJRS4_RS7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EP6SkPathLb0EEC2IRS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EEC2IRS3_vEEOT_ = comdat any $_ZNKSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv = comdat any $_ZNKSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv = comdat any $_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorC2EPKS3_m = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE4sizeEv = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEEixEm = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE5indexEm = comdat any $_ZNK5SkZipIJ6SkPathK7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS2_EEEmNS5_16integer_sequenceImJXspT_EEEE = comdat any $_ZNSt4__Cr3getILm0EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_ = comdat any $_ZNSt4__Cr3getILm1EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_ = comdat any $_ZNSt4__Cr5tupleIJR6SkPathRK7SkPointEEC2INS_4_AndELi0EEES2_S5_ = comdat any $_ZNKSt4__Cr12__tuple_leafILm0EP6SkPathLb0EE3getEv = comdat any $_ZNKSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR6SkPathRK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJS4_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EEC2IS3_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EE3getEv = comdat any $_ZN7GrStyle8DashInfoD2Ev = comdat any $_ZN13SkAutoSTArrayILi4EfED2Ev = comdat any $_ZN13SkAutoSTArrayILi4EfE5resetEi = comdat any $_ZNK6SkSpanIK7SkPointE10size_bytesEv = comdat any $_ZNK6SkSpanIKtE10size_bytesEv = comdat any $_Z7SkCountI6SkSpanIKtEEiRKT_ = comdat any $_Z4SkToIimET_T0_ = comdat any $_ZNSt4__Cr4sizeI6SkSpanIKtEEEDTcldtfp_4sizeEERKT_ = comdat any $_ZNK6SkSpanIKtE4sizeEv = comdat any $_Z7SkCountI6SkSpanIK7SkPointEEiRKT_ = comdat any $_ZNK6SkSpanIK7SkPointE3endEv = comdat any $_ZNK6SkSpanIKtE5beginEv = comdat any $_ZNK6SkSpanIKtE3endEv = comdat any $_ZNK16SkAutoDescriptor7getDescEv = comdat any $_ZNSt4__Cr4sizeI6SkSpanIK7SkPointEEEDTcldtfp_4sizeEERKT_ = comdat any $_Z7SkCountI5SkZipIJ14SkGlyphVariant7SkPointEEEiRKT_ = comdat any $_ZN6sktext3gpu15SubRunAllocator12makePODArrayI7SkPointEEPT_i = comdat any $_ZN6sktext3gpu15SubRunAllocator12makePODArrayItEEPT_i = comdat any $_ZN6sktext3gpu15SubRunAllocator15makeUniqueArrayI6SkPathEENSt4__Cr10unique_ptrIA_T_NS1_14ArrayDestroyerEEEi = comdat any $_Z15SkMakeEnumerateIK5SkZipIJ14SkGlyphVariant7SkPointEENS3_8IteratorEE11SkEnumerateIT0_NSt4__Cr9monostateEERT_ = comdat any $_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5beginEv = comdat any $_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE3endEv = comdat any $_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorneERKS8_ = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratordeEv = comdat any $_ZNSt4__Cr3getILm0EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm1EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm2EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNK14SkGlyphVariant5glyphEv = comdat any $_ZNK7SkGlyph10getGlyphIDEv = comdat any $_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEixEm = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorppEv = comdat any $_Z10SkMakeSpanI7SkPointiE6SkSpanIT_EPS2_T0_ = comdat any $_Z10SkMakeSpanItiE6SkSpanIT_EPS1_T0_ = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEED2Ev = comdat any $_ZNSt4__Cr4sizeI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_4sizeEERKT_ = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPci = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPciENKUlvE_clEv = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPci = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPciENKUlvE_clEv = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPci = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IPS1_Lb1EvvEET_NS_16__dependent_typeINS_27__unique_ptr_deleter_sfinaeIS6_EEXT0_EE20__good_rval_ref_typeE = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPciENKUlvE_clEv = comdat any $_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IRS2_S6_EEOT_OT0_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IRS2_vEEOT_ = comdat any $_ZNSt4__Cr5beginI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_5beginEERKT_ = comdat any $_ZNSt4__Cr3endI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_3endEERKT_ = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ES4_S4_ = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5beginEv = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2EPKS2_m = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3endEv = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_ = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ElS4_S4_ = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ElS4_ = comdat any $_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5ssizeEv = comdat any $_ZNSt4__Cr8distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_ = comdat any $_ZNSt4__Cr10__distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_NS_18input_iterator_tagE = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorneERKS3_ = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorppEv = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE10MakeResultEmONS5_5tupleIJRS1_RS2_EEE = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratordeEv = comdat any $_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJRNS1_IJR14SkGlyphVariantR7SkPointEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOSA_DpOSB_ = comdat any $_ZNSt4__Cr5tupleIJmEEC2IJRmELi0EEEDpOT_ = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEERNS1_IJR14SkGlyphVariantR7SkPointEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SI_SK_SN_ = comdat any $_ZNSt4__Cr5tupleIJmR14SkGlyphVariantR7SkPointEEC2IJOmS2_S4_ELi0EEEONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEENS4_IJLm0ELm1EEEEEclIRNS1_IJR14SkGlyphVariantR7SkPointEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SI_ = comdat any $_ZNSt4__Cr16forward_as_tupleIJmEEENS_5tupleIJDpOT_EEES4_ = comdat any $_ZNSt4__Cr3getILm0EJmEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS5_ = comdat any $_ZNSt4__Cr16forward_as_tupleIJmR14SkGlyphVariantR7SkPointEEENS_5tupleIJDpOT_EEES8_ = comdat any $_ZNSt4__Cr3getILm0EJOmEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_ = comdat any $_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_ = comdat any $_ZNSt4__Cr5tupleIJOmR14SkGlyphVariantR7SkPointEEC2IJmS3_S5_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJOmR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1ELm2EEJS3_S5_S7_EJEJEJmS5_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EOmLb0EEC2ImvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EOmLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EE3getEv = comdat any $_ZNSt4__Cr5tupleIJOmEEC2IJmELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJOmEEC2IJLm0EEJS3_EJEJEJmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EmLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJmR14SkGlyphVariantR7SkPointEEC2INS_5tupleIJOmS4_S6_EEEvEEOT_ = comdat any $_ZNSt4__Cr3getILm0EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2ImvEEOT_ = comdat any $_ZNSt4__Cr3getILm1EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_ = comdat any $_ZNSt4__Cr3getILm2EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJmEEC2IJLm0EEJmEJEJEJRmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2IRmvEEOT_ = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEEixEm = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5indexEm = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS1_EEEmNS4_16integer_sequenceImJXspT_EEEE = comdat any $_ZNSt4__Cr3getILm0EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_ = comdat any $_ZNSt4__Cr3getILm1EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_ = comdat any $_ZNSt4__Cr5tupleIJR14SkGlyphVariantR7SkPointEEC2INS_4_AndELi0EEES2_S4_ = comdat any $_ZNKSt4__Cr12__tuple_leafILm0EP14SkGlyphVariantLb0EE3getEv = comdat any $_ZNKSt4__Cr12__tuple_leafILm1EP7SkPointLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1EEJS4_S6_EJEJEJS4_S6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EEC2IS2_vEEOT_ = comdat any $_ZNK15SkPackedGlyphID7glyphIDEv = comdat any $_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ERKS8_ = comdat any $_Z4SkToImiET_T0_ = comdat any $_ZN6SkSpanI7SkPointEC2EPS0_m = comdat any $_ZN6SkSpanItEC2EPtm = comdat any $_ZN6SkSpanIK7SkPointEC2IS0_vEERKS_IT_E = comdat any $_ZN6SkSpanIKtEC2ItvEERKS_IT_E = comdat any $_ZNK6SkSpanI7SkPointE4dataEv = comdat any $_ZNK6SkSpanI7SkPointE4sizeEv = comdat any $_ZNK6SkSpanI7SkPointE5beginEv = comdat any $_ZNK6SkSpanItE4dataEv = comdat any $_ZNK6SkSpanItE4sizeEv = comdat any $_ZNK6SkSpanItE5beginEv = comdat any $_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5resetEDn = comdat any $_ZN6sktext3gpu15SubRunAllocator14ArrayDestroyerclI6SkPathEEvPT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2IS4_vEEOT_ = comdat any $_ZNK6SkFont9getEdgingEv = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3getILm0EEEDav = comdat any $_ZN6sktext3gpu11GlyphVectorD2Ev = comdat any $_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNK14SkGlyphVariantcvPK7SkGlyphEv = comdat any $_ZNK7SkGlyph4leftEv = comdat any $_ZNK7SkGlyph3topEv = comdat any $_ZNK7SkGlyph5widthEv = comdat any $_ZNK7SkGlyph6heightEv = comdat any $_ZplRK7SkPointS1_ = comdat any $_ZN7SkPoint4MakeEff = comdat any $_ZNK7SkPointmlEf = comdat any $_ZN6SkRect21joinPossiblyEmptyRectERKS_ = comdat any $_ZN6SkRect8MakeLTRBEffff = comdat any $_ZNSt4__Cr3minIfEERKT_S3_S3_ = comdat any $_ZNK6SkRect4leftEv = comdat any $_ZNK6SkRect3topEv = comdat any $_ZNSt4__Cr3maxIfEERKT_S3_S3_ = comdat any $_ZNK6SkRect5rightEv = comdat any $_ZNK6SkRect6bottomEv = comdat any $_ZNSt4__Cr3minIfNS_6__lessIffEEEERKT_S5_S5_T0_ = comdat any $_ZNKSt4__Cr6__lessIffEclERKfS3_ = comdat any $_ZNSt4__Cr3maxIfNS_6__lessIffEEEERKT_S5_S5_T0_ = comdat any $_Z10SkMakeSpanI14SkGlyphVariantmE6SkSpanIT_EPS2_T0_ = comdat any $_Z4SkToImmET_T0_ = comdat any $_ZN6SkSpanI14SkGlyphVariantEC2EPS0_m = comdat any $_ZN13GrAtlasSubRunC2Ev = comdat any $_ZN6sktext3gpu11GlyphVectorC2EOS1_ = comdat any $_ZN13GrAtlasSubRunD2Ev = comdat any $_ZN13GrAtlasSubRunD0Ev = comdat any $_ZN5sk_spI8SkStrikeEC2EOS1_ = comdat any $_ZN5sk_spIN6sktext3gpu10TextStrikeEEC2EOS3_ = comdat any $_ZN5skgpu18BulkUsePlotUpdaterC2ERKS0_ = comdat any $_ZN5sk_spI8SkStrikeE7releaseEv = comdat any $_ZN5sk_spIN6sktext3gpu10TextStrikeEE7releaseEv = comdat any $_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ERKS3_ = comdat any $_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2Ev = comdat any $_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_ = comdat any $_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEEC2Ev = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ILi4EEEP18SkAlignedSTStorageIXT_ES2_E = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE27initWithPreallocatedStorageEiPvi = comdat any $_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEE3getEv = comdat any $_Z7SkToU32IiEjT_ = comdat any $_ZNSt4__Cr3maxIiEERKT_S3_S3_ = comdat any $_Z4SkToIjiET_T0_ = comdat any $_ZNSt4__Cr3maxIiNS_6__lessIiiEEEERKT_S5_S5_T0_ = comdat any $_ZNKSt4__Cr6__lessIiiEclERKiS3_ = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_ = comdat any $_ZNK8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE5countEv = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE12checkReallocEiNS3_11ReallocTypeE = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4copyEPKS2_ = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4moveILb1EEENSt4__Cr9enable_ifIXT_EvE4typeEPv = comdat any $_ZNSt4__Cr3getILm0EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_ = comdat any $_ZNSt4__Cr3getILm1EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_ = comdat any $_ZNSt4__CrneI4GrOpNS_14default_deleteIS1_EEEEbRKNS_10unique_ptrIT_T0_EEDn = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2EOS4_ = comdat any $_ZNSt4__Cr8functionIFvP4GrOpjEEC2Ev = comdat any $_ZNSt4__Cr8functionIFvP4GrOpjEED2Ev = comdat any $_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEED2Ev = comdat any $_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EE3getEv = comdat any $_ZNKSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEcvbEv = comdat any $_ZNKSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv = comdat any $_ZNKSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE7releaseEv = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE11get_deleterEv = comdat any $_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IS2_S4_EEOT_OT0_ = comdat any $_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE6secondEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EE5__getEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2IS3_vEEOT_ = comdat any $_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEEC2Ev = comdat any $_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEEC2Ev = comdat any $_ZNSt4__Cr10__function8__policy14__create_emptyEv = comdat any $_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEE12__call_emptyEPKNS0_16__policy_storageES3_j = comdat any $_ZNSt4__Cr25__throw_bad_function_callEv = comdat any $_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEED2Ev = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEED2Ev = comdat any $_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EED2Ev = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEED2Ev = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE5resetEPS1_ = comdat any $_ZNKSt4__Cr14default_deleteI4GrOpEclEPS1_ = comdat any $_ZNK6sktext3gpu11GlyphVector13unflattenSizeEv = comdat any $_ZNK6SkSpanIN6sktext3gpu11GlyphVector7VariantEE4sizeEv = comdat any $_ZNK16SkMatrixProvider13localToDeviceEv = comdat any $_ZN7GrPaintC2Ev = comdat any $_ZNSt4__Cr3getILm0EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm1EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm2EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZN7SkIRect9MakeEmptyEv = comdat any $_Z9sk_ref_spI20GrTextReferenceFrameE5sk_spIT_EPKS2_ = comdat any $_ZN5sk_spI8SkRefCntEC2I20GrTextReferenceFramevEEOS_IT_E = comdat any $_ZN5skgpu2v118SurfaceFillContext10arenaAllocEv = comdat any $_ZN5sk_spI8SkRefCntED2Ev = comdat any $_ZN5sk_spI20GrTextReferenceFrameED2Ev = comdat any $_ZNK5skgpu14SurfaceContext16recordingContextEv = comdat any $_ZN4GrOp4MakeIN5skgpu2v111AtlasTextOpEJRNS3_8MaskTypeEbi6SkRectjRbRjRPNS3_8GeometryE7GrPaintEEENSt4__Cr10unique_ptrIS_NSD_14default_deleteIS_EEEEP18GrRecordingContextDpOT0_ = comdat any $_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEC2IJRS3_S8_ELi0EEEDpOT_ = comdat any $_ZN7GrPaintD2Ev = comdat any $_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEv = comdat any $_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEEC2IS2_NS_18__default_init_tagEEEOT_OT0_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EEC2ENS_18__default_init_tagE = comdat any $_ZNK5skgpu14SurfaceContext9colorInfoEv = comdat any $_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEDn = comdat any $_ZNK7GrPaint10getColor4fEv = comdat any $_ZNK5skgpu2v118SurfaceDrawContext12surfacePropsEv = comdat any $_ZNK8SkMatrix16isScaleTranslateEv = comdat any $_ZNSt4__Cr5tupleIJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJRS4_RjRbELi0EEEDpOT_ = comdat any $_ZNK8SkMatrix7getTypeEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJLm0ELm1ELm2EEJS6_jbEJEJEJRS6_RjRbEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EEC2IRS4_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EjLb0EEC2IRjvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2EbLb0EEC2IRbvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1EjLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2EbLb0EE3getEv = comdat any $_ZN5sk_spI20GrTextReferenceFrameEC2EPS0_ = comdat any $_ZNK12SkRefCntBase3refEv = comdat any $_ZN5sk_spI20GrTextReferenceFrameE7releaseEv = comdat any $_ZN5skgpu2v118SurfaceFillContext6arenasEv = comdat any $_ZNK5sk_spI8GrArenasEptEv = comdat any $_ZN8GrArenas10arenaAllocEv = comdat any $_ZN5sk_spI8GrArenasED2Ev = comdat any $_ZNK18GrSurfaceProxyView5proxyEv = comdat any $_ZN19GrRenderTargetProxy6arenasEv = comdat any $_ZNK5sk_spI14GrSurfaceProxyE3getEv = comdat any $_ZeqI8GrArenasEbRK5sk_spIT_EDn = comdat any $_Z10sk_make_spI8GrArenasJEE5sk_spIT_EDpOT0_ = comdat any $_ZN5sk_spI8GrArenasEaSEOS1_ = comdat any $_ZN5sk_spI8GrArenasEC2ERKS1_ = comdat any $_ZNK5sk_spI8GrArenasEcvbEv = comdat any $_ZNK5sk_spI8GrArenasE3getEv = comdat any $_ZN8GrArenasC2Ev = comdat any $_ZN5sk_spI8GrArenasEC2EPS0_ = comdat any $_ZN10SkNVRefCntI8GrArenasEC2Ev = comdat any $_ZN12SkArenaAllocC2Em = comdat any $_ZN5sk_spI8GrArenasE5resetEPS0_ = comdat any $_ZN5sk_spI8GrArenasE7releaseEv = comdat any $_ZNK10SkNVRefCntI8GrArenasE5unrefEv = comdat any $_ZN8GrArenasD2Ev = comdat any $_ZN10SkNVRefCntI8GrArenasED2Ev = comdat any $_ZNK10SkNVRefCntI8GrArenasE3refEv = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2ILb1EvEEPS1_ = comdat any $_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IRS2_NS_18__default_init_tagEEEOT_OT0_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IRS2_vEEOT_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2ENS_18__default_init_tagE = comdat any $_ZN6SkRect6offsetERK7SkPoint = comdat any $_ZNK8SkMatrix7mapRectERK6SkRect22SkApplyPerspectiveClip = comdat any $_ZN6SkRect6offsetEff = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEEC2IJLm0ELm1EEJS5_SA_EJEJEJRS5_SA_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSF_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EEC2IRS3_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EEC2IS5_vEEOT_ = comdat any $_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEED2Ev = comdat any $_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEE5resetEPS1_ = comdat any $_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE5firstEv = comdat any $_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE6secondEv = comdat any $_ZNKSt4__Cr14default_deleteI19GrFragmentProcessorEclEPS1_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EE5__getEv = comdat any $_ZNSt4__Cr3getILm0EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm1EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm2EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm3EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNK8SkMatrix5mapXYEff = comdat any $_ZNK5skgpu12AtlasLocator6getUVsEv = comdat any $_ZNSt4__Cr3getILm0EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm1EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm2EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNSt4__Cr3getILm3EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE = comdat any $_ZNKSt4__Cr12__tuple_leafILm1EPPKN6sktext3gpu5GlyphELb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERPKN6sktext3gpu5GlyphELb0EEC2IS6_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERPKN6sktext3gpu5GlyphELb0EE3getEv = comdat any $_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE7subspanEmm = comdat any $_ZN15SkMakeZipDetail16ContiguousMemoryI6SkSpanIPKN6sktext3gpu5GlyphEEE4DataES7_ = comdat any $_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE4sizeEv = comdat any $_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE4dataEv = comdat any $_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE5beginEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1EPPKN6sktext3gpu5GlyphELb0EEC2IRS6_vEEOT_ = comdat any $_ZN6SkSpanIPKN6sktext3gpu5GlyphEEC2EPS4_m = comdat any $_ZN5skgpu18BulkUsePlotUpdaterD2Ev = comdat any $_ZN5sk_spIN6sktext3gpu10TextStrikeEED2Ev = comdat any $_ZN5sk_spI8SkStrikeED2Ev = comdat any $_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EED2Ev = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EED2Ev = comdat any $_ZNK10SkNVRefCntIN6sktext3gpu10TextStrikeEE5unrefEv = comdat any $_ZN6sktext3gpu10TextStrikeD2Ev = comdat any $_ZN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS1_10TextStrike10HashTraitsEED2Ev = comdat any $_ZN10SkNVRefCntIN6sktext3gpu10TextStrikeEED2Ev = comdat any $_ZN12SkAutoTArrayIN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS2_10TextStrike10HashTraitsEE4SlotEED2Ev = comdat any $_ZNSt4__Cr10unique_ptrIA_N12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotENS_14default_deleteISB_EEED2Ev = comdat any $_ZNSt4__Cr10unique_ptrIA_N12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotENS_14default_deleteISB_EEE5resetEDn = comdat any $_ZNSt4__Cr17__compressed_pairIPN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotENS_14default_deleteIA_SA_EEE5firstEv = comdat any $_ZNSt4__Cr17__compressed_pairIPN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotENS_14default_deleteIA_SA_EEE6secondEv = comdat any $_ZNKSt4__Cr14default_deleteIA_N12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotEEclISA_EENSC_20_EnableIfConvertibleIT_E4typeEPSF_ = comdat any $_ZNSt4__Cr22__compressed_pair_elemIPN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS3_10TextStrike10HashTraitsEE4SlotELi0ELb0EE5__getEv = comdat any $_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteIA_N12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS4_10TextStrike10HashTraitsEE4SlotEEELi1ELb1EE5__getEv = comdat any $_ZN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS1_10TextStrike10HashTraitsEE4SlotD2Ev = comdat any $_ZN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS1_10TextStrike10HashTraitsEE4Slot5resetEv = comdat any $_ZN12SkTHashTableIPN6sktext3gpu5GlyphE15SkPackedGlyphIDNS1_10TextStrike10HashTraitsEE4Slot7StorageD2Ev = comdat any $_ZNK5sk_spI18GrRecordingContextE3getEv = comdat any $_ZN22GrRecordingContextPrivC2EP18GrRecordingContext = comdat any $_ZN18GrImageContextPrivC2EP14GrImageContext = comdat any $_ZN17GrBaseContextPrivC2EP14GrContext_Base = comdat any $_ZNK14SkGlyphRunList6originEv = comdat any $_ZNK14SkGlyphRunList12sourceBoundsEv = comdat any $_ZN6sktext3gpu10BagOfBytes31PlatformMinimumSizeWithOverheadEii = comdat any $_Z12SkTAddOffsetIcvEPT_PT0_l = comdat any $_ZN6sktext3gpu10BagOfBytes23MinimumSizeWithOverheadEiiii = comdat any $_ZZN6sktext3gpu10BagOfBytes23MinimumSizeWithOverheadEiiiiENKUlvE_clEv = comdat any $_Z8SkIsPow2IiEbT_ = comdat any $_ZZN6sktext3gpu10BagOfBytes23MinimumSizeWithOverheadEiiiiENKUlvE0_clEv = comdat any $_ZNSt4__Cr3minIiEERKT_S3_S3_ = comdat any $_ZN6sktext3gpu10BagOfBytes7AlignUpEii = comdat any $_ZNSt4__Cr14numeric_limitsIiE3maxEv = comdat any $_ZNSt4__Cr3minIiNS_6__lessIiiEEEERKT_S5_S5_T0_ = comdat any $_ZNSt4__Cr23__libcpp_numeric_limitsIiLb1EE3maxEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1EiLb0EEC2IRivEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EEC2IS3_vEEOT_ = comdat any $_ZNSt4__Cr8exchangeIPvDnEET_RS2_OT0_ = comdat any $_ZN6GrSlugC2Ev = comdat any $_ZNSt4__Cr3getILm0EJiiEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS5_ = comdat any $_ZNSt4__Cr3getILm1EJiiEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS5_ = comdat any $_ZNSt4__Cr5tupleIJiiEEC2IJRiS3_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJiiEEC2IJLm0ELm1EEJiiEJEJEJRiS5_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EiLb0EEC2IRivEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EiLb0EE3getEv = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5emptyEv = comdat any $_ZNK6SkSpanI14SkGlyphVariantEixEm = comdat any $_ZN6sktext3gpu5Glyph17FormatFromSkGlyphEN6SkMask6FormatE = comdat any $_ZNK7SkGlyph10maskFormatEv = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE7subspanEmm = comdat any $_ZN5sk_spI8SkStrikeEC2ERKS1_ = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4lastEm = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEEC2Ev = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE10pointersAtEm = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEEC2EmRKNSt4__Cr5tupleIJPS0_PS1_EEE = comdat any $_ZNSt4__Cr5tupleIJP14SkGlyphVariantP7SkPointEEC2INS_4_AndELi0EEERKS2_RKS4_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJP14SkGlyphVariantP7SkPointEEC2IJLm0ELm1EEJS4_S6_EJEJEJRKS4_RKS6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSE_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EP14SkGlyphVariantLb0EEC2IRKS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EP7SkPointLb0EEC2IRKS2_vEEOT_ = comdat any $_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE16pointersAtDetailIJLm0ELm1EEEENSt4__Cr5tupleIJPS0_PS1_EEEmNS4_16integer_sequenceImJXspT_EEEE = comdat any $_ZNSt4__Cr5tupleIJP14SkGlyphVariantP7SkPointEEC2IJS2_S4_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJP14SkGlyphVariantP7SkPointEEC2IJLm0ELm1EEJS4_S6_EJEJEJS4_S6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EP14SkGlyphVariantLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EP7SkPointLb0EEC2IS2_vEEOT_ = comdat any $_ZNSt4__CrneI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn = comdat any $_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2EOS6_ = comdat any $_ZN6sktext3gpu15SubRunAllocator12makePODArrayIN4skvx3VecILi2EsEEEEPT_i = comdat any $_ZN6sktext3gpu15SubRunAllocator12makePODArrayINS0_11GlyphVector7VariantEEEPT_i = comdat any $_ZN7skglyph10empty_rectEv = comdat any $_ZNK7SkGlyph9glyphRectEv = comdat any $_ZNK11SkGlyphRect6offsetEss = comdat any $_ZN7skglyph10rect_unionE11SkGlyphRectS0_ = comdat any $_ZNK11SkGlyphRect7leftTopEv = comdat any $_ZNK7SkGlyph11getPackedIDEv = comdat any $_ZN6SkSpanIKN4skvx3VecILi2EsEEEC2EPS3_m = comdat any $_ZN6SkSpanIN6sktext3gpu11GlyphVector7VariantEEC2EPS3_m = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForIN4skvx3VecILi2EsEEEEPci = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForIN4skvx3VecILi2EsEEEEPciENKUlvE_clEv = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForINS0_11GlyphVector7VariantEEEPci = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForINS0_11GlyphVector7VariantEEEPciENKUlvE_clEv = comdat any $_ZN11SkGlyphRectC2Essss = comdat any $_ZN4skvx3VecILi4EsEC2ESt16initializer_listIsE = comdat any $_ZNKSt16initializer_listIsE5beginEv = comdat any $_ZNSt4__Cr3minImEERKT_S3_S3_ = comdat any $_ZNKSt16initializer_listIsE4sizeEv = comdat any $_ZN4skvx3VecILi2EsE4LoadEPKv = comdat any $_ZNSt4__Cr3minImNS_6__lessImmEEEERKT_S5_S5_T0_ = comdat any $_ZNKSt4__Cr6__lessImmEclERKmS3_ = comdat any $_Z4SkToIsiET_T0_ = comdat any $_ZN11SkGlyphRectC2EN4skvx3VecILi4EsEE = comdat any $_ZNK11SkGlyphRect10negLeftTopEv = comdat any $_ZNK4skvx3VecILi4EsEixEi = comdat any $_ZN4skvx3VecILi2EsEC2ESt16initializer_listIsE = comdat any $_ZNK4skvx3VecILi2EsEixEi = comdat any $_ZNK4skvx3VecILi1EsEixEi = comdat any $_ZN4skvx3VecILi1EsE4LoadEPKv = comdat any $_ZNK6SkSpanIKN4skvx3VecILi2EsEEE4sizeEv = comdat any $_ZNK6SkSpanIKN4skvx3VecILi2EsEEE5beginEv = comdat any $_ZNK6SkSpanIKN4skvx3VecILi2EsEEE3endEv = comdat any $_Z7SkCountI6SkSpanIPKN6sktext3gpu5GlyphEEEiRKT_ = comdat any $_ZNSt4__Cr4sizeI6SkSpanIPKN6sktext3gpu5GlyphEEEEDTcldtfp_4sizeEERKT_ = comdat any $_ZNSt4__Cr3getILm0EJb6SkRectEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZNSt4__Cr3getILm1EJb6SkRectEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZNK6SkRect7isEmptyEv = comdat any $_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEC2IJDnDnELi0EEEDpOT_ = comdat any $_ZN6SkRect6MakeWHEff = comdat any $_ZNK5skgpu14SurfaceContext5widthEv = comdat any $_ZNK5skgpu14SurfaceContext6heightEv = comdat any $_ZNK7SkIRect7isEmptyEv = comdat any $_ZN4GrOp4MakeIN5skgpu2v111AtlasTextOpEJNS3_8MaskTypeEbiR6SkRectRPNS3_8GeometryE7GrPaintEEENSt4__Cr10unique_ptrIS_NSB_14default_deleteIS_EEEEP18GrRecordingContextDpOT0_ = comdat any $_ZNK8SkMatrixixEi = comdat any $_ZNK11SkGlyphRect5iRectEv = comdat any $_ZN6SkRect4MakeERK7SkIRect = comdat any $_ZNK7SkIRect10makeOffsetE8SkIPoint = comdat any $_ZNSt4__Cr5tupleIJb6SkRectEEC2IJbS1_ELi0EEEDpOT_ = comdat any $_ZNK8SkMatrix6invertEPS_ = comdat any $_ZN8SkMatrix6ConcatERKS_S1_ = comdat any $_ZNK11SkGlyphRect4rectEv = comdat any $_ZN6SkRect9MakeEmptyEv = comdat any $_ZN7SkIRect8MakeLTRBEiiii = comdat any $_ZNK7SkIRect10makeOffsetEii = comdat any $_ZNK8SkIPoint1xEv = comdat any $_ZNK8SkIPoint1yEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJb6SkRectEEC2IJLm0ELm1EEJbS3_EJEJEJbS3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1E6SkRectLb0EEC2IS1_vEEOT_ = comdat any $_ZNK8SkMatrix10isIdentityEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1E6SkRectLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEEC2IJLm0ELm1EEJS5_SA_EJEJEJDnDnEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSE_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EEC2IDnvEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EEC2IDnvEEOT_ = comdat any $_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2ILb1EvEEDn = comdat any $_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IS2_NS_18__default_init_tagEEEOT_OT0_ = comdat any $_ZNK14GrSurfaceProxy5widthEv = comdat any $_ZNK14GrSurfaceProxy10dimensionsEv = comdat any $_ZNK7SkISize5widthEv = comdat any $_ZNK14GrSurfaceProxy6heightEv = comdat any $_ZNK7SkISize6heightEv = comdat any $_ZNK6SkRect10intersectsERKS_ = comdat any $_ZNK7SkRRect6isRectEv = comdat any $_ZNK7SkRRect4rectEv = comdat any $_ZN6GrClip14IsPixelAlignedERK6SkRect = comdat any $_ZNK6SkRect5roundEP7SkIRect = comdat any $_ZNK7SkIRect8containsERK6SkRect = comdat any $_ZN6SkRect10IntersectsEffffffff = comdat any $_ZNSt4__Cr12__tuple_leafILm1E7SkIRectLb0EEC2IS1_vEEOT_ = comdat any $_ZNK7SkRRect7getTypeEv = comdat any $_ZN7SkIRect7setLTRBEiiii = comdat any $_ZNSt4__Cr12__tuple_leafILm1E7SkIRectLb0EEC2IRS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1E7SkIRectLb0EE3getEv = comdat any $_ZNK7SkIRect7width64Ev = comdat any $_ZNK7SkIRect8height64Ev = comdat any $_ZNKSt4__Cr12__tuple_leafILm2EPKN4skvx3VecILi2EsEELb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERKN4skvx3VecILi2EsEELb0EEC2IS5_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERKN4skvx3VecILi2EsEELb0EE3getEv = comdat any $_ZNK6SkSpanIKN4skvx3VecILi2EsEEE7subspanEmm = comdat any $_ZN15SkMakeZipDetail16ContiguousMemoryI6SkSpanIKN4skvx3VecILi2EsEEEE4DataES6_ = comdat any $_ZN15SkMakeZipDetail11PickOneSizeI6SkSpanIPKN6sktext3gpu5GlyphEEJS1_IKN4skvx3VecILi2EsEEEEE4SizeES7_SC_ = comdat any $_ZNK6SkSpanIKN4skvx3VecILi2EsEEE4dataEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2EPKN4skvx3VecILi2EsEELb0EEC2IRS5_vEEOT_ = comdat any $_ZNK7SkIRect20containsNoEmptyCheckERKS_ = comdat any $_ZNK7SkIRect4leftEv = comdat any $_ZNK7SkIRect3topEv = comdat any $_ZNK7SkIRect5rightEv = comdat any $_ZNK7SkIRect6bottomEv = comdat any $_ZNSt4__Cr3tieIJffffEEENS_5tupleIJDpRT_EEES4_ = comdat any $_ZNSt4__Cr5tupleIJRfS1_S1_S1_EEaSIJiiiiELi0EEERS2_ONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr10make_tupleIJiiiiEEENS_5tupleIJDpNS_18__unwrap_ref_decayIT_E4typeEEEEDpOS3_ = comdat any $_ZNSt4__Cr3tieIJttttEEENS_5tupleIJDpRT_EEES4_ = comdat any $_ZNSt4__Cr5tupleIJRtS1_S1_S1_EEaSIJiiiiELi0EEERS2_ONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr5tupleIJRfS1_S1_S1_EEC2INS_4_AndELi0EEES1_S1_S1_S1_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2ELm3EEEEJRfS3_S3_S3_EEC2IJLm0ELm1ELm2ELm3EEJS3_S3_S3_S3_EJEJEJS3_S3_S3_S3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERfLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERfLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERfLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm3ERfLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr27__memberwise_forward_assignINS_5tupleIJRfS2_S2_S2_EEENS1_IJiiiiEEEJiiiiEJLm0ELm1ELm2ELm3EEEEvRT_OT0_NS_13__tuple_typesIJDpT1_EEENS_15__tuple_indicesIJXspT2_EEEE = comdat any $_ZNSt4__Cr9__swallowIJiiiiEEEvDpOT_ = comdat any $_ZNSt4__Cr3getILm0EJiiiiEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS5_ = comdat any $_ZNSt4__Cr3getILm0EJRfS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm1EJiiiiEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS5_ = comdat any $_ZNSt4__Cr3getILm1EJRfS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm2EJiiiiEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS5_ = comdat any $_ZNSt4__Cr3getILm2EJRfS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm3EJiiiiEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS5_ = comdat any $_ZNSt4__Cr3getILm3EJRfS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERfLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERfLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2EiLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERfLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm3EiLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm3ERfLb0EE3getEv = comdat any $_ZNSt4__Cr5tupleIJiiiiEEC2IJiiiiELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2ELm3EEEEJiiiiEEC2IJLm0ELm1ELm2ELm3EEJiiiiEJEJEJiiiiEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS6_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EiLb0EEC2IivEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1EiLb0EEC2IivEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2EiLb0EEC2IivEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm3EiLb0EEC2IivEEOT_ = comdat any $_ZNSt4__Cr5tupleIJRtS1_S1_S1_EEC2INS_4_AndELi0EEES1_S1_S1_S1_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2ELm3EEEEJRtS3_S3_S3_EEC2IJLm0ELm1ELm2ELm3EEJS3_S3_S3_S3_EJEJEJS3_S3_S3_S3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERtLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERtLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERtLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm3ERtLb0EEC2IS1_vEEOT_ = comdat any $_ZNSt4__Cr27__memberwise_forward_assignINS_5tupleIJRtS2_S2_S2_EEENS1_IJiiiiEEEJiiiiEJLm0ELm1ELm2ELm3EEEEvRT_OT0_NS_13__tuple_typesIJDpT1_EEENS_15__tuple_indicesIJXspT2_EEEE = comdat any $_ZNSt4__Cr3getILm0EJRtS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm1EJRtS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm2EJRtS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr3getILm3EJRtS1_S1_S1_EEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERtLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERtLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm2ERtLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_leafILm3ERtLb0EE3getEv = comdat any $_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2IS2_S6_EEOT_OT0_ = comdat any $_ZNK5sk_spI8SkStrikeE3getEv = comdat any $_ZN4GrOp4MakeIN5skgpu2v111AtlasTextOpEJNS3_8MaskTypeEbi6SkRectRPNS3_8GeometryE7GrPaintEEENSt4__Cr10unique_ptrIS_NSA_14default_deleteIS_EEEEP18GrRecordingContextDpOT0_ = comdat any $_ZN12SkReadBuffer16validateCanReadNIN4skvx3VecILi2EsEEEEbm = comdat any $_ZN6SkSpanIN4skvx3VecILi2EsEEEC2EPS2_m = comdat any $_ZNKSt4__Cr23__optional_storage_baseIN6sktext3gpu11GlyphVectorELb0EE9has_valueEv = comdat any $_ZNSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEptEv = comdat any $_ZNRSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEE5valueEv = comdat any $_ZNSt4__Cr24__optional_destruct_baseIN6sktext3gpu11GlyphVectorELb0EED2Ev = comdat any $_ZNK12SkReadBuffer9availableEv = comdat any $_ZNRSt4__Cr23__optional_storage_baseIN6sktext3gpu11GlyphVectorELb0EE5__getEv = comdat any $_ZN6SkSpanIKN4skvx3VecILi2EsEEEC2IS2_vEERKS_IT_E = comdat any $_ZNK6SkSpanIN4skvx3VecILi2EsEEE4dataEv = comdat any $_ZNK6SkSpanIN4skvx3VecILi2EsEEE4sizeEv = comdat any $_ZNK6SkSpanIN4skvx3VecILi2EsEEE5beginEv = comdat any $_ZNSt4__Cr27__throw_bad_optional_accessEv = comdat any $_ZNRSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEdeEv = comdat any $_ZN12SkReadBuffer16validateCanReadNI7SkPointEEbm = comdat any $_ZN12SkReadBuffer9readPointEv = comdat any $_ZN12SkReadBuffer16validateCanReadNIiEEbm = comdat any $_Z4SkToItiET_T0_ = comdat any $_ZNKSt4__Cr23__optional_storage_baseI16SkAutoDescriptorLb0EE9has_valueEv = comdat any $_ZNRSt4__Cr8optionalI16SkAutoDescriptorE5valueEv = comdat any $_ZNSt4__Cr8optionalI16SkAutoDescriptorEptEv = comdat any $_ZneI8SkStrikeEbRK5sk_spIT_EDn = comdat any $_Z15SkMakeEnumerateI6SkSpanItEPtE11SkEnumerateIT0_T_EOS5_ = comdat any $_ZNK11SkEnumerateIPt6SkSpanItEE5beginEv = comdat any $_ZNK11SkEnumerateIPt6SkSpanItEE3endEv = comdat any $_ZNK11SkEnumerateIPt6SkSpanItEE8IteratorneERKS4_ = comdat any $_ZN11SkEnumerateIPt6SkSpanItEE8IteratordeEv = comdat any $_ZNSt4__Cr3getILm0EJmRtEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZNSt4__Cr3getILm1EJmRtEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZN11SkEnumerateIPt6SkSpanItEE8IteratorppEv = comdat any $_ZNSt4__Cr24__optional_destruct_baseI16SkAutoDescriptorLb0EED2Ev = comdat any $_ZNRSt4__Cr23__optional_storage_baseI16SkAutoDescriptorLb0EE5__getEv = comdat any $_ZNK5sk_spI8SkStrikeEcvbEv = comdat any $_ZN11SkEnumerateIPt6SkSpanItEEC2EOS2_ = comdat any $_ZNSt4__Cr5beginI6SkSpanItEEEDTcldtfp_5beginEERT_ = comdat any $_ZNSt4__Cr3endI6SkSpanItEEEDTcldtfp_3endEERT_ = comdat any $_ZNK6SkSpanItE3endEv = comdat any $_ZN11SkEnumerateIPt6SkSpanItEE8IteratorC2ElS0_ = comdat any $_ZNK11SkEnumerateIPt6SkSpanItEE5ssizeEv = comdat any $_ZNSt4__Cr8distanceIPtEENS_15iterator_traitsIT_E15difference_typeES3_S3_ = comdat any $_ZNSt4__Cr10__distanceIPtEENS_15iterator_traitsIT_E15difference_typeES3_S3_NS_26random_access_iterator_tagE = comdat any $_ZN11SkEnumerateIPt6SkSpanItEE10MakeResultEmRt = comdat any $_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJNS1_IJRtEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOS6_DpOS7_ = comdat any $_ZNSt4__Cr3tieIJtEEENS_5tupleIJDpRT_EEES4_ = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEENS1_IJRtEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SE_SG_SJ_ = comdat any $_ZNSt4__Cr5tupleIJmRtEEC2IJOmS1_ELi0EEEONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEES5_EclINS1_IJRtEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SD_ = comdat any $_ZNSt4__Cr16forward_as_tupleIJmRtEEENS_5tupleIJDpOT_EEES5_ = comdat any $_ZNSt4__Cr3getILm0EJRtEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_ = comdat any $_ZNSt4__Cr5tupleIJOmRtEEC2IJmS2_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJOmRtEEC2IJLm0ELm1EEJS3_S4_EJEJEJmS4_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS8_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJmRtEEC2INS_5tupleIJOmS3_EEEvEEOT_ = comdat any $_ZNSt4__Cr3getILm0EJOmRtEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS7_ = comdat any $_ZNSt4__Cr3getILm1EJOmRtEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS7_ = comdat any $_ZNSt4__Cr5tupleIJRtEEC2INS_4_AndELi0EEES1_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJRtEEC2IJLm0EEJS3_EJEJEJS3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_ = comdat any $_ZN6sktext3gpu15SubRunAllocator12makePODArrayIP10SkDrawableEEPT_i = comdat any $_Z15SkMakeEnumerateI6SkSpanIPK7SkGlyphEPS3_E11SkEnumerateIT0_NSt4__Cr9monostateEERT_ = comdat any $_ZNK11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE5beginEv = comdat any $_ZNK11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE3endEv = comdat any $_ZNK11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE8IteratorneERKS7_ = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE8IteratordeEv = comdat any $_ZNSt4__Cr3getILm0EJmRPK7SkGlyphEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr3getILm1EJmRPK7SkGlyphEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE8IteratorppEv = comdat any $_Z10SkMakeSpanIP10SkDrawableiE6SkSpanIT_EPS3_T0_ = comdat any $_ZN6sktext3gpu10BagOfBytes16allocateBytesForIP10SkDrawableEEPci = comdat any $_ZZN6sktext3gpu10BagOfBytes16allocateBytesForIP10SkDrawableEEPciENKUlvE_clEv = comdat any $_ZNSt4__Cr5beginI6SkSpanIPK7SkGlyphEEEDTcldtfp_5beginEERT_ = comdat any $_ZNSt4__Cr3endI6SkSpanIPK7SkGlyphEEEDTcldtfp_3endEERT_ = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEEC2ES3_S3_ = comdat any $_ZNK6SkSpanIPK7SkGlyphE5beginEv = comdat any $_ZNK6SkSpanIPK7SkGlyphE3endEv = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEEC2ElS3_S3_ = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE8IteratorC2ElS3_ = comdat any $_ZNK11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE5ssizeEv = comdat any $_ZNSt4__Cr8distanceIPPK7SkGlyphEENS_15iterator_traitsIT_E15difference_typeES6_S6_ = comdat any $_ZNSt4__Cr10__distanceIPPK7SkGlyphEENS_15iterator_traitsIT_E15difference_typeES6_S6_NS_26random_access_iterator_tagE = comdat any $_ZN11SkEnumerateIPPK7SkGlyphNSt4__Cr9monostateEE10MakeResultEmRS2_ = comdat any $_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJNS1_IJRPK7SkGlyphEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOS9_DpOSA_ = comdat any $_ZNSt4__Cr3tieIJPK7SkGlyphEEENS_5tupleIJDpRT_EEES7_ = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEENS1_IJRPK7SkGlyphEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SH_SJ_SM_ = comdat any $_ZNSt4__Cr5tupleIJmRPK7SkGlyphEEC2IJOmS4_ELi0EEEONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEES5_EclINS1_IJRPK7SkGlyphEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SG_ = comdat any $_ZNSt4__Cr16forward_as_tupleIJmRPK7SkGlyphEEENS_5tupleIJDpOT_EEES8_ = comdat any $_ZNSt4__Cr3getILm0EJRPK7SkGlyphEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_ = comdat any $_ZNSt4__Cr5tupleIJOmRPK7SkGlyphEEC2IJmS5_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJOmRPK7SkGlyphEEC2IJLm0ELm1EEJS3_S7_EJEJEJmS7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERPK7SkGlyphLb0EEC2IS4_vEEOT_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERPK7SkGlyphLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJmRPK7SkGlyphEEC2INS_5tupleIJOmS6_EEEvEEOT_ = comdat any $_ZNSt4__Cr3getILm0EJOmRPK7SkGlyphEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_ = comdat any $_ZNSt4__Cr3getILm1EJOmRPK7SkGlyphEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_ = comdat any $_ZNSt4__Cr12__tuple_leafILm1ERPK7SkGlyphLb0EE3getEv = comdat any $_ZNSt4__Cr5tupleIJRPK7SkGlyphEEC2INS_4_AndELi0EEES4_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJRPK7SkGlyphEEC2IJLm0EEJS6_EJEJEJS6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ERPK7SkGlyphLb0EEC2IS4_vEEOT_ = comdat any $_ZN6SkSpanIP10SkDrawableEC2EPS1_m = comdat any $_Z15SkMakeEnumerateIK6SkSpanI7SkPointEPS1_E11SkEnumerateIT0_NSt4__Cr9monostateEERT_ = comdat any $_ZNK11SkEnumerateIP7SkPointNSt4__Cr9monostateEE5beginEv = comdat any $_ZNK11SkEnumerateIP7SkPointNSt4__Cr9monostateEE3endEv = comdat any $_ZNK11SkEnumerateIP7SkPointNSt4__Cr9monostateEE8IteratorneERKS5_ = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEE8IteratordeEv = comdat any $_ZNSt4__Cr3getILm0EJmR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS7_ = comdat any $_ZNSt4__Cr3getILm1EJmR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS7_ = comdat any $_ZNK6SkSpanIP10SkDrawableEixEm = comdat any $_ZNK8SkMatrix7mapRectEP6SkRect22SkApplyPerspectiveClip = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEE8IteratorppEv = comdat any $_ZNSt4__Cr5beginI6SkSpanI7SkPointEEEDTcldtfp_5beginEERKT_ = comdat any $_ZNSt4__Cr3endI6SkSpanI7SkPointEEEDTcldtfp_3endEERKT_ = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEEC2ES1_S1_ = comdat any $_ZNK6SkSpanI7SkPointE3endEv = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEEC2ElS1_S1_ = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEE8IteratorC2ElS1_ = comdat any $_ZNK11SkEnumerateIP7SkPointNSt4__Cr9monostateEE5ssizeEv = comdat any $_ZNSt4__Cr8distanceIP7SkPointEENS_15iterator_traitsIT_E15difference_typeES4_S4_ = comdat any $_ZNSt4__Cr10__distanceIP7SkPointEENS_15iterator_traitsIT_E15difference_typeES4_S4_NS_26random_access_iterator_tagE = comdat any $_ZN11SkEnumerateIP7SkPointNSt4__Cr9monostateEE10MakeResultEmRS0_ = comdat any $_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJNS1_IJR7SkPointEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOS7_DpOS8_ = comdat any $_ZNSt4__Cr3tieIJ7SkPointEEENS_5tupleIJDpRT_EEES5_ = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEENS1_IJR7SkPointEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SF_SH_SK_ = comdat any $_ZNSt4__Cr5tupleIJmR7SkPointEEC2IJOmS2_ELi0EEEONS0_IJDpT_EEE = comdat any $_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEES5_EclINS1_IJR7SkPointEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SE_ = comdat any $_ZNSt4__Cr16forward_as_tupleIJmR7SkPointEEENS_5tupleIJDpOT_EEES6_ = comdat any $_ZNSt4__Cr3getILm0EJR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS7_ = comdat any $_ZNSt4__Cr5tupleIJOmR7SkPointEEC2IJmS3_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJOmR7SkPointEEC2IJLm0ELm1EEJS3_S5_EJEJEJmS5_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS9_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER7SkPointLb0EE3getEv = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJmR7SkPointEEC2INS_5tupleIJOmS4_EEEvEEOT_ = comdat any $_ZNSt4__Cr3getILm0EJOmR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS8_ = comdat any $_ZNSt4__Cr3getILm1EJOmR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS8_ = comdat any $_ZNSt4__Cr5tupleIJR7SkPointEEC2INS_4_AndELi0EEES2_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJR7SkPointEEC2IJLm0EEJS4_EJEJEJS4_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS8_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0ER7SkPointLb0EEC2IS2_vEEOT_ = comdat any $_ZNK6SkSpanI7SkPointE10size_bytesEv = comdat any $_ZNK6SkSpanItE10size_bytesEv = comdat any $_Z7SkCountI6SkSpanI7SkPointEEiRKT_ = comdat any $_ZNSt4__Cr4sizeI6SkSpanI7SkPointEEEDTcldtfp_4sizeEERKT_ = comdat any $_ZN5sk_spI6GrSlugEC2EDn = comdat any $_ZN12SkReadBuffer9readPaintEv = comdat any $_ZNK12SkReadBuffer7isValidEv = comdat any $_ZNKSt4__Cr17__compressed_pairIPN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE5firstEv = comdat any $_ZNKSt4__Cr22__compressed_pair_elemIPN5skgpu2v118SurfaceDrawContextELi0ELb0EE5__getEv = comdat any $_ZZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEiENKUlvE_clEv = comdat any $_ZZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEiENKUlvE0_clEv = comdat any $_ZNSt4__Cr5tupleIJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEC2IJRPvRiS6_ELi0EEEDpOT_ = comdat any $_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS4_15SubRunAllocatorEEEC2IJLm0ELm1ELm2EEJS7_iS8_EJEJEJRPvRiS8_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSF_IJDpT2_EEEDpOT3_ = comdat any $_ZNSt4__Cr12__tuple_leafILm0EN6sktext3gpu17SubRunInitializerI10GrTextBlobEELb0EEC2IRPvvEEOT_ = comdat any $_ZN6sktext3gpu17SubRunInitializerI10GrTextBlobEC2EPv = comdat any $_ZTV8SkRefCnt = comdat any $_ZTV12SkRefCntBase = comdat any $_ZTV26SkGlyphRunPainterInterface = comdat any $_ZTV13GrAtlasSubRun = comdat any $_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE18kMinHeapAllocCountE = comdat any $_ZZNSt4__Cr10__function8__policy14__create_emptyEvE9__policy_ = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE7nullifyIS0_EE = comdat any $_ZN5SkZipIJ14SkGlyphVariant7SkPointEE7nullifyIS1_EE = comdat any $_ZNSt4__Cr8in_placeE = comdat any @_ZTV8GrSubRun = hidden unnamed_addr constant { [11 x i8*] } { [11 x i8*] [i8* null, i8* null, i8* bitcast (void (%15*)* @_ZN8GrSubRunD1Ev to i8*), i8* bitcast (void (%15*)* @_ZN8GrSubRunD0Ev to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)] }, align 8 @0 = private unnamed_addr constant [58 x i8] c"../../third_party/skia/src/gpu/ganesh/text/GrTextBlob.cpp\00", align 1 @1 = private unnamed_addr constant [40 x i8] c"This is not a subclass of GrBlobSubRun.\00", align 1 @2 = private unnamed_addr constant %0 { i32 -1431655766, i32 -1431655766, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, i32 -1431655766, %1 { float 0xFFFFFFFFE0000000, i32 -1431655766 }, i32 -1431655766, %2 { [9 x float] [float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000], i32 -1431655766 }, i8 -86, i8 -86, i8 -86, i8 -86 }, align 4 @3 = private unnamed_addr constant { { %3, [3 x i8], %4 } } { { %3, [3 x i8], %4 } { %3 { i8 -86 }, [3 x i8] c"\AA\AA\AA", %4 { %5 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 } } } }, align 4 @4 = private unnamed_addr constant [40 x i8] c"All blobs are created by placement new.\00", align 1 @5 = private unnamed_addr constant { { %6, %8, [4 x i8], %9 } } { { %6, %8, [4 x i8], %9 } { %6 { %7 { i8* inttoptr (i64 -6148914691236517206 to i8*) } }, %8 { i32 -1431655766 }, [4 x i8] c"\AA\AA\AA\AA", %9 { %10 { %11 { i8* inttoptr (i64 -6148914691236517206 to i8*), i32 -1431655766, %12 { i32 -1431655766 } } } } } }, align 8 @6 = private unnamed_addr constant [11 x i8] c"GrTextBlob\00", align 1 @_ZTV10GrTextBlob = hidden unnamed_addr constant { [11 x i8*], [9 x i8*] } { [11 x i8*] [i8* null, i8* null, i8* bitcast (void (%178*)* @_ZN10GrTextBlobD1Ev to i8*), i8* bitcast (void (%178*)* @_ZN10GrTextBlobD0Ev to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*), i8* bitcast (%2* (%178*)* @_ZNK10GrTextBlob21initialPositionMatrixEv to i8*), i8* bitcast (void (%178*, %530*, %132*)* @_ZN10GrTextBlob18processDeviceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeE to i8*), i8* bitcast (void (%178*, %530*, %196*, %128*, float)* @_ZN10GrTextBlob18processSourcePathsERK5SkZipIJ14SkGlyphVariant7SkPointEERK6SkFontRK12SkDescriptorf to i8*), i8* bitcast (void (%178*, %530*, %132*, %128*, float)* @_ZN10GrTextBlob22processSourceDrawablesERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeERK12SkDescriptorf to i8*), i8* bitcast (void (%178*, %530*, %132*, float, %196*, %546*)* @_ZN10GrTextBlob17processSourceSDFTERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEfRK6SkFontRK17GrSDFTMatrixRange to i8*), i8* bitcast (void (%178*, %530*, %132*, float)* @_ZN10GrTextBlob18processSourceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEf to i8*)], [9 x i8*] [i8* inttoptr (i64 -16 to i8*), i8* null, i8* bitcast (void (%178*)* @_ZThn16_N10GrTextBlobD1Ev to i8*), i8* bitcast (void (%178*)* @_ZThn16_N10GrTextBlobD0Ev to i8*), i8* bitcast (void (%178*, %530*, %132*)* @_ZThn16_N10GrTextBlob18processDeviceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeE to i8*), i8* bitcast (void (%178*, %530*, %132*, float)* @_ZThn16_N10GrTextBlob18processSourceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEf to i8*), i8* bitcast (void (%178*, %530*, %196*, %128*, float)* @_ZThn16_N10GrTextBlob18processSourcePathsERK5SkZipIJ14SkGlyphVariant7SkPointEERK6SkFontRK12SkDescriptorf to i8*), i8* bitcast (void (%178*, %530*, %132*, %128*, float)* @_ZThn16_N10GrTextBlob22processSourceDrawablesERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeERK12SkDescriptorf to i8*), i8* bitcast (void (%178*, %530*, %132*, float, %196*, %546*)* @_ZThn16_N10GrTextBlob17processSourceSDFTERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEfRK6SkFontRK17GrSDFTMatrixRange to i8*)] }, align 8 @7 = private unnamed_addr constant %13 <{ %14 { [16 x float] [float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000] }, %2 { [9 x float] [float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000], i32 -1431655766 }, i8 -86, [3 x i8] c"\AA\AA\AA" }>, align 4 @8 = internal global [6 x %15* (%19*, %27*, %10*, %68*)*] [%15* (%19*, %27*, %10*, %68*)* null, %15* (%19*, %27*, %10*, %68*)* @47, %15* (%19*, %27*, %10*, %68*)* @48, %15* (%19*, %27*, %10*, %68*)* @49, %15* (%19*, %27*, %10*, %68*)* @50, %15* (%19*, %27*, %10*, %68*)* @51], align 16 @_ZTV20GrTextReferenceFrame = available_externally unnamed_addr constant { [6 x i8*] } { [6 x i8*] [i8* null, i8* null, i8* bitcast (void (%19*)* @_ZN20GrTextReferenceFrameD1Ev to i8*), i8* bitcast (void (%19*)* @_ZN20GrTextReferenceFrameD0Ev to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)] }, align 8 @_ZTV8SkRefCnt = linkonce_odr unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* null, i8* bitcast (void (%657*)* @_ZN12SkRefCntBaseD2Ev to i8*), i8* bitcast (void (%529*)* @_ZN8SkRefCntD0Ev to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*)] }, comdat, align 8 @_ZTV12SkRefCntBase = linkonce_odr unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* null, i8* bitcast (void (%657*)* @_ZN12SkRefCntBaseD2Ev to i8*), i8* bitcast (void (%657*)* @_ZN12SkRefCntBaseD0Ev to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*)] }, comdat, align 8 @_ZTV26SkGlyphRunPainterInterface = linkonce_odr hidden unnamed_addr constant { [9 x i8*] } { [9 x i8*] [i8* null, i8* null, i8* bitcast (void (%180*)* @_ZN26SkGlyphRunPainterInterfaceD2Ev to i8*), i8* bitcast (void (%180*)* @_ZN26SkGlyphRunPainterInterfaceD0Ev to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)] }, comdat, align 8 @9 = private unnamed_addr constant [54 x i8] c"../../third_party/skia/src/text/gpu/SubRunAllocator.h\00", align 1 @10 = private unnamed_addr constant [11 x i8] c"assert(%s)\00", align 1 @11 = private unnamed_addr constant [20 x i8] c"0 <= n && n < kMaxN\00", align 1 @12 = internal unnamed_addr constant { [11 x i8*] } { [11 x i8*] [i8* null, i8* null, i8* bitcast (void (%539*)* @68 to i8*), i8* bitcast (void (%539*)* @69 to i8*), i8* bitcast (void (%539*, %268*, %294*, %13*, <2 x float>, %73*, %295*)* @70 to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (i32 (%539*)* @71 to i8*), i8* bitcast (i1 (%539*, %73*, %2*)* @72 to i8*), i8* bitcast (%528* (%539*)* @73 to i8*), i8* bitcast (i32 (%539*)* @74 to i8*), i8* bitcast (void (%539*, %601*)* @75 to i8*)] }, align 8 @13 = private unnamed_addr constant %73 <{ %74 { %75* inttoptr (i64 -6148914691236517206 to %75*) }, %77 { %78* inttoptr (i64 -6148914691236517206 to %78*) }, %79 { %80* inttoptr (i64 -6148914691236517206 to %80*) }, %81 { %82* inttoptr (i64 -6148914691236517206 to %82*) }, %83 { %84* inttoptr (i64 -6148914691236517206 to %84*) }, %85 { %86* inttoptr (i64 -6148914691236517206 to %86*) }, %87 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 }, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, %88 { %89 { i32 -1431655766 } }, [4 x i8] c"\AA\AA\AA\AA" }>, align 8 @14 = private unnamed_addr constant { %90, %74, { i32, float, { i32, [4 x i8], float*, [16 x i8] } } } { %90 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, i32 -1431655766 }, %74 { %75* inttoptr (i64 -6148914691236517206 to %75*) }, { i32, float, { i32, [4 x i8], float*, [16 x i8] } } { i32 -1431655766, float 0xFFFFFFFFE0000000, { i32, [4 x i8], float*, [16 x i8] } { i32 -1431655766, [4 x i8] c"\AA\AA\AA\AA", float* inttoptr (i64 -6148914691236517206 to float*), [16 x i8] c"\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA" } } }, align 8 @15 = private unnamed_addr constant %44 { float 0x47EFFFFFE0000000, float 0x47EFFFFFE0000000, float 0xC7EFFFFFE0000000, float 0xC7EFFFFFE0000000 }, align 4 @16 = internal unnamed_addr constant { [17 x i8*], [10 x i8*] } { [17 x i8*] [i8* null, i8* null, i8* bitcast (void (%576*)* @112 to i8*), i8* bitcast (void (%576*)* @113 to i8*), i8* bitcast (void (%576*, %268*, %294*, %13*, <2 x float>, %73*, %295*)* @114 to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (i32 (%576*)* @115 to i8*), i8* bitcast (i1 (%576*, %73*, %2*)* @116 to i8*), i8* bitcast (%528* (%576*)* @117 to i8*), i8* bitcast (i32 (%576*)* @118 to i8*), i8* bitcast (void (%576*, %601*)* @119 to i8*), i8* bitcast ({ %294*, %472* } (%576*, %294*, %13*, <2 x float>, %73*, %295*)* @120 to i8*), i8* bitcast (void (%576*, %734*)* @121 to i8*), i8* bitcast (i64 (%576*, i32, i32, %741*)* @122 to i8*), i8* bitcast (void (%576*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @123 to i8*), i8* bitcast (i64 (%576*, %2*)* @124 to i8*), i8* bitcast (i32 (%576*)* @125 to i8*)], [10 x i8*] [i8* inttoptr (i64 -16 to i8*), i8* null, i8* bitcast (void (%576*)* @126 to i8*), i8* bitcast (void (%576*)* @127 to i8*), i8* bitcast (i64 (%576*, %2*)* @128 to i8*), i8* bitcast (i32 (%576*)* @129 to i8*), i8* bitcast ({ %294*, %472* } (%576*, %294*, %13*, <2 x float>, %73*, %295*)* @130 to i8*), i8* bitcast (void (%576*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @131 to i8*), i8* bitcast (void (%576*, %734*)* @132 to i8*), i8* bitcast (i64 (%576*, i32, i32, %741*)* @133 to i8*)] }, align 8 @_ZTV13GrAtlasSubRun = linkonce_odr hidden unnamed_addr constant { [10 x i8*] } { [10 x i8*] [i8* null, i8* null, i8* bitcast (void (%528*)* @_ZN13GrAtlasSubRunD2Ev to i8*), i8* bitcast (void (%528*)* @_ZN13GrAtlasSubRunD0Ev to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)] }, comdat, align 8 @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE18kMinHeapAllocCountE = linkonce_odr hidden constant i32 8, comdat, align 4 @_ZZNSt4__Cr10__function8__policy14__create_emptyEvE9__policy_ = linkonce_odr hidden constant %91 { i8* (i8*)* null, void (i8*)* null, i8 1, %92* null }, comdat, align 8 @17 = internal constant %93 { float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00 }, align 4 @18 = private unnamed_addr constant { { %94, %8, [4 x i8], %9 } } { { %94, %8, [4 x i8], %9 } { %94 { %95 { i8* inttoptr (i64 -6148914691236517206 to i8*) } }, %8 { i32 -1431655766 }, [4 x i8] c"\AA\AA\AA\AA", %9 { %10 { %11 { i8* inttoptr (i64 -6148914691236517206 to i8*), i32 -1431655766, %12 { i32 -1431655766 } } } } } }, align 8 @19 = private unnamed_addr constant [10 x i8] c"Make Slug\00", align 1 @20 = private unnamed_addr constant [19 x i8] c"allocSizeHint >= 0\00", align 1 @21 = private unnamed_addr constant [51 x i8] c"0 <= requestedSize && requestedSize < kMaxByteSize\00", align 1 @22 = private unnamed_addr constant [53 x i8] c"SkIsPow2(assumedAlignment) && SkIsPow2(maxAlignment)\00", align 1 @23 = private unnamed_addr constant [43 x i8] c"INT_MAX - SkTo(sizeof(T)) > extraSize\00", align 1 @24 = internal unnamed_addr constant { [14 x i8*], [9 x i8*] } { [14 x i8*] [i8* null, i8* null, i8* bitcast (void (%598*)* @332 to i8*), i8* bitcast (void (%598*)* @333 to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*), i8* bitcast (%2* (%598*)* @334 to i8*), i8* bitcast ({ <2 x float>, <2 x float> } (%598*)* @335 to i8*), i8* bitcast (%73* (%598*)* @336 to i8*), i8* bitcast (void (%598*, %601*)* @337 to i8*), i8* bitcast (void (%598*, %530*, %132*)* @338 to i8*), i8* bitcast (void (%598*, %530*, %132*, float)* @339 to i8*), i8* bitcast (void (%598*, %530*, %196*, %128*, float)* @340 to i8*), i8* bitcast (void (%598*, %530*, %132*, %128*, float)* @341 to i8*), i8* bitcast (void (%598*, %530*, %132*, float, %196*, %546*)* @342 to i8*)], [9 x i8*] [i8* inttoptr (i64 -16 to i8*), i8* null, i8* bitcast (void (%598*)* @343 to i8*), i8* bitcast (void (%598*)* @344 to i8*), i8* bitcast (void (%598*, %530*, %132*)* @345 to i8*), i8* bitcast (void (%598*, %530*, %132*, float)* @346 to i8*), i8* bitcast (void (%598*, %530*, %196*, %128*, float)* @347 to i8*), i8* bitcast (void (%598*, %530*, %132*, %128*, float)* @348 to i8*), i8* bitcast (void (%598*, %530*, %132*, float, %196*, %546*)* @349 to i8*)] }, align 8 @_ZTV6GrSlug = available_externally unnamed_addr constant { [9 x i8*] } { [9 x i8*] [i8* null, i8* null, i8* bitcast (void (%579*)* @_ZN6GrSlugD1Ev to i8*), i8* bitcast (void (%579*)* @_ZN6GrSlugD0Ev to i8*), i8* bitcast (void (%657*)* @_ZNK12SkRefCntBase16internal_disposeEv to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*)] }, align 8 @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE7nullifyIS0_EE = linkonce_odr hidden constant %96* null, comdat, align 8 @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE7nullifyIS1_EE = linkonce_odr hidden constant %5* null, comdat, align 8 @25 = internal unnamed_addr constant { [17 x i8*], [10 x i8*] } { [17 x i8*] [i8* null, i8* null, i8* bitcast (void (%622*)* @384 to i8*), i8* bitcast (void (%622*)* @385 to i8*), i8* bitcast (void (%622*, %268*, %294*, %13*, <2 x float>, %73*, %295*)* @386 to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (i32 (%622*)* @387 to i8*), i8* bitcast (i1 (%622*, %73*, %2*)* @388 to i8*), i8* bitcast (%528* (%622*)* @389 to i8*), i8* bitcast (i32 (%622*)* @390 to i8*), i8* bitcast (void (%622*, %601*)* @391 to i8*), i8* bitcast (i64 (%622*, %2*)* @392 to i8*), i8* bitcast (i32 (%622*)* @393 to i8*), i8* bitcast ({ %294*, %472* } (%622*, %294*, %13*, <2 x float>, %73*, %295*)* @394 to i8*), i8* bitcast (void (%622*, %734*)* @395 to i8*), i8* bitcast (i64 (%622*, i32, i32, %741*)* @396 to i8*), i8* bitcast (void (%622*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @397 to i8*)], [10 x i8*] [i8* inttoptr (i64 -16 to i8*), i8* null, i8* bitcast (void (%622*)* @398 to i8*), i8* bitcast (void (%622*)* @399 to i8*), i8* bitcast (i64 (%622*, %2*)* @400 to i8*), i8* bitcast (i32 (%622*)* @401 to i8*), i8* bitcast ({ %294*, %472* } (%622*, %294*, %13*, <2 x float>, %73*, %295*)* @402 to i8*), i8* bitcast (void (%622*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @403 to i8*), i8* bitcast (void (%622*, %734*)* @404 to i8*), i8* bitcast (i64 (%622*, i32, i32, %741*)* @405 to i8*)] }, align 8 @26 = private unnamed_addr constant { { %3, [3 x i8], %4 } } { { %3, [3 x i8], %4 } { %3 { i8 -86 }, [3 x i8] c"\AA\AA\AA", %4 { %5 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 } } } }, align 4 @27 = private unnamed_addr constant { { %3, [3 x i8], %118 } } { { %3, [3 x i8], %118 } { %3 { i8 -86 }, [3 x i8] c"\AA\AA\AA", %118 { %44 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 } } } }, align 4 @28 = private unnamed_addr constant { { %3, [3 x i8], %4 } } { { %3, [3 x i8], %4 } { %3 { i8 -86 }, [3 x i8] c"\AA\AA\AA", %4 { %5 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 } } } }, align 4 @29 = internal unnamed_addr constant { [17 x i8*], [10 x i8*] } { [17 x i8*] [i8* null, i8* null, i8* bitcast (void (%637*)* @575 to i8*), i8* bitcast (void (%637*)* @576 to i8*), i8* bitcast (void (%637*, %268*, %294*, %13*, <2 x float>, %73*, %295*)* @577 to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (i32 (%637*)* @578 to i8*), i8* bitcast (i1 (%637*, %73*, %2*)* @579 to i8*), i8* bitcast (%528* (%637*)* @580 to i8*), i8* bitcast (i32 (%637*)* @581 to i8*), i8* bitcast (void (%637*, %601*)* @582 to i8*), i8* bitcast ({ %294*, %472* } (%637*, %294*, %13*, <2 x float>, %73*, %295*)* @583 to i8*), i8* bitcast (void (%637*, %734*)* @584 to i8*), i8* bitcast (i64 (%637*, i32, i32, %741*)* @585 to i8*), i8* bitcast (void (%637*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @586 to i8*), i8* bitcast (i64 (%637*, %2*)* @587 to i8*), i8* bitcast (i32 (%637*)* @588 to i8*)], [10 x i8*] [i8* inttoptr (i64 -16 to i8*), i8* null, i8* bitcast (void (%637*)* @589 to i8*), i8* bitcast (void (%637*)* @590 to i8*), i8* bitcast (i64 (%637*, %2*)* @591 to i8*), i8* bitcast (i32 (%637*)* @592 to i8*), i8* bitcast ({ %294*, %472* } (%637*, %294*, %13*, <2 x float>, %73*, %295*)* @593 to i8*), i8* bitcast (void (%637*, i8*, i32, i32, i32, %2*, <2 x float>, %290*)* @594 to i8*), i8* bitcast (void (%637*, %734*)* @595 to i8*), i8* bitcast (i64 (%637*, i32, i32, %741*)* @596 to i8*)] }, align 8 @_ZNSt4__Cr8in_placeE = linkonce_odr hidden constant %119 zeroinitializer, comdat, align 1 @30 = private unnamed_addr constant { { { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } } }, [7 x i8] } { { { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } } } { { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } } { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } } { { i8, [3 x i8], float, %120, %121, %122, %127 } { i8 -86, [3 x i8] c"\AA\AA\AA", float 0xFFFFFFFFE0000000, %120 { %5* inttoptr (i64 -6148914691236517206 to %5*), i64 -6148914691236517206 }, %121 { i16* inttoptr (i64 -6148914691236517206 to i16*), i64 -6148914691236517206 }, %122 { %123 <{ %124 { %101* inttoptr (i64 -6148914691236517206 to %101*) }, %125 { %126 { i32 -1431655766 } }, [4 x i8] c"\AA\AA\AA\AA" }> }, %127 <{ %128* inttoptr (i64 -6148914691236517206 to %128*), [124 x i8] c"\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA", [4 x i8] c"\AA\AA\AA\AA" }> } }, i8 -86 }> } } } } }, [7 x i8] c"\AA\AA\AA\AA\AA\AA\AA" }, align 8 @31 = private unnamed_addr constant { { { { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } } } }, [7 x i8] } { { { { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } } } } { { { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } } } { { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } } { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } } { { float, [4 x i8], %129, %130, %131, %132, %127 } { float 0xFFFFFFFFE0000000, [4 x i8] c"\AA\AA\AA\AA", %129 { %5* inttoptr (i64 -6148914691236517206 to %5*), i64 -6148914691236517206 }, %130 { i16* inttoptr (i64 -6148914691236517206 to i16*), i64 -6148914691236517206 }, %131 { %116** inttoptr (i64 -6148914691236517206 to %116**), i64 -6148914691236517206 }, %132 { %133* inttoptr (i64 -6148914691236517206 to %133*) }, %127 <{ %128* inttoptr (i64 -6148914691236517206 to %128*), [124 x i8] c"\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA", [4 x i8] c"\AA\AA\AA\AA" }> } }, i8 -86 }> } } } } }, [7 x i8] c"\AA\AA\AA\AA\AA\AA\AA" }, align 8 @32 = internal unnamed_addr constant { [11 x i8*] } { [11 x i8*] [i8* null, i8* null, i8* bitcast (void (%544*)* @686 to i8*), i8* bitcast (void (%544*)* @687 to i8*), i8* bitcast (void (%544*, %268*, %294*, %13*, <2 x float>, %73*, %295*)* @688 to i8*), i8* bitcast (%182* (%15*)* @_ZNK8GrSubRun8blobCastEv to i8*), i8* bitcast (i32 (%544*)* @689 to i8*), i8* bitcast (i1 (%544*, %73*, %2*)* @690 to i8*), i8* bitcast (%528* (%544*)* @691 to i8*), i8* bitcast (i32 (%544*)* @692 to i8*), i8* bitcast (void (%544*, %601*)* @693 to i8*)] }, align 8 @33 = private unnamed_addr constant %73 <{ %74 { %75* inttoptr (i64 -6148914691236517206 to %75*) }, %77 { %78* inttoptr (i64 -6148914691236517206 to %78*) }, %79 { %80* inttoptr (i64 -6148914691236517206 to %80*) }, %81 { %82* inttoptr (i64 -6148914691236517206 to %82*) }, %83 { %84* inttoptr (i64 -6148914691236517206 to %84*) }, %85 { %86* inttoptr (i64 -6148914691236517206 to %86*) }, %87 { float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000 }, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, %88 { %89 { i32 -1431655766 } }, [4 x i8] c"\AA\AA\AA\AA" }>, align 8 @34 = private unnamed_addr constant { { %94, %8, [4 x i8], %9 } } { { %94, %8, [4 x i8], %9 } { %94 { %95 { i8* inttoptr (i64 -6148914691236517206 to i8*) } }, %8 { i32 -1431655766 }, [4 x i8] c"\AA\AA\AA\AA", %9 { %10 { %11 { i8* inttoptr (i64 -6148914691236517206 to i8*), i32 -1431655766, %12 { i32 -1431655766 } } } } } }, align 8 @_ZN8GrSubRunD1Ev = hidden unnamed_addr alias void (%15*), void (%15*)* @_ZN8GrSubRunD2Ev @_ZN10GrTextBlobD1Ev = hidden unnamed_addr alias void (%178*), void (%178*)* @_ZN10GrTextBlobD2Ev @_ZN10GrTextBlobC1EON6sktext3gpu15SubRunAllocatorEiRK8SkMatrixj = hidden unnamed_addr alias void (%178*, %10*, i32, %2*, i32), void (%178*, %10*, i32, %2*, i32)* @_ZN10GrTextBlobC2EON6sktext3gpu15SubRunAllocatorEiRK8SkMatrixj ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN8GrSubRunD2Ev(%15* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #0 align 2 { %2 = alloca %15*, align 8 store %15* %0, %15** %2, align 8 %3 = load %15*, %15** %2, align 8 %4 = bitcast %15* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [11 x i8*] }, { [11 x i8*] }* @_ZTV8GrSubRun, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %4, align 8 %5 = getelementptr inbounds %15, %15* %3, i32 0, i32 1 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 ret void } ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev(%16* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5resetEPS1_(%16* noundef align 8 dereferenceable_or_null(8) %3, %15* noundef null) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN8GrSubRunD0Ev(%15* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #0 align 2 { %2 = alloca %15*, align 8 store %15* %0, %15** %2, align 8 %3 = load %15*, %15** %2, align 8 call void @llvm.trap() #22 unreachable } ; Function Attrs: cold noreturn nounwind declare void @llvm.trap() #2 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef %182* @_ZNK8GrSubRun8blobCastEv(%15* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #3 align 2 { %2 = alloca %15*, align 8 store %15* %0, %15** %2, align 8 %3 = load %15*, %15** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([58 x i8], [58 x i8]* @0, i64 0, i64 0), i32 noundef 78, i8* noundef getelementptr inbounds ([40 x i8], [40 x i8]* @1, i64 0, i64 0)) #23 unreachable } ; Function Attrs: noreturn null_pointer_is_valid declare void @_Z16SkAbort_FileLinePKciS0_z(i8* noundef, i32 noundef, i8* noundef, ...) #4 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob3Key4MakeERK14SkGlyphRunListRK7SkPaintRK14SkSurfacePropsRK11GrColorInfoRK8SkMatrixRK13GrSDFTControl(%183* noalias sret(%183) align 4 %0, %186* noundef align 8 dereferenceable(56) %1, %73* noundef align 8 dereferenceable(76) %2, %225* noundef align 4 dereferenceable(8) %3, %226* noundef align 8 dereferenceable(24) %4, %2* noundef align 4 dereferenceable(40) %5, %231* noundef align 4 dereferenceable(9) %6) #5 align 2 { %8 = alloca %186*, align 8 %9 = alloca %73*, align 8 %10 = alloca %225*, align 8 %11 = alloca %226*, align 8 %12 = alloca %2*, align 8 %13 = alloca %231*, align 8 %14 = alloca %1, align 4 %15 = alloca %80*, align 8 %16 = alloca i8, align 1 %17 = alloca i32, align 4 %18 = alloca %0, align 4 %19 = alloca i8, align 1 %20 = alloca i32, align 4 %21 = alloca i32, align 4 %22 = alloca %186*, align 8 %23 = alloca %188*, align 8 %24 = alloca %188*, align 8 %25 = alloca %188*, align 8 %26 = alloca float, align 4 %27 = alloca %5, align 4 store %186* %1, %186** %8, align 8 store %73* %2, %73** %9, align 8 store %225* %3, %225** %10, align 8 store %226* %4, %226** %11, align 8 store %2* %5, %2** %12, align 8 store %231* %6, %231** %13, align 8 %28 = bitcast %1* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %28) #21 %29 = getelementptr inbounds %1, %1* %14, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %29, align 4, !annotation !6 %30 = getelementptr inbounds %1, %1* %14, i32 0, i32 1 store i32 -1431655766, i32* %30, align 4, !annotation !6 %31 = bitcast %80** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %31) #21 store %80* inttoptr (i64 -6148914691236517206 to %80*), %80** %15, align 8, !annotation !6 %32 = load %73*, %73** %9, align 8 %33 = call noundef %80* @_ZNK7SkPaint13getMaskFilterEv(%73* noundef align 8 dereferenceable_or_null(76) %32) store %80* %33, %80** %15, align 8 call void @llvm.lifetime.start.p0i8(i64 1, i8* %16) #21 store i8 -86, i8* %16, align 1, !annotation !6 %34 = load %186*, %186** %8, align 8 %35 = call noundef zeroext i1 @_ZNK14SkGlyphRunList8canCacheEv(%186* noundef align 8 dereferenceable_or_null(56) %34) br i1 %35, label %36, label %57 36: ; preds = %7 %37 = load %73*, %73** %9, align 8 %38 = call noundef %75* @_ZNK7SkPaint13getPathEffectEv(%73* noundef align 8 dereferenceable_or_null(76) %37) %39 = icmp ne %75* %38, null br i1 %39, label %54, label %40 40: ; preds = %36 %41 = load %80*, %80** %15, align 8 %42 = icmp ne %80* %41, null br i1 %42, label %43, label %52 43: ; preds = %40 %44 = load %80*, %80** %15, align 8 %45 = call noundef %232* @_Z6as_MFBPK12SkMaskFilter(%80* noundef %44) %46 = bitcast %232* %45 to i1 (%232*, %1*)*** %47 = load i1 (%232*, %1*)**, i1 (%232*, %1*)*** %46, align 8 %48 = getelementptr inbounds i1 (%232*, %1*)*, i1 (%232*, %1*)** %47, i64 13 %49 = load i1 (%232*, %1*)*, i1 (%232*, %1*)** %48, align 8 %50 = call noundef zeroext i1 %49(%232* noundef align 8 dereferenceable_or_null(12) %45, %1* noundef %14) %51 = xor i1 %50, true br label %52 52: ; preds = %43, %40 %53 = phi i1 [ false, %40 ], [ %51, %43 ] br label %54 54: ; preds = %52, %36 %55 = phi i1 [ true, %36 ], [ %53, %52 ] %56 = xor i1 %55, true br label %57 57: ; preds = %54, %7 %58 = phi i1 [ false, %7 ], [ %56, %54 ] %59 = zext i1 %58 to i8 store i8 %59, i8* %16, align 1 %60 = bitcast i32* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %60) #21 store i32 -1431655766, i32* %17, align 4, !annotation !6 %61 = load %226*, %226** %11, align 8 %62 = call noundef zeroext i1 @_ZNK11GrColorInfo17isLinearlyBlendedEv(%226* noundef align 8 dereferenceable_or_null(24) %61) %63 = zext i1 %62 to i64 %64 = select i1 %62, i32 2, i32 3 store i32 %64, i32* %17, align 4 %65 = bitcast %0* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 76, i8* %65) #21 %66 = bitcast %0* %18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %66, i8* align 4 bitcast (%0* @2 to i8*), i64 76, i1 false), !annotation !6 call void @_ZN10GrTextBlob3KeyC2Ev(%0* noundef align 4 dereferenceable_or_null(76) %18) %67 = load i8, i8* %16, align 1, !range !7 %68 = trunc i8 %67 to i1 br i1 %68, label %69, label %206 69: ; preds = %57 call void @llvm.lifetime.start.p0i8(i64 1, i8* %19) #21 store i8 -86, i8* %19, align 1, !annotation !6 %70 = load %186*, %186** %8, align 8 %71 = call noundef zeroext i1 @_ZNK14SkGlyphRunList10anyRunsLCDEv(%186* noundef align 8 dereferenceable_or_null(56) %70) %72 = zext i1 %71 to i8 store i8 %72, i8* %19, align 1 %73 = bitcast i32* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %73) #21 store i32 -1431655766, i32* %20, align 4, !annotation !6 %74 = load i8, i8* %19, align 1, !range !7 %75 = trunc i8 %74 to i1 br i1 %75, label %76, label %79 76: ; preds = %69 %77 = load %225*, %225** %10, align 8 %78 = call noundef i32 @_ZNK14SkSurfaceProps13pixelGeometryEv(%225* noundef align 4 dereferenceable_or_null(8) %77) br label %80 79: ; preds = %69 br label %80 80: ; preds = %79, %76 %81 = phi i32 [ %78, %76 ], [ 0, %79 ] store i32 %81, i32* %20, align 4 %82 = bitcast i32* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %82) #21 store i32 -1431655766, i32* %21, align 4, !annotation !6 %83 = load %73*, %73** %9, align 8 %84 = load i8, i8* %19, align 1, !range !7 %85 = trunc i8 %84 to i1 %86 = call noundef i32 @35(%73* noundef align 8 dereferenceable(76) %83, i1 noundef zeroext %85) store i32 %86, i32* %21, align 4 %87 = load i32, i32* %20, align 4 %88 = getelementptr inbounds %0, %0* %18, i32 0, i32 4 store i32 %87, i32* %88, align 4 %89 = load %186*, %186** %8, align 8 %90 = call noundef i64 @_ZNK14SkGlyphRunList8uniqueIDEv(%186* noundef align 8 dereferenceable_or_null(56) %89) %91 = trunc i64 %90 to i32 %92 = getelementptr inbounds %0, %0* %18, i32 0, i32 0 store i32 %91, i32* %92, align 4 %93 = load %73*, %73** %9, align 8 %94 = call noundef zeroext i8 @_ZNK7SkPaint8getStyleEv(%73* noundef align 8 dereferenceable_or_null(76) %93) %95 = getelementptr inbounds %0, %0* %18, i32 0, i32 10 store i8 %94, i8* %95, align 2 %96 = getelementptr inbounds %0, %0* %18, i32 0, i32 10 %97 = load i8, i8* %96, align 2 %98 = zext i8 %97 to i32 %99 = icmp ne i32 %98, 0 br i1 %99, label %100, label %110 100: ; preds = %80 %101 = load %73*, %73** %9, align 8 %102 = call noundef float @_ZNK7SkPaint14getStrokeWidthEv(%73* noundef align 8 dereferenceable_or_null(76) %101) %103 = getelementptr inbounds %0, %0* %18, i32 0, i32 2 store float %102, float* %103, align 4 %104 = load %73*, %73** %9, align 8 %105 = call noundef float @_ZNK7SkPaint14getStrokeMiterEv(%73* noundef align 8 dereferenceable_or_null(76) %104) %106 = getelementptr inbounds %0, %0* %18, i32 0, i32 3 store float %105, float* %106, align 4 %107 = load %73*, %73** %9, align 8 %108 = call noundef zeroext i8 @_ZNK7SkPaint13getStrokeJoinEv(%73* noundef align 8 dereferenceable_or_null(76) %107) %109 = getelementptr inbounds %0, %0* %18, i32 0, i32 11 store i8 %108, i8* %109, align 1 br label %110 110: ; preds = %100, %80 %111 = load %80*, %80** %15, align 8 %112 = icmp ne %80* %111, null %113 = getelementptr inbounds %0, %0* %18, i32 0, i32 9 %114 = zext i1 %112 to i8 store i8 %114, i8* %113, align 1 %115 = getelementptr inbounds %0, %0* %18, i32 0, i32 9 %116 = load i8, i8* %115, align 1, !range !7 %117 = trunc i8 %116 to i1 br i1 %117, label %118, label %122 118: ; preds = %110 %119 = getelementptr inbounds %0, %0* %18, i32 0, i32 5 %120 = bitcast %1* %119 to i8* %121 = bitcast %1* %14 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %120, i8* align 4 %121, i64 8, i1 false) br label %122 122: ; preds = %118, %110 %123 = load i32, i32* %21, align 4 %124 = getelementptr inbounds %0, %0* %18, i32 0, i32 1 store i32 %123, i32* %124, align 4 %125 = load i32, i32* %17, align 4 %126 = call noundef i32 @_Z4SkToIj20SkScalerContextFlagsET_T0_(i32 noundef %125) %127 = getelementptr inbounds %0, %0* %18, i32 0, i32 6 store i32 %126, i32* %127, align 4 %128 = getelementptr inbounds %0, %0* %18, i32 0, i32 8 store i8 0, i8* %128, align 4 %129 = bitcast %186** %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %129) #21 store %186* inttoptr (i64 -6148914691236517206 to %186*), %186** %22, align 8, !annotation !6 %130 = load %186*, %186** %8, align 8 store %186* %130, %186** %22, align 8 %131 = bitcast %188** %23 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %131) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %23, align 8, !annotation !6 %132 = load %186*, %186** %22, align 8 %133 = call noundef %188* @_ZNK14SkGlyphRunList5beginEv(%186* noundef align 8 dereferenceable_or_null(56) %132) store %188* %133, %188** %23, align 8 %134 = bitcast %188** %24 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %134) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %24, align 8, !annotation !6 %135 = load %186*, %186** %22, align 8 %136 = call noundef %188* @_ZNK14SkGlyphRunList3endEv(%186* noundef align 8 dereferenceable_or_null(56) %135) store %188* %136, %188** %24, align 8 br label %137 137: ; preds = %167, %122 %138 = load %188*, %188** %23, align 8 %139 = load %188*, %188** %24, align 8 %140 = icmp ne %188* %138, %139 br i1 %140, label %145, label %141 141: ; preds = %137 %142 = bitcast %188** %24 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %142) #21 %143 = bitcast %188** %23 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %143) #21 %144 = bitcast %186** %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %144) #21 br label %170 145: ; preds = %137 %146 = bitcast %188** %25 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %146) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %25, align 8, !annotation !6 %147 = load %188*, %188** %23, align 8 store %188* %147, %188** %25, align 8 %148 = bitcast float* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %148) #21 store float 0xFFFFFFFFE0000000, float* %26, align 4, !annotation !6 %149 = load %188*, %188** %25, align 8 %150 = call noundef align 8 dereferenceable(23) %196* @_ZNK10SkGlyphRun4fontEv(%188* noundef align 8 dereferenceable_or_null(96) %149) %151 = load %2*, %2** %12, align 8 %152 = call noundef float @_ZN10SkFontPriv30ApproximateTransformedTextSizeERK6SkFontRK8SkMatrix(%196* noundef align 8 dereferenceable(23) %150, %2* noundef align 4 dereferenceable(40) %151) store float %152, float* %26, align 4 %153 = load %231*, %231** %13, align 8 %154 = load float, float* %26, align 4 %155 = load %73*, %73** %9, align 8 %156 = call noundef zeroext i1 @_ZNK13GrSDFTControl8isDirectEfRK7SkPaint(%231* noundef align 4 dereferenceable_or_null(9) %153, float noundef %154, %73* noundef align 8 dereferenceable(76) %155) %157 = zext i1 %156 to i32 %158 = getelementptr inbounds %0, %0* %18, i32 0, i32 8 %159 = load i8, i8* %158, align 4, !range !7 %160 = trunc i8 %159 to i1 %161 = zext i1 %160 to i32 %162 = or i32 %161, %157 %163 = icmp ne i32 %162, 0 %164 = zext i1 %163 to i8 store i8 %164, i8* %158, align 4 %165 = bitcast float* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %165) #21 %166 = bitcast %188** %25 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %166) #21 br label %167 167: ; preds = %145 %168 = load %188*, %188** %23, align 8 %169 = getelementptr inbounds %188, %188* %168, i32 1 store %188* %169, %188** %23, align 8 br label %137 170: ; preds = %141 %171 = getelementptr inbounds %0, %0* %18, i32 0, i32 8 %172 = load i8, i8* %171, align 4, !range !7 %173 = trunc i8 %172 to i1 br i1 %173, label %174, label %198 174: ; preds = %170 %175 = bitcast %5* %27 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %175) #21 %176 = getelementptr inbounds %5, %5* %27, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %176, align 4, !annotation !6 %177 = getelementptr inbounds %5, %5* %27, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %177, align 4, !annotation !6 %178 = load %2*, %2** %12, align 8 %179 = call <2 x float> @_ZNK8SkMatrix9mapOriginEv(%2* noundef align 4 dereferenceable_or_null(40) %178) %180 = bitcast %5* %27 to <2 x float>* store <2 x float> %179, <2 x float>* %180, align 4 %181 = load %2*, %2** %12, align 8 %182 = getelementptr inbounds %0, %0* %18, i32 0, i32 7 %183 = bitcast %2* %182 to i8* %184 = bitcast %2* %181 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %183, i8* align 4 %184, i64 40, i1 false) %185 = getelementptr inbounds %0, %0* %18, i32 0, i32 7 %186 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %27) %187 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %27) %188 = call float @llvm.floor.f32(float %187) %189 = fsub float %186, %188 %190 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13setTranslateXEf(%2* noundef align 4 dereferenceable_or_null(40) %185, float noundef %189) %191 = getelementptr inbounds %0, %0* %18, i32 0, i32 7 %192 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %27) %193 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %27) %194 = call float @llvm.floor.f32(float %193) %195 = fsub float %192, %194 %196 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13setTranslateYEf(%2* noundef align 4 dereferenceable_or_null(40) %191, float noundef %195) %197 = bitcast %5* %27 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %197) #21 br label %203 198: ; preds = %170 %199 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix1IEv() %200 = getelementptr inbounds %0, %0* %18, i32 0, i32 7 %201 = bitcast %2* %200 to i8* %202 = bitcast %2* %199 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %201, i8* align 4 %202, i64 40, i1 false) br label %203 203: ; preds = %198, %174 %204 = bitcast i32* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %204) #21 %205 = bitcast i32* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %205) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 br label %206 206: ; preds = %203, %57 call void @_ZNSt4__Cr5tupleIJbN10GrTextBlob3KeyEEEC2IJRbRS2_ELi0EEEDpOT_(%183* noundef align 4 dereferenceable_or_null(80) %0, i8* noundef align 1 dereferenceable(1) %16, %0* noundef align 4 dereferenceable(76) %18) #21 %207 = bitcast %0* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 76, i8* %207) #21 %208 = bitcast i32* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %208) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %16) #21 %209 = bitcast %80** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %209) #21 %210 = bitcast %1* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %210) #21 ret void } ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %80* @_ZNK7SkPaint13getMaskFilterEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 2 %5 = call noundef %80* @_ZNK5sk_spI12SkMaskFilterE3getEv(%79* noundef align 8 dereferenceable_or_null(8) %4) ret %80* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK14SkGlyphRunList8canCacheEv(%186* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %186*, align 8 store %186* %0, %186** %2, align 8 %3 = load %186*, %186** %2, align 8 %4 = getelementptr inbounds %186, %186* %3, i32 0, i32 1 %5 = load %197*, %197** %4, align 8 %6 = icmp ne %197* %5, null ret i1 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %75* @_ZNK7SkPaint13getPathEffectEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 0 %5 = call noundef %75* @_ZNK5sk_spI12SkPathEffectE3getEv(%74* noundef align 8 dereferenceable_or_null(8) %4) ret %75* %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %232* @_Z6as_MFBPK12SkMaskFilter(%80* noundef %0) #7 comdat { %2 = alloca %80*, align 8 store %80* %0, %80** %2, align 8 %3 = load %80*, %80** %2, align 8 %4 = bitcast %80* %3 to %232* ret %232* %4 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK11GrColorInfo17isLinearlyBlendedEv(%226* noundef align 8 dereferenceable_or_null(24)) #8 ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #9 ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN10GrTextBlob3KeyC2Ev(%0* noundef align 4 dereferenceable_or_null(76) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %0*, align 8 store %0* %0, %0** %2, align 8 %3 = load %0*, %0** %2, align 8 %4 = getelementptr inbounds %0, %0* %3, i32 0, i32 5 %5 = getelementptr inbounds %0, %0* %3, i32 0, i32 7 call void @_ZN8SkMatrixC2Ev(%2* noundef align 4 dereferenceable_or_null(40) %5) ret void } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK14SkGlyphRunList10anyRunsLCDEv(%186* noundef align 8 dereferenceable_or_null(56)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK14SkSurfaceProps13pixelGeometryEv(%225* noundef align 4 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %225*, align 8 store %225* %0, %225** %2, align 8 %3 = load %225*, %225** %2, align 8 %4 = getelementptr inbounds %225, %225* %3, i32 0, i32 1 %5 = load i32, i32* %4, align 4 ret i32 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @35(%73* noundef align 8 dereferenceable(76) %0, i1 noundef zeroext %1) #3 { %3 = alloca i32, align 4 %4 = alloca %73*, align 8 %5 = alloca i8, align 1 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 store %73* %0, %73** %4, align 8 %9 = zext i1 %1 to i8 store i8 %9, i8* %5, align 1 %10 = bitcast i32* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %10) #21 store i32 -1431655766, i32* %6, align 4, !annotation !6 %11 = load %73*, %73** %4, align 8 %12 = call noundef i32 @_ZN11SkPaintPriv21ComputeLuminanceColorERK7SkPaint(%73* noundef align 8 dereferenceable(76) %11) store i32 %12, i32* %6, align 4 %13 = load i8, i8* %5, align 1, !range !7 %14 = trunc i8 %13 to i1 br i1 %14, label %15, label %16 15: ; preds = %2 store i32 0, i32* %3, align 4 store i32 1, i32* %7, align 4 br label %36 16: ; preds = %2 %17 = bitcast i32* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %17) #21 store i32 -1431655766, i32* %8, align 4, !annotation !6 %18 = load i32, i32* %6, align 4 %19 = lshr i32 %18, 16 %20 = and i32 %19, 255 %21 = load i32, i32* %6, align 4 %22 = lshr i32 %21, 8 %23 = and i32 %22, 255 %24 = load i32, i32* %6, align 4 %25 = lshr i32 %24, 0 %26 = and i32 %25, 255 %27 = call noundef i32 @53(i32 noundef %20, i32 noundef %23, i32 noundef %26) store i32 %27, i32* %8, align 4 %28 = load i32, i32* %8, align 4 %29 = load i32, i32* %8, align 4 %30 = load i32, i32* %8, align 4 %31 = call noundef i32 @54(i32 noundef 255, i32 noundef %28, i32 noundef %29, i32 noundef %30) %32 = call noundef i32 @_ZN12SkTMaskGammaILi3ELi3ELi3EE14CanonicalColorEj(i32 noundef %31) store i32 %32, i32* %6, align 4 %33 = bitcast i32* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 br label %34 34: ; preds = %16 %35 = load i32, i32* %6, align 4 store i32 %35, i32* %3, align 4 store i32 1, i32* %7, align 4 br label %36 36: ; preds = %34, %15 %37 = bitcast i32* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %37) #21 %38 = load i32, i32* %3, align 4 ret i32 %38 } ; Function Attrs: null_pointer_is_valid declare noundef i64 @_ZNK14SkGlyphRunList8uniqueIDEv(%186* noundef align 8 dereferenceable_or_null(56)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i8 @_ZNK7SkPaint8getStyleEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 9 %5 = bitcast %88* %4 to %89* %6 = bitcast %89* %5 to i32* %7 = load i32, i32* %6, align 8 %8 = lshr i32 %7, 6 %9 = and i32 %8, 3 %10 = trunc i32 %9 to i8 ret i8 %10 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK7SkPaint14getStrokeWidthEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 7 %5 = load float, float* %4, align 8 ret float %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK7SkPaint14getStrokeMiterEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 8 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i8 @_ZNK7SkPaint13getStrokeJoinEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 9 %5 = bitcast %88* %4 to %89* %6 = bitcast %89* %5 to i32* %7 = load i32, i32* %6, align 8 %8 = lshr i32 %7, 4 %9 = and i32 %8, 3 %10 = trunc i32 %9 to i8 ret i8 %10 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z4SkToIj20SkScalerContextFlagsET_T0_(i32 noundef %0) #3 comdat { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 ret i32 %3 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNK14SkGlyphRunList5beginEv(%186* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %186*, align 8 store %186* %0, %186** %2, align 8 %3 = load %186*, %186** %2, align 8 %4 = getelementptr inbounds %186, %186* %3, i32 0, i32 0 %5 = call noundef %188* @_ZNSt4__Cr6cbeginI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE5beginfp_EERKT_(%187* noundef align 8 dereferenceable(16) %4) ret %188* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNK14SkGlyphRunList3endEv(%186* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %186*, align 8 store %186* %0, %186** %2, align 8 %3 = load %186*, %186** %2, align 8 %4 = getelementptr inbounds %186, %186* %3, i32 0, i32 0 %5 = call noundef %188* @_ZNSt4__Cr4cendI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE3endfp_EERKT_(%187* noundef align 8 dereferenceable(16) %4) ret %188* %5 } ; Function Attrs: null_pointer_is_valid declare noundef float @_ZN10SkFontPriv30ApproximateTransformedTextSizeERK6SkFontRK8SkMatrix(%196* noundef align 8 dereferenceable(23), %2* noundef align 4 dereferenceable(40)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(23) %196* @_ZNK10SkGlyphRun4fontEv(%188* noundef align 8 dereferenceable_or_null(96) %0) #3 comdat align 2 { %2 = alloca %188*, align 8 store %188* %0, %188** %2, align 8 %3 = load %188*, %188** %2, align 8 %4 = getelementptr inbounds %188, %188* %3, i32 0, i32 4 ret %196* %4 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK13GrSDFTControl8isDirectEfRK7SkPaint(%231* noundef align 4 dereferenceable_or_null(9), float noundef, %73* noundef align 8 dereferenceable(76)) #8 ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden <2 x float> @_ZNK8SkMatrix9mapOriginEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #5 comdat align 2 { %2 = alloca %5, align 4 %3 = alloca %2*, align 8 %4 = alloca float, align 4 %5 = alloca float, align 4 %6 = alloca float, align 4 store %2* %0, %2** %3, align 8 %7 = load %2*, %2** %3, align 8 %8 = bitcast float* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %8) #21 store float 0xFFFFFFFFE0000000, float* %4, align 4, !annotation !6 %9 = call noundef float @_ZNK8SkMatrix13getTranslateXEv(%2* noundef align 4 dereferenceable_or_null(40) %7) store float %9, float* %4, align 4 %10 = bitcast float* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %10) #21 store float 0xFFFFFFFFE0000000, float* %5, align 4, !annotation !6 %11 = call noundef float @_ZNK8SkMatrix13getTranslateYEv(%2* noundef align 4 dereferenceable_or_null(40) %7) store float %11, float* %5, align 4 %12 = call noundef zeroext i1 @_ZNK8SkMatrix14hasPerspectiveEv(%2* noundef align 4 dereferenceable_or_null(40) %7) br i1 %12, label %13, label %31 13: ; preds = %1 %14 = bitcast float* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %14) #21 store float 0xFFFFFFFFE0000000, float* %6, align 4, !annotation !6 %15 = getelementptr inbounds %2, %2* %7, i32 0, i32 0 %16 = getelementptr inbounds [9 x float], [9 x float]* %15, i64 0, i64 8 %17 = load float, float* %16, align 4 store float %17, float* %6, align 4 %18 = load float, float* %6, align 4 %19 = fcmp une float %18, 0.000000e+00 br i1 %19, label %20, label %23 20: ; preds = %13 %21 = load float, float* %6, align 4 %22 = fdiv float 1.000000e+00, %21 store float %22, float* %6, align 4 br label %23 23: ; preds = %20, %13 %24 = load float, float* %6, align 4 %25 = load float, float* %4, align 4 %26 = fmul float %25, %24 store float %26, float* %4, align 4 %27 = load float, float* %6, align 4 %28 = load float, float* %5, align 4 %29 = fmul float %28, %27 store float %29, float* %5, align 4 %30 = bitcast float* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %30) #21 br label %31 31: ; preds = %23, %1 %32 = getelementptr inbounds %5, %5* %2, i32 0, i32 0 %33 = load float, float* %4, align 4 store float %33, float* %32, align 4 %34 = getelementptr inbounds %5, %5* %2, i32 0, i32 1 %35 = load float, float* %5, align 4 store float %35, float* %34, align 4 %36 = bitcast float* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %36) #21 %37 = bitcast float* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %37) #21 %38 = bitcast %5* %2 to <2 x float>* %39 = load <2 x float>, <2 x float>* %38, align 4 ret <2 x float> %39 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13setTranslateXEf(%2* noundef align 4 dereferenceable_or_null(40) %0, float noundef %1) #3 comdat align 2 { %3 = alloca %2*, align 8 %4 = alloca float, align 4 store %2* %0, %2** %3, align 8 store float %1, float* %4, align 4 %5 = load %2*, %2** %3, align 8 %6 = load float, float* %4, align 4 %7 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix3setEif(%2* noundef align 4 dereferenceable_or_null(40) %5, i32 noundef 2, float noundef %6) ret %2* %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %5*, align 8 store %5* %0, %5** %2, align 8 %3 = load %5*, %5** %2, align 8 %4 = getelementptr inbounds %5, %5* %3, i32 0, i32 0 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare float @llvm.floor.f32(float) #1 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13setTranslateYEf(%2* noundef align 4 dereferenceable_or_null(40) %0, float noundef %1) #3 comdat align 2 { %3 = alloca %2*, align 8 %4 = alloca float, align 4 store %2* %0, %2** %3, align 8 store float %1, float* %4, align 4 %5 = load %2*, %2** %3, align 8 %6 = load float, float* %4, align 4 %7 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix3setEif(%2* noundef align 4 dereferenceable_or_null(40) %5, i32 noundef 5, float noundef %6) ret %2* %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %5*, align 8 store %5* %0, %5** %2, align 8 %3 = load %5*, %5** %2, align 8 %4 = getelementptr inbounds %5, %5* %3, i32 0, i32 1 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: null_pointer_is_valid declare noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix1IEv() #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJbN10GrTextBlob3KeyEEEC2IJRbRS2_ELi0EEEDpOT_(%183* noundef align 4 dereferenceable_or_null(80) %0, i8* noundef align 1 dereferenceable(1) %1, %0* noundef align 4 dereferenceable(76) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %183*, align 8 %5 = alloca i8*, align 8 %6 = alloca %0*, align 8 %7 = alloca %234, align 1 %8 = alloca %235, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %183* %0, %183** %4, align 8 store i8* %1, i8** %5, align 8 store %0* %2, %0** %6, align 8 %11 = load %183*, %183** %4, align 8 %12 = getelementptr inbounds %183, %183* %11, i32 0, i32 0 %13 = load i8*, i8** %5, align 8 %14 = load %0*, %0** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJbN10GrTextBlob3KeyEEEC2IJLm0ELm1EEJbS4_EJEJEJRbRS4_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_(%184* noundef align 4 dereferenceable_or_null(80) %12, i8* noundef align 1 dereferenceable(1) %13, %0* noundef align 4 dereferenceable(76) %14) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef zeroext i1 @_ZNK10GrTextBlob3KeyeqERKS0_(%0* noundef align 4 dereferenceable_or_null(76) %0, %0* noundef align 4 dereferenceable(76) %1) #3 align 2 { %3 = alloca i1, align 1 %4 = alloca %0*, align 8 %5 = alloca %0*, align 8 %6 = alloca %238, align 4 %7 = alloca { i64, float }, align 8 %8 = alloca i8*, align 8 %9 = alloca %5*, align 8 store %0* %0, %0** %4, align 8 store %0* %1, %0** %5, align 8 %10 = load %0*, %0** %4, align 8 %11 = getelementptr inbounds %0, %0* %10, i32 0, i32 0 %12 = load i32, i32* %11, align 4 %13 = load %0*, %0** %5, align 8 %14 = getelementptr inbounds %0, %0* %13, i32 0, i32 0 %15 = load i32, i32* %14, align 4 %16 = icmp ne i32 %12, %15 br i1 %16, label %17, label %18 17: ; preds = %2 store i1 false, i1* %3, align 1 br label %159 18: ; preds = %2 %19 = getelementptr inbounds %0, %0* %10, i32 0, i32 1 %20 = load i32, i32* %19, align 4 %21 = load %0*, %0** %5, align 8 %22 = getelementptr inbounds %0, %0* %21, i32 0, i32 1 %23 = load i32, i32* %22, align 4 %24 = icmp ne i32 %20, %23 br i1 %24, label %25, label %26 25: ; preds = %18 store i1 false, i1* %3, align 1 br label %159 26: ; preds = %18 %27 = getelementptr inbounds %0, %0* %10, i32 0, i32 10 %28 = load i8, i8* %27, align 2 %29 = zext i8 %28 to i32 %30 = load %0*, %0** %5, align 8 %31 = getelementptr inbounds %0, %0* %30, i32 0, i32 10 %32 = load i8, i8* %31, align 2 %33 = zext i8 %32 to i32 %34 = icmp ne i32 %29, %33 br i1 %34, label %35, label %36 35: ; preds = %26 store i1 false, i1* %3, align 1 br label %159 36: ; preds = %26 %37 = getelementptr inbounds %0, %0* %10, i32 0, i32 10 %38 = load i8, i8* %37, align 2 %39 = zext i8 %38 to i32 %40 = icmp ne i32 %39, 0 br i1 %40, label %41, label %66 41: ; preds = %36 %42 = getelementptr inbounds %0, %0* %10, i32 0, i32 2 %43 = load float, float* %42, align 4 %44 = load %0*, %0** %5, align 8 %45 = getelementptr inbounds %0, %0* %44, i32 0, i32 2 %46 = load float, float* %45, align 4 %47 = fcmp une float %43, %46 br i1 %47, label %64, label %48 48: ; preds = %41 %49 = getelementptr inbounds %0, %0* %10, i32 0, i32 3 %50 = load float, float* %49, align 4 %51 = load %0*, %0** %5, align 8 %52 = getelementptr inbounds %0, %0* %51, i32 0, i32 3 %53 = load float, float* %52, align 4 %54 = fcmp une float %50, %53 br i1 %54, label %64, label %55 55: ; preds = %48 %56 = getelementptr inbounds %0, %0* %10, i32 0, i32 11 %57 = load i8, i8* %56, align 1 %58 = zext i8 %57 to i32 %59 = load %0*, %0** %5, align 8 %60 = getelementptr inbounds %0, %0* %59, i32 0, i32 11 %61 = load i8, i8* %60, align 1 %62 = zext i8 %61 to i32 %63 = icmp ne i32 %58, %62 br i1 %63, label %64, label %65 64: ; preds = %55, %48, %41 store i1 false, i1* %3, align 1 br label %159 65: ; preds = %55 br label %66 66: ; preds = %65, %36 %67 = getelementptr inbounds %0, %0* %10, i32 0, i32 4 %68 = load i32, i32* %67, align 4 %69 = load %0*, %0** %5, align 8 %70 = getelementptr inbounds %0, %0* %69, i32 0, i32 4 %71 = load i32, i32* %70, align 4 %72 = icmp ne i32 %68, %71 br i1 %72, label %73, label %74 73: ; preds = %66 store i1 false, i1* %3, align 1 br label %159 74: ; preds = %66 %75 = getelementptr inbounds %0, %0* %10, i32 0, i32 9 %76 = load i8, i8* %75, align 1, !range !7 %77 = trunc i8 %76 to i1 %78 = zext i1 %77 to i32 %79 = load %0*, %0** %5, align 8 %80 = getelementptr inbounds %0, %0* %79, i32 0, i32 9 %81 = load i8, i8* %80, align 1, !range !7 %82 = trunc i8 %81 to i1 %83 = zext i1 %82 to i32 %84 = icmp ne i32 %78, %83 br i1 %84, label %85, label %86 85: ; preds = %74 store i1 false, i1* %3, align 1 br label %159 86: ; preds = %74 %87 = getelementptr inbounds %0, %0* %10, i32 0, i32 9 %88 = load i8, i8* %87, align 1, !range !7 %89 = trunc i8 %88 to i1 br i1 %89, label %90, label %110 90: ; preds = %86 %91 = getelementptr inbounds %0, %0* %10, i32 0, i32 5 %92 = getelementptr inbounds %1, %1* %91, i32 0, i32 1 %93 = load i32, i32* %92, align 4 %94 = load %0*, %0** %5, align 8 %95 = getelementptr inbounds %0, %0* %94, i32 0, i32 5 %96 = getelementptr inbounds %1, %1* %95, i32 0, i32 1 %97 = load i32, i32* %96, align 4 %98 = icmp ne i32 %93, %97 br i1 %98, label %108, label %99 99: ; preds = %90 %100 = getelementptr inbounds %0, %0* %10, i32 0, i32 5 %101 = getelementptr inbounds %1, %1* %100, i32 0, i32 0 %102 = load float, float* %101, align 4 %103 = load %0*, %0** %5, align 8 %104 = getelementptr inbounds %0, %0* %103, i32 0, i32 5 %105 = getelementptr inbounds %1, %1* %104, i32 0, i32 0 %106 = load float, float* %105, align 4 %107 = fcmp une float %102, %106 br i1 %107, label %108, label %109 108: ; preds = %99, %90 store i1 false, i1* %3, align 1 br label %159 109: ; preds = %99 br label %110 110: ; preds = %109, %86 %111 = getelementptr inbounds %0, %0* %10, i32 0, i32 6 %112 = load i32, i32* %111, align 4 %113 = load %0*, %0** %5, align 8 %114 = getelementptr inbounds %0, %0* %113, i32 0, i32 6 %115 = load i32, i32* %114, align 4 %116 = icmp ne i32 %112, %115 br i1 %116, label %117, label %118 117: ; preds = %110 store i1 false, i1* %3, align 1 br label %159 118: ; preds = %110 %119 = getelementptr inbounds %0, %0* %10, i32 0, i32 7 %120 = call noundef zeroext i1 @_ZNK8SkMatrix14hasPerspectiveEv(%2* noundef align 4 dereferenceable_or_null(40) %119) br i1 %120, label %121, label %122 121: ; preds = %118 store i1 false, i1* %3, align 1 br label %159 122: ; preds = %118 %123 = getelementptr inbounds %0, %0* %10, i32 0, i32 8 %124 = load i8, i8* %123, align 4, !range !7 %125 = trunc i8 %124 to i1 %126 = zext i1 %125 to i32 %127 = load %0*, %0** %5, align 8 %128 = getelementptr inbounds %0, %0* %127, i32 0, i32 8 %129 = load i8, i8* %128, align 4, !range !7 %130 = trunc i8 %129 to i1 %131 = zext i1 %130 to i32 %132 = icmp ne i32 %126, %131 br i1 %132, label %133, label %134 133: ; preds = %122 store i1 false, i1* %3, align 1 br label %159 134: ; preds = %122 %135 = getelementptr inbounds %0, %0* %10, i32 0, i32 8 %136 = load i8, i8* %135, align 4, !range !7 %137 = trunc i8 %136 to i1 br i1 %137, label %138, label %158 138: ; preds = %134 %139 = bitcast %238* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %139) #21 %140 = bitcast %238* %6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %140, i8* align 4 getelementptr inbounds ({ { %3, [3 x i8], %4 } }, { { %3, [3 x i8], %4 } }* @3, i32 0, i32 0, i32 0, i32 0), i64 12, i1 false), !annotation !6 %141 = getelementptr inbounds %0, %0* %10, i32 0, i32 7 %142 = load %0*, %0** %5, align 8 %143 = getelementptr inbounds %0, %0* %142, i32 0, i32 7 %144 = call { i64, float } @36(%2* noundef align 4 dereferenceable(40) %141, %2* noundef align 4 dereferenceable(40) %143) %145 = getelementptr inbounds %238, %238* %6, i32 0, i32 0 store { i64, float } %144, { i64, float }* %7, align 8 %146 = bitcast %239* %145 to i8* %147 = bitcast { i64, float }* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %146, i8* align 8 %147, i64 12, i1 false) %148 = bitcast i8** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %148) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %8, align 8, !annotation !6 %149 = call noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr3getILm0EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_(%238* noundef align 4 dereferenceable(12) %6) #21 store i8* %149, i8** %8, align 8 %150 = bitcast %5** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %150) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %9, align 8, !annotation !6 %151 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_(%238* noundef align 4 dereferenceable(12) %6) #21 store %5* %151, %5** %9, align 8 %152 = load i8*, i8** %8, align 8 %153 = load i8, i8* %152, align 1, !range !7 %154 = trunc i8 %153 to i1 store i1 %154, i1* %3, align 1 %155 = bitcast %5** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %155) #21 %156 = bitcast i8** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %156) #21 %157 = bitcast %238* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %157) #21 br label %159 158: ; preds = %134 store i1 true, i1* %3, align 1 br label %159 159: ; preds = %158, %138, %133, %121, %117, %108, %85, %73, %64, %35, %25, %17 %160 = load i1, i1* %3, align 1 ret i1 %160 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK8SkMatrix14hasPerspectiveEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 %3 = alloca i32, align 4 store %2* %0, %2** %2, align 8 %4 = load %2*, %2** %2, align 8 %5 = bitcast i32* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %5) #21 %6 = call noundef i32 @_ZNK8SkMatrix26getPerspectiveTypeMaskOnlyEv(%2* noundef align 4 dereferenceable_or_null(40) %4) %7 = and i32 %6, 8 store i32 %7, i32* %3, align 4 %8 = call noundef zeroext i1 @56(i32* noundef align 4 dereferenceable(4) %3) %9 = bitcast i32* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %9) #21 ret i1 %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { i64, float } @36(%2* noundef align 4 dereferenceable(40) %0, %2* noundef align 4 dereferenceable(40) %1) #5 { %3 = alloca %238, align 4 %4 = alloca %2*, align 8 %5 = alloca %2*, align 8 %6 = alloca %5, align 4 %7 = alloca %5, align 4 %8 = alloca %5, align 4 %9 = alloca i8, align 1 %10 = alloca { i64, float }, align 8 store %2* %0, %2** %4, align 8 store %2* %1, %2** %5, align 8 %11 = bitcast %5* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %11) #21 %12 = getelementptr inbounds %5, %5* %6, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %12, align 4, !annotation !6 %13 = getelementptr inbounds %5, %5* %6, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %13, align 4, !annotation !6 %14 = bitcast %5* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %14) #21 %15 = load %2*, %2** %5, align 8 %16 = call <2 x float> @_ZNK8SkMatrix9mapOriginEv(%2* noundef align 4 dereferenceable_or_null(40) %15) %17 = bitcast %5* %7 to <2 x float>* store <2 x float> %16, <2 x float>* %17, align 4 %18 = bitcast %5* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %18) #21 %19 = load %2*, %2** %4, align 8 %20 = call <2 x float> @_ZNK8SkMatrix9mapOriginEv(%2* noundef align 4 dereferenceable_or_null(40) %19) %21 = bitcast %5* %8 to <2 x float>* store <2 x float> %20, <2 x float>* %21, align 4 %22 = call <2 x float> @_ZmiRK7SkPointS1_(%5* noundef align 4 dereferenceable(8) %7, %5* noundef align 4 dereferenceable(8) %8) %23 = bitcast %5* %6 to <2 x float>* store <2 x float> %22, <2 x float>* %23, align 4 %24 = bitcast %5* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %24) #21 %25 = bitcast %5* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %25) #21 call void @llvm.lifetime.start.p0i8(i64 1, i8* %9) #21 %26 = load %2*, %2** %4, align 8 %27 = call noundef float @_ZNK8SkMatrix9getScaleXEv(%2* noundef align 4 dereferenceable_or_null(40) %26) %28 = load %2*, %2** %5, align 8 %29 = call noundef float @_ZNK8SkMatrix9getScaleXEv(%2* noundef align 4 dereferenceable_or_null(40) %28) %30 = fcmp oeq float %27, %29 br i1 %30, label %31, label %55 31: ; preds = %2 %32 = load %2*, %2** %4, align 8 %33 = call noundef float @_ZNK8SkMatrix9getScaleYEv(%2* noundef align 4 dereferenceable_or_null(40) %32) %34 = load %2*, %2** %5, align 8 %35 = call noundef float @_ZNK8SkMatrix9getScaleYEv(%2* noundef align 4 dereferenceable_or_null(40) %34) %36 = fcmp oeq float %33, %35 br i1 %36, label %37, label %55 37: ; preds = %31 %38 = load %2*, %2** %4, align 8 %39 = call noundef float @_ZNK8SkMatrix8getSkewXEv(%2* noundef align 4 dereferenceable_or_null(40) %38) %40 = load %2*, %2** %5, align 8 %41 = call noundef float @_ZNK8SkMatrix8getSkewXEv(%2* noundef align 4 dereferenceable_or_null(40) %40) %42 = fcmp oeq float %39, %41 br i1 %42, label %43, label %55 43: ; preds = %37 %44 = load %2*, %2** %4, align 8 %45 = call noundef float @_ZNK8SkMatrix8getSkewYEv(%2* noundef align 4 dereferenceable_or_null(40) %44) %46 = load %2*, %2** %5, align 8 %47 = call noundef float @_ZNK8SkMatrix8getSkewYEv(%2* noundef align 4 dereferenceable_or_null(40) %46) %48 = fcmp oeq float %45, %47 br i1 %48, label %49, label %55 49: ; preds = %43 %50 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %6) %51 = call noundef zeroext i1 @57(float noundef %50) br i1 %51, label %52, label %55 52: ; preds = %49 %53 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %6) %54 = call noundef zeroext i1 @57(float noundef %53) br label %55 55: ; preds = %52, %49, %43, %37, %31, %2 %56 = phi i1 [ false, %49 ], [ false, %43 ], [ false, %37 ], [ false, %31 ], [ false, %2 ], [ %54, %52 ] %57 = zext i1 %56 to i8 store i8 %57, i8* %9, align 1 call void @_ZNSt4__Cr5tupleIJb7SkPointEEC2IJbRS1_ELi0EEEDpOT_(%238* noundef align 4 dereferenceable_or_null(12) %3, i8* noundef align 1 dereferenceable(1) %9, %5* noundef align 4 dereferenceable(8) %6) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 %58 = bitcast %5* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %58) #21 %59 = getelementptr inbounds %238, %238* %3, i32 0, i32 0 %60 = bitcast { i64, float }* %10 to i8* %61 = bitcast %239* %59 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %60, i8* align 4 %61, i64 12, i1 false) %62 = load { i64, float }, { i64, float }* %10, align 8 ret { i64, float } %62 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr3getILm0EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_(%238* noundef align 4 dereferenceable(12) %0) #7 comdat { %2 = alloca %238*, align 8 store %238* %0, %238** %2, align 8 %3 = load %238*, %238** %2, align 8 %4 = getelementptr inbounds %238, %238* %3, i32 0, i32 0 %5 = bitcast %239* %4 to %3* %6 = call noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr12__tuple_leafILm0EbLb0EE3getEv(%3* noundef align 1 dereferenceable_or_null(1) %5) #21 ret i8* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJb7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS6_(%238* noundef align 4 dereferenceable(12) %0) #7 comdat { %2 = alloca %238*, align 8 store %238* %0, %238** %2, align 8 %3 = load %238*, %238** %2, align 8 %4 = getelementptr inbounds %238, %238* %3, i32 0, i32 0 %5 = bitcast %239* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 4 %7 = bitcast i8* %6 to %4* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EE3getEv(%4* noundef align 4 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlobdlEPv(i8* noundef %0) #3 align 2 { %2 = alloca i8*, align 8 store i8* %0, i8** %2, align 8 %3 = load i8*, i8** %2, align 8 call void @_ZdlPv(i8* noundef %3) #21 ret void } ; Function Attrs: nobuiltin nounwind null_pointer_is_valid declare void @_ZdlPv(i8* noundef) #11 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef i8* @_ZN10GrTextBlobnwEm(i64 noundef %0) #3 align 2 { %2 = alloca i64, align 8 store i64 %0, i64* %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([58 x i8], [58 x i8]* @0, i64 0, i64 0), i32 noundef 2171, i8* noundef getelementptr inbounds ([40 x i8], [40 x i8]* @4, i64 0, i64 0)) #23 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef i8* @_ZN10GrTextBlobnwEmPv(i64 noundef %0, i8* noundef %1) #3 align 2 { %3 = alloca i64, align 8 %4 = alloca i8*, align 8 store i64 %0, i64* %3, align 8 store i8* %1, i8** %4, align 8 %5 = load i8*, i8** %4, align 8 ret i8* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlobD2Ev(%178* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #0 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = getelementptr inbounds %178, %178* %3, i32 0, i32 6 call void @_ZN12GrSubRunListD2Ev(%181* noundef align 8 dereferenceable_or_null(16) %4) #21 %5 = getelementptr inbounds %178, %178* %3, i32 0, i32 5 call void @_ZN6sktext3gpu15SubRunAllocatorD2Ev(%10* noundef align 8 dereferenceable_or_null(16) %5) #21 %6 = bitcast %178* %3 to i8* %7 = getelementptr inbounds i8, i8* %6, i64 16 %8 = bitcast i8* %7 to %180* call void @_ZN26SkGlyphRunPainterInterfaceD2Ev(%180* noundef align 8 dereferenceable_or_null(8) %8) #21 %9 = bitcast %178* %3 to %19* call void @_ZN20GrTextReferenceFrameD2Ev(%19* noundef align 8 dereferenceable_or_null(12) %9) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12GrSubRunListD2Ev(%181* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %181*, align 8 store %181* %0, %181** %2, align 8 %3 = load %181*, %181** %2, align 8 %4 = getelementptr inbounds %181, %181* %3, i32 0, i32 0 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev(%16* noundef align 8 dereferenceable_or_null(8) %4) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu15SubRunAllocatorD2Ev(%10* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %10*, align 8 store %10* %0, %10** %2, align 8 %3 = load %10*, %10** %2, align 8 %4 = getelementptr inbounds %10, %10* %3, i32 0, i32 0 call void @_ZN6sktext3gpu10BagOfBytesD1Ev(%11* noundef align 8 dereferenceable_or_null(16) %4) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN20GrTextReferenceFrameD2Ev(%19* noundef align 8 dereferenceable_or_null(12)) unnamed_addr #12 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlobD1Ev(%178* noundef %0) unnamed_addr #0 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = bitcast %178* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 -16 %6 = bitcast i8* %5 to %178* tail call void @_ZN10GrTextBlobD1Ev(%178* noundef align 8 dereferenceable_or_null(200) %6) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlobD0Ev(%178* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #0 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 call void @_ZN10GrTextBlobD1Ev(%178* noundef align 8 dereferenceable_or_null(200) %3) #21 %4 = bitcast %178* %3 to i8* call void @_ZN10GrTextBlobdlEPv(i8* noundef %4) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlobD0Ev(%178* noundef %0) unnamed_addr #0 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = bitcast %178* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 -16 %6 = bitcast i8* %5 to %178* tail call void @_ZN10GrTextBlobD0Ev(%178* noundef align 8 dereferenceable_or_null(200) %6) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob4MakeERK14SkGlyphRunListRK7SkPaintRK8SkMatrixRK13GrSDFTControlP21SkGlyphRunListPainter(%240* noalias sret(%240) align 8 %0, %186* noundef align 8 dereferenceable(56) %1, %73* noundef align 8 dereferenceable(76) %2, %2* noundef align 4 dereferenceable(40) %3, %231* noundef align 4 dereferenceable(9) %4, %241* noundef %5) #3 align 2 { %7 = alloca i8*, align 8 %8 = alloca %186*, align 8 %9 = alloca %73*, align 8 %10 = alloca %2*, align 8 %11 = alloca %231*, align 8 %12 = alloca %241*, align 8 %13 = alloca i64, align 8 %14 = alloca i64, align 8 %15 = alloca i64, align 8 %16 = alloca i64, align 8 %17 = alloca %263, align 8 %18 = alloca %7*, align 8 %19 = alloca i32*, align 8 %20 = alloca %10*, align 8 %21 = alloca i32, align 4 %22 = alloca i1, align 1 %23 = bitcast %240* %0 to i8* store i8* %23, i8** %7, align 8 store %186* %1, %186** %8, align 8 store %73* %2, %73** %9, align 8 store %2* %3, %2** %10, align 8 store %231* %4, %231** %11, align 8 store %241* %5, %241** %12, align 8 %24 = bitcast i64* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 store i64 4, i64* %13, align 8 %25 = bitcast i64* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %25) #21 store i64 4, i64* %14, align 8 %26 = bitcast i64* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %26) #21 store i64 -6148914691236517206, i64* %15, align 8, !annotation !6 %27 = load %186*, %186** %8, align 8 %28 = call noundef i64 @_ZNK14SkGlyphRunList15totalGlyphCountEv(%186* noundef align 8 dereferenceable_or_null(56) %27) store i64 %28, i64* %15, align 8 %29 = bitcast i64* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %29) #21 store i64 -6148914691236517206, i64* %16, align 8, !annotation !6 %30 = load i64, i64* %15, align 8 %31 = mul i64 %30, 4 %32 = load i64, i64* %15, align 8 %33 = call noundef i64 @_ZN6sktext3gpu11GlyphVector15GlyphVectorSizeEm(i64 noundef %32) %34 = add i64 %31, %33 %35 = load %186*, %186** %8, align 8 %36 = call noundef i64 @_ZNK14SkGlyphRunList8runCountEv(%186* noundef align 8 dereferenceable_or_null(56) %35) %37 = mul i64 %36, 180 %38 = add i64 %34, %37 store i64 %38, i64* %16, align 8 %39 = bitcast %263* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* %39) #21 %40 = bitcast %263* %17 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %40, i8* align 8 bitcast ({ { %6, %8, [4 x i8], %9 } }* @5 to i8*), i64 32, i1 false), !annotation !6 %41 = load i64, i64* %16, align 8 %42 = trunc i64 %41 to i32 call void @_ZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEi(%263* sret(%263) align 8 %17, i32 noundef %42) %43 = bitcast %7** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %43) #21 store %7* inttoptr (i64 -6148914691236517206 to %7*), %7** %18, align 8, !annotation !6 %44 = call noundef align 8 dereferenceable(8) %7* @_ZNSt4__Cr3getILm0EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %17) #21 store %7* %44, %7** %18, align 8 %45 = bitcast i32** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %45) #21 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %19, align 8, !annotation !6 %46 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm1EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %17) #21 store i32* %46, i32** %19, align 8 %47 = bitcast %10** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %47) #21 store %10* inttoptr (i64 -6148914691236517206 to %10*), %10** %20, align 8, !annotation !6 %48 = call noundef align 8 dereferenceable(16) %10* @_ZNSt4__Cr3getILm2EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %17) #21 store %10* %48, %10** %20, align 8 %49 = bitcast i32* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %49) #21 store i32 -1431655766, i32* %21, align 4, !annotation !6 %50 = load %73*, %73** %9, align 8 %51 = call noundef i32 @_ZN11SkPaintPriv21ComputeLuminanceColorERK7SkPaint(%73* noundef align 8 dereferenceable(76) %50) store i32 %51, i32* %21, align 4 store i1 false, i1* %22, align 1 %52 = getelementptr inbounds %240, %240* %0, i32 0, i32 0 store %178* inttoptr (i64 -6148914691236517206 to %178*), %178** %52, align 8, !annotation !6 %53 = load %7*, %7** %18, align 8 %54 = load %10*, %10** %20, align 8 %55 = load i32*, i32** %19, align 8 %56 = load %2*, %2** %10, align 8 %57 = call noundef %178* @_ZN6sktext3gpu17SubRunInitializerI10GrTextBlobE10initializeIJNS0_15SubRunAllocatorERiRK8SkMatrixRjEEEPS2_DpOT_(%7* noundef align 8 dereferenceable_or_null(8) %53, %10* noundef align 8 dereferenceable(16) %54, i32* noundef align 4 dereferenceable(4) %55, %2* noundef align 4 dereferenceable(40) %56, i32* noundef align 4 dereferenceable(4) %21) call void @_ZN5sk_spI10GrTextBlobEC2EPS0_(%240* noundef align 8 dereferenceable_or_null(8) %0, %178* noundef %57) %58 = load %241*, %241** %12, align 8 %59 = call noundef %178* @_ZNK5sk_spI10GrTextBlobE3getEv(%240* noundef align 8 dereferenceable_or_null(8) %0) %60 = icmp eq %178* %59, null br i1 %60, label %65, label %61 61: ; preds = %6 %62 = bitcast %178* %59 to i8* %63 = getelementptr inbounds i8, i8* %62, i64 16 %64 = bitcast i8* %63 to %180* br label %65 65: ; preds = %61, %6 %66 = phi %180* [ %64, %61 ], [ null, %6 ] %67 = load %186*, %186** %8, align 8 %68 = load %2*, %2** %10, align 8 %69 = load %73*, %73** %9, align 8 %70 = load %231*, %231** %11, align 8 call void @_ZN21SkGlyphRunListPainter22categorizeGlyphRunListEP26SkGlyphRunPainterInterfaceRK14SkGlyphRunListRK8SkMatrixRK7SkPaintRK13GrSDFTControlPKc(%241* noundef align 8 dereferenceable_or_null(216) %58, %180* noundef %66, %186* noundef align 8 dereferenceable(56) %67, %2* noundef align 4 dereferenceable(40) %68, %73* noundef align 8 dereferenceable(76) %69, %231* noundef align 4 dereferenceable(9) %70, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @6, i64 0, i64 0)) store i1 true, i1* %22, align 1 %71 = load i1, i1* %22, align 1 br i1 %71, label %73, label %72 72: ; preds = %65 call void @_ZN5sk_spI10GrTextBlobED2Ev(%240* noundef align 8 dereferenceable_or_null(8) %0) #21 br label %73 73: ; preds = %72, %65 %74 = bitcast i32* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %74) #21 %75 = bitcast %10** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %75) #21 %76 = bitcast i32** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %76) #21 %77 = bitcast %7** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %77) #21 call void @_ZNSt4__Cr5tupleIJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEED2Ev(%263* noundef align 8 dereferenceable_or_null(32) %17) #21 %78 = bitcast %263* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 32, i8* %78) #21 %79 = bitcast i64* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %79) #21 %80 = bitcast i64* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %80) #21 %81 = bitcast i64* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %81) #21 %82 = bitcast i64* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %82) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK14SkGlyphRunList15totalGlyphCountEv(%186* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %186*, align 8 %3 = alloca i64, align 8 %4 = alloca %186*, align 8 %5 = alloca %188*, align 8 %6 = alloca %188*, align 8 %7 = alloca %188*, align 8 store %186* %0, %186** %2, align 8 %8 = load %186*, %186** %2, align 8 %9 = bitcast i64* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %9) #21 store i64 -6148914691236517206, i64* %3, align 8, !annotation !6 store i64 0, i64* %3, align 8 %10 = bitcast %186** %4 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %10) #21 store %186* inttoptr (i64 -6148914691236517206 to %186*), %186** %4, align 8, !annotation !6 store %186* %8, %186** %4, align 8 %11 = bitcast %188** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %11) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %5, align 8, !annotation !6 %12 = load %186*, %186** %4, align 8 %13 = call noundef %188* @_ZNK14SkGlyphRunList5beginEv(%186* noundef align 8 dereferenceable_or_null(56) %12) store %188* %13, %188** %5, align 8 %14 = bitcast %188** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %14) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %6, align 8, !annotation !6 %15 = load %186*, %186** %4, align 8 %16 = call noundef %188* @_ZNK14SkGlyphRunList3endEv(%186* noundef align 8 dereferenceable_or_null(56) %15) store %188* %16, %188** %6, align 8 br label %17 17: ; preds = %33, %1 %18 = load %188*, %188** %5, align 8 %19 = load %188*, %188** %6, align 8 %20 = icmp ne %188* %18, %19 br i1 %20, label %25, label %21 21: ; preds = %17 %22 = bitcast %188** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %22) #21 %23 = bitcast %188** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %23) #21 %24 = bitcast %186** %4 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %24) #21 br label %36 25: ; preds = %17 %26 = bitcast %188** %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %26) #21 store %188* inttoptr (i64 -6148914691236517206 to %188*), %188** %7, align 8, !annotation !6 %27 = load %188*, %188** %5, align 8 store %188* %27, %188** %7, align 8 %28 = load %188*, %188** %7, align 8 %29 = call noundef i64 @_ZNK10SkGlyphRun7runSizeEv(%188* noundef align 8 dereferenceable_or_null(96) %28) %30 = load i64, i64* %3, align 8 %31 = add i64 %30, %29 store i64 %31, i64* %3, align 8 %32 = bitcast %188** %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %32) #21 br label %33 33: ; preds = %25 %34 = load %188*, %188** %5, align 8 %35 = getelementptr inbounds %188, %188* %34, i32 1 store %188* %35, %188** %5, align 8 br label %17 36: ; preds = %21 %37 = load i64, i64* %3, align 8 %38 = bitcast i64* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %38) #21 ret i64 %37 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZN6sktext3gpu11GlyphVector15GlyphVectorSizeEm(i64 noundef %0) #3 comdat align 2 { %2 = alloca i64, align 8 store i64 %0, i64* %2, align 8 %3 = load i64, i64* %2, align 8 %4 = mul i64 8, %3 ret i64 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK14SkGlyphRunList8runCountEv(%186* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %186*, align 8 store %186* %0, %186** %2, align 8 %3 = load %186*, %186** %2, align 8 %4 = getelementptr inbounds %186, %186* %3, i32 0, i32 0 %5 = call noundef i64 @_ZNK6SkSpanIK10SkGlyphRunE4sizeEv(%187* noundef align 8 dereferenceable_or_null(16) %4) ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEi(%263* noalias sret(%263) align 8 %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca i32, align 4 %5 = alloca %265, align 1 %6 = alloca i32, align 4 %7 = alloca %266, align 1 %8 = alloca i32, align 4 %9 = alloca i8*, align 8 %10 = alloca %10, align 8 %11 = bitcast %263* %0 to i8* store i8* %11, i8** %3, align 8 store i32 %1, i32* %4, align 4 %12 = load i32, i32* %4, align 4 %13 = icmp sge i32 %12, 0 %14 = bitcast %265* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %14) #21 br i1 %13, label %15, label %16 15: ; preds = %2 br label %17 16: ; preds = %2 call void @_ZZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEiENKUlvE_clEv(%265* noundef align 1 dereferenceable_or_null(1) %5) br label %17 17: ; preds = %16, %15 %18 = bitcast %265* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %18) #21 %19 = bitcast i32* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %19) #21 store i32 -1431655766, i32* %6, align 4, !annotation !6 %20 = load i32, i32* %4, align 4 %21 = call noundef i32 @_ZN6sktext3gpu10BagOfBytes31PlatformMinimumSizeWithOverheadEii(i32 noundef %20, i32 noundef 8) store i32 %21, i32* %6, align 4 %22 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef 200) %23 = sub nsw i32 2147483647, %22 %24 = load i32, i32* %6, align 4 %25 = icmp sgt i32 %23, %24 %26 = bitcast %266* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %26) #21 br i1 %25, label %27, label %28 27: ; preds = %17 br label %29 28: ; preds = %17 call void @_ZZN6sktext3gpu15SubRunAllocator27AllocateClassMemoryAndArenaI10GrTextBlobEENSt4__Cr5tupleIJNS0_17SubRunInitializerIT_EEiS1_EEEiENKUlvE0_clEv(%266* noundef align 1 dereferenceable_or_null(1) %7) br label %29 29: ; preds = %28, %27 %30 = bitcast %266* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %30) #21 %31 = bitcast i32* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %31) #21 store i32 -1431655766, i32* %8, align 4, !annotation !6 %32 = load i32, i32* %6, align 4 %33 = sext i32 %32 to i64 %34 = add i64 200, %33 %35 = trunc i64 %34 to i32 store i32 %35, i32* %8, align 4 %36 = bitcast i8** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %36) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %9, align 8, !annotation !6 %37 = load i32, i32* %8, align 4 %38 = sext i32 %37 to i64 %39 = call noalias noundef i8* @_Znwm(i64 noundef %38) #24 store i8* %39, i8** %9, align 8 %40 = bitcast %10* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %40) #21 %41 = getelementptr inbounds %10, %10* %10, i32 0, i32 0 %42 = getelementptr inbounds %11, %11* %41, i32 0, i32 0 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %42, align 8, !annotation !6 %43 = getelementptr inbounds %11, %11* %41, i32 0, i32 1 store i32 -1431655766, i32* %43, align 8, !annotation !6 %44 = getelementptr inbounds %11, %11* %41, i32 0, i32 2 %45 = getelementptr inbounds %12, %12* %44, i32 0, i32 0 store i32 -1431655766, i32* %45, align 4, !annotation !6 %46 = load i8*, i8** %9, align 8 %47 = call noundef i8* @_Z12SkTAddOffsetIcvEPT_PT0_l(i8* noundef %46, i64 noundef 200) %48 = load i32, i32* %6, align 4 %49 = load i32, i32* %6, align 4 %50 = sdiv i32 %49, 2 call void @_ZN6sktext3gpu15SubRunAllocatorC1EPcii(%10* noundef align 8 dereferenceable_or_null(16) %10, i8* noundef %47, i32 noundef %48, i32 noundef %50) call void @_ZNSt4__Cr5tupleIJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEC2IJRPvRiS6_ELi0EEEDpOT_(%263* noundef align 8 dereferenceable_or_null(32) %0, i8** noundef align 8 dereferenceable(8) %9, i32* noundef align 4 dereferenceable(4) %8, %10* noundef align 8 dereferenceable(16) %10) call void @_ZN6sktext3gpu15SubRunAllocatorD2Ev(%10* noundef align 8 dereferenceable_or_null(16) %10) #21 %51 = bitcast %10* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %51) #21 %52 = bitcast i8** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %52) #21 %53 = bitcast i32* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %53) #21 %54 = bitcast i32* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %54) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %7* @_ZNSt4__Cr3getILm0EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %0) #7 comdat { %2 = alloca %263*, align 8 store %263* %0, %263** %2, align 8 %3 = load %263*, %263** %2, align 8 %4 = getelementptr inbounds %263, %263* %3, i32 0, i32 0 %5 = bitcast %264* %4 to %6* %6 = call noundef align 8 dereferenceable(8) %7* @_ZNSt4__Cr12__tuple_leafILm0EN6sktext3gpu17SubRunInitializerI10GrTextBlobEELb0EE3getEv(%6* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %7* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm1EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %0) #7 comdat { %2 = alloca %263*, align 8 store %263* %0, %263** %2, align 8 %3 = load %263*, %263** %2, align 8 %4 = getelementptr inbounds %263, %263* %3, i32 0, i32 0 %5 = bitcast %264* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %8* %8 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm1EiLb0EE3getEv(%8* noundef align 4 dereferenceable_or_null(4) %7) #21 ret i32* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %10* @_ZNSt4__Cr3getILm2EJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSB_(%263* noundef align 8 dereferenceable(32) %0) #7 comdat { %2 = alloca %263*, align 8 store %263* %0, %263** %2, align 8 %3 = load %263*, %263** %2, align 8 %4 = getelementptr inbounds %263, %263* %3, i32 0, i32 0 %5 = bitcast %264* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 16 %7 = bitcast i8* %6 to %9* %8 = call noundef align 8 dereferenceable(16) %10* @_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EE3getEv(%9* noundef align 8 dereferenceable_or_null(16) %7) #21 ret %10* %8 } ; Function Attrs: null_pointer_is_valid declare noundef i32 @_ZN11SkPaintPriv21ComputeLuminanceColorERK7SkPaint(%73* noundef align 8 dereferenceable(76)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %178* @_ZN6sktext3gpu17SubRunInitializerI10GrTextBlobE10initializeIJNS0_15SubRunAllocatorERiRK8SkMatrixRjEEEPS2_DpOT_(%7* noundef align 8 dereferenceable_or_null(8) %0, %10* noundef align 8 dereferenceable(16) %1, i32* noundef align 4 dereferenceable(4) %2, %2* noundef align 4 dereferenceable(40) %3, i32* noundef align 4 dereferenceable(4) %4) #3 comdat align 2 { %6 = alloca %7*, align 8 %7 = alloca %10*, align 8 %8 = alloca i32*, align 8 %9 = alloca %2*, align 8 %10 = alloca i32*, align 8 %11 = alloca i8*, align 8 store %7* %0, %7** %6, align 8 store %10* %1, %10** %7, align 8 store i32* %2, i32** %8, align 8 store %2* %3, %2** %9, align 8 store i32* %4, i32** %10, align 8 %12 = load %7*, %7** %6, align 8 %13 = getelementptr inbounds %7, %7* %12, i32 0, i32 0 %14 = bitcast i8** %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %14) #21 store i8* null, i8** %11, align 8 %15 = call noundef i8* @_ZNSt4__Cr8exchangeIPvDnEET_RS2_OT0_(i8** noundef align 8 dereferenceable(8) %13, i8** noundef align 8 dereferenceable(8) %11) %16 = call noundef i8* @_ZN10GrTextBlobnwEmPv(i64 noundef 200, i8* noundef %15) %17 = bitcast i8* %16 to %178* %18 = load %10*, %10** %7, align 8 %19 = load i32*, i32** %8, align 8 %20 = load i32, i32* %19, align 4 %21 = load %2*, %2** %9, align 8 %22 = load i32*, i32** %10, align 8 %23 = load i32, i32* %22, align 4 call void @_ZN10GrTextBlobC1EON6sktext3gpu15SubRunAllocatorEiRK8SkMatrixj(%178* noundef align 8 dereferenceable_or_null(200) %17, %10* noundef align 8 dereferenceable(16) %18, i32 noundef %20, %2* noundef align 4 dereferenceable(40) %21, i32 noundef %23) %24 = bitcast i8** %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %24) #21 ret %178* %17 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI10GrTextBlobEC2EPS0_(%240* noundef align 8 dereferenceable_or_null(8) %0, %178* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %240*, align 8 %4 = alloca %178*, align 8 store %240* %0, %240** %3, align 8 store %178* %1, %178** %4, align 8 %5 = load %240*, %240** %3, align 8 %6 = getelementptr inbounds %240, %240* %5, i32 0, i32 0 %7 = load %178*, %178** %4, align 8 store %178* %7, %178** %6, align 8 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN21SkGlyphRunListPainter22categorizeGlyphRunListEP26SkGlyphRunPainterInterfaceRK14SkGlyphRunListRK8SkMatrixRK7SkPaintRK13GrSDFTControlPKc(%241* noundef align 8 dereferenceable_or_null(216), %180* noundef, %186* noundef align 8 dereferenceable(56), %2* noundef align 4 dereferenceable(40), %73* noundef align 8 dereferenceable(76), %231* noundef align 4 dereferenceable(9), i8* noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %178* @_ZNK5sk_spI10GrTextBlobE3getEv(%240* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %240*, align 8 store %240* %0, %240** %2, align 8 %3 = load %240*, %240** %2, align 8 %4 = getelementptr inbounds %240, %240* %3, i32 0, i32 0 %5 = load %178*, %178** %4, align 8 ret %178* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI10GrTextBlobED2Ev(%240* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %240*, align 8 store %240* %0, %240** %2, align 8 %3 = load %240*, %240** %2, align 8 %4 = getelementptr inbounds %240, %240* %3, i32 0, i32 0 %5 = load %178*, %178** %4, align 8 call void @710(%178* noundef %5) ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS2_15SubRunAllocatorEEED2Ev(%263* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %263*, align 8 store %263* %0, %263** %2, align 8 %3 = load %263*, %263** %2, align 8 %4 = getelementptr inbounds %263, %263* %3, i32 0, i32 0 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS4_15SubRunAllocatorEEED2Ev(%264* noundef align 8 dereferenceable_or_null(32) %4) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob6addKeyERKNS_3KeyE(%178* noundef align 8 dereferenceable_or_null(200) %0, %0* noundef align 4 dereferenceable(76) %1) #3 align 2 { %3 = alloca %178*, align 8 %4 = alloca %0*, align 8 store %178* %0, %178** %3, align 8 store %0* %1, %0** %4, align 8 %5 = load %178*, %178** %3, align 8 %6 = load %0*, %0** %4, align 8 %7 = getelementptr inbounds %178, %178* %5, i32 0, i32 10 %8 = bitcast %0* %7 to i8* %9 = bitcast %0* %6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 4 %9, i64 76, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef zeroext i1 @_ZNK10GrTextBlob14hasPerspectiveEv(%178* noundef align 8 dereferenceable_or_null(200) %0) #3 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = getelementptr inbounds %178, %178* %3, i32 0, i32 8 %5 = call noundef zeroext i1 @_ZNK8SkMatrix14hasPerspectiveEv(%2* noundef align 4 dereferenceable_or_null(40) %4) ret i1 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef zeroext i1 @_ZNK10GrTextBlob8canReuseERK7SkPaintRK8SkMatrix(%178* noundef align 8 dereferenceable_or_null(200) %0, %73* noundef align 8 dereferenceable(76) %1, %2* noundef align 4 dereferenceable(40) %2) #3 align 2 { %4 = alloca i1, align 1 %5 = alloca %178*, align 8 %6 = alloca %73*, align 8 %7 = alloca %2*, align 8 %8 = alloca %181*, align 8 %9 = alloca %267, align 8 %10 = alloca %267, align 8 %11 = alloca i32, align 4 %12 = alloca %15*, align 8 store %178* %0, %178** %5, align 8 store %73* %1, %73** %6, align 8 store %2* %2, %2** %7, align 8 %13 = load %178*, %178** %5, align 8 %14 = getelementptr inbounds %178, %178* %13, i32 0, i32 6 %15 = call noundef zeroext i1 @_ZNK12GrSubRunList7isEmptyEv(%181* noundef align 8 dereferenceable_or_null(16) %14) br i1 %15, label %22, label %16 16: ; preds = %3 %17 = getelementptr inbounds %178, %178* %13, i32 0, i32 11 %18 = load i8, i8* %17, align 4, !range !7 %19 = trunc i8 %18 to i1 br i1 %19, label %22, label %20 20: ; preds = %16 %21 = call noundef zeroext i1 @_ZNK10GrTextBlob14hasPerspectiveEv(%178* noundef align 8 dereferenceable_or_null(200) %13) br i1 %21, label %22, label %27 22: ; preds = %20, %16, %3 %23 = getelementptr inbounds %178, %178* %13, i32 0, i32 8 %24 = load %2*, %2** %7, align 8 %25 = call noundef zeroext i1 @_ZneRK8SkMatrixS1_(%2* noundef align 4 dereferenceable(40) %23, %2* noundef align 4 dereferenceable(40) %24) br i1 %25, label %26, label %27 26: ; preds = %22 store i1 false, i1* %4, align 1 br label %80 27: ; preds = %22, %20 %28 = getelementptr inbounds %178, %178* %13, i32 0, i32 10 %29 = getelementptr inbounds %0, %0* %28, i32 0, i32 1 %30 = load i32, i32* %29, align 4 %31 = icmp eq i32 %30, 0 br i1 %31, label %32, label %39 32: ; preds = %27 %33 = getelementptr inbounds %178, %178* %13, i32 0, i32 9 %34 = load i32, i32* %33, align 4 %35 = load %73*, %73** %6, align 8 %36 = call noundef i32 @_ZN11SkPaintPriv21ComputeLuminanceColorERK7SkPaint(%73* noundef align 8 dereferenceable(76) %35) %37 = icmp ne i32 %34, %36 br i1 %37, label %38, label %39 38: ; preds = %32 store i1 false, i1* %4, align 1 br label %80 39: ; preds = %32, %27 %40 = bitcast %181** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %40) #21 store %181* inttoptr (i64 -6148914691236517206 to %181*), %181** %8, align 8, !annotation !6 %41 = getelementptr inbounds %178, %178* %13, i32 0, i32 6 store %181* %41, %181** %8, align 8 %42 = bitcast %267* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %42) #21 %43 = getelementptr inbounds %267, %267* %9, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %43, align 8, !annotation !6 %44 = load %181*, %181** %8, align 8 %45 = call %15* @_ZNK12GrSubRunList5beginEv(%181* noundef align 8 dereferenceable_or_null(16) %44) %46 = getelementptr inbounds %267, %267* %9, i32 0, i32 0 store %15* %45, %15** %46, align 8 %47 = bitcast %267* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %47) #21 %48 = getelementptr inbounds %267, %267* %10, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %48, align 8, !annotation !6 %49 = load %181*, %181** %8, align 8 %50 = call %15* @_ZNK12GrSubRunList3endEv(%181* noundef align 8 dereferenceable_or_null(16) %49) %51 = getelementptr inbounds %267, %267* %10, i32 0, i32 0 store %15* %50, %15** %51, align 8 br label %52 52: ; preds = %72, %39 %53 = call noundef zeroext i1 @_ZNK12GrSubRunList8IteratorneERKS0_(%267* noundef align 8 dereferenceable_or_null(8) %9, %267* noundef align 8 dereferenceable(8) %10) br i1 %53, label %55, label %54 54: ; preds = %52 store i32 2, i32* %11, align 4 br label %74 55: ; preds = %52 %56 = bitcast %15** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %56) #21 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %12, align 8, !annotation !6 %57 = call noundef align 8 dereferenceable(16) %15* @_ZN12GrSubRunList8IteratordeEv(%267* noundef align 8 dereferenceable_or_null(8) %9) store %15* %57, %15** %12, align 8 %58 = load %15*, %15** %12, align 8 %59 = load %73*, %73** %6, align 8 %60 = load %2*, %2** %7, align 8 %61 = bitcast %15* %58 to i1 (%15*, %73*, %2*)*** %62 = load i1 (%15*, %73*, %2*)**, i1 (%15*, %73*, %2*)*** %61, align 8 %63 = getelementptr inbounds i1 (%15*, %73*, %2*)*, i1 (%15*, %73*, %2*)** %62, i64 5 %64 = load i1 (%15*, %73*, %2*)*, i1 (%15*, %73*, %2*)** %63, align 8 %65 = call noundef zeroext i1 %64(%15* noundef align 8 dereferenceable_or_null(16) %58, %73* noundef align 8 dereferenceable(76) %59, %2* noundef align 4 dereferenceable(40) %60) br i1 %65, label %67, label %66 66: ; preds = %55 store i1 false, i1* %4, align 1 store i32 1, i32* %11, align 4 br label %68 67: ; preds = %55 store i32 0, i32* %11, align 4 br label %68 68: ; preds = %67, %66 %69 = bitcast %15** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %69) #21 %70 = load i32, i32* %11, align 4 switch i32 %70, label %74 [ i32 0, label %71 ] 71: ; preds = %68 br label %72 72: ; preds = %71 %73 = call noundef align 8 dereferenceable(8) %267* @_ZN12GrSubRunList8IteratorppEv(%267* noundef align 8 dereferenceable_or_null(8) %9) br label %52 74: ; preds = %68, %54 %75 = bitcast %267* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %75) #21 %76 = bitcast %267* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %76) #21 %77 = bitcast %181** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %77) #21 %78 = load i32, i32* %11, align 4 switch i32 %78, label %82 [ i32 2, label %79 i32 1, label %80 ] 79: ; preds = %74 store i1 true, i1* %4, align 1 br label %80 80: ; preds = %79, %74, %38, %26 %81 = load i1, i1* %4, align 1 ret i1 %81 82: ; preds = %74 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK12GrSubRunList7isEmptyEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %181*, align 8 store %181* %0, %181** %2, align 8 %3 = load %181*, %181** %2, align 8 %4 = getelementptr inbounds %181, %181* %3, i32 0, i32 0 %5 = call noundef zeroext i1 @_ZNSt4__CreqI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn(%16* noundef align 8 dereferenceable(8) %4, i8* null) #21 ret i1 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr noundef zeroext i1 @_ZneRK8SkMatrixS1_(%2* noundef align 4 dereferenceable(40) %0, %2* noundef align 4 dereferenceable(40) %1) #3 comdat { %3 = alloca %2*, align 8 %4 = alloca %2*, align 8 store %2* %0, %2** %3, align 8 store %2* %1, %2** %4, align 8 %5 = load %2*, %2** %3, align 8 %6 = load %2*, %2** %4, align 8 %7 = call noundef zeroext i1 @_ZeqRK8SkMatrixS1_(%2* noundef align 4 dereferenceable(40) %5, %2* noundef align 4 dereferenceable(40) %6) %8 = xor i1 %7, true ret i1 %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden %15* @_ZNK12GrSubRunList5beginEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %267, align 8 %3 = alloca %181*, align 8 store %181* %0, %181** %3, align 8 %4 = load %181*, %181** %3, align 8 %5 = getelementptr inbounds %181, %181* %4, i32 0, i32 0 %6 = call noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE3getEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 call void @_ZN12GrSubRunList8IteratorC2EP8GrSubRun(%267* noundef align 8 dereferenceable_or_null(8) %2, %15* noundef %6) %7 = getelementptr inbounds %267, %267* %2, i32 0, i32 0 %8 = load %15*, %15** %7, align 8 ret %15* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden %15* @_ZNK12GrSubRunList3endEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %267, align 8 %3 = alloca %181*, align 8 store %181* %0, %181** %3, align 8 %4 = load %181*, %181** %3, align 8 call void @_ZN12GrSubRunList8IteratorC2EP8GrSubRun(%267* noundef align 8 dereferenceable_or_null(8) %2, %15* noundef null) %5 = getelementptr inbounds %267, %267* %2, i32 0, i32 0 %6 = load %15*, %15** %5, align 8 ret %15* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK12GrSubRunList8IteratorneERKS0_(%267* noundef align 8 dereferenceable_or_null(8) %0, %267* noundef align 8 dereferenceable(8) %1) #3 comdat align 2 { %3 = alloca %267*, align 8 %4 = alloca %267*, align 8 store %267* %0, %267** %3, align 8 store %267* %1, %267** %4, align 8 %5 = load %267*, %267** %3, align 8 %6 = getelementptr inbounds %267, %267* %5, i32 0, i32 0 %7 = load %15*, %15** %6, align 8 %8 = load %267*, %267** %4, align 8 %9 = getelementptr inbounds %267, %267* %8, i32 0, i32 0 %10 = load %15*, %15** %9, align 8 %11 = icmp ne %15* %7, %10 ret i1 %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %15* @_ZN12GrSubRunList8IteratordeEv(%267* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %267*, align 8 store %267* %0, %267** %2, align 8 %3 = load %267*, %267** %2, align 8 %4 = getelementptr inbounds %267, %267* %3, i32 0, i32 0 %5 = load %15*, %15** %4, align 8 ret %15* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %267* @_ZN12GrSubRunList8IteratorppEv(%267* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %267*, align 8 store %267* %0, %267** %2, align 8 %3 = load %267*, %267** %2, align 8 %4 = getelementptr inbounds %267, %267* %3, i32 0, i32 0 %5 = load %15*, %15** %4, align 8 %6 = getelementptr inbounds %15, %15* %5, i32 0, i32 1 %7 = call noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE3getEv(%16* noundef align 8 dereferenceable_or_null(8) %6) #21 %8 = getelementptr inbounds %267, %267* %3, i32 0, i32 0 store %15* %7, %15** %8, align 8 ret %267* %3 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef align 4 dereferenceable(76) %0* @_ZNK10GrTextBlob3keyEv(%178* noundef align 8 dereferenceable_or_null(200) %0) #3 align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = getelementptr inbounds %178, %178* %3, i32 0, i32 10 ret %0* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob4drawEP8SkCanvasPK6GrClipRK16SkMatrixProvider7SkPointRK7SkPaintPN5skgpu2v118SurfaceDrawContextE(%178* noundef align 8 dereferenceable_or_null(200) %0, %268* noundef %1, %294* noundef %2, %13* noundef align 4 dereferenceable(105) %3, <2 x float> %4, %73* noundef align 8 dereferenceable(76) %5, %295* noundef %6) #5 align 2 { %8 = alloca %5, align 4 %9 = alloca %178*, align 8 %10 = alloca %268*, align 8 %11 = alloca %294*, align 8 %12 = alloca %13*, align 8 %13 = alloca %73*, align 8 %14 = alloca %295*, align 8 %15 = alloca %181*, align 8 %16 = alloca %267, align 8 %17 = alloca %267, align 8 %18 = alloca %15*, align 8 %19 = alloca %5, align 4 %20 = bitcast %5* %8 to <2 x float>* store <2 x float> %4, <2 x float>* %20, align 4 store %178* %0, %178** %9, align 8 store %268* %1, %268** %10, align 8 store %294* %2, %294** %11, align 8 store %13* %3, %13** %12, align 8 store %73* %5, %73** %13, align 8 store %295* %6, %295** %14, align 8 %21 = load %178*, %178** %9, align 8 %22 = bitcast %181** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %22) #21 store %181* inttoptr (i64 -6148914691236517206 to %181*), %181** %15, align 8, !annotation !6 %23 = getelementptr inbounds %178, %178* %21, i32 0, i32 6 store %181* %23, %181** %15, align 8 %24 = bitcast %267* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 %25 = getelementptr inbounds %267, %267* %16, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %25, align 8, !annotation !6 %26 = load %181*, %181** %15, align 8 %27 = call %15* @_ZN12GrSubRunList5beginEv(%181* noundef align 8 dereferenceable_or_null(16) %26) %28 = getelementptr inbounds %267, %267* %16, i32 0, i32 0 store %15* %27, %15** %28, align 8 %29 = bitcast %267* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %29) #21 %30 = getelementptr inbounds %267, %267* %17, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %30, align 8, !annotation !6 %31 = load %181*, %181** %15, align 8 %32 = call %15* @_ZN12GrSubRunList3endEv(%181* noundef align 8 dereferenceable_or_null(16) %31) %33 = getelementptr inbounds %267, %267* %17, i32 0, i32 0 store %15* %32, %15** %33, align 8 br label %34 34: ; preds = %58, %7 %35 = call noundef zeroext i1 @_ZNK12GrSubRunList8IteratorneERKS0_(%267* noundef align 8 dereferenceable_or_null(8) %16, %267* noundef align 8 dereferenceable(8) %17) br i1 %35, label %40, label %36 36: ; preds = %34 %37 = bitcast %267* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %37) #21 %38 = bitcast %267* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %38) #21 %39 = bitcast %181** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %39) #21 br label %60 40: ; preds = %34 %41 = bitcast %15** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %41) #21 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %18, align 8, !annotation !6 %42 = call noundef align 8 dereferenceable(16) %15* @_ZN12GrSubRunList8IteratordeEv(%267* noundef align 8 dereferenceable_or_null(8) %16) store %15* %42, %15** %18, align 8 %43 = load %15*, %15** %18, align 8 %44 = load %268*, %268** %10, align 8 %45 = load %294*, %294** %11, align 8 %46 = load %13*, %13** %12, align 8 %47 = bitcast %5* %19 to i8* %48 = bitcast %5* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %47, i8* align 4 %48, i64 8, i1 false) %49 = load %73*, %73** %13, align 8 %50 = load %295*, %295** %14, align 8 %51 = bitcast %5* %19 to <2 x float>* %52 = load <2 x float>, <2 x float>* %51, align 4 %53 = bitcast %15* %43 to void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*** %54 = load void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)**, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*** %53, align 8 %55 = getelementptr inbounds void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)** %54, i64 2 %56 = load void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)** %55, align 8 call void %56(%15* noundef align 8 dereferenceable_or_null(16) %43, %268* noundef %44, %294* noundef %45, %13* noundef align 4 dereferenceable(105) %46, <2 x float> %52, %73* noundef align 8 dereferenceable(76) %49, %295* noundef %50) %57 = bitcast %15** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %57) #21 br label %58 58: ; preds = %40 %59 = call noundef align 8 dereferenceable(8) %267* @_ZN12GrSubRunList8IteratorppEv(%267* noundef align 8 dereferenceable_or_null(8) %16) br label %34 60: ; preds = %36 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden %15* @_ZN12GrSubRunList5beginEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %267, align 8 %3 = alloca %181*, align 8 store %181* %0, %181** %3, align 8 %4 = load %181*, %181** %3, align 8 %5 = getelementptr inbounds %181, %181* %4, i32 0, i32 0 %6 = call noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE3getEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 call void @_ZN12GrSubRunList8IteratorC2EP8GrSubRun(%267* noundef align 8 dereferenceable_or_null(8) %2, %15* noundef %6) %7 = getelementptr inbounds %267, %267* %2, i32 0, i32 0 %8 = load %15*, %15** %7, align 8 ret %15* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden %15* @_ZN12GrSubRunList3endEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %267, align 8 %3 = alloca %181*, align 8 store %181* %0, %181** %3, align 8 %4 = load %181*, %181** %3, align 8 call void @_ZN12GrSubRunList8IteratorC2EP8GrSubRun(%267* noundef align 8 dereferenceable_or_null(8) %2, %15* noundef null) %5 = getelementptr inbounds %267, %267* %2, i32 0, i32 0 %6 = load %15*, %15** %5, align 8 ret %15* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden noundef %528* @_ZNK10GrTextBlob22testingOnlyFirstSubRunEv(%178* noundef align 8 dereferenceable_or_null(200) %0) #3 align 2 { %2 = alloca %528*, align 8 %3 = alloca %178*, align 8 store %178* %0, %178** %3, align 8 %4 = load %178*, %178** %3, align 8 %5 = getelementptr inbounds %178, %178* %4, i32 0, i32 6 %6 = call noundef zeroext i1 @_ZNK12GrSubRunList7isEmptyEv(%181* noundef align 8 dereferenceable_or_null(16) %5) br i1 %6, label %7, label %8 7: ; preds = %1 store %528* null, %528** %2, align 8 br label %16 8: ; preds = %1 %9 = getelementptr inbounds %178, %178* %4, i32 0, i32 6 %10 = call noundef align 8 dereferenceable(16) %15* @_ZNK12GrSubRunList5frontEv(%181* noundef align 8 dereferenceable_or_null(16) %9) %11 = bitcast %15* %10 to %528* (%15*)*** %12 = load %528* (%15*)**, %528* (%15*)*** %11, align 8 %13 = getelementptr inbounds %528* (%15*)*, %528* (%15*)** %12, i64 6 %14 = load %528* (%15*)*, %528* (%15*)** %13, align 8 %15 = call noundef %528* %14(%15* noundef align 8 dereferenceable_or_null(16) %10) store %528* %15, %528** %2, align 8 br label %16 16: ; preds = %8, %7 %17 = load %528*, %528** %2, align 8 ret %528* %17 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %15* @_ZNK12GrSubRunList5frontEv(%181* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %181*, align 8 store %181* %0, %181** %2, align 8 %3 = load %181*, %181** %2, align 8 %4 = getelementptr inbounds %181, %181* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(16) %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEdeEv(%16* noundef align 8 dereferenceable_or_null(8) %4) ret %15* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlobC2EON6sktext3gpu15SubRunAllocatorEiRK8SkMatrixj(%178* noundef align 8 dereferenceable_or_null(200) %0, %10* noundef align 8 dereferenceable(16) %1, i32 noundef %2, %2* noundef align 4 dereferenceable(40) %3, i32 noundef %4) unnamed_addr #0 align 2 { %6 = alloca %178*, align 8 %7 = alloca %10*, align 8 %8 = alloca i32, align 4 %9 = alloca %2*, align 8 %10 = alloca i32, align 4 store %178* %0, %178** %6, align 8 store %10* %1, %10** %7, align 8 store i32 %2, i32* %8, align 4 store %2* %3, %2** %9, align 8 store i32 %4, i32* %10, align 4 %11 = load %178*, %178** %6, align 8 %12 = bitcast %178* %11 to %19* call void @_ZN20GrTextReferenceFrameC2Ev(%19* noundef align 8 dereferenceable_or_null(12) %12) %13 = bitcast %178* %11 to i8* %14 = getelementptr inbounds i8, i8* %13, i64 16 %15 = bitcast i8* %14 to %180* call void @_ZN26SkGlyphRunPainterInterfaceC2Ev(%180* noundef align 8 dereferenceable_or_null(8) %15) #21 %16 = bitcast %178* %11 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [11 x i8*], [9 x i8*] }, { [11 x i8*], [9 x i8*] }* @_ZTV10GrTextBlob, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %16, align 8 %17 = bitcast %178* %11 to i8* %18 = getelementptr inbounds i8, i8* %17, i64 16 %19 = bitcast i8* %18 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [11 x i8*], [9 x i8*] }, { [11 x i8*], [9 x i8*] }* @_ZTV10GrTextBlob, i32 0, inrange i32 1, i32 2) to i32 (...)**), i32 (...)*** %19, align 8 %20 = getelementptr inbounds %178, %178* %11, i32 0, i32 3 store %178* null, %178** %20, align 8 %21 = getelementptr inbounds %178, %178* %11, i32 0, i32 4 store %178* null, %178** %21, align 8 %22 = getelementptr inbounds %178, %178* %11, i32 0, i32 5 %23 = load %10*, %10** %7, align 8 call void @_ZN6sktext3gpu15SubRunAllocatorC2EOS1_(%10* noundef align 8 dereferenceable_or_null(16) %22, %10* noundef align 8 dereferenceable(16) %23) %24 = getelementptr inbounds %178, %178* %11, i32 0, i32 6 call void @_ZN12GrSubRunListC2Ev(%181* noundef align 8 dereferenceable_or_null(16) %24) #21 %25 = getelementptr inbounds %178, %178* %11, i32 0, i32 7 %26 = load i32, i32* %8, align 4 store i32 %26, i32* %25, align 8 %27 = getelementptr inbounds %178, %178* %11, i32 0, i32 8 %28 = load %2*, %2** %9, align 8 %29 = bitcast %2* %27 to i8* %30 = bitcast %2* %28 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %29, i8* align 4 %30, i64 40, i1 false) %31 = getelementptr inbounds %178, %178* %11, i32 0, i32 9 %32 = load i32, i32* %10, align 4 store i32 %32, i32* %31, align 4 %33 = getelementptr inbounds %178, %178* %11, i32 0, i32 10 call void @_ZN10GrTextBlob3KeyC2Ev(%0* noundef align 4 dereferenceable_or_null(76) %33) %34 = getelementptr inbounds %178, %178* %11, i32 0, i32 11 store i8 0, i8* %34, align 4 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN20GrTextReferenceFrameC2Ev(%19* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %19*, align 8 store %19* %0, %19** %2, align 8 %3 = load %19*, %19** %2, align 8 %4 = bitcast %19* %3 to %529* call void @_ZN8SkRefCntC2Ev(%529* noundef align 8 dereferenceable_or_null(12) %4) %5 = bitcast %19* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [6 x i8*] }, { [6 x i8*] }* @_ZTV20GrTextReferenceFrame, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %5, align 8 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN26SkGlyphRunPainterInterfaceC2Ev(%180* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %180*, align 8 store %180* %0, %180** %2, align 8 %3 = load %180*, %180** %2, align 8 %4 = bitcast %180* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [9 x i8*] }, { [9 x i8*] }* @_ZTV26SkGlyphRunPainterInterface, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %4, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu15SubRunAllocatorC2EOS1_(%10* noundef align 8 dereferenceable_or_null(16) %0, %10* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %10*, align 8 %4 = alloca %10*, align 8 store %10* %0, %10** %3, align 8 store %10* %1, %10** %4, align 8 %5 = load %10*, %10** %3, align 8 %6 = getelementptr inbounds %10, %10* %5, i32 0, i32 0 %7 = load %10*, %10** %4, align 8 %8 = getelementptr inbounds %10, %10* %7, i32 0, i32 0 call void @_ZN6sktext3gpu10BagOfBytesC2EOS1_(%11* noundef align 8 dereferenceable_or_null(16) %6, %11* noundef align 8 dereferenceable(16) %8) ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12GrSubRunListC2Ev(%181* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %181*, align 8 store %181* %0, %181** %2, align 8 %3 = load %181*, %181** %2, align 8 %4 = getelementptr inbounds %181, %181* %3, i32 0, i32 0 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %4, i8* null) #21 %5 = getelementptr inbounds %181, %181* %3, i32 0, i32 1 %6 = getelementptr inbounds %181, %181* %3, i32 0, i32 0 store %16* %6, %16** %5, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob18processDeviceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeE(%178* noundef align 8 dereferenceable_or_null(200) %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2) unnamed_addr #3 align 2 { %4 = alloca %178*, align 8 %5 = alloca %530*, align 8 %6 = alloca %132*, align 8 %7 = alloca %534, align 8 %8 = alloca %534, align 8 store %178* %0, %178** %4, align 8 store %530* %1, %530** %5, align 8 store %132* %2, %132** %6, align 8 %9 = load %178*, %178** %4, align 8 %10 = bitcast %534* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %10) #21 %11 = getelementptr inbounds %534, %534* %7, i32 0, i32 0 store %178* inttoptr (i64 -6148914691236517206 to %178*), %178** %11, align 8, !annotation !6 %12 = getelementptr inbounds %534, %534* %7, i32 0, i32 0 store %178* %9, %178** %12, align 8 %13 = bitcast %534* %8 to i8* %14 = bitcast %534* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 8, i1 false) %15 = load %530*, %530** %5, align 8 %16 = load %132*, %132** %6, align 8 %17 = getelementptr inbounds %534, %534* %8, i32 0, i32 0 %18 = load %178*, %178** %17, align 8 call void @37(%178* %18, %530* noundef align 8 dereferenceable(24) %15, %132* noundef align 8 dereferenceable(8) %16) %19 = bitcast %534* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %19) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @37(%178* %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2) #3 { %4 = alloca %534, align 8 %5 = alloca %530*, align 8 %6 = alloca %132*, align 8 %7 = alloca %535, align 8 %8 = alloca %98*, align 8 %9 = alloca i32, align 4 %10 = alloca i64, align 8 %11 = alloca i64, align 8 %12 = alloca i32, align 4 %13 = alloca %530, align 8 %14 = alloca %132, align 8 %15 = alloca %530, align 8 %16 = getelementptr inbounds %534, %534* %4, i32 0, i32 0 store %178* %0, %178** %16, align 8 store %530* %1, %530** %5, align 8 store %132* %2, %132** %6, align 8 %17 = load %530*, %530** %5, align 8 %18 = call noundef zeroext i1 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5emptyEv(%530* noundef align 8 dereferenceable_or_null(24) %17) br i1 %18, label %19, label %20 19: ; preds = %3 br label %105 20: ; preds = %3 %21 = bitcast %535* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %21) #21 %22 = getelementptr inbounds %535, %535* %7, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %22, align 8, !annotation !6 %23 = getelementptr inbounds %535, %535* %7, i32 0, i32 1 store i64 -6148914691236517206, i64* %23, align 8, !annotation !6 %24 = load %530*, %530** %5, align 8 %25 = call { %96*, i64 } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3getILm0EEEDav(%530* noundef align 8 dereferenceable_or_null(24) %24) %26 = bitcast %535* %7 to { %96*, i64 }* %27 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %26, i32 0, i32 0 %28 = extractvalue { %96*, i64 } %25, 0 store %96* %28, %96** %27, align 8 %29 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %26, i32 0, i32 1 %30 = extractvalue { %96*, i64 } %25, 1 store i64 %30, i64* %29, align 8 %31 = bitcast %98** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %31) #21 store %98* inttoptr (i64 -6148914691236517206 to %98*), %98** %8, align 8, !annotation !6 %32 = call noundef align 8 dereferenceable(8) %96* @_ZNK6SkSpanI14SkGlyphVariantEixEm(%535* noundef align 8 dereferenceable_or_null(16) %7, i64 noundef 0) %33 = call noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %32) store %98* %33, %98** %8, align 8 %34 = bitcast i32* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %34) #21 store i32 -1431655766, i32* %9, align 4, !annotation !6 %35 = load %98*, %98** %8, align 8 %36 = call noundef zeroext i8 @_ZNK7SkGlyph10maskFormatEv(%98* noundef align 8 dereferenceable_or_null(48) %35) %37 = call noundef i32 @_ZN6sktext3gpu5Glyph17FormatFromSkGlyphEN6SkMask6FormatE(i8 noundef zeroext %36) store i32 %37, i32* %9, align 4 %38 = bitcast i64* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %38) #21 store i64 -6148914691236517206, i64* %10, align 8, !annotation !6 store i64 0, i64* %10, align 8 %39 = bitcast i64* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %39) #21 store i64 -6148914691236517206, i64* %11, align 8, !annotation !6 store i64 1, i64* %11, align 8 br label %40 40: ; preds = %81, %20 %41 = load i64, i64* %11, align 8 %42 = load %530*, %530** %5, align 8 %43 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %42) %44 = icmp ult i64 %41, %43 br i1 %44, label %47, label %45 45: ; preds = %40 %46 = bitcast i64* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %46) #21 br label %84 47: ; preds = %40 %48 = load i64, i64* %11, align 8 %49 = call noundef align 8 dereferenceable(8) %96* @_ZNK6SkSpanI14SkGlyphVariantEixEm(%535* noundef align 8 dereferenceable_or_null(16) %7, i64 noundef %48) %50 = call noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %49) store %98* %50, %98** %8, align 8 %51 = bitcast i32* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %51) #21 store i32 -1431655766, i32* %12, align 4, !annotation !6 %52 = load %98*, %98** %8, align 8 %53 = call noundef zeroext i8 @_ZNK7SkGlyph10maskFormatEv(%98* noundef align 8 dereferenceable_or_null(48) %52) %54 = call noundef i32 @_ZN6sktext3gpu5Glyph17FormatFromSkGlyphEN6SkMask6FormatE(i8 noundef zeroext %53) store i32 %54, i32* %12, align 4 %55 = load i32, i32* %9, align 4 %56 = load i32, i32* %12, align 4 %57 = icmp ne i32 %55, %56 br i1 %57, label %58, label %79 58: ; preds = %47 %59 = bitcast %530* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %59) #21 %60 = getelementptr inbounds %530, %530* %13, i32 0, i32 0 %61 = getelementptr inbounds %531, %531* %60, i32 0, i32 0 %62 = getelementptr inbounds %532, %532* %61, i32 0, i32 0 %63 = getelementptr inbounds %533, %533* %62, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %63, align 8, !annotation !6 %64 = getelementptr inbounds %532, %532* %61, i32 0, i32 1 %65 = getelementptr inbounds %256, %256* %64, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %65, align 8, !annotation !6 %66 = getelementptr inbounds %530, %530* %13, i32 0, i32 1 store i64 -6148914691236517206, i64* %66, align 8, !annotation !6 %67 = load %530*, %530** %5, align 8 %68 = load i64, i64* %10, align 8 %69 = load i64, i64* %11, align 8 %70 = load i64, i64* %10, align 8 %71 = sub i64 %69, %70 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE7subspanEmm(%530* sret(%530) align 8 %13, %530* noundef align 8 dereferenceable_or_null(24) %67, i64 noundef %68, i64 noundef %71) %72 = load i32, i32* %9, align 4 %73 = bitcast %132* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %73) #21 %74 = load %132*, %132** %6, align 8 call void @_ZN5sk_spI8SkStrikeEC2ERKS1_(%132* noundef align 8 dereferenceable_or_null(8) %14, %132* noundef align 8 dereferenceable(8) %74) call void @711(%534* noundef align 8 dereferenceable_or_null(8) %4, %530* noundef align 8 dereferenceable(24) %13, i32 noundef %72, %132* noundef align 8 dereferenceable(8) %14) call void @_ZN5sk_spI8SkStrikeED2Ev(%132* noundef align 8 dereferenceable_or_null(8) %14) #21 %75 = bitcast %132* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %75) #21 %76 = load i32, i32* %12, align 4 store i32 %76, i32* %9, align 4 %77 = load i64, i64* %11, align 8 store i64 %77, i64* %10, align 8 %78 = bitcast %530* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %78) #21 br label %79 79: ; preds = %58, %47 %80 = bitcast i32* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %80) #21 br label %81 81: ; preds = %79 %82 = load i64, i64* %11, align 8 %83 = add i64 %82, 1 store i64 %83, i64* %11, align 8 br label %40, !llvm.loop !8 84: ; preds = %45 %85 = bitcast %530* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %85) #21 %86 = getelementptr inbounds %530, %530* %15, i32 0, i32 0 %87 = getelementptr inbounds %531, %531* %86, i32 0, i32 0 %88 = getelementptr inbounds %532, %532* %87, i32 0, i32 0 %89 = getelementptr inbounds %533, %533* %88, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %89, align 8, !annotation !6 %90 = getelementptr inbounds %532, %532* %87, i32 0, i32 1 %91 = getelementptr inbounds %256, %256* %90, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %91, align 8, !annotation !6 %92 = getelementptr inbounds %530, %530* %15, i32 0, i32 1 store i64 -6148914691236517206, i64* %92, align 8, !annotation !6 %93 = load %530*, %530** %5, align 8 %94 = load %530*, %530** %5, align 8 %95 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %94) %96 = load i64, i64* %10, align 8 %97 = sub i64 %95, %96 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4lastEm(%530* sret(%530) align 8 %15, %530* noundef align 8 dereferenceable_or_null(24) %93, i64 noundef %97) %98 = load i32, i32* %9, align 4 %99 = load %132*, %132** %6, align 8 call void @711(%534* noundef align 8 dereferenceable_or_null(8) %4, %530* noundef align 8 dereferenceable(24) %15, i32 noundef %98, %132* noundef align 8 dereferenceable(8) %99) %100 = bitcast %530* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %100) #21 %101 = bitcast i64* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %101) #21 %102 = bitcast i32* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %102) #21 %103 = bitcast %98** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %103) #21 %104 = bitcast %535* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %104) #21 br label %105 105: ; preds = %84, %19 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlob18processDeviceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeE(%178* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2) unnamed_addr #0 align 2 { %4 = alloca %178*, align 8 %5 = alloca %530*, align 8 %6 = alloca %132*, align 8 store %178* %0, %178** %4, align 8 store %530* %1, %530** %5, align 8 store %132* %2, %132** %6, align 8 %7 = load %178*, %178** %4, align 8 %8 = bitcast %178* %7 to i8* %9 = getelementptr inbounds i8, i8* %8, i64 -16 %10 = bitcast i8* %9 to %178* %11 = load %530*, %530** %5, align 8 %12 = load %132*, %132** %6, align 8 tail call void @_ZN10GrTextBlob18processDeviceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeE(%178* noundef align 8 dereferenceable_or_null(200) %10, %530* noundef align 8 dereferenceable(24) %11, %132* noundef align 8 dereferenceable(8) %12) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob18processSourcePathsERK5SkZipIJ14SkGlyphVariant7SkPointEERK6SkFontRK12SkDescriptorf(%178* noundef align 8 dereferenceable_or_null(200) %0, %530* noundef align 8 dereferenceable(24) %1, %196* noundef align 8 dereferenceable(23) %2, %128* noundef align 4 dereferenceable(12) %3, float noundef %4) unnamed_addr #3 align 2 { %6 = alloca %178*, align 8 %7 = alloca %530*, align 8 %8 = alloca %196*, align 8 %9 = alloca %128*, align 8 %10 = alloca float, align 4 %11 = alloca %16, align 8 store %178* %0, %178** %6, align 8 store %530* %1, %530** %7, align 8 store %196* %2, %196** %8, align 8 store %128* %3, %128** %9, align 8 store float %4, float* %10, align 4 %12 = load %178*, %178** %6, align 8 %13 = getelementptr inbounds %178, %178* %12, i32 0, i32 6 %14 = load %530*, %530** %7, align 8 %15 = load %196*, %196** %8, align 8 %16 = call noundef zeroext i1 @39(%196* noundef align 8 dereferenceable(23) %15) %17 = load float, float* %10, align 4 %18 = load %128*, %128** %9, align 8 %19 = getelementptr inbounds %178, %178* %12, i32 0, i32 5 %20 = call %15* @38(%530* noundef align 8 dereferenceable(24) %14, i1 noundef zeroext %16, float noundef %17, %128* noundef align 4 dereferenceable(12) %18, %10* noundef %19) %21 = getelementptr inbounds %16, %16* %11, i32 0, i32 0 %22 = getelementptr inbounds %17, %17* %21, i32 0, i32 0 %23 = getelementptr inbounds %18, %18* %22, i32 0, i32 0 store %15* %20, %15** %23, align 8 %24 = getelementptr inbounds %16, %16* %11, i32 0, i32 0 %25 = getelementptr inbounds %17, %17* %24, i32 0, i32 0 %26 = getelementptr inbounds %18, %18* %25, i32 0, i32 0 %27 = load %15*, %15** %26, align 8 call void @_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE(%181* noundef align 8 dereferenceable_or_null(16) %13, %15* %27) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE(%181* noundef align 8 dereferenceable_or_null(16) %0, %15* %1) #3 comdat align 2 { %3 = alloca %16, align 8 %4 = alloca %181*, align 8 %5 = alloca %16*, align 8 %6 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %7 = getelementptr inbounds %17, %17* %6, i32 0, i32 0 %8 = getelementptr inbounds %18, %18* %7, i32 0, i32 0 store %15* %1, %15** %8, align 8 store %181* %0, %181** %4, align 8 %9 = load %181*, %181** %4, align 8 %10 = bitcast %16** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %10) #21 store %16* inttoptr (i64 -6148914691236517206 to %16*), %16** %5, align 8, !annotation !6 %11 = call noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEptEv(%16* noundef align 8 dereferenceable_or_null(8) %3) #21 %12 = getelementptr inbounds %15, %15* %11, i32 0, i32 1 store %16* %12, %16** %5, align 8 %13 = getelementptr inbounds %181, %181* %9, i32 0, i32 1 %14 = load %16*, %16** %13, align 8 %15 = call noundef align 8 dereferenceable(8) %16* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEaSEOS6_(%16* noundef align 8 dereferenceable_or_null(8) %14, %16* noundef align 8 dereferenceable(8) %3) #21 %16 = load %16*, %16** %5, align 8 %17 = getelementptr inbounds %181, %181* %9, i32 0, i32 1 store %16* %16, %16** %17, align 8 %18 = bitcast %16** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %18) #21 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev(%16* noundef align 8 dereferenceable_or_null(8) %3) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @38(%530* noundef align 8 dereferenceable(24) %0, i1 noundef zeroext %1, float noundef %2, %128* noundef align 4 dereferenceable(12) %3, %10* noundef %4) #3 align 2 { %6 = alloca %16, align 8 %7 = alloca %530*, align 8 %8 = alloca i8, align 1 %9 = alloca float, align 4 %10 = alloca %128*, align 8 %11 = alloca %10*, align 8 %12 = alloca %536, align 8 %13 = alloca %540, align 8 store %530* %0, %530** %7, align 8 %14 = zext i1 %1 to i8 store i8 %14, i8* %8, align 1 store float %2, float* %9, align 4 store %128* %3, %128** %10, align 8 store %10* %4, %10** %11, align 8 %15 = bitcast %536* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %15) #21 %16 = load %10*, %10** %11, align 8 %17 = bitcast %540* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 192, i8* %17) #21 %18 = load %530*, %530** %7, align 8 %19 = load i8, i8* %8, align 1, !range !7 %20 = trunc i8 %19 to i1 %21 = load float, float* %9, align 4 %22 = load %128*, %128** %10, align 8 %23 = load %10*, %10** %11, align 8 call void @59(%540* sret(%540) align 8 %13, %530* noundef align 8 dereferenceable(24) %18, i1 noundef zeroext %20, float noundef %21, %128* noundef align 4 dereferenceable(12) %22, %10* noundef %23) %24 = call %539* @58(%10* noundef align 8 dereferenceable_or_null(16) %16, %540* noundef align 8 dereferenceable(192) %13) %25 = getelementptr inbounds %536, %536* %12, i32 0, i32 0 %26 = getelementptr inbounds %537, %537* %25, i32 0, i32 0 %27 = getelementptr inbounds %538, %538* %26, i32 0, i32 0 store %539* %24, %539** %27, align 8 call void @60(%16* noundef align 8 dereferenceable_or_null(8) %6, %536* noundef align 8 dereferenceable(8) %12) #21 call void @61(%536* noundef align 8 dereferenceable_or_null(8) %12) #21 call void @62(%540* noundef align 8 dereferenceable_or_null(192) %13) #21 %28 = bitcast %540* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 192, i8* %28) #21 %29 = bitcast %536* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %29) #21 %30 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %31 = getelementptr inbounds %17, %17* %30, i32 0, i32 0 %32 = getelementptr inbounds %18, %18* %31, i32 0, i32 0 %33 = load %15*, %15** %32, align 8 ret %15* %33 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @39(%196* noundef align 8 dereferenceable(23) %0) #3 { %2 = alloca %196*, align 8 %3 = alloca i32, align 4 store %196* %0, %196** %2, align 8 %4 = bitcast i32* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %4) #21 store i32 -1431655766, i32* %3, align 4, !annotation !6 %5 = load %196*, %196** %2, align 8 %6 = call noundef i32 @_ZNK6SkFont9getEdgingEv(%196* noundef align 8 dereferenceable_or_null(23) %5) store i32 %6, i32* %3, align 4 %7 = load i32, i32* %3, align 4 %8 = icmp eq i32 %7, 1 br i1 %8, label %12, label %9 9: ; preds = %1 %10 = load i32, i32* %3, align 4 %11 = icmp eq i32 %10, 2 br label %12 12: ; preds = %9, %1 %13 = phi i1 [ true, %1 ], [ %11, %9 ] %14 = bitcast i32* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %14) #21 ret i1 %13 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlob18processSourcePathsERK5SkZipIJ14SkGlyphVariant7SkPointEERK6SkFontRK12SkDescriptorf(%178* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %196* noundef align 8 dereferenceable(23) %2, %128* noundef align 4 dereferenceable(12) %3, float noundef %4) unnamed_addr #0 align 2 { %6 = alloca %178*, align 8 %7 = alloca %530*, align 8 %8 = alloca %196*, align 8 %9 = alloca %128*, align 8 %10 = alloca float, align 4 store %178* %0, %178** %6, align 8 store %530* %1, %530** %7, align 8 store %196* %2, %196** %8, align 8 store %128* %3, %128** %9, align 8 store float %4, float* %10, align 4 %11 = load %178*, %178** %6, align 8 %12 = bitcast %178* %11 to i8* %13 = getelementptr inbounds i8, i8* %12, i64 -16 %14 = bitcast i8* %13 to %178* %15 = load %530*, %530** %7, align 8 %16 = load %196*, %196** %8, align 8 %17 = load %128*, %128** %9, align 8 %18 = load float, float* %10, align 4 tail call void @_ZN10GrTextBlob18processSourcePathsERK5SkZipIJ14SkGlyphVariant7SkPointEERK6SkFontRK12SkDescriptorf(%178* noundef align 8 dereferenceable_or_null(200) %14, %530* noundef align 8 dereferenceable(24) %15, %196* noundef align 8 dereferenceable(23) %16, %128* noundef align 4 dereferenceable(12) %17, float noundef %18) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob22processSourceDrawablesERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeERK12SkDescriptorf(%178* noundef align 8 dereferenceable_or_null(200) %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, %128* noundef align 4 dereferenceable(12) %3, float noundef %4) unnamed_addr #3 align 2 { %6 = alloca %178*, align 8 %7 = alloca %530*, align 8 %8 = alloca %132*, align 8 %9 = alloca %128*, align 8 %10 = alloca float, align 4 %11 = alloca %16, align 8 store %178* %0, %178** %6, align 8 store %530* %1, %530** %7, align 8 store %132* %2, %132** %8, align 8 store %128* %3, %128** %9, align 8 store float %4, float* %10, align 4 %12 = load %178*, %178** %6, align 8 %13 = getelementptr inbounds %178, %178* %12, i32 0, i32 6 %14 = load %530*, %530** %7, align 8 %15 = load %132*, %132** %8, align 8 %16 = load float, float* %10, align 4 %17 = load %128*, %128** %9, align 8 %18 = getelementptr inbounds %178, %178* %12, i32 0, i32 5 %19 = call %15* @40(%530* noundef align 8 dereferenceable(24) %14, %132* noundef align 8 dereferenceable(8) %15, float noundef %16, %128* noundef align 4 dereferenceable(12) %17, %10* noundef %18) %20 = getelementptr inbounds %16, %16* %11, i32 0, i32 0 %21 = getelementptr inbounds %17, %17* %20, i32 0, i32 0 %22 = getelementptr inbounds %18, %18* %21, i32 0, i32 0 store %15* %19, %15** %22, align 8 %23 = getelementptr inbounds %16, %16* %11, i32 0, i32 0 %24 = getelementptr inbounds %17, %17* %23, i32 0, i32 0 %25 = getelementptr inbounds %18, %18* %24, i32 0, i32 0 %26 = load %15*, %15** %25, align 8 call void @_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE(%181* noundef align 8 dereferenceable_or_null(16) %13, %15* %26) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @40(%530* noundef align 8 dereferenceable(24) %0, %132* noundef align 8 dereferenceable(8) %1, float noundef %2, %128* noundef align 4 dereferenceable(12) %3, %10* noundef %4) #3 { %6 = alloca %16, align 8 %7 = alloca %530*, align 8 %8 = alloca %132*, align 8 %9 = alloca float, align 4 %10 = alloca %128*, align 8 %11 = alloca %10*, align 8 %12 = alloca %541, align 8 %13 = alloca %545, align 8 store %530* %0, %530** %7, align 8 store %132* %1, %132** %8, align 8 store float %2, float* %9, align 4 store %128* %3, %128** %10, align 8 store %10* %4, %10** %11, align 8 %14 = bitcast %541* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %14) #21 %15 = load %10*, %10** %11, align 8 %16 = bitcast %545* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 200, i8* %16) #21 %17 = load %530*, %530** %7, align 8 %18 = load %132*, %132** %8, align 8 %19 = load float, float* %9, align 4 %20 = load %128*, %128** %10, align 8 %21 = load %10*, %10** %11, align 8 call void @712(%545* sret(%545) align 8 %13, %530* noundef align 8 dereferenceable(24) %17, %132* noundef align 8 dereferenceable(8) %18, float noundef %19, %128* noundef align 4 dereferenceable(12) %20, %10* noundef %21) %22 = call %544* @660(%10* noundef align 8 dereferenceable_or_null(16) %15, %545* noundef align 8 dereferenceable(200) %13) %23 = getelementptr inbounds %541, %541* %12, i32 0, i32 0 %24 = getelementptr inbounds %542, %542* %23, i32 0, i32 0 %25 = getelementptr inbounds %543, %543* %24, i32 0, i32 0 store %544* %22, %544** %25, align 8 call void @662(%16* noundef align 8 dereferenceable_or_null(8) %6, %541* noundef align 8 dereferenceable(8) %12) #21 call void @663(%541* noundef align 8 dereferenceable_or_null(8) %12) #21 call void @668(%545* noundef align 8 dereferenceable_or_null(200) %13) #21 %26 = bitcast %545* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 200, i8* %26) #21 %27 = bitcast %541* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %27) #21 %28 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %29 = getelementptr inbounds %17, %17* %28, i32 0, i32 0 %30 = getelementptr inbounds %18, %18* %29, i32 0, i32 0 %31 = load %15*, %15** %30, align 8 ret %15* %31 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlob22processSourceDrawablesERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeERK12SkDescriptorf(%178* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, %128* noundef align 4 dereferenceable(12) %3, float noundef %4) unnamed_addr #0 align 2 { %6 = alloca %178*, align 8 %7 = alloca %530*, align 8 %8 = alloca %132*, align 8 %9 = alloca %128*, align 8 %10 = alloca float, align 4 store %178* %0, %178** %6, align 8 store %530* %1, %530** %7, align 8 store %132* %2, %132** %8, align 8 store %128* %3, %128** %9, align 8 store float %4, float* %10, align 4 %11 = load %178*, %178** %6, align 8 %12 = bitcast %178* %11 to i8* %13 = getelementptr inbounds i8, i8* %12, i64 -16 %14 = bitcast i8* %13 to %178* %15 = load %530*, %530** %7, align 8 %16 = load %132*, %132** %8, align 8 %17 = load %128*, %128** %9, align 8 %18 = load float, float* %10, align 4 tail call void @_ZN10GrTextBlob22processSourceDrawablesERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeERK12SkDescriptorf(%178* noundef align 8 dereferenceable_or_null(200) %14, %530* noundef align 8 dereferenceable(24) %15, %132* noundef align 8 dereferenceable(8) %16, %128* noundef align 4 dereferenceable(12) %17, float noundef %18) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob17processSourceSDFTERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEfRK6SkFontRK17GrSDFTMatrixRange(%178* noundef align 8 dereferenceable_or_null(200) %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, float noundef %3, %196* noundef align 8 dereferenceable(23) %4, %546* noundef align 4 dereferenceable(8) %5) unnamed_addr #3 align 2 { %7 = alloca %178*, align 8 %8 = alloca %530*, align 8 %9 = alloca %132*, align 8 %10 = alloca float, align 4 %11 = alloca %196*, align 8 %12 = alloca %546*, align 8 %13 = alloca %16, align 8 store %178* %0, %178** %7, align 8 store %530* %1, %530** %8, align 8 store %132* %2, %132** %9, align 8 store float %3, float* %10, align 4 store %196* %4, %196** %11, align 8 store %546* %5, %546** %12, align 8 %14 = load %178*, %178** %7, align 8 %15 = getelementptr inbounds %178, %178* %14, i32 0, i32 6 %16 = bitcast %178* %14 to %19* %17 = load %530*, %530** %8, align 8 %18 = load %196*, %196** %11, align 8 %19 = load %132*, %132** %9, align 8 %20 = load float, float* %10, align 4 %21 = load %546*, %546** %12, align 8 %22 = getelementptr inbounds %178, %178* %14, i32 0, i32 5 %23 = call %15* @41(%19* noundef %16, %530* noundef align 8 dereferenceable(24) %17, %196* noundef align 8 dereferenceable(23) %18, %132* noundef align 8 dereferenceable(8) %19, float noundef %20, %546* noundef align 4 dereferenceable(8) %21, %10* noundef %22) %24 = getelementptr inbounds %16, %16* %13, i32 0, i32 0 %25 = getelementptr inbounds %17, %17* %24, i32 0, i32 0 %26 = getelementptr inbounds %18, %18* %25, i32 0, i32 0 store %15* %23, %15** %26, align 8 %27 = getelementptr inbounds %16, %16* %13, i32 0, i32 0 %28 = getelementptr inbounds %17, %17* %27, i32 0, i32 0 %29 = getelementptr inbounds %18, %18* %28, i32 0, i32 0 %30 = load %15*, %15** %29, align 8 call void @_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE(%181* noundef align 8 dereferenceable_or_null(16) %15, %15* %30) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @41(%19* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %196* noundef align 8 dereferenceable(23) %2, %132* noundef align 8 dereferenceable(8) %3, float noundef %4, %546* noundef align 4 dereferenceable(8) %5, %10* noundef %6) #3 align 2 { %8 = alloca %16, align 8 %9 = alloca %19*, align 8 %10 = alloca %530*, align 8 %11 = alloca %196*, align 8 %12 = alloca %132*, align 8 %13 = alloca float, align 4 %14 = alloca %546*, align 8 %15 = alloca %10*, align 8 %16 = alloca %547, align 8 %17 = alloca %551, align 8 %18 = alloca %535, align 8 %19 = alloca %573, align 8 %20 = alloca i8, align 1 %21 = alloca i8, align 1 store %19* %0, %19** %9, align 8 store %530* %1, %530** %10, align 8 store %196* %2, %196** %11, align 8 store %132* %3, %132** %12, align 8 store float %4, float* %13, align 4 store %546* %5, %546** %14, align 8 store %10* %6, %10** %15, align 8 %22 = bitcast %547* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 48, i8* %22) #21 %23 = getelementptr inbounds %547, %547* %16, i32 0, i32 0 store i32 -1431655766, i32* %23, align 8, !annotation !6 %24 = getelementptr inbounds %547, %547* %16, i32 0, i32 1 %25 = getelementptr inbounds %5, %5* %24, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %25, align 4, !annotation !6 %26 = getelementptr inbounds %5, %5* %24, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %26, align 4, !annotation !6 %27 = getelementptr inbounds %547, %547* %16, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %27, align 4, !annotation !6 %28 = getelementptr inbounds %547, %547* %16, i32 0, i32 3 %29 = getelementptr inbounds %44, %44* %28, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %29, align 8, !annotation !6 %30 = getelementptr inbounds %44, %44* %28, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %30, align 4, !annotation !6 %31 = getelementptr inbounds %44, %44* %28, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %31, align 8, !annotation !6 %32 = getelementptr inbounds %44, %44* %28, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %32, align 4, !annotation !6 %33 = getelementptr inbounds %547, %547* %16, i32 0, i32 4 %34 = getelementptr inbounds %548, %548* %33, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %34, align 8, !annotation !6 %35 = getelementptr inbounds %548, %548* %33, i32 0, i32 1 store i64 -6148914691236517206, i64* %35, align 8, !annotation !6 %36 = load float, float* %13, align 4 %37 = load %530*, %530** %10, align 8 %38 = load %10*, %10** %15, align 8 call void @93(%547* sret(%547) align 8 %16, i32 noundef 0, i32 noundef 2, float noundef %36, %530* noundef align 8 dereferenceable(24) %37, %10* noundef %38) %39 = bitcast %551* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 104, i8* %39) #21 %40 = bitcast %551* %17 to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %40, i8 -86, i64 104, i1 false), !annotation !6 %41 = load %132*, %132** %12, align 8 %42 = load %530*, %530** %10, align 8 %43 = call { %96*, i64 } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3getILm0EEEDav(%530* noundef align 8 dereferenceable_or_null(24) %42) %44 = bitcast %535* %18 to { %96*, i64 }* %45 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %44, i32 0, i32 0 %46 = extractvalue { %96*, i64 } %43, 0 store %96* %46, %96** %45, align 8 %47 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %44, i32 0, i32 1 %48 = extractvalue { %96*, i64 } %43, 1 store i64 %48, i64* %47, align 8 %49 = load %10*, %10** %15, align 8 %50 = bitcast %535* %18 to { %96*, i64 }* %51 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %50, i32 0, i32 0 %52 = load %96*, %96** %51, align 8 %53 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %50, i32 0, i32 1 %54 = load i64, i64* %53, align 8 call void @_ZN6sktext3gpu11GlyphVector4MakeEO5sk_spI8SkStrikeE6SkSpanI14SkGlyphVariantEPNS0_15SubRunAllocatorE(%551* sret(%551) align 8 %17, %132* noundef align 8 dereferenceable(8) %41, %96* %52, i64 %54, %10* noundef %49) %55 = bitcast %573* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %55) #21 %56 = load %10*, %10** %15, align 8 call void @llvm.lifetime.start.p0i8(i64 1, i8* %20) #21 %57 = load %196*, %196** %11, align 8 %58 = call noundef i32 @_ZNK6SkFont9getEdgingEv(%196* noundef align 8 dereferenceable_or_null(23) %57) %59 = icmp eq i32 %58, 2 %60 = zext i1 %59 to i8 store i8 %60, i8* %20, align 1 call void @llvm.lifetime.start.p0i8(i64 1, i8* %21) #21 %61 = load %196*, %196** %11, align 8 %62 = call noundef zeroext i1 @39(%196* noundef align 8 dereferenceable(23) %61) %63 = zext i1 %62 to i8 store i8 %63, i8* %21, align 1 %64 = load %546*, %546** %14, align 8 %65 = call %576* @94(%10* noundef align 8 dereferenceable_or_null(16) %56, %19** noundef align 8 dereferenceable(8) %9, i8* noundef align 1 dereferenceable(1) %20, i8* noundef align 1 dereferenceable(1) %21, %546* noundef align 4 dereferenceable(8) %64, %547* noundef align 8 dereferenceable(48) %16, %551* noundef align 8 dereferenceable(104) %17) %66 = getelementptr inbounds %573, %573* %19, i32 0, i32 0 %67 = getelementptr inbounds %574, %574* %66, i32 0, i32 0 %68 = getelementptr inbounds %575, %575* %67, i32 0, i32 0 store %576* %65, %576** %68, align 8 call void @95(%16* noundef align 8 dereferenceable_or_null(8) %8, %573* noundef align 8 dereferenceable(8) %19) #21 call void @96(%573* noundef align 8 dereferenceable_or_null(8) %19) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %21) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %20) #21 %69 = bitcast %573* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %69) #21 call void @_ZN6sktext3gpu11GlyphVectorD2Ev(%551* noundef align 8 dereferenceable_or_null(104) %17) #21 %70 = bitcast %551* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 104, i8* %70) #21 %71 = bitcast %547* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 48, i8* %71) #21 %72 = getelementptr inbounds %16, %16* %8, i32 0, i32 0 %73 = getelementptr inbounds %17, %17* %72, i32 0, i32 0 %74 = getelementptr inbounds %18, %18* %73, i32 0, i32 0 %75 = load %15*, %15** %74, align 8 ret %15* %75 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlob17processSourceSDFTERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEfRK6SkFontRK17GrSDFTMatrixRange(%178* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, float noundef %3, %196* noundef align 8 dereferenceable(23) %4, %546* noundef align 4 dereferenceable(8) %5) unnamed_addr #0 align 2 { %7 = alloca %178*, align 8 %8 = alloca %530*, align 8 %9 = alloca %132*, align 8 %10 = alloca float, align 4 %11 = alloca %196*, align 8 %12 = alloca %546*, align 8 store %178* %0, %178** %7, align 8 store %530* %1, %530** %8, align 8 store %132* %2, %132** %9, align 8 store float %3, float* %10, align 4 store %196* %4, %196** %11, align 8 store %546* %5, %546** %12, align 8 %13 = load %178*, %178** %7, align 8 %14 = bitcast %178* %13 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 -16 %16 = bitcast i8* %15 to %178* %17 = load %530*, %530** %8, align 8 %18 = load %132*, %132** %9, align 8 %19 = load float, float* %10, align 4 %20 = load %196*, %196** %11, align 8 %21 = load %546*, %546** %12, align 8 tail call void @_ZN10GrTextBlob17processSourceSDFTERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEfRK6SkFontRK17GrSDFTMatrixRange(%178* noundef align 8 dereferenceable_or_null(200) %16, %530* noundef align 8 dereferenceable(24) %17, %132* noundef align 8 dereferenceable(8) %18, float noundef %19, %196* noundef align 8 dereferenceable(23) %20, %546* noundef align 4 dereferenceable(8) %21) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN10GrTextBlob18processSourceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEf(%178* noundef align 8 dereferenceable_or_null(200) %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, float noundef %3) unnamed_addr #3 align 2 { %5 = alloca %178*, align 8 %6 = alloca %530*, align 8 %7 = alloca %132*, align 8 %8 = alloca float, align 4 %9 = alloca %577, align 8 %10 = alloca %577, align 8 store %178* %0, %178** %5, align 8 store %530* %1, %530** %6, align 8 store %132* %2, %132** %7, align 8 store float %3, float* %8, align 4 %11 = load %178*, %178** %5, align 8 %12 = bitcast %577* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %12) #21 %13 = getelementptr inbounds %577, %577* %9, i32 0, i32 0 store %178* inttoptr (i64 -6148914691236517206 to %178*), %178** %13, align 8, !annotation !6 %14 = getelementptr inbounds %577, %577* %9, i32 0, i32 1 store float* inttoptr (i64 -6148914691236517206 to float*), float** %14, align 8, !annotation !6 %15 = getelementptr inbounds %577, %577* %9, i32 0, i32 0 store %178* %11, %178** %15, align 8 %16 = getelementptr inbounds %577, %577* %9, i32 0, i32 1 store float* %8, float** %16, align 8 %17 = bitcast %577* %10 to i8* %18 = bitcast %577* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %18, i64 16, i1 false) %19 = load %530*, %530** %6, align 8 %20 = load %132*, %132** %7, align 8 %21 = bitcast %577* %10 to { %178*, float* }* %22 = getelementptr inbounds { %178*, float* }, { %178*, float* }* %21, i32 0, i32 0 %23 = load %178*, %178** %22, align 8 %24 = getelementptr inbounds { %178*, float* }, { %178*, float* }* %21, i32 0, i32 1 %25 = load float*, float** %24, align 8 call void @42(%178* %23, float* %25, %530* noundef align 8 dereferenceable(24) %19, %132* noundef align 8 dereferenceable(8) %20) %26 = bitcast %577* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %26) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @42(%178* %0, float* %1, %530* noundef align 8 dereferenceable(24) %2, %132* noundef align 8 dereferenceable(8) %3) #3 { %5 = alloca %577, align 8 %6 = alloca %530*, align 8 %7 = alloca %132*, align 8 %8 = alloca %535, align 8 %9 = alloca %98*, align 8 %10 = alloca i32, align 4 %11 = alloca i64, align 8 %12 = alloca i64, align 8 %13 = alloca i32, align 4 %14 = alloca %530, align 8 %15 = alloca %132, align 8 %16 = alloca %530, align 8 %17 = bitcast %577* %5 to { %178*, float* }* %18 = getelementptr inbounds { %178*, float* }, { %178*, float* }* %17, i32 0, i32 0 store %178* %0, %178** %18, align 8 %19 = getelementptr inbounds { %178*, float* }, { %178*, float* }* %17, i32 0, i32 1 store float* %1, float** %19, align 8 store %530* %2, %530** %6, align 8 store %132* %3, %132** %7, align 8 %20 = load %530*, %530** %6, align 8 %21 = call noundef zeroext i1 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5emptyEv(%530* noundef align 8 dereferenceable_or_null(24) %20) br i1 %21, label %22, label %23 22: ; preds = %4 br label %108 23: ; preds = %4 %24 = bitcast %535* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %24) #21 %25 = getelementptr inbounds %535, %535* %8, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %25, align 8, !annotation !6 %26 = getelementptr inbounds %535, %535* %8, i32 0, i32 1 store i64 -6148914691236517206, i64* %26, align 8, !annotation !6 %27 = load %530*, %530** %6, align 8 %28 = call { %96*, i64 } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3getILm0EEEDav(%530* noundef align 8 dereferenceable_or_null(24) %27) %29 = bitcast %535* %8 to { %96*, i64 }* %30 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %29, i32 0, i32 0 %31 = extractvalue { %96*, i64 } %28, 0 store %96* %31, %96** %30, align 8 %32 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %29, i32 0, i32 1 %33 = extractvalue { %96*, i64 } %28, 1 store i64 %33, i64* %32, align 8 %34 = bitcast %98** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %34) #21 store %98* inttoptr (i64 -6148914691236517206 to %98*), %98** %9, align 8, !annotation !6 %35 = call noundef align 8 dereferenceable(8) %96* @_ZNK6SkSpanI14SkGlyphVariantEixEm(%535* noundef align 8 dereferenceable_or_null(16) %8, i64 noundef 0) %36 = call noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %35) store %98* %36, %98** %9, align 8 %37 = bitcast i32* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %37) #21 store i32 -1431655766, i32* %10, align 4, !annotation !6 %38 = load %98*, %98** %9, align 8 %39 = call noundef zeroext i8 @_ZNK7SkGlyph10maskFormatEv(%98* noundef align 8 dereferenceable_or_null(48) %38) %40 = call noundef i32 @_ZN6sktext3gpu5Glyph17FormatFromSkGlyphEN6SkMask6FormatE(i8 noundef zeroext %39) store i32 %40, i32* %10, align 4 %41 = bitcast i64* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %41) #21 store i64 -6148914691236517206, i64* %11, align 8, !annotation !6 store i64 0, i64* %11, align 8 %42 = bitcast i64* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %42) #21 store i64 -6148914691236517206, i64* %12, align 8, !annotation !6 store i64 1, i64* %12, align 8 br label %43 43: ; preds = %84, %23 %44 = load i64, i64* %12, align 8 %45 = load %530*, %530** %6, align 8 %46 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %45) %47 = icmp ult i64 %44, %46 br i1 %47, label %50, label %48 48: ; preds = %43 %49 = bitcast i64* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %49) #21 br label %87 50: ; preds = %43 %51 = load i64, i64* %12, align 8 %52 = call noundef align 8 dereferenceable(8) %96* @_ZNK6SkSpanI14SkGlyphVariantEixEm(%535* noundef align 8 dereferenceable_or_null(16) %8, i64 noundef %51) %53 = call noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %52) store %98* %53, %98** %9, align 8 %54 = bitcast i32* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %54) #21 store i32 -1431655766, i32* %13, align 4, !annotation !6 %55 = load %98*, %98** %9, align 8 %56 = call noundef zeroext i8 @_ZNK7SkGlyph10maskFormatEv(%98* noundef align 8 dereferenceable_or_null(48) %55) %57 = call noundef i32 @_ZN6sktext3gpu5Glyph17FormatFromSkGlyphEN6SkMask6FormatE(i8 noundef zeroext %56) store i32 %57, i32* %13, align 4 %58 = load i32, i32* %10, align 4 %59 = load i32, i32* %13, align 4 %60 = icmp ne i32 %58, %59 br i1 %60, label %61, label %82 61: ; preds = %50 %62 = bitcast %530* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %62) #21 %63 = getelementptr inbounds %530, %530* %14, i32 0, i32 0 %64 = getelementptr inbounds %531, %531* %63, i32 0, i32 0 %65 = getelementptr inbounds %532, %532* %64, i32 0, i32 0 %66 = getelementptr inbounds %533, %533* %65, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %66, align 8, !annotation !6 %67 = getelementptr inbounds %532, %532* %64, i32 0, i32 1 %68 = getelementptr inbounds %256, %256* %67, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %68, align 8, !annotation !6 %69 = getelementptr inbounds %530, %530* %14, i32 0, i32 1 store i64 -6148914691236517206, i64* %69, align 8, !annotation !6 %70 = load %530*, %530** %6, align 8 %71 = load i64, i64* %11, align 8 %72 = load i64, i64* %12, align 8 %73 = load i64, i64* %11, align 8 %74 = sub i64 %72, %73 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE7subspanEmm(%530* sret(%530) align 8 %14, %530* noundef align 8 dereferenceable_or_null(24) %70, i64 noundef %71, i64 noundef %74) %75 = load i32, i32* %10, align 4 %76 = bitcast %132* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %76) #21 %77 = load %132*, %132** %7, align 8 call void @_ZN5sk_spI8SkStrikeEC2ERKS1_(%132* noundef align 8 dereferenceable_or_null(8) %15, %132* noundef align 8 dereferenceable(8) %77) call void @713(%577* noundef align 8 dereferenceable_or_null(16) %5, %530* noundef align 8 dereferenceable(24) %14, i32 noundef %75, %132* noundef align 8 dereferenceable(8) %15) call void @_ZN5sk_spI8SkStrikeED2Ev(%132* noundef align 8 dereferenceable_or_null(8) %15) #21 %78 = bitcast %132* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %78) #21 %79 = load i32, i32* %13, align 4 store i32 %79, i32* %10, align 4 %80 = load i64, i64* %12, align 8 store i64 %80, i64* %11, align 8 %81 = bitcast %530* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %81) #21 br label %82 82: ; preds = %61, %50 %83 = bitcast i32* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %83) #21 br label %84 84: ; preds = %82 %85 = load i64, i64* %12, align 8 %86 = add i64 %85, 1 store i64 %86, i64* %12, align 8 br label %43, !llvm.loop !10 87: ; preds = %48 %88 = bitcast %530* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %88) #21 %89 = getelementptr inbounds %530, %530* %16, i32 0, i32 0 %90 = getelementptr inbounds %531, %531* %89, i32 0, i32 0 %91 = getelementptr inbounds %532, %532* %90, i32 0, i32 0 %92 = getelementptr inbounds %533, %533* %91, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %92, align 8, !annotation !6 %93 = getelementptr inbounds %532, %532* %90, i32 0, i32 1 %94 = getelementptr inbounds %256, %256* %93, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %94, align 8, !annotation !6 %95 = getelementptr inbounds %530, %530* %16, i32 0, i32 1 store i64 -6148914691236517206, i64* %95, align 8, !annotation !6 %96 = load %530*, %530** %6, align 8 %97 = load %530*, %530** %6, align 8 %98 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %97) %99 = load i64, i64* %11, align 8 %100 = sub i64 %98, %99 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4lastEm(%530* sret(%530) align 8 %16, %530* noundef align 8 dereferenceable_or_null(24) %96, i64 noundef %100) %101 = load i32, i32* %10, align 4 %102 = load %132*, %132** %7, align 8 call void @713(%577* noundef align 8 dereferenceable_or_null(16) %5, %530* noundef align 8 dereferenceable(24) %16, i32 noundef %101, %132* noundef align 8 dereferenceable(8) %102) %103 = bitcast %530* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %103) #21 %104 = bitcast i64* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %104) #21 %105 = bitcast i32* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %105) #21 %106 = bitcast %98** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %106) #21 %107 = bitcast %535* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %107) #21 br label %108 108: ; preds = %87, %22 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZThn16_N10GrTextBlob18processSourceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEf(%178* noundef %0, %530* noundef align 8 dereferenceable(24) %1, %132* noundef align 8 dereferenceable(8) %2, float noundef %3) unnamed_addr #0 align 2 { %5 = alloca %178*, align 8 %6 = alloca %530*, align 8 %7 = alloca %132*, align 8 %8 = alloca float, align 4 store %178* %0, %178** %5, align 8 store %530* %1, %530** %6, align 8 store %132* %2, %132** %7, align 8 store float %3, float* %8, align 4 %9 = load %178*, %178** %5, align 8 %10 = bitcast %178* %9 to i8* %11 = getelementptr inbounds i8, i8* %10, i64 -16 %12 = bitcast i8* %11 to %178* %13 = load %530*, %530** %6, align 8 %14 = load %132*, %132** %7, align 8 %15 = load float, float* %8, align 4 tail call void @_ZN10GrTextBlob18processSourceMasksERK5SkZipIJ14SkGlyphVariant7SkPointEEO5sk_spI8SkStrikeEf(%178* noundef align 8 dereferenceable_or_null(200) %12, %530* noundef align 8 dereferenceable(24) %13, %132* noundef align 8 dereferenceable(8) %14, float noundef %15) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN5skgpu2v16Device25convertGlyphRunListToSlugERK14SkGlyphRunListRK7SkPaintS7_(%578* noalias sret(%578) align 8 %0, %580* noundef align 16 dereferenceable_or_null(928) %1, %186* noundef align 8 dereferenceable(56) %2, %73* noundef align 8 dereferenceable(76) %3, %73* noundef align 8 dereferenceable(76) %4) unnamed_addr #5 align 2 { %6 = alloca i8*, align 8 %7 = alloca %580*, align 8 %8 = alloca %186*, align 8 %9 = alloca %73*, align 8 %10 = alloca %73*, align 8 %11 = alloca %594, align 8 %12 = alloca %231, align 4 %13 = alloca { <2 x float>, i8 }, align 8 %14 = alloca %597, align 8 %15 = bitcast %578* %0 to i8* store i8* %15, i8** %6, align 8 store %580* %1, %580** %7, align 8 store %186* %2, %186** %8, align 8 store %73* %3, %73** %9, align 8 store %73* %4, %73** %10, align 8 %16 = load %580*, %580** %7, align 8 %17 = bitcast %594* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %17) #21 %18 = getelementptr inbounds %594, %594* %11, i32 0, i32 0 %19 = getelementptr inbounds %595, %595* %18, i32 0, i32 0 %20 = getelementptr inbounds %596, %596* %19, i32 0, i32 0 store %301* inttoptr (i64 -6148914691236517206 to %301*), %301** %20, align 8, !annotation !6 %21 = bitcast %580* %16 to %581* %22 = call noundef %299* @_ZNK5skgpu10BaseDevice16recordingContextEv(%581* noundef align 8 dereferenceable_or_null(296) %21) call void @_ZN18GrRecordingContext4privEv(%594* sret(%594) align 8 %11, %299* noundef align 8 dereferenceable_or_null(80) %22) %23 = bitcast %231* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %23) #21 %24 = getelementptr inbounds %231, %231* %12, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %24, align 4, !annotation !6 %25 = getelementptr inbounds %231, %231* %12, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %25, align 4, !annotation !6 %26 = getelementptr inbounds %231, %231* %12, i32 0, i32 2 store i8 -86, i8* %26, align 4, !annotation !6 %27 = getelementptr inbounds %231, %231* %12, i32 0, i32 3 %28 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 0 store i8 -86, i8* %28, align 1, !annotation !6 %29 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 1 store i8 -86, i8* %29, align 1, !annotation !6 %30 = getelementptr inbounds [3 x i8], [3 x i8]* %27, i64 0, i64 2 store i8 -86, i8* %30, align 1, !annotation !6 %31 = bitcast %580* %16 to %276* %32 = call noundef align 4 dereferenceable(8) %225* @_ZNK12SkBaseDevice12surfacePropsEv(%276* noundef align 8 dereferenceable_or_null(281) %31) %33 = call noundef zeroext i1 @_ZNK14SkSurfaceProps27isUseDeviceIndependentFontsEv(%225* noundef align 4 dereferenceable_or_null(8) %32) %34 = call { <2 x float>, i8 } @_ZNK22GrRecordingContextPriv14getSDFTControlEb(%594* noundef align 8 dereferenceable_or_null(8) %11, i1 noundef zeroext %33) store { <2 x float>, i8 } %34, { <2 x float>, i8 }* %13, align 8 %35 = bitcast %231* %12 to i8* %36 = bitcast { <2 x float>, i8 }* %13 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %35, i8* align 8 %36, i64 12, i1 false) %37 = bitcast %597* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %37) #21 %38 = bitcast %580* %16 to %276* %39 = call noundef align 4 dereferenceable(105) %13* @_ZNK12SkBaseDevice16asMatrixProviderEv(%276* noundef align 8 dereferenceable_or_null(281) %38) %40 = load %186*, %186** %8, align 8 %41 = load %73*, %73** %9, align 8 %42 = load %73*, %73** %10, align 8 %43 = getelementptr inbounds %580, %580* %16, i32 0, i32 1 %44 = call noundef %295* @_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEEptEv(%584* noundef align 8 dereferenceable_or_null(8) %43) #21 %45 = call noundef %241* @_ZN5skgpu2v118SurfaceDrawContext15glyphRunPainterEv(%295* noundef align 8 dereferenceable_or_null(312) %44) call void @43(%597* sret(%597) align 8 %14, %13* noundef align 4 dereferenceable(105) %39, %186* noundef align 8 dereferenceable(56) %40, %73* noundef align 8 dereferenceable(76) %41, %73* noundef align 8 dereferenceable(76) %42, %231* noundef align 4 dereferenceable(9) %12, %241* noundef %45) call void @44(%578* noundef align 8 dereferenceable_or_null(8) %0, %597* noundef align 8 dereferenceable(8) %14) call void @45(%597* noundef align 8 dereferenceable_or_null(8) %14) #21 %46 = bitcast %597* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %46) #21 %47 = bitcast %231* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %47) #21 %48 = bitcast %594* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %48) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %299* @_ZNK5skgpu10BaseDevice16recordingContextEv(%581* noundef align 8 dereferenceable_or_null(296) %0) #3 comdat align 2 { %2 = alloca %581*, align 8 store %581* %0, %581** %2, align 8 %3 = load %581*, %581** %2, align 8 %4 = getelementptr inbounds %581, %581* %3, i32 0, i32 1 %5 = call noundef %299* @_ZNK5sk_spI18GrRecordingContextE3getEv(%583* noundef align 8 dereferenceable_or_null(8) %4) ret %299* %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN18GrRecordingContext4privEv(%594* noalias sret(%594) align 8 %0, %299* noundef align 8 dereferenceable_or_null(80) %1) #7 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %299*, align 8 %5 = bitcast %594* %0 to i8* store i8* %5, i8** %3, align 8 store %299* %1, %299** %4, align 8 %6 = load %299*, %299** %4, align 8 call void @_ZN22GrRecordingContextPrivC2EP18GrRecordingContext(%594* noundef align 8 dereferenceable_or_null(8) %0, %299* noundef %6) ret void } ; Function Attrs: null_pointer_is_valid declare { <2 x float>, i8 } @_ZNK22GrRecordingContextPriv14getSDFTControlEb(%594* noundef align 8 dereferenceable_or_null(8), i1 noundef zeroext) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %225* @_ZNK12SkBaseDevice12surfacePropsEv(%276* noundef align 8 dereferenceable_or_null(281) %0) #3 comdat align 2 { %2 = alloca %276*, align 8 store %276* %0, %276** %2, align 8 %3 = load %276*, %276** %2, align 8 %4 = getelementptr inbounds %276, %276* %3, i32 0, i32 4 ret %225* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK14SkSurfaceProps27isUseDeviceIndependentFontsEv(%225* noundef align 4 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %225*, align 8 %3 = alloca i32, align 4 store %225* %0, %225** %2, align 8 %4 = load %225*, %225** %2, align 8 %5 = bitcast i32* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %5) #21 %6 = getelementptr inbounds %225, %225* %4, i32 0, i32 0 %7 = load i32, i32* %6, align 4 %8 = and i32 %7, 1 store i32 %8, i32* %3, align 4 %9 = call noundef zeroext i1 @311(i32* noundef align 4 dereferenceable(4) %3) %10 = bitcast i32* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %10) #21 ret i1 %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @43(%597* noalias sret(%597) align 8 %0, %13* noundef align 4 dereferenceable(105) %1, %186* noundef align 8 dereferenceable(56) %2, %73* noundef align 8 dereferenceable(76) %3, %73* noundef align 8 dereferenceable(76) %4, %231* noundef align 4 dereferenceable(9) %5, %241* noundef %6) #5 align 2 { %8 = alloca i8*, align 8 %9 = alloca %13*, align 8 %10 = alloca %186*, align 8 %11 = alloca %73*, align 8 %12 = alloca %73*, align 8 %13 = alloca %231*, align 8 %14 = alloca %241*, align 8 %15 = alloca i64, align 8 %16 = alloca i64, align 8 %17 = alloca i64, align 8 %18 = alloca i64, align 8 %19 = alloca %599, align 8 %20 = alloca %95*, align 8 %21 = alloca i32*, align 8 %22 = alloca %10*, align 8 %23 = alloca %2, align 4 %24 = alloca %5, align 4 %25 = alloca %597, align 8 %26 = alloca %44, align 4 %27 = alloca %5, align 4 %28 = alloca i32, align 4 %29 = bitcast %597* %0 to i8* store i8* %29, i8** %8, align 8 store %13* %1, %13** %9, align 8 store %186* %2, %186** %10, align 8 store %73* %3, %73** %11, align 8 store %73* %4, %73** %12, align 8 store %231* %5, %231** %13, align 8 store %241* %6, %241** %14, align 8 %30 = bitcast i64* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %30) #21 store i64 4, i64* %15, align 8 %31 = bitcast i64* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %31) #21 store i64 4, i64* %16, align 8 %32 = bitcast i64* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %32) #21 store i64 -6148914691236517206, i64* %17, align 8, !annotation !6 %33 = load %186*, %186** %10, align 8 %34 = call noundef i64 @_ZNK14SkGlyphRunList15totalGlyphCountEv(%186* noundef align 8 dereferenceable_or_null(56) %33) store i64 %34, i64* %17, align 8 %35 = bitcast i64* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %35) #21 store i64 -6148914691236517206, i64* %18, align 8, !annotation !6 %36 = load i64, i64* %17, align 8 %37 = mul i64 %36, 4 %38 = load i64, i64* %17, align 8 %39 = call noundef i64 @_ZN6sktext3gpu11GlyphVector15GlyphVectorSizeEm(i64 noundef %38) %40 = add i64 %37, %39 %41 = load %186*, %186** %10, align 8 %42 = call noundef i64 @_ZNK14SkGlyphRunList8runCountEv(%186* noundef align 8 dereferenceable_or_null(56) %41) %43 = mul i64 %42, 180 %44 = add i64 %40, %43 store i64 %44, i64* %18, align 8 %45 = bitcast %599* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* %45) #21 %46 = bitcast %599* %19 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %46, i8* align 8 bitcast ({ { %94, %8, [4 x i8], %9 } }* @18 to i8*), i64 32, i1 false), !annotation !6 %47 = load i64, i64* %18, align 8 %48 = trunc i64 %47 to i32 call void @312(%599* sret(%599) align 8 %19, i32 noundef %48) %49 = bitcast %95** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %49) #21 store %95* inttoptr (i64 -6148914691236517206 to %95*), %95** %20, align 8, !annotation !6 %50 = call noundef align 8 dereferenceable(8) %95* @313(%599* noundef align 8 dereferenceable(32) %19) #21 store %95* %50, %95** %20, align 8 %51 = bitcast i32** %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %51) #21 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %21, align 8, !annotation !6 %52 = call noundef align 4 dereferenceable(4) i32* @314(%599* noundef align 8 dereferenceable(32) %19) #21 store i32* %52, i32** %21, align 8 %53 = bitcast %10** %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %53) #21 store %10* inttoptr (i64 -6148914691236517206 to %10*), %10** %22, align 8, !annotation !6 %54 = call noundef align 8 dereferenceable(16) %10* @315(%599* noundef align 8 dereferenceable(32) %19) #21 store %10* %54, %10** %22, align 8 %55 = bitcast %2* %23 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %55) #21 %56 = getelementptr inbounds %2, %2* %23, i32 0, i32 0 %57 = bitcast [9 x float]* %56 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %57, i8 -1, i64 36, i1 false), !annotation !6 %58 = getelementptr inbounds %2, %2* %23, i32 0, i32 1 store i32 -1431655766, i32* %58, align 4, !annotation !6 %59 = load %13*, %13** %9, align 8 %60 = call noundef align 4 dereferenceable(40) %2* @_ZNK16SkMatrixProvider13localToDeviceEv(%13* noundef align 4 dereferenceable_or_null(105) %59) %61 = load %186*, %186** %10, align 8 %62 = call <2 x float> @_ZNK14SkGlyphRunList6originEv(%186* noundef align 8 dereferenceable_or_null(56) %61) %63 = bitcast %5* %24 to <2 x float>* store <2 x float> %62, <2 x float>* %63, align 4 %64 = bitcast %5* %24 to <2 x float>* %65 = load <2 x float>, <2 x float>* %64, align 4 call void @157(%2* sret(%2) align 4 %23, %2* noundef align 4 dereferenceable(40) %60, <2 x float> %65) %66 = bitcast %597* %25 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %66) #21 %67 = getelementptr inbounds %597, %597* %25, i32 0, i32 0 store %598* inttoptr (i64 -6148914691236517206 to %598*), %598** %67, align 8, !annotation !6 %68 = load %95*, %95** %20, align 8 %69 = load %10*, %10** %22, align 8 %70 = bitcast %44* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %70) #21 %71 = load %186*, %186** %10, align 8 %72 = call { <2 x float>, <2 x float> } @_ZNK14SkGlyphRunList12sourceBoundsEv(%186* noundef align 8 dereferenceable_or_null(56) %71) %73 = bitcast %44* %26 to { <2 x float>, <2 x float> }* %74 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %73, i32 0, i32 0 %75 = extractvalue { <2 x float>, <2 x float> } %72, 0 store <2 x float> %75, <2 x float>* %74, align 4 %76 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %73, i32 0, i32 1 %77 = extractvalue { <2 x float>, <2 x float> } %72, 1 store <2 x float> %77, <2 x float>* %76, align 4 %78 = load %73*, %73** %11, align 8 %79 = bitcast %5* %27 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %79) #21 %80 = load %186*, %186** %10, align 8 %81 = call <2 x float> @_ZNK14SkGlyphRunList6originEv(%186* noundef align 8 dereferenceable_or_null(56) %80) %82 = bitcast %5* %27 to <2 x float>* store <2 x float> %81, <2 x float>* %82, align 4 %83 = call noundef %598* @316(%95* noundef align 8 dereferenceable_or_null(8) %68, %10* noundef align 8 dereferenceable(16) %69, %44* noundef align 4 dereferenceable(16) %26, %73* noundef align 8 dereferenceable(76) %78, %2* noundef align 4 dereferenceable(40) %23, %5* noundef align 4 dereferenceable(8) %27) call void @317(%597* noundef align 8 dereferenceable_or_null(8) %25, %598* noundef %83) %84 = bitcast %5* %27 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %84) #21 %85 = bitcast %44* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %85) #21 %86 = load %241*, %241** %14, align 8 %87 = call noundef %598* @318(%597* noundef align 8 dereferenceable_or_null(8) %25) %88 = icmp eq %598* %87, null br i1 %88, label %93, label %89 89: ; preds = %7 %90 = bitcast %598* %87 to i8* %91 = getelementptr inbounds i8, i8* %90, i64 16 %92 = bitcast i8* %91 to %180* br label %93 93: ; preds = %89, %7 %94 = phi %180* [ %92, %89 ], [ null, %7 ] %95 = load %186*, %186** %10, align 8 %96 = load %73*, %73** %12, align 8 %97 = load %231*, %231** %13, align 8 call void @_ZN21SkGlyphRunListPainter22categorizeGlyphRunListEP26SkGlyphRunPainterInterfaceRK14SkGlyphRunListRK8SkMatrixRK7SkPaintRK13GrSDFTControlPKc(%241* noundef align 8 dereferenceable_or_null(216) %86, %180* noundef %94, %186* noundef align 8 dereferenceable(56) %95, %2* noundef align 4 dereferenceable(40) %23, %73* noundef align 8 dereferenceable(76) %96, %231* noundef align 4 dereferenceable(9) %97, i8* noundef getelementptr inbounds ([10 x i8], [10 x i8]* @19, i64 0, i64 0)) %98 = call noundef %598* @319(%597* noundef align 8 dereferenceable_or_null(8) %25) %99 = getelementptr inbounds %598, %598* %98, i32 0, i32 7 %100 = call noundef zeroext i1 @_ZNK12GrSubRunList7isEmptyEv(%181* noundef align 8 dereferenceable_or_null(16) %99) br i1 %100, label %101, label %102 101: ; preds = %93 call void @320(%597* noundef align 8 dereferenceable_or_null(8) %0, i8* null) store i32 1, i32* %28, align 4 br label %103 102: ; preds = %93 call void @321(%597* noundef align 8 dereferenceable_or_null(8) %0, %597* noundef align 8 dereferenceable(8) %25) store i32 1, i32* %28, align 4 br label %103 103: ; preds = %102, %101 call void @45(%597* noundef align 8 dereferenceable_or_null(8) %25) #21 %104 = bitcast %597* %25 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %104) #21 %105 = bitcast %2* %23 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %105) #21 %106 = bitcast %10** %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %106) #21 %107 = bitcast i32** %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %107) #21 %108 = bitcast %95** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %108) #21 call void @322(%599* noundef align 8 dereferenceable_or_null(32) %19) #21 %109 = bitcast %599* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 32, i8* %109) #21 %110 = bitcast i64* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %110) #21 %111 = bitcast i64* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %111) #21 %112 = bitcast i64* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %112) #21 %113 = bitcast i64* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %113) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(105) %13* @_ZNK12SkBaseDevice16asMatrixProviderEv(%276* noundef align 8 dereferenceable_or_null(281) %0) #3 comdat align 2 { %2 = alloca %276*, align 8 store %276* %0, %276** %2, align 8 %3 = load %276*, %276** %2, align 8 %4 = bitcast %276* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 12 %6 = bitcast i8* %5 to %13* ret %13* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %295* @_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEEptEv(%584* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %584*, align 8 store %584* %0, %584** %2, align 8 %3 = load %584*, %584** %2, align 8 %4 = getelementptr inbounds %584, %584* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %295** @_ZNKSt4__Cr17__compressed_pairIPN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE5firstEv(%585* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %295*, %295** %5, align 8 ret %295* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %241* @_ZN5skgpu2v118SurfaceDrawContext15glyphRunPainterEv(%295* noundef align 8 dereferenceable_or_null(312) %0) #3 comdat align 2 { %2 = alloca %295*, align 8 store %295* %0, %295** %2, align 8 %3 = load %295*, %295** %2, align 8 %4 = getelementptr inbounds %295, %295* %3, i32 0, i32 4 ret %241* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @44(%578* noundef align 8 dereferenceable_or_null(8) %0, %597* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 { %3 = alloca %578*, align 8 %4 = alloca %597*, align 8 store %578* %0, %578** %3, align 8 store %597* %1, %597** %4, align 8 %5 = load %578*, %578** %3, align 8 %6 = getelementptr inbounds %578, %578* %5, i32 0, i32 0 %7 = load %597*, %597** %4, align 8 %8 = call noundef %598* @612(%597* noundef align 8 dereferenceable_or_null(8) %7) %9 = bitcast %598* %8 to %579* store %579* %9, %579** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @45(%597* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 align 2 { %2 = alloca %597*, align 8 store %597* %0, %597** %2, align 8 %3 = load %597*, %597** %2, align 8 %4 = getelementptr inbounds %597, %597* %3, i32 0, i32 0 %5 = load %598*, %598** %4, align 8 call void @714(%598* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN5skgpu2v16Device8drawSlugEP8SkCanvasPK6GrSlugRK7SkPaint(%580* noundef align 16 dereferenceable_or_null(928) %0, %268* noundef %1, %579* noundef %2, %73* noundef align 8 dereferenceable(76) %3) unnamed_addr #3 align 2 { %5 = alloca %580*, align 8 %6 = alloca %268*, align 8 %7 = alloca %579*, align 8 %8 = alloca %73*, align 8 %9 = alloca %598*, align 8 %10 = alloca %13, align 4 store %580* %0, %580** %5, align 8 store %268* %1, %268** %6, align 8 store %579* %2, %579** %7, align 8 store %73* %3, %73** %8, align 8 %11 = load %580*, %580** %5, align 8 %12 = bitcast %598** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %12) #21 store %598* inttoptr (i64 -6148914691236517206 to %598*), %598** %9, align 8, !annotation !6 %13 = load %579*, %579** %7, align 8 %14 = bitcast %579* %13 to %598* store %598* %14, %598** %9, align 8 %15 = bitcast %13* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 108, i8* %15) #21 %16 = bitcast %13* %10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %16, i8* align 4 bitcast (%13* @7 to i8*), i64 108, i1 false), !annotation !6 %17 = bitcast %580* %11 to %276* %18 = call noundef align 4 dereferenceable(105) %13* @_ZNK12SkBaseDevice16asMatrixProviderEv(%276* noundef align 8 dereferenceable_or_null(281) %17) %19 = bitcast %13* %10 to i8* %20 = bitcast %13* %18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %19, i8* align 4 %20, i64 108, i1 false) %21 = load %598*, %598** %9, align 8 %22 = load %268*, %268** %6, align 8 %23 = call noundef %294* @_ZNK5skgpu2v16Device4clipEv(%580* noundef align 16 dereferenceable_or_null(928) %11) %24 = load %73*, %73** %8, align 8 %25 = getelementptr inbounds %580, %580* %11, i32 0, i32 1 %26 = call noundef %295* @_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE3getEv(%584* noundef align 8 dereferenceable_or_null(8) %25) #21 call void @46(%598* noundef align 8 dereferenceable_or_null(200) %21, %268* noundef %22, %294* noundef %23, %13* noundef align 4 dereferenceable(105) %10, %73* noundef align 8 dereferenceable(76) %24, %295* noundef %26) %27 = bitcast %13* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 108, i8* %27) #21 %28 = bitcast %598** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %28) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @46(%598* noundef align 8 dereferenceable_or_null(200) %0, %268* noundef %1, %294* noundef %2, %13* noundef align 4 dereferenceable(105) %3, %73* noundef align 8 dereferenceable(76) %4, %295* noundef %5) #5 align 2 { %7 = alloca %598*, align 8 %8 = alloca %268*, align 8 %9 = alloca %294*, align 8 %10 = alloca %13*, align 8 %11 = alloca %73*, align 8 %12 = alloca %295*, align 8 %13 = alloca %181*, align 8 %14 = alloca %267, align 8 %15 = alloca %267, align 8 %16 = alloca %15*, align 8 %17 = alloca %5, align 4 store %598* %0, %598** %7, align 8 store %268* %1, %268** %8, align 8 store %294* %2, %294** %9, align 8 store %13* %3, %13** %10, align 8 store %73* %4, %73** %11, align 8 store %295* %5, %295** %12, align 8 %18 = load %598*, %598** %7, align 8 %19 = bitcast %181** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %19) #21 store %181* inttoptr (i64 -6148914691236517206 to %181*), %181** %13, align 8, !annotation !6 %20 = getelementptr inbounds %598, %598* %18, i32 0, i32 7 store %181* %20, %181** %13, align 8 %21 = bitcast %267* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %21) #21 %22 = getelementptr inbounds %267, %267* %14, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %22, align 8, !annotation !6 %23 = load %181*, %181** %13, align 8 %24 = call %15* @_ZNK12GrSubRunList5beginEv(%181* noundef align 8 dereferenceable_or_null(16) %23) %25 = getelementptr inbounds %267, %267* %14, i32 0, i32 0 store %15* %24, %15** %25, align 8 %26 = bitcast %267* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %26) #21 %27 = getelementptr inbounds %267, %267* %15, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %27, align 8, !annotation !6 %28 = load %181*, %181** %13, align 8 %29 = call %15* @_ZNK12GrSubRunList3endEv(%181* noundef align 8 dereferenceable_or_null(16) %28) %30 = getelementptr inbounds %267, %267* %15, i32 0, i32 0 store %15* %29, %15** %30, align 8 br label %31 31: ; preds = %56, %6 %32 = call noundef zeroext i1 @_ZNK12GrSubRunList8IteratorneERKS0_(%267* noundef align 8 dereferenceable_or_null(8) %14, %267* noundef align 8 dereferenceable(8) %15) br i1 %32, label %37, label %33 33: ; preds = %31 %34 = bitcast %267* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %34) #21 %35 = bitcast %267* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %35) #21 %36 = bitcast %181** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %36) #21 br label %58 37: ; preds = %31 %38 = bitcast %15** %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %38) #21 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %16, align 8, !annotation !6 %39 = call noundef align 8 dereferenceable(16) %15* @_ZN12GrSubRunList8IteratordeEv(%267* noundef align 8 dereferenceable_or_null(8) %14) store %15* %39, %15** %16, align 8 %40 = load %15*, %15** %16, align 8 %41 = load %268*, %268** %8, align 8 %42 = load %294*, %294** %9, align 8 %43 = load %13*, %13** %10, align 8 %44 = getelementptr inbounds %598, %598* %18, i32 0, i32 6 %45 = bitcast %5* %17 to i8* %46 = bitcast %5* %44 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %45, i8* align 8 %46, i64 8, i1 false) %47 = load %73*, %73** %11, align 8 %48 = load %295*, %295** %12, align 8 %49 = bitcast %5* %17 to <2 x float>* %50 = load <2 x float>, <2 x float>* %49, align 4 %51 = bitcast %15* %40 to void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*** %52 = load void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)**, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*** %51, align 8 %53 = getelementptr inbounds void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)** %52, i64 2 %54 = load void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)*, void (%15*, %268*, %294*, %13*, <2 x float>, %73*, %295*)** %53, align 8 call void %54(%15* noundef align 8 dereferenceable_or_null(16) %40, %268* noundef %41, %294* noundef %42, %13* noundef align 4 dereferenceable(105) %43, <2 x float> %50, %73* noundef align 8 dereferenceable(76) %47, %295* noundef %48) %55 = bitcast %15** %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %55) #21 br label %56 56: ; preds = %37 %57 = call noundef align 8 dereferenceable(8) %267* @_ZN12GrSubRunList8IteratorppEv(%267* noundef align 8 dereferenceable_or_null(8) %14) br label %31 58: ; preds = %33 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %294* @_ZNK5skgpu2v16Device4clipEv(%580* noundef align 16 dereferenceable_or_null(928) %0) #3 comdat align 2 { %2 = alloca %580*, align 8 store %580* %0, %580** %2, align 8 %3 = load %580*, %580** %2, align 8 %4 = getelementptr inbounds %580, %580* %3, i32 0, i32 2 %5 = bitcast %587* %4 to %294* ret %294* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %295* @_ZNKSt4__Cr10unique_ptrIN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE3getEv(%584* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %584*, align 8 store %584* %0, %584** %2, align 8 %3 = load %584*, %584** %2, align 8 %4 = getelementptr inbounds %584, %584* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %295** @_ZNKSt4__Cr17__compressed_pairIPN5skgpu2v118SurfaceDrawContextENS_14default_deleteIS3_EEE5firstEv(%585* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %295*, %295** %5, align 8 ret %295* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZN5skgpu2v18MakeSlugERK16SkMatrixProviderRK14SkGlyphRunListRK7SkPaintS9_RK13GrSDFTControlP21SkGlyphRunListPainter(%578* noalias sret(%578) align 8 %0, %13* noundef align 4 dereferenceable(105) %1, %186* noundef align 8 dereferenceable(56) %2, %73* noundef align 8 dereferenceable(76) %3, %73* noundef align 8 dereferenceable(76) %4, %231* noundef align 4 dereferenceable(9) %5, %241* noundef %6) #3 { %8 = alloca i8*, align 8 %9 = alloca %13*, align 8 %10 = alloca %186*, align 8 %11 = alloca %73*, align 8 %12 = alloca %73*, align 8 %13 = alloca %231*, align 8 %14 = alloca %241*, align 8 %15 = alloca %597, align 8 %16 = bitcast %578* %0 to i8* store i8* %16, i8** %8, align 8 store %13* %1, %13** %9, align 8 store %186* %2, %186** %10, align 8 store %73* %3, %73** %11, align 8 store %73* %4, %73** %12, align 8 store %231* %5, %231** %13, align 8 store %241* %6, %241** %14, align 8 %17 = bitcast %597* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %17) #21 %18 = load %13*, %13** %9, align 8 %19 = load %186*, %186** %10, align 8 %20 = load %73*, %73** %11, align 8 %21 = load %73*, %73** %12, align 8 %22 = load %231*, %231** %13, align 8 %23 = load %241*, %241** %14, align 8 call void @43(%597* sret(%597) align 8 %15, %13* noundef align 4 dereferenceable(105) %18, %186* noundef align 8 dereferenceable(56) %19, %73* noundef align 8 dereferenceable(76) %20, %73* noundef align 8 dereferenceable(76) %21, %231* noundef align 4 dereferenceable(9) %22, %241* noundef %23) call void @44(%578* noundef align 8 dereferenceable_or_null(8) %0, %597* noundef align 8 dereferenceable(8) %15) call void @45(%597* noundef align 8 dereferenceable_or_null(8) %15) #21 %24 = bitcast %597* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %24) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_ZNK8GrSubRun7flattenER13SkWriteBuffer(%15* noundef align 8 dereferenceable_or_null(16) %0, %601* noundef align 8 dereferenceable(56) %1) #3 align 2 { %3 = alloca %15*, align 8 %4 = alloca %601*, align 8 store %15* %0, %15** %3, align 8 store %601* %1, %601** %4, align 8 %5 = load %15*, %15** %3, align 8 %6 = load %601*, %601** %4, align 8 %7 = bitcast %15* %5 to i32 (%15*)*** %8 = load i32 (%15*)**, i32 (%15*)*** %7, align 8 %9 = getelementptr inbounds i32 (%15*)*, i32 (%15*)** %8, i64 7 %10 = load i32 (%15*)*, i32 (%15*)** %9, align 8 %11 = call noundef i32 %10(%15* noundef align 8 dereferenceable_or_null(16) %5) %12 = bitcast %601* %6 to void (%601*, i32)*** %13 = load void (%601*, i32)**, void (%601*, i32)*** %12, align 8 %14 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %13, i64 7 %15 = load void (%601*, i32)*, void (%601*, i32)** %14, align 8 call void %15(%601* noundef align 8 dereferenceable_or_null(56) %6, i32 noundef %11) %16 = load %601*, %601** %4, align 8 %17 = bitcast %15* %5 to void (%15*, %601*)*** %18 = load void (%15*, %601*)**, void (%15*, %601*)*** %17, align 8 %19 = getelementptr inbounds void (%15*, %601*)*, void (%15*, %601*)** %18, i64 8 %20 = load void (%15*, %601*)*, void (%15*, %601*)** %19, align 8 call void %20(%15* noundef align 8 dereferenceable_or_null(16) %5, %601* noundef align 8 dereferenceable(56) %16) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden %15* @_ZN8GrSubRun14MakeFromBufferEPK20GrTextReferenceFrameR12SkReadBufferPN6sktext3gpu15SubRunAllocatorEPK14SkStrikeClient(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #3 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca i32, align 4 %11 = alloca i32, align 4 %12 = alloca %15* (%19*, %27*, %10*, %68*)*, align 8 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %13 = bitcast i32* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %13) #21 store i32 -1431655766, i32* %10, align 4, !annotation !6 %14 = load %27*, %27** %7, align 8 %15 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %14) store i32 %15, i32* %10, align 4 %16 = load %27*, %27** %7, align 8 %17 = load i32, i32* %10, align 4 %18 = icmp slt i32 0, %17 br i1 %18, label %19, label %22 19: ; preds = %4 %20 = load i32, i32* %10, align 4 %21 = icmp slt i32 %20, 6 br label %22 22: ; preds = %19, %4 %23 = phi i1 [ false, %4 ], [ %21, %19 ] %24 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %16, i1 noundef zeroext %23) br i1 %24, label %26, label %25 25: ; preds = %22 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %11, align 4 br label %49 26: ; preds = %22 %27 = bitcast %15* (%19*, %27*, %10*, %68*)** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %27) #21 store %15* (%19*, %27*, %10*, %68*)* inttoptr (i64 -6148914691236517206 to %15* (%19*, %27*, %10*, %68*)*), %15* (%19*, %27*, %10*, %68*)** %12, align 8, !annotation !6 %28 = load i32, i32* %10, align 4 %29 = sext i32 %28 to i64 %30 = getelementptr inbounds [6 x %15* (%19*, %27*, %10*, %68*)*], [6 x %15* (%19*, %27*, %10*, %68*)*]* @8, i64 0, i64 %29 %31 = load %15* (%19*, %27*, %10*, %68*)*, %15* (%19*, %27*, %10*, %68*)** %30, align 8 store %15* (%19*, %27*, %10*, %68*)* %31, %15* (%19*, %27*, %10*, %68*)** %12, align 8 %32 = load %27*, %27** %7, align 8 %33 = load %15* (%19*, %27*, %10*, %68*)*, %15* (%19*, %27*, %10*, %68*)** %12, align 8 %34 = icmp ne %15* (%19*, %27*, %10*, %68*)* %33, null %35 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %32, i1 noundef zeroext %34) br i1 %35, label %37, label %36 36: ; preds = %26 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %11, align 4 br label %47 37: ; preds = %26 %38 = load %15* (%19*, %27*, %10*, %68*)*, %15* (%19*, %27*, %10*, %68*)** %12, align 8 %39 = load %19*, %19** %6, align 8 %40 = load %27*, %27** %7, align 8 %41 = load %10*, %10** %8, align 8 %42 = load %68*, %68** %9, align 8 %43 = call %15* %38(%19* noundef %39, %27* noundef align 8 dereferenceable(129) %40, %10* noundef %41, %68* noundef %42) %44 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %45 = getelementptr inbounds %17, %17* %44, i32 0, i32 0 %46 = getelementptr inbounds %18, %18* %45, i32 0, i32 0 store %15* %43, %15** %46, align 8 store i32 1, i32* %11, align 4 br label %47 47: ; preds = %37, %36 %48 = bitcast %15* (%19*, %27*, %10*, %68*)** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %48) #21 br label %49 49: ; preds = %47, %25 %50 = bitcast i32* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %50) #21 %51 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %52 = getelementptr inbounds %17, %17* %51, i32 0, i32 0 %53 = getelementptr inbounds %18, %18* %52, i32 0, i32 0 %54 = load %15*, %15** %53, align 8 ret %15* %54 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @47(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #3 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca i32, align 4 %11 = alloca %603, align 8 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca %606*, align 8 %15 = alloca i32, align 4 %16 = alloca %609, align 8 %17 = alloca %610, align 8 %18 = alloca %618, align 8 %19 = alloca %619, align 8 %20 = alloca i8, align 1 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %21 = bitcast i32* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %21) #21 store i32 -1431655766, i32* %10, align 4, !annotation !6 %22 = load %27*, %27** %7, align 8 %23 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %22) store i32 %23, i32* %10, align 4 %24 = bitcast %603* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 %25 = getelementptr inbounds %603, %603* %11, i32 0, i32 0 %26 = getelementptr inbounds %604, %604* %25, i32 0, i32 0 %27 = getelementptr inbounds %605, %605* %26, i32 0, i32 0 %28 = getelementptr inbounds %606, %606* %27, i32 0, i32 0 %29 = getelementptr inbounds %607, %607* %28, i32 0, i32 0 %30 = getelementptr inbounds %608, %608* %29, i32 0, i32 0 store i16 -21846, i16* %30, align 8, !annotation !6 %31 = getelementptr inbounds %607, %607* %28, i32 0, i32 1 %32 = getelementptr inbounds %608, %608* %31, i32 0, i32 0 store i16 -21846, i16* %32, align 2, !annotation !6 %33 = getelementptr inbounds %605, %605* %26, i32 0, i32 1 %34 = getelementptr inbounds %606, %606* %33, i32 0, i32 0 %35 = getelementptr inbounds %607, %607* %34, i32 0, i32 0 %36 = getelementptr inbounds %608, %608* %35, i32 0, i32 0 store i16 -21846, i16* %36, align 4, !annotation !6 %37 = getelementptr inbounds %607, %607* %34, i32 0, i32 1 %38 = getelementptr inbounds %608, %608* %37, i32 0, i32 0 store i16 -21846, i16* %38, align 2, !annotation !6 %39 = load %27*, %27** %7, align 8 %40 = call noundef zeroext i1 @614(%27* noundef align 8 dereferenceable(129) %39, %603* noundef %11) %41 = bitcast i32* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %41) #21 store i32 -1431655766, i32* %12, align 4, !annotation !6 %42 = load %27*, %27** %7, align 8 %43 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %42) store i32 %43, i32* %12, align 4 %44 = load %27*, %27** %7, align 8 %45 = load %27*, %27** %7, align 8 %46 = load i32, i32* %12, align 4 %47 = call noundef zeroext i1 @615(%27* noundef align 8 dereferenceable(129) %45, i32 noundef %46) %48 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %44, i1 noundef zeroext %47) br i1 %48, label %50, label %49 49: ; preds = %4 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %13, align 4 br label %125 50: ; preds = %4 %51 = load %27*, %27** %7, align 8 %52 = load i32, i32* %12, align 4 %53 = sext i32 %52 to i64 %54 = call noundef zeroext i1 @_ZN12SkReadBuffer16validateCanReadNIN4skvx3VecILi2EsEEEEbm(%27* noundef align 8 dereferenceable_or_null(129) %51, i64 noundef %53) br i1 %54, label %56, label %55 55: ; preds = %50 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %13, align 4 br label %125 56: ; preds = %50 %57 = bitcast %606** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %57) #21 store %606* inttoptr (i64 -6148914691236517206 to %606*), %606** %14, align 8, !annotation !6 %58 = load %10*, %10** %8, align 8 %59 = load i32, i32* %12, align 4 %60 = call noundef %606* @_ZN6sktext3gpu15SubRunAllocator12makePODArrayIN4skvx3VecILi2EsEEEEPT_i(%10* noundef align 8 dereferenceable_or_null(16) %58, i32 noundef %59) store %606* %60, %606** %14, align 8 %61 = bitcast i32* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %61) #21 store i32 -1431655766, i32* %15, align 4, !annotation !6 store i32 0, i32* %15, align 4 br label %62 62: ; preds = %75, %56 %63 = load i32, i32* %15, align 4 %64 = load i32, i32* %12, align 4 %65 = icmp slt i32 %63, %64 br i1 %65, label %68, label %66 66: ; preds = %62 store i32 2, i32* %13, align 4 %67 = bitcast i32* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %67) #21 br label %78 68: ; preds = %62 %69 = load %27*, %27** %7, align 8 %70 = load %606*, %606** %14, align 8 %71 = load i32, i32* %15, align 4 %72 = sext i32 %71 to i64 %73 = getelementptr inbounds %606, %606* %70, i64 %72 %74 = call noundef zeroext i1 @616(%27* noundef align 8 dereferenceable(129) %69, %606* noundef %73) br label %75 75: ; preds = %68 %76 = load i32, i32* %15, align 4 %77 = add nsw i32 %76, 1 store i32 %77, i32* %15, align 4 br label %62, !llvm.loop !11 78: ; preds = %66 %79 = bitcast %609* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %79) #21 %80 = getelementptr inbounds %609, %609* %16, i32 0, i32 0 store %606* inttoptr (i64 -6148914691236517206 to %606*), %606** %80, align 8, !annotation !6 %81 = getelementptr inbounds %609, %609* %16, i32 0, i32 1 store i64 -6148914691236517206, i64* %81, align 8, !annotation !6 %82 = load %606*, %606** %14, align 8 %83 = load i32, i32* %12, align 4 %84 = sext i32 %83 to i64 call void @_ZN6SkSpanIN4skvx3VecILi2EsEEEC2EPS2_m(%609* noundef align 8 dereferenceable_or_null(16) %16, %606* noundef %82, i64 noundef %84) %85 = bitcast %610* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 112, i8* %85) #21 %86 = bitcast %610* %17 to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %86, i8 -86, i64 112, i1 false), !annotation !6 %87 = load %27*, %27** %7, align 8 %88 = load %68*, %68** %9, align 8 %89 = load %10*, %10** %8, align 8 call void @_ZN6sktext3gpu11GlyphVector14MakeFromBufferER12SkReadBufferPK14SkStrikeClientPNS0_15SubRunAllocatorE(%610* sret(%610) align 8 %17, %27* noundef align 8 dereferenceable(129) %87, %68* noundef %88, %10* noundef %89) %90 = load %27*, %27** %7, align 8 %91 = bitcast %610* %17 to %624* %92 = call noundef zeroext i1 @_ZNKSt4__Cr23__optional_storage_baseIN6sktext3gpu11GlyphVectorELb0EE9has_valueEv(%624* noundef align 8 dereferenceable_or_null(105) %91) #21 %93 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %90, i1 noundef zeroext %92) br i1 %93, label %95, label %94 94: ; preds = %78 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %13, align 4 br label %121 95: ; preds = %78 %96 = load %27*, %27** %7, align 8 %97 = bitcast %618* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %97) #21 %98 = call noundef %551* @_ZNSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEptEv(%610* noundef align 8 dereferenceable_or_null(105) %17) %99 = call { %554**, i64 } @_ZNK6sktext3gpu11GlyphVector6glyphsEv(%551* noundef align 8 dereferenceable_or_null(104) %98) %100 = bitcast %618* %18 to { %554**, i64 }* %101 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %100, i32 0, i32 0 %102 = extractvalue { %554**, i64 } %99, 0 store %554** %102, %554*** %101, align 8 %103 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %100, i32 0, i32 1 %104 = extractvalue { %554**, i64 } %99, 1 store i64 %104, i64* %103, align 8 %105 = call noundef i32 @_Z7SkCountI6SkSpanIPKN6sktext3gpu5GlyphEEEiRKT_(%618* noundef align 8 dereferenceable(16) %18) %106 = load i32, i32* %12, align 4 %107 = icmp eq i32 %105, %106 %108 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %96, i1 noundef zeroext %107) %109 = xor i1 %108, true %110 = bitcast %618* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %110) #21 br i1 %109, label %111, label %112 111: ; preds = %95 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %13, align 4 br label %121 112: ; preds = %95 %113 = bitcast %619* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %113) #21 %114 = load %10*, %10** %8, align 8 %115 = call noundef align 8 dereferenceable(104) %551* @_ZNRSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEE5valueEv(%610* noundef align 8 dereferenceable_or_null(105) %17) call void @llvm.lifetime.start.p0i8(i64 1, i8* %20) #21 store i8 0, i8* %20, align 1 %116 = call %622* @617(%10* noundef align 8 dereferenceable_or_null(16) %114, %19** noundef align 8 dereferenceable(8) %6, i32* noundef align 4 dereferenceable(4) %10, %603* noundef align 8 dereferenceable(8) %11, %609* noundef align 8 dereferenceable(16) %16, %551* noundef align 8 dereferenceable(104) %115, i8* noundef align 1 dereferenceable(1) %20) %117 = getelementptr inbounds %619, %619* %19, i32 0, i32 0 %118 = getelementptr inbounds %620, %620* %117, i32 0, i32 0 %119 = getelementptr inbounds %621, %621* %118, i32 0, i32 0 store %622* %116, %622** %119, align 8 call void @356(%16* noundef align 8 dereferenceable_or_null(8) %5, %619* noundef align 8 dereferenceable(8) %19) #21 call void @357(%619* noundef align 8 dereferenceable_or_null(8) %19) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %20) #21 %120 = bitcast %619* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %120) #21 store i32 1, i32* %13, align 4 br label %121 121: ; preds = %112, %111, %94 call void bitcast (void (%910*)* @_ZNSt4__Cr24__optional_destruct_baseIN6sktext3gpu11GlyphVectorELb0EED2Ev to void (%610*)*)(%610* noundef align 8 dereferenceable_or_null(105) %17) #21 %122 = bitcast %610* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 112, i8* %122) #21 %123 = bitcast %609* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %123) #21 %124 = bitcast %606** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %124) #21 br label %125 125: ; preds = %121, %55, %49 %126 = bitcast i32* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %126) #21 %127 = bitcast %603* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %127) #21 %128 = bitcast i32* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %128) #21 %129 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %130 = getelementptr inbounds %17, %17* %129, i32 0, i32 0 %131 = getelementptr inbounds %18, %18* %130, i32 0, i32 0 %132 = load %15*, %15** %131, align 8 ret %15* %132 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @48(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #5 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca i32, align 4 %11 = alloca i32, align 4 %12 = alloca %546, align 4 %13 = alloca %625, align 8 %14 = alloca i32, align 4 %15 = alloca %610, align 8 %16 = alloca %618, align 8 %17 = alloca %573, align 8 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %18 = bitcast i32* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %18) #21 store i32 -1431655766, i32* %10, align 4, !annotation !6 %19 = load %27*, %27** %7, align 8 %20 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %19) store i32 %20, i32* %10, align 4 %21 = bitcast i32* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %21) #21 store i32 -1431655766, i32* %11, align 4, !annotation !6 %22 = load %27*, %27** %7, align 8 %23 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %22) store i32 %23, i32* %11, align 4 %24 = bitcast %546* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 %25 = getelementptr inbounds %546, %546* %12, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %25, align 4, !annotation !6 %26 = getelementptr inbounds %546, %546* %12, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %26, align 4, !annotation !6 %27 = load %27*, %27** %7, align 8 %28 = call <2 x float> @_ZN17GrSDFTMatrixRange14MakeFromBufferER12SkReadBuffer(%27* noundef align 8 dereferenceable(129) %27) %29 = bitcast %546* %12 to <2 x float>* store <2 x float> %28, <2 x float>* %29, align 4 %30 = bitcast %625* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 56, i8* %30) #21 %31 = getelementptr inbounds %625, %625* %13, i32 0, i32 0 %32 = getelementptr inbounds %626, %626* %31, i32 0, i32 0 %33 = getelementptr inbounds %627, %627* %32, i32 0, i32 0 %34 = getelementptr inbounds %628, %628* %33, i32 0, i32 0 %35 = getelementptr inbounds %629, %629* %34, i32 0, i32 0 %36 = getelementptr inbounds %630, %630* %35, i32 0, i32 0 %37 = getelementptr inbounds %631, %631* %36, i32 0, i32 0 %38 = getelementptr inbounds %632, %632* %37, i32 0, i32 0 %39 = getelementptr inbounds %547, %547* %38, i32 0, i32 0 store i32 -1431655766, i32* %39, align 8, !annotation !6 %40 = getelementptr inbounds %547, %547* %38, i32 0, i32 1 %41 = getelementptr inbounds %5, %5* %40, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %41, align 4, !annotation !6 %42 = getelementptr inbounds %5, %5* %40, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %42, align 4, !annotation !6 %43 = getelementptr inbounds %547, %547* %38, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %43, align 4, !annotation !6 %44 = getelementptr inbounds %547, %547* %38, i32 0, i32 3 %45 = getelementptr inbounds %44, %44* %44, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %45, align 8, !annotation !6 %46 = getelementptr inbounds %44, %44* %44, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %46, align 4, !annotation !6 %47 = getelementptr inbounds %44, %44* %44, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %47, align 8, !annotation !6 %48 = getelementptr inbounds %44, %44* %44, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %48, align 4, !annotation !6 %49 = getelementptr inbounds %547, %547* %38, i32 0, i32 4 %50 = getelementptr inbounds %548, %548* %49, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %50, align 8, !annotation !6 %51 = getelementptr inbounds %548, %548* %49, i32 0, i32 1 store i64 -6148914691236517206, i64* %51, align 8, !annotation !6 %52 = getelementptr inbounds %631, %631* %36, i32 0, i32 1 store i8 -86, i8* %52, align 8, !annotation !6 %53 = getelementptr inbounds %625, %625* %13, i32 0, i32 1 %54 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 0 store i8 -86, i8* %54, align 1, !annotation !6 %55 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 1 store i8 -86, i8* %55, align 1, !annotation !6 %56 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 2 store i8 -86, i8* %56, align 1, !annotation !6 %57 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 3 store i8 -86, i8* %57, align 1, !annotation !6 %58 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 4 store i8 -86, i8* %58, align 1, !annotation !6 %59 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 5 store i8 -86, i8* %59, align 1, !annotation !6 %60 = getelementptr inbounds [7 x i8], [7 x i8]* %53, i64 0, i64 6 store i8 -86, i8* %60, align 1, !annotation !6 %61 = load %27*, %27** %7, align 8 %62 = load %10*, %10** %8, align 8 call void @618(%625* sret(%625) align 8 %13, %27* noundef align 8 dereferenceable(129) %61, %10* noundef %62) %63 = load %27*, %27** %7, align 8 %64 = bitcast %625* %13 to %633* %65 = call noundef zeroext i1 @619(%633* noundef align 8 dereferenceable_or_null(49) %64) #21 %66 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %63, i1 noundef zeroext %65) br i1 %66, label %68, label %67 67: ; preds = %4 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %14, align 4 br label %109 68: ; preds = %4 %69 = bitcast %610* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 112, i8* %69) #21 %70 = bitcast %610* %15 to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %70, i8 -86, i64 112, i1 false), !annotation !6 %71 = load %27*, %27** %7, align 8 %72 = load %68*, %68** %9, align 8 %73 = load %10*, %10** %8, align 8 call void @_ZN6sktext3gpu11GlyphVector14MakeFromBufferER12SkReadBufferPK14SkStrikeClientPNS0_15SubRunAllocatorE(%610* sret(%610) align 8 %15, %27* noundef align 8 dereferenceable(129) %71, %68* noundef %72, %10* noundef %73) %74 = load %27*, %27** %7, align 8 %75 = bitcast %610* %15 to %624* %76 = call noundef zeroext i1 @_ZNKSt4__Cr23__optional_storage_baseIN6sktext3gpu11GlyphVectorELb0EE9has_valueEv(%624* noundef align 8 dereferenceable_or_null(105) %75) #21 %77 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %74, i1 noundef zeroext %76) br i1 %77, label %79, label %78 78: ; preds = %68 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %14, align 4 br label %107 79: ; preds = %68 %80 = load %27*, %27** %7, align 8 %81 = bitcast %618* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %81) #21 %82 = call noundef %551* @_ZNSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEptEv(%610* noundef align 8 dereferenceable_or_null(105) %15) %83 = call { %554**, i64 } @_ZNK6sktext3gpu11GlyphVector6glyphsEv(%551* noundef align 8 dereferenceable_or_null(104) %82) %84 = bitcast %618* %16 to { %554**, i64 }* %85 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %84, i32 0, i32 0 %86 = extractvalue { %554**, i64 } %83, 0 store %554** %86, %554*** %85, align 8 %87 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %84, i32 0, i32 1 %88 = extractvalue { %554**, i64 } %83, 1 store i64 %88, i64* %87, align 8 %89 = call noundef i32 @_Z7SkCountI6SkSpanIPKN6sktext3gpu5GlyphEEEiRKT_(%618* noundef align 8 dereferenceable(16) %16) %90 = call noundef %547* @620(%625* noundef align 8 dereferenceable_or_null(49) %13) %91 = call noundef i32 @297(%547* noundef align 8 dereferenceable_or_null(48) %90) %92 = icmp eq i32 %89, %91 %93 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %80, i1 noundef zeroext %92) %94 = xor i1 %93, true %95 = bitcast %618* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %95) #21 br i1 %94, label %96, label %97 96: ; preds = %79 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %14, align 4 br label %107 97: ; preds = %79 %98 = bitcast %573* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %98) #21 %99 = load %10*, %10** %8, align 8 %100 = call noundef align 8 dereferenceable(48) %547* @622(%625* noundef align 8 dereferenceable_or_null(49) %13) %101 = call noundef align 8 dereferenceable(104) %551* @_ZNRSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEdeEv(%610* noundef align 8 dereferenceable_or_null(105) %15) %102 = call %576* @621(%10* noundef align 8 dereferenceable_or_null(16) %99, %19** noundef align 8 dereferenceable(8) %6, i32* noundef align 4 dereferenceable(4) %10, i32* noundef align 4 dereferenceable(4) %11, %546* noundef align 4 dereferenceable(8) %12, %547* noundef align 8 dereferenceable(48) %100, %551* noundef align 8 dereferenceable(104) %101) %103 = getelementptr inbounds %573, %573* %17, i32 0, i32 0 %104 = getelementptr inbounds %574, %574* %103, i32 0, i32 0 %105 = getelementptr inbounds %575, %575* %104, i32 0, i32 0 store %576* %102, %576** %105, align 8 call void @95(%16* noundef align 8 dereferenceable_or_null(8) %5, %573* noundef align 8 dereferenceable(8) %17) #21 call void @96(%573* noundef align 8 dereferenceable_or_null(8) %17) #21 %106 = bitcast %573* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %106) #21 store i32 1, i32* %14, align 4 br label %107 107: ; preds = %97, %96, %78 call void bitcast (void (%910*)* @_ZNSt4__Cr24__optional_destruct_baseIN6sktext3gpu11GlyphVectorELb0EED2Ev to void (%610*)*)(%610* noundef align 8 dereferenceable_or_null(105) %15) #21 %108 = bitcast %610* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 112, i8* %108) #21 br label %109 109: ; preds = %107, %67 %110 = bitcast %625* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 56, i8* %110) #21 %111 = bitcast %546* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %111) #21 %112 = bitcast i32* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %112) #21 %113 = bitcast i32* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %113) #21 %114 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %115 = getelementptr inbounds %17, %17* %114, i32 0, i32 0 %116 = getelementptr inbounds %18, %18* %115, i32 0, i32 0 %117 = load %15*, %15** %116, align 8 ret %15* %117 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @49(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #3 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca %625, align 8 %11 = alloca i32, align 4 %12 = alloca %610, align 8 %13 = alloca %618, align 8 %14 = alloca %634, align 8 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %15 = bitcast %625* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 56, i8* %15) #21 %16 = getelementptr inbounds %625, %625* %10, i32 0, i32 0 %17 = getelementptr inbounds %626, %626* %16, i32 0, i32 0 %18 = getelementptr inbounds %627, %627* %17, i32 0, i32 0 %19 = getelementptr inbounds %628, %628* %18, i32 0, i32 0 %20 = getelementptr inbounds %629, %629* %19, i32 0, i32 0 %21 = getelementptr inbounds %630, %630* %20, i32 0, i32 0 %22 = getelementptr inbounds %631, %631* %21, i32 0, i32 0 %23 = getelementptr inbounds %632, %632* %22, i32 0, i32 0 %24 = getelementptr inbounds %547, %547* %23, i32 0, i32 0 store i32 -1431655766, i32* %24, align 8, !annotation !6 %25 = getelementptr inbounds %547, %547* %23, i32 0, i32 1 %26 = getelementptr inbounds %5, %5* %25, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %26, align 4, !annotation !6 %27 = getelementptr inbounds %5, %5* %25, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %27, align 4, !annotation !6 %28 = getelementptr inbounds %547, %547* %23, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %28, align 4, !annotation !6 %29 = getelementptr inbounds %547, %547* %23, i32 0, i32 3 %30 = getelementptr inbounds %44, %44* %29, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %30, align 8, !annotation !6 %31 = getelementptr inbounds %44, %44* %29, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %31, align 4, !annotation !6 %32 = getelementptr inbounds %44, %44* %29, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %32, align 8, !annotation !6 %33 = getelementptr inbounds %44, %44* %29, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %33, align 4, !annotation !6 %34 = getelementptr inbounds %547, %547* %23, i32 0, i32 4 %35 = getelementptr inbounds %548, %548* %34, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %35, align 8, !annotation !6 %36 = getelementptr inbounds %548, %548* %34, i32 0, i32 1 store i64 -6148914691236517206, i64* %36, align 8, !annotation !6 %37 = getelementptr inbounds %631, %631* %21, i32 0, i32 1 store i8 -86, i8* %37, align 8, !annotation !6 %38 = getelementptr inbounds %625, %625* %10, i32 0, i32 1 %39 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 0 store i8 -86, i8* %39, align 1, !annotation !6 %40 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 1 store i8 -86, i8* %40, align 1, !annotation !6 %41 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 2 store i8 -86, i8* %41, align 1, !annotation !6 %42 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 3 store i8 -86, i8* %42, align 1, !annotation !6 %43 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 4 store i8 -86, i8* %43, align 1, !annotation !6 %44 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 5 store i8 -86, i8* %44, align 1, !annotation !6 %45 = getelementptr inbounds [7 x i8], [7 x i8]* %38, i64 0, i64 6 store i8 -86, i8* %45, align 1, !annotation !6 %46 = load %27*, %27** %7, align 8 %47 = load %10*, %10** %8, align 8 call void @618(%625* sret(%625) align 8 %10, %27* noundef align 8 dereferenceable(129) %46, %10* noundef %47) %48 = load %27*, %27** %7, align 8 %49 = bitcast %625* %10 to %633* %50 = call noundef zeroext i1 @619(%633* noundef align 8 dereferenceable_or_null(49) %49) #21 %51 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %48, i1 noundef zeroext %50) br i1 %51, label %53, label %52 52: ; preds = %4 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %11, align 4 br label %94 53: ; preds = %4 %54 = bitcast %610* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 112, i8* %54) #21 %55 = bitcast %610* %12 to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %55, i8 -86, i64 112, i1 false), !annotation !6 %56 = load %27*, %27** %7, align 8 %57 = load %68*, %68** %9, align 8 %58 = load %10*, %10** %8, align 8 call void @_ZN6sktext3gpu11GlyphVector14MakeFromBufferER12SkReadBufferPK14SkStrikeClientPNS0_15SubRunAllocatorE(%610* sret(%610) align 8 %12, %27* noundef align 8 dereferenceable(129) %56, %68* noundef %57, %10* noundef %58) %59 = load %27*, %27** %7, align 8 %60 = bitcast %610* %12 to %624* %61 = call noundef zeroext i1 @_ZNKSt4__Cr23__optional_storage_baseIN6sktext3gpu11GlyphVectorELb0EE9has_valueEv(%624* noundef align 8 dereferenceable_or_null(105) %60) #21 %62 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %59, i1 noundef zeroext %61) br i1 %62, label %64, label %63 63: ; preds = %53 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %11, align 4 br label %92 64: ; preds = %53 %65 = load %27*, %27** %7, align 8 %66 = bitcast %618* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %66) #21 %67 = call noundef %551* @_ZNSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEptEv(%610* noundef align 8 dereferenceable_or_null(105) %12) %68 = call { %554**, i64 } @_ZNK6sktext3gpu11GlyphVector6glyphsEv(%551* noundef align 8 dereferenceable_or_null(104) %67) %69 = bitcast %618* %13 to { %554**, i64 }* %70 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %69, i32 0, i32 0 %71 = extractvalue { %554**, i64 } %68, 0 store %554** %71, %554*** %70, align 8 %72 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %69, i32 0, i32 1 %73 = extractvalue { %554**, i64 } %68, 1 store i64 %73, i64* %72, align 8 %74 = call noundef i32 @_Z7SkCountI6SkSpanIPKN6sktext3gpu5GlyphEEEiRKT_(%618* noundef align 8 dereferenceable(16) %13) %75 = call noundef %547* @620(%625* noundef align 8 dereferenceable_or_null(49) %10) %76 = call noundef i32 @297(%547* noundef align 8 dereferenceable_or_null(48) %75) %77 = icmp eq i32 %74, %76 %78 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %65, i1 noundef zeroext %77) %79 = xor i1 %78, true %80 = bitcast %618* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %80) #21 br i1 %79, label %81, label %82 81: ; preds = %64 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 store i32 1, i32* %11, align 4 br label %92 82: ; preds = %64 %83 = bitcast %634* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %83) #21 %84 = load %10*, %10** %8, align 8 %85 = call noundef align 8 dereferenceable(48) %547* @622(%625* noundef align 8 dereferenceable_or_null(49) %10) %86 = call noundef align 8 dereferenceable(104) %551* @_ZNRSt4__Cr8optionalIN6sktext3gpu11GlyphVectorEEdeEv(%610* noundef align 8 dereferenceable_or_null(105) %12) %87 = call %637* @568(%10* noundef align 8 dereferenceable_or_null(16) %84, %19** noundef align 8 dereferenceable(8) %6, %547* noundef align 8 dereferenceable(48) %85, %551* noundef align 8 dereferenceable(104) %86) %88 = getelementptr inbounds %634, %634* %14, i32 0, i32 0 %89 = getelementptr inbounds %635, %635* %88, i32 0, i32 0 %90 = getelementptr inbounds %636, %636* %89, i32 0, i32 0 store %637* %87, %637** %90, align 8 call void @569(%16* noundef align 8 dereferenceable_or_null(8) %5, %634* noundef align 8 dereferenceable(8) %14) #21 call void @570(%634* noundef align 8 dereferenceable_or_null(8) %14) #21 %91 = bitcast %634* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %91) #21 store i32 1, i32* %11, align 4 br label %92 92: ; preds = %82, %81, %63 call void bitcast (void (%910*)* @_ZNSt4__Cr24__optional_destruct_baseIN6sktext3gpu11GlyphVectorELb0EED2Ev to void (%610*)*)(%610* noundef align 8 dereferenceable_or_null(105) %12) #21 %93 = bitcast %610* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 112, i8* %93) #21 br label %94 94: ; preds = %92, %52 %95 = bitcast %625* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 56, i8* %95) #21 %96 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %97 = getelementptr inbounds %17, %17* %96, i32 0, i32 0 %98 = getelementptr inbounds %18, %18* %97, i32 0, i32 0 %99 = load %15*, %15** %98, align 8 ret %15* %99 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @50(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #3 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca %638, align 8 %11 = alloca i32, align 4 %12 = alloca %536, align 8 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %13 = bitcast %638* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 200, i8* %13) #21 %14 = bitcast %638* %10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 getelementptr inbounds ({ { { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } } }, [7 x i8] }, { { { { { { <{ { { i8, [3 x i8], float, %120, %121, %122, %127 } }, i8 }> } } } } }, [7 x i8] }* @30, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0), i64 200, i1 false), !annotation !6 %15 = load %27*, %27** %7, align 8 %16 = load %10*, %10** %8, align 8 %17 = load %68*, %68** %9, align 8 call void @639(%638* sret(%638) align 8 %10, %27* noundef align 8 dereferenceable(129) %15, %10* noundef %16, %68* noundef %17) %18 = load %27*, %27** %7, align 8 %19 = bitcast %638* %10 to %646* %20 = call noundef zeroext i1 @640(%646* noundef align 8 dereferenceable_or_null(193) %19) #21 %21 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %18, i1 noundef zeroext %20) br i1 %21, label %23, label %22 22: ; preds = %4 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %11, align 4 br label %32 23: ; preds = %4 %24 = bitcast %536* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 %25 = load %10*, %10** %8, align 8 %26 = call noundef align 8 dereferenceable(192) %540* @641(%638* noundef align 8 dereferenceable_or_null(193) %10) %27 = call %539* @58(%10* noundef align 8 dereferenceable_or_null(16) %25, %540* noundef align 8 dereferenceable(192) %26) %28 = getelementptr inbounds %536, %536* %12, i32 0, i32 0 %29 = getelementptr inbounds %537, %537* %28, i32 0, i32 0 %30 = getelementptr inbounds %538, %538* %29, i32 0, i32 0 store %539* %27, %539** %30, align 8 call void @60(%16* noundef align 8 dereferenceable_or_null(8) %5, %536* noundef align 8 dereferenceable(8) %12) #21 call void @61(%536* noundef align 8 dereferenceable_or_null(8) %12) #21 %31 = bitcast %536* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %31) #21 store i32 1, i32* %11, align 4 br label %32 32: ; preds = %23, %22 call void bitcast (void (%933*)* @642 to void (%638*)*)(%638* noundef align 8 dereferenceable_or_null(193) %10) #21 %33 = bitcast %638* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 200, i8* %33) #21 %34 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %35 = getelementptr inbounds %17, %17* %34, i32 0, i32 0 %36 = getelementptr inbounds %18, %18* %35, i32 0, i32 0 %37 = load %15*, %15** %36, align 8 ret %15* %37 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %15* @51(%19* noundef %0, %27* noundef align 8 dereferenceable(129) %1, %10* noundef %2, %68* noundef %3) #3 align 2 { %5 = alloca %16, align 8 %6 = alloca %19*, align 8 %7 = alloca %27*, align 8 %8 = alloca %10*, align 8 %9 = alloca %68*, align 8 %10 = alloca %647, align 8 %11 = alloca i32, align 4 %12 = alloca %541, align 8 store %19* %0, %19** %6, align 8 store %27* %1, %27** %7, align 8 store %10* %2, %10** %8, align 8 store %68* %3, %68** %9, align 8 %13 = bitcast %647* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 208, i8* %13) #21 %14 = bitcast %647* %10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 bitcast ({ { { { { { <{ { { float, [4 x i8], %129, %130, %131, %132, %127 } }, i8 }> } } } } }, [7 x i8] }* @31 to i8*), i64 208, i1 false), !annotation !6 %15 = load %27*, %27** %7, align 8 %16 = load %10*, %10** %8, align 8 %17 = load %68*, %68** %9, align 8 call void @658(%647* sret(%647) align 8 %10, %27* noundef align 8 dereferenceable(129) %15, %10* noundef %16, %68* noundef %17) %18 = load %27*, %27** %7, align 8 %19 = bitcast %647* %10 to %655* %20 = call noundef zeroext i1 @659(%655* noundef align 8 dereferenceable_or_null(201) %19) #21 %21 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %18, i1 noundef zeroext %20) br i1 %21, label %23, label %22 22: ; preds = %4 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %5, i8* null) #21 store i32 1, i32* %11, align 4 br label %32 23: ; preds = %4 %24 = bitcast %541* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 %25 = load %10*, %10** %8, align 8 %26 = call noundef align 8 dereferenceable(200) %545* @661(%647* noundef align 8 dereferenceable_or_null(201) %10) %27 = call %544* @660(%10* noundef align 8 dereferenceable_or_null(16) %25, %545* noundef align 8 dereferenceable(200) %26) %28 = getelementptr inbounds %541, %541* %12, i32 0, i32 0 %29 = getelementptr inbounds %542, %542* %28, i32 0, i32 0 %30 = getelementptr inbounds %543, %543* %29, i32 0, i32 0 store %544* %27, %544** %30, align 8 call void @662(%16* noundef align 8 dereferenceable_or_null(8) %5, %541* noundef align 8 dereferenceable(8) %12) #21 call void @663(%541* noundef align 8 dereferenceable_or_null(8) %12) #21 %31 = bitcast %541* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %31) #21 store i32 1, i32* %11, align 4 br label %32 32: ; preds = %23, %22 call void bitcast (void (%955*)* @664 to void (%647*)*)(%647* noundef align 8 dereferenceable_or_null(201) %10) #21 %33 = bitcast %647* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 208, i8* %33) #21 %34 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %35 = getelementptr inbounds %17, %17* %34, i32 0, i32 0 %36 = getelementptr inbounds %18, %18* %35, i32 0, i32 0 %37 = load %15*, %15** %36, align 8 ret %15* %37 } ; Function Attrs: null_pointer_is_valid declare noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %0, i1 noundef zeroext %1) #3 comdat align 2 { %3 = alloca %27*, align 8 %4 = alloca i8, align 1 store %27* %0, %27** %3, align 8 %5 = zext i1 %1 to i8 store i8 %5, i8* %4, align 1 %6 = load %27*, %27** %3, align 8 %7 = load i8, i8* %4, align 1, !range !7 %8 = trunc i8 %7 to i1 br i1 %8, label %10, label %9 9: ; preds = %2 call void @_ZN12SkReadBuffer10setInvalidEv(%27* noundef align 8 dereferenceable_or_null(129) %6) br label %10 10: ; preds = %9, %2 %11 = getelementptr inbounds %27, %27* %6, i32 0, i32 13 %12 = load i8, i8* %11, align 8, !range !7 %13 = trunc i8 %12 to i1 %14 = xor i1 %13, true ret i1 %14 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEDn(%16* noundef align 8 dereferenceable_or_null(8) %0, i8* %1) unnamed_addr #0 comdat align 2 { %3 = alloca %16*, align 8 %4 = alloca i8*, align 8 %5 = alloca %15*, align 8 %6 = alloca %656, align 1 store %16* %0, %16** %3, align 8 store i8* %1, i8** %4, align 8 %7 = load %16*, %16** %3, align 8 %8 = getelementptr inbounds %16, %16* %7, i32 0, i32 0 %9 = bitcast %15** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %9) #21 store %15* null, %15** %5, align 8 %10 = bitcast %656* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %10) #21 call void @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%17* noundef align 8 dereferenceable_or_null(8) %8, %15** noundef align 8 dereferenceable(8) %5, %656* noundef align 1 dereferenceable(1) %6) %11 = bitcast %656* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %11) #21 %12 = bitcast %15** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define hidden void @_Z20SkMakeSlugFromBufferR12SkReadBufferPK14SkStrikeClient(%578* noalias sret(%578) align 8 %0, %27* noundef align 8 dereferenceable(129) %1, %68* noundef %2) #3 { %4 = alloca i8*, align 8 %5 = alloca %27*, align 8 %6 = alloca %68*, align 8 %7 = bitcast %578* %0 to i8* store i8* %7, i8** %4, align 8 store %27* %1, %27** %5, align 8 store %68* %2, %68** %6, align 8 %8 = load %27*, %27** %5, align 8 %9 = load %68*, %68** %6, align 8 call void @52(%578* sret(%578) align 8 %0, %27* noundef align 8 dereferenceable(129) %8, %68* noundef %9) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @52(%578* noalias sret(%578) align 8 %0, %27* noundef align 8 dereferenceable(129) %1, %68* noundef %2) #5 align 2 { %4 = alloca i8*, align 8 %5 = alloca %27*, align 8 %6 = alloca %68*, align 8 %7 = alloca %44, align 4 %8 = alloca i32, align 4 %9 = alloca %73, align 8 %10 = alloca %2, align 4 %11 = alloca %5, align 4 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca %599, align 8 %15 = alloca %95*, align 8 %16 = alloca i32*, align 8 %17 = alloca %10*, align 8 %18 = alloca %597, align 8 %19 = alloca i32, align 4 %20 = alloca %16, align 8 %21 = alloca %16, align 8 %22 = bitcast %578* %0 to i8* store i8* %22, i8** %4, align 8 store %27* %1, %27** %5, align 8 store %68* %2, %68** %6, align 8 %23 = bitcast %44* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %23) #21 %24 = getelementptr inbounds %44, %44* %7, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %24, align 4, !annotation !6 %25 = getelementptr inbounds %44, %44* %7, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %25, align 4, !annotation !6 %26 = getelementptr inbounds %44, %44* %7, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %26, align 4, !annotation !6 %27 = getelementptr inbounds %44, %44* %7, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %27, align 4, !annotation !6 %28 = load %27*, %27** %5, align 8 %29 = call { <2 x float>, <2 x float> } @_ZN12SkReadBuffer8readRectEv(%27* noundef align 8 dereferenceable_or_null(129) %28) %30 = bitcast %44* %7 to { <2 x float>, <2 x float> }* %31 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %30, i32 0, i32 0 %32 = extractvalue { <2 x float>, <2 x float> } %29, 0 store <2 x float> %32, <2 x float>* %31, align 4 %33 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %30, i32 0, i32 1 %34 = extractvalue { <2 x float>, <2 x float> } %29, 1 store <2 x float> %34, <2 x float>* %33, align 4 %35 = load %27*, %27** %5, align 8 %36 = call noundef zeroext i1 @_ZNK6SkRect7isEmptyEv(%44* noundef align 4 dereferenceable_or_null(16) %7) %37 = xor i1 %36, true %38 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %35, i1 noundef zeroext %37) br i1 %38, label %40, label %39 39: ; preds = %3 call void @_ZN5sk_spI6GrSlugEC2EDn(%578* noundef align 8 dereferenceable_or_null(8) %0, i8* null) store i32 1, i32* %8, align 4 br label %150 40: ; preds = %3 %41 = bitcast %73* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 80, i8* %41) #21 %42 = bitcast %73* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %42, i8* align 8 bitcast (%73* @33 to i8*), i64 80, i1 false), !annotation !6 %43 = load %27*, %27** %5, align 8 call void @_ZN12SkReadBuffer9readPaintEv(%73* sret(%73) align 8 %9, %27* noundef align 8 dereferenceable_or_null(129) %43) %44 = bitcast %2* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %44) #21 %45 = getelementptr inbounds %2, %2* %10, i32 0, i32 0 %46 = bitcast [9 x float]* %45 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %46, i8 -1, i64 36, i1 false), !annotation !6 %47 = getelementptr inbounds %2, %2* %10, i32 0, i32 1 store i32 -1431655766, i32* %47, align 4, !annotation !6 call void @_ZN8SkMatrixC2Ev(%2* noundef align 4 dereferenceable_or_null(40) %10) %48 = load %27*, %27** %5, align 8 call void @_ZN12SkReadBuffer10readMatrixEP8SkMatrix(%27* noundef align 8 dereferenceable_or_null(129) %48, %2* noundef %10) %49 = bitcast %5* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %49) #21 %50 = getelementptr inbounds %5, %5* %11, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %50, align 4, !annotation !6 %51 = getelementptr inbounds %5, %5* %11, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %51, align 4, !annotation !6 %52 = load %27*, %27** %5, align 8 %53 = call <2 x float> @_ZN12SkReadBuffer9readPointEv(%27* noundef align 8 dereferenceable_or_null(129) %52) %54 = bitcast %5* %11 to <2 x float>* store <2 x float> %53, <2 x float>* %54, align 4 %55 = bitcast i32* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %55) #21 store i32 -1431655766, i32* %12, align 4, !annotation !6 %56 = load %27*, %27** %5, align 8 %57 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %56) store i32 %57, i32* %12, align 4 %58 = load %27*, %27** %5, align 8 %59 = load i32, i32* %12, align 4 %60 = icmp sgt i32 %59, 0 %61 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %58, i1 noundef zeroext %60) br i1 %61, label %63, label %62 62: ; preds = %40 call void @_ZN5sk_spI6GrSlugEC2EDn(%578* noundef align 8 dereferenceable_or_null(8) %0, i8* null) store i32 1, i32* %8, align 4 br label %145 63: ; preds = %40 %64 = bitcast i32* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %64) #21 store i32 -1431655766, i32* %13, align 4, !annotation !6 %65 = load %27*, %27** %5, align 8 %66 = call noundef i32 @_ZN12SkReadBuffer7readIntEv(%27* noundef align 8 dereferenceable_or_null(129) %65) store i32 %66, i32* %13, align 4 %67 = load i32, i32* %13, align 4 %68 = icmp slt i32 %67, 0 br i1 %68, label %72, label %69 69: ; preds = %63 %70 = load i32, i32* %13, align 4 %71 = icmp slt i32 65536, %70 br i1 %71, label %72, label %73 72: ; preds = %69, %63 store i32 128, i32* %13, align 4 br label %73 73: ; preds = %72, %69 %74 = bitcast %599* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* %74) #21 %75 = bitcast %599* %14 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %75, i8* align 8 bitcast ({ { %94, %8, [4 x i8], %9 } }* @34 to i8*), i64 32, i1 false), !annotation !6 %76 = load i32, i32* %13, align 4 call void @312(%599* sret(%599) align 8 %14, i32 noundef %76) %77 = bitcast %95** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %77) #21 store %95* inttoptr (i64 -6148914691236517206 to %95*), %95** %15, align 8, !annotation !6 %78 = call noundef align 8 dereferenceable(8) %95* @313(%599* noundef align 8 dereferenceable(32) %14) #21 store %95* %78, %95** %15, align 8 %79 = bitcast i32** %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %79) #21 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %16, align 8, !annotation !6 %80 = call noundef align 4 dereferenceable(4) i32* @314(%599* noundef align 8 dereferenceable(32) %14) #21 store i32* %80, i32** %16, align 8 %81 = bitcast %10** %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %81) #21 store %10* inttoptr (i64 -6148914691236517206 to %10*), %10** %17, align 8, !annotation !6 %82 = call noundef align 8 dereferenceable(16) %10* @315(%599* noundef align 8 dereferenceable(32) %14) #21 store %10* %82, %10** %17, align 8 %83 = bitcast %597* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %83) #21 %84 = getelementptr inbounds %597, %597* %18, i32 0, i32 0 store %598* inttoptr (i64 -6148914691236517206 to %598*), %598** %84, align 8, !annotation !6 %85 = load %95*, %95** %15, align 8 %86 = load %10*, %10** %17, align 8 %87 = call noundef %598* @709(%95* noundef align 8 dereferenceable_or_null(8) %85, %10* noundef align 8 dereferenceable(16) %86, %44* noundef align 4 dereferenceable(16) %7, %73* noundef align 8 dereferenceable(76) %9, %2* noundef align 4 dereferenceable(40) %10, %5* noundef align 4 dereferenceable(8) %11) call void @317(%597* noundef align 8 dereferenceable_or_null(8) %18, %598* noundef %87) %88 = bitcast i32* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %88) #21 store i32 -1431655766, i32* %19, align 4, !annotation !6 store i32 0, i32* %19, align 4 br label %89 89: ; preds = %127, %73 %90 = load i32, i32* %19, align 4 %91 = load i32, i32* %12, align 4 %92 = icmp slt i32 %90, %91 br i1 %92, label %94, label %93 93: ; preds = %89 store i32 2, i32* %8, align 4 br label %130 94: ; preds = %89 %95 = bitcast %16* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %95) #21 %96 = getelementptr inbounds %16, %16* %20, i32 0, i32 0 %97 = getelementptr inbounds %17, %17* %96, i32 0, i32 0 %98 = getelementptr inbounds %18, %18* %97, i32 0, i32 0 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %98, align 8, !annotation !6 %99 = call noundef %598* @318(%597* noundef align 8 dereferenceable_or_null(8) %18) %100 = bitcast %598* %99 to %19* %101 = load %27*, %27** %5, align 8 %102 = call noundef %598* @319(%597* noundef align 8 dereferenceable_or_null(8) %18) %103 = getelementptr inbounds %598, %598* %102, i32 0, i32 2 %104 = load %68*, %68** %6, align 8 %105 = call %15* @_ZN8GrSubRun14MakeFromBufferEPK20GrTextReferenceFrameR12SkReadBufferPN6sktext3gpu15SubRunAllocatorEPK14SkStrikeClient(%19* noundef %100, %27* noundef align 8 dereferenceable(129) %101, %10* noundef %103, %68* noundef %104) %106 = getelementptr inbounds %16, %16* %20, i32 0, i32 0 %107 = getelementptr inbounds %17, %17* %106, i32 0, i32 0 %108 = getelementptr inbounds %18, %18* %107, i32 0, i32 0 store %15* %105, %15** %108, align 8 %109 = load %27*, %27** %5, align 8 %110 = call noundef zeroext i1 @_ZNSt4__CrneI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn(%16* noundef align 8 dereferenceable(8) %20, i8* null) #21 %111 = call noundef zeroext i1 @_ZN12SkReadBuffer8validateEb(%27* noundef align 8 dereferenceable_or_null(129) %109, i1 noundef zeroext %110) br i1 %111, label %113, label %112 112: ; preds = %94 call void @_ZN5sk_spI6GrSlugEC2EDn(%578* noundef align 8 dereferenceable_or_null(8) %0, i8* null) store i32 1, i32* %8, align 4 br label %123 113: ; preds = %94 %114 = call noundef zeroext i1 @_ZNSt4__CrneI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn(%16* noundef align 8 dereferenceable(8) %20, i8* null) #21 br i1 %114, label %115, label %122 115: ; preds = %113 %116 = call noundef %598* @319(%597* noundef align 8 dereferenceable_or_null(8) %18) %117 = getelementptr inbounds %598, %598* %116, i32 0, i32 7 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2EOS6_(%16* noundef align 8 dereferenceable_or_null(8) %21, %16* noundef align 8 dereferenceable(8) %20) #21 %118 = getelementptr inbounds %16, %16* %21, i32 0, i32 0 %119 = getelementptr inbounds %17, %17* %118, i32 0, i32 0 %120 = getelementptr inbounds %18, %18* %119, i32 0, i32 0 %121 = load %15*, %15** %120, align 8 call void @_ZN12GrSubRunList6appendENSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEE(%181* noundef align 8 dereferenceable_or_null(16) %117, %15* %121) br label %122 122: ; preds = %115, %113 store i32 0, i32* %8, align 4 br label %123 123: ; preds = %122, %112 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEED2Ev(%16* noundef align 8 dereferenceable_or_null(8) %20) #21 %124 = bitcast %16* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %124) #21 %125 = load i32, i32* %8, align 4 switch i32 %125, label %130 [ i32 0, label %126 ] 126: ; preds = %123 br label %127 127: ; preds = %126 %128 = load i32, i32* %19, align 4 %129 = add nsw i32 %128, 1 store i32 %129, i32* %19, align 4 br label %89, !llvm.loop !12 130: ; preds = %123, %93 %131 = bitcast i32* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %131) #21 %132 = load i32, i32* %8, align 4 switch i32 %132, label %138 [ i32 2, label %133 ] 133: ; preds = %130 %134 = load %27*, %27** %5, align 8 %135 = call noundef zeroext i1 @_ZNK12SkReadBuffer7isValidEv(%27* noundef align 8 dereferenceable_or_null(129) %134) br i1 %135, label %137, label %136 136: ; preds = %133 call void @_ZN5sk_spI6GrSlugEC2EDn(%578* noundef align 8 dereferenceable_or_null(8) %0, i8* null) store i32 1, i32* %8, align 4 br label %138 137: ; preds = %133 call void @44(%578* noundef align 8 dereferenceable_or_null(8) %0, %597* noundef align 8 dereferenceable(8) %18) store i32 1, i32* %8, align 4 br label %138 138: ; preds = %137, %136, %130 call void @45(%597* noundef align 8 dereferenceable_or_null(8) %18) #21 %139 = bitcast %597* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %139) #21 %140 = bitcast %10** %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %140) #21 %141 = bitcast i32** %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %141) #21 %142 = bitcast %95** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %142) #21 call void @322(%599* noundef align 8 dereferenceable_or_null(32) %14) #21 %143 = bitcast %599* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 32, i8* %143) #21 %144 = bitcast i32* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %144) #21 br label %145 145: ; preds = %138, %62 %146 = bitcast i32* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %146) #21 %147 = bitcast %5* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %147) #21 %148 = bitcast %2* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %148) #21 call void @_ZN7SkPaintD1Ev(%73* noundef align 8 dereferenceable_or_null(76) %9) #21 %149 = bitcast %73* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 80, i8* %149) #21 br label %150 150: ; preds = %145, %39 %151 = bitcast %44* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %151) #21 ret void } declare void @__cxa_pure_virtual() unnamed_addr ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK12SkRefCntBase16internal_disposeEv(%657* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #3 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 %4 = icmp eq %657* %3, null br i1 %4, label %10, label %5 5: ; preds = %1 %6 = bitcast %657* %3 to void (%657*)*** %7 = load void (%657*)**, void (%657*)*** %6, align 8 %8 = getelementptr inbounds void (%657*)*, void (%657*)** %7, i64 1 %9 = load void (%657*)*, void (%657*)** %8, align 8 call void %9(%657* noundef align 8 dereferenceable_or_null(12) %3) #21 br label %10 10: ; preds = %5, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(40) %2* @_ZNK10GrTextBlob21initialPositionMatrixEv(%178* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #3 comdat align 2 { %2 = alloca %178*, align 8 store %178* %0, %178** %2, align 8 %3 = load %178*, %178** %2, align 8 %4 = getelementptr inbounds %178, %178* %3, i32 0, i32 8 ret %2* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %80* @_ZNK5sk_spI12SkMaskFilterE3getEv(%79* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %79*, align 8 store %79* %0, %79** %2, align 8 %3 = load %79*, %79** %2, align 8 %4 = getelementptr inbounds %79, %79* %3, i32 0, i32 0 %5 = load %80*, %80** %4, align 8 ret %80* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %75* @_ZNK5sk_spI12SkPathEffectE3getEv(%74* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %74*, align 8 store %74* %0, %74** %2, align 8 %3 = load %74*, %74** %2, align 8 %4 = getelementptr inbounds %74, %74* %3, i32 0, i32 0 %5 = load %75*, %75** %4, align 8 ret %75* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkMatrixC2Ev(%2* noundef align 4 dereferenceable_or_null(40) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 call void @_ZN8SkMatrixC2Efffffffffi(%2* noundef align 4 dereferenceable_or_null(40) %3, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, i32 noundef 16) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkMatrixC2Efffffffffi(%2* noundef align 4 dereferenceable_or_null(40) %0, float noundef %1, float noundef %2, float noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8, float noundef %9, i32 noundef %10) unnamed_addr #0 comdat align 2 { %12 = alloca %2*, align 8 %13 = alloca float, align 4 %14 = alloca float, align 4 %15 = alloca float, align 4 %16 = alloca float, align 4 %17 = alloca float, align 4 %18 = alloca float, align 4 %19 = alloca float, align 4 %20 = alloca float, align 4 %21 = alloca float, align 4 %22 = alloca i32, align 4 store %2* %0, %2** %12, align 8 store float %1, float* %13, align 4 store float %2, float* %14, align 4 store float %3, float* %15, align 4 store float %4, float* %16, align 4 store float %5, float* %17, align 4 store float %6, float* %18, align 4 store float %7, float* %19, align 4 store float %8, float* %20, align 4 store float %9, float* %21, align 4 store i32 %10, i32* %22, align 4 %23 = load %2*, %2** %12, align 8 %24 = getelementptr inbounds %2, %2* %23, i32 0, i32 0 %25 = getelementptr inbounds [9 x float], [9 x float]* %24, i64 0, i64 0 %26 = load float, float* %13, align 4 store float %26, float* %25, align 4 %27 = getelementptr inbounds float, float* %25, i64 1 %28 = load float, float* %14, align 4 store float %28, float* %27, align 4 %29 = getelementptr inbounds float, float* %27, i64 1 %30 = load float, float* %15, align 4 store float %30, float* %29, align 4 %31 = getelementptr inbounds float, float* %29, i64 1 %32 = load float, float* %16, align 4 store float %32, float* %31, align 4 %33 = getelementptr inbounds float, float* %31, i64 1 %34 = load float, float* %17, align 4 store float %34, float* %33, align 4 %35 = getelementptr inbounds float, float* %33, i64 1 %36 = load float, float* %18, align 4 store float %36, float* %35, align 4 %37 = getelementptr inbounds float, float* %35, i64 1 %38 = load float, float* %19, align 4 store float %38, float* %37, align 4 %39 = getelementptr inbounds float, float* %37, i64 1 %40 = load float, float* %20, align 4 store float %40, float* %39, align 4 %41 = getelementptr inbounds float, float* %39, i64 1 %42 = load float, float* %21, align 4 store float %42, float* %41, align 4 %43 = getelementptr inbounds %2, %2* %23, i32 0, i32 1 %44 = load i32, i32* %22, align 4 store i32 %44, i32* %43, align 4 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @53(i32 noundef %0, i32 noundef %1, i32 noundef %2) #7 { %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 store i32 %0, i32* %4, align 4 store i32 %1, i32* %5, align 4 store i32 %2, i32* %6, align 4 %7 = load i32, i32* %4, align 4 %8 = mul i32 %7, 54 %9 = load i32, i32* %5, align 4 %10 = mul i32 %9, 183 %11 = add i32 %8, %10 %12 = load i32, i32* %6, align 4 %13 = mul i32 %12, 19 %14 = add i32 %11, %13 %15 = lshr i32 %14, 8 ret i32 %15 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZN12SkTMaskGammaILi3ELi3ELi3EE14CanonicalColorEj(i32 noundef %0) #3 comdat align 2 { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 %4 = lshr i32 %3, 16 %5 = and i32 %4, 255 %6 = lshr i32 %5, 5 %7 = call noundef i32 @55(i32 noundef %6) %8 = load i32, i32* %2, align 4 %9 = lshr i32 %8, 8 %10 = and i32 %9, 255 %11 = lshr i32 %10, 5 %12 = call noundef i32 @55(i32 noundef %11) %13 = load i32, i32* %2, align 4 %14 = lshr i32 %13, 0 %15 = and i32 %14, 255 %16 = lshr i32 %15, 5 %17 = call noundef i32 @55(i32 noundef %16) %18 = call noundef i32 @54(i32 noundef 255, i32 noundef %7, i32 noundef %12, i32 noundef %17) ret i32 %18 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @54(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #7 { %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 store i32 %0, i32* %5, align 4 store i32 %1, i32* %6, align 4 store i32 %2, i32* %7, align 4 store i32 %3, i32* %8, align 4 %9 = load i32, i32* %5, align 4 %10 = shl i32 %9, 24 %11 = load i32, i32* %6, align 4 %12 = shl i32 %11, 16 %13 = or i32 %10, %12 %14 = load i32, i32* %7, align 4 %15 = shl i32 %14, 8 %16 = or i32 %13, %15 %17 = load i32, i32* %8, align 4 %18 = shl i32 %17, 0 %19 = or i32 %16, %18 ret i32 %19 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @55(i32 noundef %0) #7 { %2 = alloca i32, align 4 %3 = alloca i32, align 4 %4 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %5 = load i32, i32* %2, align 4 %6 = shl i32 %5, 5 store i32 %6, i32* %2, align 4 %7 = bitcast i32* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %7) #21 store i32 -1431655766, i32* %3, align 4, !annotation !6 %8 = load i32, i32* %2, align 4 store i32 %8, i32* %3, align 4 %9 = bitcast i32* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 -1431655766, i32* %4, align 4, !annotation !6 store i32 3, i32* %4, align 4 br label %10 10: ; preds = %21, %1 %11 = load i32, i32* %4, align 4 %12 = icmp ult i32 %11, 8 br i1 %12, label %15, label %13 13: ; preds = %10 %14 = bitcast i32* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %14) #21 br label %24 15: ; preds = %10 %16 = load i32, i32* %2, align 4 %17 = load i32, i32* %4, align 4 %18 = lshr i32 %16, %17 %19 = load i32, i32* %3, align 4 %20 = or i32 %19, %18 store i32 %20, i32* %3, align 4 br label %21 21: ; preds = %15 %22 = load i32, i32* %4, align 4 %23 = add i32 %22, 3 store i32 %23, i32* %4, align 4 br label %10, !llvm.loop !13 24: ; preds = %13 %25 = load i32, i32* %3, align 4 %26 = bitcast i32* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %26) #21 ret i32 %25 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNSt4__Cr6cbeginI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE5beginfp_EERKT_(%187* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = call noundef %188* @_ZNSt4__Cr5beginI6SkSpanIK10SkGlyphRunEEEDTcldtfp_5beginEERKT_(%187* noundef align 8 dereferenceable(16) %3) ret %188* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNSt4__Cr5beginI6SkSpanIK10SkGlyphRunEEEDTcldtfp_5beginEERKT_(%187* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = call noundef %188* @_ZNK6SkSpanIK10SkGlyphRunE5beginEv(%187* noundef align 8 dereferenceable_or_null(16) %3) ret %188* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNK6SkSpanIK10SkGlyphRunE5beginEv(%187* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = getelementptr inbounds %187, %187* %3, i32 0, i32 0 %5 = load %188*, %188** %4, align 8 ret %188* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNSt4__Cr4cendI6SkSpanIK10SkGlyphRunEEEDTclsr3std4__CrE3endfp_EERKT_(%187* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = call noundef %188* @_ZNSt4__Cr3endI6SkSpanIK10SkGlyphRunEEEDTcldtfp_3endEERKT_(%187* noundef align 8 dereferenceable(16) %3) ret %188* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNSt4__Cr3endI6SkSpanIK10SkGlyphRunEEEDTcldtfp_3endEERKT_(%187* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = call noundef %188* @_ZNK6SkSpanIK10SkGlyphRunE3endEv(%187* noundef align 8 dereferenceable_or_null(16) %3) ret %188* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %188* @_ZNK6SkSpanIK10SkGlyphRunE3endEv(%187* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = getelementptr inbounds %187, %187* %3, i32 0, i32 0 %5 = load %188*, %188** %4, align 8 %6 = getelementptr inbounds %187, %187* %3, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = getelementptr inbounds %188, %188* %5, i64 %7 ret %188* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix13getTranslateXEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 2 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix13getTranslateYEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 5 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix3setEif(%2* noundef align 4 dereferenceable_or_null(40) %0, i32 noundef %1, float noundef %2) #3 comdat align 2 { %4 = alloca %2*, align 8 %5 = alloca i32, align 4 %6 = alloca float, align 4 store %2* %0, %2** %4, align 8 store i32 %1, i32* %5, align 4 store float %2, float* %6, align 4 %7 = load %2*, %2** %4, align 8 %8 = load float, float* %6, align 4 %9 = getelementptr inbounds %2, %2* %7, i32 0, i32 0 %10 = load i32, i32* %5, align 4 %11 = sext i32 %10 to i64 %12 = getelementptr inbounds [9 x float], [9 x float]* %9, i64 0, i64 %11 store float %8, float* %12, align 4 call void @_ZN8SkMatrix11setTypeMaskEi(%2* noundef align 4 dereferenceable_or_null(40) %7, i32 noundef 128) ret %2* %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkMatrix11setTypeMaskEi(%2* noundef align 4 dereferenceable_or_null(40) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %2*, align 8 %4 = alloca i32, align 4 store %2* %0, %2** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %2*, %2** %3, align 8 %6 = load i32, i32* %4, align 4 %7 = getelementptr inbounds %2, %2* %5, i32 0, i32 1 store i32 %6, i32* %7, align 4 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJbN10GrTextBlob3KeyEEEC2IJLm0ELm1EEJbS4_EJEJEJRbRS4_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_(%184* noundef align 4 dereferenceable_or_null(80) %0, i8* noundef align 1 dereferenceable(1) %1, %0* noundef align 4 dereferenceable(76) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %235, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %184*, align 8 %9 = alloca i8*, align 8 %10 = alloca %0*, align 8 store %184* %0, %184** %8, align 8 store i8* %1, i8** %9, align 8 store %0* %2, %0** %10, align 8 %11 = load %184*, %184** %8, align 8 %12 = bitcast %184* %11 to %3* %13 = load i8*, i8** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IRbvEEOT_(%3* noundef align 1 dereferenceable_or_null(1) %12, i8* noundef align 1 dereferenceable(1) %13) #21 %14 = bitcast %184* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 4 %16 = bitcast i8* %15 to %185* %17 = load %0*, %0** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1EN10GrTextBlob3KeyELb0EEC2IRS2_vEEOT_(%185* noundef align 4 dereferenceable_or_null(76) %16, %0* noundef align 4 dereferenceable(76) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IRbvEEOT_(%3* noundef align 1 dereferenceable_or_null(1) %0, i8* noundef align 1 dereferenceable(1) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %3*, align 8 %4 = alloca i8*, align 8 store %3* %0, %3** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %3*, %3** %3, align 8 %6 = getelementptr inbounds %3, %3* %5, i32 0, i32 0 %7 = load i8*, i8** %4, align 8 %8 = load i8, i8* %7, align 1, !range !7 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i8 store i8 %10, i8* %6, align 1 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1EN10GrTextBlob3KeyELb0EEC2IRS2_vEEOT_(%185* noundef align 4 dereferenceable_or_null(76) %0, %0* noundef align 4 dereferenceable(76) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %185*, align 8 %4 = alloca %0*, align 8 store %185* %0, %185** %3, align 8 store %0* %1, %0** %4, align 8 %5 = load %185*, %185** %3, align 8 %6 = getelementptr inbounds %185, %185* %5, i32 0, i32 0 %7 = load %0*, %0** %4, align 8 %8 = bitcast %0* %6 to i8* %9 = bitcast %0* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %8, i8* align 4 %9, i64 76, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @56(i32* noundef align 4 dereferenceable(4) %0) #3 { %2 = alloca i32*, align 8 store i32* %0, i32** %2, align 8 %3 = load i32*, i32** %2, align 8 %4 = load i32, i32* %3, align 4 %5 = icmp ne i32 %4, 0 ret i1 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK8SkMatrix26getPerspectiveTypeMaskOnlyEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 %5 = load i32, i32* %4, align 4 %6 = and i32 %5, 128 %7 = icmp ne i32 %6, 0 br i1 %7, label %8, label %17 8: ; preds = %1 %9 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 %10 = load i32, i32* %9, align 4 %11 = and i32 %10, 64 %12 = icmp ne i32 %11, 0 br i1 %12, label %17, label %13 13: ; preds = %8 %14 = call noundef zeroext i8 @_ZNK8SkMatrix26computePerspectiveTypeMaskEv(%2* noundef align 4 dereferenceable_or_null(40) %3) %15 = zext i8 %14 to i32 %16 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 store i32 %15, i32* %16, align 4 br label %17 17: ; preds = %13, %8, %1 %18 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 %19 = load i32, i32* %18, align 4 %20 = and i32 %19, 15 ret i32 %20 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i8 @_ZNK8SkMatrix26computePerspectiveTypeMaskEv(%2* noundef align 4 dereferenceable_or_null(40)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden <2 x float> @_ZmiRK7SkPointS1_(%5* noundef align 4 dereferenceable(8) %0, %5* noundef align 4 dereferenceable(8) %1) #5 comdat { %3 = alloca %5, align 4 %4 = alloca %5*, align 8 %5 = alloca %5*, align 8 store %5* %0, %5** %4, align 8 store %5* %1, %5** %5, align 8 %6 = getelementptr inbounds %5, %5* %3, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 %8 = getelementptr inbounds %5, %5* %7, i32 0, i32 0 %9 = load float, float* %8, align 4 %10 = load %5*, %5** %5, align 8 %11 = getelementptr inbounds %5, %5* %10, i32 0, i32 0 %12 = load float, float* %11, align 4 %13 = fsub float %9, %12 store float %13, float* %6, align 4 %14 = getelementptr inbounds %5, %5* %3, i32 0, i32 1 %15 = load %5*, %5** %4, align 8 %16 = getelementptr inbounds %5, %5* %15, i32 0, i32 1 %17 = load float, float* %16, align 4 %18 = load %5*, %5** %5, align 8 %19 = getelementptr inbounds %5, %5* %18, i32 0, i32 1 %20 = load float, float* %19, align 4 %21 = fsub float %17, %20 store float %21, float* %14, align 4 %22 = bitcast %5* %3 to <2 x float>* %23 = load <2 x float>, <2 x float>* %22, align 4 ret <2 x float> %23 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix9getScaleXEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 0 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix9getScaleYEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 4 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix8getSkewXEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 1 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK8SkMatrix8getSkewYEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 0 %5 = getelementptr inbounds [9 x float], [9 x float]* %4, i64 0, i64 3 %6 = load float, float* %5, align 4 ret float %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @57(float noundef %0) #7 { %2 = alloca float, align 4 store float %0, float* %2, align 4 %3 = load float, float* %2, align 4 %4 = load float, float* %2, align 4 %5 = call float @llvm.floor.f32(float %4) %6 = fcmp oeq float %3, %5 ret i1 %6 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJb7SkPointEEC2IJbRS1_ELi0EEEDpOT_(%238* noundef align 4 dereferenceable_or_null(12) %0, i8* noundef align 1 dereferenceable(1) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %238*, align 8 %5 = alloca i8*, align 8 %6 = alloca %5*, align 8 %7 = alloca %234, align 1 %8 = alloca %658, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %238* %0, %238** %4, align 8 store i8* %1, i8** %5, align 8 store %5* %2, %5** %6, align 8 %11 = load %238*, %238** %4, align 8 %12 = getelementptr inbounds %238, %238* %11, i32 0, i32 0 %13 = load i8*, i8** %5, align 8 %14 = load %5*, %5** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJb7SkPointEEC2IJLm0ELm1EEJbS3_EJEJEJbRS3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS8_IJDpT2_EEEDpOT3_(%239* noundef align 4 dereferenceable_or_null(12) %12, i8* noundef align 1 dereferenceable(1) %13, %5* noundef align 4 dereferenceable(8) %14) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJb7SkPointEEC2IJLm0ELm1EEJbS3_EJEJEJbRS3_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS8_IJDpT2_EEEDpOT3_(%239* noundef align 4 dereferenceable_or_null(12) %0, i8* noundef align 1 dereferenceable(1) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %658, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %239*, align 8 %9 = alloca i8*, align 8 %10 = alloca %5*, align 8 store %239* %0, %239** %8, align 8 store i8* %1, i8** %9, align 8 store %5* %2, %5** %10, align 8 %11 = load %239*, %239** %8, align 8 %12 = bitcast %239* %11 to %3* %13 = load i8*, i8** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IbvEEOT_(%3* noundef align 1 dereferenceable_or_null(1) %12, i8* noundef align 1 dereferenceable(1) %13) #21 %14 = bitcast %239* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 4 %16 = bitcast i8* %15 to %4* %17 = load %5*, %5** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EEC2IRS1_vEEOT_(%4* noundef align 4 dereferenceable_or_null(8) %16, %5* noundef align 4 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EbLb0EEC2IbvEEOT_(%3* noundef align 1 dereferenceable_or_null(1) %0, i8* noundef align 1 dereferenceable(1) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %3*, align 8 %4 = alloca i8*, align 8 store %3* %0, %3** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %3*, %3** %3, align 8 %6 = getelementptr inbounds %3, %3* %5, i32 0, i32 0 %7 = load i8*, i8** %4, align 8 %8 = load i8, i8* %7, align 1, !range !7 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i8 store i8 %10, i8* %6, align 1 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EEC2IRS1_vEEOT_(%4* noundef align 4 dereferenceable_or_null(8) %0, %5* noundef align 4 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %4*, align 8 %4 = alloca %5*, align 8 store %4* %0, %4** %3, align 8 store %5* %1, %5** %4, align 8 %5 = load %4*, %4** %3, align 8 %6 = getelementptr inbounds %4, %4* %5, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 %8 = bitcast %5* %6 to i8* %9 = bitcast %5* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %8, i8* align 4 %9, i64 8, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr12__tuple_leafILm0EbLb0EE3getEv(%3* noundef align 1 dereferenceable_or_null(1) %0) #3 comdat align 2 { %2 = alloca %3*, align 8 store %3* %0, %3** %2, align 8 %3 = load %3*, %3** %2, align 8 %4 = getelementptr inbounds %3, %3* %3, i32 0, i32 0 ret i8* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1E7SkPointLb0EE3getEv(%4* noundef align 4 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %4*, align 8 store %4* %0, %4** %2, align 8 %3 = load %4*, %4** %2, align 8 %4 = getelementptr inbounds %4, %4* %3, i32 0, i32 0 ret %5* %4 } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN6sktext3gpu10BagOfBytesD1Ev(%11* noundef align 8 dereferenceable_or_null(16)) unnamed_addr #12 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK10SkGlyphRun7runSizeEv(%188* noundef align 8 dereferenceable_or_null(96) %0) #3 comdat align 2 { %2 = alloca %188*, align 8 store %188* %0, %188** %2, align 8 %3 = load %188*, %188** %2, align 8 %4 = getelementptr inbounds %188, %188* %3, i32 0, i32 0 %5 = call noundef i64 @_ZNK5SkZipIJKtK7SkPointEE4sizeEv(%189* noundef align 8 dereferenceable_or_null(24) %4) ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK5SkZipIJKtK7SkPointEE4sizeEv(%189* noundef align 8 dereferenceable_or_null(24) %0) #3 comdat align 2 { %2 = alloca %189*, align 8 store %189* %0, %189** %2, align 8 %3 = load %189*, %189** %2, align 8 %4 = getelementptr inbounds %189, %189* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIK10SkGlyphRunE4sizeEv(%187* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %187*, align 8 store %187* %0, %187** %2, align 8 %3 = load %187*, %187** %2, align 8 %4 = getelementptr inbounds %187, %187* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %7* @_ZNSt4__Cr12__tuple_leafILm0EN6sktext3gpu17SubRunInitializerI10GrTextBlobEELb0EE3getEv(%6* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %6*, align 8 store %6* %0, %6** %2, align 8 %3 = load %6*, %6** %2, align 8 %4 = getelementptr inbounds %6, %6* %3, i32 0, i32 0 ret %7* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm1EiLb0EE3getEv(%8* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %8*, align 8 store %8* %0, %8** %2, align 8 %3 = load %8*, %8** %2, align 8 %4 = getelementptr inbounds %8, %8* %3, i32 0, i32 0 ret i32* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %10* @_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EE3getEv(%9* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %9*, align 8 store %9* %0, %9** %2, align 8 %3 = load %9*, %9** %2, align 8 %4 = getelementptr inbounds %9, %9* %3, i32 0, i32 0 ret %10* %4 } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN6sktext3gpu17SubRunInitializerI10GrTextBlobEEiNS4_15SubRunAllocatorEEED2Ev(%264* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %264*, align 8 store %264* %0, %264** %2, align 8 %3 = load %264*, %264** %2, align 8 %4 = bitcast %264* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 16 %6 = bitcast i8* %5 to %9* call void @_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EED2Ev(%9* noundef align 8 dereferenceable_or_null(16) %6) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm2EN6sktext3gpu15SubRunAllocatorELb0EED2Ev(%9* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %9*, align 8 store %9* %0, %9** %2, align 8 %3 = load %9*, %9** %2, align 8 %4 = getelementptr inbounds %9, %9* %3, i32 0, i32 0 call void @_ZN6sktext3gpu15SubRunAllocatorD2Ev(%10* noundef align 8 dereferenceable_or_null(16) %4) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNSt4__CreqI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEEbRKNS_10unique_ptrIT_T0_EEDn(%16* noundef align 8 dereferenceable(8) %0, i8* %1) #7 comdat { %3 = alloca %16*, align 8 %4 = alloca i8*, align 8 store %16* %0, %16** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %16*, %16** %3, align 8 %6 = call noundef zeroext i1 @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEcvbEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 %7 = xor i1 %6, true ret i1 %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEcvbEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 %4 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %15*, %15** %5, align 8 %7 = icmp ne %15* %6, null ret i1 %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %17*, align 8 store %17* %0, %17** %2, align 8 %3 = load %17*, %17** %2, align 8 %4 = bitcast %17* %3 to %18* %5 = call noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv(%18* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %15** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv(%18* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %18*, align 8 store %18* %0, %18** %2, align 8 %3 = load %18*, %18** %2, align 8 %4 = getelementptr inbounds %18, %18* %3, i32 0, i32 0 ret %15** %4 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZeqRK8SkMatrixS1_(%2* noundef align 4 dereferenceable(40), %2* noundef align 4 dereferenceable(40)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE3getEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 %4 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %15*, %15** %5, align 8 ret %15* %6 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12GrSubRunList8IteratorC2EP8GrSubRun(%267* noundef align 8 dereferenceable_or_null(8) %0, %15* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %267*, align 8 %4 = alloca %15*, align 8 store %267* %0, %267** %3, align 8 store %15* %1, %15** %4, align 8 %5 = load %267*, %267** %3, align 8 %6 = getelementptr inbounds %267, %267* %5, i32 0, i32 0 %7 = load %15*, %15** %4, align 8 store %15* %7, %15** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEdeEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 %4 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %15*, %15** %5, align 8 ret %15* %6 } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkRefCntC2Ev(%529* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %529*, align 8 store %529* %0, %529** %2, align 8 %3 = load %529*, %529** %2, align 8 %4 = bitcast %529* %3 to %657* call void @_ZN12SkRefCntBaseC2Ev(%657* noundef align 8 dereferenceable_or_null(12) %4) %5 = bitcast %529* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTV8SkRefCnt, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %5, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12SkRefCntBaseC2Ev(%657* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 %4 = bitcast %657* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTV12SkRefCntBase, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %4, align 8 %5 = getelementptr inbounds %657, %657* %3, i32 0, i32 1 call void @_ZNSt4__Cr6atomicIiEC2Ei(%22* noundef align 4 dereferenceable_or_null(4) %5, i32 noundef 1) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12SkRefCntBaseD2Ev(%657* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkRefCntD0Ev(%529* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %529*, align 8 store %529* %0, %529** %2, align 8 %3 = load %529*, %529** %2, align 8 call void bitcast (void (%657*)* @_ZN12SkRefCntBaseD2Ev to void (%529*)*)(%529* noundef align 8 dereferenceable_or_null(12) %3) #21 %4 = bitcast %529* %3 to i8* call void @_ZdlPv(i8* noundef %4) #25 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr6atomicIiEC2Ei(%22* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %22*, align 8 %4 = alloca i32, align 4 store %22* %0, %22** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %22*, %22** %3, align 8 %6 = bitcast %22* %5 to %23* %7 = load i32, i32* %4, align 4 call void @_ZNSt4__Cr13__atomic_baseIiLb1EEC2Ei(%23* noundef align 4 dereferenceable_or_null(4) %6, i32 noundef %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12SkRefCntBaseD0Ev(%657* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 call void @_ZN12SkRefCntBaseD2Ev(%657* noundef align 8 dereferenceable_or_null(12) %3) #21 %4 = bitcast %657* %3 to i8* call void @_ZdlPv(i8* noundef %4) #25 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr13__atomic_baseIiLb1EEC2Ei(%23* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %23*, align 8 %4 = alloca i32, align 4 store %23* %0, %23** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %23*, %23** %3, align 8 %6 = bitcast %23* %5 to %24* %7 = load i32, i32* %4, align 4 call void @_ZNSt4__Cr13__atomic_baseIiLb0EEC2Ei(%24* noundef align 4 dereferenceable_or_null(4) %6, i32 noundef %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr13__atomic_baseIiLb0EEC2Ei(%24* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %24*, align 8 %4 = alloca i32, align 4 store %24* %0, %24** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %24*, %24** %3, align 8 %6 = getelementptr inbounds %24, %24* %5, i32 0, i32 0 %7 = load i32, i32* %4, align 4 call void @_ZNSt4__Cr17__cxx_atomic_implIiNS_22__cxx_atomic_base_implIiEEEC2Ei(%25* noundef align 4 dereferenceable_or_null(4) %6, i32 noundef %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__cxx_atomic_implIiNS_22__cxx_atomic_base_implIiEEEC2Ei(%25* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %25*, align 8 %4 = alloca i32, align 4 store %25* %0, %25** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %25*, %25** %3, align 8 %6 = bitcast %25* %5 to %26* %7 = load i32, i32* %4, align 4 call void @_ZNSt4__Cr22__cxx_atomic_base_implIiEC2Ei(%26* noundef align 4 dereferenceable_or_null(4) %6, i32 noundef %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__cxx_atomic_base_implIiEC2Ei(%26* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %26*, align 8 %4 = alloca i32, align 4 store %26* %0, %26** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %26*, %26** %3, align 8 %6 = getelementptr inbounds %26, %26* %5, i32 0, i32 0 %7 = load i32, i32* %4, align 4 store i32 %7, i32* %6, align 4 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN26SkGlyphRunPainterInterfaceD2Ev(%180* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %180*, align 8 store %180* %0, %180** %2, align 8 %3 = load %180*, %180** %2, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN26SkGlyphRunPainterInterfaceD0Ev(%180* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %180*, align 8 store %180* %0, %180** %2, align 8 %3 = load %180*, %180** %2, align 8 call void @llvm.trap() #22 unreachable } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu10BagOfBytesC2EOS1_(%11* noundef align 8 dereferenceable_or_null(16) %0, %11* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %11*, align 8 %4 = alloca %11*, align 8 %5 = alloca i8*, align 8 store %11* %0, %11** %3, align 8 store %11* %1, %11** %4, align 8 %6 = load %11*, %11** %3, align 8 %7 = getelementptr inbounds %11, %11* %6, i32 0, i32 0 %8 = load %11*, %11** %4, align 8 %9 = getelementptr inbounds %11, %11* %8, i32 0, i32 0 %10 = bitcast i8** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %10) #21 store i8* null, i8** %5, align 8 %11 = call noundef i8* @_ZNSt4__Cr8exchangeIPcDnEET_RS2_OT0_(i8** noundef align 8 dereferenceable(8) %9, i8** noundef align 8 dereferenceable(8) %5) %12 = bitcast i8** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 store i8* %11, i8** %7, align 8 %13 = getelementptr inbounds %11, %11* %6, i32 0, i32 1 %14 = load %11*, %11** %4, align 8 %15 = getelementptr inbounds %11, %11* %14, i32 0, i32 1 %16 = load i32, i32* %15, align 8 store i32 %16, i32* %13, align 8 %17 = getelementptr inbounds %11, %11* %6, i32 0, i32 2 %18 = load %11*, %11** %4, align 8 %19 = getelementptr inbounds %11, %11* %18, i32 0, i32 2 %20 = bitcast %12* %17 to i8* %21 = bitcast %12* %19 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %20, i8* align 4 %21, i64 4, i1 false) ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZNSt4__Cr8exchangeIPcDnEET_RS2_OT0_(i8** noundef align 8 dereferenceable(8) %0, i8** noundef align 8 dereferenceable(8) %1) #7 comdat { %3 = alloca i8**, align 8 %4 = alloca i8**, align 8 %5 = alloca i8*, align 8 store i8** %0, i8*** %3, align 8 store i8** %1, i8*** %4, align 8 %6 = bitcast i8** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %6) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %5, align 8, !annotation !6 %7 = load i8**, i8*** %3, align 8 %8 = load i8*, i8** %7, align 8 store i8* %8, i8** %5, align 8 %9 = load i8**, i8*** %4, align 8 %10 = load i8**, i8*** %3, align 8 store i8* null, i8** %10, align 8 %11 = load i8*, i8** %5, align 8 %12 = bitcast i8** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret i8* %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %15* @_ZNKSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEptEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 %4 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %15** @_ZNKSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %15*, %15** %5, align 8 ret %15* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %16* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEaSEOS6_(%16* noundef align 8 dereferenceable_or_null(8) %0, %16* noundef align 8 dereferenceable(8) %1) #3 comdat align 2 { %3 = alloca %16*, align 8 %4 = alloca %16*, align 8 store %16* %0, %16** %3, align 8 store %16* %1, %16** %4, align 8 %5 = load %16*, %16** %3, align 8 %6 = load %16*, %16** %4, align 8 %7 = call noundef %15* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE7releaseEv(%16* noundef align 8 dereferenceable_or_null(8) %6) #21 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5resetEPS1_(%16* noundef align 8 dereferenceable_or_null(8) %5, %15* noundef %7) #21 %8 = load %16*, %16** %4, align 8 %9 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE11get_deleterEv(%16* noundef align 8 dereferenceable_or_null(8) %8) #21 %10 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %11 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE6secondEv(%17* noundef align 8 dereferenceable_or_null(8) %10) #21 ret %16* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5resetEPS1_(%16* noundef align 8 dereferenceable_or_null(8) %0, %15* noundef %1) #3 comdat align 2 { %3 = alloca %16*, align 8 %4 = alloca %15*, align 8 %5 = alloca %15*, align 8 store %16* %0, %16** %3, align 8 store %15* %1, %15** %4, align 8 %6 = load %16*, %16** %3, align 8 %7 = bitcast %15** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %5, align 8, !annotation !6 %8 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %8) #21 %10 = load %15*, %15** %9, align 8 store %15* %10, %15** %5, align 8 %11 = load %15*, %15** %4, align 8 %12 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %13 = call noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %12) #21 store %15* %11, %15** %13, align 8 %14 = load %15*, %15** %5, align 8 %15 = icmp ne %15* %14, null br i1 %15, label %16, label %20 16: ; preds = %2 %17 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %18 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE6secondEv(%17* noundef align 8 dereferenceable_or_null(8) %17) #21 %19 = load %15*, %15** %5, align 8 call void @_ZN6sktext3gpu15SubRunAllocator9DestroyerclI8GrSubRunEEvPT_(%659* noundef align 1 dereferenceable_or_null(1) %18, %15* noundef %19) br label %20 20: ; preds = %16, %2 %21 = bitcast %15** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %21) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %15* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE7releaseEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 %3 = alloca %15*, align 8 store %16* %0, %16** %2, align 8 %4 = load %16*, %16** %2, align 8 %5 = bitcast %15** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %15* inttoptr (i64 -6148914691236517206 to %15*), %15** %3, align 8, !annotation !6 %6 = getelementptr inbounds %16, %16* %4, i32 0, i32 0 %7 = call noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %6) #21 %8 = load %15*, %15** %7, align 8 store %15* %8, %15** %3, align 8 %9 = getelementptr inbounds %16, %16* %4, i32 0, i32 0 %10 = call noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %9) #21 store %15* null, %15** %10, align 8 %11 = load %15*, %15** %3, align 8 %12 = bitcast %15** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret %15* %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE11get_deleterEv(%16* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %16*, align 8 store %16* %0, %16** %2, align 8 %3 = load %16*, %16** %2, align 8 %4 = getelementptr inbounds %16, %16* %3, i32 0, i32 0 %5 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE6secondEv(%17* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %659* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE6secondEv(%17* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %17*, align 8 store %17* %0, %17** %2, align 8 %3 = load %17*, %17** %2, align 8 %4 = bitcast %17* %3 to %660* %5 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EE5__getEv(%660* noundef align 1 dereferenceable_or_null(1) %4) #21 ret %659* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEE5firstEv(%17* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %17*, align 8 store %17* %0, %17** %2, align 8 %3 = load %17*, %17** %2, align 8 %4 = bitcast %17* %3 to %18* %5 = call noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv(%18* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %15** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu15SubRunAllocator9DestroyerclI8GrSubRunEEvPT_(%659* noundef align 1 dereferenceable_or_null(1) %0, %15* noundef %1) #3 comdat align 2 { %3 = alloca %659*, align 8 %4 = alloca %15*, align 8 store %659* %0, %659** %3, align 8 store %15* %1, %15** %4, align 8 %5 = load %659*, %659** %3, align 8 %6 = load %15*, %15** %4, align 8 %7 = bitcast %15* %6 to void (%15*)*** %8 = load void (%15*)**, void (%15*)*** %7, align 8 %9 = getelementptr inbounds void (%15*)*, void (%15*)** %8, i64 0 %10 = load void (%15*)*, void (%15*)** %9, align 8 call void %10(%15* noundef align 8 dereferenceable_or_null(16) %6) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %15** @_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EE5__getEv(%18* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %18*, align 8 store %18* %0, %18** %2, align 8 %3 = load %18*, %18** %2, align 8 %4 = getelementptr inbounds %18, %18* %3, i32 0, i32 0 ret %15** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EE5__getEv(%660* noundef align 1 dereferenceable_or_null(1) %0) #3 comdat align 2 { %2 = alloca %660*, align 8 store %660* %0, %660** %2, align 8 %3 = load %660*, %660** %2, align 8 %4 = bitcast %660* %3 to %659* ret %659* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %539* @58(%10* noundef align 8 dereferenceable_or_null(16) %0, %540* noundef align 8 dereferenceable(192) %1) #3 align 2 { %3 = alloca %536, align 8 %4 = alloca %10*, align 8 %5 = alloca %540*, align 8 %6 = alloca i8*, align 8 store %10* %0, %10** %4, align 8 store %540* %1, %540** %5, align 8 %7 = load %10*, %10** %4, align 8 %8 = bitcast i8** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %6, align 8, !annotation !6 %9 = getelementptr inbounds %10, %10* %7, i32 0, i32 0 %10 = call noundef i8* @63(%11* noundef align 8 dereferenceable_or_null(16) %9, i32 noundef 1) store i8* %10, i8** %6, align 8 %11 = load i8*, i8** %6, align 8 %12 = bitcast i8* %11 to %539* %13 = load %540*, %540** %5, align 8 call void @64(%539* noundef align 8 dereferenceable_or_null(208) %12, %540* noundef align 8 dereferenceable(192) %13) call void @65(%536* noundef align 8 dereferenceable_or_null(8) %3, %539* noundef %12) #21 %14 = bitcast i8** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %14) #21 %15 = getelementptr inbounds %536, %536* %3, i32 0, i32 0 %16 = getelementptr inbounds %537, %537* %15, i32 0, i32 0 %17 = getelementptr inbounds %538, %538* %16, i32 0, i32 0 %18 = load %539*, %539** %17, align 8 ret %539* %18 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @59(%540* noalias sret(%540) align 8 %0, %530* noundef align 8 dereferenceable(24) %1, i1 noundef zeroext %2, float noundef %3, %128* noundef align 4 dereferenceable(12) %4, %10* noundef %5) #3 align 2 { %7 = alloca i8*, align 8 %8 = alloca %530*, align 8 %9 = alloca i8, align 1 %10 = alloca float, align 4 %11 = alloca %128*, align 8 %12 = alloca %10*, align 8 %13 = alloca i32, align 4 %14 = alloca %5*, align 8 %15 = alloca i16*, align 8 %16 = alloca %122, align 8 %17 = alloca %661*, align 8 %18 = alloca %661, align 8 %19 = alloca %664, align 8 %20 = alloca %664, align 8 %21 = alloca %665, align 8 %22 = alloca i64*, align 8 %23 = alloca %96*, align 8 %24 = alloca %5*, align 8 %25 = alloca %664, align 8 %26 = alloca %129, align 8 %27 = alloca %130, align 8 %28 = alloca %122, align 8 %29 = bitcast %540* %0 to i8* store i8* %29, i8** %7, align 8 store %530* %1, %530** %8, align 8 %30 = zext i1 %2 to i8 store i8 %30, i8* %9, align 1 store float %3, float* %10, align 4 store %128* %4, %128** %11, align 8 store %10* %5, %10** %12, align 8 %31 = bitcast i32* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %31) #21 store i32 -1431655766, i32* %13, align 4, !annotation !6 %32 = load %530*, %530** %8, align 8 %33 = call noundef i32 @_Z7SkCountI5SkZipIJ14SkGlyphVariant7SkPointEEEiRKT_(%530* noundef align 8 dereferenceable(24) %32) store i32 %33, i32* %13, align 4 %34 = bitcast %5** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %34) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %14, align 8, !annotation !6 %35 = load %10*, %10** %12, align 8 %36 = load i32, i32* %13, align 4 %37 = call noundef %5* @_ZN6sktext3gpu15SubRunAllocator12makePODArrayI7SkPointEEPT_i(%10* noundef align 8 dereferenceable_or_null(16) %35, i32 noundef %36) store %5* %37, %5** %14, align 8 %38 = bitcast i16** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %38) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %15, align 8, !annotation !6 %39 = load %10*, %10** %12, align 8 %40 = load i32, i32* %13, align 4 %41 = call noundef i16* @_ZN6sktext3gpu15SubRunAllocator12makePODArrayItEEPT_i(%10* noundef align 8 dereferenceable_or_null(16) %39, i32 noundef %40) store i16* %41, i16** %15, align 8 %42 = bitcast %122* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %42) #21 %43 = getelementptr inbounds %122, %122* %16, i32 0, i32 0 %44 = getelementptr inbounds %123, %123* %43, i32 0, i32 0 %45 = getelementptr inbounds %124, %124* %44, i32 0, i32 0 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %45, align 8, !annotation !6 %46 = getelementptr inbounds %123, %123* %43, i32 0, i32 1 %47 = getelementptr inbounds %125, %125* %46, i32 0, i32 0 %48 = getelementptr inbounds %126, %126* %47, i32 0, i32 0 store i32 -1431655766, i32* %48, align 8, !annotation !6 %49 = getelementptr inbounds %123, %123* %43, i32 0, i32 2 %50 = getelementptr inbounds [4 x i8], [4 x i8]* %49, i64 0, i64 0 store i8 -86, i8* %50, align 4, !annotation !6 %51 = getelementptr inbounds [4 x i8], [4 x i8]* %49, i64 0, i64 1 store i8 -86, i8* %51, align 1, !annotation !6 %52 = getelementptr inbounds [4 x i8], [4 x i8]* %49, i64 0, i64 2 store i8 -86, i8* %52, align 2, !annotation !6 %53 = getelementptr inbounds [4 x i8], [4 x i8]* %49, i64 0, i64 3 store i8 -86, i8* %53, align 1, !annotation !6 %54 = load %10*, %10** %12, align 8 %55 = load i32, i32* %13, align 4 %56 = call { %101*, i32 } @_ZN6sktext3gpu15SubRunAllocator15makeUniqueArrayI6SkPathEENSt4__Cr10unique_ptrIA_T_NS1_14ArrayDestroyerEEEi(%10* noundef align 8 dereferenceable_or_null(16) %54, i32 noundef %55) %57 = getelementptr inbounds %122, %122* %16, i32 0, i32 0 %58 = bitcast %123* %57 to { %101*, i32 }* %59 = getelementptr inbounds { %101*, i32 }, { %101*, i32 }* %58, i32 0, i32 0 %60 = extractvalue { %101*, i32 } %56, 0 store %101* %60, %101** %59, align 8 %61 = getelementptr inbounds { %101*, i32 }, { %101*, i32 }* %58, i32 0, i32 1 %62 = extractvalue { %101*, i32 } %56, 1 store i32 %62, i32* %61, align 8 %63 = bitcast %661** %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %63) #21 store %661* inttoptr (i64 -6148914691236517206 to %661*), %661** %17, align 8, !annotation !6 %64 = bitcast %661* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 48, i8* %64) #21 %65 = load %530*, %530** %8, align 8 call void @_Z15SkMakeEnumerateIK5SkZipIJ14SkGlyphVariant7SkPointEENS3_8IteratorEE11SkEnumerateIT0_NSt4__Cr9monostateEERT_(%661* sret(%661) align 8 %18, %530* noundef align 8 dereferenceable(24) %65) store %661* %18, %661** %17, align 8 %66 = bitcast %664* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %66) #21 %67 = getelementptr inbounds %664, %664* %19, i32 0, i32 0 store i64 -6148914691236517206, i64* %67, align 8, !annotation !6 %68 = getelementptr inbounds %664, %664* %19, i32 0, i32 1 %69 = getelementptr inbounds %663, %663* %68, i32 0, i32 0 store %530* inttoptr (i64 -6148914691236517206 to %530*), %530** %69, align 8, !annotation !6 %70 = getelementptr inbounds %663, %663* %68, i32 0, i32 1 store i64 -6148914691236517206, i64* %70, align 8, !annotation !6 %71 = load %661*, %661** %17, align 8 call void @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5beginEv(%664* sret(%664) align 8 %19, %661* noundef align 8 dereferenceable_or_null(48) %71) %72 = bitcast %664* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %72) #21 %73 = getelementptr inbounds %664, %664* %20, i32 0, i32 0 store i64 -6148914691236517206, i64* %73, align 8, !annotation !6 %74 = getelementptr inbounds %664, %664* %20, i32 0, i32 1 %75 = getelementptr inbounds %663, %663* %74, i32 0, i32 0 store %530* inttoptr (i64 -6148914691236517206 to %530*), %530** %75, align 8, !annotation !6 %76 = getelementptr inbounds %663, %663* %74, i32 0, i32 1 store i64 -6148914691236517206, i64* %76, align 8, !annotation !6 %77 = load %661*, %661** %17, align 8 call void @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE3endEv(%664* sret(%664) align 8 %20, %661* noundef align 8 dereferenceable_or_null(48) %77) br label %78 78: ; preds = %125, %6 %79 = call noundef zeroext i1 @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorneERKS8_(%664* noundef align 8 dereferenceable_or_null(24) %19, %664* noundef align 8 dereferenceable(24) %20) br i1 %79, label %85, label %80 80: ; preds = %78 %81 = bitcast %664* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %81) #21 %82 = bitcast %664* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %82) #21 %83 = bitcast %661* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 48, i8* %83) #21 %84 = bitcast %661** %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %84) #21 br label %128 85: ; preds = %78 %86 = bitcast %665* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %86) #21 %87 = getelementptr inbounds %665, %665* %21, i32 0, i32 0 %88 = getelementptr inbounds %666, %666* %87, i32 0, i32 0 %89 = getelementptr inbounds %667, %667* %88, i32 0, i32 0 store i64 -6148914691236517206, i64* %89, align 8, !annotation !6 %90 = getelementptr inbounds %666, %666* %87, i32 0, i32 1 %91 = getelementptr inbounds %668, %668* %90, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %91, align 8, !annotation !6 %92 = getelementptr inbounds %666, %666* %87, i32 0, i32 2 %93 = getelementptr inbounds %669, %669* %92, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %93, align 8, !annotation !6 call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratordeEv(%665* sret(%665) align 8 %21, %664* noundef align 8 dereferenceable_or_null(24) %19) %94 = bitcast i64** %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %94) #21 store i64* inttoptr (i64 -6148914691236517206 to i64*), i64** %22, align 8, !annotation !6 %95 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %21) #21 store i64* %95, i64** %22, align 8 %96 = bitcast %96** %23 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %96) #21 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %23, align 8, !annotation !6 %97 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm1EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %21) #21 store %96* %97, %96** %23, align 8 %98 = bitcast %5** %24 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %98) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %24, align 8, !annotation !6 %99 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm2EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %21) #21 store %5* %99, %5** %24, align 8 %100 = load %5*, %5** %24, align 8 %101 = load %5*, %5** %14, align 8 %102 = load i64*, i64** %22, align 8 %103 = load i64, i64* %102, align 8 %104 = getelementptr inbounds %5, %5* %101, i64 %103 %105 = bitcast %5* %104 to i8* %106 = bitcast %5* %100 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %105, i8* align 4 %106, i64 8, i1 false) %107 = load %96*, %96** %23, align 8 %108 = call noundef %98* @_ZNK14SkGlyphVariant5glyphEv(%96* noundef align 8 dereferenceable_or_null(8) %107) %109 = call noundef zeroext i16 @_ZNK7SkGlyph10getGlyphIDEv(%98* noundef align 8 dereferenceable_or_null(48) %108) %110 = load i16*, i16** %15, align 8 %111 = load i64*, i64** %22, align 8 %112 = load i64, i64* %111, align 8 %113 = getelementptr inbounds i16, i16* %110, i64 %112 store i16 %109, i16* %113, align 2 %114 = load %96*, %96** %23, align 8 %115 = call noundef %98* @_ZNK14SkGlyphVariant5glyphEv(%96* noundef align 8 dereferenceable_or_null(8) %114) %116 = call noundef %101* @_ZNK7SkGlyph4pathEv(%98* noundef align 8 dereferenceable_or_null(48) %115) %117 = load i64*, i64** %22, align 8 %118 = load i64, i64* %117, align 8 %119 = call noundef align 8 dereferenceable(15) %101* @_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEixEm(%122* noundef align 8 dereferenceable_or_null(16) %16, i64 noundef %118) %120 = call noundef align 8 dereferenceable(15) %101* @_ZN6SkPathaSERKS_(%101* noundef align 8 dereferenceable_or_null(15) %119, %101* noundef align 8 dereferenceable(15) %116) %121 = bitcast %5** %24 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %121) #21 %122 = bitcast %96** %23 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %122) #21 %123 = bitcast i64** %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %123) #21 %124 = bitcast %665* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %124) #21 br label %125 125: ; preds = %85 %126 = bitcast %664* %25 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %126) #21 call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorppEv(%664* sret(%664) align 8 %25, %664* noundef align 8 dereferenceable_or_null(24) %19) %127 = bitcast %664* %25 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %127) #21 br label %78 128: ; preds = %80 %129 = load i8, i8* %9, align 1, !range !7 %130 = trunc i8 %129 to i1 %131 = load float, float* %10, align 4 %132 = load %5*, %5** %14, align 8 %133 = load i32, i32* %13, align 4 %134 = call { %5*, i64 } @_Z10SkMakeSpanI7SkPointiE6SkSpanIT_EPS2_T0_(%5* noundef %132, i32 noundef %133) %135 = bitcast %129* %26 to { %5*, i64 }* %136 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %135, i32 0, i32 0 %137 = extractvalue { %5*, i64 } %134, 0 store %5* %137, %5** %136, align 8 %138 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %135, i32 0, i32 1 %139 = extractvalue { %5*, i64 } %134, 1 store i64 %139, i64* %138, align 8 %140 = load i16*, i16** %15, align 8 %141 = load i32, i32* %13, align 4 %142 = call { i16*, i64 } @_Z10SkMakeSpanItiE6SkSpanIT_EPS1_T0_(i16* noundef %140, i32 noundef %141) %143 = bitcast %130* %27 to { i16*, i64 }* %144 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %143, i32 0, i32 0 %145 = extractvalue { i16*, i64 } %142, 0 store i16* %145, i16** %144, align 8 %146 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %143, i32 0, i32 1 %147 = extractvalue { i16*, i64 } %142, 1 store i64 %147, i64* %146, align 8 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2EOS7_(%122* noundef align 8 dereferenceable_or_null(16) %28, %122* noundef align 8 dereferenceable(16) %16) #21 %148 = load %128*, %128** %11, align 8 %149 = bitcast %129* %26 to { %5*, i64 }* %150 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %149, i32 0, i32 0 %151 = load %5*, %5** %150, align 8 %152 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %149, i32 0, i32 1 %153 = load i64, i64* %152, align 8 %154 = bitcast %130* %27 to { i16*, i64 }* %155 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %154, i32 0, i32 0 %156 = load i16*, i16** %155, align 8 %157 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %154, i32 0, i32 1 %158 = load i64, i64* %157, align 8 call void @83(%540* noundef align 8 dereferenceable_or_null(192) %0, i1 noundef zeroext %130, float noundef %131, %5* %151, i64 %153, i16* %156, i64 %158, %122* noundef byval(%122) align 8 %28, %128* noundef align 4 dereferenceable(12) %148) call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEED2Ev(%122* noundef align 8 dereferenceable_or_null(16) %16) #21 %159 = bitcast %122* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %159) #21 %160 = bitcast i16** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %160) #21 %161 = bitcast %5** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %161) #21 %162 = bitcast i32* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %162) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @60(%16* noundef align 8 dereferenceable_or_null(8) %0, %536* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 { %3 = alloca %16*, align 8 %4 = alloca %536*, align 8 %5 = alloca %539*, align 8 store %16* %0, %16** %3, align 8 store %536* %1, %536** %4, align 8 %6 = load %16*, %16** %3, align 8 %7 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %8 = bitcast %539** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #21 %9 = load %536*, %536** %4, align 8 %10 = call noundef %539* @84(%536* noundef align 8 dereferenceable_or_null(8) %9) #21 store %539* %10, %539** %5, align 8 %11 = load %536*, %536** %4, align 8 %12 = call noundef align 1 dereferenceable(1) %659* @85(%536* noundef align 8 dereferenceable_or_null(8) %11) #21 call void @86(%17* noundef align 8 dereferenceable_or_null(8) %7, %539** noundef align 8 dereferenceable(8) %5, %659* noundef align 1 dereferenceable(1) %12) %13 = bitcast %539** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @61(%536* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 align 2 { %2 = alloca %536*, align 8 store %536* %0, %536** %2, align 8 %3 = load %536*, %536** %2, align 8 call void @91(%536* noundef align 8 dereferenceable_or_null(8) %3, %539* noundef null) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @62(%540* noundef align 8 dereferenceable_or_null(192) %0) unnamed_addr #10 align 2 { %2 = alloca %540*, align 8 store %540* %0, %540** %2, align 8 %3 = load %540*, %540** %2, align 8 %4 = getelementptr inbounds %540, %540* %3, i32 0, i32 5 call void @_ZN16SkAutoDescriptorD1Ev(%127* noundef align 8 dereferenceable_or_null(132) %4) #21 %5 = getelementptr inbounds %540, %540* %3, i32 0, i32 4 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEED2Ev(%122* noundef align 8 dereferenceable_or_null(16) %5) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i8* @63(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %670, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 10324420, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %670* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 10324420 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @66(%670* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %670* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 208 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 8) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @64(%539* noundef align 8 dereferenceable_or_null(208) %0, %540* noundef align 8 dereferenceable(192) %1) unnamed_addr #0 align 2 { %3 = alloca %539*, align 8 %4 = alloca %540*, align 8 store %539* %0, %539** %3, align 8 store %540* %1, %540** %4, align 8 %5 = load %539*, %539** %3, align 8 %6 = bitcast %539* %5 to %15* call void @_ZN8GrSubRunC2Ev(%15* noundef align 8 dereferenceable_or_null(16) %6) #21 %7 = bitcast %539* %5 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [11 x i8*] }, { [11 x i8*] }* @12, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %7, align 8 %8 = getelementptr inbounds %539, %539* %5, i32 0, i32 1 %9 = load %540*, %540** %4, align 8 call void @67(%540* noundef align 8 dereferenceable_or_null(192) %8, %540* noundef align 8 dereferenceable(192) %9) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @65(%536* noundef align 8 dereferenceable_or_null(8) %0, %539* noundef %1) unnamed_addr #0 align 2 { %3 = alloca %536*, align 8 %4 = alloca %539*, align 8 %5 = alloca %656, align 1 store %536* %0, %536** %3, align 8 store %539* %1, %539** %4, align 8 %6 = load %536*, %536** %3, align 8 %7 = getelementptr inbounds %536, %536* %6, i32 0, i32 0 %8 = bitcast %656* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 call void @81(%537* noundef align 8 dereferenceable_or_null(8) %7, %539** noundef align 8 dereferenceable(8) %4, %656* noundef align 1 dereferenceable(1) %5) %9 = bitcast %656* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @66(%670* noundef align 1 dereferenceable_or_null(1) %0) #7 align 2 { %2 = alloca %670*, align 8 store %670* %0, %670** %2, align 8 %3 = load %670*, %670** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1, i32 noundef %2) #3 comdat align 2 { %4 = alloca %11*, align 8 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i8*, align 8 store %11* %0, %11** %4, align 8 store i32 %1, i32* %5, align 4 store i32 %2, i32* %6, align 4 %8 = load %11*, %11** %4, align 8 %9 = getelementptr inbounds %11, %11* %8, i32 0, i32 1 %10 = load i32, i32* %9, align 8 %11 = load i32, i32* %6, align 4 %12 = sub nsw i32 0, %11 %13 = and i32 %10, %12 %14 = getelementptr inbounds %11, %11* %8, i32 0, i32 1 store i32 %13, i32* %14, align 8 %15 = getelementptr inbounds %11, %11* %8, i32 0, i32 1 %16 = load i32, i32* %15, align 8 %17 = load i32, i32* %5, align 4 %18 = icmp slt i32 %16, %17 br i1 %18, label %19, label %22 19: ; preds = %3 %20 = load i32, i32* %5, align 4 %21 = load i32, i32* %6, align 4 call void @_ZN6sktext3gpu10BagOfBytes13needMoreBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %20, i32 noundef %21) br label %22 22: ; preds = %19, %3 %23 = bitcast i8** %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %23) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %7, align 8, !annotation !6 %24 = getelementptr inbounds %11, %11* %8, i32 0, i32 0 %25 = load i8*, i8** %24, align 8 %26 = getelementptr inbounds %11, %11* %8, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %28 = sext i32 %27 to i64 %29 = sub i64 0, %28 %30 = getelementptr inbounds i8, i8* %25, i64 %29 store i8* %30, i8** %7, align 8 %31 = load i32, i32* %5, align 4 %32 = getelementptr inbounds %11, %11* %8, i32 0, i32 1 %33 = load i32, i32* %32, align 8 %34 = sub nsw i32 %33, %31 store i32 %34, i32* %32, align 8 %35 = load i8*, i8** %7, align 8 %36 = bitcast i8** %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %36) #21 ret i8* %35 } ; Function Attrs: null_pointer_is_valid declare void @_ZN6sktext3gpu10BagOfBytes13needMoreBytesEii(%11* noundef align 8 dereferenceable_or_null(16), i32 noundef, i32 noundef) #8 ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8GrSubRunC2Ev(%15* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %15*, align 8 store %15* %0, %15** %2, align 8 %3 = load %15*, %15** %2, align 8 %4 = bitcast %15* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [11 x i8*] }, { [11 x i8*] }* @_ZTV8GrSubRun, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %4, align 8 %5 = getelementptr inbounds %15, %15* %3, i32 0, i32 1 call void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %5) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @67(%540* noundef align 8 dereferenceable_or_null(192) %0, %540* noundef align 8 dereferenceable(192) %1) unnamed_addr #10 align 2 { %3 = alloca %540*, align 8 %4 = alloca %540*, align 8 store %540* %0, %540** %3, align 8 store %540* %1, %540** %4, align 8 %5 = load %540*, %540** %3, align 8 %6 = getelementptr inbounds %540, %540* %5, i32 0, i32 0 %7 = load %540*, %540** %4, align 8 %8 = getelementptr inbounds %540, %540* %7, i32 0, i32 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %8, i64 40, i1 false) %9 = getelementptr inbounds %540, %540* %5, i32 0, i32 4 %10 = load %540*, %540** %4, align 8 %11 = getelementptr inbounds %540, %540* %10, i32 0, i32 4 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2EOS7_(%122* noundef align 8 dereferenceable_or_null(16) %9, %122* noundef align 8 dereferenceable(16) %11) #21 %12 = getelementptr inbounds %540, %540* %5, i32 0, i32 5 %13 = load %540*, %540** %4, align 8 %14 = getelementptr inbounds %540, %540* %13, i32 0, i32 5 call void @_ZN16SkAutoDescriptorC1ERKS_(%127* noundef align 8 dereferenceable_or_null(132) %12, %127* noundef align 8 dereferenceable(132) %14) ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @68(%539* noundef align 8 dereferenceable_or_null(208) %0) unnamed_addr #10 align 2 { %2 = alloca %539*, align 8 store %539* %0, %539** %2, align 8 %3 = load %539*, %539** %2, align 8 %4 = getelementptr inbounds %539, %539* %3, i32 0, i32 1 call void @62(%540* noundef align 8 dereferenceable_or_null(192) %4) #21 %5 = bitcast %539* %3 to %15* call void @_ZN8GrSubRunD2Ev(%15* noundef align 8 dereferenceable_or_null(16) %5) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @69(%539* noundef align 8 dereferenceable_or_null(208) %0) unnamed_addr #10 align 2 { %2 = alloca %539*, align 8 store %539* %0, %539** %2, align 8 %3 = load %539*, %539** %2, align 8 call void @68(%539* noundef align 8 dereferenceable_or_null(208) %3) #21 %4 = bitcast %539* %3 to i8* call void @_ZdlPv(i8* noundef %4) #25 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @70(%539* noundef align 8 dereferenceable_or_null(208) %0, %268* noundef %1, %294* noundef %2, %13* noundef align 4 dereferenceable(105) %3, <2 x float> %4, %73* noundef align 8 dereferenceable(76) %5, %295* noundef %6) unnamed_addr #5 align 2 { %8 = alloca %5, align 4 %9 = alloca %539*, align 8 %10 = alloca %268*, align 8 %11 = alloca %294*, align 8 %12 = alloca %13*, align 8 %13 = alloca %73*, align 8 %14 = alloca %295*, align 8 %15 = alloca %5, align 4 %16 = bitcast %5* %8 to <2 x float>* store <2 x float> %4, <2 x float>* %16, align 4 store %539* %0, %539** %9, align 8 store %268* %1, %268** %10, align 8 store %294* %2, %294** %11, align 8 store %13* %3, %13** %12, align 8 store %73* %5, %73** %13, align 8 store %295* %6, %295** %14, align 8 %17 = load %539*, %539** %9, align 8 %18 = getelementptr inbounds %539, %539* %17, i32 0, i32 1 %19 = load %268*, %268** %10, align 8 %20 = load %294*, %294** %11, align 8 %21 = load %13*, %13** %12, align 8 %22 = bitcast %5* %15 to i8* %23 = bitcast %5* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %22, i8* align 4 %23, i64 8, i1 false) %24 = load %73*, %73** %13, align 8 %25 = load %295*, %295** %14, align 8 %26 = bitcast %5* %15 to <2 x float>* %27 = load <2 x float>, <2 x float>* %26, align 4 call void @76(%540* noundef align 8 dereferenceable_or_null(192) %18, %268* noundef %19, %294* noundef %20, %13* noundef align 4 dereferenceable(105) %21, <2 x float> %27, %73* noundef align 8 dereferenceable(76) %24, %295* noundef %25) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @71(%539* noundef align 8 dereferenceable_or_null(208) %0) unnamed_addr #3 align 2 { %2 = alloca %539*, align 8 store %539* %0, %539** %2, align 8 %3 = load %539*, %539** %2, align 8 %4 = getelementptr inbounds %539, %539* %3, i32 0, i32 1 %5 = call noundef i32 @79(%540* noundef align 8 dereferenceable_or_null(192) %4) %6 = sext i32 %5 to i64 %7 = add i64 208, %6 %8 = trunc i64 %7 to i32 ret i32 %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @72(%539* noundef align 8 dereferenceable_or_null(208) %0, %73* noundef align 8 dereferenceable(76) %1, %2* noundef align 4 dereferenceable(40) %2) unnamed_addr #3 align 2 { %4 = alloca %539*, align 8 %5 = alloca %73*, align 8 %6 = alloca %2*, align 8 store %539* %0, %539** %4, align 8 store %73* %1, %73** %5, align 8 store %2* %2, %2** %6, align 8 %7 = load %539*, %539** %4, align 8 ret i1 true } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %528* @73(%539* noundef align 8 dereferenceable_or_null(208) %0) unnamed_addr #3 align 2 { %2 = alloca %539*, align 8 store %539* %0, %539** %2, align 8 %3 = load %539*, %539** %2, align 8 ret %528* null } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @74(%539* noundef align 8 dereferenceable_or_null(208) %0) unnamed_addr #3 align 2 { %2 = alloca %539*, align 8 store %539* %0, %539** %2, align 8 %3 = load %539*, %539** %2, align 8 ret i32 4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @75(%539* noundef align 8 dereferenceable_or_null(208) %0, %601* noundef align 8 dereferenceable(56) %1) unnamed_addr #3 align 2 { %3 = alloca %539*, align 8 %4 = alloca %601*, align 8 store %539* %0, %539** %3, align 8 store %601* %1, %601** %4, align 8 %5 = load %539*, %539** %3, align 8 %6 = getelementptr inbounds %539, %539* %5, i32 0, i32 1 %7 = load %601*, %601** %4, align 8 call void @80(%540* noundef align 8 dereferenceable_or_null(192) %6, %601* noundef align 8 dereferenceable(56) %7) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2ILb1EvEEv(%16* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %16*, align 8 %3 = alloca %15*, align 8 %4 = alloca %656, align 1 store %16* %0, %16** %2, align 8 %5 = load %16*, %16** %2, align 8 %6 = getelementptr inbounds %16, %16* %5, i32 0, i32 0 %7 = bitcast %15** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %15* null, %15** %3, align 8 %8 = bitcast %656* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 call void @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%17* noundef align 8 dereferenceable_or_null(8) %6, %15** noundef align 8 dereferenceable(8) %3, %656* noundef align 1 dereferenceable(1) %4) %9 = bitcast %656* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 %10 = bitcast %15** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP8GrSubRunN6sktext3gpu15SubRunAllocator9DestroyerEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%17* noundef align 8 dereferenceable_or_null(8) %0, %15** noundef align 8 dereferenceable(8) %1, %656* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %17*, align 8 %5 = alloca %15**, align 8 %6 = alloca %656*, align 8 %7 = alloca %656, align 1 store %17* %0, %17** %4, align 8 store %15** %1, %15*** %5, align 8 store %656* %2, %656** %6, align 8 %8 = load %17*, %17** %4, align 8 %9 = bitcast %17* %8 to %18* %10 = load %15**, %15*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EEC2IS2_vEEOT_(%18* noundef align 8 dereferenceable_or_null(8) %9, %15** noundef align 8 dereferenceable(8) %10) %11 = bitcast %17* %8 to %660* %12 = load %656*, %656** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2ENS_18__default_init_tagE(%660* noundef align 1 dereferenceable_or_null(1) %11) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP8GrSubRunLi0ELb0EEC2IS2_vEEOT_(%18* noundef align 8 dereferenceable_or_null(8) %0, %15** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %18*, align 8 %4 = alloca %15**, align 8 store %18* %0, %18** %3, align 8 store %15** %1, %15*** %4, align 8 %5 = load %18*, %18** %3, align 8 %6 = getelementptr inbounds %18, %18* %5, i32 0, i32 0 %7 = load %15**, %15*** %4, align 8 %8 = load %15*, %15** %7, align 8 store %15* %8, %15** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2ENS_18__default_init_tagE(%660* noundef align 1 dereferenceable_or_null(1) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %656, align 1 %3 = alloca %660*, align 8 store %660* %0, %660** %3, align 8 %4 = load %660*, %660** %3, align 8 %5 = bitcast %660* %4 to %659* ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2EOS7_(%122* noundef align 8 dereferenceable_or_null(16) %0, %122* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %122*, align 8 %4 = alloca %122*, align 8 %5 = alloca %101*, align 8 store %122* %0, %122** %3, align 8 store %122* %1, %122** %4, align 8 %6 = load %122*, %122** %3, align 8 %7 = getelementptr inbounds %122, %122* %6, i32 0, i32 0 %8 = bitcast %101** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #21 %9 = load %122*, %122** %4, align 8 %10 = call noundef %101* @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE7releaseEv(%122* noundef align 8 dereferenceable_or_null(16) %9) #21 store %101* %10, %101** %5, align 8 %11 = load %122*, %122** %4, align 8 %12 = call noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE11get_deleterEv(%122* noundef align 8 dereferenceable_or_null(16) %11) #21 call void @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IS2_S6_EEOT_OT0_(%123* noundef align 8 dereferenceable_or_null(12) %7, %101** noundef align 8 dereferenceable(8) %5, %126* noundef align 4 dereferenceable(4) %12) %13 = bitcast %101** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #21 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN16SkAutoDescriptorC1ERKS_(%127* noundef align 8 dereferenceable_or_null(132), %127* noundef align 8 dereferenceable(132)) unnamed_addr #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %101* @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE7releaseEv(%122* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %122*, align 8 %3 = alloca %101*, align 8 store %122* %0, %122** %2, align 8 %4 = load %122*, %122** %2, align 8 %5 = bitcast %101** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %3, align 8, !annotation !6 %6 = getelementptr inbounds %122, %122* %4, i32 0, i32 0 %7 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %6) #21 %8 = load %101*, %101** %7, align 8 store %101* %8, %101** %3, align 8 %9 = getelementptr inbounds %122, %122* %4, i32 0, i32 0 %10 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %9) #21 store %101* null, %101** %10, align 8 %11 = load %101*, %101** %3, align 8 %12 = bitcast %101** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret %101* %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE11get_deleterEv(%122* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %122*, align 8 store %122* %0, %122** %2, align 8 %3 = load %122*, %122** %2, align 8 %4 = getelementptr inbounds %122, %122* %3, i32 0, i32 0 %5 = call noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE6secondEv(%123* noundef align 8 dereferenceable_or_null(12) %4) #21 ret %126* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IS2_S6_EEOT_OT0_(%123* noundef align 8 dereferenceable_or_null(12) %0, %101** noundef align 8 dereferenceable(8) %1, %126* noundef align 4 dereferenceable(4) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %123*, align 8 %5 = alloca %101**, align 8 %6 = alloca %126*, align 8 store %123* %0, %123** %4, align 8 store %101** %1, %101*** %5, align 8 store %126* %2, %126** %6, align 8 %7 = load %123*, %123** %4, align 8 %8 = bitcast %123* %7 to %124* %9 = load %101**, %101*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IS2_vEEOT_(%124* noundef align 8 dereferenceable_or_null(8) %8, %101** noundef align 8 dereferenceable(8) %9) %10 = bitcast %123* %7 to i8* %11 = getelementptr inbounds i8, i8* %10, i64 8 %12 = bitcast i8* %11 to %125* %13 = load %126*, %126** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EEC2IS4_vEEOT_(%125* noundef align 4 dereferenceable_or_null(4) %12, %126* noundef align 4 dereferenceable(4) %13) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %0) #3 comdat align 2 { %2 = alloca %123*, align 8 store %123* %0, %123** %2, align 8 %3 = load %123*, %123** %2, align 8 %4 = bitcast %123* %3 to %124* %5 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv(%124* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %101** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv(%124* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %124*, align 8 store %124* %0, %124** %2, align 8 %3 = load %124*, %124** %2, align 8 %4 = getelementptr inbounds %124, %124* %3, i32 0, i32 0 ret %101** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE6secondEv(%123* noundef align 8 dereferenceable_or_null(12) %0) #3 comdat align 2 { %2 = alloca %123*, align 8 store %123* %0, %123** %2, align 8 %3 = load %123*, %123** %2, align 8 %4 = bitcast %123* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 8 %6 = bitcast i8* %5 to %125* %7 = call noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EE5__getEv(%125* noundef align 4 dereferenceable_or_null(4) %6) #21 ret %126* %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EE5__getEv(%125* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %125*, align 8 store %125* %0, %125** %2, align 8 %3 = load %125*, %125** %2, align 8 %4 = getelementptr inbounds %125, %125* %3, i32 0, i32 0 ret %126* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IS2_vEEOT_(%124* noundef align 8 dereferenceable_or_null(8) %0, %101** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %124*, align 8 %4 = alloca %101**, align 8 store %124* %0, %124** %3, align 8 store %101** %1, %101*** %4, align 8 %5 = load %124*, %124** %3, align 8 %6 = getelementptr inbounds %124, %124* %5, i32 0, i32 0 %7 = load %101**, %101*** %4, align 8 %8 = load %101*, %101** %7, align 8 store %101* %8, %101** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EEC2IS4_vEEOT_(%125* noundef align 4 dereferenceable_or_null(4) %0, %126* noundef align 4 dereferenceable(4) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %125*, align 8 %4 = alloca %126*, align 8 store %125* %0, %125** %3, align 8 store %126* %1, %126** %4, align 8 %5 = load %125*, %125** %3, align 8 %6 = getelementptr inbounds %125, %125* %5, i32 0, i32 0 %7 = load %126*, %126** %4, align 8 %8 = bitcast %126* %6 to i8* %9 = bitcast %126* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %8, i8* align 4 %9, i64 4, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @76(%540* noundef align 8 dereferenceable_or_null(192) %0, %268* noundef %1, %294* noundef %2, %13* noundef align 4 dereferenceable(105) %3, <2 x float> %4, %73* noundef align 8 dereferenceable(76) %5, %295* noundef %6) #5 align 2 { %8 = alloca %5, align 4 %9 = alloca %540*, align 8 %10 = alloca %268*, align 8 %11 = alloca %294*, align 8 %12 = alloca %13*, align 8 %13 = alloca %73*, align 8 %14 = alloca %295*, align 8 %15 = alloca %73, align 8 %16 = alloca %232*, align 8 %17 = alloca %2, align 4 %18 = alloca %671, align 8 %19 = alloca i8, align 1 %20 = alloca %1, align 4 %21 = alloca %79, align 8 %22 = alloca %674*, align 8 %23 = alloca %674, align 8 %24 = alloca %101*, align 8 %25 = alloca %678, align 8 %26 = alloca %678, align 8 %27 = alloca %679, align 8 %28 = alloca %101*, align 8 %29 = alloca %5*, align 8 %30 = alloca %2, align 4 %31 = alloca %683, align 8 %32 = alloca %674*, align 8 %33 = alloca %674, align 8 %34 = alloca %101*, align 8 %35 = alloca %678, align 8 %36 = alloca %678, align 8 %37 = alloca %679, align 8 %38 = alloca %101*, align 8 %39 = alloca %5*, align 8 %40 = alloca %2, align 4 %41 = alloca %101, align 8 %42 = bitcast %5* %8 to <2 x float>* store <2 x float> %4, <2 x float>* %42, align 4 store %540* %0, %540** %9, align 8 store %268* %1, %268** %10, align 8 store %294* %2, %294** %11, align 8 store %13* %3, %13** %12, align 8 store %73* %5, %73** %13, align 8 store %295* %6, %295** %14, align 8 %43 = load %540*, %540** %9, align 8 %44 = bitcast %73* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 80, i8* %44) #21 %45 = bitcast %73* %15 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %45, i8* align 8 bitcast (%73* @13 to i8*), i64 80, i1 false), !annotation !6 %46 = load %73*, %73** %13, align 8 call void @_ZN7SkPaintC1ERKS_(%73* noundef align 8 dereferenceable_or_null(76) %15, %73* noundef align 8 dereferenceable(76) %46) %47 = getelementptr inbounds %540, %540* %43, i32 0, i32 0 %48 = load i8, i8* %47, align 8, !range !7 %49 = trunc i8 %48 to i1 call void @_ZN7SkPaint12setAntiAliasEb(%73* noundef align 8 dereferenceable_or_null(76) %15, i1 noundef zeroext %49) %50 = bitcast %232** %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %50) #21 store %232* inttoptr (i64 -6148914691236517206 to %232*), %232** %16, align 8, !annotation !6 %51 = call noundef %80* @_ZNK7SkPaint13getMaskFilterEv(%73* noundef align 8 dereferenceable_or_null(76) %15) %52 = call noundef %232* @_Z6as_MFBP12SkMaskFilter(%80* noundef %51) store %232* %52, %232** %16, align 8 %53 = bitcast %2* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %53) #21 %54 = getelementptr inbounds %2, %2* %17, i32 0, i32 0 %55 = bitcast [9 x float]* %54 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %55, i8 -1, i64 36, i1 false), !annotation !6 %56 = getelementptr inbounds %2, %2* %17, i32 0, i32 1 store i32 -1431655766, i32* %56, align 4, !annotation !6 %57 = getelementptr inbounds %540, %540* %43, i32 0, i32 1 %58 = load float, float* %57, align 4 %59 = getelementptr inbounds %540, %540* %43, i32 0, i32 1 %60 = load float, float* %59, align 4 call void @_ZN8SkMatrix5ScaleEff(%2* sret(%2) align 4 %17, float noundef %58, float noundef %60) %61 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %8) %62 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %8) %63 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13postTranslateEff(%2* noundef align 4 dereferenceable_or_null(40) %17, float noundef %61, float noundef %62) %64 = bitcast %671* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 64, i8* %64) #21 %65 = bitcast %671* %18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %65, i8* align 8 bitcast ({ %90, %74, { i32, float, { i32, [4 x i8], float*, [16 x i8] } } }* @14 to i8*), i64 64, i1 false), !annotation !6 call void @_ZN7GrStyleC2ERK7SkPaint(%671* noundef align 8 dereferenceable_or_null(64) %18, %73* noundef align 8 dereferenceable(76) %15) call void @llvm.lifetime.start.p0i8(i64 1, i8* %19) #21 store i8 -86, i8* %19, align 1, !annotation !6 %66 = call noundef %78* @_ZNK7SkPaint9getShaderEv(%73* noundef align 8 dereferenceable_or_null(76) %15) %67 = icmp ne %78* %66, null br i1 %67, label %83, label %68 68: ; preds = %7 %69 = call noundef zeroext i1 @_ZNK7GrStyle7appliesEv(%671* noundef align 8 dereferenceable_or_null(64) %18) br i1 %69, label %83, label %70 70: ; preds = %68 %71 = load %232*, %232** %16, align 8 %72 = icmp ne %232* %71, null br i1 %72, label %73, label %81 73: ; preds = %70 %74 = load %232*, %232** %16, align 8 %75 = bitcast %232* %74 to i1 (%232*, %1*)*** %76 = load i1 (%232*, %1*)**, i1 (%232*, %1*)*** %75, align 8 %77 = getelementptr inbounds i1 (%232*, %1*)*, i1 (%232*, %1*)** %76, i64 13 %78 = load i1 (%232*, %1*)*, i1 (%232*, %1*)** %77, align 8 %79 = call noundef zeroext i1 %78(%232* noundef align 8 dereferenceable_or_null(12) %74, %1* noundef null) %80 = xor i1 %79, true br label %81 81: ; preds = %73, %70 %82 = phi i1 [ false, %70 ], [ %80, %73 ] br label %83 83: ; preds = %81, %68, %7 %84 = phi i1 [ true, %68 ], [ true, %7 ], [ %82, %81 ] %85 = zext i1 %84 to i8 store i8 %85, i8* %19, align 1 %86 = load i8, i8* %19, align 1, !range !7 %87 = trunc i8 %86 to i1 br i1 %87, label %182, label %88 88: ; preds = %83 %89 = bitcast %1* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %89) #21 %90 = getelementptr inbounds %1, %1* %20, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %90, align 4, !annotation !6 %91 = getelementptr inbounds %1, %1* %20, i32 0, i32 1 store i32 -1431655766, i32* %91, align 4, !annotation !6 %92 = load %232*, %232** %16, align 8 %93 = icmp ne %232* %92, null br i1 %93, label %94, label %109 94: ; preds = %88 %95 = load %232*, %232** %16, align 8 %96 = bitcast %232* %95 to i1 (%232*, %1*)*** %97 = load i1 (%232*, %1*)**, i1 (%232*, %1*)*** %96, align 8 %98 = getelementptr inbounds i1 (%232*, %1*)*, i1 (%232*, %1*)** %97, i64 13 %99 = load i1 (%232*, %1*)*, i1 (%232*, %1*)** %98, align 8 %100 = call noundef zeroext i1 %99(%232* noundef align 8 dereferenceable_or_null(12) %95, %1* noundef %20) br i1 %100, label %101, label %109 101: ; preds = %94 %102 = getelementptr inbounds %1, %1* %20, i32 0, i32 1 %103 = load i32, i32* %102, align 4 %104 = getelementptr inbounds %1, %1* %20, i32 0, i32 0 %105 = load float, float* %104, align 4 %106 = getelementptr inbounds %540, %540* %43, i32 0, i32 1 %107 = load float, float* %106, align 4 %108 = fdiv float %105, %107 call void @_ZN12SkMaskFilter8MakeBlurE11SkBlurStylefb(%79* sret(%79) align 8 %21, i32 noundef %103, float noundef %108, i1 noundef zeroext true) call void @_ZN7SkPaint13setMaskFilterE5sk_spI12SkMaskFilterE(%73* noundef align 8 dereferenceable_or_null(76) %15, %79* noundef %21) call void @_ZN5sk_spI12SkMaskFilterED2Ev(%79* noundef align 8 dereferenceable_or_null(8) %21) #21 br label %109 109: ; preds = %101, %94, %88 %110 = bitcast %674** %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %110) #21 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %22, align 8, !annotation !6 %111 = bitcast %674* %23 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %111) #21 %112 = bitcast %101** %24 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %112) #21 %113 = getelementptr inbounds %540, %540* %43, i32 0, i32 4 %114 = call noundef %101* @_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE3getEv(%122* noundef align 8 dereferenceable_or_null(16) %113) #21 store %101* %114, %101** %24, align 8 %115 = getelementptr inbounds %540, %540* %43, i32 0, i32 2 call void @_Z9SkMakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEDaDpOT_(%674* sret(%674) align 8 %23, %101** noundef align 8 dereferenceable(8) %24, %120* noundef align 8 dereferenceable(16) %115) %116 = bitcast %101** %24 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %116) #21 store %674* %23, %674** %22, align 8 %117 = bitcast %678* %25 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %117) #21 %118 = getelementptr inbounds %678, %678* %25, i32 0, i32 0 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %118, align 8, !annotation !6 %119 = getelementptr inbounds %678, %678* %25, i32 0, i32 1 store i64 -6148914691236517206, i64* %119, align 8, !annotation !6 %120 = load %674*, %674** %22, align 8 call void @_ZNK5SkZipIJ6SkPathK7SkPointEE5beginEv(%678* sret(%678) align 8 %25, %674* noundef align 8 dereferenceable_or_null(24) %120) %121 = bitcast %678* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %121) #21 %122 = getelementptr inbounds %678, %678* %26, i32 0, i32 0 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %122, align 8, !annotation !6 %123 = getelementptr inbounds %678, %678* %26, i32 0, i32 1 store i64 -6148914691236517206, i64* %123, align 8, !annotation !6 %124 = load %674*, %674** %22, align 8 call void @_ZNK5SkZipIJ6SkPathK7SkPointEE3endEv(%678* sret(%678) align 8 %26, %674* noundef align 8 dereferenceable_or_null(24) %124) br label %125 125: ; preds = %178, %109 %126 = call noundef zeroext i1 @_ZNK5SkZipIJ6SkPathK7SkPointEE8IteratorneERKS4_(%678* noundef align 8 dereferenceable_or_null(16) %25, %678* noundef align 8 dereferenceable(16) %26) br i1 %126, label %132, label %127 127: ; preds = %125 %128 = bitcast %678* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %128) #21 %129 = bitcast %678* %25 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %129) #21 %130 = bitcast %674* %23 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %130) #21 %131 = bitcast %674** %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %131) #21 br label %180 132: ; preds = %125 %133 = bitcast %679* %27 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %133) #21 %134 = getelementptr inbounds %679, %679* %27, i32 0, i32 0 %135 = getelementptr inbounds %680, %680* %134, i32 0, i32 0 %136 = getelementptr inbounds %681, %681* %135, i32 0, i32 0 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %136, align 8, !annotation !6 %137 = getelementptr inbounds %680, %680* %134, i32 0, i32 1 %138 = getelementptr inbounds %682, %682* %137, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %138, align 8, !annotation !6 %139 = call { %101*, %5* } @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratordeEv(%678* noundef align 8 dereferenceable_or_null(16) %25) %140 = getelementptr inbounds %679, %679* %27, i32 0, i32 0 %141 = bitcast %680* %140 to { %101*, %5* }* %142 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %141, i32 0, i32 0 %143 = extractvalue { %101*, %5* } %139, 0 store %101* %143, %101** %142, align 8 %144 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %141, i32 0, i32 1 %145 = extractvalue { %101*, %5* } %139, 1 store %5* %145, %5** %144, align 8 %146 = bitcast %101** %28 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %146) #21 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %28, align 8, !annotation !6 %147 = call noundef align 8 dereferenceable(15) %101* @_ZNSt4__Cr3getILm0EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %27) #21 store %101* %147, %101** %28, align 8 %148 = bitcast %5** %29 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %148) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %29, align 8, !annotation !6 %149 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %27) #21 store %5* %149, %5** %29, align 8 %150 = bitcast %2* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %150) #21 %151 = getelementptr inbounds %2, %2* %30, i32 0, i32 0 %152 = bitcast [9 x float]* %151 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %152, i8 -1, i64 36, i1 false), !annotation !6 %153 = getelementptr inbounds %2, %2* %30, i32 0, i32 1 store i32 -1431655766, i32* %153, align 4, !annotation !6 %154 = bitcast %2* %30 to i8* %155 = bitcast %2* %17 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %154, i8* align 4 %155, i64 40, i1 false) %156 = load %5*, %5** %29, align 8 %157 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %156) %158 = load %5*, %5** %29, align 8 %159 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %158) %160 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13postTranslateEff(%2* noundef align 4 dereferenceable_or_null(40) %30, float noundef %157, float noundef %159) %161 = bitcast %683* %31 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %161) #21 %162 = getelementptr inbounds %683, %683* %31, i32 0, i32 0 store %268* inttoptr (i64 -6148914691236517206 to %268*), %268** %162, align 8, !annotation !6 %163 = getelementptr inbounds %683, %683* %31, i32 0, i32 1 store i32 -1431655766, i32* %163, align 8, !annotation !6 %164 = getelementptr inbounds %683, %683* %31, i32 0, i32 2 %165 = getelementptr inbounds [4 x i8], [4 x i8]* %164, i64 0, i64 0 store i8 -86, i8* %165, align 4, !annotation !6 %166 = getelementptr inbounds [4 x i8], [4 x i8]* %164, i64 0, i64 1 store i8 -86, i8* %166, align 1, !annotation !6 %167 = getelementptr inbounds [4 x i8], [4 x i8]* %164, i64 0, i64 2 store i8 -86, i8* %167, align 2, !annotation !6 %168 = getelementptr inbounds [4 x i8], [4 x i8]* %164, i64 0, i64 3 store i8 -86, i8* %168, align 1, !annotation !6 %169 = load %268*, %268** %10, align 8 call void @_ZN19SkAutoCanvasRestoreC2EP8SkCanvasb(%683* noundef align 8 dereferenceable_or_null(12) %31, %268* noundef %169, i1 noundef zeroext true) %170 = load %268*, %268** %10, align 8 call void @_ZN8SkCanvas6concatERK8SkMatrix(%268* noundef align 8 dereferenceable_or_null(3232) %170, %2* noundef align 4 dereferenceable(40) %30) %171 = load %268*, %268** %10, align 8 %172 = load %101*, %101** %28, align 8 call void @_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint(%268* noundef align 8 dereferenceable_or_null(3232) %171, %101* noundef align 8 dereferenceable(15) %172, %73* noundef align 8 dereferenceable(76) %15) call void @_ZN19SkAutoCanvasRestoreD2Ev(%683* noundef align 8 dereferenceable_or_null(12) %31) #21 %173 = bitcast %683* %31 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %173) #21 %174 = bitcast %2* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %174) #21 %175 = bitcast %5** %29 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %175) #21 %176 = bitcast %101** %28 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %176) #21 %177 = bitcast %679* %27 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %177) #21 br label %178 178: ; preds = %132 %179 = call noundef align 8 dereferenceable(16) %678* @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorppEv(%678* noundef align 8 dereferenceable_or_null(16) %25) br label %125 180: ; preds = %127 %181 = bitcast %1* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %181) #21 br label %263 182: ; preds = %83 %183 = bitcast %674** %32 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %183) #21 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %32, align 8, !annotation !6 %184 = bitcast %674* %33 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %184) #21 %185 = bitcast %101** %34 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %185) #21 %186 = getelementptr inbounds %540, %540* %43, i32 0, i32 4 %187 = call noundef %101* @_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE3getEv(%122* noundef align 8 dereferenceable_or_null(16) %186) #21 store %101* %187, %101** %34, align 8 %188 = getelementptr inbounds %540, %540* %43, i32 0, i32 2 call void @_Z9SkMakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEDaDpOT_(%674* sret(%674) align 8 %33, %101** noundef align 8 dereferenceable(8) %34, %120* noundef align 8 dereferenceable(16) %188) %189 = bitcast %101** %34 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %189) #21 store %674* %33, %674** %32, align 8 %190 = bitcast %678* %35 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %190) #21 %191 = getelementptr inbounds %678, %678* %35, i32 0, i32 0 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %191, align 8, !annotation !6 %192 = getelementptr inbounds %678, %678* %35, i32 0, i32 1 store i64 -6148914691236517206, i64* %192, align 8, !annotation !6 %193 = load %674*, %674** %32, align 8 call void @_ZNK5SkZipIJ6SkPathK7SkPointEE5beginEv(%678* sret(%678) align 8 %35, %674* noundef align 8 dereferenceable_or_null(24) %193) %194 = bitcast %678* %36 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %194) #21 %195 = getelementptr inbounds %678, %678* %36, i32 0, i32 0 store %674* inttoptr (i64 -6148914691236517206 to %674*), %674** %195, align 8, !annotation !6 %196 = getelementptr inbounds %678, %678* %36, i32 0, i32 1 store i64 -6148914691236517206, i64* %196, align 8, !annotation !6 %197 = load %674*, %674** %32, align 8 call void @_ZNK5SkZipIJ6SkPathK7SkPointEE3endEv(%678* sret(%678) align 8 %36, %674* noundef align 8 dereferenceable_or_null(24) %197) br label %198 198: ; preds = %260, %182 %199 = call noundef zeroext i1 @_ZNK5SkZipIJ6SkPathK7SkPointEE8IteratorneERKS4_(%678* noundef align 8 dereferenceable_or_null(16) %35, %678* noundef align 8 dereferenceable(16) %36) br i1 %199, label %205, label %200 200: ; preds = %198 %201 = bitcast %678* %36 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %201) #21 %202 = bitcast %678* %35 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %202) #21 %203 = bitcast %674* %33 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %203) #21 %204 = bitcast %674** %32 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %204) #21 br label %262 205: ; preds = %198 %206 = bitcast %679* %37 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %206) #21 %207 = getelementptr inbounds %679, %679* %37, i32 0, i32 0 %208 = getelementptr inbounds %680, %680* %207, i32 0, i32 0 %209 = getelementptr inbounds %681, %681* %208, i32 0, i32 0 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %209, align 8, !annotation !6 %210 = getelementptr inbounds %680, %680* %207, i32 0, i32 1 %211 = getelementptr inbounds %682, %682* %210, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %211, align 8, !annotation !6 %212 = call { %101*, %5* } @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratordeEv(%678* noundef align 8 dereferenceable_or_null(16) %35) %213 = getelementptr inbounds %679, %679* %37, i32 0, i32 0 %214 = bitcast %680* %213 to { %101*, %5* }* %215 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %214, i32 0, i32 0 %216 = extractvalue { %101*, %5* } %212, 0 store %101* %216, %101** %215, align 8 %217 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %214, i32 0, i32 1 %218 = extractvalue { %101*, %5* } %212, 1 store %5* %218, %5** %217, align 8 %219 = bitcast %101** %38 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %219) #21 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %38, align 8, !annotation !6 %220 = call noundef align 8 dereferenceable(15) %101* @_ZNSt4__Cr3getILm0EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %37) #21 store %101* %220, %101** %38, align 8 %221 = bitcast %5** %39 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %221) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %39, align 8, !annotation !6 %222 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %37) #21 store %5* %222, %5** %39, align 8 %223 = bitcast %2* %40 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %223) #21 %224 = getelementptr inbounds %2, %2* %40, i32 0, i32 0 %225 = bitcast [9 x float]* %224 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %225, i8 -1, i64 36, i1 false), !annotation !6 %226 = getelementptr inbounds %2, %2* %40, i32 0, i32 1 store i32 -1431655766, i32* %226, align 4, !annotation !6 %227 = bitcast %2* %40 to i8* %228 = bitcast %2* %17 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %227, i8* align 4 %228, i64 40, i1 false) %229 = load %5*, %5** %39, align 8 %230 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %229) %231 = load %5*, %5** %39, align 8 %232 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %231) %233 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13postTranslateEff(%2* noundef align 4 dereferenceable_or_null(40) %40, float noundef %230, float noundef %232) %234 = bitcast %101* %41 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %234) #21 %235 = getelementptr inbounds %101, %101* %41, i32 0, i32 0 %236 = getelementptr inbounds %102, %102* %235, i32 0, i32 0 store %103* inttoptr (i64 -6148914691236517206 to %103*), %103** %236, align 8, !annotation !6 %237 = getelementptr inbounds %101, %101* %41, i32 0, i32 1 store i32 -1431655766, i32* %237, align 8, !annotation !6 %238 = getelementptr inbounds %101, %101* %41, i32 0, i32 2 %239 = getelementptr inbounds %46, %46* %238, i32 0, i32 0 %240 = getelementptr inbounds %47, %47* %239, i32 0, i32 0 %241 = getelementptr inbounds %48, %48* %240, i32 0, i32 0 %242 = getelementptr inbounds %49, %49* %241, i32 0, i32 0 %243 = getelementptr inbounds %50, %50* %242, i32 0, i32 0 store i8 -86, i8* %243, align 4, !annotation !6 %244 = getelementptr inbounds %101, %101* %41, i32 0, i32 3 %245 = getelementptr inbounds %46, %46* %244, i32 0, i32 0 %246 = getelementptr inbounds %47, %47* %245, i32 0, i32 0 %247 = getelementptr inbounds %48, %48* %246, i32 0, i32 0 %248 = getelementptr inbounds %49, %49* %247, i32 0, i32 0 %249 = getelementptr inbounds %50, %50* %248, i32 0, i32 0 store i8 -86, i8* %249, align 1, !annotation !6 %250 = getelementptr inbounds %101, %101* %41, i32 0, i32 4 store i8 -86, i8* %250, align 2, !annotation !6 %251 = getelementptr inbounds %101, %101* %41, i32 0, i32 5 store i8 -86, i8* %251, align 1, !annotation !6 call void @_ZN6SkPathC1Ev(%101* noundef align 8 dereferenceable_or_null(15) %41) %252 = load %101*, %101** %38, align 8 call void @_ZNK6SkPath9transformERK8SkMatrixPS_22SkApplyPerspectiveClip(%101* noundef align 8 dereferenceable_or_null(15) %252, %2* noundef align 4 dereferenceable(40) %40, %101* noundef %41, i32 noundef 1) %253 = call noundef align 8 dereferenceable(15) %101* @_ZN6SkPath13setIsVolatileEb(%101* noundef align 8 dereferenceable_or_null(15) %41, i1 noundef zeroext true) %254 = load %268*, %268** %10, align 8 call void @_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint(%268* noundef align 8 dereferenceable_or_null(3232) %254, %101* noundef align 8 dereferenceable(15) %41, %73* noundef align 8 dereferenceable(76) %15) call void @_ZN6SkPathD1Ev(%101* noundef align 8 dereferenceable_or_null(15) %41) #21 %255 = bitcast %101* %41 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %255) #21 %256 = bitcast %2* %40 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %256) #21 %257 = bitcast %5** %39 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %257) #21 %258 = bitcast %101** %38 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %258) #21 %259 = bitcast %679* %37 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %259) #21 br label %260 260: ; preds = %205 %261 = call noundef align 8 dereferenceable(16) %678* @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorppEv(%678* noundef align 8 dereferenceable_or_null(16) %35) br label %198 262: ; preds = %200 br label %263 263: ; preds = %262, %180 call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 call void @_ZN7GrStyleD2Ev(%671* noundef align 8 dereferenceable_or_null(64) %18) #21 %264 = bitcast %671* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 64, i8* %264) #21 %265 = bitcast %2* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %265) #21 %266 = bitcast %232** %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %266) #21 call void @_ZN7SkPaintD1Ev(%73* noundef align 8 dereferenceable_or_null(76) %15) #21 %267 = bitcast %73* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 80, i8* %267) #21 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN7SkPaintC1ERKS_(%73* noundef align 8 dereferenceable_or_null(76), %73* noundef align 8 dereferenceable(76)) unnamed_addr #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7SkPaint12setAntiAliasEb(%73* noundef align 8 dereferenceable_or_null(76) %0, i1 noundef zeroext %1) #3 comdat align 2 { %3 = alloca %73*, align 8 %4 = alloca i8, align 1 store %73* %0, %73** %3, align 8 %5 = zext i1 %1 to i8 store i8 %5, i8* %4, align 1 %6 = load %73*, %73** %3, align 8 %7 = load i8, i8* %4, align 1, !range !7 %8 = trunc i8 %7 to i1 %9 = zext i1 %8 to i32 %10 = getelementptr inbounds %73, %73* %6, i32 0, i32 9 %11 = bitcast %88* %10 to %89* %12 = bitcast %89* %11 to i32* %13 = load i32, i32* %12, align 8 %14 = and i32 %9, 1 %15 = and i32 %13, -2 %16 = or i32 %15, %14 store i32 %16, i32* %12, align 8 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %232* @_Z6as_MFBP12SkMaskFilter(%80* noundef %0) #7 comdat { %2 = alloca %80*, align 8 store %80* %0, %80** %2, align 8 %3 = load %80*, %80** %2, align 8 %4 = bitcast %80* %3 to %232* ret %232* %4 } ; Function Attrs: argmemonly nofree nounwind willreturn writeonly declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #13 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkMatrix5ScaleEff(%2* noalias sret(%2) align 4 %0, float noundef %1, float noundef %2) #3 comdat align 2 { %4 = alloca float, align 4 %5 = alloca float, align 4 store float %1, float* %4, align 4 store float %2, float* %5, align 4 %6 = getelementptr inbounds %2, %2* %0, i32 0, i32 0 %7 = bitcast [9 x float]* %6 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %7, i8 -1, i64 36, i1 false), !annotation !6 %8 = getelementptr inbounds %2, %2* %0, i32 0, i32 1 store i32 -1431655766, i32* %8, align 4, !annotation !6 call void @_ZN8SkMatrixC2Ev(%2* noundef align 4 dereferenceable_or_null(40) %0) %9 = load float, float* %4, align 4 %10 = load float, float* %5, align 4 %11 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix8setScaleEff(%2* noundef align 4 dereferenceable_or_null(40) %0, float noundef %9, float noundef %10) ret void } ; Function Attrs: null_pointer_is_valid declare noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix13postTranslateEff(%2* noundef align 4 dereferenceable_or_null(40), float noundef, float noundef) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrStyleC2ERK7SkPaint(%671* noundef align 8 dereferenceable_or_null(64) %0, %73* noundef align 8 dereferenceable(76) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %671*, align 8 %4 = alloca %73*, align 8 %5 = alloca %74, align 8 store %671* %0, %671** %3, align 8 store %73* %1, %73** %4, align 8 %6 = load %671*, %671** %3, align 8 %7 = getelementptr inbounds %671, %671* %6, i32 0, i32 0 %8 = load %73*, %73** %4, align 8 call void @_ZN11SkStrokeRecC1ERK7SkPaintf(%90* noundef align 4 dereferenceable_or_null(16) %7, %73* noundef align 8 dereferenceable(76) %8, float noundef 1.000000e+00) %9 = getelementptr inbounds %671, %671* %6, i32 0, i32 1 call void @_ZN5sk_spI12SkPathEffectEC2Ev(%74* noundef align 8 dereferenceable_or_null(8) %9) %10 = getelementptr inbounds %671, %671* %6, i32 0, i32 2 call void @_ZN7GrStyle8DashInfoC2Ev(%672* noundef align 8 dereferenceable_or_null(40) %10) %11 = load %73*, %73** %4, align 8 call void @_ZNK7SkPaint13refPathEffectEv(%74* sret(%74) align 8 %5, %73* noundef align 8 dereferenceable_or_null(76) %11) call void @_ZN7GrStyle14initPathEffectE5sk_spI12SkPathEffectE(%671* noundef align 8 dereferenceable_or_null(64) %6, %74* noundef %5) call void @_ZN5sk_spI12SkPathEffectED2Ev(%74* noundef align 8 dereferenceable_or_null(8) %5) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %78* @_ZNK7SkPaint9getShaderEv(%73* noundef align 8 dereferenceable_or_null(76) %0) #3 comdat align 2 { %2 = alloca %73*, align 8 store %73* %0, %73** %2, align 8 %3 = load %73*, %73** %2, align 8 %4 = getelementptr inbounds %73, %73* %3, i32 0, i32 1 %5 = call noundef %78* @_ZNK5sk_spI8SkShaderE3getEv(%77* noundef align 8 dereferenceable_or_null(8) %4) ret %78* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK7GrStyle7appliesEv(%671* noundef align 8 dereferenceable_or_null(64) %0) #3 comdat align 2 { %2 = alloca %671*, align 8 store %671* %0, %671** %2, align 8 %3 = load %671*, %671** %2, align 8 %4 = call noundef %75* @_ZNK7GrStyle10pathEffectEv(%671* noundef align 8 dereferenceable_or_null(64) %3) %5 = icmp ne %75* %4, null br i1 %5, label %15, label %6 6: ; preds = %1 %7 = getelementptr inbounds %671, %671* %3, i32 0, i32 0 %8 = call noundef zeroext i1 @_ZNK11SkStrokeRec11isFillStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %7) br i1 %8, label %13, label %9 9: ; preds = %6 %10 = getelementptr inbounds %671, %671* %3, i32 0, i32 0 %11 = call noundef zeroext i1 @_ZNK11SkStrokeRec15isHairlineStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %10) %12 = xor i1 %11, true br label %13 13: ; preds = %9, %6 %14 = phi i1 [ false, %6 ], [ %12, %9 ] br label %15 15: ; preds = %13, %1 %16 = phi i1 [ true, %1 ], [ %14, %13 ] ret i1 %16 } ; Function Attrs: null_pointer_is_valid declare void @_ZN7SkPaint13setMaskFilterE5sk_spI12SkMaskFilterE(%73* noundef align 8 dereferenceable_or_null(76), %79* noundef) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN12SkMaskFilter8MakeBlurE11SkBlurStylefb(%79* sret(%79) align 8, i32 noundef, float noundef, i1 noundef zeroext) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI12SkMaskFilterED2Ev(%79* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %79*, align 8 store %79* %0, %79** %2, align 8 %3 = load %79*, %79** %2, align 8 %4 = getelementptr inbounds %79, %79* %3, i32 0, i32 0 %5 = load %80*, %80** %4, align 8 call void @78(%80* noundef %5) ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_Z9SkMakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEDaDpOT_(%674* noalias sret(%674) align 8 %0, %101** noundef align 8 dereferenceable(8) %1, %120* noundef align 8 dereferenceable(16) %2) #7 comdat { %4 = alloca %101**, align 8 %5 = alloca %120*, align 8 store %101** %1, %101*** %4, align 8 store %120* %2, %120** %5, align 8 %6 = load %101**, %101*** %4, align 8 %7 = load %120*, %120** %5, align 8 call void @_ZN15SkMakeZipDetail7MakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEEDaDpOT_(%674* sret(%674) align 8 %0, %101** noundef align 8 dereferenceable(8) %6, %120* noundef align 8 dereferenceable(16) %7) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %101* @_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE3getEv(%122* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %122*, align 8 store %122* %0, %122** %2, align 8 %3 = load %122*, %122** %2, align 8 %4 = getelementptr inbounds %122, %122* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %4) #21 %6 = load %101*, %101** %5, align 8 ret %101* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK5SkZipIJ6SkPathK7SkPointEE5beginEv(%678* noalias sret(%678) align 8 %0, %674* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %674*, align 8 %5 = bitcast %678* %0 to i8* store i8* %5, i8** %3, align 8 store %674* %1, %674** %4, align 8 %6 = load %674*, %674** %4, align 8 call void @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorC2EPKS3_m(%678* noundef align 8 dereferenceable_or_null(16) %0, %674* noundef %6, i64 noundef 0) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK5SkZipIJ6SkPathK7SkPointEE3endEv(%678* noalias sret(%678) align 8 %0, %674* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %674*, align 8 %5 = bitcast %678* %0 to i8* store i8* %5, i8** %3, align 8 store %674* %1, %674** %4, align 8 %6 = load %674*, %674** %4, align 8 %7 = call noundef i64 @_ZNK5SkZipIJ6SkPathK7SkPointEE4sizeEv(%674* noundef align 8 dereferenceable_or_null(24) %6) call void @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorC2EPKS3_m(%678* noundef align 8 dereferenceable_or_null(16) %0, %674* noundef %6, i64 noundef %7) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK5SkZipIJ6SkPathK7SkPointEE8IteratorneERKS4_(%678* noundef align 8 dereferenceable_or_null(16) %0, %678* noundef align 8 dereferenceable(16) %1) #3 comdat align 2 { %3 = alloca %678*, align 8 %4 = alloca %678*, align 8 store %678* %0, %678** %3, align 8 store %678* %1, %678** %4, align 8 %5 = load %678*, %678** %3, align 8 %6 = getelementptr inbounds %678, %678* %5, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = load %678*, %678** %4, align 8 %9 = getelementptr inbounds %678, %678* %8, i32 0, i32 1 %10 = load i64, i64* %9, align 8 %11 = icmp ne i64 %7, %10 ret i1 %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %101*, %5* } @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratordeEv(%678* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %679, align 8 %3 = alloca %678*, align 8 store %678* %0, %678** %3, align 8 %4 = load %678*, %678** %3, align 8 %5 = getelementptr inbounds %678, %678* %4, i32 0, i32 0 %6 = load %674*, %674** %5, align 8 %7 = getelementptr inbounds %678, %678* %4, i32 0, i32 1 %8 = load i64, i64* %7, align 8 %9 = call { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEEixEm(%674* noundef align 8 dereferenceable_or_null(24) %6, i64 noundef %8) %10 = getelementptr inbounds %679, %679* %2, i32 0, i32 0 %11 = bitcast %680* %10 to { %101*, %5* }* %12 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %11, i32 0, i32 0 %13 = extractvalue { %101*, %5* } %9, 0 store %101* %13, %101** %12, align 8 %14 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %11, i32 0, i32 1 %15 = extractvalue { %101*, %5* } %9, 1 store %5* %15, %5** %14, align 8 %16 = getelementptr inbounds %679, %679* %2, i32 0, i32 0 %17 = bitcast %680* %16 to { %101*, %5* }* %18 = load { %101*, %5* }, { %101*, %5* }* %17, align 8 ret { %101*, %5* } %18 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(15) %101* @_ZNSt4__Cr3getILm0EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %679*, align 8 store %679* %0, %679** %2, align 8 %3 = load %679*, %679** %2, align 8 %4 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %5 = bitcast %680* %4 to %681* %6 = call noundef align 8 dereferenceable(15) %101* @_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EE3getEv(%681* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %101* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR6SkPathRK7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSA_(%679* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %679*, align 8 store %679* %0, %679** %2, align 8 %3 = load %679*, %679** %2, align 8 %4 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %5 = bitcast %680* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %682* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EE3getEv(%682* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN19SkAutoCanvasRestoreC2EP8SkCanvasb(%683* noundef align 8 dereferenceable_or_null(12) %0, %268* noundef %1, i1 noundef zeroext %2) unnamed_addr #0 comdat align 2 { %4 = alloca %683*, align 8 %5 = alloca %268*, align 8 %6 = alloca i8, align 1 store %683* %0, %683** %4, align 8 store %268* %1, %268** %5, align 8 %7 = zext i1 %2 to i8 store i8 %7, i8* %6, align 1 %8 = load %683*, %683** %4, align 8 %9 = getelementptr inbounds %683, %683* %8, i32 0, i32 0 %10 = load %268*, %268** %5, align 8 store %268* %10, %268** %9, align 8 %11 = getelementptr inbounds %683, %683* %8, i32 0, i32 1 store i32 0, i32* %11, align 8 %12 = getelementptr inbounds %683, %683* %8, i32 0, i32 0 %13 = load %268*, %268** %12, align 8 %14 = icmp ne %268* %13, null br i1 %14, label %15, label %25 15: ; preds = %3 %16 = load %268*, %268** %5, align 8 %17 = call noundef i32 @_ZNK8SkCanvas12getSaveCountEv(%268* noundef align 8 dereferenceable_or_null(3232) %16) %18 = getelementptr inbounds %683, %683* %8, i32 0, i32 1 store i32 %17, i32* %18, align 8 %19 = load i8, i8* %6, align 1, !range !7 %20 = trunc i8 %19 to i1 br i1 %20, label %21, label %24 21: ; preds = %15 %22 = load %268*, %268** %5, align 8 %23 = call noundef i32 @_ZN8SkCanvas4saveEv(%268* noundef align 8 dereferenceable_or_null(3232) %22) br label %24 24: ; preds = %21, %15 br label %25 25: ; preds = %24, %3 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN8SkCanvas6concatERK8SkMatrix(%268* noundef align 8 dereferenceable_or_null(3232), %2* noundef align 4 dereferenceable(40)) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint(%268* noundef align 8 dereferenceable_or_null(3232), %101* noundef align 8 dereferenceable(15), %73* noundef align 8 dereferenceable(76)) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN19SkAutoCanvasRestoreD2Ev(%683* noundef align 8 dereferenceable_or_null(12) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %683*, align 8 store %683* %0, %683** %2, align 8 %3 = load %683*, %683** %2, align 8 %4 = getelementptr inbounds %683, %683* %3, i32 0, i32 0 %5 = load %268*, %268** %4, align 8 %6 = icmp ne %268* %5, null br i1 %6, label %7, label %12 7: ; preds = %1 %8 = getelementptr inbounds %683, %683* %3, i32 0, i32 0 %9 = load %268*, %268** %8, align 8 %10 = getelementptr inbounds %683, %683* %3, i32 0, i32 1 %11 = load i32, i32* %10, align 8 call void @_ZN8SkCanvas14restoreToCountEi(%268* noundef align 8 dereferenceable_or_null(3232) %9, i32 noundef %11) br label %12 12: ; preds = %7, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %678* @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorppEv(%678* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %678*, align 8 store %678* %0, %678** %2, align 8 %3 = load %678*, %678** %2, align 8 %4 = getelementptr inbounds %678, %678* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = add i64 %5, 1 store i64 %6, i64* %4, align 8 ret %678* %3 } ; Function Attrs: null_pointer_is_valid declare void @_ZN6SkPathC1Ev(%101* noundef align 8 dereferenceable_or_null(15)) unnamed_addr #8 ; Function Attrs: null_pointer_is_valid declare void @_ZNK6SkPath9transformERK8SkMatrixPS_22SkApplyPerspectiveClip(%101* noundef align 8 dereferenceable_or_null(15), %2* noundef align 4 dereferenceable(40), %101* noundef, i32 noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(15) %101* @_ZN6SkPath13setIsVolatileEb(%101* noundef align 8 dereferenceable_or_null(15) %0, i1 noundef zeroext %1) #3 comdat align 2 { %3 = alloca %101*, align 8 %4 = alloca i8, align 1 store %101* %0, %101** %3, align 8 %5 = zext i1 %1 to i8 store i8 %5, i8* %4, align 1 %6 = load %101*, %101** %3, align 8 %7 = load i8, i8* %4, align 1, !range !7 %8 = trunc i8 %7 to i1 %9 = zext i1 %8 to i8 %10 = getelementptr inbounds %101, %101* %6, i32 0, i32 4 %11 = load i8, i8* %10, align 2 %12 = and i8 %9, 1 %13 = shl i8 %12, 2 %14 = and i8 %11, -5 %15 = or i8 %14, %13 store i8 %15, i8* %10, align 2 ret %101* %6 } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN6SkPathD1Ev(%101* noundef align 8 dereferenceable_or_null(15)) unnamed_addr #12 ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrStyleD2Ev(%671* noundef align 8 dereferenceable_or_null(64) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %671*, align 8 store %671* %0, %671** %2, align 8 %3 = load %671*, %671** %2, align 8 %4 = getelementptr inbounds %671, %671* %3, i32 0, i32 2 call void @_ZN7GrStyle8DashInfoD2Ev(%672* noundef align 8 dereferenceable_or_null(40) %4) #21 %5 = getelementptr inbounds %671, %671* %3, i32 0, i32 1 call void @_ZN5sk_spI12SkPathEffectED2Ev(%74* noundef align 8 dereferenceable_or_null(8) %5) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN7SkPaintD1Ev(%73* noundef align 8 dereferenceable_or_null(76)) unnamed_addr #12 ; Function Attrs: null_pointer_is_valid declare noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix8setScaleEff(%2* noundef align 4 dereferenceable_or_null(40), float noundef, float noundef) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN11SkStrokeRecC1ERK7SkPaintf(%90* noundef align 4 dereferenceable_or_null(16), %73* noundef align 8 dereferenceable(76), float noundef) unnamed_addr #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI12SkPathEffectEC2Ev(%74* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %74*, align 8 store %74* %0, %74** %2, align 8 %3 = load %74*, %74** %2, align 8 %4 = getelementptr inbounds %74, %74* %3, i32 0, i32 0 store %75* null, %75** %4, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrStyle8DashInfoC2Ev(%672* noundef align 8 dereferenceable_or_null(40) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %672*, align 8 store %672* %0, %672** %2, align 8 %3 = load %672*, %672** %2, align 8 %4 = getelementptr inbounds %672, %672* %3, i32 0, i32 0 store i32 0, i32* %4, align 8 %5 = getelementptr inbounds %672, %672* %3, i32 0, i32 1 store float 0.000000e+00, float* %5, align 4 %6 = getelementptr inbounds %672, %672* %3, i32 0, i32 2 call void @_ZN13SkAutoSTArrayILi4EfEC2Ev(%673* noundef align 8 dereferenceable_or_null(32) %6) ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN7GrStyle14initPathEffectE5sk_spI12SkPathEffectE(%671* noundef align 8 dereferenceable_or_null(64), %74* noundef) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZNK7SkPaint13refPathEffectEv(%74* sret(%74) align 8, %73* noundef align 8 dereferenceable_or_null(76)) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI12SkPathEffectED2Ev(%74* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %74*, align 8 store %74* %0, %74** %2, align 8 %3 = load %74*, %74** %2, align 8 %4 = getelementptr inbounds %74, %74* %3, i32 0, i32 0 %5 = load %75*, %75** %4, align 8 call void @77(%75* noundef %5) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13SkAutoSTArrayILi4EfEC2Ev(%673* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %673*, align 8 store %673* %0, %673** %2, align 8 %3 = load %673*, %673** %2, align 8 %4 = getelementptr inbounds %673, %673* %3, i32 0, i32 1 store float* null, float** %4, align 8 %5 = getelementptr inbounds %673, %673* %3, i32 0, i32 0 store i32 0, i32* %5, align 8 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @77(%75* noundef %0) #7 { %2 = alloca %75*, align 8 store %75* %0, %75** %2, align 8 %3 = load %75*, %75** %2, align 8 %4 = icmp ne %75* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %75*, %75** %2, align 8 %7 = bitcast %75* %6 to %657* call void @_ZNK12SkRefCntBase5unrefEv(%657* noundef align 8 dereferenceable_or_null(12) %7) br label %8 8: ; preds = %5, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK12SkRefCntBase5unrefEv(%657* noundef align 8 dereferenceable_or_null(12) %0) #3 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 %4 = getelementptr inbounds %657, %657* %3, i32 0, i32 1 %5 = bitcast %22* %4 to %23* %6 = call noundef i32 @_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE(%23* noundef align 4 dereferenceable_or_null(4) %5, i32 noundef -1, i32 noundef 4) #21 %7 = icmp eq i32 1, %6 br i1 %7, label %8, label %13 8: ; preds = %1 %9 = bitcast %657* %3 to void (%657*)*** %10 = load void (%657*)**, void (%657*)*** %9, align 8 %11 = getelementptr inbounds void (%657*)*, void (%657*)** %10, i64 2 %12 = load void (%657*)*, void (%657*)** %11, align 8 call void %12(%657* noundef align 8 dereferenceable_or_null(12) %3) br label %13 13: ; preds = %8, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE(%23* noundef align 4 dereferenceable_or_null(4) %0, i32 noundef %1, i32 noundef %2) #3 comdat align 2 { %4 = alloca %23*, align 8 %5 = alloca i32, align 4 %6 = alloca i32, align 4 store %23* %0, %23** %4, align 8 store i32 %1, i32* %5, align 4 store i32 %2, i32* %6, align 4 %7 = load %23*, %23** %4, align 8 %8 = bitcast %23* %7 to %24* %9 = getelementptr inbounds %24, %24* %8, i32 0, i32 0 %10 = bitcast %25* %9 to %26* %11 = load i32, i32* %5, align 4 %12 = load i32, i32* %6, align 4 %13 = call noundef i32 @_ZNSt4__Cr22__cxx_atomic_fetch_addIiEET_PNS_22__cxx_atomic_base_implIS1_EES1_NS_12memory_orderE(%26* noundef %10, i32 noundef %11, i32 noundef %12) #21 ret i32 %13 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNSt4__Cr22__cxx_atomic_fetch_addIiEET_PNS_22__cxx_atomic_base_implIS1_EES1_NS_12memory_orderE(%26* noundef %0, i32 noundef %1, i32 noundef %2) #3 comdat { %4 = alloca %26*, align 8 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 store %26* %0, %26** %4, align 8 store i32 %1, i32* %5, align 4 store i32 %2, i32* %6, align 4 %9 = load %26*, %26** %4, align 8 %10 = getelementptr inbounds %26, %26* %9, i32 0, i32 0 %11 = load i32, i32* %6, align 4 %12 = load i32, i32* %5, align 4 store i32 %12, i32* %7, align 4 switch i32 %11, label %13 [ i32 1, label %16 i32 2, label %16 i32 3, label %19 i32 4, label %22 i32 5, label %25 ] 13: ; preds = %3 %14 = load i32, i32* %7, align 4 %15 = atomicrmw add i32* %10, i32 %14 monotonic, align 4 store i32 %15, i32* %8, align 4 br label %28 16: ; preds = %3, %3 %17 = load i32, i32* %7, align 4 %18 = atomicrmw add i32* %10, i32 %17 acquire, align 4 store i32 %18, i32* %8, align 4 br label %28 19: ; preds = %3 %20 = load i32, i32* %7, align 4 %21 = atomicrmw add i32* %10, i32 %20 release, align 4 store i32 %21, i32* %8, align 4 br label %28 22: ; preds = %3 %23 = load i32, i32* %7, align 4 %24 = atomicrmw add i32* %10, i32 %23 acq_rel, align 4 store i32 %24, i32* %8, align 4 br label %28 25: ; preds = %3 %26 = load i32, i32* %7, align 4 %27 = atomicrmw add i32* %10, i32 %26 seq_cst, align 4 store i32 %27, i32* %8, align 4 br label %28 28: ; preds = %25, %22, %19, %16, %13 %29 = load i32, i32* %8, align 4 ret i32 %29 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %78* @_ZNK5sk_spI8SkShaderE3getEv(%77* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %77*, align 8 store %77* %0, %77** %2, align 8 %3 = load %77*, %77** %2, align 8 %4 = getelementptr inbounds %77, %77* %3, i32 0, i32 0 %5 = load %78*, %78** %4, align 8 ret %78* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %75* @_ZNK7GrStyle10pathEffectEv(%671* noundef align 8 dereferenceable_or_null(64) %0) #3 comdat align 2 { %2 = alloca %671*, align 8 store %671* %0, %671** %2, align 8 %3 = load %671*, %671** %2, align 8 %4 = getelementptr inbounds %671, %671* %3, i32 0, i32 1 %5 = call noundef %75* @_ZNK5sk_spI12SkPathEffectE3getEv(%74* noundef align 8 dereferenceable_or_null(8) %4) ret %75* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK11SkStrokeRec11isFillStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %90*, align 8 store %90* %0, %90** %2, align 8 %3 = load %90*, %90** %2, align 8 %4 = call noundef i32 @_ZNK11SkStrokeRec8getStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %3) %5 = icmp eq i32 1, %4 ret i1 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK11SkStrokeRec15isHairlineStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %90*, align 8 store %90* %0, %90** %2, align 8 %3 = load %90*, %90** %2, align 8 %4 = call noundef i32 @_ZNK11SkStrokeRec8getStyleEv(%90* noundef align 4 dereferenceable_or_null(16) %3) %5 = icmp eq i32 0, %4 ret i1 %5 } ; Function Attrs: null_pointer_is_valid declare noundef i32 @_ZNK11SkStrokeRec8getStyleEv(%90* noundef align 4 dereferenceable_or_null(16)) #8 ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @78(%80* noundef %0) #7 { %2 = alloca %80*, align 8 store %80* %0, %80** %2, align 8 %3 = load %80*, %80** %2, align 8 %4 = icmp ne %80* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %80*, %80** %2, align 8 %7 = bitcast %80* %6 to %657* call void @_ZNK12SkRefCntBase5unrefEv(%657* noundef align 8 dereferenceable_or_null(12) %7) br label %8 8: ; preds = %5, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN15SkMakeZipDetail7MakeZipIJP6SkPathRK6SkSpanIK7SkPointEEEEDaDpOT_(%674* noalias sret(%674) align 8 %0, %101** noundef align 8 dereferenceable(8) %1, %120* noundef align 8 dereferenceable(16) %2) #3 comdat align 2 { %4 = alloca %101**, align 8 %5 = alloca %120*, align 8 %6 = alloca i64, align 8 store %101** %1, %101*** %4, align 8 store %120* %2, %120** %5, align 8 %7 = bitcast i64* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store i64 -6148914691236517206, i64* %6, align 8, !annotation !6 %8 = load %101**, %101*** %4, align 8 %9 = load %101*, %101** %8, align 8 %10 = load %120*, %120** %5, align 8 %11 = call noundef i64 @_ZN15SkMakeZipDetail11PickOneSizeIP6SkPathJRK6SkSpanIK7SkPointEEE4SizeES2_S8_(%101* noundef %9, %120* noundef align 8 dereferenceable(16) %10) store i64 %11, i64* %6, align 8 %12 = load i64, i64* %6, align 8 %13 = load %101**, %101*** %4, align 8 %14 = load %101*, %101** %13, align 8 %15 = call noundef %101* @_ZN15SkMakeZipDetail16ContiguousMemoryIP6SkPathE4DataES2_(%101* noundef %14) %16 = load %120*, %120** %5, align 8 %17 = call noundef %5* @_ZN15SkMakeZipDetail16ContiguousMemoryIRK6SkSpanIK7SkPointEE4DataES6_(%120* noundef align 8 dereferenceable(16) %16) call void @_ZN5SkZipIJ6SkPathK7SkPointEEC2EmPS0_PS2_(%674* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %12, %101* noundef %15, %5* noundef %17) %18 = bitcast i64* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %18) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZN15SkMakeZipDetail11PickOneSizeIP6SkPathJRK6SkSpanIK7SkPointEEE4SizeES2_S8_(%101* noundef %0, %120* noundef align 8 dereferenceable(16) %1) #3 comdat align 2 { %3 = alloca %101*, align 8 %4 = alloca %120*, align 8 store %101* %0, %101** %3, align 8 store %120* %1, %120** %4, align 8 %5 = load %120*, %120** %4, align 8 %6 = call noundef i64 @_ZN15SkMakeZipDetail11PickOneSizeIRK6SkSpanIK7SkPointEJEE4SizeES6_(%120* noundef align 8 dereferenceable(16) %5) ret i64 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %101* @_ZN15SkMakeZipDetail16ContiguousMemoryIP6SkPathE4DataES2_(%101* noundef %0) #3 comdat align 2 { %2 = alloca %101*, align 8 store %101* %0, %101** %2, align 8 %3 = load %101*, %101** %2, align 8 ret %101* %3 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZN15SkMakeZipDetail16ContiguousMemoryIRK6SkSpanIK7SkPointEE4DataES6_(%120* noundef align 8 dereferenceable(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = call noundef %5* @_ZNK6SkSpanIK7SkPointE4dataEv(%120* noundef align 8 dereferenceable_or_null(16) %3) ret %5* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5SkZipIJ6SkPathK7SkPointEEC2EmPS0_PS2_(%674* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1, %101* noundef %2, %5* noundef %3) unnamed_addr #0 comdat align 2 { %5 = alloca %674*, align 8 %6 = alloca i64, align 8 %7 = alloca %101*, align 8 %8 = alloca %5*, align 8 store %674* %0, %674** %5, align 8 store i64 %1, i64* %6, align 8 store %101* %2, %101** %7, align 8 store %5* %3, %5** %8, align 8 %9 = load %674*, %674** %5, align 8 %10 = getelementptr inbounds %674, %674* %9, i32 0, i32 0 call void @_ZNSt4__Cr5tupleIJP6SkPathPK7SkPointEEC2IJRS2_RS5_ELi0EEEDpOT_(%675* noundef align 8 dereferenceable_or_null(16) %10, %101** noundef align 8 dereferenceable(8) %7, %5** noundef align 8 dereferenceable(8) %8) #21 %11 = getelementptr inbounds %674, %674* %9, i32 0, i32 1 %12 = load i64, i64* %6, align 8 store i64 %12, i64* %11, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZN15SkMakeZipDetail11PickOneSizeIRK6SkSpanIK7SkPointEJEE4SizeES6_(%120* noundef align 8 dereferenceable(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = call noundef i64 @_ZNK6SkSpanIK7SkPointE4sizeEv(%120* noundef align 8 dereferenceable_or_null(16) %3) ret i64 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIK7SkPointE4sizeEv(%120* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = getelementptr inbounds %120, %120* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZNK6SkSpanIK7SkPointE4dataEv(%120* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = call noundef %5* @_ZNK6SkSpanIK7SkPointE5beginEv(%120* noundef align 8 dereferenceable_or_null(16) %3) ret %5* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZNK6SkSpanIK7SkPointE5beginEv(%120* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = getelementptr inbounds %120, %120* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 ret %5* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJP6SkPathPK7SkPointEEC2IJRS2_RS5_ELi0EEEDpOT_(%675* noundef align 8 dereferenceable_or_null(16) %0, %101** noundef align 8 dereferenceable(8) %1, %5** noundef align 8 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %675*, align 8 %5 = alloca %101**, align 8 %6 = alloca %5**, align 8 %7 = alloca %234, align 1 %8 = alloca %684, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %675* %0, %675** %4, align 8 store %101** %1, %101*** %5, align 8 store %5** %2, %5*** %6, align 8 %11 = load %675*, %675** %4, align 8 %12 = getelementptr inbounds %675, %675* %11, i32 0, i32 0 %13 = load %101**, %101*** %5, align 8 %14 = load %5**, %5*** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJP6SkPathPK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJRS4_RS7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_(%676* noundef align 8 dereferenceable_or_null(16) %12, %101** noundef align 8 dereferenceable(8) %13, %5** noundef align 8 dereferenceable(8) %14) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJP6SkPathPK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJRS4_RS7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_(%676* noundef align 8 dereferenceable_or_null(16) %0, %101** noundef align 8 dereferenceable(8) %1, %5** noundef align 8 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %684, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %676*, align 8 %9 = alloca %101**, align 8 %10 = alloca %5**, align 8 store %676* %0, %676** %8, align 8 store %101** %1, %101*** %9, align 8 store %5** %2, %5*** %10, align 8 %11 = load %676*, %676** %8, align 8 %12 = bitcast %676* %11 to %677* %13 = load %101**, %101*** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EP6SkPathLb0EEC2IRS2_vEEOT_(%677* noundef align 8 dereferenceable_or_null(8) %12, %101** noundef align 8 dereferenceable(8) %13) #21 %14 = bitcast %676* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 8 %16 = bitcast i8* %15 to %193* %17 = load %5**, %5*** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EEC2IRS3_vEEOT_(%193* noundef align 8 dereferenceable_or_null(8) %16, %5** noundef align 8 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EP6SkPathLb0EEC2IRS2_vEEOT_(%677* noundef align 8 dereferenceable_or_null(8) %0, %101** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %677*, align 8 %4 = alloca %101**, align 8 store %677* %0, %677** %3, align 8 store %101** %1, %101*** %4, align 8 %5 = load %677*, %677** %3, align 8 %6 = getelementptr inbounds %677, %677* %5, i32 0, i32 0 %7 = load %101**, %101*** %4, align 8 %8 = load %101*, %101** %7, align 8 store %101* %8, %101** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EEC2IRS3_vEEOT_(%193* noundef align 8 dereferenceable_or_null(8) %0, %5** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %193*, align 8 %4 = alloca %5**, align 8 store %193* %0, %193** %3, align 8 store %5** %1, %5*** %4, align 8 %5 = load %193*, %193** %3, align 8 %6 = getelementptr inbounds %193, %193* %5, i32 0, i32 0 %7 = load %5**, %5*** %4, align 8 %8 = load %5*, %5** %7, align 8 store %5* %8, %5** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %0) #3 comdat align 2 { %2 = alloca %123*, align 8 store %123* %0, %123** %2, align 8 %3 = load %123*, %123** %2, align 8 %4 = bitcast %123* %3 to %124* %5 = call noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv(%124* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %101** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EE5__getEv(%124* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %124*, align 8 store %124* %0, %124** %2, align 8 %3 = load %124*, %124** %2, align 8 %4 = getelementptr inbounds %124, %124* %3, i32 0, i32 0 ret %101** %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5SkZipIJ6SkPathK7SkPointEE8IteratorC2EPKS3_m(%678* noundef align 8 dereferenceable_or_null(16) %0, %674* noundef %1, i64 noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %678*, align 8 %5 = alloca %674*, align 8 %6 = alloca i64, align 8 store %678* %0, %678** %4, align 8 store %674* %1, %674** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %678*, %678** %4, align 8 %8 = getelementptr inbounds %678, %678* %7, i32 0, i32 0 %9 = load %674*, %674** %5, align 8 store %674* %9, %674** %8, align 8 %10 = getelementptr inbounds %678, %678* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK5SkZipIJ6SkPathK7SkPointEE4sizeEv(%674* noundef align 8 dereferenceable_or_null(24) %0) #3 comdat align 2 { %2 = alloca %674*, align 8 store %674* %0, %674** %2, align 8 %3 = load %674*, %674** %2, align 8 %4 = getelementptr inbounds %674, %674* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEEixEm(%674* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %679, align 8 %4 = alloca %674*, align 8 %5 = alloca i64, align 8 store %674* %0, %674** %4, align 8 store i64 %1, i64* %5, align 8 %6 = load %674*, %674** %4, align 8 %7 = load i64, i64* %5, align 8 %8 = call { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEE5indexEm(%674* noundef align 8 dereferenceable_or_null(24) %6, i64 noundef %7) %9 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %10 = bitcast %680* %9 to { %101*, %5* }* %11 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %10, i32 0, i32 0 %12 = extractvalue { %101*, %5* } %8, 0 store %101* %12, %101** %11, align 8 %13 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %10, i32 0, i32 1 %14 = extractvalue { %101*, %5* } %8, 1 store %5* %14, %5** %13, align 8 %15 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %16 = bitcast %680* %15 to { %101*, %5* }* %17 = load { %101*, %5* }, { %101*, %5* }* %16, align 8 ret { %101*, %5* } %17 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEE5indexEm(%674* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %679, align 8 %4 = alloca %674*, align 8 %5 = alloca i64, align 8 %6 = alloca %685, align 1 store %674* %0, %674** %4, align 8 store i64 %1, i64* %5, align 8 %7 = load %674*, %674** %4, align 8 %8 = load i64, i64* %5, align 8 %9 = call { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS2_EEEmNS5_16integer_sequenceImJXspT_EEEE(%674* noundef align 8 dereferenceable_or_null(24) %7, i64 noundef %8) %10 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %11 = bitcast %680* %10 to { %101*, %5* }* %12 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %11, i32 0, i32 0 %13 = extractvalue { %101*, %5* } %9, 0 store %101* %13, %101** %12, align 8 %14 = getelementptr inbounds { %101*, %5* }, { %101*, %5* }* %11, i32 0, i32 1 %15 = extractvalue { %101*, %5* } %9, 1 store %5* %15, %5** %14, align 8 %16 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %17 = bitcast %680* %16 to { %101*, %5* }* %18 = load { %101*, %5* }, { %101*, %5* }* %17, align 8 ret { %101*, %5* } %18 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %101*, %5* } @_ZNK5SkZipIJ6SkPathK7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS2_EEEmNS5_16integer_sequenceImJXspT_EEEE(%674* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %679, align 8 %4 = alloca %685, align 1 %5 = alloca %674*, align 8 %6 = alloca i64, align 8 store %674* %0, %674** %5, align 8 store i64 %1, i64* %6, align 8 %7 = load %674*, %674** %5, align 8 %8 = getelementptr inbounds %674, %674* %7, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr3getILm0EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_(%675* noundef align 8 dereferenceable(16) %8) #21 %10 = load %101*, %101** %9, align 8 %11 = load i64, i64* %6, align 8 %12 = getelementptr inbounds %101, %101* %10, i64 %11 %13 = getelementptr inbounds %674, %674* %7, i32 0, i32 0 %14 = call noundef align 8 dereferenceable(8) %5** @_ZNSt4__Cr3getILm1EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_(%675* noundef align 8 dereferenceable(16) %13) #21 %15 = load %5*, %5** %14, align 8 %16 = load i64, i64* %6, align 8 %17 = getelementptr inbounds %5, %5* %15, i64 %16 call void @_ZNSt4__Cr5tupleIJR6SkPathRK7SkPointEEC2INS_4_AndELi0EEES2_S5_(%679* noundef align 8 dereferenceable_or_null(16) %3, %101* noundef align 8 dereferenceable(15) %12, %5* noundef align 4 dereferenceable(8) %17) #21 %18 = getelementptr inbounds %679, %679* %3, i32 0, i32 0 %19 = bitcast %680* %18 to { %101*, %5* }* %20 = load { %101*, %5* }, { %101*, %5* }* %19, align 8 ret { %101*, %5* } %20 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr3getILm0EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_(%675* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %675*, align 8 store %675* %0, %675** %2, align 8 %3 = load %675*, %675** %2, align 8 %4 = getelementptr inbounds %675, %675* %3, i32 0, i32 0 %5 = bitcast %676* %4 to %677* %6 = call noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr12__tuple_leafILm0EP6SkPathLb0EE3getEv(%677* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %101** %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %5** @_ZNSt4__Cr3getILm1EJP6SkPathPK7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKSA_(%675* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %675*, align 8 store %675* %0, %675** %2, align 8 %3 = load %675*, %675** %2, align 8 %4 = getelementptr inbounds %675, %675* %3, i32 0, i32 0 %5 = bitcast %676* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %193* %8 = call noundef align 8 dereferenceable(8) %5** @_ZNKSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EE3getEv(%193* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5** %8 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJR6SkPathRK7SkPointEEC2INS_4_AndELi0EEES2_S5_(%679* noundef align 8 dereferenceable_or_null(16) %0, %101* noundef align 8 dereferenceable(15) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %679*, align 8 %5 = alloca %101*, align 8 %6 = alloca %5*, align 8 %7 = alloca %234, align 1 %8 = alloca %686, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %679* %0, %679** %4, align 8 store %101* %1, %101** %5, align 8 store %5* %2, %5** %6, align 8 %11 = load %679*, %679** %4, align 8 %12 = getelementptr inbounds %679, %679* %11, i32 0, i32 0 %13 = load %101*, %101** %5, align 8 %14 = load %5*, %5** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR6SkPathRK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJS4_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_(%680* noundef align 8 dereferenceable_or_null(16) %12, %101* noundef align 8 dereferenceable(15) %13, %5* noundef align 4 dereferenceable(8) %14) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr12__tuple_leafILm0EP6SkPathLb0EE3getEv(%677* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %677*, align 8 store %677* %0, %677** %2, align 8 %3 = load %677*, %677** %2, align 8 %4 = getelementptr inbounds %677, %677* %3, i32 0, i32 0 ret %101** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %5** @_ZNKSt4__Cr12__tuple_leafILm1EPK7SkPointLb0EE3getEv(%193* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %193*, align 8 store %193* %0, %193** %2, align 8 %3 = load %193*, %193** %2, align 8 %4 = getelementptr inbounds %193, %193* %3, i32 0, i32 0 ret %5** %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR6SkPathRK7SkPointEEC2IJLm0ELm1EEJS4_S7_EJEJEJS4_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_(%680* noundef align 8 dereferenceable_or_null(16) %0, %101* noundef align 8 dereferenceable(15) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %686, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %680*, align 8 %9 = alloca %101*, align 8 %10 = alloca %5*, align 8 store %680* %0, %680** %8, align 8 store %101* %1, %101** %9, align 8 store %5* %2, %5** %10, align 8 %11 = load %680*, %680** %8, align 8 %12 = bitcast %680* %11 to %681* %13 = load %101*, %101** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EEC2IS2_vEEOT_(%681* noundef align 8 dereferenceable_or_null(8) %12, %101* noundef align 8 dereferenceable(15) %13) #21 %14 = bitcast %680* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 8 %16 = bitcast i8* %15 to %682* %17 = load %5*, %5** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EEC2IS3_vEEOT_(%682* noundef align 8 dereferenceable_or_null(8) %16, %5* noundef align 4 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EEC2IS2_vEEOT_(%681* noundef align 8 dereferenceable_or_null(8) %0, %101* noundef align 8 dereferenceable(15) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %681*, align 8 %4 = alloca %101*, align 8 store %681* %0, %681** %3, align 8 store %101* %1, %101** %4, align 8 %5 = load %681*, %681** %3, align 8 %6 = getelementptr inbounds %681, %681* %5, i32 0, i32 0 %7 = load %101*, %101** %4, align 8 store %101* %7, %101** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EEC2IS3_vEEOT_(%682* noundef align 8 dereferenceable_or_null(8) %0, %5* noundef align 4 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %682*, align 8 %4 = alloca %5*, align 8 store %682* %0, %682** %3, align 8 store %5* %1, %5** %4, align 8 %5 = load %682*, %682** %3, align 8 %6 = getelementptr inbounds %682, %682* %5, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 store %5* %7, %5** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(15) %101* @_ZNSt4__Cr12__tuple_leafILm0ER6SkPathLb0EE3getEv(%681* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %681*, align 8 store %681* %0, %681** %2, align 8 %3 = load %681*, %681** %2, align 8 %4 = getelementptr inbounds %681, %681* %3, i32 0, i32 0 %5 = load %101*, %101** %4, align 8 ret %101* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1ERK7SkPointLb0EE3getEv(%682* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %682*, align 8 store %682* %0, %682** %2, align 8 %3 = load %682*, %682** %2, align 8 %4 = getelementptr inbounds %682, %682* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 ret %5* %5 } ; Function Attrs: null_pointer_is_valid declare noundef i32 @_ZNK8SkCanvas12getSaveCountEv(%268* noundef align 8 dereferenceable_or_null(3232)) #8 ; Function Attrs: null_pointer_is_valid declare noundef i32 @_ZN8SkCanvas4saveEv(%268* noundef align 8 dereferenceable_or_null(3232)) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN8SkCanvas14restoreToCountEi(%268* noundef align 8 dereferenceable_or_null(3232), i32 noundef) #8 ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrStyle8DashInfoD2Ev(%672* noundef align 8 dereferenceable_or_null(40) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %672*, align 8 store %672* %0, %672** %2, align 8 %3 = load %672*, %672** %2, align 8 %4 = getelementptr inbounds %672, %672* %3, i32 0, i32 2 call void @_ZN13SkAutoSTArrayILi4EfED2Ev(%673* noundef align 8 dereferenceable_or_null(32) %4) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13SkAutoSTArrayILi4EfED2Ev(%673* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %673*, align 8 store %673* %0, %673** %2, align 8 %3 = load %673*, %673** %2, align 8 call void @_ZN13SkAutoSTArrayILi4EfE5resetEi(%673* noundef align 8 dereferenceable_or_null(32) %3, i32 noundef 0) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13SkAutoSTArrayILi4EfE5resetEi(%673* noundef align 8 dereferenceable_or_null(32) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %673*, align 8 %4 = alloca i32, align 4 %5 = alloca float*, align 8 %6 = alloca float*, align 8 %7 = alloca float*, align 8 store %673* %0, %673** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %673*, %673** %3, align 8 %9 = bitcast float** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %9) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %5, align 8, !annotation !6 %10 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 %11 = load float*, float** %10, align 8 store float* %11, float** %5, align 8 %12 = bitcast float** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %12) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %6, align 8, !annotation !6 %13 = load float*, float** %5, align 8 %14 = getelementptr inbounds %673, %673* %8, i32 0, i32 0 %15 = load i32, i32* %14, align 8 %16 = sext i32 %15 to i64 %17 = getelementptr inbounds float, float* %13, i64 %16 store float* %17, float** %6, align 8 br label %18 18: ; preds = %22, %2 %19 = load float*, float** %6, align 8 %20 = load float*, float** %5, align 8 %21 = icmp ugt float* %19, %20 br i1 %21, label %22, label %25 22: ; preds = %18 %23 = load float*, float** %6, align 8 %24 = getelementptr inbounds float, float* %23, i32 -1 store float* %24, float** %6, align 8 br label %18, !llvm.loop !14 25: ; preds = %18 %26 = getelementptr inbounds %673, %673* %8, i32 0, i32 0 %27 = load i32, i32* %26, align 8 %28 = load i32, i32* %4, align 4 %29 = icmp ne i32 %27, %28 br i1 %29, label %30, label %61 30: ; preds = %25 %31 = getelementptr inbounds %673, %673* %8, i32 0, i32 0 %32 = load i32, i32* %31, align 8 %33 = icmp sgt i32 %32, 4 br i1 %33, label %34, label %38 34: ; preds = %30 %35 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 %36 = load float*, float** %35, align 8 %37 = bitcast float* %36 to i8* call void @_Z7sk_freePv(i8* noundef %37) br label %38 38: ; preds = %34, %30 %39 = load i32, i32* %4, align 4 %40 = icmp sgt i32 %39, 4 br i1 %40, label %41, label %47 41: ; preds = %38 %42 = load i32, i32* %4, align 4 %43 = sext i32 %42 to i64 %44 = call noundef i8* @_Z15sk_malloc_throwmm(i64 noundef %43, i64 noundef 4) %45 = bitcast i8* %44 to float* %46 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 store float* %45, float** %46, align 8 br label %58 47: ; preds = %38 %48 = load i32, i32* %4, align 4 %49 = icmp sgt i32 %48, 0 br i1 %49, label %50, label %55 50: ; preds = %47 %51 = getelementptr inbounds %673, %673* %8, i32 0, i32 2 %52 = getelementptr inbounds [16 x i8], [16 x i8]* %51, i64 0, i64 0 %53 = bitcast i8* %52 to float* %54 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 store float* %53, float** %54, align 8 br label %57 55: ; preds = %47 %56 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 store float* null, float** %56, align 8 br label %57 57: ; preds = %55, %50 br label %58 58: ; preds = %57, %41 %59 = load i32, i32* %4, align 4 %60 = getelementptr inbounds %673, %673* %8, i32 0, i32 0 store i32 %59, i32* %60, align 8 br label %61 61: ; preds = %58, %25 %62 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 %63 = load float*, float** %62, align 8 store float* %63, float** %6, align 8 %64 = bitcast float** %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %64) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %7, align 8, !annotation !6 %65 = getelementptr inbounds %673, %673* %8, i32 0, i32 1 %66 = load float*, float** %65, align 8 %67 = load i32, i32* %4, align 4 %68 = sext i32 %67 to i64 %69 = getelementptr inbounds float, float* %66, i64 %68 store float* %69, float** %7, align 8 br label %70 70: ; preds = %74, %61 %71 = load float*, float** %6, align 8 %72 = load float*, float** %7, align 8 %73 = icmp ult float* %71, %72 br i1 %73, label %74, label %79 74: ; preds = %70 %75 = load float*, float** %6, align 8 %76 = getelementptr inbounds float, float* %75, i32 1 store float* %76, float** %6, align 8 %77 = bitcast float* %75 to i8* %78 = bitcast i8* %77 to float* br label %70, !llvm.loop !15 79: ; preds = %70 %80 = bitcast float** %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %80) #21 %81 = bitcast float** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %81) #21 %82 = bitcast float** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %82) #21 ret void } ; Function Attrs: null_pointer_is_valid declare void @_Z7sk_freePv(i8* noundef) #8 ; Function Attrs: null_pointer_is_valid declare noundef i8* @_Z15sk_malloc_throwmm(i64 noundef, i64 noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @79(%540* noundef align 8 dereferenceable_or_null(192) %0) #3 align 2 { %2 = alloca %540*, align 8 store %540* %0, %540** %2, align 8 %3 = load %540*, %540** %2, align 8 %4 = getelementptr inbounds %540, %540* %3, i32 0, i32 2 %5 = call noundef i64 @_ZNK6SkSpanIK7SkPointE10size_bytesEv(%120* noundef align 8 dereferenceable_or_null(16) %4) %6 = getelementptr inbounds %540, %540* %3, i32 0, i32 3 %7 = call noundef i64 @_ZNK6SkSpanIKtE10size_bytesEv(%121* noundef align 8 dereferenceable_or_null(16) %6) %8 = add i64 %5, %7 %9 = getelementptr inbounds %540, %540* %3, i32 0, i32 3 %10 = call noundef i32 @_Z7SkCountI6SkSpanIKtEEiRKT_(%121* noundef align 8 dereferenceable(16) %9) %11 = sext i32 %10 to i64 %12 = mul i64 %11, 16 %13 = add i64 %8, %12 %14 = trunc i64 %13 to i32 ret i32 %14 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIK7SkPointE10size_bytesEv(%120* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = getelementptr inbounds %120, %120* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = mul i64 %5, 8 ret i64 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIKtE10size_bytesEv(%121* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = getelementptr inbounds %121, %121* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = mul i64 %5, 2 ret i64 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z7SkCountI6SkSpanIKtEEiRKT_(%121* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = call noundef i64 @_ZNSt4__Cr4sizeI6SkSpanIKtEEEDTcldtfp_4sizeEERKT_(%121* noundef align 8 dereferenceable(16) %3) %5 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef %4) ret i32 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z4SkToIimET_T0_(i64 noundef %0) #3 comdat { %2 = alloca i64, align 8 store i64 %0, i64* %2, align 8 %3 = load i64, i64* %2, align 8 %4 = trunc i64 %3 to i32 ret i32 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNSt4__Cr4sizeI6SkSpanIKtEEEDTcldtfp_4sizeEERKT_(%121* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = call noundef i64 @_ZNK6SkSpanIKtE4sizeEv(%121* noundef align 8 dereferenceable_or_null(16) %3) ret i64 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIKtE4sizeEv(%121* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = getelementptr inbounds %121, %121* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @80(%540* noundef align 8 dereferenceable_or_null(192) %0, %601* noundef align 8 dereferenceable(56) %1) #3 align 2 { %3 = alloca %540*, align 8 %4 = alloca %601*, align 8 %5 = alloca %120*, align 8 %6 = alloca %5*, align 8 %7 = alloca %5*, align 8 %8 = alloca %5, align 4 %9 = alloca %121*, align 8 %10 = alloca i16*, align 8 %11 = alloca i16*, align 8 %12 = alloca i16, align 2 store %540* %0, %540** %3, align 8 store %601* %1, %601** %4, align 8 %13 = load %540*, %540** %3, align 8 %14 = load %601*, %601** %4, align 8 %15 = getelementptr inbounds %540, %540* %13, i32 0, i32 0 %16 = load i8, i8* %15, align 8, !range !7 %17 = trunc i8 %16 to i1 %18 = zext i1 %17 to i32 %19 = bitcast %601* %14 to void (%601*, i32)*** %20 = load void (%601*, i32)**, void (%601*, i32)*** %19, align 8 %21 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %20, i64 7 %22 = load void (%601*, i32)*, void (%601*, i32)** %21, align 8 call void %22(%601* noundef align 8 dereferenceable_or_null(56) %14, i32 noundef %18) %23 = load %601*, %601** %4, align 8 %24 = getelementptr inbounds %540, %540* %13, i32 0, i32 1 %25 = load float, float* %24, align 4 %26 = bitcast %601* %23 to void (%601*, float)*** %27 = load void (%601*, float)**, void (%601*, float)*** %26, align 8 %28 = getelementptr inbounds void (%601*, float)*, void (%601*, float)** %27, i64 5 %29 = load void (%601*, float)*, void (%601*, float)** %28, align 8 call void %29(%601* noundef align 8 dereferenceable_or_null(56) %23, float noundef %25) %30 = load %601*, %601** %4, align 8 %31 = getelementptr inbounds %540, %540* %13, i32 0, i32 2 %32 = call noundef i32 @_Z7SkCountI6SkSpanIK7SkPointEEiRKT_(%120* noundef align 8 dereferenceable(16) %31) %33 = bitcast %601* %30 to void (%601*, i32)*** %34 = load void (%601*, i32)**, void (%601*, i32)*** %33, align 8 %35 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %34, i64 7 %36 = load void (%601*, i32)*, void (%601*, i32)** %35, align 8 call void %36(%601* noundef align 8 dereferenceable_or_null(56) %30, i32 noundef %32) %37 = bitcast %120** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %37) #21 store %120* inttoptr (i64 -6148914691236517206 to %120*), %120** %5, align 8, !annotation !6 %38 = getelementptr inbounds %540, %540* %13, i32 0, i32 2 store %120* %38, %120** %5, align 8 %39 = bitcast %5** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %39) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %6, align 8, !annotation !6 %40 = load %120*, %120** %5, align 8 %41 = call noundef %5* @_ZNK6SkSpanIK7SkPointE5beginEv(%120* noundef align 8 dereferenceable_or_null(16) %40) store %5* %41, %5** %6, align 8 %42 = bitcast %5** %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %42) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %7, align 8, !annotation !6 %43 = load %120*, %120** %5, align 8 %44 = call noundef %5* @_ZNK6SkSpanIK7SkPointE3endEv(%120* noundef align 8 dereferenceable_or_null(16) %43) store %5* %44, %5** %7, align 8 br label %45 45: ; preds = %66, %2 %46 = load %5*, %5** %6, align 8 %47 = load %5*, %5** %7, align 8 %48 = icmp ne %5* %46, %47 br i1 %48, label %53, label %49 49: ; preds = %45 %50 = bitcast %5** %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %50) #21 %51 = bitcast %5** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %51) #21 %52 = bitcast %120** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %52) #21 br label %69 53: ; preds = %45 %54 = bitcast %5* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %54) #21 %55 = getelementptr inbounds %5, %5* %8, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %55, align 4, !annotation !6 %56 = getelementptr inbounds %5, %5* %8, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %56, align 4, !annotation !6 %57 = load %5*, %5** %6, align 8 %58 = bitcast %5* %8 to i8* %59 = bitcast %5* %57 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %58, i8* align 4 %59, i64 8, i1 false) %60 = load %601*, %601** %4, align 8 %61 = bitcast %601* %60 to void (%601*, %5*)*** %62 = load void (%601*, %5*)**, void (%601*, %5*)*** %61, align 8 %63 = getelementptr inbounds void (%601*, %5*)*, void (%601*, %5*)** %62, i64 16 %64 = load void (%601*, %5*)*, void (%601*, %5*)** %63, align 8 call void %64(%601* noundef align 8 dereferenceable_or_null(56) %60, %5* noundef align 4 dereferenceable(8) %8) %65 = bitcast %5* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %65) #21 br label %66 66: ; preds = %53 %67 = load %5*, %5** %6, align 8 %68 = getelementptr inbounds %5, %5* %67, i32 1 store %5* %68, %5** %6, align 8 br label %45 69: ; preds = %49 %70 = bitcast %121** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %70) #21 store %121* inttoptr (i64 -6148914691236517206 to %121*), %121** %9, align 8, !annotation !6 %71 = getelementptr inbounds %540, %540* %13, i32 0, i32 3 store %121* %71, %121** %9, align 8 %72 = bitcast i16** %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %72) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %10, align 8, !annotation !6 %73 = load %121*, %121** %9, align 8 %74 = call noundef i16* @_ZNK6SkSpanIKtE5beginEv(%121* noundef align 8 dereferenceable_or_null(16) %73) store i16* %74, i16** %10, align 8 %75 = bitcast i16** %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %75) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %11, align 8, !annotation !6 %76 = load %121*, %121** %9, align 8 %77 = call noundef i16* @_ZNK6SkSpanIKtE3endEv(%121* noundef align 8 dereferenceable_or_null(16) %76) store i16* %77, i16** %11, align 8 br label %78 78: ; preds = %98, %69 %79 = load i16*, i16** %10, align 8 %80 = load i16*, i16** %11, align 8 %81 = icmp ne i16* %79, %80 br i1 %81, label %86, label %82 82: ; preds = %78 %83 = bitcast i16** %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %83) #21 %84 = bitcast i16** %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %84) #21 %85 = bitcast %121** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %85) #21 br label %101 86: ; preds = %78 %87 = bitcast i16* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 2, i8* %87) #21 store i16 -21846, i16* %12, align 2, !annotation !6 %88 = load i16*, i16** %10, align 8 %89 = load i16, i16* %88, align 2 store i16 %89, i16* %12, align 2 %90 = load %601*, %601** %4, align 8 %91 = load i16, i16* %12, align 2 %92 = zext i16 %91 to i32 %93 = bitcast %601* %90 to void (%601*, i32)*** %94 = load void (%601*, i32)**, void (%601*, i32)*** %93, align 8 %95 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %94, i64 7 %96 = load void (%601*, i32)*, void (%601*, i32)** %95, align 8 call void %96(%601* noundef align 8 dereferenceable_or_null(56) %90, i32 noundef %92) %97 = bitcast i16* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 2, i8* %97) #21 br label %98 98: ; preds = %86 %99 = load i16*, i16** %10, align 8 %100 = getelementptr inbounds i16, i16* %99, i32 1 store i16* %100, i16** %10, align 8 br label %78 101: ; preds = %82 %102 = getelementptr inbounds %540, %540* %13, i32 0, i32 5 %103 = call noundef %128* @_ZNK16SkAutoDescriptor7getDescEv(%127* noundef align 8 dereferenceable_or_null(132) %102) %104 = load %601*, %601** %4, align 8 call void @_ZNK12SkDescriptor7flattenER13SkWriteBuffer(%128* noundef align 4 dereferenceable_or_null(12) %103, %601* noundef align 8 dereferenceable(56) %104) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z7SkCountI6SkSpanIK7SkPointEEiRKT_(%120* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = call noundef i64 @_ZNSt4__Cr4sizeI6SkSpanIK7SkPointEEEDTcldtfp_4sizeEERKT_(%120* noundef align 8 dereferenceable(16) %3) %5 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef %4) ret i32 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZNK6SkSpanIK7SkPointE3endEv(%120* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = getelementptr inbounds %120, %120* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 %6 = getelementptr inbounds %120, %120* %3, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = getelementptr inbounds %5, %5* %5, i64 %7 ret %5* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i16* @_ZNK6SkSpanIKtE5beginEv(%121* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = getelementptr inbounds %121, %121* %3, i32 0, i32 0 %5 = load i16*, i16** %4, align 8 ret i16* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i16* @_ZNK6SkSpanIKtE3endEv(%121* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %121*, align 8 store %121* %0, %121** %2, align 8 %3 = load %121*, %121** %2, align 8 %4 = getelementptr inbounds %121, %121* %3, i32 0, i32 0 %5 = load i16*, i16** %4, align 8 %6 = getelementptr inbounds %121, %121* %3, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = getelementptr inbounds i16, i16* %5, i64 %7 ret i16* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %128* @_ZNK16SkAutoDescriptor7getDescEv(%127* noundef align 8 dereferenceable_or_null(132) %0) #3 comdat align 2 { %2 = alloca %127*, align 8 store %127* %0, %127** %2, align 8 %3 = load %127*, %127** %2, align 8 %4 = getelementptr inbounds %127, %127* %3, i32 0, i32 0 %5 = load %128*, %128** %4, align 8 ret %128* %5 } ; Function Attrs: null_pointer_is_valid declare void @_ZNK12SkDescriptor7flattenER13SkWriteBuffer(%128* noundef align 4 dereferenceable_or_null(12), %601* noundef align 8 dereferenceable(56)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNSt4__Cr4sizeI6SkSpanIK7SkPointEEEDTcldtfp_4sizeEERKT_(%120* noundef align 8 dereferenceable(16) %0) #3 comdat { %2 = alloca %120*, align 8 store %120* %0, %120** %2, align 8 %3 = load %120*, %120** %2, align 8 %4 = call noundef i64 @_ZNK6SkSpanIK7SkPointE4sizeEv(%120* noundef align 8 dereferenceable_or_null(16) %3) ret i64 %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @81(%537* noundef align 8 dereferenceable_or_null(8) %0, %539** noundef align 8 dereferenceable(8) %1, %656* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 align 2 { %4 = alloca %537*, align 8 %5 = alloca %539**, align 8 %6 = alloca %656*, align 8 %7 = alloca %656, align 1 store %537* %0, %537** %4, align 8 store %539** %1, %539*** %5, align 8 store %656* %2, %656** %6, align 8 %8 = load %537*, %537** %4, align 8 %9 = bitcast %537* %8 to %538* %10 = load %539**, %539*** %5, align 8 call void @82(%538* noundef align 8 dereferenceable_or_null(8) %9, %539** noundef align 8 dereferenceable(8) %10) %11 = bitcast %537* %8 to %660* %12 = load %656*, %656** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2ENS_18__default_init_tagE(%660* noundef align 1 dereferenceable_or_null(1) %11) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @82(%538* noundef align 8 dereferenceable_or_null(8) %0, %539** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 { %3 = alloca %538*, align 8 %4 = alloca %539**, align 8 store %538* %0, %538** %3, align 8 store %539** %1, %539*** %4, align 8 %5 = load %538*, %538** %3, align 8 %6 = getelementptr inbounds %538, %538* %5, i32 0, i32 0 %7 = load %539**, %539*** %4, align 8 %8 = load %539*, %539** %7, align 8 store %539* %8, %539** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z7SkCountI5SkZipIJ14SkGlyphVariant7SkPointEEEiRKT_(%530* noundef align 8 dereferenceable(24) %0) #3 comdat { %2 = alloca %530*, align 8 store %530* %0, %530** %2, align 8 %3 = load %530*, %530** %2, align 8 %4 = call noundef i64 @_ZNSt4__Cr4sizeI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_4sizeEERKT_(%530* noundef align 8 dereferenceable(24) %3) %5 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef %4) ret i32 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZN6sktext3gpu15SubRunAllocator12makePODArrayI7SkPointEEPT_i(%10* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %10*, align 8 %4 = alloca i32, align 4 store %10* %0, %10** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %10*, %10** %3, align 8 %6 = getelementptr inbounds %10, %10* %5, i32 0, i32 0 %7 = load i32, i32* %4, align 4 %8 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPci(%11* noundef align 8 dereferenceable_or_null(16) %6, i32 noundef %7) %9 = bitcast i8* %8 to %5* ret %5* %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i16* @_ZN6sktext3gpu15SubRunAllocator12makePODArrayItEEPT_i(%10* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %10*, align 8 %4 = alloca i32, align 4 store %10* %0, %10** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %10*, %10** %3, align 8 %6 = getelementptr inbounds %10, %10* %5, i32 0, i32 0 %7 = load i32, i32* %4, align 4 %8 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPci(%11* noundef align 8 dereferenceable_or_null(16) %6, i32 noundef %7) %9 = bitcast i8* %8 to i16* ret i16* %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %101*, i32 } @_ZN6sktext3gpu15SubRunAllocator15makeUniqueArrayI6SkPathEENSt4__Cr10unique_ptrIA_T_NS1_14ArrayDestroyerEEEi(%10* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %122, align 8 %4 = alloca %10*, align 8 %5 = alloca i32, align 4 %6 = alloca %101*, align 8 %7 = alloca i32, align 4 %8 = alloca %126, align 4 store %10* %0, %10** %4, align 8 store i32 %1, i32* %5, align 4 %9 = load %10*, %10** %4, align 8 %10 = bitcast %101** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %10) #21 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %6, align 8, !annotation !6 %11 = getelementptr inbounds %10, %10* %9, i32 0, i32 0 %12 = load i32, i32* %5, align 4 %13 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPci(%11* noundef align 8 dereferenceable_or_null(16) %11, i32 noundef %12) %14 = bitcast i8* %13 to %101* store %101* %14, %101** %6, align 8 %15 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %15) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 store i32 0, i32* %7, align 4 br label %16 16: ; preds = %29, %2 %17 = load i32, i32* %7, align 4 %18 = load i32, i32* %5, align 4 %19 = icmp slt i32 %17, %18 br i1 %19, label %22, label %20 20: ; preds = %16 %21 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %21) #21 br label %32 22: ; preds = %16 %23 = load %101*, %101** %6, align 8 %24 = load i32, i32* %7, align 4 %25 = sext i32 %24 to i64 %26 = getelementptr inbounds %101, %101* %23, i64 %25 %27 = bitcast %101* %26 to i8* %28 = bitcast i8* %27 to %101* call void @_ZN6SkPathC1Ev(%101* noundef align 8 dereferenceable_or_null(15) %28) br label %29 29: ; preds = %22 %30 = load i32, i32* %7, align 4 %31 = add nsw i32 %30, 1 store i32 %31, i32* %7, align 4 br label %16, !llvm.loop !16 32: ; preds = %20 %33 = load %101*, %101** %6, align 8 %34 = bitcast %126* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %34) #21 %35 = getelementptr inbounds %126, %126* %8, i32 0, i32 0 %36 = load i32, i32* %5, align 4 store i32 %36, i32* %35, align 4 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IPS1_Lb1EvvEET_NS_16__dependent_typeINS_27__unique_ptr_deleter_sfinaeIS6_EEXT0_EE20__good_rval_ref_typeE(%122* noundef align 8 dereferenceable_or_null(16) %3, %101* noundef %33, %126* noundef align 4 dereferenceable(4) %8) #21 %37 = bitcast %126* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %37) #21 %38 = bitcast %101** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %38) #21 %39 = getelementptr inbounds %122, %122* %3, i32 0, i32 0 %40 = bitcast %123* %39 to { %101*, i32 }* %41 = load { %101*, i32 }, { %101*, i32 }* %40, align 8 ret { %101*, i32 } %41 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_Z15SkMakeEnumerateIK5SkZipIJ14SkGlyphVariant7SkPointEENS3_8IteratorEE11SkEnumerateIT0_NSt4__Cr9monostateEERT_(%661* noalias sret(%661) align 8 %0, %530* noundef align 8 dereferenceable(24) %1) #7 comdat { %3 = alloca i8*, align 8 %4 = alloca %530*, align 8 %5 = alloca %663, align 8 %6 = alloca %663, align 8 %7 = bitcast %661* %0 to i8* store i8* %7, i8** %3, align 8 store %530* %1, %530** %4, align 8 %8 = load %530*, %530** %4, align 8 call void @_ZNSt4__Cr5beginI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_5beginEERKT_(%663* sret(%663) align 8 %5, %530* noundef align 8 dereferenceable(24) %8) %9 = load %530*, %530** %4, align 8 call void @_ZNSt4__Cr3endI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_3endEERKT_(%663* sret(%663) align 8 %6, %530* noundef align 8 dereferenceable(24) %9) call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ES4_S4_(%661* noundef align 8 dereferenceable_or_null(48) %0, %663* noundef %5, %663* noundef %6) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5beginEv(%664* noalias sret(%664) align 8 %0, %661* noundef align 8 dereferenceable_or_null(48) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %661*, align 8 %5 = alloca %663, align 8 %6 = bitcast %664* %0 to i8* store i8* %6, i8** %3, align 8 store %661* %1, %661** %4, align 8 %7 = load %661*, %661** %4, align 8 %8 = getelementptr inbounds %661, %661* %7, i32 0, i32 1 %9 = load i64, i64* %8, align 8 %10 = getelementptr inbounds %661, %661* %7, i32 0, i32 2 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %5, %663* noundef align 8 dereferenceable(16) %10) call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ElS4_(%664* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %9, %663* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE3endEv(%664* noalias sret(%664) align 8 %0, %661* noundef align 8 dereferenceable_or_null(48) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %661*, align 8 %5 = alloca %663, align 8 %6 = bitcast %664* %0 to i8* store i8* %6, i8** %3, align 8 store %661* %1, %661** %4, align 8 %7 = load %661*, %661** %4, align 8 %8 = getelementptr inbounds %661, %661* %7, i32 0, i32 1 %9 = load i64, i64* %8, align 8 %10 = call noundef i64 @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5ssizeEv(%661* noundef align 8 dereferenceable_or_null(48) %7) %11 = add nsw i64 %9, %10 %12 = getelementptr inbounds %661, %661* %7, i32 0, i32 3 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %5, %663* noundef align 8 dereferenceable(16) %12) call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ElS4_(%664* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %11, %663* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorneERKS8_(%664* noundef align 8 dereferenceable_or_null(24) %0, %664* noundef align 8 dereferenceable(24) %1) #3 comdat align 2 { %3 = alloca %664*, align 8 %4 = alloca %664*, align 8 store %664* %0, %664** %3, align 8 store %664* %1, %664** %4, align 8 %5 = load %664*, %664** %3, align 8 %6 = getelementptr inbounds %664, %664* %5, i32 0, i32 1 %7 = load %664*, %664** %4, align 8 %8 = getelementptr inbounds %664, %664* %7, i32 0, i32 1 %9 = call noundef zeroext i1 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorneERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %6, %663* noundef align 8 dereferenceable(16) %8) ret i1 %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratordeEv(%665* noalias sret(%665) align 8 %0, %664* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca %664*, align 8 %4 = alloca %687, align 8 store %664* %1, %664** %3, align 8 %5 = load %664*, %664** %3, align 8 %6 = getelementptr inbounds %664, %664* %5, i32 0, i32 0 %7 = load i64, i64* %6, align 8 %8 = bitcast %687* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %8) #21 %9 = getelementptr inbounds %664, %664* %5, i32 0, i32 1 %10 = call { %96*, %5* } @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratordeEv(%663* noundef align 8 dereferenceable_or_null(16) %9) %11 = getelementptr inbounds %687, %687* %4, i32 0, i32 0 %12 = bitcast %688* %11 to { %96*, %5* }* %13 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %12, i32 0, i32 0 %14 = extractvalue { %96*, %5* } %10, 0 store %96* %14, %96** %13, align 8 %15 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %12, i32 0, i32 1 %16 = extractvalue { %96*, %5* } %10, 1 store %5* %16, %5** %15, align 8 call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE10MakeResultEmONS5_5tupleIJRS1_RS2_EEE(%665* sret(%665) align 8 %0, i64 noundef %7, %687* noundef align 8 dereferenceable(16) %4) %17 = bitcast %687* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %17) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %665*, align 8 store %665* %0, %665** %2, align 8 %3 = load %665*, %665** %2, align 8 %4 = getelementptr inbounds %665, %665* %3, i32 0, i32 0 %5 = bitcast %666* %4 to %667* %6 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EmLb0EE3getEv(%667* noundef align 8 dereferenceable_or_null(8) %5) #21 ret i64* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm1EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %665*, align 8 store %665* %0, %665** %2, align 8 %3 = load %665*, %665** %2, align 8 %4 = getelementptr inbounds %665, %665* %3, i32 0, i32 0 %5 = bitcast %666* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %668* %8 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EE3getEv(%668* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %96* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm2EJmR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%665* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %665*, align 8 store %665* %0, %665** %2, align 8 %3 = load %665*, %665** %2, align 8 %4 = getelementptr inbounds %665, %665* %3, i32 0, i32 0 %5 = bitcast %666* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 16 %7 = bitcast i8* %6 to %669* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EE3getEv(%669* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %98* @_ZNK14SkGlyphVariant5glyphEv(%96* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %96*, align 8 store %96* %0, %96** %2, align 8 %3 = load %96*, %96** %2, align 8 %4 = getelementptr inbounds %96, %96* %3, i32 0, i32 0 %5 = bitcast %97* %4 to %98** %6 = load %98*, %98** %5, align 8 ret %98* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i16 @_ZNK7SkGlyph10getGlyphIDEv(%98* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %98*, align 8 store %98* %0, %98** %2, align 8 %3 = load %98*, %98** %2, align 8 %4 = getelementptr inbounds %98, %98* %3, i32 0, i32 11 %5 = call noundef zeroext i16 @_ZNK15SkPackedGlyphID7glyphIDEv(%117* noundef align 4 dereferenceable_or_null(4) %4) ret i16 %5 } ; Function Attrs: null_pointer_is_valid declare noundef %101* @_ZNK7SkGlyph4pathEv(%98* noundef align 8 dereferenceable_or_null(48)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(15) %101* @_ZNKSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEixEm(%122* noundef align 8 dereferenceable_or_null(16) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %122*, align 8 %4 = alloca i64, align 8 store %122* %0, %122** %3, align 8 store i64 %1, i64* %4, align 8 %5 = load %122*, %122** %3, align 8 %6 = getelementptr inbounds %122, %122* %5, i32 0, i32 0 %7 = call noundef align 8 dereferenceable(8) %101** @_ZNKSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %6) #21 %8 = load %101*, %101** %7, align 8 %9 = load i64, i64* %4, align 8 %10 = getelementptr inbounds %101, %101* %8, i64 %9 ret %101* %10 } ; Function Attrs: null_pointer_is_valid declare noundef align 8 dereferenceable(15) %101* @_ZN6SkPathaSERKS_(%101* noundef align 8 dereferenceable_or_null(15), %101* noundef align 8 dereferenceable(15)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorppEv(%664* noalias sret(%664) align 8 %0, %664* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %664*, align 8 %5 = bitcast %664* %0 to i8* store i8* %5, i8** %3, align 8 store %664* %1, %664** %4, align 8 %6 = load %664*, %664** %4, align 8 %7 = getelementptr inbounds %664, %664* %6, i32 0, i32 0 %8 = load i64, i64* %7, align 8 %9 = add nsw i64 %8, 1 store i64 %9, i64* %7, align 8 %10 = getelementptr inbounds %664, %664* %6, i32 0, i32 1 %11 = call noundef align 8 dereferenceable(16) %663* @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorppEv(%663* noundef align 8 dereferenceable_or_null(16) %10) call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ERKS8_(%664* noundef align 8 dereferenceable_or_null(24) %0, %664* noundef align 8 dereferenceable(24) %6) ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %5*, i64 } @_Z10SkMakeSpanI7SkPointiE6SkSpanIT_EPS2_T0_(%5* noundef %0, i32 noundef %1) #7 comdat { %3 = alloca %129, align 8 %4 = alloca %5*, align 8 %5 = alloca i32, align 4 store %5* %0, %5** %4, align 8 store i32 %1, i32* %5, align 4 %6 = load %5*, %5** %4, align 8 %7 = load i32, i32* %5, align 4 %8 = call noundef i64 @_Z4SkToImiET_T0_(i32 noundef %7) call void @_ZN6SkSpanI7SkPointEC2EPS0_m(%129* noundef align 8 dereferenceable_or_null(16) %3, %5* noundef %6, i64 noundef %8) %9 = bitcast %129* %3 to { %5*, i64 }* %10 = load { %5*, i64 }, { %5*, i64 }* %9, align 8 ret { %5*, i64 } %10 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { i16*, i64 } @_Z10SkMakeSpanItiE6SkSpanIT_EPS1_T0_(i16* noundef %0, i32 noundef %1) #7 comdat { %3 = alloca %130, align 8 %4 = alloca i16*, align 8 %5 = alloca i32, align 4 store i16* %0, i16** %4, align 8 store i32 %1, i32* %5, align 4 %6 = load i16*, i16** %4, align 8 %7 = load i32, i32* %5, align 4 %8 = call noundef i64 @_Z4SkToImiET_T0_(i32 noundef %7) call void @_ZN6SkSpanItEC2EPtm(%130* noundef align 8 dereferenceable_or_null(16) %3, i16* noundef %6, i64 noundef %8) %9 = bitcast %130* %3 to { i16*, i64 }* %10 = load { i16*, i64 }, { i16*, i64 }* %9, align 8 ret { i16*, i64 } %10 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @83(%540* noundef align 8 dereferenceable_or_null(192) %0, i1 noundef zeroext %1, float noundef %2, %5* %3, i64 %4, i16* %5, i64 %6, %122* noundef byval(%122) align 8 %7, %128* noundef align 4 dereferenceable(12) %8) unnamed_addr #0 align 2 { %10 = alloca %129, align 8 %11 = alloca %130, align 8 %12 = alloca %540*, align 8 %13 = alloca i8, align 1 %14 = alloca float, align 4 %15 = alloca %128*, align 8 %16 = bitcast %129* %10 to { %5*, i64 }* %17 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %16, i32 0, i32 0 store %5* %3, %5** %17, align 8 %18 = getelementptr inbounds { %5*, i64 }, { %5*, i64 }* %16, i32 0, i32 1 store i64 %4, i64* %18, align 8 %19 = bitcast %130* %11 to { i16*, i64 }* %20 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %19, i32 0, i32 0 store i16* %5, i16** %20, align 8 %21 = getelementptr inbounds { i16*, i64 }, { i16*, i64 }* %19, i32 0, i32 1 store i64 %6, i64* %21, align 8 store %540* %0, %540** %12, align 8 %22 = zext i1 %1 to i8 store i8 %22, i8* %13, align 1 store float %2, float* %14, align 4 store %128* %8, %128** %15, align 8 %23 = load %540*, %540** %12, align 8 %24 = getelementptr inbounds %540, %540* %23, i32 0, i32 0 %25 = load i8, i8* %13, align 1, !range !7 %26 = trunc i8 %25 to i1 %27 = zext i1 %26 to i8 store i8 %27, i8* %24, align 8 %28 = getelementptr inbounds %540, %540* %23, i32 0, i32 1 %29 = load float, float* %14, align 4 store float %29, float* %28, align 4 %30 = getelementptr inbounds %540, %540* %23, i32 0, i32 2 call void @_ZN6SkSpanIK7SkPointEC2IS0_vEERKS_IT_E(%120* noundef align 8 dereferenceable_or_null(16) %30, %129* noundef align 8 dereferenceable(16) %10) %31 = getelementptr inbounds %540, %540* %23, i32 0, i32 3 call void @_ZN6SkSpanIKtEC2ItvEERKS_IT_E(%121* noundef align 8 dereferenceable_or_null(16) %31, %130* noundef align 8 dereferenceable(16) %11) %32 = getelementptr inbounds %540, %540* %23, i32 0, i32 4 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2EOS7_(%122* noundef align 8 dereferenceable_or_null(16) %32, %122* noundef align 8 dereferenceable(16) %7) #21 %33 = getelementptr inbounds %540, %540* %23, i32 0, i32 5 %34 = load %128*, %128** %15, align 8 call void @_ZN16SkAutoDescriptorC1ERK12SkDescriptor(%127* noundef align 8 dereferenceable_or_null(132) %33, %128* noundef align 4 dereferenceable(12) %34) call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEED2Ev(%122* noundef align 8 dereferenceable_or_null(16) %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEED2Ev(%122* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %122*, align 8 store %122* %0, %122** %2, align 8 %3 = load %122*, %122** %2, align 8 call void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5resetEDn(%122* noundef align 8 dereferenceable_or_null(16) %3, i8* null) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNSt4__Cr4sizeI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_4sizeEERKT_(%530* noundef align 8 dereferenceable(24) %0) #3 comdat { %2 = alloca %530*, align 8 store %530* %0, %530** %2, align 8 %3 = load %530*, %530** %2, align 8 %4 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %3) ret i64 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %0) #3 comdat align 2 { %2 = alloca %530*, align 8 store %530* %0, %530** %2, align 8 %3 = load %530*, %530** %2, align 8 %4 = getelementptr inbounds %530, %530* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPci(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %691, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 268434943, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %691* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 268434943 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPciENKUlvE_clEv(%691* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %691* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 8 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 4) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI7SkPointEEPciENKUlvE_clEv(%691* noundef align 1 dereferenceable_or_null(1) %0) #7 comdat align 2 { %2 = alloca %691*, align 8 store %691* %0, %691** %2, align 8 %3 = load %691*, %691** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPci(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %692, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 1073739775, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %692* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 1073739775 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPciENKUlvE_clEv(%692* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %692* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 2 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 2) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForItEEPciENKUlvE_clEv(%692* noundef align 1 dereferenceable_or_null(1) %0) #7 comdat align 2 { %2 = alloca %692*, align 8 store %692* %0, %692** %2, align 8 %3 = load %692*, %692** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPci(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 comdat align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %693, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 134217471, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %693* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 134217471 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPciENKUlvE_clEv(%693* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %693* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 16 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 8) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IPS1_Lb1EvvEET_NS_16__dependent_typeINS_27__unique_ptr_deleter_sfinaeIS6_EEXT0_EE20__good_rval_ref_typeE(%122* noundef align 8 dereferenceable_or_null(16) %0, %101* noundef %1, %126* noundef align 4 dereferenceable(4) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %122*, align 8 %5 = alloca %101*, align 8 %6 = alloca %126*, align 8 store %122* %0, %122** %4, align 8 store %101* %1, %101** %5, align 8 store %126* %2, %126** %6, align 8 %7 = load %122*, %122** %4, align 8 %8 = getelementptr inbounds %122, %122* %7, i32 0, i32 0 %9 = load %126*, %126** %6, align 8 call void @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IRS2_S6_EEOT_OT0_(%123* noundef align 8 dereferenceable_or_null(12) %8, %101** noundef align 8 dereferenceable(8) %5, %126* noundef align 4 dereferenceable(4) %9) ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZZN6sktext3gpu10BagOfBytes16allocateBytesForI6SkPathEEPciENKUlvE_clEv(%693* noundef align 1 dereferenceable_or_null(1) %0) #7 comdat align 2 { %2 = alloca %693*, align 8 store %693* %0, %693** %2, align 8 %3 = load %693*, %693** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEEC2IRS2_S6_EEOT_OT0_(%123* noundef align 8 dereferenceable_or_null(12) %0, %101** noundef align 8 dereferenceable(8) %1, %126* noundef align 4 dereferenceable(4) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %123*, align 8 %5 = alloca %101**, align 8 %6 = alloca %126*, align 8 store %123* %0, %123** %4, align 8 store %101** %1, %101*** %5, align 8 store %126* %2, %126** %6, align 8 %7 = load %123*, %123** %4, align 8 %8 = bitcast %123* %7 to %124* %9 = load %101**, %101*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IRS2_vEEOT_(%124* noundef align 8 dereferenceable_or_null(8) %8, %101** noundef align 8 dereferenceable(8) %9) %10 = bitcast %123* %7 to i8* %11 = getelementptr inbounds i8, i8* %10, i64 8 %12 = bitcast i8* %11 to %125* %13 = load %126*, %126** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator14ArrayDestroyerELi1ELb0EEC2IS4_vEEOT_(%125* noundef align 4 dereferenceable_or_null(4) %12, %126* noundef align 4 dereferenceable(4) %13) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP6SkPathLi0ELb0EEC2IRS2_vEEOT_(%124* noundef align 8 dereferenceable_or_null(8) %0, %101** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %124*, align 8 %4 = alloca %101**, align 8 store %124* %0, %124** %3, align 8 store %101** %1, %101*** %4, align 8 %5 = load %124*, %124** %3, align 8 %6 = getelementptr inbounds %124, %124* %5, i32 0, i32 0 %7 = load %101**, %101*** %4, align 8 %8 = load %101*, %101** %7, align 8 store %101* %8, %101** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5beginI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_5beginEERKT_(%663* noalias sret(%663) align 8 %0, %530* noundef align 8 dereferenceable(24) %1) #3 comdat { %3 = alloca i8*, align 8 %4 = alloca %530*, align 8 %5 = bitcast %663* %0 to i8* store i8* %5, i8** %3, align 8 store %530* %1, %530** %4, align 8 %6 = load %530*, %530** %4, align 8 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5beginEv(%663* sret(%663) align 8 %0, %530* noundef align 8 dereferenceable_or_null(24) %6) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr3endI5SkZipIJ14SkGlyphVariant7SkPointEEEEDTcldtfp_3endEERKT_(%663* noalias sret(%663) align 8 %0, %530* noundef align 8 dereferenceable(24) %1) #3 comdat { %3 = alloca i8*, align 8 %4 = alloca %530*, align 8 %5 = bitcast %663* %0 to i8* store i8* %5, i8** %3, align 8 store %530* %1, %530** %4, align 8 %6 = load %530*, %530** %4, align 8 call void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3endEv(%663* sret(%663) align 8 %0, %530* noundef align 8 dereferenceable_or_null(24) %6) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ES4_S4_(%661* noundef align 8 dereferenceable_or_null(48) %0, %663* noundef %1, %663* noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %661*, align 8 %5 = alloca %663, align 8 %6 = alloca %663, align 8 store %661* %0, %661** %4, align 8 %7 = load %661*, %661** %4, align 8 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %5, %663* noundef align 8 dereferenceable(16) %1) call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %6, %663* noundef align 8 dereferenceable(16) %2) call void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ElS4_S4_(%661* noundef align 8 dereferenceable_or_null(48) %7, i64 noundef 0, %663* noundef %5, %663* noundef %6) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5beginEv(%663* noalias sret(%663) align 8 %0, %530* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %530*, align 8 %5 = bitcast %663* %0 to i8* store i8* %5, i8** %3, align 8 store %530* %1, %530** %4, align 8 %6 = load %530*, %530** %4, align 8 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2EPKS2_m(%663* noundef align 8 dereferenceable_or_null(16) %0, %530* noundef %6, i64 noundef 0) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2EPKS2_m(%663* noundef align 8 dereferenceable_or_null(16) %0, %530* noundef %1, i64 noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %663*, align 8 %5 = alloca %530*, align 8 %6 = alloca i64, align 8 store %663* %0, %663** %4, align 8 store %530* %1, %530** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %663*, %663** %4, align 8 %8 = getelementptr inbounds %663, %663* %7, i32 0, i32 0 %9 = load %530*, %530** %5, align 8 store %530* %9, %530** %8, align 8 %10 = getelementptr inbounds %663, %663* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3endEv(%663* noalias sret(%663) align 8 %0, %530* noundef align 8 dereferenceable_or_null(24) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %530*, align 8 %5 = bitcast %663* %0 to i8* store i8* %5, i8** %3, align 8 store %530* %1, %530** %4, align 8 %6 = load %530*, %530** %4, align 8 %7 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %6) call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2EPKS2_m(%663* noundef align 8 dereferenceable_or_null(16) %0, %530* noundef %6, i64 noundef %7) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %0, %663* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %663*, align 8 %4 = alloca %663*, align 8 store %663* %0, %663** %3, align 8 store %663* %1, %663** %4, align 8 %5 = load %663*, %663** %3, align 8 %6 = load %663*, %663** %4, align 8 %7 = getelementptr inbounds %663, %663* %6, i32 0, i32 0 %8 = load %530*, %530** %7, align 8 %9 = load %663*, %663** %4, align 8 %10 = getelementptr inbounds %663, %663* %9, i32 0, i32 1 %11 = load i64, i64* %10, align 8 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2EPKS2_m(%663* noundef align 8 dereferenceable_or_null(16) %5, %530* noundef %8, i64 noundef %11) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEEC2ElS4_S4_(%661* noundef align 8 dereferenceable_or_null(48) %0, i64 noundef %1, %663* noundef %2, %663* noundef %3) unnamed_addr #0 comdat align 2 { %5 = alloca %661*, align 8 %6 = alloca i64, align 8 store %661* %0, %661** %5, align 8 store i64 %1, i64* %6, align 8 %7 = load %661*, %661** %5, align 8 %8 = getelementptr inbounds %661, %661* %7, i32 0, i32 0 %9 = getelementptr inbounds %661, %661* %7, i32 0, i32 1 %10 = load i64, i64* %6, align 8 store i64 %10, i64* %9, align 8 %11 = getelementptr inbounds %661, %661* %7, i32 0, i32 2 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %11, %663* noundef align 8 dereferenceable(16) %2) %12 = getelementptr inbounds %661, %661* %7, i32 0, i32 3 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %12, %663* noundef align 8 dereferenceable(16) %3) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ElS4_(%664* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1, %663* noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %664*, align 8 %5 = alloca i64, align 8 store %664* %0, %664** %4, align 8 store i64 %1, i64* %5, align 8 %6 = load %664*, %664** %4, align 8 %7 = getelementptr inbounds %664, %664* %6, i32 0, i32 0 %8 = load i64, i64* %5, align 8 store i64 %8, i64* %7, align 8 %9 = getelementptr inbounds %664, %664* %6, i32 0, i32 1 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %9, %663* noundef align 8 dereferenceable(16) %2) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE5ssizeEv(%661* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %661*, align 8 %3 = alloca %663, align 8 %4 = alloca %663, align 8 store %661* %0, %661** %2, align 8 %5 = load %661*, %661** %2, align 8 %6 = getelementptr inbounds %661, %661* %5, i32 0, i32 2 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %3, %663* noundef align 8 dereferenceable(16) %6) %7 = getelementptr inbounds %661, %661* %5, i32 0, i32 3 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %4, %663* noundef align 8 dereferenceable(16) %7) %8 = call noundef i64 @_ZNSt4__Cr8distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(%663* noundef %3, %663* noundef %4) ret i64 %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNSt4__Cr8distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_(%663* noundef %0, %663* noundef %1) #7 comdat { %3 = alloca %663, align 8 %4 = alloca %663, align 8 %5 = alloca %694, align 1 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %3, %663* noundef align 8 dereferenceable(16) %0) call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %4, %663* noundef align 8 dereferenceable(16) %1) %6 = call noundef i64 @_ZNSt4__Cr10__distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_NS_18input_iterator_tagE(%663* noundef %3, %663* noundef %4) ret i64 %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNSt4__Cr10__distanceIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorEEENS_15iterator_traitsIT_E15difference_typeES7_S7_NS_18input_iterator_tagE(%663* noundef %0, %663* noundef %1) #7 comdat { %3 = alloca %694, align 1 %4 = alloca i64, align 8 %5 = bitcast i64* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store i64 -6148914691236517206, i64* %4, align 8, !annotation !6 store i64 0, i64* %4, align 8 br label %6 6: ; preds = %11, %2 %7 = call noundef zeroext i1 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorneERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %0, %663* noundef align 8 dereferenceable(16) %1) br i1 %7, label %8, label %13 8: ; preds = %6 %9 = load i64, i64* %4, align 8 %10 = add nsw i64 %9, 1 store i64 %10, i64* %4, align 8 br label %11 11: ; preds = %8 %12 = call noundef align 8 dereferenceable(16) %663* @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorppEv(%663* noundef align 8 dereferenceable_or_null(16) %0) br label %6, !llvm.loop !17 13: ; preds = %6 %14 = load i64, i64* %4, align 8 %15 = bitcast i64* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %15) #21 ret i64 %14 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorneERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %0, %663* noundef align 8 dereferenceable(16) %1) #3 comdat align 2 { %3 = alloca %663*, align 8 %4 = alloca %663*, align 8 store %663* %0, %663** %3, align 8 store %663* %1, %663** %4, align 8 %5 = load %663*, %663** %3, align 8 %6 = getelementptr inbounds %663, %663* %5, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = load %663*, %663** %4, align 8 %9 = getelementptr inbounds %663, %663* %8, i32 0, i32 1 %10 = load i64, i64* %9, align 8 %11 = icmp ne i64 %7, %10 ret i1 %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %663* @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorppEv(%663* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %663*, align 8 store %663* %0, %663** %2, align 8 %3 = load %663*, %663** %2, align 8 %4 = getelementptr inbounds %663, %663* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = add i64 %5, 1 store i64 %6, i64* %4, align 8 ret %663* %3 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE10MakeResultEmONS5_5tupleIJRS1_RS2_EEE(%665* noalias sret(%665) align 8 %0, i64 noundef %1, %687* noundef align 8 dereferenceable(16) %2) #3 comdat align 2 { %4 = alloca i64, align 8 %5 = alloca %687*, align 8 %6 = alloca %695, align 8 store i64 %1, i64* %4, align 8 store %687* %2, %687** %5, align 8 %7 = bitcast %695* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 call void @_ZNSt4__Cr5tupleIJmEEC2IJRmELi0EEEDpOT_(%695* noundef align 8 dereferenceable_or_null(8) %6, i64* noundef align 8 dereferenceable(8) %4) #21 %8 = load %687*, %687** %5, align 8 call void @_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJRNS1_IJR14SkGlyphVariantR7SkPointEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOSA_DpOSB_(%665* sret(%665) align 8 %0, %695* noundef align 8 dereferenceable(8) %6, %687* noundef align 8 dereferenceable(16) %8) %9 = bitcast %695* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %9) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, %5* } @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratordeEv(%663* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %687, align 8 %3 = alloca %663*, align 8 store %663* %0, %663** %3, align 8 %4 = load %663*, %663** %3, align 8 %5 = getelementptr inbounds %663, %663* %4, i32 0, i32 0 %6 = load %530*, %530** %5, align 8 %7 = getelementptr inbounds %663, %663* %4, i32 0, i32 1 %8 = load i64, i64* %7, align 8 %9 = call { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEEixEm(%530* noundef align 8 dereferenceable_or_null(24) %6, i64 noundef %8) %10 = getelementptr inbounds %687, %687* %2, i32 0, i32 0 %11 = bitcast %688* %10 to { %96*, %5* }* %12 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %11, i32 0, i32 0 %13 = extractvalue { %96*, %5* } %9, 0 store %96* %13, %96** %12, align 8 %14 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %11, i32 0, i32 1 %15 = extractvalue { %96*, %5* } %9, 1 store %5* %15, %5** %14, align 8 %16 = getelementptr inbounds %687, %687* %2, i32 0, i32 0 %17 = bitcast %688* %16 to { %96*, %5* }* %18 = load { %96*, %5* }, { %96*, %5* }* %17, align 8 ret { %96*, %5* } %18 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr9tuple_catINS_5tupleIJmEEEJRNS1_IJR14SkGlyphVariantR7SkPointEEEEEENS_18__tuple_cat_returnIJT_DpT0_EE4typeEOSA_DpOSB_(%665* noalias sret(%665) align 8 %0, %695* noundef align 8 dereferenceable(8) %1, %687* noundef align 8 dereferenceable(16) %2) #7 comdat { %4 = alloca %695*, align 8 %5 = alloca %687*, align 8 %6 = alloca %697, align 8 %7 = alloca %700, align 1 %8 = alloca %701, align 1 store %695* %1, %695** %4, align 8 store %687* %2, %687** %5, align 8 %9 = bitcast %697* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %9) #21 %10 = bitcast %700* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %10) #21 %11 = load %695*, %695** %4, align 8 %12 = load %687*, %687** %5, align 8 call void @_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEERNS1_IJR14SkGlyphVariantR7SkPointEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SI_SK_SN_(%697* sret(%697) align 8 %6, %700* noundef align 1 dereferenceable_or_null(1) %7, %695* noundef align 8 dereferenceable(8) %11, %687* noundef align 8 dereferenceable(16) %12) call void @_ZNSt4__Cr5tupleIJmR14SkGlyphVariantR7SkPointEEC2IJOmS2_S4_ELi0EEEONS0_IJDpT_EEE(%665* noundef align 8 dereferenceable_or_null(24) %0, %697* noundef align 8 dereferenceable(24) %6) #21 %13 = bitcast %700* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %13) #21 %14 = bitcast %697* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %14) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJmEEC2IJRmELi0EEEDpOT_(%695* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %695*, align 8 %4 = alloca i64*, align 8 %5 = alloca %702, align 1 %6 = alloca %703, align 1 %7 = alloca %236, align 1 %8 = alloca %237, align 1 store %695* %0, %695** %3, align 8 store i64* %1, i64** %4, align 8 %9 = load %695*, %695** %3, align 8 %10 = getelementptr inbounds %695, %695* %9, i32 0, i32 0 %11 = load i64*, i64** %4, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJmEEC2IJLm0EEJmEJEJEJRmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_(%696* noundef align 8 dereferenceable_or_null(8) %10, i64* noundef align 8 dereferenceable(8) %11) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr11__tuple_catINS_5tupleIJEEENS_15__tuple_indicesIJEEENS3_IJLm0EEEEEclINS1_IJmEEERNS1_IJR14SkGlyphVariantR7SkPointEEEJEEENS_22__tuple_cat_return_refIOS2_JOT_OT0_DpOT1_EE4typeES2_SI_SK_SN_(%697* noalias sret(%697) align 8 %0, %700* noundef align 1 dereferenceable_or_null(1) %1, %695* noundef align 8 dereferenceable(8) %2, %687* noundef align 8 dereferenceable(16) %3) #3 comdat align 2 { %5 = alloca %701, align 1 %6 = alloca %700*, align 8 %7 = alloca %695*, align 8 %8 = alloca %687*, align 8 %9 = alloca %704, align 1 %10 = alloca %705, align 8 store %700* %1, %700** %6, align 8 store %695* %2, %695** %7, align 8 store %687* %3, %687** %8, align 8 %11 = load %700*, %700** %6, align 8 %12 = bitcast %704* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 %13 = load %695*, %695** %7, align 8 %14 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJmEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS5_(%695* noundef align 8 dereferenceable(8) %13) #21 %15 = call i64* @_ZNSt4__Cr16forward_as_tupleIJmEEENS_5tupleIJDpOT_EEES4_(i64* noundef align 8 dereferenceable(8) %14) #21 %16 = getelementptr inbounds %705, %705* %10, i32 0, i32 0 %17 = getelementptr inbounds %706, %706* %16, i32 0, i32 0 %18 = getelementptr inbounds %699, %699* %17, i32 0, i32 0 store i64* %15, i64** %18, align 8 %19 = load %687*, %687** %8, align 8 %20 = getelementptr inbounds %705, %705* %10, i32 0, i32 0 %21 = getelementptr inbounds %706, %706* %20, i32 0, i32 0 %22 = getelementptr inbounds %699, %699* %21, i32 0, i32 0 %23 = load i64*, i64** %22, align 8 call void @_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEENS4_IJLm0ELm1EEEEEclIRNS1_IJR14SkGlyphVariantR7SkPointEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SI_(%697* sret(%697) align 8 %0, %704* noundef align 1 dereferenceable_or_null(1) %9, i64* %23, %687* noundef align 8 dereferenceable(16) %19) %24 = bitcast %704* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %24) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJmR14SkGlyphVariantR7SkPointEEC2IJOmS2_S4_ELi0EEEONS0_IJDpT_EEE(%665* noundef align 8 dereferenceable_or_null(24) %0, %697* noundef align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %665*, align 8 %4 = alloca %697*, align 8 store %665* %0, %665** %3, align 8 store %697* %1, %697** %4, align 8 %5 = load %665*, %665** %3, align 8 %6 = getelementptr inbounds %665, %665* %5, i32 0, i32 0 %7 = load %697*, %697** %4, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJmR14SkGlyphVariantR7SkPointEEC2INS_5tupleIJOmS4_S6_EEEvEEOT_(%666* noundef align 8 dereferenceable_or_null(24) %6, %697* noundef align 8 dereferenceable(24) %7) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr11__tuple_catINS_5tupleIJOmEEENS_15__tuple_indicesIJLm0EEEENS4_IJLm0ELm1EEEEEclIRNS1_IJR14SkGlyphVariantR7SkPointEEEEENS_22__tuple_cat_return_refIOS3_JOT_EE4typeES3_SI_(%697* noalias sret(%697) align 8 %0, %704* noundef align 1 dereferenceable_or_null(1) %1, i64* %2, %687* noundef align 8 dereferenceable(16) %3) #3 comdat align 2 { %5 = alloca %705, align 8 %6 = alloca %704*, align 8 %7 = alloca %687*, align 8 %8 = getelementptr inbounds %705, %705* %5, i32 0, i32 0 %9 = getelementptr inbounds %706, %706* %8, i32 0, i32 0 %10 = getelementptr inbounds %699, %699* %9, i32 0, i32 0 store i64* %2, i64** %10, align 8 store %704* %1, %704** %6, align 8 store %687* %3, %687** %7, align 8 %11 = load %704*, %704** %6, align 8 %12 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJOmEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_(%705* noundef align 8 dereferenceable(8) %5) #21 %13 = load %687*, %687** %7, align 8 %14 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_(%687* noundef align 8 dereferenceable(16) %13) #21 %15 = load %687*, %687** %7, align 8 %16 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_(%687* noundef align 8 dereferenceable(16) %15) #21 call void @_ZNSt4__Cr16forward_as_tupleIJmR14SkGlyphVariantR7SkPointEEENS_5tupleIJDpOT_EEES8_(%697* sret(%697) align 8 %0, i64* noundef align 8 dereferenceable(8) %12, %96* noundef align 8 dereferenceable(8) %14, %5* noundef align 4 dereferenceable(8) %16) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden i64* @_ZNSt4__Cr16forward_as_tupleIJmEEENS_5tupleIJDpOT_EEES4_(i64* noundef align 8 dereferenceable(8) %0) #7 comdat { %2 = alloca %705, align 8 %3 = alloca i64*, align 8 store i64* %0, i64** %3, align 8 %4 = load i64*, i64** %3, align 8 call void @_ZNSt4__Cr5tupleIJOmEEC2IJmELi0EEEDpOT_(%705* noundef align 8 dereferenceable_or_null(8) %2, i64* noundef align 8 dereferenceable(8) %4) #21 %5 = getelementptr inbounds %705, %705* %2, i32 0, i32 0 %6 = getelementptr inbounds %706, %706* %5, i32 0, i32 0 %7 = getelementptr inbounds %699, %699* %6, i32 0, i32 0 %8 = load i64*, i64** %7, align 8 ret i64* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJmEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS5_(%695* noundef align 8 dereferenceable(8) %0) #7 comdat { %2 = alloca %695*, align 8 store %695* %0, %695** %2, align 8 %3 = load %695*, %695** %2, align 8 %4 = getelementptr inbounds %695, %695* %3, i32 0, i32 0 %5 = bitcast %696* %4 to %667* %6 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EmLb0EE3getEv(%667* noundef align 8 dereferenceable_or_null(8) %5) #21 ret i64* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr16forward_as_tupleIJmR14SkGlyphVariantR7SkPointEEENS_5tupleIJDpOT_EEES8_(%697* noalias sret(%697) align 8 %0, i64* noundef align 8 dereferenceable(8) %1, %96* noundef align 8 dereferenceable(8) %2, %5* noundef align 4 dereferenceable(8) %3) #7 comdat { %5 = alloca i64*, align 8 %6 = alloca %96*, align 8 %7 = alloca %5*, align 8 store i64* %1, i64** %5, align 8 store %96* %2, %96** %6, align 8 store %5* %3, %5** %7, align 8 %8 = load i64*, i64** %5, align 8 %9 = load %96*, %96** %6, align 8 %10 = load %5*, %5** %7, align 8 call void @_ZNSt4__Cr5tupleIJOmR14SkGlyphVariantR7SkPointEEC2IJmS3_S5_ELi0EEEDpOT_(%697* noundef align 8 dereferenceable_or_null(24) %0, i64* noundef align 8 dereferenceable(8) %8, %96* noundef align 8 dereferenceable(8) %9, %5* noundef align 4 dereferenceable(8) %10) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJOmEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS6_(%705* noundef align 8 dereferenceable(8) %0) #7 comdat { %2 = alloca %705*, align 8 store %705* %0, %705** %2, align 8 %3 = load %705*, %705** %2, align 8 %4 = getelementptr inbounds %705, %705* %3, i32 0, i32 0 %5 = bitcast %706* %4 to %699* %6 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EE3getEv(%699* noundef align 8 dereferenceable_or_null(8) %5) #21 ret i64* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_(%687* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %687*, align 8 store %687* %0, %687** %2, align 8 %3 = load %687*, %687** %2, align 8 %4 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %5 = bitcast %688* %4 to %689* %6 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EE3getEv(%689* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %96* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERS9_(%687* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %687*, align 8 store %687* %0, %687** %2, align 8 %3 = load %687*, %687** %2, align 8 %4 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %5 = bitcast %688* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %690* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EE3getEv(%690* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJOmR14SkGlyphVariantR7SkPointEEC2IJmS3_S5_ELi0EEEDpOT_(%697* noundef align 8 dereferenceable_or_null(24) %0, i64* noundef align 8 dereferenceable(8) %1, %96* noundef align 8 dereferenceable(8) %2, %5* noundef align 4 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 { %5 = alloca %697*, align 8 %6 = alloca i64*, align 8 %7 = alloca %96*, align 8 %8 = alloca %5*, align 8 %9 = alloca %707, align 1 %10 = alloca %708, align 1 %11 = alloca %236, align 1 %12 = alloca %237, align 1 store %697* %0, %697** %5, align 8 store i64* %1, i64** %6, align 8 store %96* %2, %96** %7, align 8 store %5* %3, %5** %8, align 8 %13 = load %697*, %697** %5, align 8 %14 = getelementptr inbounds %697, %697* %13, i32 0, i32 0 %15 = load i64*, i64** %6, align 8 %16 = load %96*, %96** %7, align 8 %17 = load %5*, %5** %8, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJOmR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1ELm2EEJS3_S5_S7_EJEJEJmS5_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_(%698* noundef align 8 dereferenceable_or_null(24) %14, i64* noundef align 8 dereferenceable(8) %15, %96* noundef align 8 dereferenceable(8) %16, %5* noundef align 4 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJOmR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1ELm2EEJS3_S5_S7_EJEJEJmS5_S7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_(%698* noundef align 8 dereferenceable_or_null(24) %0, i64* noundef align 8 dereferenceable(8) %1, %96* noundef align 8 dereferenceable(8) %2, %5* noundef align 4 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 { %5 = alloca %707, align 1 %6 = alloca %708, align 1 %7 = alloca %236, align 1 %8 = alloca %237, align 1 %9 = alloca %698*, align 8 %10 = alloca i64*, align 8 %11 = alloca %96*, align 8 %12 = alloca %5*, align 8 store %698* %0, %698** %9, align 8 store i64* %1, i64** %10, align 8 store %96* %2, %96** %11, align 8 store %5* %3, %5** %12, align 8 %13 = load %698*, %698** %9, align 8 %14 = bitcast %698* %13 to %699* %15 = load i64*, i64** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EEC2ImvEEOT_(%699* noundef align 8 dereferenceable_or_null(8) %14, i64* noundef align 8 dereferenceable(8) %15) #21 %16 = bitcast %698* %13 to i8* %17 = getelementptr inbounds i8, i8* %16, i64 8 %18 = bitcast i8* %17 to %668* %19 = load %96*, %96** %11, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EEC2IS2_vEEOT_(%668* noundef align 8 dereferenceable_or_null(8) %18, %96* noundef align 8 dereferenceable(8) %19) #21 %20 = bitcast %698* %13 to i8* %21 = getelementptr inbounds i8, i8* %20, i64 16 %22 = bitcast i8* %21 to %669* %23 = load %5*, %5** %12, align 8 call void @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EEC2IS2_vEEOT_(%669* noundef align 8 dereferenceable_or_null(8) %22, %5* noundef align 4 dereferenceable(8) %23) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EEC2ImvEEOT_(%699* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %699*, align 8 %4 = alloca i64*, align 8 store %699* %0, %699** %3, align 8 store i64* %1, i64** %4, align 8 %5 = load %699*, %699** %3, align 8 %6 = getelementptr inbounds %699, %699* %5, i32 0, i32 0 %7 = load i64*, i64** %4, align 8 store i64* %7, i64** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EEC2IS2_vEEOT_(%668* noundef align 8 dereferenceable_or_null(8) %0, %96* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %668*, align 8 %4 = alloca %96*, align 8 store %668* %0, %668** %3, align 8 store %96* %1, %96** %4, align 8 %5 = load %668*, %668** %3, align 8 %6 = getelementptr inbounds %668, %668* %5, i32 0, i32 0 %7 = load %96*, %96** %4, align 8 store %96* %7, %96** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EEC2IS2_vEEOT_(%669* noundef align 8 dereferenceable_or_null(8) %0, %5* noundef align 4 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %669*, align 8 %4 = alloca %5*, align 8 store %669* %0, %669** %3, align 8 store %5* %1, %5** %4, align 8 %5 = load %669*, %669** %3, align 8 %6 = getelementptr inbounds %669, %669* %5, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 store %5* %7, %5** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EE3getEv(%699* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %699*, align 8 store %699* %0, %699** %2, align 8 %3 = load %699*, %699** %2, align 8 %4 = getelementptr inbounds %699, %699* %3, i32 0, i32 0 %5 = load i64*, i64** %4, align 8 ret i64* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EE3getEv(%689* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %689*, align 8 store %689* %0, %689** %2, align 8 %3 = load %689*, %689** %2, align 8 %4 = getelementptr inbounds %689, %689* %3, i32 0, i32 0 %5 = load %96*, %96** %4, align 8 ret %96* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EE3getEv(%690* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %690*, align 8 store %690* %0, %690** %2, align 8 %3 = load %690*, %690** %2, align 8 %4 = getelementptr inbounds %690, %690* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 ret %5* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJOmEEC2IJmELi0EEEDpOT_(%705* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %705*, align 8 %4 = alloca i64*, align 8 %5 = alloca %702, align 1 %6 = alloca %709, align 1 %7 = alloca %236, align 1 %8 = alloca %237, align 1 store %705* %0, %705** %3, align 8 store i64* %1, i64** %4, align 8 %9 = load %705*, %705** %3, align 8 %10 = getelementptr inbounds %705, %705* %9, i32 0, i32 0 %11 = load i64*, i64** %4, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJOmEEC2IJLm0EEJS3_EJEJEJmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_(%706* noundef align 8 dereferenceable_or_null(8) %10, i64* noundef align 8 dereferenceable(8) %11) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJOmEEC2IJLm0EEJS3_EJEJEJmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_(%706* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %702, align 1 %4 = alloca %709, align 1 %5 = alloca %236, align 1 %6 = alloca %237, align 1 %7 = alloca %706*, align 8 %8 = alloca i64*, align 8 store %706* %0, %706** %7, align 8 store i64* %1, i64** %8, align 8 %9 = load %706*, %706** %7, align 8 %10 = bitcast %706* %9 to %699* %11 = load i64*, i64** %8, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EEC2ImvEEOT_(%699* noundef align 8 dereferenceable_or_null(8) %10, i64* noundef align 8 dereferenceable(8) %11) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EmLb0EE3getEv(%667* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %667*, align 8 store %667* %0, %667** %2, align 8 %3 = load %667*, %667** %2, align 8 %4 = getelementptr inbounds %667, %667* %3, i32 0, i32 0 ret i64* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJmR14SkGlyphVariantR7SkPointEEC2INS_5tupleIJOmS4_S6_EEEvEEOT_(%666* noundef align 8 dereferenceable_or_null(24) %0, %697* noundef align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %666*, align 8 %4 = alloca %697*, align 8 store %666* %0, %666** %3, align 8 store %697* %1, %697** %4, align 8 %5 = load %666*, %666** %3, align 8 %6 = bitcast %666* %5 to %667* %7 = load %697*, %697** %4, align 8 %8 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %7) #21 call void @_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2ImvEEOT_(%667* noundef align 8 dereferenceable_or_null(8) %6, i64* noundef align 8 dereferenceable(8) %8) #21 %9 = bitcast %666* %5 to i8* %10 = getelementptr inbounds i8, i8* %9, i64 8 %11 = bitcast i8* %10 to %668* %12 = load %697*, %697** %4, align 8 %13 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm1EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %12) #21 call void @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EEC2IS2_vEEOT_(%668* noundef align 8 dereferenceable_or_null(8) %11, %96* noundef align 8 dereferenceable(8) %13) #21 %14 = bitcast %666* %5 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 16 %16 = bitcast i8* %15 to %669* %17 = load %697*, %697** %4, align 8 %18 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm2EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %17) #21 call void @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EEC2IS2_vEEOT_(%669* noundef align 8 dereferenceable_or_null(8) %16, %5* noundef align 4 dereferenceable(8) %18) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr3getILm0EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %697*, align 8 store %697* %0, %697** %2, align 8 %3 = load %697*, %697** %2, align 8 %4 = getelementptr inbounds %697, %697* %3, i32 0, i32 0 %5 = bitcast %698* %4 to %699* %6 = call noundef align 8 dereferenceable(8) i64* @_ZNSt4__Cr12__tuple_leafILm0EOmLb0EE3getEv(%699* noundef align 8 dereferenceable_or_null(8) %5) #21 ret i64* %6 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2ImvEEOT_(%667* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %667*, align 8 %4 = alloca i64*, align 8 store %667* %0, %667** %3, align 8 store i64* %1, i64** %4, align 8 %5 = load %667*, %667** %3, align 8 %6 = getelementptr inbounds %667, %667* %5, i32 0, i32 0 %7 = load i64*, i64** %4, align 8 %8 = load i64, i64* %7, align 8 store i64 %8, i64* %6, align 8 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm1EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %697*, align 8 store %697* %0, %697** %2, align 8 %3 = load %697*, %697** %2, align 8 %4 = getelementptr inbounds %697, %697* %3, i32 0, i32 0 %5 = bitcast %698* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %668* %8 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EE3getEv(%668* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %96* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm2EJOmR14SkGlyphVariantR7SkPointEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_(%697* noundef align 8 dereferenceable(24) %0) #7 comdat { %2 = alloca %697*, align 8 store %697* %0, %697** %2, align 8 %3 = load %697*, %697** %2, align 8 %4 = getelementptr inbounds %697, %697* %3, i32 0, i32 0 %5 = bitcast %698* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 16 %7 = bitcast i8* %6 to %669* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EE3getEv(%669* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm1ER14SkGlyphVariantLb0EE3getEv(%668* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %668*, align 8 store %668* %0, %668** %2, align 8 %3 = load %668*, %668** %2, align 8 %4 = getelementptr inbounds %668, %668* %3, i32 0, i32 0 %5 = load %96*, %96** %4, align 8 ret %96* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm2ER7SkPointLb0EE3getEv(%669* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %669*, align 8 store %669* %0, %669** %2, align 8 %3 = load %669*, %669** %2, align 8 %4 = getelementptr inbounds %669, %669* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 ret %5* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0EEEEJmEEC2IJLm0EEJmEJEJEJRmEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENS7_IJDpT2_EEEDpOT3_(%696* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %702, align 1 %4 = alloca %703, align 1 %5 = alloca %236, align 1 %6 = alloca %237, align 1 %7 = alloca %696*, align 8 %8 = alloca i64*, align 8 store %696* %0, %696** %7, align 8 store i64* %1, i64** %8, align 8 %9 = load %696*, %696** %7, align 8 %10 = bitcast %696* %9 to %667* %11 = load i64*, i64** %8, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2IRmvEEOT_(%667* noundef align 8 dereferenceable_or_null(8) %10, i64* noundef align 8 dereferenceable(8) %11) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EmLb0EEC2IRmvEEOT_(%667* noundef align 8 dereferenceable_or_null(8) %0, i64* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %667*, align 8 %4 = alloca i64*, align 8 store %667* %0, %667** %3, align 8 store i64* %1, i64** %4, align 8 %5 = load %667*, %667** %3, align 8 %6 = getelementptr inbounds %667, %667* %5, i32 0, i32 0 %7 = load i64*, i64** %4, align 8 %8 = load i64, i64* %7, align 8 store i64 %8, i64* %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEEixEm(%530* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %687, align 8 %4 = alloca %530*, align 8 %5 = alloca i64, align 8 store %530* %0, %530** %4, align 8 store i64 %1, i64* %5, align 8 %6 = load %530*, %530** %4, align 8 %7 = load i64, i64* %5, align 8 %8 = call { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5indexEm(%530* noundef align 8 dereferenceable_or_null(24) %6, i64 noundef %7) %9 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %10 = bitcast %688* %9 to { %96*, %5* }* %11 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %10, i32 0, i32 0 %12 = extractvalue { %96*, %5* } %8, 0 store %96* %12, %96** %11, align 8 %13 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %10, i32 0, i32 1 %14 = extractvalue { %96*, %5* } %8, 1 store %5* %14, %5** %13, align 8 %15 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %16 = bitcast %688* %15 to { %96*, %5* }* %17 = load { %96*, %5* }, { %96*, %5* }* %16, align 8 ret { %96*, %5* } %17 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE5indexEm(%530* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %687, align 8 %4 = alloca %530*, align 8 %5 = alloca i64, align 8 %6 = alloca %685, align 1 store %530* %0, %530** %4, align 8 store i64 %1, i64* %5, align 8 %7 = load %530*, %530** %4, align 8 %8 = load i64, i64* %5, align 8 %9 = call { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS1_EEEmNS4_16integer_sequenceImJXspT_EEEE(%530* noundef align 8 dereferenceable_or_null(24) %7, i64 noundef %8) %10 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %11 = bitcast %688* %10 to { %96*, %5* }* %12 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %11, i32 0, i32 0 %13 = extractvalue { %96*, %5* } %9, 0 store %96* %13, %96** %12, align 8 %14 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %11, i32 0, i32 1 %15 = extractvalue { %96*, %5* } %9, 1 store %5* %15, %5** %14, align 8 %16 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %17 = bitcast %688* %16 to { %96*, %5* }* %18 = load { %96*, %5* }, { %96*, %5* }* %17, align 8 ret { %96*, %5* } %18 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE11indexDetailIJLm0ELm1EEEENSt4__Cr5tupleIJRS0_RS1_EEEmNS4_16integer_sequenceImJXspT_EEEE(%530* noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1) #3 comdat align 2 { %3 = alloca %687, align 8 %4 = alloca %685, align 1 %5 = alloca %530*, align 8 %6 = alloca i64, align 8 store %530* %0, %530** %5, align 8 store i64 %1, i64* %6, align 8 %7 = load %530*, %530** %5, align 8 %8 = getelementptr inbounds %530, %530* %7, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %96** @_ZNSt4__Cr3getILm0EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_(%531* noundef align 8 dereferenceable(16) %8) #21 %10 = load %96*, %96** %9, align 8 %11 = load i64, i64* %6, align 8 %12 = getelementptr inbounds %96, %96* %10, i64 %11 %13 = getelementptr inbounds %530, %530* %7, i32 0, i32 0 %14 = call noundef align 8 dereferenceable(8) %5** @_ZNSt4__Cr3getILm1EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_(%531* noundef align 8 dereferenceable(16) %13) #21 %15 = load %5*, %5** %14, align 8 %16 = load i64, i64* %6, align 8 %17 = getelementptr inbounds %5, %5* %15, i64 %16 call void @_ZNSt4__Cr5tupleIJR14SkGlyphVariantR7SkPointEEC2INS_4_AndELi0EEES2_S4_(%687* noundef align 8 dereferenceable_or_null(16) %3, %96* noundef align 8 dereferenceable(8) %12, %5* noundef align 4 dereferenceable(8) %17) #21 %18 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %19 = bitcast %688* %18 to { %96*, %5* }* %20 = load { %96*, %5* }, { %96*, %5* }* %19, align 8 ret { %96*, %5* } %20 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96** @_ZNSt4__Cr3getILm0EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_(%531* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %531*, align 8 store %531* %0, %531** %2, align 8 %3 = load %531*, %531** %2, align 8 %4 = getelementptr inbounds %531, %531* %3, i32 0, i32 0 %5 = bitcast %532* %4 to %533* %6 = call noundef align 8 dereferenceable(8) %96** @_ZNKSt4__Cr12__tuple_leafILm0EP14SkGlyphVariantLb0EE3getEv(%533* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %96** %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %5** @_ZNSt4__Cr3getILm1EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_(%531* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %531*, align 8 store %531* %0, %531** %2, align 8 %3 = load %531*, %531** %2, align 8 %4 = getelementptr inbounds %531, %531* %3, i32 0, i32 0 %5 = bitcast %532* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %256* %8 = call noundef align 8 dereferenceable(8) %5** @_ZNKSt4__Cr12__tuple_leafILm1EP7SkPointLb0EE3getEv(%256* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5** %8 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJR14SkGlyphVariantR7SkPointEEC2INS_4_AndELi0EEES2_S4_(%687* noundef align 8 dereferenceable_or_null(16) %0, %96* noundef align 8 dereferenceable(8) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %687*, align 8 %5 = alloca %96*, align 8 %6 = alloca %5*, align 8 %7 = alloca %234, align 1 %8 = alloca %710, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %687* %0, %687** %4, align 8 store %96* %1, %96** %5, align 8 store %5* %2, %5** %6, align 8 %11 = load %687*, %687** %4, align 8 %12 = getelementptr inbounds %687, %687* %11, i32 0, i32 0 %13 = load %96*, %96** %5, align 8 %14 = load %5*, %5** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1EEJS4_S6_EJEJEJS4_S6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_(%688* noundef align 8 dereferenceable_or_null(16) %12, %96* noundef align 8 dereferenceable(8) %13, %5* noundef align 4 dereferenceable(8) %14) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96** @_ZNKSt4__Cr12__tuple_leafILm0EP14SkGlyphVariantLb0EE3getEv(%533* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %533*, align 8 store %533* %0, %533** %2, align 8 %3 = load %533*, %533** %2, align 8 %4 = getelementptr inbounds %533, %533* %3, i32 0, i32 0 ret %96** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %5** @_ZNKSt4__Cr12__tuple_leafILm1EP7SkPointLb0EE3getEv(%256* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %256*, align 8 store %256* %0, %256** %2, align 8 %3 = load %256*, %256** %2, align 8 %4 = getelementptr inbounds %256, %256* %3, i32 0, i32 0 ret %5** %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJR14SkGlyphVariantR7SkPointEEC2IJLm0ELm1EEJS4_S6_EJEJEJS4_S6_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_(%688* noundef align 8 dereferenceable_or_null(16) %0, %96* noundef align 8 dereferenceable(8) %1, %5* noundef align 4 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %710, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %688*, align 8 %9 = alloca %96*, align 8 %10 = alloca %5*, align 8 store %688* %0, %688** %8, align 8 store %96* %1, %96** %9, align 8 store %5* %2, %5** %10, align 8 %11 = load %688*, %688** %8, align 8 %12 = bitcast %688* %11 to %689* %13 = load %96*, %96** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EEC2IS2_vEEOT_(%689* noundef align 8 dereferenceable_or_null(8) %12, %96* noundef align 8 dereferenceable(8) %13) #21 %14 = bitcast %688* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 8 %16 = bitcast i8* %15 to %690* %17 = load %5*, %5** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EEC2IS2_vEEOT_(%690* noundef align 8 dereferenceable_or_null(8) %16, %5* noundef align 4 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EEC2IS2_vEEOT_(%689* noundef align 8 dereferenceable_or_null(8) %0, %96* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %689*, align 8 %4 = alloca %96*, align 8 store %689* %0, %689** %3, align 8 store %96* %1, %96** %4, align 8 %5 = load %689*, %689** %3, align 8 %6 = getelementptr inbounds %689, %689* %5, i32 0, i32 0 %7 = load %96*, %96** %4, align 8 store %96* %7, %96** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EEC2IS2_vEEOT_(%690* noundef align 8 dereferenceable_or_null(8) %0, %5* noundef align 4 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %690*, align 8 %4 = alloca %5*, align 8 store %690* %0, %690** %3, align 8 store %5* %1, %5** %4, align 8 %5 = load %690*, %690** %3, align 8 %6 = getelementptr inbounds %690, %690* %5, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 store %5* %7, %5** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i16 @_ZNK15SkPackedGlyphID7glyphIDEv(%117* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %117*, align 8 store %117* %0, %117** %2, align 8 %3 = load %117*, %117** %2, align 8 %4 = getelementptr inbounds %117, %117* %3, i32 0, i32 0 %5 = load i32, i32* %4, align 4 %6 = lshr i32 %5, 2 %7 = and i32 %6, 65535 %8 = trunc i32 %7 to i16 ret i16 %8 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN11SkEnumerateIN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorENSt4__Cr9monostateEE8IteratorC2ERKS8_(%664* noundef align 8 dereferenceable_or_null(24) %0, %664* noundef align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %664*, align 8 %4 = alloca %664*, align 8 store %664* %0, %664** %3, align 8 store %664* %1, %664** %4, align 8 %5 = load %664*, %664** %3, align 8 %6 = getelementptr inbounds %664, %664* %5, i32 0, i32 0 %7 = load %664*, %664** %4, align 8 %8 = getelementptr inbounds %664, %664* %7, i32 0, i32 0 %9 = load i64, i64* %8, align 8 store i64 %9, i64* %6, align 8 %10 = getelementptr inbounds %664, %664* %5, i32 0, i32 1 %11 = load %664*, %664** %4, align 8 %12 = getelementptr inbounds %664, %664* %11, i32 0, i32 1 call void @_ZN5SkZipIJ14SkGlyphVariant7SkPointEE8IteratorC2ERKS3_(%663* noundef align 8 dereferenceable_or_null(16) %10, %663* noundef align 8 dereferenceable(16) %12) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_Z4SkToImiET_T0_(i32 noundef %0) #3 comdat { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 %4 = sext i32 %3 to i64 ret i64 %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkSpanI7SkPointEC2EPS0_m(%129* noundef align 8 dereferenceable_or_null(16) %0, %5* noundef %1, i64 noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %129*, align 8 %5 = alloca %5*, align 8 %6 = alloca i64, align 8 store %129* %0, %129** %4, align 8 store %5* %1, %5** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %129*, %129** %4, align 8 %8 = getelementptr inbounds %129, %129* %7, i32 0, i32 0 %9 = load %5*, %5** %5, align 8 store %5* %9, %5** %8, align 8 %10 = getelementptr inbounds %129, %129* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkSpanItEC2EPtm(%130* noundef align 8 dereferenceable_or_null(16) %0, i16* noundef %1, i64 noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %130*, align 8 %5 = alloca i16*, align 8 %6 = alloca i64, align 8 store %130* %0, %130** %4, align 8 store i16* %1, i16** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %130*, %130** %4, align 8 %8 = getelementptr inbounds %130, %130* %7, i32 0, i32 0 %9 = load i16*, i16** %5, align 8 store i16* %9, i16** %8, align 8 %10 = getelementptr inbounds %130, %130* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkSpanIK7SkPointEC2IS0_vEERKS_IT_E(%120* noundef align 8 dereferenceable_or_null(16) %0, %129* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %120*, align 8 %4 = alloca %129*, align 8 store %120* %0, %120** %3, align 8 store %129* %1, %129** %4, align 8 %5 = load %120*, %120** %3, align 8 %6 = getelementptr inbounds %120, %120* %5, i32 0, i32 0 %7 = load %129*, %129** %4, align 8 %8 = call noundef %5* @_ZNK6SkSpanI7SkPointE4dataEv(%129* noundef align 8 dereferenceable_or_null(16) %7) store %5* %8, %5** %6, align 8 %9 = getelementptr inbounds %120, %120* %5, i32 0, i32 1 %10 = load %129*, %129** %4, align 8 %11 = call noundef i64 @_ZNK6SkSpanI7SkPointE4sizeEv(%129* noundef align 8 dereferenceable_or_null(16) %10) store i64 %11, i64* %9, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkSpanIKtEC2ItvEERKS_IT_E(%121* noundef align 8 dereferenceable_or_null(16) %0, %130* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %121*, align 8 %4 = alloca %130*, align 8 store %121* %0, %121** %3, align 8 store %130* %1, %130** %4, align 8 %5 = load %121*, %121** %3, align 8 %6 = getelementptr inbounds %121, %121* %5, i32 0, i32 0 %7 = load %130*, %130** %4, align 8 %8 = call noundef i16* @_ZNK6SkSpanItE4dataEv(%130* noundef align 8 dereferenceable_or_null(16) %7) store i16* %8, i16** %6, align 8 %9 = getelementptr inbounds %121, %121* %5, i32 0, i32 1 %10 = load %130*, %130** %4, align 8 %11 = call noundef i64 @_ZNK6SkSpanItE4sizeEv(%130* noundef align 8 dereferenceable_or_null(16) %10) store i64 %11, i64* %9, align 8 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN16SkAutoDescriptorC1ERK12SkDescriptor(%127* noundef align 8 dereferenceable_or_null(132), %128* noundef align 4 dereferenceable(12)) unnamed_addr #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZNK6SkSpanI7SkPointE4dataEv(%129* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %129*, align 8 store %129* %0, %129** %2, align 8 %3 = load %129*, %129** %2, align 8 %4 = call noundef %5* @_ZNK6SkSpanI7SkPointE5beginEv(%129* noundef align 8 dereferenceable_or_null(16) %3) ret %5* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanI7SkPointE4sizeEv(%129* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %129*, align 8 store %129* %0, %129** %2, align 8 %3 = load %129*, %129** %2, align 8 %4 = getelementptr inbounds %129, %129* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %5* @_ZNK6SkSpanI7SkPointE5beginEv(%129* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %129*, align 8 store %129* %0, %129** %2, align 8 %3 = load %129*, %129** %2, align 8 %4 = getelementptr inbounds %129, %129* %3, i32 0, i32 0 %5 = load %5*, %5** %4, align 8 ret %5* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i16* @_ZNK6SkSpanItE4dataEv(%130* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %130*, align 8 store %130* %0, %130** %2, align 8 %3 = load %130*, %130** %2, align 8 %4 = call noundef i16* @_ZNK6SkSpanItE5beginEv(%130* noundef align 8 dereferenceable_or_null(16) %3) ret i16* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanItE4sizeEv(%130* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %130*, align 8 store %130* %0, %130** %2, align 8 %3 = load %130*, %130** %2, align 8 %4 = getelementptr inbounds %130, %130* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i16* @_ZNK6SkSpanItE5beginEv(%130* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %130*, align 8 store %130* %0, %130** %2, align 8 %3 = load %130*, %130** %2, align 8 %4 = getelementptr inbounds %130, %130* %3, i32 0, i32 0 %5 = load i16*, i16** %4, align 8 ret i16* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrIA_6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5resetEDn(%122* noundef align 8 dereferenceable_or_null(16) %0, i8* %1) #3 comdat align 2 { %3 = alloca %122*, align 8 %4 = alloca i8*, align 8 %5 = alloca %101*, align 8 store %122* %0, %122** %3, align 8 store i8* %1, i8** %4, align 8 %6 = load %122*, %122** %3, align 8 %7 = bitcast %101** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %101* inttoptr (i64 -6148914691236517206 to %101*), %101** %5, align 8, !annotation !6 %8 = getelementptr inbounds %122, %122* %6, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %8) #21 %10 = load %101*, %101** %9, align 8 store %101* %10, %101** %5, align 8 %11 = getelementptr inbounds %122, %122* %6, i32 0, i32 0 %12 = call noundef align 8 dereferenceable(8) %101** @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE5firstEv(%123* noundef align 8 dereferenceable_or_null(12) %11) #21 store %101* null, %101** %12, align 8 %13 = load %101*, %101** %5, align 8 %14 = icmp ne %101* %13, null br i1 %14, label %15, label %19 15: ; preds = %2 %16 = getelementptr inbounds %122, %122* %6, i32 0, i32 0 %17 = call noundef align 4 dereferenceable(4) %126* @_ZNSt4__Cr17__compressed_pairIP6SkPathN6sktext3gpu15SubRunAllocator14ArrayDestroyerEE6secondEv(%123* noundef align 8 dereferenceable_or_null(12) %16) #21 %18 = load %101*, %101** %5, align 8 call void @_ZN6sktext3gpu15SubRunAllocator14ArrayDestroyerclI6SkPathEEvPT_(%126* noundef align 4 dereferenceable_or_null(4) %17, %101* noundef %18) br label %19 19: ; preds = %15, %2 %20 = bitcast %101** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %20) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu15SubRunAllocator14ArrayDestroyerclI6SkPathEEvPT_(%126* noundef align 4 dereferenceable_or_null(4) %0, %101* noundef %1) #3 comdat align 2 { %3 = alloca %126*, align 8 %4 = alloca %101*, align 8 %5 = alloca i32, align 4 store %126* %0, %126** %3, align 8 store %101* %1, %101** %4, align 8 %6 = load %126*, %126** %3, align 8 %7 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %7) #21 store i32 -1431655766, i32* %5, align 4, !annotation !6 store i32 0, i32* %5, align 4 br label %8 8: ; preds = %20, %2 %9 = load i32, i32* %5, align 4 %10 = getelementptr inbounds %126, %126* %6, i32 0, i32 0 %11 = load i32, i32* %10, align 4 %12 = icmp slt i32 %9, %11 br i1 %12, label %15, label %13 13: ; preds = %8 %14 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %14) #21 br label %23 15: ; preds = %8 %16 = load %101*, %101** %4, align 8 %17 = load i32, i32* %5, align 4 %18 = sext i32 %17 to i64 %19 = getelementptr inbounds %101, %101* %16, i64 %18 call void @_ZN6SkPathD1Ev(%101* noundef align 8 dereferenceable_or_null(15) %19) #21 br label %20 20: ; preds = %15 %21 = load i32, i32* %5, align 4 %22 = add nsw i32 %21, 1 store i32 %22, i32* %5, align 4 br label %8, !llvm.loop !18 23: ; preds = %13 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %539* @84(%536* noundef align 8 dereferenceable_or_null(8) %0) #3 align 2 { %2 = alloca %536*, align 8 %3 = alloca %539*, align 8 store %536* %0, %536** %2, align 8 %4 = load %536*, %536** %2, align 8 %5 = bitcast %539** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %539* inttoptr (i64 -6148914691236517206 to %539*), %539** %3, align 8, !annotation !6 %6 = getelementptr inbounds %536, %536* %4, i32 0, i32 0 %7 = call noundef align 8 dereferenceable(8) %539** @87(%537* noundef align 8 dereferenceable_or_null(8) %6) #21 %8 = load %539*, %539** %7, align 8 store %539* %8, %539** %3, align 8 %9 = getelementptr inbounds %536, %536* %4, i32 0, i32 0 %10 = call noundef align 8 dereferenceable(8) %539** @87(%537* noundef align 8 dereferenceable_or_null(8) %9) #21 store %539* null, %539** %10, align 8 %11 = load %539*, %539** %3, align 8 %12 = bitcast %539** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret %539* %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef align 1 dereferenceable(1) %659* @85(%536* noundef align 8 dereferenceable_or_null(8) %0) #3 align 2 { %2 = alloca %536*, align 8 store %536* %0, %536** %2, align 8 %3 = load %536*, %536** %2, align 8 %4 = getelementptr inbounds %536, %536* %3, i32 0, i32 0 %5 = call noundef align 1 dereferenceable(1) %659* @89(%537* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %659* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @86(%17* noundef align 8 dereferenceable_or_null(8) %0, %539** noundef align 8 dereferenceable(8) %1, %659* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 align 2 { %4 = alloca %17*, align 8 %5 = alloca %539**, align 8 %6 = alloca %659*, align 8 store %17* %0, %17** %4, align 8 store %539** %1, %539*** %5, align 8 store %659* %2, %659** %6, align 8 %7 = load %17*, %17** %4, align 8 %8 = bitcast %17* %7 to %18* %9 = load %539**, %539*** %5, align 8 call void @90(%18* noundef align 8 dereferenceable_or_null(8) %8, %539** noundef align 8 dereferenceable(8) %9) %10 = bitcast %17* %7 to %660* %11 = load %659*, %659** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2IS4_vEEOT_(%660* noundef align 1 dereferenceable_or_null(1) %10, %659* noundef align 1 dereferenceable(1) %11) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef align 8 dereferenceable(8) %539** @87(%537* noundef align 8 dereferenceable_or_null(8) %0) #3 align 2 { %2 = alloca %537*, align 8 store %537* %0, %537** %2, align 8 %3 = load %537*, %537** %2, align 8 %4 = bitcast %537* %3 to %538* %5 = call noundef align 8 dereferenceable(8) %539** @88(%538* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %539** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef align 8 dereferenceable(8) %539** @88(%538* noundef align 8 dereferenceable_or_null(8) %0) #3 align 2 { %2 = alloca %538*, align 8 store %538* %0, %538** %2, align 8 %3 = load %538*, %538** %2, align 8 %4 = getelementptr inbounds %538, %538* %3, i32 0, i32 0 ret %539** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef align 1 dereferenceable(1) %659* @89(%537* noundef align 8 dereferenceable_or_null(8) %0) #3 align 2 { %2 = alloca %537*, align 8 store %537* %0, %537** %2, align 8 %3 = load %537*, %537** %2, align 8 %4 = bitcast %537* %3 to %660* %5 = call noundef align 1 dereferenceable(1) %659* @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EE5__getEv(%660* noundef align 1 dereferenceable_or_null(1) %4) #21 ret %659* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @90(%18* noundef align 8 dereferenceable_or_null(8) %0, %539** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 { %3 = alloca %18*, align 8 %4 = alloca %539**, align 8 store %18* %0, %18** %3, align 8 store %539** %1, %539*** %4, align 8 %5 = load %18*, %18** %3, align 8 %6 = getelementptr inbounds %18, %18* %5, i32 0, i32 0 %7 = load %539**, %539*** %4, align 8 %8 = load %539*, %539** %7, align 8 %9 = bitcast %539* %8 to %15* store %15* %9, %15** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIN6sktext3gpu15SubRunAllocator9DestroyerELi1ELb1EEC2IS4_vEEOT_(%660* noundef align 1 dereferenceable_or_null(1) %0, %659* noundef align 1 dereferenceable(1) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %660*, align 8 %4 = alloca %659*, align 8 store %660* %0, %660** %3, align 8 store %659* %1, %659** %4, align 8 %5 = load %660*, %660** %3, align 8 %6 = bitcast %660* %5 to %659* %7 = load %659*, %659** %4, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @91(%536* noundef align 8 dereferenceable_or_null(8) %0, %539* noundef %1) #3 align 2 { %3 = alloca %536*, align 8 %4 = alloca %539*, align 8 %5 = alloca %539*, align 8 store %536* %0, %536** %3, align 8 store %539* %1, %539** %4, align 8 %6 = load %536*, %536** %3, align 8 %7 = bitcast %539** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %539* inttoptr (i64 -6148914691236517206 to %539*), %539** %5, align 8, !annotation !6 %8 = getelementptr inbounds %536, %536* %6, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %539** @87(%537* noundef align 8 dereferenceable_or_null(8) %8) #21 %10 = load %539*, %539** %9, align 8 store %539* %10, %539** %5, align 8 %11 = load %539*, %539** %4, align 8 %12 = getelementptr inbounds %536, %536* %6, i32 0, i32 0 %13 = call noundef align 8 dereferenceable(8) %539** @87(%537* noundef align 8 dereferenceable_or_null(8) %12) #21 store %539* %11, %539** %13, align 8 %14 = load %539*, %539** %5, align 8 %15 = icmp ne %539* %14, null br i1 %15, label %16, label %20 16: ; preds = %2 %17 = getelementptr inbounds %536, %536* %6, i32 0, i32 0 %18 = call noundef align 1 dereferenceable(1) %659* @89(%537* noundef align 8 dereferenceable_or_null(8) %17) #21 %19 = load %539*, %539** %5, align 8 call void @92(%659* noundef align 1 dereferenceable_or_null(1) %18, %539* noundef %19) br label %20 20: ; preds = %16, %2 %21 = bitcast %539** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %21) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @92(%659* noundef align 1 dereferenceable_or_null(1) %0, %539* noundef %1) #3 align 2 { %3 = alloca %659*, align 8 %4 = alloca %539*, align 8 store %659* %0, %659** %3, align 8 store %539* %1, %539** %4, align 8 %5 = load %659*, %659** %3, align 8 %6 = load %539*, %539** %4, align 8 call void @68(%539* noundef align 8 dereferenceable_or_null(208) %6) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN16SkAutoDescriptorD1Ev(%127* noundef align 8 dereferenceable_or_null(132)) unnamed_addr #12 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK6SkFont9getEdgingEv(%196* noundef align 8 dereferenceable_or_null(23) %0) #3 comdat align 2 { %2 = alloca %196*, align 8 store %196* %0, %196** %2, align 8 %3 = load %196*, %196** %2, align 8 %4 = getelementptr inbounds %196, %196* %3, i32 0, i32 5 %5 = load i8, i8* %4, align 1 %6 = zext i8 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @93(%547* noalias sret(%547) align 8 %0, i32 noundef %1, i32 noundef %2, float noundef %3, %530* noundef align 8 dereferenceable(24) %4, %10* noundef %5) #5 align 2 { %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca float, align 4 %10 = alloca %530*, align 8 %11 = alloca %10*, align 8 %12 = alloca %44, align 4 %13 = alloca %711, align 8 %14 = alloca %712, align 8 %15 = alloca %44, align 4 %16 = alloca %548, align 8 store i32 %1, i32* %7, align 4 store i32 %2, i32* %8, align 4 store float %3, float* %9, align 4 store %530* %4, %530** %10, align 8 store %10* %5, %10** %11, align 8 %17 = bitcast %44* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %17) #21 %18 = bitcast %44* %12 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %18, i8* align 4 bitcast (%44* @15 to i8*), i64 16, i1 false) %19 = bitcast %711* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %19) #21 %20 = getelementptr inbounds %711, %711* %13, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %20, align 8, !annotation !6 %21 = getelementptr inbounds %711, %711* %13, i32 0, i32 1 store i64 -6148914691236517206, i64* %21, align 8, !annotation !6 %22 = load %10*, %10** %11, align 8 %23 = load %530*, %530** %10, align 8 %24 = getelementptr inbounds %712, %712* %14, i32 0, i32 0 store float* %9, float** %24, align 8 %25 = getelementptr inbounds %712, %712* %14, i32 0, i32 1 store %44* %12, %44** %25, align 8 %26 = bitcast %712* %14 to { float*, %44* }* %27 = getelementptr inbounds { float*, %44* }, { float*, %44* }* %26, i32 0, i32 0 %28 = load float*, float** %27, align 8 %29 = getelementptr inbounds { float*, %44* }, { float*, %44* }* %26, i32 0, i32 1 %30 = load %44*, %44** %29, align 8 %31 = call { %549*, i64 } @97(%10* noundef align 8 dereferenceable_or_null(16) %22, %530* noundef align 8 dereferenceable(24) %23, float* %28, %44* %30) %32 = bitcast %711* %13 to { %549*, i64 }* %33 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %32, i32 0, i32 0 %34 = extractvalue { %549*, i64 } %31, 0 store %549* %34, %549** %33, align 8 %35 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %32, i32 0, i32 1 %36 = extractvalue { %549*, i64 } %31, 1 store i64 %36, i64* %35, align 8 %37 = load i32, i32* %7, align 4 %38 = load i32, i32* %8, align 4 %39 = load float, float* %9, align 4 %40 = bitcast %44* %15 to i8* %41 = bitcast %44* %12 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %40, i8* align 4 %41, i64 16, i1 false) call void @98(%548* noundef align 8 dereferenceable_or_null(16) %16, %711* noundef align 8 dereferenceable(16) %13) %42 = bitcast %44* %15 to { <2 x float>, <2 x float> }* %43 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %42, i32 0, i32 0 %44 = load <2 x float>, <2 x float>* %43, align 4 %45 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %42, i32 0, i32 1 %46 = load <2 x float>, <2 x float>* %45, align 4 %47 = bitcast %548* %16 to { %549*, i64 }* %48 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %47, i32 0, i32 0 %49 = load %549*, %549** %48, align 8 %50 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %47, i32 0, i32 1 %51 = load i64, i64* %50, align 8 call void @99(%547* noundef align 8 dereferenceable_or_null(48) %0, i32 noundef %37, i32 noundef %38, float noundef %39, <2 x float> %44, <2 x float> %46, %549* %49, i64 %51) %52 = bitcast %711* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %52) #21 %53 = bitcast %44* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %53) #21 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN6sktext3gpu11GlyphVector4MakeEO5sk_spI8SkStrikeE6SkSpanI14SkGlyphVariantEPNS0_15SubRunAllocatorE(%551* sret(%551) align 8, %132* noundef align 8 dereferenceable(8), %96*, i64, %10* noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, i64 } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE3getILm0EEEDav(%530* noundef align 8 dereferenceable_or_null(24) %0) #3 comdat align 2 { %2 = alloca %535, align 8 %3 = alloca %530*, align 8 store %530* %0, %530** %3, align 8 %4 = load %530*, %530** %3, align 8 %5 = getelementptr inbounds %530, %530* %4, i32 0, i32 0 %6 = call noundef align 8 dereferenceable(8) %96** @_ZNSt4__Cr3getILm0EJP14SkGlyphVariantP7SkPointEEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS9_(%531* noundef align 8 dereferenceable(16) %5) #21 %7 = load %96*, %96** %6, align 8 %8 = getelementptr inbounds %530, %530* %4, i32 0, i32 1 %9 = load i64, i64* %8, align 8 %10 = call { %96*, i64 } @_Z10SkMakeSpanI14SkGlyphVariantmE6SkSpanIT_EPS2_T0_(%96* noundef %7, i64 noundef %9) %11 = bitcast %535* %2 to { %96*, i64 }* %12 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %11, i32 0, i32 0 %13 = extractvalue { %96*, i64 } %10, 0 store %96* %13, %96** %12, align 8 %14 = getelementptr inbounds { %96*, i64 }, { %96*, i64 }* %11, i32 0, i32 1 %15 = extractvalue { %96*, i64 } %10, 1 store i64 %15, i64* %14, align 8 %16 = bitcast %535* %2 to { %96*, i64 }* %17 = load { %96*, i64 }, { %96*, i64 }* %16, align 8 ret { %96*, i64 } %17 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal %576* @94(%10* noundef align 8 dereferenceable_or_null(16) %0, %19** noundef align 8 dereferenceable(8) %1, i8* noundef align 1 dereferenceable(1) %2, i8* noundef align 1 dereferenceable(1) %3, %546* noundef align 4 dereferenceable(8) %4, %547* noundef align 8 dereferenceable(48) %5, %551* noundef align 8 dereferenceable(104) %6) #3 align 2 { %8 = alloca %573, align 8 %9 = alloca %10*, align 8 %10 = alloca %19**, align 8 %11 = alloca i8*, align 8 %12 = alloca i8*, align 8 %13 = alloca %546*, align 8 %14 = alloca %547*, align 8 %15 = alloca %551*, align 8 %16 = alloca i8*, align 8 store %10* %0, %10** %9, align 8 store %19** %1, %19*** %10, align 8 store i8* %2, i8** %11, align 8 store i8* %3, i8** %12, align 8 store %546* %4, %546** %13, align 8 store %547* %5, %547** %14, align 8 store %551* %6, %551** %15, align 8 %17 = load %10*, %10** %9, align 8 %18 = bitcast i8** %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %18) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %16, align 8, !annotation !6 %19 = getelementptr inbounds %10, %10* %17, i32 0, i32 0 %20 = call noundef i8* @108(%11* noundef align 8 dereferenceable_or_null(16) %19, i32 noundef 1) store i8* %20, i8** %16, align 8 %21 = load i8*, i8** %16, align 8 %22 = bitcast i8* %21 to %576* %23 = load %19**, %19*** %10, align 8 %24 = load %19*, %19** %23, align 8 %25 = load i8*, i8** %11, align 8 %26 = load i8, i8* %25, align 1, !range !7 %27 = trunc i8 %26 to i1 %28 = load i8*, i8** %12, align 8 %29 = load i8, i8* %28, align 1, !range !7 %30 = trunc i8 %29 to i1 %31 = load %546*, %546** %13, align 8 %32 = load %547*, %547** %14, align 8 %33 = load %551*, %551** %15, align 8 call void @109(%576* noundef align 8 dereferenceable_or_null(200) %22, %19* noundef %24, i1 noundef zeroext %27, i1 noundef zeroext %30, %546* noundef align 4 dereferenceable(8) %31, %547* noundef align 8 dereferenceable(48) %32, %551* noundef align 8 dereferenceable(104) %33) call void @110(%573* noundef align 8 dereferenceable_or_null(8) %8, %576* noundef %22) #21 %34 = bitcast i8** %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %34) #21 %35 = getelementptr inbounds %573, %573* %8, i32 0, i32 0 %36 = getelementptr inbounds %574, %574* %35, i32 0, i32 0 %37 = getelementptr inbounds %575, %575* %36, i32 0, i32 0 %38 = load %576*, %576** %37, align 8 ret %576* %38 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @95(%16* noundef align 8 dereferenceable_or_null(8) %0, %573* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 { %3 = alloca %16*, align 8 %4 = alloca %573*, align 8 %5 = alloca %576*, align 8 store %16* %0, %16** %3, align 8 store %573* %1, %573** %4, align 8 %6 = load %16*, %16** %3, align 8 %7 = getelementptr inbounds %16, %16* %6, i32 0, i32 0 %8 = bitcast %576** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #21 %9 = load %573*, %573** %4, align 8 %10 = call noundef %576* @300(%573* noundef align 8 dereferenceable_or_null(8) %9) #21 store %576* %10, %576** %5, align 8 %11 = load %573*, %573** %4, align 8 %12 = call noundef align 1 dereferenceable(1) %659* @301(%573* noundef align 8 dereferenceable_or_null(8) %11) #21 call void @302(%17* noundef align 8 dereferenceable_or_null(8) %7, %576** noundef align 8 dereferenceable(8) %5, %659* noundef align 1 dereferenceable(1) %12) %13 = bitcast %576** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @96(%573* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 align 2 { %2 = alloca %573*, align 8 store %573* %0, %573** %2, align 8 %3 = load %573*, %573** %2, align 8 call void @307(%573* noundef align 8 dereferenceable_or_null(8) %3, %576* noundef null) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu11GlyphVectorD2Ev(%551* noundef align 8 dereferenceable_or_null(104) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %551*, align 8 store %551* %0, %551** %2, align 8 %3 = load %551*, %551** %2, align 8 %4 = getelementptr inbounds %551, %551* %3, i32 0, i32 4 call void @_ZN5skgpu18BulkUsePlotUpdaterD2Ev(%568* noundef align 8 dereferenceable_or_null(64) %4) #21 %5 = getelementptr inbounds %551, %551* %3, i32 0, i32 2 call void @_ZN5sk_spIN6sktext3gpu10TextStrikeEED2Ev(%558* noundef align 8 dereferenceable_or_null(8) %5) #21 %6 = getelementptr inbounds %551, %551* %3, i32 0, i32 0 call void @_ZN5sk_spI8SkStrikeED2Ev(%132* noundef align 8 dereferenceable_or_null(8) %6) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { %549*, i64 } @97(%10* noundef align 8 dereferenceable_or_null(16) %0, %530* noundef align 8 dereferenceable(24) %1, float* %2, %44* %3) #5 align 2 { %5 = alloca %711, align 8 %6 = alloca %712, align 8 %7 = alloca %10*, align 8 %8 = alloca %530*, align 8 %9 = alloca i32, align 4 %10 = alloca %549*, align 8 %11 = alloca i32, align 4 %12 = alloca %687, align 8 %13 = bitcast %712* %6 to { float*, %44* }* %14 = getelementptr inbounds { float*, %44* }, { float*, %44* }* %13, i32 0, i32 0 store float* %2, float** %14, align 8 %15 = getelementptr inbounds { float*, %44* }, { float*, %44* }* %13, i32 0, i32 1 store %44* %3, %44** %15, align 8 store %10* %0, %10** %7, align 8 store %530* %1, %530** %8, align 8 %16 = load %10*, %10** %7, align 8 %17 = bitcast i32* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %17) #21 store i32 -1431655766, i32* %9, align 4, !annotation !6 %18 = load %530*, %530** %8, align 8 %19 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %18) %20 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef %19) store i32 %20, i32* %9, align 4 %21 = bitcast %549** %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %21) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %10, align 8, !annotation !6 %22 = load i32, i32* %9, align 4 %23 = call noundef %549* @100(%10* noundef align 8 dereferenceable_or_null(16) %16, i32 noundef %22) store %549* %23, %549** %10, align 8 %24 = bitcast i32* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %24) #21 store i32 -1431655766, i32* %11, align 4, !annotation !6 store i32 0, i32* %11, align 4 br label %25 25: ; preds = %59, %4 %26 = load i32, i32* %11, align 4 %27 = load i32, i32* %9, align 4 %28 = icmp slt i32 %26, %27 br i1 %28, label %31, label %29 29: ; preds = %25 %30 = bitcast i32* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %30) #21 br label %62 31: ; preds = %25 %32 = load %549*, %549** %10, align 8 %33 = load i32, i32* %11, align 4 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds %549, %549* %32, i64 %34 %36 = bitcast %549* %35 to i8* %37 = bitcast i8* %36 to %549* %38 = load %530*, %530** %8, align 8 %39 = load i32, i32* %11, align 4 %40 = sext i32 %39 to i64 %41 = call { %96*, %5* } @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEEixEm(%530* noundef align 8 dereferenceable_or_null(24) %38, i64 noundef %40) %42 = getelementptr inbounds %687, %687* %12, i32 0, i32 0 %43 = bitcast %688* %42 to { %96*, %5* }* %44 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %43, i32 0, i32 0 %45 = extractvalue { %96*, %5* } %41, 0 store %96* %45, %96** %44, align 8 %46 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %43, i32 0, i32 1 %47 = extractvalue { %96*, %5* } %41, 1 store %5* %47, %5** %46, align 8 %48 = bitcast %687* %12 to { %96*, %5* }* %49 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %48, i32 0, i32 0 %50 = load %96*, %96** %49, align 8 %51 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %48, i32 0, i32 1 %52 = load %5*, %5** %51, align 8 %53 = call { <2 x float>, i64 } @101(%712* noundef align 8 dereferenceable_or_null(16) %6, %96* %50, %5* %52) %54 = bitcast %549* %37 to { <2 x float>, i64 }* %55 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %54, i32 0, i32 0 %56 = extractvalue { <2 x float>, i64 } %53, 0 store <2 x float> %56, <2 x float>* %55, align 4 %57 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %54, i32 0, i32 1 %58 = extractvalue { <2 x float>, i64 } %53, 1 store i64 %58, i64* %57, align 4 br label %59 59: ; preds = %31 %60 = load i32, i32* %11, align 4 %61 = add nsw i32 %60, 1 store i32 %61, i32* %11, align 4 br label %25, !llvm.loop !19 62: ; preds = %29 %63 = load %549*, %549** %10, align 8 %64 = load %530*, %530** %8, align 8 %65 = call noundef i64 @_ZNK5SkZipIJ14SkGlyphVariant7SkPointEE4sizeEv(%530* noundef align 8 dereferenceable_or_null(24) %64) call void @102(%711* noundef align 8 dereferenceable_or_null(16) %5, %549* noundef %63, i64 noundef %65) %66 = bitcast %549** %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %66) #21 %67 = bitcast i32* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %67) #21 %68 = bitcast %711* %5 to { %549*, i64 }* %69 = load { %549*, i64 }, { %549*, i64 }* %68, align 8 ret { %549*, i64 } %69 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @98(%548* noundef align 8 dereferenceable_or_null(16) %0, %711* noundef align 8 dereferenceable(16) %1) unnamed_addr #0 align 2 { %3 = alloca %548*, align 8 %4 = alloca %711*, align 8 store %548* %0, %548** %3, align 8 store %711* %1, %711** %4, align 8 %5 = load %548*, %548** %3, align 8 %6 = getelementptr inbounds %548, %548* %5, i32 0, i32 0 %7 = load %711*, %711** %4, align 8 %8 = call noundef %549* @105(%711* noundef align 8 dereferenceable_or_null(16) %7) store %549* %8, %549** %6, align 8 %9 = getelementptr inbounds %548, %548* %5, i32 0, i32 1 %10 = load %711*, %711** %4, align 8 %11 = call noundef i64 @106(%711* noundef align 8 dereferenceable_or_null(16) %10) store i64 %11, i64* %9, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @99(%547* noundef align 8 dereferenceable_or_null(48) %0, i32 noundef %1, i32 noundef %2, float noundef %3, <2 x float> %4, <2 x float> %5, %549* %6, i64 %7) unnamed_addr #14 align 2 { %9 = alloca %44, align 4 %10 = alloca %548, align 8 %11 = alloca %547*, align 8 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca float, align 4 %15 = bitcast %44* %9 to { <2 x float>, <2 x float> }* %16 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %15, i32 0, i32 0 store <2 x float> %4, <2 x float>* %16, align 4 %17 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %15, i32 0, i32 1 store <2 x float> %5, <2 x float>* %17, align 4 %18 = bitcast %548* %10 to { %549*, i64 }* %19 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %18, i32 0, i32 0 store %549* %6, %549** %19, align 8 %20 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %18, i32 0, i32 1 store i64 %7, i64* %20, align 8 store %547* %0, %547** %11, align 8 store i32 %1, i32* %12, align 4 store i32 %2, i32* %13, align 4 store float %3, float* %14, align 4 %21 = load %547*, %547** %11, align 8 %22 = getelementptr inbounds %547, %547* %21, i32 0, i32 0 %23 = load i32, i32* %12, align 4 store i32 %23, i32* %22, align 8 %24 = getelementptr inbounds %547, %547* %21, i32 0, i32 1 %25 = load i32, i32* %13, align 4 %26 = sitofp i32 %25 to float %27 = load i32, i32* %13, align 4 %28 = sitofp i32 %27 to float %29 = call <2 x float> @_ZN7SkPoint4MakeEff(float noundef %26, float noundef %28) %30 = bitcast %5* %24 to <2 x float>* store <2 x float> %29, <2 x float>* %30, align 4 %31 = getelementptr inbounds %547, %547* %21, i32 0, i32 2 %32 = load float, float* %14, align 4 store float %32, float* %31, align 4 %33 = getelementptr inbounds %547, %547* %21, i32 0, i32 3 %34 = bitcast %44* %33 to i8* %35 = bitcast %44* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %34, i8* align 4 %35, i64 16, i1 false) %36 = getelementptr inbounds %547, %547* %21, i32 0, i32 4 %37 = bitcast %548* %36 to i8* %38 = bitcast %548* %10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %38, i64 16, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %549* @100(%10* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 align 2 { %3 = alloca %10*, align 8 %4 = alloca i32, align 4 store %10* %0, %10** %3, align 8 store i32 %1, i32* %4, align 4 %5 = load %10*, %10** %3, align 8 %6 = getelementptr inbounds %10, %10* %5, i32 0, i32 0 %7 = load i32, i32* %4, align 4 %8 = call noundef i8* @103(%11* noundef align 8 dereferenceable_or_null(16) %6, i32 noundef %7) %9 = bitcast i8* %8 to %549* ret %549* %9 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { <2 x float>, i64 } @101(%712* noundef align 8 dereferenceable_or_null(16) %0, %96* %1, %5* %2) #15 align 2 { %4 = alloca %549, align 4 %5 = alloca %687, align 8 %6 = alloca %712*, align 8 %7 = alloca %687, align 8 %8 = alloca %96*, align 8 %9 = alloca %5*, align 8 %10 = alloca %98*, align 8 %11 = alloca i16, align 2 %12 = alloca i16, align 2 %13 = alloca i16, align 2 %14 = alloca i16, align 2 %15 = alloca %5, align 4 %16 = alloca %5, align 4 %17 = alloca %5, align 4 %18 = alloca %5, align 4 %19 = alloca %5, align 4 %20 = alloca %5, align 4 %21 = alloca %44, align 4 %22 = bitcast %687* %5 to { %96*, %5* }* %23 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %22, i32 0, i32 0 store %96* %1, %96** %23, align 8 %24 = getelementptr inbounds { %96*, %5* }, { %96*, %5* }* %22, i32 0, i32 1 store %5* %2, %5** %24, align 8 store %712* %0, %712** %6, align 8 %25 = load %712*, %712** %6, align 8 %26 = bitcast %687* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %26) #21 %27 = getelementptr inbounds %687, %687* %7, i32 0, i32 0 %28 = getelementptr inbounds %688, %688* %27, i32 0, i32 0 %29 = getelementptr inbounds %689, %689* %28, i32 0, i32 0 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %29, align 8, !annotation !6 %30 = getelementptr inbounds %688, %688* %27, i32 0, i32 1 %31 = getelementptr inbounds %690, %690* %30, i32 0, i32 0 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %31, align 8, !annotation !6 %32 = bitcast %687* %7 to i8* %33 = bitcast %687* %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %33, i64 16, i1 false) %34 = bitcast %96** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %34) #21 store %96* inttoptr (i64 -6148914691236517206 to %96*), %96** %8, align 8, !annotation !6 %35 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%687* noundef align 8 dereferenceable(16) %7) #21 store %96* %35, %96** %8, align 8 %36 = bitcast %5** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %36) #21 store %5* inttoptr (i64 -6148914691236517206 to %5*), %5** %9, align 8, !annotation !6 %37 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%687* noundef align 8 dereferenceable(16) %7) #21 store %5* %37, %5** %9, align 8 %38 = bitcast %98** %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %38) #21 store %98* inttoptr (i64 -6148914691236517206 to %98*), %98** %10, align 8, !annotation !6 %39 = load %96*, %96** %8, align 8 %40 = call noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %39) store %98* %40, %98** %10, align 8 %41 = bitcast i16* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 2, i8* %41) #21 store i16 -21846, i16* %11, align 2, !annotation !6 %42 = load %98*, %98** %10, align 8 %43 = call noundef i32 @_ZNK7SkGlyph4leftEv(%98* noundef align 8 dereferenceable_or_null(48) %42) %44 = trunc i32 %43 to i16 store i16 %44, i16* %11, align 2 %45 = bitcast i16* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 2, i8* %45) #21 store i16 -21846, i16* %12, align 2, !annotation !6 %46 = load %98*, %98** %10, align 8 %47 = call noundef i32 @_ZNK7SkGlyph3topEv(%98* noundef align 8 dereferenceable_or_null(48) %46) %48 = trunc i32 %47 to i16 store i16 %48, i16* %12, align 2 %49 = bitcast i16* %13 to i8* call void @llvm.lifetime.start.p0i8(i64 2, i8* %49) #21 store i16 -21846, i16* %13, align 2, !annotation !6 %50 = load i16, i16* %11, align 2 %51 = sext i16 %50 to i32 %52 = load %98*, %98** %10, align 8 %53 = call noundef i32 @_ZNK7SkGlyph5widthEv(%98* noundef align 8 dereferenceable_or_null(48) %52) %54 = add nsw i32 %51, %53 %55 = trunc i32 %54 to i16 store i16 %55, i16* %13, align 2 %56 = bitcast i16* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 2, i8* %56) #21 store i16 -21846, i16* %14, align 2, !annotation !6 %57 = load i16, i16* %12, align 2 %58 = sext i16 %57 to i32 %59 = load %98*, %98** %10, align 8 %60 = call noundef i32 @_ZNK7SkGlyph6heightEv(%98* noundef align 8 dereferenceable_or_null(48) %59) %61 = add nsw i32 %58, %60 %62 = trunc i32 %61 to i16 store i16 %62, i16* %14, align 2 %63 = bitcast %5* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %63) #21 %64 = getelementptr inbounds %5, %5* %15, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %64, align 4, !annotation !6 %65 = getelementptr inbounds %5, %5* %15, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %65, align 4, !annotation !6 %66 = bitcast %5* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %66) #21 %67 = bitcast %5* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %67) #21 %68 = load i16, i16* %11, align 2 %69 = sitofp i16 %68 to float %70 = load i16, i16* %12, align 2 %71 = sitofp i16 %70 to float %72 = call <2 x float> @_ZN7SkPoint4MakeEff(float noundef %69, float noundef %71) %73 = bitcast %5* %17 to <2 x float>* store <2 x float> %72, <2 x float>* %73, align 4 %74 = getelementptr inbounds %712, %712* %25, i32 0, i32 0 %75 = load float*, float** %74, align 8 %76 = load float, float* %75, align 4 %77 = call <2 x float> @_ZNK7SkPointmlEf(%5* noundef align 4 dereferenceable_or_null(8) %17, float noundef %76) %78 = bitcast %5* %16 to <2 x float>* store <2 x float> %77, <2 x float>* %78, align 4 %79 = load %5*, %5** %9, align 8 %80 = call <2 x float> @_ZplRK7SkPointS1_(%5* noundef align 4 dereferenceable(8) %16, %5* noundef align 4 dereferenceable(8) %79) %81 = bitcast %5* %15 to <2 x float>* store <2 x float> %80, <2 x float>* %81, align 4 %82 = bitcast %5* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %82) #21 %83 = bitcast %5* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %83) #21 %84 = bitcast %5* %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %84) #21 %85 = getelementptr inbounds %5, %5* %18, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %85, align 4, !annotation !6 %86 = getelementptr inbounds %5, %5* %18, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %86, align 4, !annotation !6 %87 = bitcast %5* %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %87) #21 %88 = bitcast %5* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %88) #21 %89 = load i16, i16* %13, align 2 %90 = sitofp i16 %89 to float %91 = load i16, i16* %14, align 2 %92 = sitofp i16 %91 to float %93 = call <2 x float> @_ZN7SkPoint4MakeEff(float noundef %90, float noundef %92) %94 = bitcast %5* %20 to <2 x float>* store <2 x float> %93, <2 x float>* %94, align 4 %95 = getelementptr inbounds %712, %712* %25, i32 0, i32 0 %96 = load float*, float** %95, align 8 %97 = load float, float* %96, align 4 %98 = call <2 x float> @_ZNK7SkPointmlEf(%5* noundef align 4 dereferenceable_or_null(8) %20, float noundef %97) %99 = bitcast %5* %19 to <2 x float>* store <2 x float> %98, <2 x float>* %99, align 4 %100 = load %5*, %5** %9, align 8 %101 = call <2 x float> @_ZplRK7SkPointS1_(%5* noundef align 4 dereferenceable(8) %19, %5* noundef align 4 dereferenceable(8) %100) %102 = bitcast %5* %18 to <2 x float>* store <2 x float> %101, <2 x float>* %102, align 4 %103 = bitcast %5* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %103) #21 %104 = bitcast %5* %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %104) #21 %105 = getelementptr inbounds %712, %712* %25, i32 0, i32 1 %106 = load %44*, %44** %105, align 8 %107 = bitcast %44* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %107) #21 %108 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %15) %109 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %15) %110 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %18) %111 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %18) %112 = call { <2 x float>, <2 x float> } @_ZN6SkRect8MakeLTRBEffff(float noundef %108, float noundef %109, float noundef %110, float noundef %111) %113 = bitcast %44* %21 to { <2 x float>, <2 x float> }* %114 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %113, i32 0, i32 0 %115 = extractvalue { <2 x float>, <2 x float> } %112, 0 store <2 x float> %115, <2 x float>* %114, align 4 %116 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %113, i32 0, i32 1 %117 = extractvalue { <2 x float>, <2 x float> } %112, 1 store <2 x float> %117, <2 x float>* %116, align 4 call void @_ZN6SkRect21joinPossiblyEmptyRectERKS_(%44* noundef align 4 dereferenceable_or_null(16) %106, %44* noundef align 4 dereferenceable(16) %21) %118 = bitcast %44* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %118) #21 %119 = getelementptr inbounds %549, %549* %4, i32 0, i32 0 %120 = load %5*, %5** %9, align 8 %121 = bitcast %5* %119 to i8* %122 = bitcast %5* %120 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %121, i8* align 4 %122, i64 8, i1 false) %123 = getelementptr inbounds %549, %549* %4, i32 0, i32 1 %124 = getelementptr inbounds %550, %550* %123, i32 0, i32 0 %125 = load i16, i16* %11, align 2 store i16 %125, i16* %124, align 4 %126 = getelementptr inbounds %550, %550* %123, i32 0, i32 1 %127 = load i16, i16* %12, align 2 store i16 %127, i16* %126, align 2 %128 = getelementptr inbounds %550, %550* %123, i32 0, i32 2 %129 = load i16, i16* %13, align 2 store i16 %129, i16* %128, align 4 %130 = getelementptr inbounds %550, %550* %123, i32 0, i32 3 %131 = load i16, i16* %14, align 2 store i16 %131, i16* %130, align 2 %132 = bitcast %5* %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %132) #21 %133 = bitcast %5* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %133) #21 %134 = bitcast i16* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 2, i8* %134) #21 %135 = bitcast i16* %13 to i8* call void @llvm.lifetime.end.p0i8(i64 2, i8* %135) #21 %136 = bitcast i16* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 2, i8* %136) #21 %137 = bitcast i16* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 2, i8* %137) #21 %138 = bitcast %98** %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %138) #21 %139 = bitcast %5** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %139) #21 %140 = bitcast %96** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %140) #21 %141 = bitcast %687* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %141) #21 %142 = bitcast %549* %4 to { <2 x float>, i64 }* %143 = load { <2 x float>, i64 }, { <2 x float>, i64 }* %142, align 4 ret { <2 x float>, i64 } %143 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @102(%711* noundef align 8 dereferenceable_or_null(16) %0, %549* noundef %1, i64 noundef %2) unnamed_addr #0 align 2 { %4 = alloca %711*, align 8 %5 = alloca %549*, align 8 %6 = alloca i64, align 8 store %711* %0, %711** %4, align 8 store %549* %1, %549** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %711*, %711** %4, align 8 %8 = getelementptr inbounds %711, %711* %7, i32 0, i32 0 %9 = load %549*, %549** %5, align 8 store %549* %9, %549** %8, align 8 %10 = getelementptr inbounds %711, %711* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i8* @103(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %713, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 134217471, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %713* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 134217471 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @104(%713* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %713* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 16 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 4) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @104(%713* noundef align 1 dereferenceable_or_null(1) %0) #7 align 2 { %2 = alloca %713*, align 8 store %713* %0, %713** %2, align 8 %3 = load %713*, %713** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr3getILm0EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%687* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %687*, align 8 store %687* %0, %687** %2, align 8 %3 = load %687*, %687** %2, align 8 %4 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %5 = bitcast %688* %4 to %689* %6 = call noundef align 8 dereferenceable(8) %96* @_ZNSt4__Cr12__tuple_leafILm0ER14SkGlyphVariantLb0EE3getEv(%689* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %96* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr3getILm1EJR14SkGlyphVariantR7SkPointEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%687* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %687*, align 8 store %687* %0, %687** %2, align 8 %3 = load %687*, %687** %2, align 8 %4 = getelementptr inbounds %687, %687* %3, i32 0, i32 0 %5 = bitcast %688* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %690* %8 = call noundef align 4 dereferenceable(8) %5* @_ZNSt4__Cr12__tuple_leafILm1ER7SkPointLb0EE3getEv(%690* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %5* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %98* @_ZNK14SkGlyphVariantcvPK7SkGlyphEv(%96* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %96*, align 8 store %96* %0, %96** %2, align 8 %3 = load %96*, %96** %2, align 8 %4 = call noundef %98* @_ZNK14SkGlyphVariant5glyphEv(%96* noundef align 8 dereferenceable_or_null(8) %3) ret %98* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK7SkGlyph4leftEv(%98* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %98*, align 8 store %98* %0, %98** %2, align 8 %3 = load %98*, %98** %2, align 8 %4 = getelementptr inbounds %98, %98* %3, i32 0, i32 3 %5 = load i16, i16* %4, align 2 %6 = sext i16 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK7SkGlyph3topEv(%98* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %98*, align 8 store %98* %0, %98** %2, align 8 %3 = load %98*, %98** %2, align 8 %4 = getelementptr inbounds %98, %98* %3, i32 0, i32 2 %5 = load i16, i16* %4, align 4 %6 = sext i16 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK7SkGlyph5widthEv(%98* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %98*, align 8 store %98* %0, %98** %2, align 8 %3 = load %98*, %98** %2, align 8 %4 = getelementptr inbounds %98, %98* %3, i32 0, i32 0 %5 = load i16, i16* %4, align 8 %6 = zext i16 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK7SkGlyph6heightEv(%98* noundef align 8 dereferenceable_or_null(48) %0) #3 comdat align 2 { %2 = alloca %98*, align 8 store %98* %0, %98** %2, align 8 %3 = load %98*, %98** %2, align 8 %4 = getelementptr inbounds %98, %98* %3, i32 0, i32 1 %5 = load i16, i16* %4, align 2 %6 = zext i16 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden <2 x float> @_ZplRK7SkPointS1_(%5* noundef align 4 dereferenceable(8) %0, %5* noundef align 4 dereferenceable(8) %1) #5 comdat { %3 = alloca %5, align 4 %4 = alloca %5*, align 8 %5 = alloca %5*, align 8 store %5* %0, %5** %4, align 8 store %5* %1, %5** %5, align 8 %6 = getelementptr inbounds %5, %5* %3, i32 0, i32 0 %7 = load %5*, %5** %4, align 8 %8 = getelementptr inbounds %5, %5* %7, i32 0, i32 0 %9 = load float, float* %8, align 4 %10 = load %5*, %5** %5, align 8 %11 = getelementptr inbounds %5, %5* %10, i32 0, i32 0 %12 = load float, float* %11, align 4 %13 = fadd float %9, %12 store float %13, float* %6, align 4 %14 = getelementptr inbounds %5, %5* %3, i32 0, i32 1 %15 = load %5*, %5** %4, align 8 %16 = getelementptr inbounds %5, %5* %15, i32 0, i32 1 %17 = load float, float* %16, align 4 %18 = load %5*, %5** %5, align 8 %19 = getelementptr inbounds %5, %5* %18, i32 0, i32 1 %20 = load float, float* %19, align 4 %21 = fadd float %17, %20 store float %21, float* %14, align 4 %22 = bitcast %5* %3 to <2 x float>* %23 = load <2 x float>, <2 x float>* %22, align 4 ret <2 x float> %23 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden <2 x float> @_ZN7SkPoint4MakeEff(float noundef %0, float noundef %1) #5 comdat align 2 { %3 = alloca %5, align 4 %4 = alloca float, align 4 %5 = alloca float, align 4 store float %0, float* %4, align 4 store float %1, float* %5, align 4 %6 = getelementptr inbounds %5, %5* %3, i32 0, i32 0 %7 = load float, float* %4, align 4 store float %7, float* %6, align 4 %8 = getelementptr inbounds %5, %5* %3, i32 0, i32 1 %9 = load float, float* %5, align 4 store float %9, float* %8, align 4 %10 = bitcast %5* %3 to <2 x float>* %11 = load <2 x float>, <2 x float>* %10, align 4 ret <2 x float> %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden <2 x float> @_ZNK7SkPointmlEf(%5* noundef align 4 dereferenceable_or_null(8) %0, float noundef %1) #5 comdat align 2 { %3 = alloca %5, align 4 %4 = alloca %5*, align 8 %5 = alloca float, align 4 store %5* %0, %5** %4, align 8 store float %1, float* %5, align 4 %6 = load %5*, %5** %4, align 8 %7 = getelementptr inbounds %5, %5* %3, i32 0, i32 0 %8 = getelementptr inbounds %5, %5* %6, i32 0, i32 0 %9 = load float, float* %8, align 4 %10 = load float, float* %5, align 4 %11 = fmul float %9, %10 store float %11, float* %7, align 4 %12 = getelementptr inbounds %5, %5* %3, i32 0, i32 1 %13 = getelementptr inbounds %5, %5* %6, i32 0, i32 1 %14 = load float, float* %13, align 4 %15 = load float, float* %5, align 4 %16 = fmul float %14, %15 store float %16, float* %12, align 4 %17 = bitcast %5* %3 to <2 x float>* %18 = load <2 x float>, <2 x float>* %17, align 4 ret <2 x float> %18 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkRect21joinPossiblyEmptyRectERKS_(%44* noundef align 4 dereferenceable_or_null(16) %0, %44* noundef align 4 dereferenceable(16) %1) #3 comdat align 2 { %3 = alloca %44*, align 8 %4 = alloca %44*, align 8 %5 = alloca float, align 4 %6 = alloca float, align 4 %7 = alloca float, align 4 %8 = alloca float, align 4 store %44* %0, %44** %3, align 8 store %44* %1, %44** %4, align 8 %9 = load %44*, %44** %3, align 8 %10 = getelementptr inbounds %44, %44* %9, i32 0, i32 0 %11 = bitcast float* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %11) #21 %12 = load %44*, %44** %4, align 8 %13 = call noundef float @_ZNK6SkRect4leftEv(%44* noundef align 4 dereferenceable_or_null(16) %12) store float %13, float* %5, align 4 %14 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3minIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %10, float* noundef align 4 dereferenceable(4) %5) %15 = load float, float* %14, align 4 %16 = getelementptr inbounds %44, %44* %9, i32 0, i32 0 store float %15, float* %16, align 4 %17 = bitcast float* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %17) #21 %18 = getelementptr inbounds %44, %44* %9, i32 0, i32 1 %19 = bitcast float* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %19) #21 %20 = load %44*, %44** %4, align 8 %21 = call noundef float @_ZNK6SkRect3topEv(%44* noundef align 4 dereferenceable_or_null(16) %20) store float %21, float* %6, align 4 %22 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3minIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %18, float* noundef align 4 dereferenceable(4) %6) %23 = load float, float* %22, align 4 %24 = getelementptr inbounds %44, %44* %9, i32 0, i32 1 store float %23, float* %24, align 4 %25 = bitcast float* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %25) #21 %26 = getelementptr inbounds %44, %44* %9, i32 0, i32 2 %27 = bitcast float* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %27) #21 %28 = load %44*, %44** %4, align 8 %29 = call noundef float @_ZNK6SkRect5rightEv(%44* noundef align 4 dereferenceable_or_null(16) %28) store float %29, float* %7, align 4 %30 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3maxIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %26, float* noundef align 4 dereferenceable(4) %7) %31 = load float, float* %30, align 4 %32 = getelementptr inbounds %44, %44* %9, i32 0, i32 2 store float %31, float* %32, align 4 %33 = bitcast float* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = getelementptr inbounds %44, %44* %9, i32 0, i32 3 %35 = bitcast float* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %35) #21 %36 = load %44*, %44** %4, align 8 %37 = call noundef float @_ZNK6SkRect6bottomEv(%44* noundef align 4 dereferenceable_or_null(16) %36) store float %37, float* %8, align 4 %38 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3maxIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %34, float* noundef align 4 dereferenceable(4) %8) %39 = load float, float* %38, align 4 %40 = getelementptr inbounds %44, %44* %9, i32 0, i32 3 store float %39, float* %40, align 4 %41 = bitcast float* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %41) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { <2 x float>, <2 x float> } @_ZN6SkRect8MakeLTRBEffff(float noundef %0, float noundef %1, float noundef %2, float noundef %3) #3 comdat align 2 { %5 = alloca %44, align 4 %6 = alloca float, align 4 %7 = alloca float, align 4 %8 = alloca float, align 4 %9 = alloca float, align 4 store float %0, float* %6, align 4 store float %1, float* %7, align 4 store float %2, float* %8, align 4 store float %3, float* %9, align 4 %10 = getelementptr inbounds %44, %44* %5, i32 0, i32 0 %11 = load float, float* %6, align 4 store float %11, float* %10, align 4 %12 = getelementptr inbounds %44, %44* %5, i32 0, i32 1 %13 = load float, float* %7, align 4 store float %13, float* %12, align 4 %14 = getelementptr inbounds %44, %44* %5, i32 0, i32 2 %15 = load float, float* %8, align 4 store float %15, float* %14, align 4 %16 = getelementptr inbounds %44, %44* %5, i32 0, i32 3 %17 = load float, float* %9, align 4 store float %17, float* %16, align 4 %18 = bitcast %44* %5 to { <2 x float>, <2 x float> }* %19 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %18, align 4 ret { <2 x float>, <2 x float> } %19 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3minIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %0, float* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca float*, align 8 %4 = alloca float*, align 8 %5 = alloca %714, align 1 store float* %0, float** %3, align 8 store float* %1, float** %4, align 8 %6 = load float*, float** %3, align 8 %7 = load float*, float** %4, align 8 %8 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3minIfNS_6__lessIffEEEERKT_S5_S5_T0_(float* noundef align 4 dereferenceable(4) %6, float* noundef align 4 dereferenceable(4) %7) ret float* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK6SkRect4leftEv(%44* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %44*, align 8 store %44* %0, %44** %2, align 8 %3 = load %44*, %44** %2, align 8 %4 = getelementptr inbounds %44, %44* %3, i32 0, i32 0 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK6SkRect3topEv(%44* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %44*, align 8 store %44* %0, %44** %2, align 8 %3 = load %44*, %44** %2, align 8 %4 = getelementptr inbounds %44, %44* %3, i32 0, i32 1 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3maxIfEERKT_S3_S3_(float* noundef align 4 dereferenceable(4) %0, float* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca float*, align 8 %4 = alloca float*, align 8 %5 = alloca %714, align 1 store float* %0, float** %3, align 8 store float* %1, float** %4, align 8 %6 = load float*, float** %3, align 8 %7 = load float*, float** %4, align 8 %8 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3maxIfNS_6__lessIffEEEERKT_S5_S5_T0_(float* noundef align 4 dereferenceable(4) %6, float* noundef align 4 dereferenceable(4) %7) ret float* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK6SkRect5rightEv(%44* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %44*, align 8 store %44* %0, %44** %2, align 8 %3 = load %44*, %44** %2, align 8 %4 = getelementptr inbounds %44, %44* %3, i32 0, i32 2 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef float @_ZNK6SkRect6bottomEv(%44* noundef align 4 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %44*, align 8 store %44* %0, %44** %2, align 8 %3 = load %44*, %44** %2, align 8 %4 = getelementptr inbounds %44, %44* %3, i32 0, i32 3 %5 = load float, float* %4, align 4 ret float %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3minIfNS_6__lessIffEEEERKT_S5_S5_T0_(float* noundef align 4 dereferenceable(4) %0, float* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca %714, align 1 %4 = alloca float*, align 8 %5 = alloca float*, align 8 store float* %0, float** %4, align 8 store float* %1, float** %5, align 8 %6 = load float*, float** %5, align 8 %7 = load float*, float** %4, align 8 %8 = call noundef zeroext i1 @_ZNKSt4__Cr6__lessIffEclERKfS3_(%714* noundef align 1 dereferenceable_or_null(1) %3, float* noundef align 4 dereferenceable(4) %6, float* noundef align 4 dereferenceable(4) %7) br i1 %8, label %9, label %11 9: ; preds = %2 %10 = load float*, float** %5, align 8 br label %13 11: ; preds = %2 %12 = load float*, float** %4, align 8 br label %13 13: ; preds = %11, %9 %14 = phi float* [ %10, %9 ], [ %12, %11 ] ret float* %14 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNKSt4__Cr6__lessIffEclERKfS3_(%714* noundef align 1 dereferenceable_or_null(1) %0, float* noundef align 4 dereferenceable(4) %1, float* noundef align 4 dereferenceable(4) %2) #3 comdat align 2 { %4 = alloca %714*, align 8 %5 = alloca float*, align 8 %6 = alloca float*, align 8 store %714* %0, %714** %4, align 8 store float* %1, float** %5, align 8 store float* %2, float** %6, align 8 %7 = load %714*, %714** %4, align 8 %8 = load float*, float** %5, align 8 %9 = load float, float* %8, align 4 %10 = load float*, float** %6, align 8 %11 = load float, float* %10, align 4 %12 = fcmp olt float %9, %11 ret i1 %12 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3maxIfNS_6__lessIffEEEERKT_S5_S5_T0_(float* noundef align 4 dereferenceable(4) %0, float* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca %714, align 1 %4 = alloca float*, align 8 %5 = alloca float*, align 8 store float* %0, float** %4, align 8 store float* %1, float** %5, align 8 %6 = load float*, float** %4, align 8 %7 = load float*, float** %5, align 8 %8 = call noundef zeroext i1 @_ZNKSt4__Cr6__lessIffEclERKfS3_(%714* noundef align 1 dereferenceable_or_null(1) %3, float* noundef align 4 dereferenceable(4) %6, float* noundef align 4 dereferenceable(4) %7) br i1 %8, label %9, label %11 9: ; preds = %2 %10 = load float*, float** %5, align 8 br label %13 11: ; preds = %2 %12 = load float*, float** %4, align 8 br label %13 13: ; preds = %11, %9 %14 = phi float* [ %10, %9 ], [ %12, %11 ] ret float* %14 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %549* @105(%711* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %711*, align 8 store %711* %0, %711** %2, align 8 %3 = load %711*, %711** %2, align 8 %4 = call noundef %549* @107(%711* noundef align 8 dereferenceable_or_null(16) %3) ret %549* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @106(%711* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %711*, align 8 store %711* %0, %711** %2, align 8 %3 = load %711*, %711** %2, align 8 %4 = getelementptr inbounds %711, %711* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %549* @107(%711* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %711*, align 8 store %711* %0, %711** %2, align 8 %3 = load %711*, %711** %2, align 8 %4 = getelementptr inbounds %711, %711* %3, i32 0, i32 0 %5 = load %549*, %549** %4, align 8 ret %549* %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { %96*, i64 } @_Z10SkMakeSpanI14SkGlyphVariantmE6SkSpanIT_EPS2_T0_(%96* noundef %0, i64 noundef %1) #7 comdat { %3 = alloca %535, align 8 %4 = alloca %96*, align 8 %5 = alloca i64, align 8 store %96* %0, %96** %4, align 8 store i64 %1, i64* %5, align 8 %6 = load %96*, %96** %4, align 8 %7 = load i64, i64* %5, align 8 %8 = call noundef i64 @_Z4SkToImmET_T0_(i64 noundef %7) call void @_ZN6SkSpanI14SkGlyphVariantEC2EPS0_m(%535* noundef align 8 dereferenceable_or_null(16) %3, %96* noundef %6, i64 noundef %8) %9 = bitcast %535* %3 to { %96*, i64 }* %10 = load { %96*, i64 }, { %96*, i64 }* %9, align 8 ret { %96*, i64 } %10 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_Z4SkToImmET_T0_(i64 noundef %0) #3 comdat { %2 = alloca i64, align 8 store i64 %0, i64* %2, align 8 %3 = load i64, i64* %2, align 8 ret i64 %3 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkSpanI14SkGlyphVariantEC2EPS0_m(%535* noundef align 8 dereferenceable_or_null(16) %0, %96* noundef %1, i64 noundef %2) unnamed_addr #0 comdat align 2 { %4 = alloca %535*, align 8 %5 = alloca %96*, align 8 %6 = alloca i64, align 8 store %535* %0, %535** %4, align 8 store %96* %1, %96** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load %535*, %535** %4, align 8 %8 = getelementptr inbounds %535, %535* %7, i32 0, i32 0 %9 = load %96*, %96** %5, align 8 store %96* %9, %96** %8, align 8 %10 = getelementptr inbounds %535, %535* %7, i32 0, i32 1 %11 = load i64, i64* %6, align 8 store i64 %11, i64* %10, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i8* @108(%11* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1) #3 align 2 { %3 = alloca %11*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %715, align 1 %7 = alloca i32, align 4 store %11* %0, %11** %3, align 8 store i32 %1, i32* %4, align 4 %8 = load %11*, %11** %3, align 8 %9 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %9) #21 store i32 10737397, i32* %5, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp sle i32 0, %10 %12 = bitcast %715* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 br i1 %11, label %13, label %17 13: ; preds = %2 %14 = load i32, i32* %4, align 4 %15 = icmp slt i32 %14, 10737397 br i1 %15, label %16, label %17 16: ; preds = %13 br label %18 17: ; preds = %13, %2 call void @111(%715* noundef align 1 dereferenceable_or_null(1) %6) br label %18 18: ; preds = %17, %16 %19 = bitcast %715* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %19) #21 %20 = bitcast i32* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %20) #21 store i32 -1431655766, i32* %7, align 4, !annotation !6 %21 = load i32, i32* %4, align 4 %22 = icmp ne i32 %21, 0 br i1 %22, label %23, label %27 23: ; preds = %18 %24 = load i32, i32* %4, align 4 %25 = sext i32 %24 to i64 %26 = mul i64 %25, 200 br label %28 27: ; preds = %18 br label %28 28: ; preds = %27, %23 %29 = phi i64 [ %26, %23 ], [ 1, %27 ] %30 = trunc i64 %29 to i32 store i32 %30, i32* %7, align 4 %31 = load i32, i32* %7, align 4 %32 = call noundef i8* @_ZN6sktext3gpu10BagOfBytes13allocateBytesEii(%11* noundef align 8 dereferenceable_or_null(16) %8, i32 noundef %31, i32 noundef 8) %33 = bitcast i32* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %33) #21 %34 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %34) #21 ret i8* %32 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @109(%576* noundef align 8 dereferenceable_or_null(200) %0, %19* noundef %1, i1 noundef zeroext %2, i1 noundef zeroext %3, %546* noundef align 4 dereferenceable(8) %4, %547* noundef align 8 dereferenceable(48) %5, %551* noundef align 8 dereferenceable(104) %6) unnamed_addr #0 align 2 { %8 = alloca %576*, align 8 %9 = alloca %19*, align 8 %10 = alloca i8, align 1 %11 = alloca i8, align 1 %12 = alloca %546*, align 8 %13 = alloca %547*, align 8 %14 = alloca %551*, align 8 store %576* %0, %576** %8, align 8 store %19* %1, %19** %9, align 8 %15 = zext i1 %2 to i8 store i8 %15, i8* %10, align 1 %16 = zext i1 %3 to i8 store i8 %16, i8* %11, align 1 store %546* %4, %546** %12, align 8 store %547* %5, %547** %13, align 8 store %551* %6, %551** %14, align 8 %17 = load %576*, %576** %8, align 8 %18 = bitcast %576* %17 to %15* call void @_ZN8GrSubRunC2Ev(%15* noundef align 8 dereferenceable_or_null(16) %18) #21 %19 = bitcast %576* %17 to i8* %20 = getelementptr inbounds i8, i8* %19, i64 16 %21 = bitcast i8* %20 to %528* call void @_ZN13GrAtlasSubRunC2Ev(%528* noundef align 8 dereferenceable_or_null(8) %21) #21 %22 = bitcast %576* %17 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [17 x i8*], [10 x i8*] }, { [17 x i8*], [10 x i8*] }* @16, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %22, align 8 %23 = bitcast %576* %17 to i8* %24 = getelementptr inbounds i8, i8* %23, i64 16 %25 = bitcast i8* %24 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [17 x i8*], [10 x i8*] }, { [17 x i8*], [10 x i8*] }* @16, i32 0, inrange i32 1, i32 2) to i32 (...)**), i32 (...)*** %25, align 8 %26 = getelementptr inbounds %576, %576* %17, i32 0, i32 2 %27 = load %19*, %19** %9, align 8 store %19* %27, %19** %26, align 8 %28 = getelementptr inbounds %576, %576* %17, i32 0, i32 3 %29 = load i8, i8* %10, align 1, !range !7 %30 = trunc i8 %29 to i1 %31 = zext i1 %30 to i8 store i8 %31, i8* %28, align 8 %32 = getelementptr inbounds %576, %576* %17, i32 0, i32 4 %33 = load i8, i8* %11, align 1, !range !7 %34 = trunc i8 %33 to i1 %35 = zext i1 %34 to i8 store i8 %35, i8* %32, align 1 %36 = getelementptr inbounds %576, %576* %17, i32 0, i32 5 %37 = load %546*, %546** %12, align 8 %38 = bitcast %546* %36 to i8* %39 = bitcast %546* %37 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %38, i8* align 4 %39, i64 8, i1 false) %40 = getelementptr inbounds %576, %576* %17, i32 0, i32 6 %41 = load %547*, %547** %13, align 8 %42 = bitcast %547* %40 to i8* %43 = bitcast %547* %41 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %42, i8* align 8 %43, i64 48, i1 false) %44 = getelementptr inbounds %576, %576* %17, i32 0, i32 7 %45 = load %551*, %551** %14, align 8 call void @_ZN6sktext3gpu11GlyphVectorC2EOS1_(%551* noundef align 8 dereferenceable_or_null(104) %44, %551* noundef align 8 dereferenceable(104) %45) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @110(%573* noundef align 8 dereferenceable_or_null(8) %0, %576* noundef %1) unnamed_addr #0 align 2 { %3 = alloca %573*, align 8 %4 = alloca %576*, align 8 %5 = alloca %656, align 1 store %573* %0, %573** %3, align 8 store %576* %1, %576** %4, align 8 %6 = load %573*, %573** %3, align 8 %7 = getelementptr inbounds %573, %573* %6, i32 0, i32 0 %8 = bitcast %656* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 call void @298(%574* noundef align 8 dereferenceable_or_null(8) %7, %576** noundef align 8 dereferenceable(8) %4, %656* noundef align 1 dereferenceable(1) %5) %9 = bitcast %656* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @111(%715* noundef align 1 dereferenceable_or_null(1) %0) #7 align 2 { %2 = alloca %715*, align 8 store %715* %0, %715** %2, align 8 %3 = load %715*, %715** %2, align 8 call void (i8*, i32, i8*, ...) @_Z16SkAbort_FileLinePKciS0_z(i8* noundef getelementptr inbounds ([54 x i8], [54 x i8]* @9, i64 0, i64 0), i32 noundef 96, i8* noundef getelementptr inbounds ([11 x i8], [11 x i8]* @10, i64 0, i64 0), i8* noundef getelementptr inbounds ([20 x i8], [20 x i8]* @11, i64 0, i64 0)) #23 unreachable } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13GrAtlasSubRunC2Ev(%528* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %528*, align 8 store %528* %0, %528** %2, align 8 %3 = load %528*, %528** %2, align 8 %4 = bitcast %528* %3 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [10 x i8*] }, { [10 x i8*] }* @_ZTV13GrAtlasSubRun, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %4, align 8 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6sktext3gpu11GlyphVectorC2EOS1_(%551* noundef align 8 dereferenceable_or_null(104) %0, %551* noundef align 8 dereferenceable(104) %1) unnamed_addr #10 comdat align 2 { %3 = alloca %551*, align 8 %4 = alloca %551*, align 8 store %551* %0, %551** %3, align 8 store %551* %1, %551** %4, align 8 %5 = load %551*, %551** %3, align 8 %6 = getelementptr inbounds %551, %551* %5, i32 0, i32 0 %7 = load %551*, %551** %4, align 8 %8 = getelementptr inbounds %551, %551* %7, i32 0, i32 0 call void @_ZN5sk_spI8SkStrikeEC2EOS1_(%132* noundef align 8 dereferenceable_or_null(8) %6, %132* noundef align 8 dereferenceable(8) %8) %9 = getelementptr inbounds %551, %551* %5, i32 0, i32 1 %10 = load %551*, %551** %4, align 8 %11 = getelementptr inbounds %551, %551* %10, i32 0, i32 1 %12 = bitcast %552* %9 to i8* %13 = bitcast %552* %11 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false) %14 = getelementptr inbounds %551, %551* %5, i32 0, i32 2 %15 = load %551*, %551** %4, align 8 %16 = getelementptr inbounds %551, %551* %15, i32 0, i32 2 call void @_ZN5sk_spIN6sktext3gpu10TextStrikeEEC2EOS3_(%558* noundef align 8 dereferenceable_or_null(8) %14, %558* noundef align 8 dereferenceable(8) %16) %17 = getelementptr inbounds %551, %551* %5, i32 0, i32 3 %18 = load %551*, %551** %4, align 8 %19 = getelementptr inbounds %551, %551* %18, i32 0, i32 3 %20 = load i64, i64* %19, align 8 store i64 %20, i64* %17, align 8 %21 = getelementptr inbounds %551, %551* %5, i32 0, i32 4 %22 = load %551*, %551** %4, align 8 %23 = getelementptr inbounds %551, %551* %22, i32 0, i32 4 call void @_ZN5skgpu18BulkUsePlotUpdaterC2ERKS0_(%568* noundef align 8 dereferenceable_or_null(64) %21, %568* noundef align 8 dereferenceable(64) %23) ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @112(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #10 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = getelementptr inbounds %576, %576* %3, i32 0, i32 7 call void @_ZN6sktext3gpu11GlyphVectorD2Ev(%551* noundef align 8 dereferenceable_or_null(104) %4) #21 %5 = bitcast %576* %3 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 16 %7 = bitcast i8* %6 to %528* call void @_ZN13GrAtlasSubRunD2Ev(%528* noundef align 8 dereferenceable_or_null(8) %7) #21 %8 = bitcast %576* %3 to %15* call void @_ZN8GrSubRunD2Ev(%15* noundef align 8 dereferenceable_or_null(16) %8) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @113(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #10 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 call void @112(%576* noundef align 8 dereferenceable_or_null(200) %3) #21 %4 = bitcast %576* %3 to i8* call void @_ZdlPv(i8* noundef %4) #25 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @114(%576* noundef align 8 dereferenceable_or_null(200) %0, %268* noundef %1, %294* noundef %2, %13* noundef align 4 dereferenceable(105) %3, <2 x float> %4, %73* noundef align 8 dereferenceable(76) %5, %295* noundef %6) unnamed_addr #5 align 2 { %8 = alloca %5, align 4 %9 = alloca %576*, align 8 %10 = alloca %268*, align 8 %11 = alloca %294*, align 8 %12 = alloca %13*, align 8 %13 = alloca %73*, align 8 %14 = alloca %295*, align 8 %15 = alloca %716, align 8 %16 = alloca %5, align 4 %17 = alloca %294**, align 8 %18 = alloca %469*, align 8 %19 = alloca %469, align 8 %20 = alloca %720, align 8 %21 = bitcast %5* %8 to <2 x float>* store <2 x float> %4, <2 x float>* %21, align 4 store %576* %0, %576** %9, align 8 store %268* %1, %268** %10, align 8 store %294* %2, %294** %11, align 8 store %13* %3, %13** %12, align 8 store %73* %5, %73** %13, align 8 store %295* %6, %295** %14, align 8 %22 = load %576*, %576** %9, align 8 %23 = bitcast %716* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %23) #21 %24 = getelementptr inbounds %716, %716* %15, i32 0, i32 0 %25 = getelementptr inbounds %717, %717* %24, i32 0, i32 0 %26 = getelementptr inbounds %718, %718* %25, i32 0, i32 0 store %294* inttoptr (i64 -6148914691236517206 to %294*), %294** %26, align 8, !annotation !6 %27 = getelementptr inbounds %717, %717* %24, i32 0, i32 1 %28 = getelementptr inbounds %719, %719* %27, i32 0, i32 0 %29 = getelementptr inbounds %469, %469* %28, i32 0, i32 0 %30 = getelementptr inbounds %470, %470* %29, i32 0, i32 0 %31 = getelementptr inbounds %471, %471* %30, i32 0, i32 0 store %472* inttoptr (i64 -6148914691236517206 to %472*), %472** %31, align 8, !annotation !6 %32 = load %294*, %294** %11, align 8 %33 = load %13*, %13** %12, align 8 %34 = bitcast %5* %16 to i8* %35 = bitcast %5* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %34, i8* align 4 %35, i64 8, i1 false) %36 = load %73*, %73** %13, align 8 %37 = load %295*, %295** %14, align 8 %38 = bitcast %5* %16 to <2 x float>* %39 = load <2 x float>, <2 x float>* %38, align 4 %40 = call { %294*, %472* } @120(%576* noundef align 8 dereferenceable_or_null(200) %22, %294* noundef %32, %13* noundef align 4 dereferenceable(105) %33, <2 x float> %39, %73* noundef align 8 dereferenceable(76) %36, %295* noundef %37) %41 = getelementptr inbounds %716, %716* %15, i32 0, i32 0 %42 = bitcast %717* %41 to { %294*, %472* }* %43 = getelementptr inbounds { %294*, %472* }, { %294*, %472* }* %42, i32 0, i32 0 %44 = extractvalue { %294*, %472* } %40, 0 store %294* %44, %294** %43, align 8 %45 = getelementptr inbounds { %294*, %472* }, { %294*, %472* }* %42, i32 0, i32 1 %46 = extractvalue { %294*, %472* } %40, 1 store %472* %46, %472** %45, align 8 %47 = bitcast %294*** %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %47) #21 store %294** inttoptr (i64 -6148914691236517206 to %294**), %294*** %17, align 8, !annotation !6 %48 = call noundef align 8 dereferenceable(8) %294** @_ZNSt4__Cr3getILm0EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_(%716* noundef align 8 dereferenceable(16) %15) #21 store %294** %48, %294*** %17, align 8 %49 = bitcast %469** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %49) #21 store %469* inttoptr (i64 -6148914691236517206 to %469*), %469** %18, align 8, !annotation !6 %50 = call noundef align 8 dereferenceable(8) %469* @_ZNSt4__Cr3getILm1EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_(%716* noundef align 8 dereferenceable(16) %15) #21 store %469* %50, %469** %18, align 8 %51 = load %469*, %469** %18, align 8 %52 = call noundef zeroext i1 @_ZNSt4__CrneI4GrOpNS_14default_deleteIS1_EEEEbRKNS_10unique_ptrIT_T0_EEDn(%469* noundef align 8 dereferenceable(8) %51, i8* null) #21 br i1 %52, label %53, label %64 53: ; preds = %7 %54 = load %295*, %295** %14, align 8 %55 = load %294**, %294*** %17, align 8 %56 = load %294*, %294** %55, align 8 %57 = load %469*, %469** %18, align 8 call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2EOS4_(%469* noundef align 8 dereferenceable_or_null(8) %19, %469* noundef align 8 dereferenceable(8) %57) #21 %58 = bitcast %720* %20 to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* %58) #21 call void @_ZNSt4__Cr8functionIFvP4GrOpjEEC2Ev(%720* noundef align 8 dereferenceable_or_null(32) %20) #21 %59 = getelementptr inbounds %469, %469* %19, i32 0, i32 0 %60 = getelementptr inbounds %470, %470* %59, i32 0, i32 0 %61 = getelementptr inbounds %471, %471* %60, i32 0, i32 0 %62 = load %472*, %472** %61, align 8 call void @_ZN5skgpu2v118SurfaceDrawContext9addDrawOpEPK6GrClipNSt4__Cr10unique_ptrI4GrOpNS5_14default_deleteIS7_EEEERKNS5_8functionIFvPS7_jEEE(%295* noundef align 8 dereferenceable_or_null(312) %54, %294* noundef %56, %472* %62, %720* noundef align 8 dereferenceable(32) %20) call void @_ZNSt4__Cr8functionIFvP4GrOpjEED2Ev(%720* noundef align 8 dereferenceable_or_null(32) %20) #21 %63 = bitcast %720* %20 to i8* call void @llvm.lifetime.end.p0i8(i64 32, i8* %63) #21 br label %64 64: ; preds = %53, %7 %65 = bitcast %469** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %65) #21 %66 = bitcast %294*** %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %66) #21 call void @_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEED2Ev(%716* noundef align 8 dereferenceable_or_null(16) %15) #21 %67 = bitcast %716* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %67) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @115(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #3 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = getelementptr inbounds %576, %576* %3, i32 0, i32 7 %5 = call noundef i32 @_ZNK6sktext3gpu11GlyphVector13unflattenSizeEv(%551* noundef align 8 dereferenceable_or_null(104) %4) %6 = sext i32 %5 to i64 %7 = add i64 200, %6 %8 = getelementptr inbounds %576, %576* %3, i32 0, i32 6 %9 = call noundef i32 @136(%547* noundef align 8 dereferenceable_or_null(48) %8) %10 = sext i32 %9 to i64 %11 = add i64 %7, %10 %12 = trunc i64 %11 to i32 ret i32 %12 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @116(%576* noundef align 8 dereferenceable_or_null(200) %0, %73* noundef align 8 dereferenceable(76) %1, %2* noundef align 4 dereferenceable(40) %2) unnamed_addr #3 align 2 { %4 = alloca %576*, align 8 %5 = alloca %73*, align 8 %6 = alloca %2*, align 8 store %576* %0, %576** %4, align 8 store %73* %1, %73** %5, align 8 store %2* %2, %2** %6, align 8 %7 = load %576*, %576** %4, align 8 %8 = getelementptr inbounds %576, %576* %7, i32 0, i32 5 %9 = load %2*, %2** %6, align 8 %10 = call noundef zeroext i1 @_ZNK17GrSDFTMatrixRange13matrixInRangeERK8SkMatrix(%546* noundef align 4 dereferenceable_or_null(8) %8, %2* noundef align 4 dereferenceable(40) %9) ret i1 %10 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %528* @117(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #3 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = bitcast %576* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 16 %6 = bitcast i8* %5 to %528* ret %528* %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @118(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #3 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 ret i32 2 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @119(%576* noundef align 8 dereferenceable_or_null(200) %0, %601* noundef align 8 dereferenceable(56) %1) unnamed_addr #3 align 2 { %3 = alloca %576*, align 8 %4 = alloca %601*, align 8 store %576* %0, %576** %3, align 8 store %601* %1, %601** %4, align 8 %5 = load %576*, %576** %3, align 8 %6 = load %601*, %601** %4, align 8 %7 = getelementptr inbounds %576, %576* %5, i32 0, i32 3 %8 = load i8, i8* %7, align 8, !range !7 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i32 %11 = bitcast %601* %6 to void (%601*, i32)*** %12 = load void (%601*, i32)**, void (%601*, i32)*** %11, align 8 %13 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %12, i64 7 %14 = load void (%601*, i32)*, void (%601*, i32)** %13, align 8 call void %14(%601* noundef align 8 dereferenceable_or_null(56) %6, i32 noundef %10) %15 = load %601*, %601** %4, align 8 %16 = getelementptr inbounds %576, %576* %5, i32 0, i32 4 %17 = load i8, i8* %16, align 1, !range !7 %18 = trunc i8 %17 to i1 %19 = zext i1 %18 to i32 %20 = bitcast %601* %15 to void (%601*, i32)*** %21 = load void (%601*, i32)**, void (%601*, i32)*** %20, align 8 %22 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %21, i64 7 %23 = load void (%601*, i32)*, void (%601*, i32)** %22, align 8 call void %23(%601* noundef align 8 dereferenceable_or_null(56) %15, i32 noundef %19) %24 = getelementptr inbounds %576, %576* %5, i32 0, i32 5 %25 = load %601*, %601** %4, align 8 call void @_ZNK17GrSDFTMatrixRange7flattenER13SkWriteBuffer(%546* noundef align 4 dereferenceable_or_null(8) %24, %601* noundef align 8 dereferenceable(56) %25) %26 = getelementptr inbounds %576, %576* %5, i32 0, i32 6 %27 = load %601*, %601** %4, align 8 call void @138(%547* noundef align 8 dereferenceable_or_null(48) %26, %601* noundef align 8 dereferenceable(56) %27) %28 = getelementptr inbounds %576, %576* %5, i32 0, i32 7 %29 = load %601*, %601** %4, align 8 call void @_ZN6sktext3gpu11GlyphVector7flattenER13SkWriteBuffer(%551* noundef align 8 dereferenceable_or_null(104) %28, %601* noundef align 8 dereferenceable(56) %29) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { %294*, %472* } @120(%576* noundef align 8 dereferenceable_or_null(200) %0, %294* noundef %1, %13* noundef align 4 dereferenceable(105) %2, <2 x float> %3, %73* noundef align 8 dereferenceable(76) %4, %295* noundef %5) unnamed_addr #5 align 2 { %7 = alloca %716, align 8 %8 = alloca %5, align 4 %9 = alloca %576*, align 8 %10 = alloca %294*, align 8 %11 = alloca %13*, align 8 %12 = alloca %73*, align 8 %13 = alloca %295*, align 8 %14 = alloca %2*, align 8 %15 = alloca %723, align 8 %16 = alloca %93, align 4 %17 = alloca %725, align 4 %18 = alloca { i64, i8 }, align 8 %19 = alloca i32*, align 8 %20 = alloca i32*, align 8 %21 = alloca i8*, align 8 %22 = alloca %730*, align 8 %23 = alloca %5, align 4 %24 = alloca %290, align 4 %25 = alloca %731, align 8 %26 = alloca %732, align 8 %27 = alloca %299*, align 8 %28 = alloca %469, align 8 %29 = alloca i8, align 1 %30 = alloca i32, align 4 %31 = alloca %44, align 4 %32 = alloca %5, align 4 %33 = alloca i32, align 4 %34 = bitcast %5* %8 to <2 x float>* store <2 x float> %3, <2 x float>* %34, align 4 store %576* %0, %576** %9, align 8 store %294* %1, %294** %10, align 8 store %13* %2, %13** %11, align 8 store %73* %4, %73** %12, align 8 store %295* %5, %295** %13, align 8 %35 = load %576*, %576** %9, align 8 %36 = bitcast %2** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %36) #21 store %2* inttoptr (i64 -6148914691236517206 to %2*), %2** %14, align 8, !annotation !6 %37 = load %13*, %13** %11, align 8 %38 = call noundef align 4 dereferenceable(40) %2* @_ZNK16SkMatrixProvider13localToDeviceEv(%13* noundef align 4 dereferenceable_or_null(105) %37) store %2* %38, %2** %14, align 8 %39 = bitcast %723* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 48, i8* %39) #21 %40 = getelementptr inbounds %723, %723* %15, i32 0, i32 0 store %724* inttoptr (i64 -6148914691236517206 to %724*), %724** %40, align 8, !annotation !6 %41 = getelementptr inbounds %723, %723* %15, i32 0, i32 1 %42 = getelementptr inbounds %483, %483* %41, i32 0, i32 0 %43 = getelementptr inbounds %484, %484* %42, i32 0, i32 0 %44 = getelementptr inbounds %485, %485* %43, i32 0, i32 0 store %486* inttoptr (i64 -6148914691236517206 to %486*), %486** %44, align 8, !annotation !6 %45 = getelementptr inbounds %723, %723* %15, i32 0, i32 2 %46 = getelementptr inbounds %483, %483* %45, i32 0, i32 0 %47 = getelementptr inbounds %484, %484* %46, i32 0, i32 0 %48 = getelementptr inbounds %485, %485* %47, i32 0, i32 0 store %486* inttoptr (i64 -6148914691236517206 to %486*), %486** %48, align 8, !annotation !6 %49 = getelementptr inbounds %723, %723* %15, i32 0, i32 3 store i8 -86, i8* %49, align 8, !annotation !6 %50 = getelementptr inbounds %723, %723* %15, i32 0, i32 4 %51 = getelementptr inbounds [3 x i8], [3 x i8]* %50, i64 0, i64 0 store i8 -86, i8* %51, align 1, !annotation !6 %52 = getelementptr inbounds [3 x i8], [3 x i8]* %50, i64 0, i64 1 store i8 -86, i8* %52, align 1, !annotation !6 %53 = getelementptr inbounds [3 x i8], [3 x i8]* %50, i64 0, i64 2 store i8 -86, i8* %53, align 1, !annotation !6 %54 = getelementptr inbounds %723, %723* %15, i32 0, i32 5 %55 = getelementptr inbounds %93, %93* %54, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %55, align 4, !annotation !6 %56 = getelementptr inbounds %93, %93* %54, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %56, align 4, !annotation !6 %57 = getelementptr inbounds %93, %93* %54, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %57, align 4, !annotation !6 %58 = getelementptr inbounds %93, %93* %54, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %58, align 4, !annotation !6 %59 = getelementptr inbounds %723, %723* %15, i32 0, i32 6 %60 = getelementptr inbounds [4 x i8], [4 x i8]* %59, i64 0, i64 0 store i8 -86, i8* %60, align 4, !annotation !6 %61 = getelementptr inbounds [4 x i8], [4 x i8]* %59, i64 0, i64 1 store i8 -86, i8* %61, align 1, !annotation !6 %62 = getelementptr inbounds [4 x i8], [4 x i8]* %59, i64 0, i64 2 store i8 -86, i8* %62, align 2, !annotation !6 %63 = getelementptr inbounds [4 x i8], [4 x i8]* %59, i64 0, i64 3 store i8 -86, i8* %63, align 1, !annotation !6 call void @_ZN7GrPaintC2Ev(%723* noundef align 8 dereferenceable_or_null(44) %15) #21 %64 = bitcast %93* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %64) #21 %65 = getelementptr inbounds %93, %93* %16, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %65, align 4, !annotation !6 %66 = getelementptr inbounds %93, %93* %16, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %66, align 4, !annotation !6 %67 = getelementptr inbounds %93, %93* %16, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %67, align 4, !annotation !6 %68 = getelementptr inbounds %93, %93* %16, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %68, align 4, !annotation !6 %69 = load %295*, %295** %13, align 8 %70 = bitcast %295* %69 to %298* %71 = load %73*, %73** %12, align 8 %72 = load %13*, %13** %11, align 8 %73 = call { <2 x float>, <2 x float> } @146(%298* noundef %70, %73* noundef align 8 dereferenceable(76) %71, %13* noundef align 4 dereferenceable(105) %72, i32 noundef 0, %723* noundef %15) %74 = bitcast %93* %16 to { <2 x float>, <2 x float> }* %75 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %74, i32 0, i32 0 %76 = extractvalue { <2 x float>, <2 x float> } %73, 0 store <2 x float> %76, <2 x float>* %75, align 4 %77 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %74, i32 0, i32 1 %78 = extractvalue { <2 x float>, <2 x float> } %73, 1 store <2 x float> %78, <2 x float>* %77, align 4 %79 = bitcast %725* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %79) #21 %80 = getelementptr inbounds %725, %725* %17, i32 0, i32 0 %81 = getelementptr inbounds %726, %726* %80, i32 0, i32 0 %82 = getelementptr inbounds %727, %727* %81, i32 0, i32 0 store i32 -1431655766, i32* %82, align 4, !annotation !6 %83 = getelementptr inbounds %726, %726* %80, i32 0, i32 1 %84 = getelementptr inbounds %728, %728* %83, i32 0, i32 0 store i32 -1431655766, i32* %84, align 4, !annotation !6 %85 = getelementptr inbounds %726, %726* %80, i32 0, i32 2 %86 = getelementptr inbounds %729, %729* %85, i32 0, i32 0 store i8 -86, i8* %86, align 4, !annotation !6 %87 = getelementptr inbounds %726, %726* %80, i32 0, i32 3 %88 = getelementptr inbounds [3 x i8], [3 x i8]* %87, i64 0, i64 0 store i8 -86, i8* %88, align 1, !annotation !6 %89 = getelementptr inbounds [3 x i8], [3 x i8]* %87, i64 0, i64 1 store i8 -86, i8* %89, align 1, !annotation !6 %90 = getelementptr inbounds [3 x i8], [3 x i8]* %87, i64 0, i64 2 store i8 -86, i8* %90, align 1, !annotation !6 %91 = load %295*, %295** %13, align 8 %92 = load %2*, %2** %14, align 8 %93 = getelementptr inbounds %576, %576* %35, i32 0, i32 3 %94 = load i8, i8* %93, align 8, !range !7 %95 = trunc i8 %94 to i1 %96 = getelementptr inbounds %576, %576* %35, i32 0, i32 4 %97 = load i8, i8* %96, align 1, !range !7 %98 = trunc i8 %97 to i1 %99 = call { i64, i8 } @147(%295* noundef align 8 dereferenceable(312) %91, %2* noundef align 4 dereferenceable(40) %92, i1 noundef zeroext %95, i1 noundef zeroext %98) %100 = getelementptr inbounds %725, %725* %17, i32 0, i32 0 store { i64, i8 } %99, { i64, i8 }* %18, align 8 %101 = bitcast %726* %100 to i8* %102 = bitcast { i64, i8 }* %18 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %101, i8* align 8 %102, i64 12, i1 false) %103 = bitcast i32** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %103) #21 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %19, align 8, !annotation !6 %104 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm0EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %17) #21 store i32* %104, i32** %19, align 8 %105 = bitcast i32** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %105) #21 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %20, align 8, !annotation !6 %106 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm1EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %17) #21 store i32* %106, i32** %20, align 8 %107 = bitcast i8** %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %107) #21 store i8* inttoptr (i64 -6148914691236517206 to i8*), i8** %21, align 8, !annotation !6 %108 = call noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr3getILm2EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %17) #21 store i8* %108, i8** %21, align 8 %109 = bitcast %730** %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %109) #21 store %730* inttoptr (i64 -6148914691236517206 to %730*), %730** %22, align 8, !annotation !6 %110 = bitcast %576* %35 to i8* %111 = getelementptr inbounds i8, i8* %110, i64 16 %112 = bitcast i8* %111 to %528* %113 = load %2*, %2** %14, align 8 %114 = bitcast %5* %23 to i8* %115 = bitcast %5* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %114, i8* align 4 %115, i64 8, i1 false) %116 = call { i64, i64 } @_ZN7SkIRect9MakeEmptyEv() %117 = bitcast %290* %24 to { i64, i64 }* %118 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %117, i32 0, i32 0 %119 = extractvalue { i64, i64 } %116, 0 store i64 %119, i64* %118, align 4 %120 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %117, i32 0, i32 1 %121 = extractvalue { i64, i64 } %116, 1 store i64 %121, i64* %120, align 4 %122 = bitcast %732* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %122) #21 %123 = getelementptr inbounds %576, %576* %35, i32 0, i32 2 %124 = load %19*, %19** %123, align 8 call void @_Z9sk_ref_spI20GrTextReferenceFrameE5sk_spIT_EPKS2_(%732* sret(%732) align 8 %26, %19* noundef %124) call void @_ZN5sk_spI8SkRefCntEC2I20GrTextReferenceFramevEEOS_IT_E(%731* noundef align 8 dereferenceable_or_null(8) %25, %732* noundef align 8 dereferenceable(8) %26) %125 = load %295*, %295** %13, align 8 %126 = bitcast %295* %125 to %733* %127 = call noundef %172* @_ZN5skgpu2v118SurfaceFillContext10arenaAllocEv(%733* noundef align 8 dereferenceable_or_null(81) %126) %128 = bitcast %5* %23 to <2 x float>* %129 = load <2 x float>, <2 x float>* %128, align 4 %130 = bitcast %290* %24 to { i64, i64 }* %131 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %130, i32 0, i32 0 %132 = load i64, i64* %131, align 4 %133 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %130, i32 0, i32 1 %134 = load i64, i64* %133, align 4 %135 = call noundef %730* @_ZN5skgpu2v111AtlasTextOp8Geometry11MakeForBlobERK13GrAtlasSubRunRK8SkMatrix7SkPoint7SkIRect5sk_spI8SkRefCntERK8SkRGBA4fIL11SkAlphaType2EEP12SkArenaAlloc(%528* noundef align 8 dereferenceable(8) %112, %2* noundef align 4 dereferenceable(40) %113, <2 x float> %129, i64 %132, i64 %134, %731* noundef %25, %93* noundef align 4 dereferenceable(16) %16, %172* noundef %127) call void @_ZN5sk_spI8SkRefCntED2Ev(%731* noundef align 8 dereferenceable_or_null(8) %25) #21 call void @_ZN5sk_spI20GrTextReferenceFrameED2Ev(%732* noundef align 8 dereferenceable_or_null(8) %26) #21 %136 = bitcast %732* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %136) #21 store %730* %135, %730** %22, align 8 %137 = bitcast %299** %27 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %137) #21 store %299* inttoptr (i64 -6148914691236517206 to %299*), %299** %27, align 8, !annotation !6 %138 = load %295*, %295** %13, align 8 %139 = bitcast %295* %138 to %298* %140 = call noundef %299* @_ZNK5skgpu14SurfaceContext16recordingContextEv(%298* noundef align 8 dereferenceable_or_null(56) %139) store %299* %140, %299** %27, align 8 %141 = bitcast %469* %28 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %141) #21 %142 = getelementptr inbounds %469, %469* %28, i32 0, i32 0 %143 = getelementptr inbounds %470, %470* %142, i32 0, i32 0 %144 = getelementptr inbounds %471, %471* %143, i32 0, i32 0 store %472* inttoptr (i64 -6148914691236517206 to %472*), %472** %144, align 8, !annotation !6 %145 = load %299*, %299** %27, align 8 %146 = load i32*, i32** %19, align 8 call void @llvm.lifetime.start.p0i8(i64 1, i8* %29) #21 store i8 1, i8* %29, align 1 %147 = bitcast i32* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %147) #21 %148 = call noundef i32 @125(%576* noundef align 8 dereferenceable_or_null(200) %35) store i32 %148, i32* %30, align 4 %149 = bitcast %44* %31 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %149) #21 %150 = load %2*, %2** %14, align 8 %151 = bitcast %5* %32 to i8* %152 = bitcast %5* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %151, i8* align 4 %152, i64 8, i1 false) %153 = bitcast %5* %32 to <2 x float>* %154 = load <2 x float>, <2 x float>* %153, align 4 %155 = call { <2 x float>, <2 x float> } @148(%576* noundef align 8 dereferenceable_or_null(200) %35, %2* noundef align 4 dereferenceable(40) %150, <2 x float> %154) %156 = bitcast %44* %31 to { <2 x float>, <2 x float> }* %157 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %156, i32 0, i32 0 %158 = extractvalue { <2 x float>, <2 x float> } %155, 0 store <2 x float> %158, <2 x float>* %157, align 4 %159 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %156, i32 0, i32 1 %160 = extractvalue { <2 x float>, <2 x float> } %155, 1 store <2 x float> %160, <2 x float>* %159, align 4 %161 = bitcast i32* %33 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %161) #21 %162 = load %73*, %73** %12, align 8 %163 = call noundef i32 @_ZN11SkPaintPriv21ComputeLuminanceColorERK7SkPaint(%73* noundef align 8 dereferenceable(76) %162) store i32 %163, i32* %33, align 4 %164 = load i8*, i8** %21, align 8 %165 = load i32*, i32** %20, align 8 %166 = call %472* @_ZN4GrOp4MakeIN5skgpu2v111AtlasTextOpEJRNS3_8MaskTypeEbi6SkRectjRbRjRPNS3_8GeometryE7GrPaintEEENSt4__Cr10unique_ptrIS_NSD_14default_deleteIS_EEEEP18GrRecordingContextDpOT0_(%299* noundef %145, i32* noundef align 4 dereferenceable(4) %146, i8* noundef align 1 dereferenceable(1) %29, i32* noundef align 4 dereferenceable(4) %30, %44* noundef align 4 dereferenceable(16) %31, i32* noundef align 4 dereferenceable(4) %33, i8* noundef align 1 dereferenceable(1) %164, i32* noundef align 4 dereferenceable(4) %165, %730** noundef align 8 dereferenceable(8) %22, %723* noundef align 8 dereferenceable(44) %15) %167 = getelementptr inbounds %469, %469* %28, i32 0, i32 0 %168 = getelementptr inbounds %470, %470* %167, i32 0, i32 0 %169 = getelementptr inbounds %471, %471* %168, i32 0, i32 0 store %472* %166, %472** %169, align 8 %170 = bitcast i32* %33 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %170) #21 %171 = bitcast %44* %31 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %171) #21 %172 = bitcast i32* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %172) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %29) #21 call void @_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEC2IJRS3_S8_ELi0EEEDpOT_(%716* noundef align 8 dereferenceable_or_null(16) %7, %294** noundef align 8 dereferenceable(8) %10, %469* noundef align 8 dereferenceable(8) %28) #21 call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEED2Ev(%469* noundef align 8 dereferenceable_or_null(8) %28) #21 %173 = bitcast %469* %28 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %173) #21 %174 = bitcast %299** %27 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %174) #21 %175 = bitcast %730** %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %175) #21 %176 = bitcast i8** %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %176) #21 %177 = bitcast i32** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %177) #21 %178 = bitcast i32** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %178) #21 %179 = bitcast %725* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %179) #21 %180 = bitcast %93* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %180) #21 call void @_ZN7GrPaintD2Ev(%723* noundef align 8 dereferenceable_or_null(44) %15) #21 %181 = bitcast %723* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 48, i8* %181) #21 %182 = bitcast %2** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %182) #21 %183 = getelementptr inbounds %716, %716* %7, i32 0, i32 0 %184 = bitcast %717* %183 to { %294*, %472* }* %185 = load { %294*, %472* }, { %294*, %472* }* %184, align 8 ret { %294*, %472* } %185 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @121(%576* noundef align 8 dereferenceable_or_null(200) %0, %734* noundef %1) unnamed_addr #3 align 2 { %3 = alloca %576*, align 8 %4 = alloca %734*, align 8 store %576* %0, %576** %3, align 8 store %734* %1, %734** %4, align 8 %5 = load %576*, %576** %3, align 8 %6 = getelementptr inbounds %576, %576* %5, i32 0, i32 7 %7 = load %734*, %734** %4, align 8 call void @_ZN6sktext3gpu11GlyphVector20packedGlyphIDToGlyphEPNS0_11StrikeCacheE(%551* noundef align 8 dereferenceable_or_null(104) %6, %734* noundef %7) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal i64 @122(%576* noundef align 8 dereferenceable_or_null(200) %0, i32 noundef %1, i32 noundef %2, %741* noundef %3) unnamed_addr #3 align 2 { %5 = alloca %742, align 4 %6 = alloca %576*, align 8 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca %741*, align 8 store %576* %0, %576** %6, align 8 store i32 %1, i32* %7, align 4 store i32 %2, i32* %8, align 4 store %741* %3, %741** %9, align 8 %10 = load %576*, %576** %6, align 8 %11 = getelementptr inbounds %576, %576* %10, i32 0, i32 7 %12 = load i32, i32* %7, align 4 %13 = load i32, i32* %8, align 4 %14 = load %741*, %741** %9, align 8 %15 = call i64 @_ZN6sktext3gpu11GlyphVector15regenerateAtlasEiiN5skgpu10MaskFormatEiP16GrMeshDrawTarget(%551* noundef align 8 dereferenceable_or_null(104) %11, i32 noundef %12, i32 noundef %13, i32 noundef 0, i32 noundef 2, %741* noundef %14) %16 = getelementptr inbounds %742, %742* %5, i32 0, i32 0 %17 = bitcast %743* %16 to i64* store i64 %15, i64* %17, align 4 %18 = getelementptr inbounds %742, %742* %5, i32 0, i32 0 %19 = bitcast %743* %18 to i64* %20 = load i64, i64* %19, align 4 ret i64 %20 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @123(%576* noundef align 8 dereferenceable_or_null(200) %0, i8* noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, %2* noundef align 4 dereferenceable(40) %5, <2 x float> %6, %290* noundef byval(%290) align 8 %7) unnamed_addr #5 align 2 { %9 = alloca %5, align 4 %10 = alloca %576*, align 8 %11 = alloca i8*, align 8 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca i32, align 4 %15 = alloca %2*, align 8 %16 = alloca %2, align 4 %17 = alloca %5, align 4 %18 = alloca %618, align 8 %19 = alloca %290, align 8 %20 = bitcast %5* %9 to <2 x float>* store <2 x float> %6, <2 x float>* %20, align 4 store %576* %0, %576** %10, align 8 store i8* %1, i8** %11, align 8 store i32 %2, i32* %12, align 4 store i32 %3, i32* %13, align 4 store i32 %4, i32* %14, align 4 store %2* %5, %2** %15, align 8 %21 = load %576*, %576** %10, align 8 %22 = bitcast %2* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %22) #21 %23 = getelementptr inbounds %2, %2* %16, i32 0, i32 0 %24 = bitcast [9 x float]* %23 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %24, i8 -1, i64 36, i1 false), !annotation !6 %25 = getelementptr inbounds %2, %2* %16, i32 0, i32 1 store i32 -1431655766, i32* %25, align 4, !annotation !6 %26 = load %2*, %2** %15, align 8 %27 = bitcast %5* %17 to i8* %28 = bitcast %5* %9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %27, i8* align 4 %28, i64 8, i1 false) %29 = bitcast %5* %17 to <2 x float>* %30 = load <2 x float>, <2 x float>* %29, align 4 call void @157(%2* sret(%2) align 4 %16, %2* noundef align 4 dereferenceable(40) %26, <2 x float> %30) %31 = getelementptr inbounds %576, %576* %21, i32 0, i32 6 %32 = load i32, i32* %12, align 4 %33 = load i32, i32* %13, align 4 %34 = getelementptr inbounds %576, %576* %21, i32 0, i32 7 %35 = call { %554**, i64 } @_ZNK6sktext3gpu11GlyphVector6glyphsEv(%551* noundef align 8 dereferenceable_or_null(104) %34) %36 = bitcast %618* %18 to { %554**, i64 }* %37 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %36, i32 0, i32 0 %38 = extractvalue { %554**, i64 } %35, 0 store %554** %38, %554*** %37, align 8 %39 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %36, i32 0, i32 1 %40 = extractvalue { %554**, i64 } %35, 1 store i64 %40, i64* %39, align 8 %41 = load i32, i32* %14, align 4 %42 = bitcast %290* %19 to i8* %43 = bitcast %290* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %42, i8* align 8 %43, i64 16, i1 false) %44 = load i8*, i8** %11, align 8 %45 = bitcast %618* %18 to { %554**, i64 }* %46 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %45, i32 0, i32 0 %47 = load %554**, %554*** %46, align 8 %48 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %45, i32 0, i32 1 %49 = load i64, i64* %48, align 8 call void @158(%547* noundef align 8 dereferenceable_or_null(48) %31, i32 noundef %32, i32 noundef %33, %554** %47, i64 %49, i32 noundef %41, %2* noundef align 4 dereferenceable(40) %16, %290* noundef byval(%290) align 8 %19, i8* noundef %44) %50 = bitcast %2* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %50) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @124(%576* noundef align 8 dereferenceable_or_null(200) %0, %2* noundef align 4 dereferenceable(40) %1) unnamed_addr #3 align 2 { %3 = alloca %576*, align 8 %4 = alloca %2*, align 8 store %576* %0, %576** %3, align 8 store %2* %1, %2** %4, align 8 %5 = load %576*, %576** %3, align 8 ret i64 16 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @125(%576* noundef align 8 dereferenceable_or_null(200) %0) unnamed_addr #3 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = getelementptr inbounds %576, %576* %3, i32 0, i32 6 %5 = call noundef i32 @297(%547* noundef align 8 dereferenceable_or_null(48) %4) ret i32 %5 } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @126(%576* noundef %0) unnamed_addr #10 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = bitcast %576* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 -16 %6 = bitcast i8* %5 to %576* tail call void @112(%576* noundef align 8 dereferenceable_or_null(200) %6) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define internal void @127(%576* noundef %0) unnamed_addr #10 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = bitcast %576* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 -16 %6 = bitcast i8* %5 to %576* tail call void @113(%576* noundef align 8 dereferenceable_or_null(200) %6) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @128(%576* noundef %0, %2* noundef align 4 dereferenceable(40) %1) unnamed_addr #0 align 2 { %3 = alloca %576*, align 8 %4 = alloca %2*, align 8 store %576* %0, %576** %3, align 8 store %2* %1, %2** %4, align 8 %5 = load %576*, %576** %3, align 8 %6 = bitcast %576* %5 to i8* %7 = getelementptr inbounds i8, i8* %6, i64 -16 %8 = bitcast i8* %7 to %576* %9 = load %2*, %2** %4, align 8 %10 = tail call noundef i64 @124(%576* noundef align 8 dereferenceable_or_null(200) %8, %2* noundef align 4 dereferenceable(40) %9) ret i64 %10 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @129(%576* noundef %0) unnamed_addr #0 align 2 { %2 = alloca %576*, align 8 store %576* %0, %576** %2, align 8 %3 = load %576*, %576** %2, align 8 %4 = bitcast %576* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 -16 %6 = bitcast i8* %5 to %576* %7 = tail call noundef i32 @125(%576* noundef align 8 dereferenceable_or_null(200) %6) ret i32 %7 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal { %294*, %472* } @130(%576* noundef %0, %294* noundef %1, %13* noundef align 4 dereferenceable(105) %2, <2 x float> %3, %73* noundef align 8 dereferenceable(76) %4, %295* noundef %5) unnamed_addr #14 align 2 { %7 = alloca %716, align 8 %8 = alloca %5, align 4 %9 = alloca %576*, align 8 %10 = alloca %294*, align 8 %11 = alloca %13*, align 8 %12 = alloca %73*, align 8 %13 = alloca %295*, align 8 %14 = bitcast %5* %8 to <2 x float>* store <2 x float> %3, <2 x float>* %14, align 4 store %576* %0, %576** %9, align 8 store %294* %1, %294** %10, align 8 store %13* %2, %13** %11, align 8 store %73* %4, %73** %12, align 8 store %295* %5, %295** %13, align 8 %15 = load %576*, %576** %9, align 8 %16 = bitcast %576* %15 to i8* %17 = getelementptr inbounds i8, i8* %16, i64 -16 %18 = bitcast i8* %17 to %576* %19 = load %294*, %294** %10, align 8 %20 = load %13*, %13** %11, align 8 %21 = load %73*, %73** %12, align 8 %22 = load %295*, %295** %13, align 8 %23 = bitcast %5* %8 to <2 x float>* %24 = load <2 x float>, <2 x float>* %23, align 4 %25 = tail call { %294*, %472* } @120(%576* noundef align 8 dereferenceable_or_null(200) %18, %294* noundef %19, %13* noundef align 4 dereferenceable(105) %20, <2 x float> %24, %73* noundef align 8 dereferenceable(76) %21, %295* noundef %22) %26 = getelementptr inbounds %716, %716* %7, i32 0, i32 0 %27 = bitcast %717* %26 to { %294*, %472* }* %28 = getelementptr inbounds { %294*, %472* }, { %294*, %472* }* %27, i32 0, i32 0 %29 = extractvalue { %294*, %472* } %25, 0 store %294* %29, %294** %28, align 8 %30 = getelementptr inbounds { %294*, %472* }, { %294*, %472* }* %27, i32 0, i32 1 %31 = extractvalue { %294*, %472* } %25, 1 store %472* %31, %472** %30, align 8 %32 = getelementptr inbounds %716, %716* %7, i32 0, i32 0 %33 = bitcast %717* %32 to { %294*, %472* }* %34 = load { %294*, %472* }, { %294*, %472* }* %33, align 8 ret { %294*, %472* } %34 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @131(%576* noundef %0, i8* noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, %2* noundef align 4 dereferenceable(40) %5, <2 x float> %6, %290* noundef byval(%290) align 8 %7) unnamed_addr #14 align 2 { %9 = alloca %5, align 4 %10 = alloca %576*, align 8 %11 = alloca i8*, align 8 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca i32, align 4 %15 = alloca %2*, align 8 %16 = bitcast %5* %9 to <2 x float>* store <2 x float> %6, <2 x float>* %16, align 4 store %576* %0, %576** %10, align 8 store i8* %1, i8** %11, align 8 store i32 %2, i32* %12, align 4 store i32 %3, i32* %13, align 4 store i32 %4, i32* %14, align 4 store %2* %5, %2** %15, align 8 %17 = load %576*, %576** %10, align 8 %18 = bitcast %576* %17 to i8* %19 = getelementptr inbounds i8, i8* %18, i64 -16 %20 = bitcast i8* %19 to %576* %21 = load i8*, i8** %11, align 8 %22 = load i32, i32* %12, align 4 %23 = load i32, i32* %13, align 4 %24 = load i32, i32* %14, align 4 %25 = load %2*, %2** %15, align 8 %26 = bitcast %5* %9 to <2 x float>* %27 = load <2 x float>, <2 x float>* %26, align 4 tail call void @123(%576* noundef align 8 dereferenceable_or_null(200) %20, i8* noundef %21, i32 noundef %22, i32 noundef %23, i32 noundef %24, %2* noundef align 4 dereferenceable(40) %25, <2 x float> %27, %290* noundef byval(%290) align 8 %7) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal void @132(%576* noundef %0, %734* noundef %1) unnamed_addr #0 align 2 { %3 = alloca %576*, align 8 %4 = alloca %734*, align 8 store %576* %0, %576** %3, align 8 store %734* %1, %734** %4, align 8 %5 = load %576*, %576** %3, align 8 %6 = bitcast %576* %5 to i8* %7 = getelementptr inbounds i8, i8* %6, i64 -16 %8 = bitcast i8* %7 to %576* %9 = load %734*, %734** %4, align 8 tail call void @121(%576* noundef align 8 dereferenceable_or_null(200) %8, %734* noundef %9) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define internal i64 @133(%576* noundef %0, i32 noundef %1, i32 noundef %2, %741* noundef %3) unnamed_addr #0 align 2 { %5 = alloca %742, align 4 %6 = alloca %576*, align 8 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca %741*, align 8 store %576* %0, %576** %6, align 8 store i32 %1, i32* %7, align 4 store i32 %2, i32* %8, align 4 store %741* %3, %741** %9, align 8 %10 = load %576*, %576** %6, align 8 %11 = bitcast %576* %10 to i8* %12 = getelementptr inbounds i8, i8* %11, i64 -16 %13 = bitcast i8* %12 to %576* %14 = load i32, i32* %7, align 4 %15 = load i32, i32* %8, align 4 %16 = load %741*, %741** %9, align 8 %17 = tail call i64 @122(%576* noundef align 8 dereferenceable_or_null(200) %13, i32 noundef %14, i32 noundef %15, %741* noundef %16) %18 = getelementptr inbounds %742, %742* %5, i32 0, i32 0 %19 = bitcast %743* %18 to i64* store i64 %17, i64* %19, align 4 %20 = getelementptr inbounds %742, %742* %5, i32 0, i32 0 %21 = bitcast %743* %20 to i64* %22 = load i64, i64* %21, align 4 ret i64 %22 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13GrAtlasSubRunD2Ev(%528* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %528*, align 8 store %528* %0, %528** %2, align 8 %3 = load %528*, %528** %2, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN13GrAtlasSubRunD0Ev(%528* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %528*, align 8 store %528* %0, %528** %2, align 8 %3 = load %528*, %528** %2, align 8 call void @llvm.trap() #22 unreachable } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8SkStrikeEC2EOS1_(%132* noundef align 8 dereferenceable_or_null(8) %0, %132* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %132*, align 8 %4 = alloca %132*, align 8 store %132* %0, %132** %3, align 8 store %132* %1, %132** %4, align 8 %5 = load %132*, %132** %3, align 8 %6 = getelementptr inbounds %132, %132* %5, i32 0, i32 0 %7 = load %132*, %132** %4, align 8 %8 = call noundef %133* @_ZN5sk_spI8SkStrikeE7releaseEv(%132* noundef align 8 dereferenceable_or_null(8) %7) store %133* %8, %133** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spIN6sktext3gpu10TextStrikeEEC2EOS3_(%558* noundef align 8 dereferenceable_or_null(8) %0, %558* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %558*, align 8 %4 = alloca %558*, align 8 store %558* %0, %558** %3, align 8 store %558* %1, %558** %4, align 8 %5 = load %558*, %558** %3, align 8 %6 = getelementptr inbounds %558, %558* %5, i32 0, i32 0 %7 = load %558*, %558** %4, align 8 %8 = call noundef %559* @_ZN5sk_spIN6sktext3gpu10TextStrikeEE7releaseEv(%558* noundef align 8 dereferenceable_or_null(8) %7) store %559* %8, %559** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5skgpu18BulkUsePlotUpdaterC2ERKS0_(%568* noundef align 8 dereferenceable_or_null(64) %0, %568* noundef align 8 dereferenceable(64) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %568*, align 8 %4 = alloca %568*, align 8 store %568* %0, %568** %3, align 8 store %568* %1, %568** %4, align 8 %5 = load %568*, %568** %3, align 8 %6 = getelementptr inbounds %568, %568* %5, i32 0, i32 0 %7 = load %568*, %568** %4, align 8 %8 = getelementptr inbounds %568, %568* %7, i32 0, i32 0 call void @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ERKS3_(%569* noundef align 8 dereferenceable_or_null(48) %6, %569* noundef align 8 dereferenceable(48) %8) %9 = getelementptr inbounds %568, %568* %5, i32 0, i32 1 %10 = getelementptr inbounds [4 x i32], [4 x i32]* %9, i64 0, i64 0 %11 = bitcast i32* %10 to i8* %12 = load %568*, %568** %4, align 8 %13 = getelementptr inbounds %568, %568* %12, i32 0, i32 1 %14 = getelementptr inbounds [4 x i32], [4 x i32]* %13, i64 0, i64 0 %15 = bitcast i32* %14 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %15, i64 16, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %133* @_ZN5sk_spI8SkStrikeE7releaseEv(%132* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %132*, align 8 %3 = alloca %133*, align 8 store %132* %0, %132** %2, align 8 %4 = load %132*, %132** %2, align 8 %5 = bitcast %133** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %133* inttoptr (i64 -6148914691236517206 to %133*), %133** %3, align 8, !annotation !6 %6 = getelementptr inbounds %132, %132* %4, i32 0, i32 0 %7 = load %133*, %133** %6, align 8 store %133* %7, %133** %3, align 8 %8 = getelementptr inbounds %132, %132* %4, i32 0, i32 0 store %133* null, %133** %8, align 8 %9 = load %133*, %133** %3, align 8 %10 = bitcast %133** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret %133* %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %559* @_ZN5sk_spIN6sktext3gpu10TextStrikeEE7releaseEv(%558* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %558*, align 8 %3 = alloca %559*, align 8 store %558* %0, %558** %2, align 8 %4 = load %558*, %558** %2, align 8 %5 = bitcast %559** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %559* inttoptr (i64 -6148914691236517206 to %559*), %559** %3, align 8, !annotation !6 %6 = getelementptr inbounds %558, %558* %4, i32 0, i32 0 %7 = load %559*, %559** %6, align 8 store %559* %7, %559** %3, align 8 %8 = getelementptr inbounds %558, %558* %4, i32 0, i32 0 store %559* null, %559** %8, align 8 %9 = load %559*, %559** %3, align 8 %10 = bitcast %559** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret %559* %9 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ERKS3_(%569* noundef align 8 dereferenceable_or_null(48) %0, %569* noundef align 8 dereferenceable(48) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %569*, align 8 %4 = alloca %569*, align 8 store %569* %0, %569** %3, align 8 store %569* %1, %569** %4, align 8 %5 = load %569*, %569** %3, align 8 call void @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2Ev(%569* noundef align 8 dereferenceable_or_null(48) %5) %6 = load %569*, %569** %4, align 8 %7 = call noundef align 8 dereferenceable(48) %569* @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_(%569* noundef align 8 dereferenceable_or_null(48) %5, %569* noundef align 8 dereferenceable(48) %6) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2Ev(%569* noundef align 8 dereferenceable_or_null(48) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %569*, align 8 store %569* %0, %569** %2, align 8 %3 = load %569*, %569** %2, align 8 %4 = bitcast %569* %3 to %570* call void @_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEEC2Ev(%570* noundef align 4 dereferenceable_or_null(32) %4) %5 = bitcast %569* %3 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 32 %7 = bitcast i8* %6 to %571* %8 = bitcast %569* %3 to %570* call void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ILi4EEEP18SkAlignedSTStorageIXT_ES2_E(%571* noundef align 8 dereferenceable_or_null(16) %7, %570* noundef %8) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(48) %569* @_ZN9SkSTArrayILi4EN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_(%569* noundef align 8 dereferenceable_or_null(48) %0, %569* noundef align 8 dereferenceable(48) %1) #3 comdat align 2 { %3 = alloca %569*, align 8 %4 = alloca %569*, align 8 store %569* %0, %569** %3, align 8 store %569* %1, %569** %4, align 8 %5 = load %569*, %569** %3, align 8 %6 = bitcast %569* %5 to i8* %7 = getelementptr inbounds i8, i8* %6, i64 32 %8 = bitcast i8* %7 to %571* %9 = load %569*, %569** %4, align 8 %10 = bitcast %569* %9 to i8* %11 = getelementptr inbounds i8, i8* %10, i64 32 %12 = bitcast i8* %11 to %571* %13 = call noundef align 8 dereferenceable(16) %571* @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_(%571* noundef align 8 dereferenceable_or_null(16) %8, %571* noundef align 8 dereferenceable(16) %12) ret %569* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEEC2Ev(%570* noundef align 4 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %570*, align 8 store %570* %0, %570** %2, align 8 %3 = load %570*, %570** %2, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEC2ILi4EEEP18SkAlignedSTStorageIXT_ES2_E(%571* noundef align 8 dereferenceable_or_null(16) %0, %570* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %571*, align 8 %4 = alloca %570*, align 8 store %571* %0, %571** %3, align 8 store %570* %1, %570** %4, align 8 %5 = load %571*, %571** %3, align 8 %6 = load %570*, %570** %4, align 8 %7 = call noundef i8* @_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEE3getEv(%570* noundef align 4 dereferenceable_or_null(32) %6) call void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE27initWithPreallocatedStorageEiPvi(%571* noundef align 8 dereferenceable_or_null(16) %5, i32 noundef 0, i8* noundef %7, i32 noundef 4) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE27initWithPreallocatedStorageEiPvi(%571* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1, i8* noundef %2, i32 noundef %3) #3 comdat align 2 { %5 = alloca %571*, align 8 %6 = alloca i32, align 4 %7 = alloca i8*, align 8 %8 = alloca i32, align 4 store %571* %0, %571** %5, align 8 store i32 %1, i32* %6, align 4 store i8* %2, i8** %7, align 8 store i32 %3, i32* %8, align 4 %9 = load %571*, %571** %5, align 8 %10 = load i32, i32* %6, align 4 %11 = call noundef i32 @_Z7SkToU32IiEjT_(i32 noundef %10) %12 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %13 = zext i32 %11 to i64 %14 = load i64, i64* %12, align 8 %15 = and i64 %13, 2147483647 %16 = shl i64 %15, 1 %17 = and i64 %14, -4294967295 %18 = or i64 %17, %16 store i64 %18, i64* %12, align 8 %19 = getelementptr inbounds %571, %571* %9, i32 0, i32 0 store %572* null, %572** %19, align 8 %20 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %21 = load i64, i64* %20, align 8 %22 = and i64 %21, -4294967297 %23 = or i64 %22, 0 store i64 %23, i64* %20, align 8 %24 = load i32, i32* %6, align 4 %25 = load i32, i32* %8, align 4 %26 = icmp sgt i32 %24, %25 br i1 %26, label %27, label %50 27: ; preds = %4 %28 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3maxIiEERKT_S3_S3_(i32* noundef align 4 dereferenceable(4) %6, i32* noundef align 4 dereferenceable(4) @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE18kMinHeapAllocCountE) %29 = load i32, i32* %28, align 4 %30 = call noundef i32 @_Z7SkToU32IiEjT_(i32 noundef %29) %31 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %32 = zext i32 %30 to i64 %33 = load i64, i64* %31, align 8 %34 = and i64 %32, 2147483647 %35 = shl i64 %34, 33 %36 = and i64 %33, 8589934591 %37 = or i64 %36, %35 store i64 %37, i64* %31, align 8 %38 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %39 = load i64, i64* %38, align 8 %40 = lshr i64 %39, 33 %41 = trunc i64 %40 to i32 %42 = zext i32 %41 to i64 %43 = call noundef i8* @_Z15sk_malloc_throwmm(i64 noundef %42, i64 noundef 8) %44 = bitcast i8* %43 to %572* %45 = getelementptr inbounds %571, %571* %9, i32 0, i32 0 store %572* %44, %572** %45, align 8 %46 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %47 = load i64, i64* %46, align 8 %48 = and i64 %47, -2 %49 = or i64 %48, 1 store i64 %49, i64* %46, align 8 br label %67 50: ; preds = %4 %51 = load i32, i32* %8, align 4 %52 = call noundef i32 @_Z7SkToU32IiEjT_(i32 noundef %51) %53 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %54 = zext i32 %52 to i64 %55 = load i64, i64* %53, align 8 %56 = and i64 %54, 2147483647 %57 = shl i64 %56, 33 %58 = and i64 %55, 8589934591 %59 = or i64 %58, %57 store i64 %59, i64* %53, align 8 %60 = load i8*, i8** %7, align 8 %61 = bitcast i8* %60 to %572* %62 = getelementptr inbounds %571, %571* %9, i32 0, i32 0 store %572* %61, %572** %62, align 8 %63 = getelementptr inbounds %571, %571* %9, i32 0, i32 1 %64 = load i64, i64* %63, align 8 %65 = and i64 %64, -2 %66 = or i64 %65, 0 store i64 %66, i64* %63, align 8 br label %67 67: ; preds = %50, %27 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i8* @_ZN18SkAlignedSTStorageILi4EN5skgpu18BulkUsePlotUpdater8PlotDataEE3getEv(%570* noundef align 4 dereferenceable_or_null(32) %0) #3 comdat align 2 { %2 = alloca %570*, align 8 store %570* %0, %570** %2, align 8 %3 = load %570*, %570** %2, align 8 %4 = getelementptr inbounds %570, %570* %3, i32 0, i32 0 %5 = getelementptr inbounds [32 x i8], [32 x i8]* %4, i64 0, i64 0 ret i8* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z7SkToU32IiEjT_(i32 noundef %0) #3 comdat { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 %4 = call noundef i32 @_Z4SkToIjiET_T0_(i32 noundef %3) ret i32 %4 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3maxIiEERKT_S3_S3_(i32* noundef align 4 dereferenceable(4) %0, i32* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca i32*, align 8 %4 = alloca i32*, align 8 %5 = alloca %744, align 1 store i32* %0, i32** %3, align 8 store i32* %1, i32** %4, align 8 %6 = load i32*, i32** %3, align 8 %7 = load i32*, i32** %4, align 8 %8 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3maxIiNS_6__lessIiiEEEERKT_S5_S5_T0_(i32* noundef align 4 dereferenceable(4) %6, i32* noundef align 4 dereferenceable(4) %7) ret i32* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_Z4SkToIjiET_T0_(i32 noundef %0) #3 comdat { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 ret i32 %3 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3maxIiNS_6__lessIiiEEEERKT_S5_S5_T0_(i32* noundef align 4 dereferenceable(4) %0, i32* noundef align 4 dereferenceable(4) %1) #7 comdat { %3 = alloca %744, align 1 %4 = alloca i32*, align 8 %5 = alloca i32*, align 8 store i32* %0, i32** %4, align 8 store i32* %1, i32** %5, align 8 %6 = load i32*, i32** %4, align 8 %7 = load i32*, i32** %5, align 8 %8 = call noundef zeroext i1 @_ZNKSt4__Cr6__lessIiiEclERKiS3_(%744* noundef align 1 dereferenceable_or_null(1) %3, i32* noundef align 4 dereferenceable(4) %6, i32* noundef align 4 dereferenceable(4) %7) br i1 %8, label %9, label %11 9: ; preds = %2 %10 = load i32*, i32** %5, align 8 br label %13 11: ; preds = %2 %12 = load i32*, i32** %4, align 8 br label %13 13: ; preds = %11, %9 %14 = phi i32* [ %10, %9 ], [ %12, %11 ] ret i32* %14 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNKSt4__Cr6__lessIiiEclERKiS3_(%744* noundef align 1 dereferenceable_or_null(1) %0, i32* noundef align 4 dereferenceable(4) %1, i32* noundef align 4 dereferenceable(4) %2) #3 comdat align 2 { %4 = alloca %744*, align 8 %5 = alloca i32*, align 8 %6 = alloca i32*, align 8 store %744* %0, %744** %4, align 8 store i32* %1, i32** %5, align 8 store i32* %2, i32** %6, align 8 %7 = load %744*, %744** %4, align 8 %8 = load i32*, i32** %5, align 8 %9 = load i32, i32* %8, align 4 %10 = load i32*, i32** %6, align 8 %11 = load i32, i32* %10, align 4 %12 = icmp slt i32 %9, %11 ret i1 %12 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(16) %571* @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EEaSERKS3_(%571* noundef align 8 dereferenceable_or_null(16) %0, %571* noundef align 8 dereferenceable(16) %1) #3 comdat align 2 { %3 = alloca %571*, align 8 %4 = alloca %571*, align 8 %5 = alloca %571*, align 8 %6 = alloca i32, align 4 store %571* %0, %571** %4, align 8 store %571* %1, %571** %5, align 8 %7 = load %571*, %571** %4, align 8 %8 = load %571*, %571** %5, align 8 %9 = icmp eq %571* %7, %8 br i1 %9, label %10, label %11 10: ; preds = %2 store %571* %7, %571** %3, align 8 br label %51 11: ; preds = %2 %12 = bitcast i32* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %12) #21 store i32 -1431655766, i32* %6, align 4, !annotation !6 store i32 0, i32* %6, align 4 br label %13 13: ; preds = %25, %11 %14 = load i32, i32* %6, align 4 %15 = call noundef i32 @_ZNK8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE5countEv(%571* noundef align 8 dereferenceable_or_null(16) %7) %16 = icmp slt i32 %14, %15 br i1 %16, label %19, label %17 17: ; preds = %13 %18 = bitcast i32* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %18) #21 br label %28 19: ; preds = %13 %20 = getelementptr inbounds %571, %571* %7, i32 0, i32 0 %21 = load %572*, %572** %20, align 8 %22 = load i32, i32* %6, align 4 %23 = sext i32 %22 to i64 %24 = getelementptr inbounds %572, %572* %21, i64 %23 br label %25 25: ; preds = %19 %26 = load i32, i32* %6, align 4 %27 = add nsw i32 %26, 1 store i32 %27, i32* %6, align 4 br label %13, !llvm.loop !20 28: ; preds = %17 %29 = getelementptr inbounds %571, %571* %7, i32 0, i32 1 %30 = load i64, i64* %29, align 8 %31 = and i64 %30, -4294967295 %32 = or i64 %31, 0 store i64 %32, i64* %29, align 8 %33 = load %571*, %571** %5, align 8 %34 = call noundef i32 @_ZNK8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE5countEv(%571* noundef align 8 dereferenceable_or_null(16) %33) call void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE12checkReallocEiNS3_11ReallocTypeE(%571* noundef align 8 dereferenceable_or_null(16) %7, i32 noundef %34, i32 noundef 0) %35 = load %571*, %571** %5, align 8 %36 = getelementptr inbounds %571, %571* %35, i32 0, i32 1 %37 = load i64, i64* %36, align 8 %38 = lshr i64 %37, 1 %39 = and i64 %38, 2147483647 %40 = trunc i64 %39 to i32 %41 = getelementptr inbounds %571, %571* %7, i32 0, i32 1 %42 = zext i32 %40 to i64 %43 = load i64, i64* %41, align 8 %44 = and i64 %42, 2147483647 %45 = shl i64 %44, 1 %46 = and i64 %43, -4294967295 %47 = or i64 %46, %45 store i64 %47, i64* %41, align 8 %48 = load %571*, %571** %5, align 8 %49 = getelementptr inbounds %571, %571* %48, i32 0, i32 0 %50 = load %572*, %572** %49, align 8 call void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4copyEPKS2_(%571* noundef align 8 dereferenceable_or_null(16) %7, %572* noundef %50) store %571* %7, %571** %3, align 8 br label %51 51: ; preds = %28, %10 %52 = load %571*, %571** %3, align 8 ret %571* %52 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE5countEv(%571* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %571*, align 8 store %571* %0, %571** %2, align 8 %3 = load %571*, %571** %2, align 8 %4 = getelementptr inbounds %571, %571* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = lshr i64 %5, 1 %7 = and i64 %6, 2147483647 %8 = trunc i64 %7 to i32 ret i32 %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE12checkReallocEiNS3_11ReallocTypeE(%571* noundef align 8 dereferenceable_or_null(16) %0, i32 noundef %1, i32 noundef %2) #3 comdat align 2 { %4 = alloca %571*, align 8 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i64, align 8 %8 = alloca i8, align 1 %9 = alloca i8, align 1 %10 = alloca i32, align 4 %11 = alloca i64, align 8 %12 = alloca %572*, align 8 store %571* %0, %571** %4, align 8 store i32 %1, i32* %5, align 4 store i32 %2, i32* %6, align 4 %13 = load %571*, %571** %4, align 8 %14 = bitcast i64* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %14) #21 store i64 -6148914691236517206, i64* %7, align 8, !annotation !6 %15 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %16 = load i64, i64* %15, align 8 %17 = lshr i64 %16, 1 %18 = and i64 %17, 2147483647 %19 = trunc i64 %18 to i32 %20 = load i32, i32* %5, align 4 %21 = add nsw i32 %19, %20 %22 = sext i32 %21 to i64 store i64 %22, i64* %7, align 8 call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 store i8 -86, i8* %8, align 1, !annotation !6 %23 = load i64, i64* %7, align 8 %24 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %25 = load i64, i64* %24, align 8 %26 = lshr i64 %25, 33 %27 = trunc i64 %26 to i32 %28 = zext i32 %27 to i64 %29 = icmp sgt i64 %23, %28 %30 = zext i1 %29 to i8 store i8 %30, i8* %8, align 1 call void @llvm.lifetime.start.p0i8(i64 1, i8* %9) #21 store i8 -86, i8* %9, align 1, !annotation !6 %31 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %32 = load i64, i64* %31, align 8 %33 = lshr i64 %32, 33 %34 = trunc i64 %33 to i32 %35 = zext i32 %34 to i64 %36 = load i64, i64* %7, align 8 %37 = mul nsw i64 3, %36 %38 = icmp sgt i64 %35, %37 br i1 %38, label %39, label %53 39: ; preds = %3 %40 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %41 = load i64, i64* %40, align 8 %42 = and i64 %41, 1 %43 = trunc i64 %42 to i32 %44 = icmp ne i32 %43, 0 br i1 %44, label %45, label %53 45: ; preds = %39 %46 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %47 = load i64, i64* %46, align 8 %48 = lshr i64 %47, 32 %49 = and i64 %48, 1 %50 = trunc i64 %49 to i32 %51 = icmp ne i32 %50, 0 %52 = xor i1 %51, true br label %53 53: ; preds = %45, %39, %3 %54 = phi i1 [ false, %39 ], [ false, %3 ], [ %52, %45 ] %55 = zext i1 %54 to i8 store i8 %55, i8* %9, align 1 %56 = load i8, i8* %8, align 1, !range !7 %57 = trunc i8 %56 to i1 br i1 %57, label %62, label %58 58: ; preds = %53 %59 = load i8, i8* %9, align 1, !range !7 %60 = trunc i8 %59 to i1 br i1 %60, label %62, label %61 61: ; preds = %58 store i32 1, i32* %10, align 4 br label %129 62: ; preds = %58, %53 %63 = bitcast i64* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %63) #21 store i64 -6148914691236517206, i64* %11, align 8, !annotation !6 %64 = load i64, i64* %7, align 8 store i64 %64, i64* %11, align 8 %65 = load i32, i32* %6, align 4 %66 = icmp ne i32 %65, 0 br i1 %66, label %67, label %76 67: ; preds = %62 %68 = load i64, i64* %7, align 8 %69 = add nsw i64 %68, 1 %70 = ashr i64 %69, 1 %71 = load i64, i64* %11, align 8 %72 = add nsw i64 %71, %70 store i64 %72, i64* %11, align 8 %73 = load i64, i64* %11, align 8 %74 = add nsw i64 %73, 7 %75 = and i64 %74, -8 store i64 %75, i64* %11, align 8 br label %76 76: ; preds = %67, %62 %77 = load i64, i64* %11, align 8 %78 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %79 = load i64, i64* %78, align 8 %80 = lshr i64 %79, 33 %81 = trunc i64 %80 to i32 %82 = zext i32 %81 to i64 %83 = icmp eq i64 %77, %82 br i1 %83, label %84, label %85 84: ; preds = %76 store i32 1, i32* %10, align 4 br label %127 85: ; preds = %76 %86 = load i64, i64* %11, align 8 %87 = call noundef i32 @134(i64 noundef %86) %88 = call noundef i32 @_Z7SkToU32IiEjT_(i32 noundef %87) %89 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %90 = zext i32 %88 to i64 %91 = load i64, i64* %89, align 8 %92 = and i64 %90, 2147483647 %93 = shl i64 %92, 33 %94 = and i64 %91, 8589934591 %95 = or i64 %94, %93 store i64 %95, i64* %89, align 8 %96 = bitcast %572** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %96) #21 store %572* inttoptr (i64 -6148914691236517206 to %572*), %572** %12, align 8, !annotation !6 %97 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %98 = load i64, i64* %97, align 8 %99 = lshr i64 %98, 33 %100 = trunc i64 %99 to i32 %101 = zext i32 %100 to i64 %102 = call noundef i8* @_Z15sk_malloc_throwmm(i64 noundef %101, i64 noundef 8) %103 = bitcast i8* %102 to %572* store %572* %103, %572** %12, align 8 %104 = load %572*, %572** %12, align 8 %105 = bitcast %572* %104 to i8* call void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4moveILb1EEENSt4__Cr9enable_ifIXT_EvE4typeEPv(%571* noundef align 8 dereferenceable_or_null(16) %13, i8* noundef %105) %106 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %107 = load i64, i64* %106, align 8 %108 = and i64 %107, 1 %109 = trunc i64 %108 to i32 %110 = icmp ne i32 %109, 0 br i1 %110, label %111, label %115 111: ; preds = %85 %112 = getelementptr inbounds %571, %571* %13, i32 0, i32 0 %113 = load %572*, %572** %112, align 8 %114 = bitcast %572* %113 to i8* call void @_Z7sk_freePv(i8* noundef %114) br label %115 115: ; preds = %111, %85 %116 = load %572*, %572** %12, align 8 %117 = getelementptr inbounds %571, %571* %13, i32 0, i32 0 store %572* %116, %572** %117, align 8 %118 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %119 = load i64, i64* %118, align 8 %120 = and i64 %119, -2 %121 = or i64 %120, 1 store i64 %121, i64* %118, align 8 %122 = getelementptr inbounds %571, %571* %13, i32 0, i32 1 %123 = load i64, i64* %122, align 8 %124 = and i64 %123, -4294967297 %125 = or i64 %124, 0 store i64 %125, i64* %122, align 8 %126 = bitcast %572** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %126) #21 store i32 0, i32* %10, align 4 br label %127 127: ; preds = %115, %84 %128 = bitcast i64* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %128) #21 br label %129 129: ; preds = %127, %61 call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %8) #21 %130 = bitcast i64* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %130) #21 %131 = load i32, i32* %10, align 4 switch i32 %131, label %133 [ i32 0, label %132 i32 1, label %132 ] 132: ; preds = %129, %129 ret void 133: ; preds = %129 unreachable } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4copyEPKS2_(%571* noundef align 8 dereferenceable_or_null(16) %0, %572* noundef %1) #3 comdat align 2 { %3 = alloca %571*, align 8 %4 = alloca %572*, align 8 %5 = alloca i32, align 4 store %571* %0, %571** %3, align 8 store %572* %1, %572** %4, align 8 %6 = load %571*, %571** %3, align 8 %7 = bitcast i32* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %7) #21 store i32 -1431655766, i32* %5, align 4, !annotation !6 store i32 0, i32* %5, align 4 br label %8 8: ; preds = %28, %2 %9 = load i32, i32* %5, align 4 %10 = call noundef i32 @_ZNK8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE5countEv(%571* noundef align 8 dereferenceable_or_null(16) %6) %11 = icmp slt i32 %9, %10 br i1 %11, label %14, label %12 12: ; preds = %8 %13 = bitcast i32* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %13) #21 br label %31 14: ; preds = %8 %15 = getelementptr inbounds %571, %571* %6, i32 0, i32 0 %16 = load %572*, %572** %15, align 8 %17 = load i32, i32* %5, align 4 %18 = sext i32 %17 to i64 %19 = getelementptr inbounds %572, %572* %16, i64 %18 %20 = bitcast %572* %19 to i8* %21 = bitcast i8* %20 to %572* %22 = load %572*, %572** %4, align 8 %23 = load i32, i32* %5, align 4 %24 = sext i32 %23 to i64 %25 = getelementptr inbounds %572, %572* %22, i64 %24 %26 = bitcast %572* %21 to i8* %27 = bitcast %572* %25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %26, i8* align 4 %27, i64 8, i1 false) br label %28 28: ; preds = %14 %29 = load i32, i32* %5, align 4 %30 = add nsw i32 %29, 1 store i32 %30, i32* %5, align 4 br label %8, !llvm.loop !21 31: ; preds = %12 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @134(i64 noundef %0) #3 { %2 = alloca i64, align 8 store i64 %0, i64* %2, align 8 %3 = load i64, i64* %2, align 8 %4 = icmp slt i64 %3, -2147483647 br i1 %4, label %5, label %6 5: ; preds = %1 br label %15 6: ; preds = %1 %7 = load i64, i64* %2, align 8 %8 = icmp sgt i64 %7, 2147483647 br i1 %8, label %9, label %10 9: ; preds = %6 br label %13 10: ; preds = %6 %11 = load i64, i64* %2, align 8 %12 = trunc i64 %11 to i32 br label %13 13: ; preds = %10, %9 %14 = phi i32 [ 2147483647, %9 ], [ %12, %10 ] br label %15 15: ; preds = %13, %5 %16 = phi i32 [ -2147483647, %5 ], [ %14, %13 ] ret i32 %16 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8SkTArrayIN5skgpu18BulkUsePlotUpdater8PlotDataELb1EE4moveILb1EEENSt4__Cr9enable_ifIXT_EvE4typeEPv(%571* noundef align 8 dereferenceable_or_null(16) %0, i8* noundef %1) #3 comdat align 2 { %3 = alloca %571*, align 8 %4 = alloca i8*, align 8 store %571* %0, %571** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %571*, %571** %3, align 8 %6 = load i8*, i8** %4, align 8 %7 = getelementptr inbounds %571, %571* %5, i32 0, i32 0 %8 = load %572*, %572** %7, align 8 %9 = bitcast %572* %8 to i8* %10 = getelementptr inbounds %571, %571* %5, i32 0, i32 1 %11 = load i64, i64* %10, align 8 %12 = lshr i64 %11, 1 %13 = and i64 %12, 2147483647 %14 = trunc i64 %13 to i32 %15 = zext i32 %14 to i64 %16 = mul i64 %15, 8 %17 = call noundef i8* @135(i8* noundef %6, i8* noundef %9, i64 noundef %16) ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i8* @135(i8* noundef %0, i8* noundef %1, i64 noundef %2) #7 { %4 = alloca i8*, align 8 %5 = alloca i8*, align 8 %6 = alloca i64, align 8 store i8* %0, i8** %4, align 8 store i8* %1, i8** %5, align 8 store i64 %2, i64* %6, align 8 %7 = load i64, i64* %6, align 8 %8 = icmp ne i64 %7, 0 br i1 %8, label %9, label %13 9: ; preds = %3 %10 = load i8*, i8** %4, align 8 %11 = load i8*, i8** %5, align 8 %12 = load i64, i64* %6, align 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %10, i8* align 1 %11, i64 %12, i1 false) br label %13 13: ; preds = %9, %3 %14 = load i8*, i8** %4, align 8 ret i8* %14 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %294** @_ZNSt4__Cr3getILm0EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_(%716* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %716*, align 8 store %716* %0, %716** %2, align 8 %3 = load %716*, %716** %2, align 8 %4 = getelementptr inbounds %716, %716* %3, i32 0, i32 0 %5 = bitcast %717* %4 to %718* %6 = call noundef align 8 dereferenceable(8) %294** @_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EE3getEv(%718* noundef align 8 dereferenceable_or_null(8) %5) #21 ret %294** %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %469* @_ZNSt4__Cr3getILm1EJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOSD_(%716* noundef align 8 dereferenceable(16) %0) #7 comdat { %2 = alloca %716*, align 8 store %716* %0, %716** %2, align 8 %3 = load %716*, %716** %2, align 8 %4 = getelementptr inbounds %716, %716* %3, i32 0, i32 0 %5 = bitcast %717* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %719* %8 = call noundef align 8 dereferenceable(8) %469* @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EE3getEv(%719* noundef align 8 dereferenceable_or_null(8) %7) #21 ret %469* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNSt4__CrneI4GrOpNS_14default_deleteIS1_EEEEbRKNS_10unique_ptrIT_T0_EEDn(%469* noundef align 8 dereferenceable(8) %0, i8* %1) #7 comdat { %3 = alloca %469*, align 8 %4 = alloca i8*, align 8 store %469* %0, %469** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %469*, %469** %3, align 8 %6 = call noundef zeroext i1 @_ZNKSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEcvbEv(%469* noundef align 8 dereferenceable_or_null(8) %5) #21 ret i1 %6 } ; Function Attrs: null_pointer_is_valid declare void @_ZN5skgpu2v118SurfaceDrawContext9addDrawOpEPK6GrClipNSt4__Cr10unique_ptrI4GrOpNS5_14default_deleteIS7_EEEERKNS5_8functionIFvPS7_jEEE(%295* noundef align 8 dereferenceable_or_null(312), %294* noundef, %472*, %720* noundef align 8 dereferenceable(32)) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2EOS4_(%469* noundef align 8 dereferenceable_or_null(8) %0, %469* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %469*, align 8 %4 = alloca %469*, align 8 %5 = alloca %472*, align 8 store %469* %0, %469** %3, align 8 store %469* %1, %469** %4, align 8 %6 = load %469*, %469** %3, align 8 %7 = getelementptr inbounds %469, %469* %6, i32 0, i32 0 %8 = bitcast %472** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %8) #21 %9 = load %469*, %469** %4, align 8 %10 = call noundef %472* @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE7releaseEv(%469* noundef align 8 dereferenceable_or_null(8) %9) #21 store %472* %10, %472** %5, align 8 %11 = load %469*, %469** %4, align 8 %12 = call noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE11get_deleterEv(%469* noundef align 8 dereferenceable_or_null(8) %11) #21 call void @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IS2_S4_EEOT_OT0_(%470* noundef align 8 dereferenceable_or_null(8) %7, %472** noundef align 8 dereferenceable(8) %5, %745* noundef align 1 dereferenceable(1) %12) %13 = bitcast %472** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr8functionIFvP4GrOpjEEC2Ev(%720* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %720*, align 8 store %720* %0, %720** %2, align 8 %3 = load %720*, %720** %2, align 8 %4 = bitcast %720* %3 to %746* %5 = bitcast %720* %3 to %747* %6 = getelementptr inbounds %720, %720* %3, i32 0, i32 0 call void @_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEEC2Ev(%721* noundef align 8 dereferenceable_or_null(32) %6) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr8functionIFvP4GrOpjEED2Ev(%720* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %720*, align 8 store %720* %0, %720** %2, align 8 %3 = load %720*, %720** %2, align 8 %4 = getelementptr inbounds %720, %720* %3, i32 0, i32 0 call void @_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEED2Ev(%721* noundef align 8 dereferenceable_or_null(32) %4) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEED2Ev(%716* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %716*, align 8 store %716* %0, %716** %2, align 8 %3 = load %716*, %716** %2, align 8 %4 = getelementptr inbounds %716, %716* %3, i32 0, i32 0 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEED2Ev(%717* noundef align 8 dereferenceable_or_null(16) %4) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %294** @_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EE3getEv(%718* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %718*, align 8 store %718* %0, %718** %2, align 8 %3 = load %718*, %718** %2, align 8 %4 = getelementptr inbounds %718, %718* %3, i32 0, i32 0 ret %294** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %469* @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EE3getEv(%719* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %719*, align 8 store %719* %0, %719** %2, align 8 %3 = load %719*, %719** %2, align 8 %4 = getelementptr inbounds %719, %719* %3, i32 0, i32 0 ret %469* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNKSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEcvbEv(%469* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %469*, align 8 store %469* %0, %469** %2, align 8 %3 = load %469*, %469** %2, align 8 %4 = getelementptr inbounds %469, %469* %3, i32 0, i32 0 %5 = call noundef align 8 dereferenceable(8) %472** @_ZNKSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %4) #21 %6 = load %472*, %472** %5, align 8 %7 = icmp ne %472* %6, null ret i1 %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %472** @_ZNKSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %470*, align 8 store %470* %0, %470** %2, align 8 %3 = load %470*, %470** %2, align 8 %4 = bitcast %470* %3 to %471* %5 = call noundef align 8 dereferenceable(8) %472** @_ZNKSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv(%471* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %472** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %472** @_ZNKSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv(%471* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %471*, align 8 store %471* %0, %471** %2, align 8 %3 = load %471*, %471** %2, align 8 %4 = getelementptr inbounds %471, %471* %3, i32 0, i32 0 ret %472** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %472* @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE7releaseEv(%469* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %469*, align 8 %3 = alloca %472*, align 8 store %469* %0, %469** %2, align 8 %4 = load %469*, %469** %2, align 8 %5 = bitcast %472** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %472* inttoptr (i64 -6148914691236517206 to %472*), %472** %3, align 8, !annotation !6 %6 = getelementptr inbounds %469, %469* %4, i32 0, i32 0 %7 = call noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %6) #21 %8 = load %472*, %472** %7, align 8 store %472* %8, %472** %3, align 8 %9 = getelementptr inbounds %469, %469* %4, i32 0, i32 0 %10 = call noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %9) #21 store %472* null, %472** %10, align 8 %11 = load %472*, %472** %3, align 8 %12 = bitcast %472** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret %472* %11 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE11get_deleterEv(%469* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %469*, align 8 store %469* %0, %469** %2, align 8 %3 = load %469*, %469** %2, align 8 %4 = getelementptr inbounds %469, %469* %3, i32 0, i32 0 %5 = call noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE6secondEv(%470* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %745* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IS2_S4_EEOT_OT0_(%470* noundef align 8 dereferenceable_or_null(8) %0, %472** noundef align 8 dereferenceable(8) %1, %745* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %470*, align 8 %5 = alloca %472**, align 8 %6 = alloca %745*, align 8 store %470* %0, %470** %4, align 8 store %472** %1, %472*** %5, align 8 store %745* %2, %745** %6, align 8 %7 = load %470*, %470** %4, align 8 %8 = bitcast %470* %7 to %471* %9 = load %472**, %472*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IS2_vEEOT_(%471* noundef align 8 dereferenceable_or_null(8) %8, %472** noundef align 8 dereferenceable(8) %9) %10 = bitcast %470* %7 to %748* %11 = load %745*, %745** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2IS3_vEEOT_(%748* noundef align 1 dereferenceable_or_null(1) %10, %745* noundef align 1 dereferenceable(1) %11) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %470*, align 8 store %470* %0, %470** %2, align 8 %3 = load %470*, %470** %2, align 8 %4 = bitcast %470* %3 to %471* %5 = call noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv(%471* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %472** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EE5__getEv(%471* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %471*, align 8 store %471* %0, %471** %2, align 8 %3 = load %471*, %471** %2, align 8 %4 = getelementptr inbounds %471, %471* %3, i32 0, i32 0 ret %472** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE6secondEv(%470* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %470*, align 8 store %470* %0, %470** %2, align 8 %3 = load %470*, %470** %2, align 8 %4 = bitcast %470* %3 to %748* %5 = call noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EE5__getEv(%748* noundef align 1 dereferenceable_or_null(1) %4) #21 ret %745* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EE5__getEv(%748* noundef align 1 dereferenceable_or_null(1) %0) #3 comdat align 2 { %2 = alloca %748*, align 8 store %748* %0, %748** %2, align 8 %3 = load %748*, %748** %2, align 8 %4 = bitcast %748* %3 to %745* ret %745* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IS2_vEEOT_(%471* noundef align 8 dereferenceable_or_null(8) %0, %472** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %471*, align 8 %4 = alloca %472**, align 8 store %471* %0, %471** %3, align 8 store %472** %1, %472*** %4, align 8 %5 = load %471*, %471** %3, align 8 %6 = getelementptr inbounds %471, %471* %5, i32 0, i32 0 %7 = load %472**, %472*** %4, align 8 %8 = load %472*, %472** %7, align 8 store %472* %8, %472** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2IS3_vEEOT_(%748* noundef align 1 dereferenceable_or_null(1) %0, %745* noundef align 1 dereferenceable(1) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %748*, align 8 %4 = alloca %745*, align 8 store %748* %0, %748** %3, align 8 store %745* %1, %745** %4, align 8 %5 = load %748*, %748** %3, align 8 %6 = bitcast %748* %5 to %745* %7 = load %745*, %745** %4, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEEC2Ev(%721* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %721*, align 8 store %721* %0, %721** %2, align 8 %3 = load %721*, %721** %2, align 8 %4 = getelementptr inbounds %721, %721* %3, i32 0, i32 0 %5 = getelementptr inbounds %721, %721* %3, i32 0, i32 1 call void @_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEEC2Ev(%722* noundef align 8 dereferenceable_or_null(8) %5) %6 = getelementptr inbounds %721, %721* %3, i32 0, i32 2 %7 = call noundef %91* @_ZNSt4__Cr10__function8__policy14__create_emptyEv() store %91* %7, %91** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEEC2Ev(%722* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %722*, align 8 store %722* %0, %722** %2, align 8 %3 = load %722*, %722** %2, align 8 %4 = getelementptr inbounds %722, %722* %3, i32 0, i32 0 store void (%425*, %472*, i32)* @_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEE12__call_emptyEPKNS0_16__policy_storageES3_j, void (%425*, %472*, i32)** %4, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %91* @_ZNSt4__Cr10__function8__policy14__create_emptyEv() #3 comdat align 2 { ret %91* @_ZZNSt4__Cr10__function8__policy14__create_emptyEvE9__policy_ } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10__function16__policy_invokerIFvP4GrOpjEE12__call_emptyEPKNS0_16__policy_storageES3_j(%425* noundef %0, %472* noundef %1, i32 noundef %2) #3 comdat align 2 { %4 = alloca %425*, align 8 %5 = alloca %472*, align 8 %6 = alloca i32, align 4 store %425* %0, %425** %4, align 8 store %472* %1, %472** %5, align 8 store i32 %2, i32* %6, align 4 call void @_ZNSt4__Cr25__throw_bad_function_callEv() #23 unreachable } ; Function Attrs: inlinehint mustprogress noreturn nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr25__throw_bad_function_callEv() #16 comdat { call void @abort() #22 unreachable } ; Function Attrs: noreturn nounwind null_pointer_is_valid declare void @abort() #17 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10__function13__policy_funcIFvP4GrOpjEED2Ev(%721* noundef align 8 dereferenceable_or_null(32) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %721*, align 8 store %721* %0, %721** %2, align 8 %3 = load %721*, %721** %2, align 8 %4 = getelementptr inbounds %721, %721* %3, i32 0, i32 2 %5 = load %91*, %91** %4, align 8 %6 = getelementptr inbounds %91, %91* %5, i32 0, i32 1 %7 = load void (i8*)*, void (i8*)** %6, align 8 %8 = icmp ne void (i8*)* %7, null br i1 %8, label %9, label %17 9: ; preds = %1 %10 = getelementptr inbounds %721, %721* %3, i32 0, i32 2 %11 = load %91*, %91** %10, align 8 %12 = getelementptr inbounds %91, %91* %11, i32 0, i32 1 %13 = load void (i8*)*, void (i8*)** %12, align 8 %14 = getelementptr inbounds %721, %721* %3, i32 0, i32 0 %15 = bitcast %425* %14 to i8** %16 = load i8*, i8** %15, align 8 call void %13(i8* noundef %16) br label %17 17: ; preds = %9, %1 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEED2Ev(%717* noundef align 8 dereferenceable_or_null(16) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %717*, align 8 store %717* %0, %717** %2, align 8 %3 = load %717*, %717** %2, align 8 %4 = bitcast %717* %3 to i8* %5 = getelementptr inbounds i8, i8* %4, i64 8 %6 = bitcast i8* %5 to %719* call void @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EED2Ev(%719* noundef align 8 dereferenceable_or_null(8) %6) #21 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EED2Ev(%719* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %719*, align 8 store %719* %0, %719** %2, align 8 %3 = load %719*, %719** %2, align 8 %4 = getelementptr inbounds %719, %719* %3, i32 0, i32 0 call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEED2Ev(%469* noundef align 8 dereferenceable_or_null(8) %4) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEED2Ev(%469* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %469*, align 8 store %469* %0, %469** %2, align 8 %3 = load %469*, %469** %2, align 8 call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE5resetEPS1_(%469* noundef align 8 dereferenceable_or_null(8) %3, %472* noundef null) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEE5resetEPS1_(%469* noundef align 8 dereferenceable_or_null(8) %0, %472* noundef %1) #3 comdat align 2 { %3 = alloca %469*, align 8 %4 = alloca %472*, align 8 %5 = alloca %472*, align 8 store %469* %0, %469** %3, align 8 store %472* %1, %472** %4, align 8 %6 = load %469*, %469** %3, align 8 %7 = bitcast %472** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %472* inttoptr (i64 -6148914691236517206 to %472*), %472** %5, align 8, !annotation !6 %8 = getelementptr inbounds %469, %469* %6, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %8) #21 %10 = load %472*, %472** %9, align 8 store %472* %10, %472** %5, align 8 %11 = load %472*, %472** %4, align 8 %12 = getelementptr inbounds %469, %469* %6, i32 0, i32 0 %13 = call noundef align 8 dereferenceable(8) %472** @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE5firstEv(%470* noundef align 8 dereferenceable_or_null(8) %12) #21 store %472* %11, %472** %13, align 8 %14 = load %472*, %472** %5, align 8 %15 = icmp ne %472* %14, null br i1 %15, label %16, label %20 16: ; preds = %2 %17 = getelementptr inbounds %469, %469* %6, i32 0, i32 0 %18 = call noundef align 1 dereferenceable(1) %745* @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEE6secondEv(%470* noundef align 8 dereferenceable_or_null(8) %17) #21 %19 = load %472*, %472** %5, align 8 call void @_ZNKSt4__Cr14default_deleteI4GrOpEclEPS1_(%745* noundef align 1 dereferenceable_or_null(1) %18, %472* noundef %19) #21 br label %20 20: ; preds = %16, %2 %21 = bitcast %472** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %21) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNKSt4__Cr14default_deleteI4GrOpEclEPS1_(%745* noundef align 1 dereferenceable_or_null(1) %0, %472* noundef %1) #3 comdat align 2 { %3 = alloca %745*, align 8 %4 = alloca %472*, align 8 store %745* %0, %745** %3, align 8 store %472* %1, %472** %4, align 8 %5 = load %745*, %745** %3, align 8 %6 = load %472*, %472** %4, align 8 %7 = icmp eq %472* %6, null br i1 %7, label %13, label %8 8: ; preds = %2 %9 = bitcast %472* %6 to void (%472*)*** %10 = load void (%472*)**, void (%472*)*** %9, align 8 %11 = getelementptr inbounds void (%472*)*, void (%472*)** %10, i64 1 %12 = load void (%472*)*, void (%472*)** %11, align 8 call void %12(%472* noundef align 8 dereferenceable_or_null(48) %6) #21 br label %13 13: ; preds = %8, %2 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK6sktext3gpu11GlyphVector13unflattenSizeEv(%551* noundef align 8 dereferenceable_or_null(104) %0) #3 comdat align 2 { %2 = alloca %551*, align 8 store %551* %0, %551** %2, align 8 %3 = load %551*, %551** %2, align 8 %4 = getelementptr inbounds %551, %551* %3, i32 0, i32 1 %5 = call noundef i64 @_ZNK6SkSpanIN6sktext3gpu11GlyphVector7VariantEE4sizeEv(%552* noundef align 8 dereferenceable_or_null(16) %4) %6 = call noundef i64 @_ZN6sktext3gpu11GlyphVector15GlyphVectorSizeEm(i64 noundef %5) %7 = trunc i64 %6 to i32 ret i32 %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @136(%547* noundef align 8 dereferenceable_or_null(48) %0) #3 align 2 { %2 = alloca %547*, align 8 store %547* %0, %547** %2, align 8 %3 = load %547*, %547** %2, align 8 %4 = getelementptr inbounds %547, %547* %3, i32 0, i32 4 %5 = call noundef i64 @137(%548* noundef align 8 dereferenceable_or_null(16) %4) %6 = trunc i64 %5 to i32 ret i32 %6 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i64 @_ZNK6SkSpanIN6sktext3gpu11GlyphVector7VariantEE4sizeEv(%552* noundef align 8 dereferenceable_or_null(16) %0) #3 comdat align 2 { %2 = alloca %552*, align 8 store %552* %0, %552** %2, align 8 %3 = load %552*, %552** %2, align 8 %4 = getelementptr inbounds %552, %552* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @137(%548* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = getelementptr inbounds %548, %548* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 %6 = mul i64 %5, 16 ret i64 %6 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK17GrSDFTMatrixRange13matrixInRangeERK8SkMatrix(%546* noundef align 4 dereferenceable_or_null(8), %2* noundef align 4 dereferenceable(40)) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZNK17GrSDFTMatrixRange7flattenER13SkWriteBuffer(%546* noundef align 4 dereferenceable_or_null(8), %601* noundef align 8 dereferenceable(56)) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @138(%547* noundef align 8 dereferenceable_or_null(48) %0, %601* noundef align 8 dereferenceable(56) %1) #3 align 2 { %3 = alloca %547*, align 8 %4 = alloca %601*, align 8 %5 = alloca %548*, align 8 %6 = alloca %549*, align 8 %7 = alloca %549*, align 8 %8 = alloca %549, align 4 store %547* %0, %547** %3, align 8 store %601* %1, %601** %4, align 8 %9 = load %547*, %547** %3, align 8 %10 = load %601*, %601** %4, align 8 %11 = getelementptr inbounds %547, %547* %9, i32 0, i32 0 %12 = load i32, i32* %11, align 8 %13 = bitcast %601* %10 to void (%601*, i32)*** %14 = load void (%601*, i32)**, void (%601*, i32)*** %13, align 8 %15 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %14, i64 7 %16 = load void (%601*, i32)*, void (%601*, i32)** %15, align 8 call void %16(%601* noundef align 8 dereferenceable_or_null(56) %10, i32 noundef %12) %17 = load %601*, %601** %4, align 8 %18 = getelementptr inbounds %547, %547* %9, i32 0, i32 1 %19 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %18) %20 = fadd float %19, 5.000000e-01 %21 = call float @llvm.floor.f32(float %20) %22 = call noundef i32 @139(float noundef %21) %23 = bitcast %601* %17 to void (%601*, i32)*** %24 = load void (%601*, i32)**, void (%601*, i32)*** %23, align 8 %25 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %24, i64 7 %26 = load void (%601*, i32)*, void (%601*, i32)** %25, align 8 call void %26(%601* noundef align 8 dereferenceable_or_null(56) %17, i32 noundef %22) %27 = load %601*, %601** %4, align 8 %28 = getelementptr inbounds %547, %547* %9, i32 0, i32 2 %29 = load float, float* %28, align 4 %30 = bitcast %601* %27 to void (%601*, float)*** %31 = load void (%601*, float)**, void (%601*, float)*** %30, align 8 %32 = getelementptr inbounds void (%601*, float)*, void (%601*, float)** %31, i64 5 %33 = load void (%601*, float)*, void (%601*, float)** %32, align 8 call void %33(%601* noundef align 8 dereferenceable_or_null(56) %27, float noundef %29) %34 = load %601*, %601** %4, align 8 %35 = getelementptr inbounds %547, %547* %9, i32 0, i32 3 %36 = bitcast %601* %34 to void (%601*, %44*)*** %37 = load void (%601*, %44*)**, void (%601*, %44*)*** %36, align 8 %38 = getelementptr inbounds void (%601*, %44*)*, void (%601*, %44*)** %37, i64 22 %39 = load void (%601*, %44*)*, void (%601*, %44*)** %38, align 8 call void %39(%601* noundef align 8 dereferenceable_or_null(56) %34, %44* noundef align 4 dereferenceable(16) %35) %40 = load %601*, %601** %4, align 8 %41 = getelementptr inbounds %547, %547* %9, i32 0, i32 4 %42 = call noundef i32 @140(%548* noundef align 8 dereferenceable(16) %41) %43 = bitcast %601* %40 to void (%601*, i32)*** %44 = load void (%601*, i32)**, void (%601*, i32)*** %43, align 8 %45 = getelementptr inbounds void (%601*, i32)*, void (%601*, i32)** %44, i64 7 %46 = load void (%601*, i32)*, void (%601*, i32)** %45, align 8 call void %46(%601* noundef align 8 dereferenceable_or_null(56) %40, i32 noundef %42) %47 = bitcast %548** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %47) #21 store %548* inttoptr (i64 -6148914691236517206 to %548*), %548** %5, align 8, !annotation !6 %48 = getelementptr inbounds %547, %547* %9, i32 0, i32 4 store %548* %48, %548** %5, align 8 %49 = bitcast %549** %6 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %49) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %6, align 8, !annotation !6 %50 = load %548*, %548** %5, align 8 %51 = call noundef %549* @141(%548* noundef align 8 dereferenceable_or_null(16) %50) store %549* %51, %549** %6, align 8 %52 = bitcast %549** %7 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %52) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %7, align 8, !annotation !6 %53 = load %548*, %548** %5, align 8 %54 = call noundef %549* @142(%548* noundef align 8 dereferenceable_or_null(16) %53) store %549* %54, %549** %7, align 8 br label %55 55: ; preds = %78, %2 %56 = load %549*, %549** %6, align 8 %57 = load %549*, %549** %7, align 8 %58 = icmp ne %549* %56, %57 br i1 %58, label %63, label %59 59: ; preds = %55 %60 = bitcast %549** %7 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %60) #21 %61 = bitcast %549** %6 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %61) #21 %62 = bitcast %548** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %62) #21 br label %81 63: ; preds = %55 %64 = bitcast %549* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %64) #21 %65 = getelementptr inbounds %549, %549* %8, i32 0, i32 0 %66 = getelementptr inbounds %5, %5* %65, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %66, align 4, !annotation !6 %67 = getelementptr inbounds %5, %5* %65, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %67, align 4, !annotation !6 %68 = getelementptr inbounds %549, %549* %8, i32 0, i32 1 %69 = getelementptr inbounds %550, %550* %68, i32 0, i32 0 store i16 -21846, i16* %69, align 4, !annotation !6 %70 = getelementptr inbounds %550, %550* %68, i32 0, i32 1 store i16 -21846, i16* %70, align 2, !annotation !6 %71 = getelementptr inbounds %550, %550* %68, i32 0, i32 2 store i16 -21846, i16* %71, align 4, !annotation !6 %72 = getelementptr inbounds %550, %550* %68, i32 0, i32 3 store i16 -21846, i16* %72, align 2, !annotation !6 %73 = load %549*, %549** %6, align 8 %74 = bitcast %549* %8 to i8* %75 = bitcast %549* %73 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %74, i8* align 4 %75, i64 16, i1 false) %76 = load %601*, %601** %4, align 8 call void @143(%601* noundef align 8 dereferenceable(56) %76, %549* noundef align 4 dereferenceable(16) %8) %77 = bitcast %549* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %77) #21 br label %78 78: ; preds = %63 %79 = load %549*, %549** %6, align 8 %80 = getelementptr inbounds %549, %549* %79, i32 1 store %549* %80, %549** %6, align 8 br label %55 81: ; preds = %59 ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN6sktext3gpu11GlyphVector7flattenER13SkWriteBuffer(%551* noundef align 8 dereferenceable_or_null(104), %601* noundef align 8 dereferenceable(56)) #8 ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @139(float noundef %0) #7 { %2 = alloca float, align 4 store float %0, float* %2, align 4 %3 = load float, float* %2, align 4 %4 = fcmp olt float %3, 0x41DFFFFFE0000000 br i1 %4, label %5, label %7 5: ; preds = %1 %6 = load float, float* %2, align 4 br label %8 7: ; preds = %1 br label %8 8: ; preds = %7, %5 %9 = phi float [ %6, %5 ], [ 0x41DFFFFFE0000000, %7 ] store float %9, float* %2, align 4 %10 = load float, float* %2, align 4 %11 = fcmp ogt float %10, 0xC1DFFFFFE0000000 br i1 %11, label %12, label %14 12: ; preds = %8 %13 = load float, float* %2, align 4 br label %15 14: ; preds = %8 br label %15 15: ; preds = %14, %12 %16 = phi float [ %13, %12 ], [ 0xC1DFFFFFE0000000, %14 ] store float %16, float* %2, align 4 %17 = load float, float* %2, align 4 %18 = fptosi float %17 to i32 ret i32 %18 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i32 @140(%548* noundef align 8 dereferenceable(16) %0) #3 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = call noundef i64 @144(%548* noundef align 8 dereferenceable(16) %3) %5 = call noundef i32 @_Z4SkToIimET_T0_(i64 noundef %4) ret i32 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %549* @141(%548* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = getelementptr inbounds %548, %548* %3, i32 0, i32 0 %5 = load %549*, %549** %4, align 8 ret %549* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %549* @142(%548* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = getelementptr inbounds %548, %548* %3, i32 0, i32 0 %5 = load %549*, %549** %4, align 8 %6 = getelementptr inbounds %548, %548* %3, i32 0, i32 1 %7 = load i64, i64* %6, align 8 %8 = getelementptr inbounds %549, %549* %5, i64 %7 ret %549* %8 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @143(%601* noundef align 8 dereferenceable(56) %0, %549* noundef align 4 dereferenceable(16) %1) #3 { %3 = alloca %601*, align 8 %4 = alloca %549*, align 8 store %601* %0, %601** %3, align 8 store %549* %1, %549** %4, align 8 %5 = load %601*, %601** %3, align 8 %6 = load %549*, %549** %4, align 8 %7 = bitcast %549* %6 to i8* %8 = bitcast %601* %5 to void (%601*, i8*, i64)*** %9 = load void (%601*, i8*, i64)**, void (%601*, i8*, i64)*** %8, align 8 %10 = getelementptr inbounds void (%601*, i8*, i64)*, void (%601*, i8*, i64)** %9, i64 2 %11 = load void (%601*, i8*, i64)*, void (%601*, i8*, i64)** %10, align 8 call void %11(%601* noundef align 8 dereferenceable_or_null(56) %5, i8* noundef %7, i64 noundef 16) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @144(%548* noundef align 8 dereferenceable(16) %0) #3 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = call noundef i64 @145(%548* noundef align 8 dereferenceable_or_null(16) %3) ret i64 %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef i64 @145(%548* noundef align 8 dereferenceable_or_null(16) %0) #3 align 2 { %2 = alloca %548*, align 8 store %548* %0, %548** %2, align 8 %3 = load %548*, %548** %2, align 8 %4 = getelementptr inbounds %548, %548* %3, i32 0, i32 1 %5 = load i64, i64* %4, align 8 ret i64 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(40) %2* @_ZNK16SkMatrixProvider13localToDeviceEv(%13* noundef align 4 dereferenceable_or_null(105) %0) #3 comdat align 2 { %2 = alloca %13*, align 8 store %13* %0, %13** %2, align 8 %3 = load %13*, %13** %2, align 8 %4 = getelementptr inbounds %13, %13* %3, i32 0, i32 1 ret %2* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrPaintC2Ev(%723* noundef align 8 dereferenceable_or_null(44) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %723*, align 8 store %723* %0, %723** %2, align 8 %3 = load %723*, %723** %2, align 8 %4 = getelementptr inbounds %723, %723* %3, i32 0, i32 0 store %724* null, %724** %4, align 8 %5 = getelementptr inbounds %723, %723* %3, i32 0, i32 1 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEv(%483* noundef align 8 dereferenceable_or_null(8) %5) #21 %6 = getelementptr inbounds %723, %723* %3, i32 0, i32 2 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEv(%483* noundef align 8 dereferenceable_or_null(8) %6) #21 %7 = getelementptr inbounds %723, %723* %3, i32 0, i32 3 store i8 1, i8* %7, align 8 %8 = getelementptr inbounds %723, %723* %3, i32 0, i32 5 %9 = bitcast %93* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %9, i8* align 4 bitcast (%93* @17 to i8*), i64 16, i1 false) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { <2 x float>, <2 x float> } @146(%298* noundef %0, %73* noundef align 8 dereferenceable(76) %1, %13* noundef align 4 dereferenceable(105) %2, i32 noundef %3, %723* noundef %4) #3 { %6 = alloca %93, align 4 %7 = alloca %298*, align 8 %8 = alloca %73*, align 8 %9 = alloca %13*, align 8 %10 = alloca i32, align 4 %11 = alloca %723*, align 8 %12 = alloca %299*, align 8 %13 = alloca %226*, align 8 %14 = alloca %483, align 8 %15 = alloca float, align 4 %16 = alloca i32, align 4 store %298* %0, %298** %7, align 8 store %73* %1, %73** %8, align 8 store %13* %2, %13** %9, align 8 store i32 %3, i32* %10, align 4 store %723* %4, %723** %11, align 8 %17 = bitcast %299** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %17) #21 store %299* inttoptr (i64 -6148914691236517206 to %299*), %299** %12, align 8, !annotation !6 %18 = load %298*, %298** %7, align 8 %19 = call noundef %299* @_ZNK5skgpu14SurfaceContext16recordingContextEv(%298* noundef align 8 dereferenceable_or_null(56) %18) store %299* %19, %299** %12, align 8 %20 = bitcast %226** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %20) #21 store %226* inttoptr (i64 -6148914691236517206 to %226*), %226** %13, align 8, !annotation !6 %21 = load %298*, %298** %7, align 8 %22 = call noundef align 8 dereferenceable(24) %226* @_ZNK5skgpu14SurfaceContext9colorInfoEv(%298* noundef align 8 dereferenceable_or_null(56) %21) store %226* %22, %226** %13, align 8 %23 = load i32, i32* %10, align 4 %24 = icmp eq i32 %23, 2 br i1 %24, label %25, label %50 25: ; preds = %5 %26 = load %299*, %299** %12, align 8 %27 = load %226*, %226** %13, align 8 %28 = load %73*, %73** %8, align 8 %29 = load %13*, %13** %9, align 8 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEDn(%483* noundef align 8 dereferenceable_or_null(8) %14, i8* null) #21 %30 = load %723*, %723** %11, align 8 %31 = getelementptr inbounds %483, %483* %14, i32 0, i32 0 %32 = getelementptr inbounds %484, %484* %31, i32 0, i32 0 %33 = getelementptr inbounds %485, %485* %32, i32 0, i32 0 %34 = load %486*, %486** %33, align 8 %35 = call noundef zeroext i1 @_Z29SkPaintToGrPaintReplaceShaderP18GrRecordingContextRK11GrColorInfoRK7SkPaintRK16SkMatrixProviderNSt4__Cr10unique_ptrI19GrFragmentProcessorNSA_14default_deleteISC_EEEEP7GrPaint(%299* noundef %26, %226* noundef align 8 dereferenceable(24) %27, %73* noundef align 8 dereferenceable(76) %28, %13* noundef align 4 dereferenceable(105) %29, %486* %34, %723* noundef %30) %36 = bitcast float* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %36) #21 store float 0xFFFFFFFFE0000000, float* %15, align 4, !annotation !6 %37 = load %723*, %723** %11, align 8 %38 = call noundef align 4 dereferenceable(16) %93* @_ZNK7GrPaint10getColor4fEv(%723* noundef align 8 dereferenceable_or_null(44) %37) %39 = getelementptr inbounds %93, %93* %38, i32 0, i32 3 %40 = load float, float* %39, align 4 store float %40, float* %15, align 4 %41 = getelementptr inbounds %93, %93* %6, i32 0, i32 0 %42 = load float, float* %15, align 4 store float %42, float* %41, align 4 %43 = getelementptr inbounds %93, %93* %6, i32 0, i32 1 %44 = load float, float* %15, align 4 store float %44, float* %43, align 4 %45 = getelementptr inbounds %93, %93* %6, i32 0, i32 2 %46 = load float, float* %15, align 4 store float %46, float* %45, align 4 %47 = getelementptr inbounds %93, %93* %6, i32 0, i32 3 %48 = load float, float* %15, align 4 store float %48, float* %47, align 4 store i32 1, i32* %16, align 4 %49 = bitcast float* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %49) #21 br label %61 50: ; preds = %5 %51 = load %299*, %299** %12, align 8 %52 = load %226*, %226** %13, align 8 %53 = load %73*, %73** %8, align 8 %54 = load %13*, %13** %9, align 8 %55 = load %723*, %723** %11, align 8 %56 = call noundef zeroext i1 @_Z16SkPaintToGrPaintP18GrRecordingContextRK11GrColorInfoRK7SkPaintRK16SkMatrixProviderP7GrPaint(%299* noundef %51, %226* noundef align 8 dereferenceable(24) %52, %73* noundef align 8 dereferenceable(76) %53, %13* noundef align 4 dereferenceable(105) %54, %723* noundef %55) %57 = load %723*, %723** %11, align 8 %58 = call noundef align 4 dereferenceable(16) %93* @_ZNK7GrPaint10getColor4fEv(%723* noundef align 8 dereferenceable_or_null(44) %57) %59 = bitcast %93* %6 to i8* %60 = bitcast %93* %58 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %59, i8* align 4 %60, i64 16, i1 false) store i32 1, i32* %16, align 4 br label %61 61: ; preds = %50, %25 %62 = bitcast %226** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %62) #21 %63 = bitcast %299** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %63) #21 %64 = bitcast %93* %6 to { <2 x float>, <2 x float> }* %65 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %64, align 4 ret { <2 x float>, <2 x float> } %65 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { i64, i8 } @147(%295* noundef align 8 dereferenceable(312) %0, %2* noundef align 4 dereferenceable(40) %1, i1 noundef zeroext %2, i1 noundef zeroext %3) #3 { %5 = alloca %725, align 4 %6 = alloca %295*, align 8 %7 = alloca %2*, align 8 %8 = alloca i8, align 1 %9 = alloca i8, align 1 %10 = alloca %226*, align 8 %11 = alloca %225*, align 8 %12 = alloca i8, align 1 %13 = alloca i8, align 1 %14 = alloca i32, align 4 %15 = alloca i8, align 1 %16 = alloca i32, align 4 %17 = alloca { i64, i8 }, align 8 store %295* %0, %295** %6, align 8 store %2* %1, %2** %7, align 8 %18 = zext i1 %2 to i8 store i8 %18, i8* %8, align 1 %19 = zext i1 %3 to i8 store i8 %19, i8* %9, align 1 %20 = bitcast %226** %10 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %20) #21 store %226* inttoptr (i64 -6148914691236517206 to %226*), %226** %10, align 8, !annotation !6 %21 = load %295*, %295** %6, align 8 %22 = bitcast %295* %21 to %298* %23 = call noundef align 8 dereferenceable(24) %226* @_ZNK5skgpu14SurfaceContext9colorInfoEv(%298* noundef align 8 dereferenceable_or_null(56) %22) store %226* %23, %226** %10, align 8 %24 = bitcast %225** %11 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %24) #21 store %225* inttoptr (i64 -6148914691236517206 to %225*), %225** %11, align 8, !annotation !6 %25 = load %295*, %295** %6, align 8 %26 = call noundef align 4 dereferenceable(8) %225* @_ZNK5skgpu2v118SurfaceDrawContext12surfacePropsEv(%295* noundef align 8 dereferenceable_or_null(312) %25) store %225* %26, %225** %11, align 8 call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #21 store i8 -86, i8* %12, align 1, !annotation !6 %27 = load %225*, %225** %11, align 8 %28 = call noundef i32 @_ZNK14SkSurfaceProps13pixelGeometryEv(%225* noundef align 4 dereferenceable_or_null(8) %27) %29 = call noundef zeroext i1 @149(i32 noundef %28) %30 = zext i1 %29 to i8 store i8 %30, i8* %12, align 1 call void @llvm.lifetime.start.p0i8(i64 1, i8* %13) #21 store i8 -86, i8* %13, align 1, !annotation !6 %31 = load i8, i8* %8, align 1, !range !7 %32 = trunc i8 %31 to i1 br i1 %32, label %33, label %37 33: ; preds = %4 %34 = load %225*, %225** %11, align 8 %35 = call noundef i32 @_ZNK14SkSurfaceProps13pixelGeometryEv(%225* noundef align 4 dereferenceable_or_null(8) %34) %36 = call noundef zeroext i1 @150(i32 noundef %35) br label %37 37: ; preds = %33, %4 %38 = phi i1 [ false, %4 ], [ %36, %33 ] %39 = zext i1 %38 to i8 store i8 %39, i8* %13, align 1 %40 = bitcast i32* %14 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %40) #21 store i32 -1431655766, i32* %14, align 4, !annotation !6 %41 = load i8, i8* %9, align 1, !range !7 %42 = trunc i8 %41 to i1 br i1 %42, label %44, label %43 43: ; preds = %37 br label %55 44: ; preds = %37 %45 = load i8, i8* %13, align 1, !range !7 %46 = trunc i8 %45 to i1 br i1 %46, label %47, label %52 47: ; preds = %44 %48 = load i8, i8* %12, align 1, !range !7 %49 = trunc i8 %48 to i1 %50 = zext i1 %49 to i64 %51 = select i1 %49, i32 6, i32 5 br label %53 52: ; preds = %44 br label %53 53: ; preds = %52, %47 %54 = phi i32 [ %51, %47 ], [ 4, %52 ] br label %55 55: ; preds = %53, %43 %56 = phi i32 [ 3, %43 ], [ %54, %53 ] store i32 %56, i32* %14, align 4 call void @llvm.lifetime.start.p0i8(i64 1, i8* %15) #21 store i8 -86, i8* %15, align 1, !annotation !6 %57 = load %226*, %226** %10, align 8 %58 = call noundef zeroext i1 @_ZNK11GrColorInfo17isLinearlyBlendedEv(%226* noundef align 8 dereferenceable_or_null(24) %57) %59 = zext i1 %58 to i8 store i8 %59, i8* %15, align 1 %60 = bitcast i32* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 4, i8* %60) #21 store i32 -1431655766, i32* %16, align 4, !annotation !6 %61 = load %2*, %2** %7, align 8 %62 = call noundef zeroext i1 @_ZNK8SkMatrix12isSimilarityEf(%2* noundef align 4 dereferenceable_or_null(40) %61, float noundef 0x3F30000000000000) %63 = zext i1 %62 to i64 %64 = select i1 %62, i32 1, i32 0 store i32 %64, i32* %16, align 4 %65 = load %2*, %2** %7, align 8 %66 = call noundef zeroext i1 @_ZNK8SkMatrix16isScaleTranslateEv(%2* noundef align 4 dereferenceable_or_null(40) %65) %67 = zext i1 %66 to i64 %68 = select i1 %66, i32 2, i32 0 %69 = load i32, i32* %16, align 4 %70 = or i32 %69, %68 store i32 %70, i32* %16, align 4 %71 = load i8, i8* %15, align 1, !range !7 %72 = trunc i8 %71 to i1 %73 = zext i1 %72 to i64 %74 = select i1 %72, i32 64, i32 0 %75 = load i32, i32* %16, align 4 %76 = or i32 %75, %74 store i32 %76, i32* %16, align 4 %77 = load i32, i32* %14, align 4 %78 = icmp eq i32 3, %77 %79 = zext i1 %78 to i64 %80 = select i1 %78, i32 128, i32 0 %81 = load i32, i32* %16, align 4 %82 = or i32 %81, %80 store i32 %82, i32* %16, align 4 %83 = load i8, i8* %13, align 1, !range !7 %84 = trunc i8 %83 to i1 br i1 %84, label %85, label %94 85: ; preds = %55 %86 = load i32, i32* %16, align 4 %87 = or i32 %86, 8 store i32 %87, i32* %16, align 4 %88 = load i32, i32* %14, align 4 %89 = icmp eq i32 6, %88 %90 = zext i1 %89 to i64 %91 = select i1 %89, i32 16, i32 0 %92 = load i32, i32* %16, align 4 %93 = or i32 %92, %91 store i32 %93, i32* %16, align 4 br label %94 94: ; preds = %85, %55 call void @_ZNSt4__Cr5tupleIJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJRS4_RjRbELi0EEEDpOT_(%725* noundef align 4 dereferenceable_or_null(12) %5, i32* noundef align 4 dereferenceable(4) %14, i32* noundef align 4 dereferenceable(4) %16, i8* noundef align 1 dereferenceable(1) %15) #21 %95 = bitcast i32* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %95) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %15) #21 %96 = bitcast i32* %14 to i8* call void @llvm.lifetime.end.p0i8(i64 4, i8* %96) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %13) #21 call void @llvm.lifetime.end.p0i8(i64 1, i8* %12) #21 %97 = bitcast %225** %11 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %97) #21 %98 = bitcast %226** %10 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %98) #21 %99 = getelementptr inbounds %725, %725* %5, i32 0, i32 0 %100 = bitcast { i64, i8 }* %17 to i8* %101 = bitcast %726* %99 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %100, i8* align 4 %101, i64 12, i1 false) %102 = load { i64, i8 }, { i64, i8 }* %17, align 8 ret { i64, i8 } %102 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm0EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %0) #7 comdat { %2 = alloca %725*, align 8 store %725* %0, %725** %2, align 8 %3 = load %725*, %725** %2, align 8 %4 = getelementptr inbounds %725, %725* %3, i32 0, i32 0 %5 = bitcast %726* %4 to %727* %6 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EE3getEv(%727* noundef align 4 dereferenceable_or_null(4) %5) #21 ret i32* %6 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr3getILm1EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %0) #7 comdat { %2 = alloca %725*, align 8 store %725* %0, %725** %2, align 8 %3 = load %725*, %725** %2, align 8 %4 = getelementptr inbounds %725, %725* %3, i32 0, i32 0 %5 = bitcast %726* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 4 %7 = bitcast i8* %6 to %728* %8 = call noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm1EjLb0EE3getEv(%728* noundef align 4 dereferenceable_or_null(4) %7) #21 ret i32* %8 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr3getILm2EJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEEONS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeEOS9_(%725* noundef align 4 dereferenceable(12) %0) #7 comdat { %2 = alloca %725*, align 8 store %725* %0, %725** %2, align 8 %3 = load %725*, %725** %2, align 8 %4 = getelementptr inbounds %725, %725* %3, i32 0, i32 0 %5 = bitcast %726* %4 to i8* %6 = getelementptr inbounds i8, i8* %5, i64 8 %7 = bitcast i8* %6 to %729* %8 = call noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr12__tuple_leafILm2EbLb0EE3getEv(%729* noundef align 1 dereferenceable_or_null(1) %7) #21 ret i8* %8 } ; Function Attrs: null_pointer_is_valid declare noundef %730* @_ZN5skgpu2v111AtlasTextOp8Geometry11MakeForBlobERK13GrAtlasSubRunRK8SkMatrix7SkPoint7SkIRect5sk_spI8SkRefCntERK8SkRGBA4fIL11SkAlphaType2EEP12SkArenaAlloc(%528* noundef align 8 dereferenceable(8), %2* noundef align 4 dereferenceable(40), <2 x float>, i64, i64, %731* noundef, %93* noundef align 4 dereferenceable(16), %172* noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { i64, i64 } @_ZN7SkIRect9MakeEmptyEv() #3 comdat align 2 { %1 = alloca %290, align 4 %2 = getelementptr inbounds %290, %290* %1, i32 0, i32 0 store i32 0, i32* %2, align 4 %3 = getelementptr inbounds %290, %290* %1, i32 0, i32 1 store i32 0, i32* %3, align 4 %4 = getelementptr inbounds %290, %290* %1, i32 0, i32 2 store i32 0, i32* %4, align 4 %5 = getelementptr inbounds %290, %290* %1, i32 0, i32 3 store i32 0, i32* %5, align 4 %6 = bitcast %290* %1 to { i64, i64 }* %7 = load { i64, i64 }, { i64, i64 }* %6, align 4 ret { i64, i64 } %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_Z9sk_ref_spI20GrTextReferenceFrameE5sk_spIT_EPKS2_(%732* noalias sret(%732) align 8 %0, %19* noundef %1) #3 comdat { %3 = alloca i8*, align 8 %4 = alloca %19*, align 8 %5 = bitcast %732* %0 to i8* store i8* %5, i8** %3, align 8 store %19* %1, %19** %4, align 8 %6 = load %19*, %19** %4, align 8 %7 = call noundef %19* @151(%19* noundef %6) call void @_ZN5sk_spI20GrTextReferenceFrameEC2EPS0_(%732* noundef align 8 dereferenceable_or_null(8) %0, %19* noundef %7) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8SkRefCntEC2I20GrTextReferenceFramevEEOS_IT_E(%731* noundef align 8 dereferenceable_or_null(8) %0, %732* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %731*, align 8 %4 = alloca %732*, align 8 store %731* %0, %731** %3, align 8 store %732* %1, %732** %4, align 8 %5 = load %731*, %731** %3, align 8 %6 = getelementptr inbounds %731, %731* %5, i32 0, i32 0 %7 = load %732*, %732** %4, align 8 %8 = call noundef %19* @_ZN5sk_spI20GrTextReferenceFrameE7releaseEv(%732* noundef align 8 dereferenceable_or_null(8) %7) %9 = bitcast %19* %8 to %529* store %529* %9, %529** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %172* @_ZN5skgpu2v118SurfaceFillContext10arenaAllocEv(%733* noundef align 8 dereferenceable_or_null(81) %0) #3 comdat align 2 { %2 = alloca %733*, align 8 %3 = alloca %492, align 8 store %733* %0, %733** %2, align 8 %4 = load %733*, %733** %2, align 8 %5 = bitcast %492* %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 call void @_ZN5skgpu2v118SurfaceFillContext6arenasEv(%492* sret(%492) align 8 %3, %733* noundef align 8 dereferenceable_or_null(81) %4) %6 = call noundef %493* @_ZNK5sk_spI8GrArenasEptEv(%492* noundef align 8 dereferenceable_or_null(8) %3) %7 = call noundef %172* @_ZN8GrArenas10arenaAllocEv(%493* noundef align 8 dereferenceable_or_null(56) %6) call void @_ZN5sk_spI8GrArenasED2Ev(%492* noundef align 8 dereferenceable_or_null(8) %3) #21 %8 = bitcast %492* %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %8) #21 ret %172* %7 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8SkRefCntED2Ev(%731* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %731*, align 8 store %731* %0, %731** %2, align 8 %3 = load %731*, %731** %2, align 8 %4 = getelementptr inbounds %731, %731* %3, i32 0, i32 0 %5 = load %529*, %529** %4, align 8 call void @154(%529* noundef %5) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI20GrTextReferenceFrameED2Ev(%732* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %732*, align 8 store %732* %0, %732** %2, align 8 %3 = load %732*, %732** %2, align 8 %4 = getelementptr inbounds %732, %732* %3, i32 0, i32 0 %5 = load %19*, %19** %4, align 8 call void @155(%19* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %299* @_ZNK5skgpu14SurfaceContext16recordingContextEv(%298* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %298*, align 8 store %298* %0, %298** %2, align 8 %3 = load %298*, %298** %2, align 8 %4 = getelementptr inbounds %298, %298* %3, i32 0, i32 1 %5 = load %299*, %299** %4, align 8 ret %299* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden %472* @_ZN4GrOp4MakeIN5skgpu2v111AtlasTextOpEJRNS3_8MaskTypeEbi6SkRectjRbRjRPNS3_8GeometryE7GrPaintEEENSt4__Cr10unique_ptrIS_NSD_14default_deleteIS_EEEEP18GrRecordingContextDpOT0_(%299* noundef %0, i32* noundef align 4 dereferenceable(4) %1, i8* noundef align 1 dereferenceable(1) %2, i32* noundef align 4 dereferenceable(4) %3, %44* noundef align 4 dereferenceable(16) %4, i32* noundef align 4 dereferenceable(4) %5, i8* noundef align 1 dereferenceable(1) %6, i32* noundef align 4 dereferenceable(4) %7, %730** noundef align 8 dereferenceable(8) %8, %723* noundef align 8 dereferenceable(44) %9) #5 comdat align 2 { %11 = alloca %469, align 8 %12 = alloca %299*, align 8 %13 = alloca i32*, align 8 %14 = alloca i8*, align 8 %15 = alloca i32*, align 8 %16 = alloca %44*, align 8 %17 = alloca i32*, align 8 %18 = alloca i8*, align 8 %19 = alloca i32*, align 8 %20 = alloca %730**, align 8 %21 = alloca %723*, align 8 %22 = alloca %44, align 4 store %299* %0, %299** %12, align 8 store i32* %1, i32** %13, align 8 store i8* %2, i8** %14, align 8 store i32* %3, i32** %15, align 8 store %44* %4, %44** %16, align 8 store i32* %5, i32** %17, align 8 store i8* %6, i8** %18, align 8 store i32* %7, i32** %19, align 8 store %730** %8, %730*** %20, align 8 store %723* %9, %723** %21, align 8 %23 = call noundef i8* @_ZN5skgpu2v111AtlasTextOpnwEm(i64 noundef 112) %24 = bitcast i8* %23 to %749* %25 = load i32*, i32** %13, align 8 %26 = load i32, i32* %25, align 4 %27 = load i8*, i8** %14, align 8 %28 = load i8, i8* %27, align 1, !range !7 %29 = trunc i8 %28 to i1 %30 = load i32*, i32** %15, align 8 %31 = load i32, i32* %30, align 4 %32 = load %44*, %44** %16, align 8 %33 = bitcast %44* %22 to i8* %34 = bitcast %44* %32 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %33, i8* align 4 %34, i64 16, i1 false) %35 = load i32*, i32** %17, align 8 %36 = load i32, i32* %35, align 4 %37 = load i8*, i8** %18, align 8 %38 = load i8, i8* %37, align 1, !range !7 %39 = trunc i8 %38 to i1 %40 = load i32*, i32** %19, align 8 %41 = load i32, i32* %40, align 4 %42 = load %730**, %730*** %20, align 8 %43 = load %730*, %730** %42, align 8 %44 = load %723*, %723** %21, align 8 %45 = bitcast %44* %22 to { <2 x float>, <2 x float> }* %46 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %45, i32 0, i32 0 %47 = load <2 x float>, <2 x float>* %46, align 4 %48 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %45, i32 0, i32 1 %49 = load <2 x float>, <2 x float>* %48, align 4 call void @_ZN5skgpu2v111AtlasTextOpC1ENS1_8MaskTypeEbi6SkRectjbjPNS1_8GeometryEO7GrPaint(%749* noundef align 8 dereferenceable_or_null(112) %24, i32 noundef %26, i1 noundef zeroext %29, i32 noundef %31, <2 x float> %47, <2 x float> %49, i32 noundef %36, i1 noundef zeroext %39, i32 noundef %41, %730* noundef %43, %723* noundef align 8 dereferenceable(44) %44) %50 = bitcast %749* %24 to %472* call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2ILb1EvEEPS1_(%469* noundef align 8 dereferenceable_or_null(8) %11, %472* noundef %50) #21 %51 = getelementptr inbounds %469, %469* %11, i32 0, i32 0 %52 = getelementptr inbounds %470, %470* %51, i32 0, i32 0 %53 = getelementptr inbounds %471, %471* %52, i32 0, i32 0 %54 = load %472*, %472** %53, align 8 ret %472* %54 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { <2 x float>, <2 x float> } @148(%576* noundef align 8 dereferenceable_or_null(200) %0, %2* noundef align 4 dereferenceable(40) %1, <2 x float> %2) #5 align 2 { %4 = alloca %44, align 4 %5 = alloca %5, align 4 %6 = alloca %576*, align 8 %7 = alloca %2*, align 8 %8 = alloca %5, align 4 %9 = bitcast %5* %5 to <2 x float>* store <2 x float> %2, <2 x float>* %9, align 4 store %576* %0, %576** %6, align 8 store %2* %1, %2** %7, align 8 %10 = load %576*, %576** %6, align 8 %11 = getelementptr inbounds %576, %576* %10, i32 0, i32 6 %12 = load %2*, %2** %7, align 8 %13 = bitcast %5* %8 to i8* %14 = bitcast %5* %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %13, i8* align 4 %14, i64 8, i1 false) %15 = bitcast %5* %8 to <2 x float>* %16 = load <2 x float>, <2 x float>* %15, align 4 %17 = call { <2 x float>, <2 x float> } @156(%547* noundef align 8 dereferenceable_or_null(48) %11, %2* noundef align 4 dereferenceable(40) %12, <2 x float> %16) %18 = bitcast %44* %4 to { <2 x float>, <2 x float> }* %19 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %18, i32 0, i32 0 %20 = extractvalue { <2 x float>, <2 x float> } %17, 0 store <2 x float> %20, <2 x float>* %19, align 4 %21 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %18, i32 0, i32 1 %22 = extractvalue { <2 x float>, <2 x float> } %17, 1 store <2 x float> %22, <2 x float>* %21, align 4 %23 = bitcast %44* %4 to { <2 x float>, <2 x float> }* %24 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %23, align 4 ret { <2 x float>, <2 x float> } %24 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS5_EEEEEEC2IJRS3_S8_ELi0EEEDpOT_(%716* noundef align 8 dereferenceable_or_null(16) %0, %294** noundef align 8 dereferenceable(8) %1, %469* noundef align 8 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %716*, align 8 %5 = alloca %294**, align 8 %6 = alloca %469*, align 8 %7 = alloca %234, align 1 %8 = alloca %754, align 1 %9 = alloca %236, align 1 %10 = alloca %237, align 1 store %716* %0, %716** %4, align 8 store %294** %1, %294*** %5, align 8 store %469* %2, %469** %6, align 8 %11 = load %716*, %716** %4, align 8 %12 = getelementptr inbounds %716, %716* %11, i32 0, i32 0 %13 = load %294**, %294*** %5, align 8 %14 = load %469*, %469** %6, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEEC2IJLm0ELm1EEJS5_SA_EJEJEJRS5_SA_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSF_IJDpT2_EEEDpOT3_(%717* noundef align 8 dereferenceable_or_null(16) %12, %294** noundef align 8 dereferenceable(8) %13, %469* noundef align 8 dereferenceable(8) %14) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN7GrPaintD2Ev(%723* noundef align 8 dereferenceable_or_null(44) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %723*, align 8 store %723* %0, %723** %2, align 8 %3 = load %723*, %723** %2, align 8 %4 = getelementptr inbounds %723, %723* %3, i32 0, i32 2 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEED2Ev(%483* noundef align 8 dereferenceable_or_null(8) %4) #21 %5 = getelementptr inbounds %723, %723* %3, i32 0, i32 1 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEED2Ev(%483* noundef align 8 dereferenceable_or_null(8) %5) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEv(%483* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %483*, align 8 %3 = alloca %486*, align 8 %4 = alloca %656, align 1 store %483* %0, %483** %2, align 8 %5 = load %483*, %483** %2, align 8 %6 = getelementptr inbounds %483, %483* %5, i32 0, i32 0 %7 = bitcast %486** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %486* null, %486** %3, align 8 %8 = bitcast %656* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 call void @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%484* noundef align 8 dereferenceable_or_null(8) %6, %486** noundef align 8 dereferenceable(8) %3, %656* noundef align 1 dereferenceable(1) %4) %9 = bitcast %656* %4 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 %10 = bitcast %486** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%484* noundef align 8 dereferenceable_or_null(8) %0, %486** noundef align 8 dereferenceable(8) %1, %656* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %484*, align 8 %5 = alloca %486**, align 8 %6 = alloca %656*, align 8 %7 = alloca %656, align 1 store %484* %0, %484** %4, align 8 store %486** %1, %486*** %5, align 8 store %656* %2, %656** %6, align 8 %8 = load %484*, %484** %4, align 8 %9 = bitcast %484* %8 to %485* %10 = load %486**, %486*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EEC2IS2_vEEOT_(%485* noundef align 8 dereferenceable_or_null(8) %9, %486** noundef align 8 dereferenceable(8) %10) %11 = bitcast %484* %8 to %755* %12 = load %656*, %656** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EEC2ENS_18__default_init_tagE(%755* noundef align 1 dereferenceable_or_null(1) %11) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EEC2IS2_vEEOT_(%485* noundef align 8 dereferenceable_or_null(8) %0, %486** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %485*, align 8 %4 = alloca %486**, align 8 store %485* %0, %485** %3, align 8 store %486** %1, %486*** %4, align 8 %5 = load %485*, %485** %3, align 8 %6 = getelementptr inbounds %485, %485* %5, i32 0, i32 0 %7 = load %486**, %486*** %4, align 8 %8 = load %486*, %486** %7, align 8 store %486* %8, %486** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EEC2ENS_18__default_init_tagE(%755* noundef align 1 dereferenceable_or_null(1) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %656, align 1 %3 = alloca %755*, align 8 store %755* %0, %755** %3, align 8 %4 = load %755*, %755** %3, align 8 %5 = bitcast %755* %4 to %756* ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(24) %226* @_ZNK5skgpu14SurfaceContext9colorInfoEv(%298* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %298*, align 8 store %298* %0, %298** %2, align 8 %3 = load %298*, %298** %2, align 8 %4 = getelementptr inbounds %298, %298* %3, i32 0, i32 3 ret %226* %4 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_Z29SkPaintToGrPaintReplaceShaderP18GrRecordingContextRK11GrColorInfoRK7SkPaintRK16SkMatrixProviderNSt4__Cr10unique_ptrI19GrFragmentProcessorNSA_14default_deleteISC_EEEEP7GrPaint(%299* noundef, %226* noundef align 8 dereferenceable(24), %73* noundef align 8 dereferenceable(76), %13* noundef align 4 dereferenceable(105), %486*, %723* noundef) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEEC2ILb1EvEEDn(%483* noundef align 8 dereferenceable_or_null(8) %0, i8* %1) unnamed_addr #0 comdat align 2 { %3 = alloca %483*, align 8 %4 = alloca i8*, align 8 %5 = alloca %486*, align 8 %6 = alloca %656, align 1 store %483* %0, %483** %3, align 8 store i8* %1, i8** %4, align 8 %7 = load %483*, %483** %3, align 8 %8 = getelementptr inbounds %483, %483* %7, i32 0, i32 0 %9 = bitcast %486** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %9) #21 store %486* null, %486** %5, align 8 %10 = bitcast %656* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %10) #21 call void @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEEC2IS2_NS_18__default_init_tagEEEOT_OT0_(%484* noundef align 8 dereferenceable_or_null(8) %8, %486** noundef align 8 dereferenceable(8) %5, %656* noundef align 1 dereferenceable(1) %6) %11 = bitcast %656* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %11) #21 %12 = bitcast %486** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %12) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(16) %93* @_ZNK7GrPaint10getColor4fEv(%723* noundef align 8 dereferenceable_or_null(44) %0) #3 comdat align 2 { %2 = alloca %723*, align 8 store %723* %0, %723** %2, align 8 %3 = load %723*, %723** %2, align 8 %4 = getelementptr inbounds %723, %723* %3, i32 0, i32 5 ret %93* %4 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_Z16SkPaintToGrPaintP18GrRecordingContextRK11GrColorInfoRK7SkPaintRK16SkMatrixProviderP7GrPaint(%299* noundef, %226* noundef align 8 dereferenceable(24), %73* noundef align 8 dereferenceable(76), %13* noundef align 4 dereferenceable(105), %723* noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(8) %225* @_ZNK5skgpu2v118SurfaceDrawContext12surfacePropsEv(%295* noundef align 8 dereferenceable_or_null(312) %0) #3 comdat align 2 { %2 = alloca %295*, align 8 store %295* %0, %295** %2, align 8 %3 = load %295*, %295** %2, align 8 %4 = getelementptr inbounds %295, %295* %3, i32 0, i32 1 ret %225* %4 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @149(i32 noundef %0) #7 { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 %4 = icmp eq i32 2, %3 br i1 %4, label %8, label %5 5: ; preds = %1 %6 = load i32, i32* %2, align 4 %7 = icmp eq i32 4, %6 br label %8 8: ; preds = %5, %1 %9 = phi i1 [ true, %1 ], [ %7, %5 ] ret i1 %9 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef zeroext i1 @150(i32 noundef %0) #7 { %2 = alloca i32, align 4 store i32 %0, i32* %2, align 4 %3 = load i32, i32* %2, align 4 %4 = icmp eq i32 1, %3 br i1 %4, label %8, label %5 5: ; preds = %1 %6 = load i32, i32* %2, align 4 %7 = icmp eq i32 2, %6 br label %8 8: ; preds = %5, %1 %9 = phi i1 [ true, %1 ], [ %7, %5 ] ret i1 %9 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK8SkMatrix12isSimilarityEf(%2* noundef align 4 dereferenceable_or_null(40), float noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK8SkMatrix16isScaleTranslateEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = call noundef i32 @_ZNK8SkMatrix7getTypeEv(%2* noundef align 4 dereferenceable_or_null(40) %3) %5 = and i32 %4, -4 %6 = icmp ne i32 %5, 0 %7 = xor i1 %6, true ret i1 %7 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr5tupleIJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJRS4_RjRbELi0EEEDpOT_(%725* noundef align 4 dereferenceable_or_null(12) %0, i32* noundef align 4 dereferenceable(4) %1, i32* noundef align 4 dereferenceable(4) %2, i8* noundef align 1 dereferenceable(1) %3) unnamed_addr #0 comdat align 2 { %5 = alloca %725*, align 8 %6 = alloca i32*, align 8 %7 = alloca i32*, align 8 %8 = alloca i8*, align 8 %9 = alloca %707, align 1 %10 = alloca %757, align 1 %11 = alloca %236, align 1 %12 = alloca %237, align 1 store %725* %0, %725** %5, align 8 store i32* %1, i32** %6, align 8 store i32* %2, i32** %7, align 8 store i8* %3, i8** %8, align 8 %13 = load %725*, %725** %5, align 8 %14 = getelementptr inbounds %725, %725* %13, i32 0, i32 0 %15 = load i32*, i32** %6, align 8 %16 = load i32*, i32** %7, align 8 %17 = load i8*, i8** %8, align 8 call void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJLm0ELm1ELm2EEJS6_jbEJEJEJRS6_RjRbEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_(%726* noundef align 4 dereferenceable_or_null(9) %14, i32* noundef align 4 dereferenceable(4) %15, i32* noundef align 4 dereferenceable(4) %16, i8* noundef align 1 dereferenceable(1) %17) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef i32 @_ZNK8SkMatrix7getTypeEv(%2* noundef align 4 dereferenceable_or_null(40) %0) #3 comdat align 2 { %2 = alloca %2*, align 8 store %2* %0, %2** %2, align 8 %3 = load %2*, %2** %2, align 8 %4 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 %5 = load i32, i32* %4, align 4 %6 = and i32 %5, 128 %7 = icmp ne i32 %6, 0 br i1 %7, label %8, label %12 8: ; preds = %1 %9 = call noundef zeroext i8 @_ZNK8SkMatrix15computeTypeMaskEv(%2* noundef align 4 dereferenceable_or_null(40) %3) %10 = zext i8 %9 to i32 %11 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 store i32 %10, i32* %11, align 4 br label %12 12: ; preds = %8, %1 %13 = getelementptr inbounds %2, %2* %3, i32 0, i32 1 %14 = load i32, i32* %13, align 4 %15 = and i32 %14, 15 ret i32 %15 } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i8 @_ZNK8SkMatrix15computeTypeMaskEv(%2* noundef align 4 dereferenceable_or_null(40)) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1ELm2EEEEJN5skgpu2v111AtlasTextOp8MaskTypeEjbEEC2IJLm0ELm1ELm2EEJS6_jbEJEJEJRS6_RjRbEEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSD_IJDpT2_EEEDpOT3_(%726* noundef align 4 dereferenceable_or_null(9) %0, i32* noundef align 4 dereferenceable(4) %1, i32* noundef align 4 dereferenceable(4) %2, i8* noundef align 1 dereferenceable(1) %3) unnamed_addr #0 comdat align 2 { %5 = alloca %707, align 1 %6 = alloca %757, align 1 %7 = alloca %236, align 1 %8 = alloca %237, align 1 %9 = alloca %726*, align 8 %10 = alloca i32*, align 8 %11 = alloca i32*, align 8 %12 = alloca i8*, align 8 store %726* %0, %726** %9, align 8 store i32* %1, i32** %10, align 8 store i32* %2, i32** %11, align 8 store i8* %3, i8** %12, align 8 %13 = load %726*, %726** %9, align 8 %14 = bitcast %726* %13 to %727* %15 = load i32*, i32** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EEC2IRS4_vEEOT_(%727* noundef align 4 dereferenceable_or_null(4) %14, i32* noundef align 4 dereferenceable(4) %15) #21 %16 = bitcast %726* %13 to i8* %17 = getelementptr inbounds i8, i8* %16, i64 4 %18 = bitcast i8* %17 to %728* %19 = load i32*, i32** %11, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1EjLb0EEC2IRjvEEOT_(%728* noundef align 4 dereferenceable_or_null(4) %18, i32* noundef align 4 dereferenceable(4) %19) #21 %20 = bitcast %726* %13 to i8* %21 = getelementptr inbounds i8, i8* %20, i64 8 %22 = bitcast i8* %21 to %729* %23 = load i8*, i8** %12, align 8 call void @_ZNSt4__Cr12__tuple_leafILm2EbLb0EEC2IRbvEEOT_(%729* noundef align 1 dereferenceable_or_null(1) %22, i8* noundef align 1 dereferenceable(1) %23) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EEC2IRS4_vEEOT_(%727* noundef align 4 dereferenceable_or_null(4) %0, i32* noundef align 4 dereferenceable(4) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %727*, align 8 %4 = alloca i32*, align 8 store %727* %0, %727** %3, align 8 store i32* %1, i32** %4, align 8 %5 = load %727*, %727** %3, align 8 %6 = getelementptr inbounds %727, %727* %5, i32 0, i32 0 %7 = load i32*, i32** %4, align 8 %8 = load i32, i32* %7, align 4 store i32 %8, i32* %6, align 4 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1EjLb0EEC2IRjvEEOT_(%728* noundef align 4 dereferenceable_or_null(4) %0, i32* noundef align 4 dereferenceable(4) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %728*, align 8 %4 = alloca i32*, align 8 store %728* %0, %728** %3, align 8 store i32* %1, i32** %4, align 8 %5 = load %728*, %728** %3, align 8 %6 = getelementptr inbounds %728, %728* %5, i32 0, i32 0 %7 = load i32*, i32** %4, align 8 %8 = load i32, i32* %7, align 4 store i32 %8, i32* %6, align 4 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm2EbLb0EEC2IRbvEEOT_(%729* noundef align 1 dereferenceable_or_null(1) %0, i8* noundef align 1 dereferenceable(1) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %729*, align 8 %4 = alloca i8*, align 8 store %729* %0, %729** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %729*, %729** %3, align 8 %6 = getelementptr inbounds %729, %729* %5, i32 0, i32 0 %7 = load i8*, i8** %4, align 8 %8 = load i8, i8* %7, align 1, !range !7 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i8 store i8 %10, i8* %6, align 1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm0EN5skgpu2v111AtlasTextOp8MaskTypeELb0EE3getEv(%727* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %727*, align 8 store %727* %0, %727** %2, align 8 %3 = load %727*, %727** %2, align 8 %4 = getelementptr inbounds %727, %727* %3, i32 0, i32 0 ret i32* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 4 dereferenceable(4) i32* @_ZNSt4__Cr12__tuple_leafILm1EjLb0EE3getEv(%728* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %728*, align 8 store %728* %0, %728** %2, align 8 %3 = load %728*, %728** %2, align 8 %4 = getelementptr inbounds %728, %728* %3, i32 0, i32 0 ret i32* %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) i8* @_ZNSt4__Cr12__tuple_leafILm2EbLb0EE3getEv(%729* noundef align 1 dereferenceable_or_null(1) %0) #3 comdat align 2 { %2 = alloca %729*, align 8 store %729* %0, %729** %2, align 8 %3 = load %729*, %729** %2, align 8 %4 = getelementptr inbounds %729, %729* %3, i32 0, i32 0 ret i8* %4 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %19* @151(%19* noundef %0) #7 { %2 = alloca %19*, align 8 store %19* %0, %19** %2, align 8 %3 = load %19*, %19** %2, align 8 %4 = icmp ne %19* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %19*, %19** %2, align 8 %7 = bitcast %19* %6 to %657* call void @_ZNK12SkRefCntBase3refEv(%657* noundef align 8 dereferenceable_or_null(12) %7) br label %8 8: ; preds = %5, %1 %9 = load %19*, %19** %2, align 8 ret %19* %9 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI20GrTextReferenceFrameEC2EPS0_(%732* noundef align 8 dereferenceable_or_null(8) %0, %19* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %732*, align 8 %4 = alloca %19*, align 8 store %732* %0, %732** %3, align 8 store %19* %1, %19** %4, align 8 %5 = load %732*, %732** %3, align 8 %6 = getelementptr inbounds %732, %732* %5, i32 0, i32 0 %7 = load %19*, %19** %4, align 8 store %19* %7, %19** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK12SkRefCntBase3refEv(%657* noundef align 8 dereferenceable_or_null(12) %0) #3 comdat align 2 { %2 = alloca %657*, align 8 store %657* %0, %657** %2, align 8 %3 = load %657*, %657** %2, align 8 %4 = getelementptr inbounds %657, %657* %3, i32 0, i32 1 %5 = bitcast %22* %4 to %23* %6 = call noundef i32 @_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE(%23* noundef align 4 dereferenceable_or_null(4) %5, i32 noundef 1, i32 noundef 0) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %19* @_ZN5sk_spI20GrTextReferenceFrameE7releaseEv(%732* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %732*, align 8 %3 = alloca %19*, align 8 store %732* %0, %732** %2, align 8 %4 = load %732*, %732** %2, align 8 %5 = bitcast %19** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %19* inttoptr (i64 -6148914691236517206 to %19*), %19** %3, align 8, !annotation !6 %6 = getelementptr inbounds %732, %732* %4, i32 0, i32 0 %7 = load %19*, %19** %6, align 8 store %19* %7, %19** %3, align 8 %8 = getelementptr inbounds %732, %732* %4, i32 0, i32 0 store %19* null, %19** %8, align 8 %9 = load %19*, %19** %3, align 8 %10 = bitcast %19** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret %19* %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5skgpu2v118SurfaceFillContext6arenasEv(%492* noalias sret(%492) align 8 %0, %733* noundef align 8 dereferenceable_or_null(81) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %733*, align 8 %5 = bitcast %492* %0 to i8* store i8* %5, i8** %3, align 8 store %733* %1, %733** %4, align 8 %6 = load %733*, %733** %4, align 8 %7 = bitcast %733* %6 to %297* %8 = getelementptr inbounds %297, %297* %7, i32 0, i32 1 %9 = call noundef %398* @_ZNK18GrSurfaceProxyView5proxyEv(%526* noundef align 8 dereferenceable_or_null(14) %8) %10 = bitcast %398* %9 to %758* (%398*)*** %11 = load %758* (%398*)**, %758* (%398*)*** %10, align 8 %12 = getelementptr inbounds %758* (%398*)*, %758* (%398*)** %11, i64 5 %13 = load %758* (%398*)*, %758* (%398*)** %12, align 8 %14 = call noundef %758* %13(%398* noundef align 8 dereferenceable_or_null(200) %9) call void @_ZN19GrRenderTargetProxy6arenasEv(%492* sret(%492) align 8 %0, %758* noundef align 8 dereferenceable_or_null(44) %14) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %493* @_ZNK5sk_spI8GrArenasEptEv(%492* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %492*, align 8 store %492* %0, %492** %2, align 8 %3 = load %492*, %492** %2, align 8 %4 = getelementptr inbounds %492, %492* %3, i32 0, i32 0 %5 = load %493*, %493** %4, align 8 ret %493* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %172* @_ZN8GrArenas10arenaAllocEv(%493* noundef align 8 dereferenceable_or_null(56) %0) #3 comdat align 2 { %2 = alloca %493*, align 8 store %493* %0, %493** %2, align 8 %3 = load %493*, %493** %2, align 8 %4 = getelementptr inbounds %493, %493* %3, i32 0, i32 2 ret %172* %4 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8GrArenasED2Ev(%492* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %492*, align 8 store %492* %0, %492** %2, align 8 %3 = load %492*, %492** %2, align 8 %4 = getelementptr inbounds %492, %492* %3, i32 0, i32 0 %5 = load %493*, %493** %4, align 8 call void @152(%493* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %398* @_ZNK18GrSurfaceProxyView5proxyEv(%526* noundef align 8 dereferenceable_or_null(14) %0) #3 comdat align 2 { %2 = alloca %526*, align 8 store %526* %0, %526** %2, align 8 %3 = load %526*, %526** %2, align 8 %4 = getelementptr inbounds %526, %526* %3, i32 0, i32 0 %5 = call noundef %398* @_ZNK5sk_spI14GrSurfaceProxyE3getEv(%397* noundef align 8 dereferenceable_or_null(8) %4) ret %398* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN19GrRenderTargetProxy6arenasEv(%492* noalias sret(%492) align 8 %0, %758* noundef align 8 dereferenceable_or_null(44) %1) #3 comdat align 2 { %3 = alloca i8*, align 8 %4 = alloca %758*, align 8 %5 = alloca %492, align 8 %6 = bitcast %492* %0 to i8* store i8* %6, i8** %3, align 8 store %758* %1, %758** %4, align 8 %7 = load %758*, %758** %4, align 8 %8 = getelementptr inbounds %758, %758* %7, i32 0, i32 7 %9 = call noundef zeroext i1 @_ZeqI8GrArenasEbRK5sk_spIT_EDn(%492* noundef align 8 dereferenceable(8) %8, i8* null) br i1 %9, label %10, label %15 10: ; preds = %2 %11 = bitcast %492* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %11) #21 call void @_Z10sk_make_spI8GrArenasJEE5sk_spIT_EDpOT0_(%492* sret(%492) align 8 %5) %12 = getelementptr inbounds %758, %758* %7, i32 0, i32 7 %13 = call noundef align 8 dereferenceable(8) %492* @_ZN5sk_spI8GrArenasEaSEOS1_(%492* noundef align 8 dereferenceable_or_null(8) %12, %492* noundef align 8 dereferenceable(8) %5) call void @_ZN5sk_spI8GrArenasED2Ev(%492* noundef align 8 dereferenceable_or_null(8) %5) #21 %14 = bitcast %492* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %14) #21 br label %15 15: ; preds = %10, %2 %16 = getelementptr inbounds %758, %758* %7, i32 0, i32 7 call void @_ZN5sk_spI8GrArenasEC2ERKS1_(%492* noundef align 8 dereferenceable_or_null(8) %0, %492* noundef align 8 dereferenceable(8) %16) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %398* @_ZNK5sk_spI14GrSurfaceProxyE3getEv(%397* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %397*, align 8 store %397* %0, %397** %2, align 8 %3 = load %397*, %397** %2, align 8 %4 = getelementptr inbounds %397, %397* %3, i32 0, i32 0 %5 = load %398*, %398** %4, align 8 ret %398* %5 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZeqI8GrArenasEbRK5sk_spIT_EDn(%492* noundef align 8 dereferenceable(8) %0, i8* %1) #7 comdat { %3 = alloca %492*, align 8 %4 = alloca i8*, align 8 store %492* %0, %492** %3, align 8 store i8* %1, i8** %4, align 8 %5 = load %492*, %492** %3, align 8 %6 = call noundef zeroext i1 @_ZNK5sk_spI8GrArenasEcvbEv(%492* noundef align 8 dereferenceable_or_null(8) %5) %7 = xor i1 %6, true ret i1 %7 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_Z10sk_make_spI8GrArenasJEE5sk_spIT_EDpOT0_(%492* noalias sret(%492) align 8 %0) #3 comdat { %2 = alloca i8*, align 8 %3 = bitcast %492* %0 to i8* store i8* %3, i8** %2, align 8 %4 = call noalias noundef i8* @_Znwm(i64 noundef 56) #26 %5 = bitcast i8* %4 to %493* %6 = bitcast %493* %5 to i8* call void @llvm.memset.p0i8.i64(i8* align 16 %6, i8 0, i64 56, i1 false) call void @_ZN8GrArenasC2Ev(%493* noundef align 8 dereferenceable_or_null(56) %5) call void @_ZN5sk_spI8GrArenasEC2EPS0_(%492* noundef align 8 dereferenceable_or_null(8) %0, %493* noundef %5) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %492* @_ZN5sk_spI8GrArenasEaSEOS1_(%492* noundef align 8 dereferenceable_or_null(8) %0, %492* noundef align 8 dereferenceable(8) %1) #3 comdat align 2 { %3 = alloca %492*, align 8 %4 = alloca %492*, align 8 store %492* %0, %492** %3, align 8 store %492* %1, %492** %4, align 8 %5 = load %492*, %492** %3, align 8 %6 = load %492*, %492** %4, align 8 %7 = call noundef %493* @_ZN5sk_spI8GrArenasE7releaseEv(%492* noundef align 8 dereferenceable_or_null(8) %6) call void @_ZN5sk_spI8GrArenasE5resetEPS0_(%492* noundef align 8 dereferenceable_or_null(8) %5, %493* noundef %7) ret %492* %5 } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8GrArenasEC2ERKS1_(%492* noundef align 8 dereferenceable_or_null(8) %0, %492* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %492*, align 8 %4 = alloca %492*, align 8 store %492* %0, %492** %3, align 8 store %492* %1, %492** %4, align 8 %5 = load %492*, %492** %3, align 8 %6 = getelementptr inbounds %492, %492* %5, i32 0, i32 0 %7 = load %492*, %492** %4, align 8 %8 = call noundef %493* @_ZNK5sk_spI8GrArenasE3getEv(%492* noundef align 8 dereferenceable_or_null(8) %7) %9 = call noundef %493* @153(%493* noundef %8) store %493* %9, %493** %6, align 8 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef zeroext i1 @_ZNK5sk_spI8GrArenasEcvbEv(%492* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %492*, align 8 store %492* %0, %492** %2, align 8 %3 = load %492*, %492** %2, align 8 %4 = call noundef %493* @_ZNK5sk_spI8GrArenasE3getEv(%492* noundef align 8 dereferenceable_or_null(8) %3) %5 = icmp ne %493* %4, null ret i1 %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %493* @_ZNK5sk_spI8GrArenasE3getEv(%492* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %492*, align 8 store %492* %0, %492** %2, align 8 %3 = load %492*, %492** %2, align 8 %4 = getelementptr inbounds %492, %492* %3, i32 0, i32 0 %5 = load %493*, %493** %4, align 8 ret %493* %5 } ; Function Attrs: nobuiltin null_pointer_is_valid allocsize(0) declare noundef i8* @_Znwm(i64 noundef) #18 ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8GrArenasC2Ev(%493* noundef align 8 dereferenceable_or_null(56) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %493*, align 8 store %493* %0, %493** %2, align 8 %3 = load %493*, %493** %2, align 8 %4 = bitcast %493* %3 to %494* call void @_ZN10SkNVRefCntI8GrArenasEC2Ev(%494* noundef align 4 dereferenceable_or_null(4) %4) %5 = getelementptr inbounds %493, %493* %3, i32 0, i32 2 call void @_ZN12SkArenaAllocC2Em(%172* noundef align 8 dereferenceable_or_null(28) %5, i64 noundef 1024) %6 = getelementptr inbounds %493, %493* %3, i32 0, i32 3 call void @_ZN6sktext3gpu15SubRunAllocatorC1Ei(%10* noundef align 8 dereferenceable_or_null(16) %6, i32 noundef 1024) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8GrArenasEC2EPS0_(%492* noundef align 8 dereferenceable_or_null(8) %0, %493* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %492*, align 8 %4 = alloca %493*, align 8 store %492* %0, %492** %3, align 8 store %493* %1, %493** %4, align 8 %5 = load %492*, %492** %3, align 8 %6 = getelementptr inbounds %492, %492* %5, i32 0, i32 0 %7 = load %493*, %493** %4, align 8 store %493* %7, %493** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN10SkNVRefCntI8GrArenasEC2Ev(%494* noundef align 4 dereferenceable_or_null(4) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %494*, align 8 store %494* %0, %494** %2, align 8 %3 = load %494*, %494** %2, align 8 %4 = getelementptr inbounds %494, %494* %3, i32 0, i32 0 call void @_ZNSt4__Cr6atomicIiEC2Ei(%22* noundef align 4 dereferenceable_or_null(4) %4, i32 noundef 1) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN12SkArenaAllocC2Em(%172* noundef align 8 dereferenceable_or_null(28) %0, i64 noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %172*, align 8 %4 = alloca i64, align 8 store %172* %0, %172** %3, align 8 store i64 %1, i64* %4, align 8 %5 = load %172*, %172** %3, align 8 %6 = load i64, i64* %4, align 8 call void @_ZN12SkArenaAllocC2EPcmm(%172* noundef align 8 dereferenceable_or_null(28) %5, i8* noundef null, i64 noundef 0, i64 noundef %6) ret void } ; Function Attrs: null_pointer_is_valid declare void @_ZN6sktext3gpu15SubRunAllocatorC1Ei(%10* noundef align 8 dereferenceable_or_null(16), i32 noundef) unnamed_addr #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN12SkArenaAllocC2EPcmm(%172* noundef align 8 dereferenceable_or_null(28), i8* noundef, i64 noundef, i64 noundef) unnamed_addr #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN5sk_spI8GrArenasE5resetEPS0_(%492* noundef align 8 dereferenceable_or_null(8) %0, %493* noundef %1) #3 comdat align 2 { %3 = alloca %492*, align 8 %4 = alloca %493*, align 8 %5 = alloca %493*, align 8 store %492* %0, %492** %3, align 8 store %493* %1, %493** %4, align 8 %6 = load %492*, %492** %3, align 8 %7 = bitcast %493** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %493* inttoptr (i64 -6148914691236517206 to %493*), %493** %5, align 8, !annotation !6 %8 = getelementptr inbounds %492, %492* %6, i32 0, i32 0 %9 = load %493*, %493** %8, align 8 store %493* %9, %493** %5, align 8 %10 = load %493*, %493** %4, align 8 %11 = getelementptr inbounds %492, %492* %6, i32 0, i32 0 store %493* %10, %493** %11, align 8 %12 = load %493*, %493** %5, align 8 call void @152(%493* noundef %12) %13 = bitcast %493** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef %493* @_ZN5sk_spI8GrArenasE7releaseEv(%492* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %492*, align 8 %3 = alloca %493*, align 8 store %492* %0, %492** %2, align 8 %4 = load %492*, %492** %2, align 8 %5 = bitcast %493** %3 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %5) #21 store %493* inttoptr (i64 -6148914691236517206 to %493*), %493** %3, align 8, !annotation !6 %6 = getelementptr inbounds %492, %492* %4, i32 0, i32 0 %7 = load %493*, %493** %6, align 8 store %493* %7, %493** %3, align 8 %8 = getelementptr inbounds %492, %492* %4, i32 0, i32 0 store %493* null, %493** %8, align 8 %9 = load %493*, %493** %3, align 8 %10 = bitcast %493** %3 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %10) #21 ret %493* %9 } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @152(%493* noundef %0) #7 { %2 = alloca %493*, align 8 store %493* %0, %493** %2, align 8 %3 = load %493*, %493** %2, align 8 %4 = icmp ne %493* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %493*, %493** %2, align 8 %7 = bitcast %493* %6 to %494* call void @_ZNK10SkNVRefCntI8GrArenasE5unrefEv(%494* noundef align 4 dereferenceable_or_null(4) %7) br label %8 8: ; preds = %5, %1 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK10SkNVRefCntI8GrArenasE5unrefEv(%494* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %494*, align 8 store %494* %0, %494** %2, align 8 %3 = load %494*, %494** %2, align 8 %4 = getelementptr inbounds %494, %494* %3, i32 0, i32 0 %5 = bitcast %22* %4 to %23* %6 = call noundef i32 @_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE(%23* noundef align 4 dereferenceable_or_null(4) %5, i32 noundef -1, i32 noundef 4) #21 %7 = icmp eq i32 1, %6 br i1 %7, label %8, label %14 8: ; preds = %1 %9 = bitcast %494* %3 to %493* %10 = icmp eq %493* %9, null br i1 %10, label %13, label %11 11: ; preds = %8 call void @_ZN8GrArenasD2Ev(%493* noundef align 8 dereferenceable_or_null(56) %9) #21 %12 = bitcast %493* %9 to i8* call void @_ZdlPv(i8* noundef %12) #25 br label %13 13: ; preds = %11, %8 br label %14 14: ; preds = %13, %1 ret void } ; Function Attrs: inlinehint nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN8GrArenasD2Ev(%493* noundef align 8 dereferenceable_or_null(56) %0) unnamed_addr #10 comdat align 2 { %2 = alloca %493*, align 8 store %493* %0, %493** %2, align 8 %3 = load %493*, %493** %2, align 8 %4 = getelementptr inbounds %493, %493* %3, i32 0, i32 3 call void @_ZN6sktext3gpu15SubRunAllocatorD2Ev(%10* noundef align 8 dereferenceable_or_null(16) %4) #21 %5 = getelementptr inbounds %493, %493* %3, i32 0, i32 2 call void @_ZN12SkArenaAllocD1Ev(%172* noundef align 8 dereferenceable_or_null(28) %5) #21 %6 = bitcast %493* %3 to %494* call void @_ZN10SkNVRefCntI8GrArenasED2Ev(%494* noundef align 4 dereferenceable_or_null(4) %6) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid declare void @_ZN12SkArenaAllocD1Ev(%172* noundef align 8 dereferenceable_or_null(28)) unnamed_addr #12 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN10SkNVRefCntI8GrArenasED2Ev(%494* noundef align 4 dereferenceable_or_null(4) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %494*, align 8 store %494* %0, %494** %2, align 8 %3 = load %494*, %494** %2, align 8 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal noundef %493* @153(%493* noundef %0) #7 { %2 = alloca %493*, align 8 store %493* %0, %493** %2, align 8 %3 = load %493*, %493** %2, align 8 %4 = icmp ne %493* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %493*, %493** %2, align 8 %7 = bitcast %493* %6 to %494* call void @_ZNK10SkNVRefCntI8GrArenasE3refEv(%494* noundef align 4 dereferenceable_or_null(4) %7) br label %8 8: ; preds = %5, %1 %9 = load %493*, %493** %2, align 8 ret %493* %9 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNK10SkNVRefCntI8GrArenasE3refEv(%494* noundef align 4 dereferenceable_or_null(4) %0) #3 comdat align 2 { %2 = alloca %494*, align 8 store %494* %0, %494** %2, align 8 %3 = load %494*, %494** %2, align 8 %4 = getelementptr inbounds %494, %494* %3, i32 0, i32 0 %5 = bitcast %22* %4 to %23* %6 = call noundef i32 @_ZNSt4__Cr13__atomic_baseIiLb1EE9fetch_addEiNS_12memory_orderE(%23* noundef align 4 dereferenceable_or_null(4) %5, i32 noundef 1, i32 noundef 0) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @154(%529* noundef %0) #7 { %2 = alloca %529*, align 8 store %529* %0, %529** %2, align 8 %3 = load %529*, %529** %2, align 8 %4 = icmp ne %529* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %529*, %529** %2, align 8 %7 = bitcast %529* %6 to %657* call void @_ZNK12SkRefCntBase5unrefEv(%657* noundef align 8 dereferenceable_or_null(12) %7) br label %8 8: ; preds = %5, %1 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @155(%19* noundef %0) #7 { %2 = alloca %19*, align 8 store %19* %0, %19** %2, align 8 %3 = load %19*, %19** %2, align 8 %4 = icmp ne %19* %3, null br i1 %4, label %5, label %8 5: ; preds = %1 %6 = load %19*, %19** %2, align 8 %7 = bitcast %19* %6 to %657* call void @_ZNK12SkRefCntBase5unrefEv(%657* noundef align 8 dereferenceable_or_null(12) %7) br label %8 8: ; preds = %5, %1 ret void } ; Function Attrs: null_pointer_is_valid declare noundef i8* @_ZN5skgpu2v111AtlasTextOpnwEm(i64 noundef) #8 ; Function Attrs: null_pointer_is_valid declare void @_ZN5skgpu2v111AtlasTextOpC1ENS1_8MaskTypeEbi6SkRectjbjPNS1_8GeometryEO7GrPaint(%749* noundef align 8 dereferenceable_or_null(112), i32 noundef, i1 noundef zeroext, i32 noundef, <2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, i32 noundef, %730* noundef, %723* noundef align 8 dereferenceable(44)) unnamed_addr #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2ILb1EvEEPS1_(%469* noundef align 8 dereferenceable_or_null(8) %0, %472* noundef %1) unnamed_addr #0 comdat align 2 { %3 = alloca %469*, align 8 %4 = alloca %472*, align 8 %5 = alloca %656, align 1 store %469* %0, %469** %3, align 8 store %472* %1, %472** %4, align 8 %6 = load %469*, %469** %3, align 8 %7 = getelementptr inbounds %469, %469* %6, i32 0, i32 0 %8 = bitcast %656* %5 to i8* call void @llvm.lifetime.start.p0i8(i64 1, i8* %8) #21 call void @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IRS2_NS_18__default_init_tagEEEOT_OT0_(%470* noundef align 8 dereferenceable_or_null(8) %7, %472** noundef align 8 dereferenceable(8) %4, %656* noundef align 1 dereferenceable(1) %5) %9 = bitcast %656* %5 to i8* call void @llvm.lifetime.end.p0i8(i64 1, i8* %9) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr17__compressed_pairIP4GrOpNS_14default_deleteIS1_EEEC2IRS2_NS_18__default_init_tagEEEOT_OT0_(%470* noundef align 8 dereferenceable_or_null(8) %0, %472** noundef align 8 dereferenceable(8) %1, %656* noundef align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %470*, align 8 %5 = alloca %472**, align 8 %6 = alloca %656*, align 8 %7 = alloca %656, align 1 store %470* %0, %470** %4, align 8 store %472** %1, %472*** %5, align 8 store %656* %2, %656** %6, align 8 %8 = load %470*, %470** %4, align 8 %9 = bitcast %470* %8 to %471* %10 = load %472**, %472*** %5, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IRS2_vEEOT_(%471* noundef align 8 dereferenceable_or_null(8) %9, %472** noundef align 8 dereferenceable(8) %10) %11 = bitcast %470* %8 to %748* %12 = load %656*, %656** %6, align 8 call void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2ENS_18__default_init_tagE(%748* noundef align 1 dereferenceable_or_null(1) %11) ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemIP4GrOpLi0ELb0EEC2IRS2_vEEOT_(%471* noundef align 8 dereferenceable_or_null(8) %0, %472** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %471*, align 8 %4 = alloca %472**, align 8 store %471* %0, %471** %3, align 8 store %472** %1, %472*** %4, align 8 %5 = load %471*, %471** %3, align 8 %6 = getelementptr inbounds %471, %471* %5, i32 0, i32 0 %7 = load %472**, %472*** %4, align 8 %8 = load %472*, %472** %7, align 8 store %472* %8, %472** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI4GrOpEELi1ELb1EEC2ENS_18__default_init_tagE(%748* noundef align 1 dereferenceable_or_null(1) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %656, align 1 %3 = alloca %748*, align 8 store %748* %0, %748** %3, align 8 %4 = load %748*, %748** %3, align 8 %5 = bitcast %748* %4 to %745* ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal { <2 x float>, <2 x float> } @156(%547* noundef align 8 dereferenceable_or_null(48) %0, %2* noundef align 4 dereferenceable(40) %1, <2 x float> %2) #5 align 2 { %4 = alloca %44, align 4 %5 = alloca %5, align 4 %6 = alloca %547*, align 8 %7 = alloca %2*, align 8 %8 = alloca %44, align 4 %9 = bitcast %5* %5 to <2 x float>* store <2 x float> %2, <2 x float>* %9, align 4 store %547* %0, %547** %6, align 8 store %2* %1, %2** %7, align 8 %10 = load %547*, %547** %6, align 8 %11 = bitcast %44* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %11) #21 %12 = getelementptr inbounds %44, %44* %8, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %12, align 4, !annotation !6 %13 = getelementptr inbounds %44, %44* %8, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %13, align 4, !annotation !6 %14 = getelementptr inbounds %44, %44* %8, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %14, align 4, !annotation !6 %15 = getelementptr inbounds %44, %44* %8, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %15, align 4, !annotation !6 %16 = getelementptr inbounds %547, %547* %10, i32 0, i32 3 %17 = bitcast %44* %8 to i8* %18 = bitcast %44* %16 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %17, i8* align 8 %18, i64 16, i1 false) call void @_ZN6SkRect6offsetERK7SkPoint(%44* noundef align 4 dereferenceable_or_null(16) %8, %5* noundef align 4 dereferenceable(8) %5) %19 = load %2*, %2** %7, align 8 %20 = call { <2 x float>, <2 x float> } @_ZNK8SkMatrix7mapRectERK6SkRect22SkApplyPerspectiveClip(%2* noundef align 4 dereferenceable_or_null(40) %19, %44* noundef align 4 dereferenceable(16) %8, i32 noundef 1) %21 = bitcast %44* %4 to { <2 x float>, <2 x float> }* %22 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %21, i32 0, i32 0 %23 = extractvalue { <2 x float>, <2 x float> } %20, 0 store <2 x float> %23, <2 x float>* %22, align 4 %24 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %21, i32 0, i32 1 %25 = extractvalue { <2 x float>, <2 x float> } %20, 1 store <2 x float> %25, <2 x float>* %24, align 4 %26 = bitcast %44* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %26) #21 %27 = bitcast %44* %4 to { <2 x float>, <2 x float> }* %28 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %27, align 4 ret { <2 x float>, <2 x float> } %28 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkRect6offsetERK7SkPoint(%44* noundef align 4 dereferenceable_or_null(16) %0, %5* noundef align 4 dereferenceable(8) %1) #3 comdat align 2 { %3 = alloca %44*, align 8 %4 = alloca %5*, align 8 store %44* %0, %44** %3, align 8 store %5* %1, %5** %4, align 8 %5 = load %44*, %44** %3, align 8 %6 = load %5*, %5** %4, align 8 %7 = getelementptr inbounds %5, %5* %6, i32 0, i32 0 %8 = load float, float* %7, align 4 %9 = load %5*, %5** %4, align 8 %10 = getelementptr inbounds %5, %5* %9, i32 0, i32 1 %11 = load float, float* %10, align 4 call void @_ZN6SkRect6offsetEff(%44* noundef align 4 dereferenceable_or_null(16) %5, float noundef %8, float noundef %11) ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden { <2 x float>, <2 x float> } @_ZNK8SkMatrix7mapRectERK6SkRect22SkApplyPerspectiveClip(%2* noundef align 4 dereferenceable_or_null(40) %0, %44* noundef align 4 dereferenceable(16) %1, i32 noundef %2) #3 comdat align 2 { %4 = alloca %44, align 4 %5 = alloca %2*, align 8 %6 = alloca %44*, align 8 %7 = alloca i32, align 4 store %2* %0, %2** %5, align 8 store %44* %1, %44** %6, align 8 store i32 %2, i32* %7, align 4 %8 = load %2*, %2** %5, align 8 %9 = getelementptr inbounds %44, %44* %4, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %9, align 4, !annotation !6 %10 = getelementptr inbounds %44, %44* %4, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %10, align 4, !annotation !6 %11 = getelementptr inbounds %44, %44* %4, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %11, align 4, !annotation !6 %12 = getelementptr inbounds %44, %44* %4, i32 0, i32 3 store float 0xFFFFFFFFE0000000, float* %12, align 4, !annotation !6 %13 = load %44*, %44** %6, align 8 %14 = load i32, i32* %7, align 4 %15 = call noundef zeroext i1 @_ZNK8SkMatrix7mapRectEP6SkRectRKS0_22SkApplyPerspectiveClip(%2* noundef align 4 dereferenceable_or_null(40) %8, %44* noundef %4, %44* noundef align 4 dereferenceable(16) %13, i32 noundef %14) %16 = bitcast %44* %4 to { <2 x float>, <2 x float> }* %17 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %16, align 4 ret { <2 x float>, <2 x float> } %17 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZN6SkRect6offsetEff(%44* noundef align 4 dereferenceable_or_null(16) %0, float noundef %1, float noundef %2) #3 comdat align 2 { %4 = alloca %44*, align 8 %5 = alloca float, align 4 %6 = alloca float, align 4 store %44* %0, %44** %4, align 8 store float %1, float* %5, align 4 store float %2, float* %6, align 4 %7 = load %44*, %44** %4, align 8 %8 = load float, float* %5, align 4 %9 = getelementptr inbounds %44, %44* %7, i32 0, i32 0 %10 = load float, float* %9, align 4 %11 = fadd float %10, %8 store float %11, float* %9, align 4 %12 = load float, float* %6, align 4 %13 = getelementptr inbounds %44, %44* %7, i32 0, i32 1 %14 = load float, float* %13, align 4 %15 = fadd float %14, %12 store float %15, float* %13, align 4 %16 = load float, float* %5, align 4 %17 = getelementptr inbounds %44, %44* %7, i32 0, i32 2 %18 = load float, float* %17, align 4 %19 = fadd float %18, %16 store float %19, float* %17, align 4 %20 = load float, float* %6, align 4 %21 = getelementptr inbounds %44, %44* %7, i32 0, i32 3 %22 = load float, float* %21, align 4 %23 = fadd float %22, %20 store float %23, float* %21, align 4 ret void } ; Function Attrs: null_pointer_is_valid declare noundef zeroext i1 @_ZNK8SkMatrix7mapRectEP6SkRectRKS0_22SkApplyPerspectiveClip(%2* noundef align 4 dereferenceable_or_null(40), %44* noundef, %44* noundef align 4 dereferenceable(16), i32 noundef) #8 ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_implINS_15__tuple_indicesIJLm0ELm1EEEEJPK6GrClipNS_10unique_ptrI4GrOpNS_14default_deleteIS7_EEEEEEC2IJLm0ELm1EEJS5_SA_EJEJEJRS5_SA_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSF_IJDpT2_EEEDpOT3_(%717* noundef align 8 dereferenceable_or_null(16) %0, %294** noundef align 8 dereferenceable(8) %1, %469* noundef align 8 dereferenceable(8) %2) unnamed_addr #0 comdat align 2 { %4 = alloca %234, align 1 %5 = alloca %754, align 1 %6 = alloca %236, align 1 %7 = alloca %237, align 1 %8 = alloca %717*, align 8 %9 = alloca %294**, align 8 %10 = alloca %469*, align 8 store %717* %0, %717** %8, align 8 store %294** %1, %294*** %9, align 8 store %469* %2, %469** %10, align 8 %11 = load %717*, %717** %8, align 8 %12 = bitcast %717* %11 to %718* %13 = load %294**, %294*** %9, align 8 call void @_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EEC2IRS3_vEEOT_(%718* noundef align 8 dereferenceable_or_null(8) %12, %294** noundef align 8 dereferenceable(8) %13) #21 %14 = bitcast %717* %11 to i8* %15 = getelementptr inbounds i8, i8* %14, i64 8 %16 = bitcast i8* %15 to %719* %17 = load %469*, %469** %10, align 8 call void @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EEC2IS5_vEEOT_(%719* noundef align 8 dereferenceable_or_null(8) %16, %469* noundef align 8 dereferenceable(8) %17) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm0EPK6GrClipLb0EEC2IRS3_vEEOT_(%718* noundef align 8 dereferenceable_or_null(8) %0, %294** noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %718*, align 8 %4 = alloca %294**, align 8 store %718* %0, %718** %3, align 8 store %294** %1, %294*** %4, align 8 %5 = load %718*, %718** %3, align 8 %6 = getelementptr inbounds %718, %718* %5, i32 0, i32 0 %7 = load %294**, %294*** %4, align 8 %8 = load %294*, %294** %7, align 8 store %294* %8, %294** %6, align 8 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr12__tuple_leafILm1ENS_10unique_ptrI4GrOpNS_14default_deleteIS2_EEEELb0EEC2IS5_vEEOT_(%719* noundef align 8 dereferenceable_or_null(8) %0, %469* noundef align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 { %3 = alloca %719*, align 8 %4 = alloca %469*, align 8 store %719* %0, %719** %3, align 8 store %469* %1, %469** %4, align 8 %5 = load %719*, %719** %3, align 8 %6 = getelementptr inbounds %719, %719* %5, i32 0, i32 0 %7 = load %469*, %469** %4, align 8 call void @_ZNSt4__Cr10unique_ptrI4GrOpNS_14default_deleteIS1_EEEC2EOS4_(%469* noundef align 8 dereferenceable_or_null(8) %6, %469* noundef align 8 dereferenceable(8) %7) #21 ret void } ; Function Attrs: nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEED2Ev(%483* noundef align 8 dereferenceable_or_null(8) %0) unnamed_addr #0 comdat align 2 { %2 = alloca %483*, align 8 store %483* %0, %483** %2, align 8 %3 = load %483*, %483** %2, align 8 call void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEE5resetEPS1_(%483* noundef align 8 dereferenceable_or_null(8) %3, %486* noundef null) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNSt4__Cr10unique_ptrI19GrFragmentProcessorNS_14default_deleteIS1_EEE5resetEPS1_(%483* noundef align 8 dereferenceable_or_null(8) %0, %486* noundef %1) #3 comdat align 2 { %3 = alloca %483*, align 8 %4 = alloca %486*, align 8 %5 = alloca %486*, align 8 store %483* %0, %483** %3, align 8 store %486* %1, %486** %4, align 8 %6 = load %483*, %483** %3, align 8 %7 = bitcast %486** %5 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %7) #21 store %486* inttoptr (i64 -6148914691236517206 to %486*), %486** %5, align 8, !annotation !6 %8 = getelementptr inbounds %483, %483* %6, i32 0, i32 0 %9 = call noundef align 8 dereferenceable(8) %486** @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE5firstEv(%484* noundef align 8 dereferenceable_or_null(8) %8) #21 %10 = load %486*, %486** %9, align 8 store %486* %10, %486** %5, align 8 %11 = load %486*, %486** %4, align 8 %12 = getelementptr inbounds %483, %483* %6, i32 0, i32 0 %13 = call noundef align 8 dereferenceable(8) %486** @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE5firstEv(%484* noundef align 8 dereferenceable_or_null(8) %12) #21 store %486* %11, %486** %13, align 8 %14 = load %486*, %486** %5, align 8 %15 = icmp ne %486* %14, null br i1 %15, label %16, label %20 16: ; preds = %2 %17 = getelementptr inbounds %483, %483* %6, i32 0, i32 0 %18 = call noundef align 1 dereferenceable(1) %756* @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE6secondEv(%484* noundef align 8 dereferenceable_or_null(8) %17) #21 %19 = load %486*, %486** %5, align 8 call void @_ZNKSt4__Cr14default_deleteI19GrFragmentProcessorEclEPS1_(%756* noundef align 1 dereferenceable_or_null(1) %18, %486* noundef %19) #21 br label %20 20: ; preds = %16, %2 %21 = bitcast %486** %5 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %21) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %486** @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE5firstEv(%484* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %484*, align 8 store %484* %0, %484** %2, align 8 %3 = load %484*, %484** %2, align 8 %4 = bitcast %484* %3 to %485* %5 = call noundef align 8 dereferenceable(8) %486** @_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EE5__getEv(%485* noundef align 8 dereferenceable_or_null(8) %4) #21 ret %486** %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %756* @_ZNSt4__Cr17__compressed_pairIP19GrFragmentProcessorNS_14default_deleteIS1_EEE6secondEv(%484* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %484*, align 8 store %484* %0, %484** %2, align 8 %3 = load %484*, %484** %2, align 8 %4 = bitcast %484* %3 to %755* %5 = call noundef align 1 dereferenceable(1) %756* @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EE5__getEv(%755* noundef align 1 dereferenceable_or_null(1) %4) #21 ret %756* %5 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden void @_ZNKSt4__Cr14default_deleteI19GrFragmentProcessorEclEPS1_(%756* noundef align 1 dereferenceable_or_null(1) %0, %486* noundef %1) #3 comdat align 2 { %3 = alloca %756*, align 8 %4 = alloca %486*, align 8 store %756* %0, %756** %3, align 8 store %486* %1, %486** %4, align 8 %5 = load %756*, %756** %3, align 8 %6 = load %486*, %486** %4, align 8 %7 = icmp eq %486* %6, null br i1 %7, label %13, label %8 8: ; preds = %2 %9 = bitcast %486* %6 to void (%486*)*** %10 = load void (%486*)**, void (%486*)*** %9, align 8 %11 = getelementptr inbounds void (%486*)*, void (%486*)** %10, i64 1 %12 = load void (%486*)*, void (%486*)** %11, align 8 call void %12(%486* noundef align 8 dereferenceable_or_null(60) %6) #21 br label %13 13: ; preds = %8, %2 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 8 dereferenceable(8) %486** @_ZNSt4__Cr22__compressed_pair_elemIP19GrFragmentProcessorLi0ELb0EE5__getEv(%485* noundef align 8 dereferenceable_or_null(8) %0) #3 comdat align 2 { %2 = alloca %485*, align 8 store %485* %0, %485** %2, align 8 %3 = load %485*, %485** %2, align 8 %4 = getelementptr inbounds %485, %485* %3, i32 0, i32 0 ret %486** %4 } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define linkonce_odr hidden noundef align 1 dereferenceable(1) %756* @_ZNSt4__Cr22__compressed_pair_elemINS_14default_deleteI19GrFragmentProcessorEELi1ELb1EE5__getEv(%755* noundef align 1 dereferenceable_or_null(1) %0) #3 comdat align 2 { %2 = alloca %755*, align 8 store %755* %0, %755** %2, align 8 %3 = load %755*, %755** %2, align 8 %4 = bitcast %755* %3 to %756* ret %756* %4 } ; Function Attrs: null_pointer_is_valid declare void @_ZN6sktext3gpu11GlyphVector20packedGlyphIDToGlyphEPNS0_11StrikeCacheE(%551* noundef align 8 dereferenceable_or_null(104), %734* noundef) #8 ; Function Attrs: null_pointer_is_valid declare i64 @_ZN6sktext3gpu11GlyphVector15regenerateAtlasEiiN5skgpu10MaskFormatEiP16GrMeshDrawTarget(%551* noundef align 8 dereferenceable_or_null(104), i32 noundef, i32 noundef, i32 noundef, i32 noundef, %741* noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @157(%2* noalias sret(%2) align 4 %0, %2* noundef align 4 dereferenceable(40) %1, <2 x float> %2) #5 { %4 = alloca %5, align 4 %5 = alloca %2*, align 8 %6 = alloca %2, align 4 %7 = bitcast %5* %4 to <2 x float>* store <2 x float> %2, <2 x float>* %7, align 4 store %2* %1, %2** %5, align 8 %8 = bitcast %2* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 40, i8* %8) #21 %9 = getelementptr inbounds %2, %2* %6, i32 0, i32 0 %10 = bitcast [9 x float]* %9 to i8* call void @llvm.memset.p0i8.i64(i8* align 4 %10, i8 -1, i64 36, i1 false), !annotation !6 %11 = getelementptr inbounds %2, %2* %6, i32 0, i32 1 store i32 -1431655766, i32* %11, align 4, !annotation !6 %12 = load %2*, %2** %5, align 8 %13 = bitcast %2* %6 to i8* %14 = bitcast %2* %12 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %13, i8* align 4 %14, i64 40, i1 false) %15 = call noundef float @_ZNK7SkPoint1xEv(%5* noundef align 4 dereferenceable_or_null(8) %4) %16 = call noundef float @_ZNK7SkPoint1yEv(%5* noundef align 4 dereferenceable_or_null(8) %4) %17 = call noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix12preTranslateEff(%2* noundef align 4 dereferenceable_or_null(40) %6, float noundef %15, float noundef %16) %18 = bitcast %2* %0 to i8* %19 = bitcast %2* %17 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %18, i8* align 4 %19, i64 40, i1 false) %20 = bitcast %2* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 40, i8* %20) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @158(%547* noundef align 8 dereferenceable_or_null(48) %0, i32 noundef %1, i32 noundef %2, %554** %3, i64 %4, i32 noundef %5, %2* noundef align 4 dereferenceable(40) %6, %290* noundef byval(%290) align 8 %7, i8* noundef %8) #3 align 2 { %10 = alloca %618, align 8 %11 = alloca %547*, align 8 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca i32, align 4 %15 = alloca %2*, align 8 %16 = alloca i8*, align 8 %17 = alloca %759, align 8 %18 = alloca %760, align 8 %19 = alloca %768, align 8 %20 = alloca %773, align 8 %21 = alloca %779, align 8 %22 = bitcast %618* %10 to { %554**, i64 }* %23 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %22, i32 0, i32 0 store %554** %3, %554*** %23, align 8 %24 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %22, i32 0, i32 1 store i64 %4, i64* %24, align 8 store %547* %0, %547** %11, align 8 store i32 %1, i32* %12, align 4 store i32 %2, i32* %13, align 4 store i32 %5, i32* %14, align 4 store %2* %6, %2** %15, align 8 store i8* %8, i8** %16, align 8 %25 = load %547*, %547** %11, align 8 %26 = bitcast %759* %17 to i8* call void @llvm.lifetime.start.p0i8(i64 32, i8* %26) #21 %27 = getelementptr inbounds %759, %759* %17, i32 0, i32 0 store %547* inttoptr (i64 -6148914691236517206 to %547*), %547** %27, align 8, !annotation !6 %28 = getelementptr inbounds %759, %759* %17, i32 0, i32 1 store %618* inttoptr (i64 -6148914691236517206 to %618*), %618** %28, align 8, !annotation !6 %29 = getelementptr inbounds %759, %759* %17, i32 0, i32 2 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %29, align 8, !annotation !6 %30 = getelementptr inbounds %759, %759* %17, i32 0, i32 3 store i32* inttoptr (i64 -6148914691236517206 to i32*), i32** %30, align 8, !annotation !6 %31 = getelementptr inbounds %759, %759* %17, i32 0, i32 0 store %547* %25, %547** %31, align 8 %32 = getelementptr inbounds %759, %759* %17, i32 0, i32 1 store %618* %10, %618** %32, align 8 %33 = getelementptr inbounds %759, %759* %17, i32 0, i32 2 store i32* %12, i32** %33, align 8 %34 = getelementptr inbounds %759, %759* %17, i32 0, i32 3 store i32* %13, i32** %34, align 8 %35 = load %2*, %2** %15, align 8 %36 = call noundef zeroext i1 @_ZNK8SkMatrix14hasPerspectiveEv(%2* noundef align 4 dereferenceable_or_null(40) %35) br i1 %36, label %52, label %37 37: ; preds = %9 %38 = getelementptr inbounds %547, %547* %25, i32 0, i32 0 %39 = load i32, i32* %38, align 8 %40 = icmp eq i32 %39, 2 br i1 %40, label %41, label %46 41: ; preds = %37 %42 = load i8*, i8** %16, align 8 %43 = bitcast i8* %42 to [4 x %764]* call void @160(%760* sret(%760) align 8 %18, %759* noundef align 8 dereferenceable_or_null(32) %17, [4 x %764]* noundef %43) %44 = load i32, i32* %14, align 4 %45 = load %2*, %2** %15, align 8 call void @159(%547* noundef align 8 dereferenceable_or_null(48) %25, %760* noundef byval(%760) align 8 %18, i32 noundef %44, %2* noundef align 4 dereferenceable(40) %45) br label %51 46: ; preds = %37 %47 = load i8*, i8** %16, align 8 %48 = bitcast i8* %47 to [4 x %772]* call void @162(%768* sret(%768) align 8 %19, %759* noundef align 8 dereferenceable_or_null(32) %17, [4 x %772]* noundef %48) %49 = load i32, i32* %14, align 4 %50 = load %2*, %2** %15, align 8 call void @161(%547* noundef align 8 dereferenceable_or_null(48) %25, %768* noundef byval(%768) align 8 %19, i32 noundef %49, %2* noundef align 4 dereferenceable(40) %50) br label %51 51: ; preds = %46, %41 br label %67 52: ; preds = %9 %53 = getelementptr inbounds %547, %547* %25, i32 0, i32 0 %54 = load i32, i32* %53, align 8 %55 = icmp eq i32 %54, 2 br i1 %55, label %56, label %61 56: ; preds = %52 %57 = load i8*, i8** %16, align 8 %58 = bitcast i8* %57 to [4 x %777]* call void @164(%773* sret(%773) align 8 %20, %759* noundef align 8 dereferenceable_or_null(32) %17, [4 x %777]* noundef %58) %59 = load i32, i32* %14, align 4 %60 = load %2*, %2** %15, align 8 call void @163(%547* noundef align 8 dereferenceable_or_null(48) %25, %773* noundef byval(%773) align 8 %20, i32 noundef %59, %2* noundef align 4 dereferenceable(40) %60) br label %66 61: ; preds = %52 %62 = load i8*, i8** %16, align 8 %63 = bitcast i8* %62 to [4 x %783]* call void @166(%779* sret(%779) align 8 %21, %759* noundef align 8 dereferenceable_or_null(32) %17, [4 x %783]* noundef %63) %64 = load i32, i32* %14, align 4 %65 = load %2*, %2** %15, align 8 call void @165(%547* noundef align 8 dereferenceable_or_null(48) %25, %779* noundef byval(%779) align 8 %21, i32 noundef %64, %2* noundef align 4 dereferenceable(40) %65) br label %66 66: ; preds = %61, %56 br label %67 67: ; preds = %66, %51 %68 = bitcast %759* %17 to i8* call void @llvm.lifetime.end.p0i8(i64 32, i8* %68) #21 ret void } ; Function Attrs: null_pointer_is_valid declare { %554**, i64 } @_ZNK6sktext3gpu11GlyphVector6glyphsEv(%551* noundef align 8 dereferenceable_or_null(104)) #8 ; Function Attrs: null_pointer_is_valid declare noundef align 4 dereferenceable(40) %2* @_ZN8SkMatrix12preTranslateEff(%2* noundef align 4 dereferenceable_or_null(40), float noundef, float noundef) #8 ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @159(%547* noundef align 8 dereferenceable_or_null(48) %0, %760* noundef byval(%760) align 8 %1, i32 noundef %2, %2* noundef align 4 dereferenceable(40) %3) #5 align 2 { %5 = alloca %547*, align 8 %6 = alloca i32, align 4 %7 = alloca %2*, align 8 %8 = alloca %760*, align 8 %9 = alloca %784, align 8 %10 = alloca %784, align 8 %11 = alloca %785, align 8 %12 = alloca [4 x %764]*, align 8 %13 = alloca %554**, align 8 %14 = alloca %549*, align 8 %15 = alloca %463, align 4 %16 = alloca %549, align 4 %17 = alloca float*, align 8 %18 = alloca float*, align 8 %19 = alloca float*, align 8 %20 = alloca float*, align 8 %21 = alloca %5, align 4 %22 = alloca %5, align 4 %23 = alloca %5, align 4 %24 = alloca %5, align 4 %25 = alloca %557, align 2 %26 = alloca i16*, align 8 %27 = alloca i16*, align 8 %28 = alloca i16*, align 8 %29 = alloca i16*, align 8 %30 = alloca %764, align 4 %31 = alloca %5, align 4 %32 = alloca %765, align 2 %33 = alloca %764, align 4 %34 = alloca %5, align 4 %35 = alloca %765, align 2 %36 = alloca %764, align 4 %37 = alloca %5, align 4 %38 = alloca %765, align 2 %39 = alloca %764, align 4 %40 = alloca %5, align 4 %41 = alloca %765, align 2 store %547* %0, %547** %5, align 8 store i32 %2, i32* %6, align 4 store %2* %3, %2** %7, align 8 %42 = load %547*, %547** %5, align 8 %43 = bitcast %760** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %43) #21 store %760* inttoptr (i64 -6148914691236517206 to %760*), %760** %8, align 8, !annotation !6 store %760* %1, %760** %8, align 8 %44 = bitcast %784* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %44) #21 %45 = getelementptr inbounds %784, %784* %9, i32 0, i32 0 store %760* inttoptr (i64 -6148914691236517206 to %760*), %760** %45, align 8, !annotation !6 %46 = getelementptr inbounds %784, %784* %9, i32 0, i32 1 store i64 -6148914691236517206, i64* %46, align 8, !annotation !6 %47 = load %760*, %760** %8, align 8 call void @167(%784* sret(%784) align 8 %9, %760* noundef align 8 dereferenceable_or_null(32) %47) %48 = bitcast %784* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %48) #21 %49 = getelementptr inbounds %784, %784* %10, i32 0, i32 0 store %760* inttoptr (i64 -6148914691236517206 to %760*), %760** %49, align 8, !annotation !6 %50 = getelementptr inbounds %784, %784* %10, i32 0, i32 1 store i64 -6148914691236517206, i64* %50, align 8, !annotation !6 %51 = load %760*, %760** %8, align 8 call void @168(%784* sret(%784) align 8 %10, %760* noundef align 8 dereferenceable_or_null(32) %51) br label %52 52: ; preds = %256, %4 %53 = call noundef zeroext i1 @169(%784* noundef align 8 dereferenceable_or_null(16) %9, %784* noundef align 8 dereferenceable(16) %10) br i1 %53, label %58, label %54 54: ; preds = %52 %55 = bitcast %784* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %55) #21 %56 = bitcast %784* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %56) #21 %57 = bitcast %760** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %57) #21 br label %258 58: ; preds = %52 %59 = bitcast %785* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %59) #21 %60 = getelementptr inbounds %785, %785* %11, i32 0, i32 0 %61 = getelementptr inbounds %786, %786* %60, i32 0, i32 0 %62 = getelementptr inbounds %787, %787* %61, i32 0, i32 0 store [4 x %764]* inttoptr (i64 -6148914691236517206 to [4 x %764]*), [4 x %764]** %62, align 8, !annotation !6 %63 = getelementptr inbounds %786, %786* %60, i32 0, i32 1 %64 = getelementptr inbounds %788, %788* %63, i32 0, i32 0 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %64, align 8, !annotation !6 %65 = getelementptr inbounds %786, %786* %60, i32 0, i32 2 %66 = getelementptr inbounds %789, %789* %65, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %66, align 8, !annotation !6 call void @170(%785* sret(%785) align 8 %11, %784* noundef align 8 dereferenceable_or_null(16) %9) %67 = bitcast [4 x %764]** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %67) #21 store [4 x %764]* inttoptr (i64 -6148914691236517206 to [4 x %764]*), [4 x %764]** %12, align 8, !annotation !6 %68 = call noundef align 4 dereferenceable(48) [4 x %764]* @171(%785* noundef align 8 dereferenceable(24) %11) #21 store [4 x %764]* %68, [4 x %764]** %12, align 8 %69 = bitcast %554*** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %69) #21 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %13, align 8, !annotation !6 %70 = call noundef align 8 dereferenceable(8) %554** @172(%785* noundef align 8 dereferenceable(24) %11) #21 store %554** %70, %554*** %13, align 8 %71 = bitcast %549** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %71) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %14, align 8, !annotation !6 %72 = call noundef align 4 dereferenceable(16) %549* @173(%785* noundef align 8 dereferenceable(24) %11) #21 store %549* %72, %549** %14, align 8 %73 = bitcast %463* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %73) #21 %74 = getelementptr inbounds %463, %463* %15, i32 0, i32 0 %75 = getelementptr inbounds [4 x float], [4 x float]* %74, i64 0, i64 0 store float 0xFFFFFFFFE0000000, float* %75, align 4, !annotation !6 %76 = getelementptr inbounds [4 x float], [4 x float]* %74, i64 0, i64 1 store float 0xFFFFFFFFE0000000, float* %76, align 4, !annotation !6 %77 = getelementptr inbounds [4 x float], [4 x float]* %74, i64 0, i64 2 store float 0xFFFFFFFFE0000000, float* %77, align 4, !annotation !6 %78 = getelementptr inbounds [4 x float], [4 x float]* %74, i64 0, i64 3 store float 0xFFFFFFFFE0000000, float* %78, align 4, !annotation !6 %79 = load %549*, %549** %14, align 8 %80 = bitcast %549* %16 to i8* %81 = bitcast %549* %79 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %80, i8* align 4 %81, i64 16, i1 false) %82 = bitcast %549* %16 to { <2 x float>, i64 }* %83 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %82, i32 0, i32 0 %84 = load <2 x float>, <2 x float>* %83, align 4 %85 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %82, i32 0, i32 1 %86 = load i64, i64* %85, align 4 %87 = call { <2 x float>, <2 x float> } @174(%547* noundef align 8 dereferenceable_or_null(48) %42, <2 x float> %84, i64 %86) %88 = getelementptr inbounds %463, %463* %15, i32 0, i32 0 %89 = bitcast [4 x float]* %88 to { <2 x float>, <2 x float> }* %90 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %89, i32 0, i32 0 %91 = extractvalue { <2 x float>, <2 x float> } %87, 0 store <2 x float> %91, <2 x float>* %90, align 4 %92 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %89, i32 0, i32 1 %93 = extractvalue { <2 x float>, <2 x float> } %87, 1 store <2 x float> %93, <2 x float>* %92, align 4 %94 = bitcast float** %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %94) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %17, align 8, !annotation !6 %95 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm0EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %95, float** %17, align 8 %96 = bitcast float** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %96) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %18, align 8, !annotation !6 %97 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm1EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %97, float** %18, align 8 %98 = bitcast float** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %98) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %19, align 8, !annotation !6 %99 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm2EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %99, float** %19, align 8 %100 = bitcast float** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %100) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %20, align 8, !annotation !6 %101 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm3EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %101, float** %20, align 8 %102 = bitcast %5* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %102) #21 %103 = getelementptr inbounds %5, %5* %21, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %103, align 4, !annotation !6 %104 = getelementptr inbounds %5, %5* %21, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %104, align 4, !annotation !6 %105 = load %2*, %2** %7, align 8 %106 = load float*, float** %17, align 8 %107 = load float, float* %106, align 4 %108 = load float*, float** %18, align 8 %109 = load float, float* %108, align 4 %110 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %105, float noundef %107, float noundef %109) %111 = bitcast %5* %21 to <2 x float>* store <2 x float> %110, <2 x float>* %111, align 4 %112 = bitcast %5* %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %112) #21 %113 = getelementptr inbounds %5, %5* %22, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %113, align 4, !annotation !6 %114 = getelementptr inbounds %5, %5* %22, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %114, align 4, !annotation !6 %115 = load %2*, %2** %7, align 8 %116 = load float*, float** %17, align 8 %117 = load float, float* %116, align 4 %118 = load float*, float** %20, align 8 %119 = load float, float* %118, align 4 %120 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %115, float noundef %117, float noundef %119) %121 = bitcast %5* %22 to <2 x float>* store <2 x float> %120, <2 x float>* %121, align 4 %122 = bitcast %5* %23 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %122) #21 %123 = getelementptr inbounds %5, %5* %23, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %123, align 4, !annotation !6 %124 = getelementptr inbounds %5, %5* %23, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %124, align 4, !annotation !6 %125 = load %2*, %2** %7, align 8 %126 = load float*, float** %19, align 8 %127 = load float, float* %126, align 4 %128 = load float*, float** %18, align 8 %129 = load float, float* %128, align 4 %130 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %125, float noundef %127, float noundef %129) %131 = bitcast %5* %23 to <2 x float>* store <2 x float> %130, <2 x float>* %131, align 4 %132 = bitcast %5* %24 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %132) #21 %133 = getelementptr inbounds %5, %5* %24, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %133, align 4, !annotation !6 %134 = getelementptr inbounds %5, %5* %24, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %134, align 4, !annotation !6 %135 = load %2*, %2** %7, align 8 %136 = load float*, float** %19, align 8 %137 = load float, float* %136, align 4 %138 = load float*, float** %20, align 8 %139 = load float, float* %138, align 4 %140 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %135, float noundef %137, float noundef %139) %141 = bitcast %5* %24 to <2 x float>* store <2 x float> %140, <2 x float>* %141, align 4 %142 = bitcast %557* %25 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %142) #21 %143 = getelementptr inbounds %557, %557* %25, i32 0, i32 0 %144 = getelementptr inbounds [4 x i16], [4 x i16]* %143, i64 0, i64 0 store i16 -21846, i16* %144, align 2, !annotation !6 %145 = getelementptr inbounds [4 x i16], [4 x i16]* %143, i64 0, i64 1 store i16 -21846, i16* %145, align 2, !annotation !6 %146 = getelementptr inbounds [4 x i16], [4 x i16]* %143, i64 0, i64 2 store i16 -21846, i16* %146, align 2, !annotation !6 %147 = getelementptr inbounds [4 x i16], [4 x i16]* %143, i64 0, i64 3 store i16 -21846, i16* %147, align 2, !annotation !6 %148 = load %554**, %554*** %13, align 8 %149 = load %554*, %554** %148, align 8 %150 = getelementptr inbounds %554, %554* %149, i32 0, i32 1 %151 = call i64 @_ZNK5skgpu12AtlasLocator6getUVsEv(%555* noundef align 8 dereferenceable_or_null(16) %150) %152 = getelementptr inbounds %557, %557* %25, i32 0, i32 0 %153 = bitcast [4 x i16]* %152 to i64* store i64 %151, i64* %153, align 2 %154 = bitcast i16** %26 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %154) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %26, align 8, !annotation !6 %155 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm0EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %155, i16** %26, align 8 %156 = bitcast i16** %27 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %156) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %27, align 8, !annotation !6 %157 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm1EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %157, i16** %27, align 8 %158 = bitcast i16** %28 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %158) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %28, align 8, !annotation !6 %159 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm2EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %159, i16** %28, align 8 %160 = bitcast i16** %29 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %160) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %29, align 8, !annotation !6 %161 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm3EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %161, i16** %29, align 8 %162 = bitcast %764* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %162) #21 %163 = bitcast %5* %31 to i8* %164 = bitcast %5* %21 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %163, i8* align 4 %164, i64 8, i1 false) %165 = load i32, i32* %6, align 4 %166 = getelementptr inbounds %765, %765* %32, i32 0, i32 0 %167 = load i16*, i16** %26, align 8 %168 = load i16, i16* %167, align 2 store i16 %168, i16* %166, align 2 %169 = getelementptr inbounds %765, %765* %32, i32 0, i32 1 %170 = load i16*, i16** %27, align 8 %171 = load i16, i16* %170, align 2 store i16 %171, i16* %169, align 2 %172 = bitcast %5* %31 to <2 x float>* %173 = load <2 x float>, <2 x float>* %172, align 4 %174 = bitcast %765* %32 to i32* %175 = load i32, i32* %174, align 2 call void @175(%764* noundef align 4 dereferenceable_or_null(12) %30, <2 x float> %173, i32 noundef %165, i32 %175) %176 = load [4 x %764]*, [4 x %764]** %12, align 8 %177 = getelementptr inbounds [4 x %764], [4 x %764]* %176, i64 0, i64 0 %178 = bitcast %764* %177 to i8* %179 = bitcast %764* %30 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %178, i8* align 4 %179, i64 12, i1 false) %180 = bitcast %764* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %180) #21 %181 = bitcast %764* %33 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %181) #21 %182 = bitcast %5* %34 to i8* %183 = bitcast %5* %22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %182, i8* align 4 %183, i64 8, i1 false) %184 = load i32, i32* %6, align 4 %185 = getelementptr inbounds %765, %765* %35, i32 0, i32 0 %186 = load i16*, i16** %26, align 8 %187 = load i16, i16* %186, align 2 store i16 %187, i16* %185, align 2 %188 = getelementptr inbounds %765, %765* %35, i32 0, i32 1 %189 = load i16*, i16** %29, align 8 %190 = load i16, i16* %189, align 2 store i16 %190, i16* %188, align 2 %191 = bitcast %5* %34 to <2 x float>* %192 = load <2 x float>, <2 x float>* %191, align 4 %193 = bitcast %765* %35 to i32* %194 = load i32, i32* %193, align 2 call void @175(%764* noundef align 4 dereferenceable_or_null(12) %33, <2 x float> %192, i32 noundef %184, i32 %194) %195 = load [4 x %764]*, [4 x %764]** %12, align 8 %196 = getelementptr inbounds [4 x %764], [4 x %764]* %195, i64 0, i64 1 %197 = bitcast %764* %196 to i8* %198 = bitcast %764* %33 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %197, i8* align 4 %198, i64 12, i1 false) %199 = bitcast %764* %33 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %199) #21 %200 = bitcast %764* %36 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %200) #21 %201 = bitcast %5* %37 to i8* %202 = bitcast %5* %23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %201, i8* align 4 %202, i64 8, i1 false) %203 = load i32, i32* %6, align 4 %204 = getelementptr inbounds %765, %765* %38, i32 0, i32 0 %205 = load i16*, i16** %28, align 8 %206 = load i16, i16* %205, align 2 store i16 %206, i16* %204, align 2 %207 = getelementptr inbounds %765, %765* %38, i32 0, i32 1 %208 = load i16*, i16** %27, align 8 %209 = load i16, i16* %208, align 2 store i16 %209, i16* %207, align 2 %210 = bitcast %5* %37 to <2 x float>* %211 = load <2 x float>, <2 x float>* %210, align 4 %212 = bitcast %765* %38 to i32* %213 = load i32, i32* %212, align 2 call void @175(%764* noundef align 4 dereferenceable_or_null(12) %36, <2 x float> %211, i32 noundef %203, i32 %213) %214 = load [4 x %764]*, [4 x %764]** %12, align 8 %215 = getelementptr inbounds [4 x %764], [4 x %764]* %214, i64 0, i64 2 %216 = bitcast %764* %215 to i8* %217 = bitcast %764* %36 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %216, i8* align 4 %217, i64 12, i1 false) %218 = bitcast %764* %36 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %218) #21 %219 = bitcast %764* %39 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %219) #21 %220 = bitcast %5* %40 to i8* %221 = bitcast %5* %24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %220, i8* align 4 %221, i64 8, i1 false) %222 = load i32, i32* %6, align 4 %223 = getelementptr inbounds %765, %765* %41, i32 0, i32 0 %224 = load i16*, i16** %28, align 8 %225 = load i16, i16* %224, align 2 store i16 %225, i16* %223, align 2 %226 = getelementptr inbounds %765, %765* %41, i32 0, i32 1 %227 = load i16*, i16** %29, align 8 %228 = load i16, i16* %227, align 2 store i16 %228, i16* %226, align 2 %229 = bitcast %5* %40 to <2 x float>* %230 = load <2 x float>, <2 x float>* %229, align 4 %231 = bitcast %765* %41 to i32* %232 = load i32, i32* %231, align 2 call void @175(%764* noundef align 4 dereferenceable_or_null(12) %39, <2 x float> %230, i32 noundef %222, i32 %232) %233 = load [4 x %764]*, [4 x %764]** %12, align 8 %234 = getelementptr inbounds [4 x %764], [4 x %764]* %233, i64 0, i64 3 %235 = bitcast %764* %234 to i8* %236 = bitcast %764* %39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %235, i8* align 4 %236, i64 12, i1 false) %237 = bitcast %764* %39 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %237) #21 %238 = bitcast i16** %29 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %238) #21 %239 = bitcast i16** %28 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %239) #21 %240 = bitcast i16** %27 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %240) #21 %241 = bitcast i16** %26 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %241) #21 %242 = bitcast %557* %25 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %242) #21 %243 = bitcast %5* %24 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %243) #21 %244 = bitcast %5* %23 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %244) #21 %245 = bitcast %5* %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %245) #21 %246 = bitcast %5* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %246) #21 %247 = bitcast float** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %247) #21 %248 = bitcast float** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %248) #21 %249 = bitcast float** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %249) #21 %250 = bitcast float** %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %250) #21 %251 = bitcast %463* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %251) #21 %252 = bitcast %549** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %252) #21 %253 = bitcast %554*** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %253) #21 %254 = bitcast [4 x %764]** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %254) #21 %255 = bitcast %785* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %255) #21 br label %256 256: ; preds = %58 %257 = call noundef align 8 dereferenceable(16) %784* @176(%784* noundef align 8 dereferenceable_or_null(16) %9) br label %52 258: ; preds = %54 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @160(%760* noalias sret(%760) align 8 %0, %759* noundef align 8 dereferenceable_or_null(32) %1, [4 x %764]* noundef %2) #7 align 2 { %4 = alloca %759*, align 8 %5 = alloca [4 x %764]*, align 8 %6 = alloca %618, align 8 %7 = alloca %548, align 8 store %759* %1, %759** %4, align 8 store [4 x %764]* %2, [4 x %764]** %5, align 8 %8 = load %759*, %759** %4, align 8 %9 = getelementptr inbounds %759, %759* %8, i32 0, i32 0 %10 = load %547*, %547** %9, align 8 %11 = bitcast %618* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %11) #21 %12 = getelementptr inbounds %759, %759* %8, i32 0, i32 1 %13 = load %618*, %618** %12, align 8 %14 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %15 = load i32*, i32** %14, align 8 %16 = load i32, i32* %15, align 4 %17 = sext i32 %16 to i64 %18 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %19 = load i32*, i32** %18, align 8 %20 = load i32, i32* %19, align 4 %21 = sext i32 %20 to i64 %22 = call { %554**, i64 } @_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE7subspanEmm(%618* noundef align 8 dereferenceable_or_null(16) %13, i64 noundef %17, i64 noundef %21) %23 = bitcast %618* %6 to { %554**, i64 }* %24 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 0 %25 = extractvalue { %554**, i64 } %22, 0 store %554** %25, %554*** %24, align 8 %26 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 1 %27 = extractvalue { %554**, i64 } %22, 1 store i64 %27, i64* %26, align 8 %28 = bitcast %548* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %28) #21 %29 = getelementptr inbounds %547, %547* %10, i32 0, i32 4 %30 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %31 = load i32*, i32** %30, align 8 %32 = load i32, i32* %31, align 4 %33 = sext i32 %32 to i64 %34 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %35 = load i32*, i32** %34, align 8 %36 = load i32, i32* %35, align 4 %37 = sext i32 %36 to i64 %38 = call { %549*, i64 } @194(%548* noundef align 8 dereferenceable_or_null(16) %29, i64 noundef %33, i64 noundef %37) %39 = bitcast %548* %7 to { %549*, i64 }* %40 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 0 %41 = extractvalue { %549*, i64 } %38, 0 store %549* %41, %549** %40, align 8 %42 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 1 %43 = extractvalue { %549*, i64 } %38, 1 store i64 %43, i64* %42, align 8 call void @193(%760* sret(%760) align 8 %0, [4 x %764]** noundef align 8 dereferenceable(8) %5, %618* noundef align 8 dereferenceable(16) %6, %548* noundef align 8 dereferenceable(16) %7) %44 = bitcast %548* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %44) #21 %45 = bitcast %618* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %45) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @161(%547* noundef align 8 dereferenceable_or_null(48) %0, %768* noundef byval(%768) align 8 %1, i32 noundef %2, %2* noundef align 4 dereferenceable(40) %3) #5 align 2 { %5 = alloca %547*, align 8 %6 = alloca i32, align 4 %7 = alloca %2*, align 8 %8 = alloca %768*, align 8 %9 = alloca %790, align 8 %10 = alloca %790, align 8 %11 = alloca %791, align 8 %12 = alloca [4 x %772]*, align 8 %13 = alloca %554**, align 8 %14 = alloca %549*, align 8 %15 = alloca %463, align 4 %16 = alloca %549, align 4 %17 = alloca float*, align 8 %18 = alloca float*, align 8 %19 = alloca float*, align 8 %20 = alloca float*, align 8 %21 = alloca %5, align 4 %22 = alloca %5, align 4 %23 = alloca %5, align 4 %24 = alloca %5, align 4 %25 = alloca %557, align 2 %26 = alloca i16*, align 8 %27 = alloca i16*, align 8 %28 = alloca i16*, align 8 %29 = alloca i16*, align 8 %30 = alloca %772, align 4 %31 = alloca %772, align 4 %32 = alloca %772, align 4 %33 = alloca %772, align 4 store %547* %0, %547** %5, align 8 store i32 %2, i32* %6, align 4 store %2* %3, %2** %7, align 8 %34 = load %547*, %547** %5, align 8 %35 = bitcast %768** %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %35) #21 store %768* inttoptr (i64 -6148914691236517206 to %768*), %768** %8, align 8, !annotation !6 store %768* %1, %768** %8, align 8 %36 = bitcast %790* %9 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %36) #21 %37 = getelementptr inbounds %790, %790* %9, i32 0, i32 0 store %768* inttoptr (i64 -6148914691236517206 to %768*), %768** %37, align 8, !annotation !6 %38 = getelementptr inbounds %790, %790* %9, i32 0, i32 1 store i64 -6148914691236517206, i64* %38, align 8, !annotation !6 %39 = load %768*, %768** %8, align 8 call void @207(%790* sret(%790) align 8 %9, %768* noundef align 8 dereferenceable_or_null(32) %39) %40 = bitcast %790* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %40) #21 %41 = getelementptr inbounds %790, %790* %10, i32 0, i32 0 store %768* inttoptr (i64 -6148914691236517206 to %768*), %768** %41, align 8, !annotation !6 %42 = getelementptr inbounds %790, %790* %10, i32 0, i32 1 store i64 -6148914691236517206, i64* %42, align 8, !annotation !6 %43 = load %768*, %768** %8, align 8 call void @208(%790* sret(%790) align 8 %10, %768* noundef align 8 dereferenceable_or_null(32) %43) br label %44 44: ; preds = %244, %4 %45 = call noundef zeroext i1 @209(%790* noundef align 8 dereferenceable_or_null(16) %9, %790* noundef align 8 dereferenceable(16) %10) br i1 %45, label %50, label %46 46: ; preds = %44 %47 = bitcast %790* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) #21 %48 = bitcast %790* %9 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %48) #21 %49 = bitcast %768** %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %49) #21 br label %246 50: ; preds = %44 %51 = bitcast %791* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %51) #21 %52 = getelementptr inbounds %791, %791* %11, i32 0, i32 0 %53 = getelementptr inbounds %792, %792* %52, i32 0, i32 0 %54 = getelementptr inbounds %793, %793* %53, i32 0, i32 0 store [4 x %772]* inttoptr (i64 -6148914691236517206 to [4 x %772]*), [4 x %772]** %54, align 8, !annotation !6 %55 = getelementptr inbounds %792, %792* %52, i32 0, i32 1 %56 = getelementptr inbounds %788, %788* %55, i32 0, i32 0 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %56, align 8, !annotation !6 %57 = getelementptr inbounds %792, %792* %52, i32 0, i32 2 %58 = getelementptr inbounds %789, %789* %57, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %58, align 8, !annotation !6 call void @210(%791* sret(%791) align 8 %11, %790* noundef align 8 dereferenceable_or_null(16) %9) %59 = bitcast [4 x %772]** %12 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %59) #21 store [4 x %772]* inttoptr (i64 -6148914691236517206 to [4 x %772]*), [4 x %772]** %12, align 8, !annotation !6 %60 = call noundef align 4 dereferenceable(64) [4 x %772]* @211(%791* noundef align 8 dereferenceable(24) %11) #21 store [4 x %772]* %60, [4 x %772]** %12, align 8 %61 = bitcast %554*** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %61) #21 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %13, align 8, !annotation !6 %62 = call noundef align 8 dereferenceable(8) %554** @212(%791* noundef align 8 dereferenceable(24) %11) #21 store %554** %62, %554*** %13, align 8 %63 = bitcast %549** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %63) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %14, align 8, !annotation !6 %64 = call noundef align 4 dereferenceable(16) %549* @213(%791* noundef align 8 dereferenceable(24) %11) #21 store %549* %64, %549** %14, align 8 %65 = bitcast %463* %15 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %65) #21 %66 = getelementptr inbounds %463, %463* %15, i32 0, i32 0 %67 = getelementptr inbounds [4 x float], [4 x float]* %66, i64 0, i64 0 store float 0xFFFFFFFFE0000000, float* %67, align 4, !annotation !6 %68 = getelementptr inbounds [4 x float], [4 x float]* %66, i64 0, i64 1 store float 0xFFFFFFFFE0000000, float* %68, align 4, !annotation !6 %69 = getelementptr inbounds [4 x float], [4 x float]* %66, i64 0, i64 2 store float 0xFFFFFFFFE0000000, float* %69, align 4, !annotation !6 %70 = getelementptr inbounds [4 x float], [4 x float]* %66, i64 0, i64 3 store float 0xFFFFFFFFE0000000, float* %70, align 4, !annotation !6 %71 = load %549*, %549** %14, align 8 %72 = bitcast %549* %16 to i8* %73 = bitcast %549* %71 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %72, i8* align 4 %73, i64 16, i1 false) %74 = bitcast %549* %16 to { <2 x float>, i64 }* %75 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %74, i32 0, i32 0 %76 = load <2 x float>, <2 x float>* %75, align 4 %77 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %74, i32 0, i32 1 %78 = load i64, i64* %77, align 4 %79 = call { <2 x float>, <2 x float> } @174(%547* noundef align 8 dereferenceable_or_null(48) %34, <2 x float> %76, i64 %78) %80 = getelementptr inbounds %463, %463* %15, i32 0, i32 0 %81 = bitcast [4 x float]* %80 to { <2 x float>, <2 x float> }* %82 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %81, i32 0, i32 0 %83 = extractvalue { <2 x float>, <2 x float> } %79, 0 store <2 x float> %83, <2 x float>* %82, align 4 %84 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %81, i32 0, i32 1 %85 = extractvalue { <2 x float>, <2 x float> } %79, 1 store <2 x float> %85, <2 x float>* %84, align 4 %86 = bitcast float** %17 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %86) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %17, align 8, !annotation !6 %87 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm0EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %87, float** %17, align 8 %88 = bitcast float** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %88) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %18, align 8, !annotation !6 %89 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm1EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %89, float** %18, align 8 %90 = bitcast float** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %90) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %19, align 8, !annotation !6 %91 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm2EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %91, float** %19, align 8 %92 = bitcast float** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %92) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %20, align 8, !annotation !6 %93 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm3EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %15) #21 store float* %93, float** %20, align 8 %94 = bitcast %5* %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %94) #21 %95 = getelementptr inbounds %5, %5* %21, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %95, align 4, !annotation !6 %96 = getelementptr inbounds %5, %5* %21, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %96, align 4, !annotation !6 %97 = load %2*, %2** %7, align 8 %98 = load float*, float** %17, align 8 %99 = load float, float* %98, align 4 %100 = load float*, float** %18, align 8 %101 = load float, float* %100, align 4 %102 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %97, float noundef %99, float noundef %101) %103 = bitcast %5* %21 to <2 x float>* store <2 x float> %102, <2 x float>* %103, align 4 %104 = bitcast %5* %22 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %104) #21 %105 = getelementptr inbounds %5, %5* %22, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %105, align 4, !annotation !6 %106 = getelementptr inbounds %5, %5* %22, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %106, align 4, !annotation !6 %107 = load %2*, %2** %7, align 8 %108 = load float*, float** %17, align 8 %109 = load float, float* %108, align 4 %110 = load float*, float** %20, align 8 %111 = load float, float* %110, align 4 %112 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %107, float noundef %109, float noundef %111) %113 = bitcast %5* %22 to <2 x float>* store <2 x float> %112, <2 x float>* %113, align 4 %114 = bitcast %5* %23 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %114) #21 %115 = getelementptr inbounds %5, %5* %23, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %115, align 4, !annotation !6 %116 = getelementptr inbounds %5, %5* %23, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %116, align 4, !annotation !6 %117 = load %2*, %2** %7, align 8 %118 = load float*, float** %19, align 8 %119 = load float, float* %118, align 4 %120 = load float*, float** %18, align 8 %121 = load float, float* %120, align 4 %122 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %117, float noundef %119, float noundef %121) %123 = bitcast %5* %23 to <2 x float>* store <2 x float> %122, <2 x float>* %123, align 4 %124 = bitcast %5* %24 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %124) #21 %125 = getelementptr inbounds %5, %5* %24, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %125, align 4, !annotation !6 %126 = getelementptr inbounds %5, %5* %24, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %126, align 4, !annotation !6 %127 = load %2*, %2** %7, align 8 %128 = load float*, float** %19, align 8 %129 = load float, float* %128, align 4 %130 = load float*, float** %20, align 8 %131 = load float, float* %130, align 4 %132 = call <2 x float> @_ZNK8SkMatrix5mapXYEff(%2* noundef align 4 dereferenceable_or_null(40) %127, float noundef %129, float noundef %131) %133 = bitcast %5* %24 to <2 x float>* store <2 x float> %132, <2 x float>* %133, align 4 %134 = bitcast %557* %25 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %134) #21 %135 = getelementptr inbounds %557, %557* %25, i32 0, i32 0 %136 = getelementptr inbounds [4 x i16], [4 x i16]* %135, i64 0, i64 0 store i16 -21846, i16* %136, align 2, !annotation !6 %137 = getelementptr inbounds [4 x i16], [4 x i16]* %135, i64 0, i64 1 store i16 -21846, i16* %137, align 2, !annotation !6 %138 = getelementptr inbounds [4 x i16], [4 x i16]* %135, i64 0, i64 2 store i16 -21846, i16* %138, align 2, !annotation !6 %139 = getelementptr inbounds [4 x i16], [4 x i16]* %135, i64 0, i64 3 store i16 -21846, i16* %139, align 2, !annotation !6 %140 = load %554**, %554*** %13, align 8 %141 = load %554*, %554** %140, align 8 %142 = getelementptr inbounds %554, %554* %141, i32 0, i32 1 %143 = call i64 @_ZNK5skgpu12AtlasLocator6getUVsEv(%555* noundef align 8 dereferenceable_or_null(16) %142) %144 = getelementptr inbounds %557, %557* %25, i32 0, i32 0 %145 = bitcast [4 x i16]* %144 to i64* store i64 %143, i64* %145, align 2 %146 = bitcast i16** %26 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %146) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %26, align 8, !annotation !6 %147 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm0EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %147, i16** %26, align 8 %148 = bitcast i16** %27 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %148) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %27, align 8, !annotation !6 %149 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm1EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %149, i16** %27, align 8 %150 = bitcast i16** %28 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %150) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %28, align 8, !annotation !6 %151 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm2EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %151, i16** %28, align 8 %152 = bitcast i16** %29 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %152) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %29, align 8, !annotation !6 %153 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm3EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %25) #21 store i16* %153, i16** %29, align 8 %154 = bitcast %772* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %154) #21 %155 = getelementptr inbounds %772, %772* %30, i32 0, i32 0 %156 = bitcast %5* %155 to i8* %157 = bitcast %5* %21 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %156, i8* align 4 %157, i64 8, i1 false) %158 = getelementptr inbounds %772, %772* %30, i32 0, i32 1 %159 = load i32, i32* %6, align 4 store i32 %159, i32* %158, align 4 %160 = getelementptr inbounds %772, %772* %30, i32 0, i32 2 %161 = getelementptr inbounds %765, %765* %160, i32 0, i32 0 %162 = load i16*, i16** %26, align 8 %163 = load i16, i16* %162, align 2 store i16 %163, i16* %161, align 4 %164 = getelementptr inbounds %765, %765* %160, i32 0, i32 1 %165 = load i16*, i16** %27, align 8 %166 = load i16, i16* %165, align 2 store i16 %166, i16* %164, align 2 %167 = load [4 x %772]*, [4 x %772]** %12, align 8 %168 = getelementptr inbounds [4 x %772], [4 x %772]* %167, i64 0, i64 0 %169 = bitcast %772* %168 to i8* %170 = bitcast %772* %30 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %169, i8* align 4 %170, i64 16, i1 false) %171 = bitcast %772* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %171) #21 %172 = bitcast %772* %31 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %172) #21 %173 = getelementptr inbounds %772, %772* %31, i32 0, i32 0 %174 = bitcast %5* %173 to i8* %175 = bitcast %5* %22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %174, i8* align 4 %175, i64 8, i1 false) %176 = getelementptr inbounds %772, %772* %31, i32 0, i32 1 %177 = load i32, i32* %6, align 4 store i32 %177, i32* %176, align 4 %178 = getelementptr inbounds %772, %772* %31, i32 0, i32 2 %179 = getelementptr inbounds %765, %765* %178, i32 0, i32 0 %180 = load i16*, i16** %26, align 8 %181 = load i16, i16* %180, align 2 store i16 %181, i16* %179, align 4 %182 = getelementptr inbounds %765, %765* %178, i32 0, i32 1 %183 = load i16*, i16** %29, align 8 %184 = load i16, i16* %183, align 2 store i16 %184, i16* %182, align 2 %185 = load [4 x %772]*, [4 x %772]** %12, align 8 %186 = getelementptr inbounds [4 x %772], [4 x %772]* %185, i64 0, i64 1 %187 = bitcast %772* %186 to i8* %188 = bitcast %772* %31 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %187, i8* align 4 %188, i64 16, i1 false) %189 = bitcast %772* %31 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %189) #21 %190 = bitcast %772* %32 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %190) #21 %191 = getelementptr inbounds %772, %772* %32, i32 0, i32 0 %192 = bitcast %5* %191 to i8* %193 = bitcast %5* %23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %192, i8* align 4 %193, i64 8, i1 false) %194 = getelementptr inbounds %772, %772* %32, i32 0, i32 1 %195 = load i32, i32* %6, align 4 store i32 %195, i32* %194, align 4 %196 = getelementptr inbounds %772, %772* %32, i32 0, i32 2 %197 = getelementptr inbounds %765, %765* %196, i32 0, i32 0 %198 = load i16*, i16** %28, align 8 %199 = load i16, i16* %198, align 2 store i16 %199, i16* %197, align 4 %200 = getelementptr inbounds %765, %765* %196, i32 0, i32 1 %201 = load i16*, i16** %27, align 8 %202 = load i16, i16* %201, align 2 store i16 %202, i16* %200, align 2 %203 = load [4 x %772]*, [4 x %772]** %12, align 8 %204 = getelementptr inbounds [4 x %772], [4 x %772]* %203, i64 0, i64 2 %205 = bitcast %772* %204 to i8* %206 = bitcast %772* %32 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %205, i8* align 4 %206, i64 16, i1 false) %207 = bitcast %772* %32 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %207) #21 %208 = bitcast %772* %33 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %208) #21 %209 = getelementptr inbounds %772, %772* %33, i32 0, i32 0 %210 = bitcast %5* %209 to i8* %211 = bitcast %5* %24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %210, i8* align 4 %211, i64 8, i1 false) %212 = getelementptr inbounds %772, %772* %33, i32 0, i32 1 %213 = load i32, i32* %6, align 4 store i32 %213, i32* %212, align 4 %214 = getelementptr inbounds %772, %772* %33, i32 0, i32 2 %215 = getelementptr inbounds %765, %765* %214, i32 0, i32 0 %216 = load i16*, i16** %28, align 8 %217 = load i16, i16* %216, align 2 store i16 %217, i16* %215, align 4 %218 = getelementptr inbounds %765, %765* %214, i32 0, i32 1 %219 = load i16*, i16** %29, align 8 %220 = load i16, i16* %219, align 2 store i16 %220, i16* %218, align 2 %221 = load [4 x %772]*, [4 x %772]** %12, align 8 %222 = getelementptr inbounds [4 x %772], [4 x %772]* %221, i64 0, i64 3 %223 = bitcast %772* %222 to i8* %224 = bitcast %772* %33 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %223, i8* align 4 %224, i64 16, i1 false) %225 = bitcast %772* %33 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %225) #21 %226 = bitcast i16** %29 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %226) #21 %227 = bitcast i16** %28 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %227) #21 %228 = bitcast i16** %27 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %228) #21 %229 = bitcast i16** %26 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %229) #21 %230 = bitcast %557* %25 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %230) #21 %231 = bitcast %5* %24 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %231) #21 %232 = bitcast %5* %23 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %232) #21 %233 = bitcast %5* %22 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %233) #21 %234 = bitcast %5* %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %234) #21 %235 = bitcast float** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %235) #21 %236 = bitcast float** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %236) #21 %237 = bitcast float** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %237) #21 %238 = bitcast float** %17 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %238) #21 %239 = bitcast %463* %15 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %239) #21 %240 = bitcast %549** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %240) #21 %241 = bitcast %554*** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %241) #21 %242 = bitcast [4 x %772]** %12 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %242) #21 %243 = bitcast %791* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %243) #21 br label %244 244: ; preds = %50 %245 = call noundef align 8 dereferenceable(16) %790* @214(%790* noundef align 8 dereferenceable_or_null(16) %9) br label %44 246: ; preds = %46 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @162(%768* noalias sret(%768) align 8 %0, %759* noundef align 8 dereferenceable_or_null(32) %1, [4 x %772]* noundef %2) #7 align 2 { %4 = alloca %759*, align 8 %5 = alloca [4 x %772]*, align 8 %6 = alloca %618, align 8 %7 = alloca %548, align 8 store %759* %1, %759** %4, align 8 store [4 x %772]* %2, [4 x %772]** %5, align 8 %8 = load %759*, %759** %4, align 8 %9 = getelementptr inbounds %759, %759* %8, i32 0, i32 0 %10 = load %547*, %547** %9, align 8 %11 = bitcast %618* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %11) #21 %12 = getelementptr inbounds %759, %759* %8, i32 0, i32 1 %13 = load %618*, %618** %12, align 8 %14 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %15 = load i32*, i32** %14, align 8 %16 = load i32, i32* %15, align 4 %17 = sext i32 %16 to i64 %18 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %19 = load i32*, i32** %18, align 8 %20 = load i32, i32* %19, align 4 %21 = sext i32 %20 to i64 %22 = call { %554**, i64 } @_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE7subspanEmm(%618* noundef align 8 dereferenceable_or_null(16) %13, i64 noundef %17, i64 noundef %21) %23 = bitcast %618* %6 to { %554**, i64 }* %24 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 0 %25 = extractvalue { %554**, i64 } %22, 0 store %554** %25, %554*** %24, align 8 %26 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 1 %27 = extractvalue { %554**, i64 } %22, 1 store i64 %27, i64* %26, align 8 %28 = bitcast %548* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %28) #21 %29 = getelementptr inbounds %547, %547* %10, i32 0, i32 4 %30 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %31 = load i32*, i32** %30, align 8 %32 = load i32, i32* %31, align 4 %33 = sext i32 %32 to i64 %34 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %35 = load i32*, i32** %34, align 8 %36 = load i32, i32* %35, align 4 %37 = sext i32 %36 to i64 %38 = call { %549*, i64 } @194(%548* noundef align 8 dereferenceable_or_null(16) %29, i64 noundef %33, i64 noundef %37) %39 = bitcast %548* %7 to { %549*, i64 }* %40 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 0 %41 = extractvalue { %549*, i64 } %38, 0 store %549* %41, %549** %40, align 8 %42 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 1 %43 = extractvalue { %549*, i64 } %38, 1 store i64 %43, i64* %42, align 8 call void @228(%768* sret(%768) align 8 %0, [4 x %772]** noundef align 8 dereferenceable(8) %5, %618* noundef align 8 dereferenceable(16) %6, %548* noundef align 8 dereferenceable(16) %7) %44 = bitcast %548* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %44) #21 %45 = bitcast %618* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %45) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @163(%547* noundef align 8 dereferenceable_or_null(48) %0, %773* noundef byval(%773) align 8 %1, i32 noundef %2, %2* noundef align 4 dereferenceable(40) %3) #5 align 2 { %5 = alloca %547*, align 8 %6 = alloca i32, align 4 %7 = alloca %2*, align 8 %8 = alloca %794, align 8 %9 = alloca %773*, align 8 %10 = alloca %795, align 8 %11 = alloca %795, align 8 %12 = alloca %796, align 8 %13 = alloca [4 x %777]*, align 8 %14 = alloca %554**, align 8 %15 = alloca %549*, align 8 %16 = alloca %463, align 4 %17 = alloca %549, align 4 %18 = alloca float*, align 8 %19 = alloca float*, align 8 %20 = alloca float*, align 8 %21 = alloca float*, align 8 %22 = alloca %778, align 4 %23 = alloca { <2 x float>, float }, align 8 %24 = alloca %778, align 4 %25 = alloca { <2 x float>, float }, align 8 %26 = alloca %778, align 4 %27 = alloca { <2 x float>, float }, align 8 %28 = alloca %778, align 4 %29 = alloca { <2 x float>, float }, align 8 %30 = alloca %557, align 2 %31 = alloca i16*, align 8 %32 = alloca i16*, align 8 %33 = alloca i16*, align 8 %34 = alloca i16*, align 8 %35 = alloca %777, align 4 %36 = alloca %778, align 4 %37 = alloca %765, align 2 %38 = alloca { <2 x float>, float }, align 4 %39 = alloca %777, align 4 %40 = alloca %778, align 4 %41 = alloca %765, align 2 %42 = alloca { <2 x float>, float }, align 4 %43 = alloca %777, align 4 %44 = alloca %778, align 4 %45 = alloca %765, align 2 %46 = alloca { <2 x float>, float }, align 4 %47 = alloca %777, align 4 %48 = alloca %778, align 4 %49 = alloca %765, align 2 %50 = alloca { <2 x float>, float }, align 4 store %547* %0, %547** %5, align 8 store i32 %2, i32* %6, align 4 store %2* %3, %2** %7, align 8 %51 = load %547*, %547** %5, align 8 %52 = bitcast %794* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %52) #21 %53 = getelementptr inbounds %794, %794* %8, i32 0, i32 0 store %2* inttoptr (i64 -6148914691236517206 to %2*), %2** %53, align 8, !annotation !6 %54 = getelementptr inbounds %794, %794* %8, i32 0, i32 0 %55 = load %2*, %2** %7, align 8 store %2* %55, %2** %54, align 8 %56 = bitcast %773** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %56) #21 store %773* inttoptr (i64 -6148914691236517206 to %773*), %773** %9, align 8, !annotation !6 store %773* %1, %773** %9, align 8 %57 = bitcast %795* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %57) #21 %58 = getelementptr inbounds %795, %795* %10, i32 0, i32 0 store %773* inttoptr (i64 -6148914691236517206 to %773*), %773** %58, align 8, !annotation !6 %59 = getelementptr inbounds %795, %795* %10, i32 0, i32 1 store i64 -6148914691236517206, i64* %59, align 8, !annotation !6 %60 = load %773*, %773** %9, align 8 call void @236(%795* sret(%795) align 8 %10, %773* noundef align 8 dereferenceable_or_null(32) %60) %61 = bitcast %795* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %61) #21 %62 = getelementptr inbounds %795, %795* %11, i32 0, i32 0 store %773* inttoptr (i64 -6148914691236517206 to %773*), %773** %62, align 8, !annotation !6 %63 = getelementptr inbounds %795, %795* %11, i32 0, i32 1 store i64 -6148914691236517206, i64* %63, align 8, !annotation !6 %64 = load %773*, %773** %9, align 8 call void @237(%795* sret(%795) align 8 %11, %773* noundef align 8 dereferenceable_or_null(32) %64) br label %65 65: ; preds = %289, %4 %66 = call noundef zeroext i1 @238(%795* noundef align 8 dereferenceable_or_null(16) %10, %795* noundef align 8 dereferenceable(16) %11) br i1 %66, label %71, label %67 67: ; preds = %65 %68 = bitcast %795* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %68) #21 %69 = bitcast %795* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %69) #21 %70 = bitcast %773** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %70) #21 br label %291 71: ; preds = %65 %72 = bitcast %796* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %72) #21 %73 = getelementptr inbounds %796, %796* %12, i32 0, i32 0 %74 = getelementptr inbounds %797, %797* %73, i32 0, i32 0 %75 = getelementptr inbounds %798, %798* %74, i32 0, i32 0 store [4 x %777]* inttoptr (i64 -6148914691236517206 to [4 x %777]*), [4 x %777]** %75, align 8, !annotation !6 %76 = getelementptr inbounds %797, %797* %73, i32 0, i32 1 %77 = getelementptr inbounds %788, %788* %76, i32 0, i32 0 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %77, align 8, !annotation !6 %78 = getelementptr inbounds %797, %797* %73, i32 0, i32 2 %79 = getelementptr inbounds %789, %789* %78, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %79, align 8, !annotation !6 call void @239(%796* sret(%796) align 8 %12, %795* noundef align 8 dereferenceable_or_null(16) %10) %80 = bitcast [4 x %777]** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %80) #21 store [4 x %777]* inttoptr (i64 -6148914691236517206 to [4 x %777]*), [4 x %777]** %13, align 8, !annotation !6 %81 = call noundef align 4 dereferenceable(64) [4 x %777]* @240(%796* noundef align 8 dereferenceable(24) %12) #21 store [4 x %777]* %81, [4 x %777]** %13, align 8 %82 = bitcast %554*** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %82) #21 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %14, align 8, !annotation !6 %83 = call noundef align 8 dereferenceable(8) %554** @241(%796* noundef align 8 dereferenceable(24) %12) #21 store %554** %83, %554*** %14, align 8 %84 = bitcast %549** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %84) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %15, align 8, !annotation !6 %85 = call noundef align 4 dereferenceable(16) %549* @242(%796* noundef align 8 dereferenceable(24) %12) #21 store %549* %85, %549** %15, align 8 %86 = bitcast %463* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %86) #21 %87 = getelementptr inbounds %463, %463* %16, i32 0, i32 0 %88 = getelementptr inbounds [4 x float], [4 x float]* %87, i64 0, i64 0 store float 0xFFFFFFFFE0000000, float* %88, align 4, !annotation !6 %89 = getelementptr inbounds [4 x float], [4 x float]* %87, i64 0, i64 1 store float 0xFFFFFFFFE0000000, float* %89, align 4, !annotation !6 %90 = getelementptr inbounds [4 x float], [4 x float]* %87, i64 0, i64 2 store float 0xFFFFFFFFE0000000, float* %90, align 4, !annotation !6 %91 = getelementptr inbounds [4 x float], [4 x float]* %87, i64 0, i64 3 store float 0xFFFFFFFFE0000000, float* %91, align 4, !annotation !6 %92 = load %549*, %549** %15, align 8 %93 = bitcast %549* %17 to i8* %94 = bitcast %549* %92 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %93, i8* align 4 %94, i64 16, i1 false) %95 = bitcast %549* %17 to { <2 x float>, i64 }* %96 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %95, i32 0, i32 0 %97 = load <2 x float>, <2 x float>* %96, align 4 %98 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %95, i32 0, i32 1 %99 = load i64, i64* %98, align 4 %100 = call { <2 x float>, <2 x float> } @174(%547* noundef align 8 dereferenceable_or_null(48) %51, <2 x float> %97, i64 %99) %101 = getelementptr inbounds %463, %463* %16, i32 0, i32 0 %102 = bitcast [4 x float]* %101 to { <2 x float>, <2 x float> }* %103 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %102, i32 0, i32 0 %104 = extractvalue { <2 x float>, <2 x float> } %100, 0 store <2 x float> %104, <2 x float>* %103, align 4 %105 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %102, i32 0, i32 1 %106 = extractvalue { <2 x float>, <2 x float> } %100, 1 store <2 x float> %106, <2 x float>* %105, align 4 %107 = bitcast float** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %107) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %18, align 8, !annotation !6 %108 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm0EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %108, float** %18, align 8 %109 = bitcast float** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %109) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %19, align 8, !annotation !6 %110 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm1EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %110, float** %19, align 8 %111 = bitcast float** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %111) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %20, align 8, !annotation !6 %112 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm2EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %112, float** %20, align 8 %113 = bitcast float** %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %113) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %21, align 8, !annotation !6 %114 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm3EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %114, float** %21, align 8 %115 = bitcast %778* %22 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %115) #21 %116 = getelementptr inbounds %778, %778* %22, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %116, align 4, !annotation !6 %117 = getelementptr inbounds %778, %778* %22, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %117, align 4, !annotation !6 %118 = getelementptr inbounds %778, %778* %22, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %118, align 4, !annotation !6 %119 = load float*, float** %18, align 8 %120 = load float, float* %119, align 4 %121 = load float*, float** %19, align 8 %122 = load float, float* %121, align 4 %123 = call { <2 x float>, float } @243(%794* noundef align 8 dereferenceable_or_null(8) %8, float noundef %120, float noundef %122) store { <2 x float>, float } %123, { <2 x float>, float }* %23, align 8 %124 = bitcast %778* %22 to i8* %125 = bitcast { <2 x float>, float }* %23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %124, i8* align 8 %125, i64 12, i1 false) %126 = bitcast %778* %24 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %126) #21 %127 = getelementptr inbounds %778, %778* %24, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %127, align 4, !annotation !6 %128 = getelementptr inbounds %778, %778* %24, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %128, align 4, !annotation !6 %129 = getelementptr inbounds %778, %778* %24, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %129, align 4, !annotation !6 %130 = load float*, float** %18, align 8 %131 = load float, float* %130, align 4 %132 = load float*, float** %21, align 8 %133 = load float, float* %132, align 4 %134 = call { <2 x float>, float } @243(%794* noundef align 8 dereferenceable_or_null(8) %8, float noundef %131, float noundef %133) store { <2 x float>, float } %134, { <2 x float>, float }* %25, align 8 %135 = bitcast %778* %24 to i8* %136 = bitcast { <2 x float>, float }* %25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %135, i8* align 8 %136, i64 12, i1 false) %137 = bitcast %778* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %137) #21 %138 = getelementptr inbounds %778, %778* %26, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %138, align 4, !annotation !6 %139 = getelementptr inbounds %778, %778* %26, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %139, align 4, !annotation !6 %140 = getelementptr inbounds %778, %778* %26, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %140, align 4, !annotation !6 %141 = load float*, float** %20, align 8 %142 = load float, float* %141, align 4 %143 = load float*, float** %19, align 8 %144 = load float, float* %143, align 4 %145 = call { <2 x float>, float } @243(%794* noundef align 8 dereferenceable_or_null(8) %8, float noundef %142, float noundef %144) store { <2 x float>, float } %145, { <2 x float>, float }* %27, align 8 %146 = bitcast %778* %26 to i8* %147 = bitcast { <2 x float>, float }* %27 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %146, i8* align 8 %147, i64 12, i1 false) %148 = bitcast %778* %28 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %148) #21 %149 = getelementptr inbounds %778, %778* %28, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %149, align 4, !annotation !6 %150 = getelementptr inbounds %778, %778* %28, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %150, align 4, !annotation !6 %151 = getelementptr inbounds %778, %778* %28, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %151, align 4, !annotation !6 %152 = load float*, float** %20, align 8 %153 = load float, float* %152, align 4 %154 = load float*, float** %21, align 8 %155 = load float, float* %154, align 4 %156 = call { <2 x float>, float } @243(%794* noundef align 8 dereferenceable_or_null(8) %8, float noundef %153, float noundef %155) store { <2 x float>, float } %156, { <2 x float>, float }* %29, align 8 %157 = bitcast %778* %28 to i8* %158 = bitcast { <2 x float>, float }* %29 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %157, i8* align 8 %158, i64 12, i1 false) %159 = bitcast %557* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %159) #21 %160 = getelementptr inbounds %557, %557* %30, i32 0, i32 0 %161 = getelementptr inbounds [4 x i16], [4 x i16]* %160, i64 0, i64 0 store i16 -21846, i16* %161, align 2, !annotation !6 %162 = getelementptr inbounds [4 x i16], [4 x i16]* %160, i64 0, i64 1 store i16 -21846, i16* %162, align 2, !annotation !6 %163 = getelementptr inbounds [4 x i16], [4 x i16]* %160, i64 0, i64 2 store i16 -21846, i16* %163, align 2, !annotation !6 %164 = getelementptr inbounds [4 x i16], [4 x i16]* %160, i64 0, i64 3 store i16 -21846, i16* %164, align 2, !annotation !6 %165 = load %554**, %554*** %14, align 8 %166 = load %554*, %554** %165, align 8 %167 = getelementptr inbounds %554, %554* %166, i32 0, i32 1 %168 = call i64 @_ZNK5skgpu12AtlasLocator6getUVsEv(%555* noundef align 8 dereferenceable_or_null(16) %167) %169 = getelementptr inbounds %557, %557* %30, i32 0, i32 0 %170 = bitcast [4 x i16]* %169 to i64* store i64 %168, i64* %170, align 2 %171 = bitcast i16** %31 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %171) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %31, align 8, !annotation !6 %172 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm0EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %172, i16** %31, align 8 %173 = bitcast i16** %32 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %173) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %32, align 8, !annotation !6 %174 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm1EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %174, i16** %32, align 8 %175 = bitcast i16** %33 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %175) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %33, align 8, !annotation !6 %176 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm2EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %176, i16** %33, align 8 %177 = bitcast i16** %34 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %177) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %34, align 8, !annotation !6 %178 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm3EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %178, i16** %34, align 8 %179 = bitcast %777* %35 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %179) #21 %180 = bitcast %778* %36 to i8* %181 = bitcast %778* %22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %180, i8* align 4 %181, i64 12, i1 false) %182 = load i32, i32* %6, align 4 %183 = getelementptr inbounds %765, %765* %37, i32 0, i32 0 %184 = load i16*, i16** %31, align 8 %185 = load i16, i16* %184, align 2 store i16 %185, i16* %183, align 2 %186 = getelementptr inbounds %765, %765* %37, i32 0, i32 1 %187 = load i16*, i16** %32, align 8 %188 = load i16, i16* %187, align 2 store i16 %188, i16* %186, align 2 %189 = bitcast { <2 x float>, float }* %38 to i8* %190 = bitcast %778* %36 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %189, i8* align 4 %190, i64 12, i1 false) %191 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %38, i32 0, i32 0 %192 = load <2 x float>, <2 x float>* %191, align 4 %193 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %38, i32 0, i32 1 %194 = load float, float* %193, align 4 %195 = bitcast %765* %37 to i32* %196 = load i32, i32* %195, align 2 call void @244(%777* noundef align 4 dereferenceable_or_null(16) %35, <2 x float> %192, float %194, i32 noundef %182, i32 %196) %197 = load [4 x %777]*, [4 x %777]** %13, align 8 %198 = getelementptr inbounds [4 x %777], [4 x %777]* %197, i64 0, i64 0 %199 = bitcast %777* %198 to i8* %200 = bitcast %777* %35 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %199, i8* align 4 %200, i64 16, i1 false) %201 = bitcast %777* %35 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %201) #21 %202 = bitcast %777* %39 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %202) #21 %203 = bitcast %778* %40 to i8* %204 = bitcast %778* %24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %203, i8* align 4 %204, i64 12, i1 false) %205 = load i32, i32* %6, align 4 %206 = getelementptr inbounds %765, %765* %41, i32 0, i32 0 %207 = load i16*, i16** %31, align 8 %208 = load i16, i16* %207, align 2 store i16 %208, i16* %206, align 2 %209 = getelementptr inbounds %765, %765* %41, i32 0, i32 1 %210 = load i16*, i16** %34, align 8 %211 = load i16, i16* %210, align 2 store i16 %211, i16* %209, align 2 %212 = bitcast { <2 x float>, float }* %42 to i8* %213 = bitcast %778* %40 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %212, i8* align 4 %213, i64 12, i1 false) %214 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %42, i32 0, i32 0 %215 = load <2 x float>, <2 x float>* %214, align 4 %216 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %42, i32 0, i32 1 %217 = load float, float* %216, align 4 %218 = bitcast %765* %41 to i32* %219 = load i32, i32* %218, align 2 call void @244(%777* noundef align 4 dereferenceable_or_null(16) %39, <2 x float> %215, float %217, i32 noundef %205, i32 %219) %220 = load [4 x %777]*, [4 x %777]** %13, align 8 %221 = getelementptr inbounds [4 x %777], [4 x %777]* %220, i64 0, i64 1 %222 = bitcast %777* %221 to i8* %223 = bitcast %777* %39 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %222, i8* align 4 %223, i64 16, i1 false) %224 = bitcast %777* %39 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %224) #21 %225 = bitcast %777* %43 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %225) #21 %226 = bitcast %778* %44 to i8* %227 = bitcast %778* %26 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %226, i8* align 4 %227, i64 12, i1 false) %228 = load i32, i32* %6, align 4 %229 = getelementptr inbounds %765, %765* %45, i32 0, i32 0 %230 = load i16*, i16** %33, align 8 %231 = load i16, i16* %230, align 2 store i16 %231, i16* %229, align 2 %232 = getelementptr inbounds %765, %765* %45, i32 0, i32 1 %233 = load i16*, i16** %32, align 8 %234 = load i16, i16* %233, align 2 store i16 %234, i16* %232, align 2 %235 = bitcast { <2 x float>, float }* %46 to i8* %236 = bitcast %778* %44 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %235, i8* align 4 %236, i64 12, i1 false) %237 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %46, i32 0, i32 0 %238 = load <2 x float>, <2 x float>* %237, align 4 %239 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %46, i32 0, i32 1 %240 = load float, float* %239, align 4 %241 = bitcast %765* %45 to i32* %242 = load i32, i32* %241, align 2 call void @244(%777* noundef align 4 dereferenceable_or_null(16) %43, <2 x float> %238, float %240, i32 noundef %228, i32 %242) %243 = load [4 x %777]*, [4 x %777]** %13, align 8 %244 = getelementptr inbounds [4 x %777], [4 x %777]* %243, i64 0, i64 2 %245 = bitcast %777* %244 to i8* %246 = bitcast %777* %43 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %245, i8* align 4 %246, i64 16, i1 false) %247 = bitcast %777* %43 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %247) #21 %248 = bitcast %777* %47 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %248) #21 %249 = bitcast %778* %48 to i8* %250 = bitcast %778* %28 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %249, i8* align 4 %250, i64 12, i1 false) %251 = load i32, i32* %6, align 4 %252 = getelementptr inbounds %765, %765* %49, i32 0, i32 0 %253 = load i16*, i16** %33, align 8 %254 = load i16, i16* %253, align 2 store i16 %254, i16* %252, align 2 %255 = getelementptr inbounds %765, %765* %49, i32 0, i32 1 %256 = load i16*, i16** %34, align 8 %257 = load i16, i16* %256, align 2 store i16 %257, i16* %255, align 2 %258 = bitcast { <2 x float>, float }* %50 to i8* %259 = bitcast %778* %48 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %258, i8* align 4 %259, i64 12, i1 false) %260 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %50, i32 0, i32 0 %261 = load <2 x float>, <2 x float>* %260, align 4 %262 = getelementptr inbounds { <2 x float>, float }, { <2 x float>, float }* %50, i32 0, i32 1 %263 = load float, float* %262, align 4 %264 = bitcast %765* %49 to i32* %265 = load i32, i32* %264, align 2 call void @244(%777* noundef align 4 dereferenceable_or_null(16) %47, <2 x float> %261, float %263, i32 noundef %251, i32 %265) %266 = load [4 x %777]*, [4 x %777]** %13, align 8 %267 = getelementptr inbounds [4 x %777], [4 x %777]* %266, i64 0, i64 3 %268 = bitcast %777* %267 to i8* %269 = bitcast %777* %47 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %268, i8* align 4 %269, i64 16, i1 false) %270 = bitcast %777* %47 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %270) #21 %271 = bitcast i16** %34 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %271) #21 %272 = bitcast i16** %33 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %272) #21 %273 = bitcast i16** %32 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %273) #21 %274 = bitcast i16** %31 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %274) #21 %275 = bitcast %557* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %275) #21 %276 = bitcast %778* %28 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %276) #21 %277 = bitcast %778* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %277) #21 %278 = bitcast %778* %24 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %278) #21 %279 = bitcast %778* %22 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %279) #21 %280 = bitcast float** %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %280) #21 %281 = bitcast float** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %281) #21 %282 = bitcast float** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %282) #21 %283 = bitcast float** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %283) #21 %284 = bitcast %463* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %284) #21 %285 = bitcast %549** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %285) #21 %286 = bitcast %554*** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %286) #21 %287 = bitcast [4 x %777]** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %287) #21 %288 = bitcast %796* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %288) #21 br label %289 289: ; preds = %71 %290 = call noundef align 8 dereferenceable(16) %795* @245(%795* noundef align 8 dereferenceable_or_null(16) %10) br label %65 291: ; preds = %67 %292 = bitcast %794* %8 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %292) #21 ret void } ; Function Attrs: inlinehint mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @164(%773* noalias sret(%773) align 8 %0, %759* noundef align 8 dereferenceable_or_null(32) %1, [4 x %777]* noundef %2) #7 align 2 { %4 = alloca %759*, align 8 %5 = alloca [4 x %777]*, align 8 %6 = alloca %618, align 8 %7 = alloca %548, align 8 store %759* %1, %759** %4, align 8 store [4 x %777]* %2, [4 x %777]** %5, align 8 %8 = load %759*, %759** %4, align 8 %9 = getelementptr inbounds %759, %759* %8, i32 0, i32 0 %10 = load %547*, %547** %9, align 8 %11 = bitcast %618* %6 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %11) #21 %12 = getelementptr inbounds %759, %759* %8, i32 0, i32 1 %13 = load %618*, %618** %12, align 8 %14 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %15 = load i32*, i32** %14, align 8 %16 = load i32, i32* %15, align 4 %17 = sext i32 %16 to i64 %18 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %19 = load i32*, i32** %18, align 8 %20 = load i32, i32* %19, align 4 %21 = sext i32 %20 to i64 %22 = call { %554**, i64 } @_ZNK6SkSpanIPKN6sktext3gpu5GlyphEE7subspanEmm(%618* noundef align 8 dereferenceable_or_null(16) %13, i64 noundef %17, i64 noundef %21) %23 = bitcast %618* %6 to { %554**, i64 }* %24 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 0 %25 = extractvalue { %554**, i64 } %22, 0 store %554** %25, %554*** %24, align 8 %26 = getelementptr inbounds { %554**, i64 }, { %554**, i64 }* %23, i32 0, i32 1 %27 = extractvalue { %554**, i64 } %22, 1 store i64 %27, i64* %26, align 8 %28 = bitcast %548* %7 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %28) #21 %29 = getelementptr inbounds %547, %547* %10, i32 0, i32 4 %30 = getelementptr inbounds %759, %759* %8, i32 0, i32 2 %31 = load i32*, i32** %30, align 8 %32 = load i32, i32* %31, align 4 %33 = sext i32 %32 to i64 %34 = getelementptr inbounds %759, %759* %8, i32 0, i32 3 %35 = load i32*, i32** %34, align 8 %36 = load i32, i32* %35, align 4 %37 = sext i32 %36 to i64 %38 = call { %549*, i64 } @194(%548* noundef align 8 dereferenceable_or_null(16) %29, i64 noundef %33, i64 noundef %37) %39 = bitcast %548* %7 to { %549*, i64 }* %40 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 0 %41 = extractvalue { %549*, i64 } %38, 0 store %549* %41, %549** %40, align 8 %42 = getelementptr inbounds { %549*, i64 }, { %549*, i64 }* %39, i32 0, i32 1 %43 = extractvalue { %549*, i64 } %38, 1 store i64 %43, i64* %42, align 8 call void @259(%773* sret(%773) align 8 %0, [4 x %777]** noundef align 8 dereferenceable(8) %5, %618* noundef align 8 dereferenceable(16) %6, %548* noundef align 8 dereferenceable(16) %7) %44 = bitcast %548* %7 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %44) #21 %45 = bitcast %618* %6 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %45) #21 ret void } ; Function Attrs: mustprogress nounwind null_pointer_is_valid ssp uwtable define internal void @165(%547* noundef align 8 dereferenceable_or_null(48) %0, %779* noundef byval(%779) align 8 %1, i32 noundef %2, %2* noundef align 4 dereferenceable(40) %3) #5 align 2 { %5 = alloca %547*, align 8 %6 = alloca i32, align 4 %7 = alloca %2*, align 8 %8 = alloca %799, align 8 %9 = alloca %779*, align 8 %10 = alloca %800, align 8 %11 = alloca %800, align 8 %12 = alloca %801, align 8 %13 = alloca [4 x %783]*, align 8 %14 = alloca %554**, align 8 %15 = alloca %549*, align 8 %16 = alloca %463, align 4 %17 = alloca %549, align 4 %18 = alloca float*, align 8 %19 = alloca float*, align 8 %20 = alloca float*, align 8 %21 = alloca float*, align 8 %22 = alloca %778, align 4 %23 = alloca { <2 x float>, float }, align 8 %24 = alloca %778, align 4 %25 = alloca { <2 x float>, float }, align 8 %26 = alloca %778, align 4 %27 = alloca { <2 x float>, float }, align 8 %28 = alloca %778, align 4 %29 = alloca { <2 x float>, float }, align 8 %30 = alloca %557, align 2 %31 = alloca i16*, align 8 %32 = alloca i16*, align 8 %33 = alloca i16*, align 8 %34 = alloca i16*, align 8 %35 = alloca %783, align 4 %36 = alloca %783, align 4 %37 = alloca %783, align 4 %38 = alloca %783, align 4 store %547* %0, %547** %5, align 8 store i32 %2, i32* %6, align 4 store %2* %3, %2** %7, align 8 %39 = load %547*, %547** %5, align 8 %40 = bitcast %799* %8 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %40) #21 %41 = getelementptr inbounds %799, %799* %8, i32 0, i32 0 store %2* inttoptr (i64 -6148914691236517206 to %2*), %2** %41, align 8, !annotation !6 %42 = getelementptr inbounds %799, %799* %8, i32 0, i32 0 %43 = load %2*, %2** %7, align 8 store %2* %43, %2** %42, align 8 %44 = bitcast %779** %9 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %44) #21 store %779* inttoptr (i64 -6148914691236517206 to %779*), %779** %9, align 8, !annotation !6 store %779* %1, %779** %9, align 8 %45 = bitcast %800* %10 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %45) #21 %46 = getelementptr inbounds %800, %800* %10, i32 0, i32 0 store %779* inttoptr (i64 -6148914691236517206 to %779*), %779** %46, align 8, !annotation !6 %47 = getelementptr inbounds %800, %800* %10, i32 0, i32 1 store i64 -6148914691236517206, i64* %47, align 8, !annotation !6 %48 = load %779*, %779** %9, align 8 call void @267(%800* sret(%800) align 8 %10, %779* noundef align 8 dereferenceable_or_null(32) %48) %49 = bitcast %800* %11 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %49) #21 %50 = getelementptr inbounds %800, %800* %11, i32 0, i32 0 store %779* inttoptr (i64 -6148914691236517206 to %779*), %779** %50, align 8, !annotation !6 %51 = getelementptr inbounds %800, %800* %11, i32 0, i32 1 store i64 -6148914691236517206, i64* %51, align 8, !annotation !6 %52 = load %779*, %779** %9, align 8 call void @268(%800* sret(%800) align 8 %11, %779* noundef align 8 dereferenceable_or_null(32) %52) br label %53 53: ; preds = %257, %4 %54 = call noundef zeroext i1 @269(%800* noundef align 8 dereferenceable_or_null(16) %10, %800* noundef align 8 dereferenceable(16) %11) br i1 %54, label %59, label %55 55: ; preds = %53 %56 = bitcast %800* %11 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %56) #21 %57 = bitcast %800* %10 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %57) #21 %58 = bitcast %779** %9 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %58) #21 br label %259 59: ; preds = %53 %60 = bitcast %801* %12 to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* %60) #21 %61 = getelementptr inbounds %801, %801* %12, i32 0, i32 0 %62 = getelementptr inbounds %802, %802* %61, i32 0, i32 0 %63 = getelementptr inbounds %803, %803* %62, i32 0, i32 0 store [4 x %783]* inttoptr (i64 -6148914691236517206 to [4 x %783]*), [4 x %783]** %63, align 8, !annotation !6 %64 = getelementptr inbounds %802, %802* %61, i32 0, i32 1 %65 = getelementptr inbounds %788, %788* %64, i32 0, i32 0 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %65, align 8, !annotation !6 %66 = getelementptr inbounds %802, %802* %61, i32 0, i32 2 %67 = getelementptr inbounds %789, %789* %66, i32 0, i32 0 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %67, align 8, !annotation !6 call void @270(%801* sret(%801) align 8 %12, %800* noundef align 8 dereferenceable_or_null(16) %10) %68 = bitcast [4 x %783]** %13 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %68) #21 store [4 x %783]* inttoptr (i64 -6148914691236517206 to [4 x %783]*), [4 x %783]** %13, align 8, !annotation !6 %69 = call noundef align 4 dereferenceable(80) [4 x %783]* @271(%801* noundef align 8 dereferenceable(24) %12) #21 store [4 x %783]* %69, [4 x %783]** %13, align 8 %70 = bitcast %554*** %14 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %70) #21 store %554** inttoptr (i64 -6148914691236517206 to %554**), %554*** %14, align 8, !annotation !6 %71 = call noundef align 8 dereferenceable(8) %554** @272(%801* noundef align 8 dereferenceable(24) %12) #21 store %554** %71, %554*** %14, align 8 %72 = bitcast %549** %15 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %72) #21 store %549* inttoptr (i64 -6148914691236517206 to %549*), %549** %15, align 8, !annotation !6 %73 = call noundef align 4 dereferenceable(16) %549* @273(%801* noundef align 8 dereferenceable(24) %12) #21 store %549* %73, %549** %15, align 8 %74 = bitcast %463* %16 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %74) #21 %75 = getelementptr inbounds %463, %463* %16, i32 0, i32 0 %76 = getelementptr inbounds [4 x float], [4 x float]* %75, i64 0, i64 0 store float 0xFFFFFFFFE0000000, float* %76, align 4, !annotation !6 %77 = getelementptr inbounds [4 x float], [4 x float]* %75, i64 0, i64 1 store float 0xFFFFFFFFE0000000, float* %77, align 4, !annotation !6 %78 = getelementptr inbounds [4 x float], [4 x float]* %75, i64 0, i64 2 store float 0xFFFFFFFFE0000000, float* %78, align 4, !annotation !6 %79 = getelementptr inbounds [4 x float], [4 x float]* %75, i64 0, i64 3 store float 0xFFFFFFFFE0000000, float* %79, align 4, !annotation !6 %80 = load %549*, %549** %15, align 8 %81 = bitcast %549* %17 to i8* %82 = bitcast %549* %80 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %81, i8* align 4 %82, i64 16, i1 false) %83 = bitcast %549* %17 to { <2 x float>, i64 }* %84 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %83, i32 0, i32 0 %85 = load <2 x float>, <2 x float>* %84, align 4 %86 = getelementptr inbounds { <2 x float>, i64 }, { <2 x float>, i64 }* %83, i32 0, i32 1 %87 = load i64, i64* %86, align 4 %88 = call { <2 x float>, <2 x float> } @174(%547* noundef align 8 dereferenceable_or_null(48) %39, <2 x float> %85, i64 %87) %89 = getelementptr inbounds %463, %463* %16, i32 0, i32 0 %90 = bitcast [4 x float]* %89 to { <2 x float>, <2 x float> }* %91 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %90, i32 0, i32 0 %92 = extractvalue { <2 x float>, <2 x float> } %88, 0 store <2 x float> %92, <2 x float>* %91, align 4 %93 = getelementptr inbounds { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %90, i32 0, i32 1 %94 = extractvalue { <2 x float>, <2 x float> } %88, 1 store <2 x float> %94, <2 x float>* %93, align 4 %95 = bitcast float** %18 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %95) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %18, align 8, !annotation !6 %96 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm0EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %96, float** %18, align 8 %97 = bitcast float** %19 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %97) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %19, align 8, !annotation !6 %98 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm1EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %98, float** %19, align 8 %99 = bitcast float** %20 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %99) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %20, align 8, !annotation !6 %100 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm2EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %100, float** %20, align 8 %101 = bitcast float** %21 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %101) #21 store float* inttoptr (i64 -6148914691236517206 to float*), float** %21, align 8, !annotation !6 %102 = call noundef align 4 dereferenceable(4) float* @_ZNSt4__Cr3getILm3EfLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%463* noundef align 4 dereferenceable(16) %16) #21 store float* %102, float** %21, align 8 %103 = bitcast %778* %22 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %103) #21 %104 = getelementptr inbounds %778, %778* %22, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %104, align 4, !annotation !6 %105 = getelementptr inbounds %778, %778* %22, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %105, align 4, !annotation !6 %106 = getelementptr inbounds %778, %778* %22, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %106, align 4, !annotation !6 %107 = load float*, float** %18, align 8 %108 = load float, float* %107, align 4 %109 = load float*, float** %19, align 8 %110 = load float, float* %109, align 4 %111 = call { <2 x float>, float } @274(%799* noundef align 8 dereferenceable_or_null(8) %8, float noundef %108, float noundef %110) store { <2 x float>, float } %111, { <2 x float>, float }* %23, align 8 %112 = bitcast %778* %22 to i8* %113 = bitcast { <2 x float>, float }* %23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %112, i8* align 8 %113, i64 12, i1 false) %114 = bitcast %778* %24 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %114) #21 %115 = getelementptr inbounds %778, %778* %24, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %115, align 4, !annotation !6 %116 = getelementptr inbounds %778, %778* %24, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %116, align 4, !annotation !6 %117 = getelementptr inbounds %778, %778* %24, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %117, align 4, !annotation !6 %118 = load float*, float** %18, align 8 %119 = load float, float* %118, align 4 %120 = load float*, float** %21, align 8 %121 = load float, float* %120, align 4 %122 = call { <2 x float>, float } @274(%799* noundef align 8 dereferenceable_or_null(8) %8, float noundef %119, float noundef %121) store { <2 x float>, float } %122, { <2 x float>, float }* %25, align 8 %123 = bitcast %778* %24 to i8* %124 = bitcast { <2 x float>, float }* %25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %123, i8* align 8 %124, i64 12, i1 false) %125 = bitcast %778* %26 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %125) #21 %126 = getelementptr inbounds %778, %778* %26, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %126, align 4, !annotation !6 %127 = getelementptr inbounds %778, %778* %26, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %127, align 4, !annotation !6 %128 = getelementptr inbounds %778, %778* %26, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %128, align 4, !annotation !6 %129 = load float*, float** %20, align 8 %130 = load float, float* %129, align 4 %131 = load float*, float** %19, align 8 %132 = load float, float* %131, align 4 %133 = call { <2 x float>, float } @274(%799* noundef align 8 dereferenceable_or_null(8) %8, float noundef %130, float noundef %132) store { <2 x float>, float } %133, { <2 x float>, float }* %27, align 8 %134 = bitcast %778* %26 to i8* %135 = bitcast { <2 x float>, float }* %27 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %134, i8* align 8 %135, i64 12, i1 false) %136 = bitcast %778* %28 to i8* call void @llvm.lifetime.start.p0i8(i64 12, i8* %136) #21 %137 = getelementptr inbounds %778, %778* %28, i32 0, i32 0 store float 0xFFFFFFFFE0000000, float* %137, align 4, !annotation !6 %138 = getelementptr inbounds %778, %778* %28, i32 0, i32 1 store float 0xFFFFFFFFE0000000, float* %138, align 4, !annotation !6 %139 = getelementptr inbounds %778, %778* %28, i32 0, i32 2 store float 0xFFFFFFFFE0000000, float* %139, align 4, !annotation !6 %140 = load float*, float** %20, align 8 %141 = load float, float* %140, align 4 %142 = load float*, float** %21, align 8 %143 = load float, float* %142, align 4 %144 = call { <2 x float>, float } @274(%799* noundef align 8 dereferenceable_or_null(8) %8, float noundef %141, float noundef %143) store { <2 x float>, float } %144, { <2 x float>, float }* %29, align 8 %145 = bitcast %778* %28 to i8* %146 = bitcast { <2 x float>, float }* %29 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %145, i8* align 8 %146, i64 12, i1 false) %147 = bitcast %557* %30 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %147) #21 %148 = getelementptr inbounds %557, %557* %30, i32 0, i32 0 %149 = getelementptr inbounds [4 x i16], [4 x i16]* %148, i64 0, i64 0 store i16 -21846, i16* %149, align 2, !annotation !6 %150 = getelementptr inbounds [4 x i16], [4 x i16]* %148, i64 0, i64 1 store i16 -21846, i16* %150, align 2, !annotation !6 %151 = getelementptr inbounds [4 x i16], [4 x i16]* %148, i64 0, i64 2 store i16 -21846, i16* %151, align 2, !annotation !6 %152 = getelementptr inbounds [4 x i16], [4 x i16]* %148, i64 0, i64 3 store i16 -21846, i16* %152, align 2, !annotation !6 %153 = load %554**, %554*** %14, align 8 %154 = load %554*, %554** %153, align 8 %155 = getelementptr inbounds %554, %554* %154, i32 0, i32 1 %156 = call i64 @_ZNK5skgpu12AtlasLocator6getUVsEv(%555* noundef align 8 dereferenceable_or_null(16) %155) %157 = getelementptr inbounds %557, %557* %30, i32 0, i32 0 %158 = bitcast [4 x i16]* %157 to i64* store i64 %156, i64* %158, align 2 %159 = bitcast i16** %31 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %159) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %31, align 8, !annotation !6 %160 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm0EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %160, i16** %31, align 8 %161 = bitcast i16** %32 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %161) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %32, align 8, !annotation !6 %162 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm1EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %162, i16** %32, align 8 %163 = bitcast i16** %33 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %163) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %33, align 8, !annotation !6 %164 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm2EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %164, i16** %33, align 8 %165 = bitcast i16** %34 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* %165) #21 store i16* inttoptr (i64 -6148914691236517206 to i16*), i16** %34, align 8, !annotation !6 %166 = call noundef align 2 dereferenceable(2) i16* @_ZNSt4__Cr3getILm3EtLm4EEEOT0_ONS_5arrayIS1_XT1_EEE(%557* noundef align 2 dereferenceable(8) %30) #21 store i16* %166, i16** %34, align 8 %167 = bitcast %783* %35 to i8* call void @llvm.lifetime.start.p0i8(i64 20, i8* %167) #21 %168 = getelementptr inbounds %783, %783* %35, i32 0, i32 0 %169 = bitcast %778* %168 to i8* %170 = bitcast %778* %22 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %169, i8* align 4 %170, i64 12, i1 false) %171 = getelementptr inbounds %783, %783* %35, i32 0, i32 1 %172 = load i32, i32* %6, align 4 store i32 %172, i32* %171, align 4 %173 = getelementptr inbounds %783, %783* %35, i32 0, i32 2 %174 = getelementptr inbounds %765, %765* %173, i32 0, i32 0 %175 = load i16*, i16** %31, align 8 %176 = load i16, i16* %175, align 2 store i16 %176, i16* %174, align 4 %177 = getelementptr inbounds %765, %765* %173, i32 0, i32 1 %178 = load i16*, i16** %32, align 8 %179 = load i16, i16* %178, align 2 store i16 %179, i16* %177, align 2 %180 = load [4 x %783]*, [4 x %783]** %13, align 8 %181 = getelementptr inbounds [4 x %783], [4 x %783]* %180, i64 0, i64 0 %182 = bitcast %783* %181 to i8* %183 = bitcast %783* %35 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %182, i8* align 4 %183, i64 20, i1 false) %184 = bitcast %783* %35 to i8* call void @llvm.lifetime.end.p0i8(i64 20, i8* %184) #21 %185 = bitcast %783* %36 to i8* call void @llvm.lifetime.start.p0i8(i64 20, i8* %185) #21 %186 = getelementptr inbounds %783, %783* %36, i32 0, i32 0 %187 = bitcast %778* %186 to i8* %188 = bitcast %778* %24 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %187, i8* align 4 %188, i64 12, i1 false) %189 = getelementptr inbounds %783, %783* %36, i32 0, i32 1 %190 = load i32, i32* %6, align 4 store i32 %190, i32* %189, align 4 %191 = getelementptr inbounds %783, %783* %36, i32 0, i32 2 %192 = getelementptr inbounds %765, %765* %191, i32 0, i32 0 %193 = load i16*, i16** %31, align 8 %194 = load i16, i16* %193, align 2 store i16 %194, i16* %192, align 4 %195 = getelementptr inbounds %765, %765* %191, i32 0, i32 1 %196 = load i16*, i16** %34, align 8 %197 = load i16, i16* %196, align 2 store i16 %197, i16* %195, align 2 %198 = load [4 x %783]*, [4 x %783]** %13, align 8 %199 = getelementptr inbounds [4 x %783], [4 x %783]* %198, i64 0, i64 1 %200 = bitcast %783* %199 to i8* %201 = bitcast %783* %36 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %200, i8* align 4 %201, i64 20, i1 false) %202 = bitcast %783* %36 to i8* call void @llvm.lifetime.end.p0i8(i64 20, i8* %202) #21 %203 = bitcast %783* %37 to i8* call void @llvm.lifetime.start.p0i8(i64 20, i8* %203) #21 %204 = getelementptr inbounds %783, %783* %37, i32 0, i32 0 %205 = bitcast %778* %204 to i8* %206 = bitcast %778* %26 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %205, i8* align 4 %206, i64 12, i1 false) %207 = getelementptr inbounds %783, %783* %37, i32 0, i32 1 %208 = load i32, i32* %6, align 4 store i32 %208, i32* %207, align 4 %209 = getelementptr inbounds %783, %783* %37, i32 0, i32 2 %210 = getelementptr inbounds %765, %765* %209, i32 0, i32 0 %211 = load i16*, i16** %33, align 8 %212 = load i16, i16* %211, align 2 store i16 %212, i16* %210, align 4 %213 = getelementptr inbounds %765, %765* %209, i32 0, i32 1 %214 = load i16*, i16** %32, align 8 %215 = load i16, i16* %214, align 2 store i16 %215, i16* %213, align 2 %216 = load [4 x %783]*, [4 x %783]** %13, align 8 %217 = getelementptr inbounds [4 x %783], [4 x %783]* %216, i64 0, i64 2 %218 = bitcast %783* %217 to i8* %219 = bitcast %783* %37 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %218, i8* align 4 %219, i64 20, i1 false) %220 = bitcast %783* %37 to i8* call void @llvm.lifetime.end.p0i8(i64 20, i8* %220) #21 %221 = bitcast %783* %38 to i8* call void @llvm.lifetime.start.p0i8(i64 20, i8* %221) #21 %222 = getelementptr inbounds %783, %783* %38, i32 0, i32 0 %223 = bitcast %778* %222 to i8* %224 = bitcast %778* %28 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %223, i8* align 4 %224, i64 12, i1 false) %225 = getelementptr inbounds %783, %783* %38, i32 0, i32 1 %226 = load i32, i32* %6, align 4 store i32 %226, i32* %225, align 4 %227 = getelementptr inbounds %783, %783* %38, i32 0, i32 2 %228 = getelementptr inbounds %765, %765* %227, i32 0, i32 0 %229 = load i16*, i16** %33, align 8 %230 = load i16, i16* %229, align 2 store i16 %230, i16* %228, align 4 %231 = getelementptr inbounds %765, %765* %227, i32 0, i32 1 %232 = load i16*, i16** %34, align 8 %233 = load i16, i16* %232, align 2 store i16 %233, i16* %231, align 2 %234 = load [4 x %783]*, [4 x %783]** %13, align 8 %235 = getelementptr inbounds [4 x %783], [4 x %783]* %234, i64 0, i64 3 %236 = bitcast %783* %235 to i8* %237 = bitcast %783* %38 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %236, i8* align 4 %237, i64 20, i1 false) %238 = bitcast %783* %38 to i8* call void @llvm.lifetime.end.p0i8(i64 20, i8* %238) #21 %239 = bitcast i16** %34 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %239) #21 %240 = bitcast i16** %33 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %240) #21 %241 = bitcast i16** %32 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %241) #21 %242 = bitcast i16** %31 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %242) #21 %243 = bitcast %557* %30 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %243) #21 %244 = bitcast %778* %28 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %244) #21 %245 = bitcast %778* %26 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %245) #21 %246 = bitcast %778* %24 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %246) #21 %247 = bitcast %778* %22 to i8* call void @llvm.lifetime.end.p0i8(i64 12, i8* %247) #21 %248 = bitcast float** %21 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %248) #21 %249 = bitcast float** %20 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %249) #21 %250 = bitcast float** %19 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %250) #21 %251 = bitcast float** %18 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %251) #21 %252 = bitcast %463* %16 to i8* call void @llvm.lifetime.end.p0i8(i64 16, i8* %252) #21 %253 = bitcast %549** %15 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %253) #21 %254 = bitcast %554*** %14 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %254) #21 %255 = bitcast [4 x %783]** %13 to i8* call void @llvm.lifetime.end.p0i8(i64 8, i8* %255) #21 %256 = bitcast %801* %12 to i8* call void @llvm.lifetime.end.p0i8(i64 24, i8* %256) #21 br label %257 257: