Skip to content

Instantly share code, notes, and snippets.

@ARISTODE
Created April 8, 2023 20:19
Show Gist options
  • Select an option

  • Save ARISTODE/bf10ae7728f9a6731cf52b97dd82ca90 to your computer and use it in GitHub Desktop.

Select an option

Save ARISTODE/bf10ae7728f9a6731cf52b97dd82ca90 to your computer and use it in GitHub Desktop.
Alias.ll
This file has been truncated, but you can view the full file.
; ModuleID = 'alias.bc'
source_filename = "llvm-link"
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-pc-linux-gnu"
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] }
%struct._IO_marker = type opaque
%struct._IO_codecvt = type opaque
%struct._IO_wide_data = type opaque
%struct.KlvTag_t = type { i8, i32, i8*, %struct.KlvTag_t* }
%struct.KlvTagInfo_t = type { [64 x i8], i32, double, double }
%struct.mg_fs = type { i32 (i8*, i64*, i64*)*, void (i8*, void (i8*, i8*)*, i8*)*, i8* (i8*, i32)*, void (i8*)*, i64 (i8*, i8*, i64)*, i64 (i8*, i8*, i64)*, i64 (i8*, i64)*, i1 (i8*, i8*)*, i1 (i8*)*, i1 (i8*)* }
%struct.mg_str = type { i8*, i64 }
%struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] }
%struct.in_addr = type { i32 }
%struct.TrilliumPkt_t = type { i8, i8, i8, i8, [142 x i8], %struct.TrilliumPktInfo_t }
%struct.TrilliumPktInfo_t = type { i16, i16, i16, i16 }
%struct.AVFormatContext = type { %struct.AVClass*, %struct.AVInputFormat*, %struct.AVOutputFormat*, i8*, %struct.AVIOContext*, i32, i32, %struct.AVStream**, [1024 x i8], i8*, i64, i64, i64, i32, i32, i32, i64, i64, i8*, i32, i32, %struct.AVProgram**, i32, i32, i32, i32, i32, i32, %struct.AVChapter**, %struct.AVDictionary*, i64, i32, i32, %struct.AVIOInterruptCB, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i8*, i8*, %struct.AVFormatInternal*, i32, %struct.AVCodec*, %struct.AVCodec*, %struct.AVCodec*, %struct.AVCodec*, i32, i8*, i32 (%struct.AVFormatContext*, i32, i8*, i64)*, i64, i8*, i32, i32 (%struct.AVFormatContext*, %struct.AVIOContext**, i8*, i32, %struct.AVIOInterruptCB*, %struct.AVDictionary**)*, i8*, i32 (%struct.AVFormatContext*, %struct.AVIOContext**, i8*, i32, %struct.AVDictionary**)*, void (%struct.AVFormatContext*, %struct.AVIOContext*)*, i8*, i32, i32 }
%struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption*, i32, i32, i32, i8* (i8*, i8*)*, %struct.AVClass* (%struct.AVClass*)*, i32, i32 (i8*)*, i32 (%struct.AVOptionRanges**, i8*, i8*, i32)* }
%struct.AVOption = type { i8*, i8*, i32, i32, %union.anon.44, double, double, i32, i8* }
%union.anon.44 = type { i64 }
%struct.AVOptionRanges = type { %struct.AVOptionRange**, i32, i32 }
%struct.AVOptionRange = type { i8*, double, double, double, double, i32 }
%struct.AVInputFormat = type { i8*, i8*, i32, i8*, %struct.AVCodecTag**, %struct.AVClass*, i8*, %struct.AVInputFormat*, i32, i32, i32 (%struct.AVProbeData*)*, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, %struct.AVPacket*)*, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, i32, i64, i32)*, i64 (%struct.AVFormatContext*, i32, i64*, i64)*, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, i32, i64, i64, i64, i32)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceInfoList*)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceCapabilitiesQuery*)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceCapabilitiesQuery*)* }
%struct.AVCodecTag = type opaque
%struct.AVProbeData = type { i8*, i8*, i32, i8* }
%struct.AVPacket = type { %struct.AVBufferRef*, i64, i64, i8*, i32, i32, i32, %struct.AVPacketSideData*, i32, i64, i64, i64 }
%struct.AVBufferRef = type { %struct.AVBuffer*, i8*, i32 }
%struct.AVBuffer = type opaque
%struct.AVPacketSideData = type { i8*, i32, i32 }
%struct.AVDeviceInfoList = type opaque
%struct.AVDeviceCapabilitiesQuery = type opaque
%struct.AVOutputFormat = type { i8*, i8*, i8*, i8*, i32, i32, i32, i32, %struct.AVCodecTag**, %struct.AVClass*, %struct.AVOutputFormat*, i32, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, %struct.AVPacket*)*, i32 (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, %struct.AVPacket*, %struct.AVPacket*, i32)*, i32 (i32, i32)*, void (%struct.AVFormatContext*, i32, i64*, i64*)*, i32 (%struct.AVFormatContext*, i32, i8*, i64)*, i32 (%struct.AVFormatContext*, i32, %struct.AVFrame**, i32)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceInfoList*)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceCapabilitiesQuery*)*, i32 (%struct.AVFormatContext*, %struct.AVDeviceCapabilitiesQuery*)*, i32, i32 (%struct.AVFormatContext*)*, void (%struct.AVFormatContext*)*, i32 (%struct.AVFormatContext*, %struct.AVPacket*)* }
%struct.AVFrame = type { [8 x i8*], [8 x i32], i8**, i32, i32, i32, i32, i32, i32, %struct.AVRational, i64, i64, i64, i32, i32, i32, i8*, [8 x i64], i32, i32, i32, i32, i64, i32, i64, [8 x %struct.AVBufferRef*], %struct.AVBufferRef**, i32, %struct.AVFrameSideData**, i32, i32, i32, i32, i32, i32, i32, i64, i64, i64, %struct.AVDictionary*, i32, i32, i32, i8*, i32, i32, %struct.AVBufferRef*, %struct.AVBufferRef*, %struct.AVBufferRef*, i64, i64, i64, i64, %struct.AVBufferRef* }
%struct.AVRational = type { i32, i32 }
%struct.AVFrameSideData = type { i32, i8*, i32, %struct.AVDictionary*, %struct.AVBufferRef* }
%struct.AVIOContext = type { %struct.AVClass*, i8*, i32, i8*, i8*, i8*, i32 (i8*, i8*, i32)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i64, i32, i32, i32, i64, i8*, i64 (i64, i8*, i32)*, i32, i32 (i8*, i32)*, i64 (i8*, i32, i64, i32)*, i32, i64, i32, i64, i32, i32, i32, i32, i8*, i8*, i32 (i8*, i8*, i32, i32, i64)*, i32, i32, i64, i32 (i8*)*, i64, i8*, i32 }
%struct.AVStream = type { i32, i32, %struct.AVCodecContext*, i8*, %struct.AVRational, i64, i64, i64, i32, i32, %struct.AVRational, %struct.AVDictionary*, %struct.AVRational, %struct.AVPacket, %struct.AVPacketSideData*, i32, i32, %struct.AVRational, i8*, %struct.AVCodecParameters*, %struct.anon.45*, i32, i64, i64, i64, i32, i32, i32, i32, %struct.AVCodecParserContext*, %struct.AVPacketList*, %struct.AVProbeData, [17 x i64], %struct.AVIndexEntry*, i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32, i64, i64, i64, i32, i64, i64, i32, i32, [17 x i64], [17 x i8], i64, i8, i8, i32, %struct.AVRational, %struct.AVStreamInternal* }
%struct.AVCodecContext = type { %struct.AVClass*, i32, i32, %struct.AVCodec*, i32, i32, i8*, %struct.AVCodecInternal*, i8*, i64, i32, i32, i32, i32, i32, i8*, i32, %struct.AVRational, i32, i32, i32, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32 (%struct.AVCodecContext*, i32*)*, i32, float, i32, float, i32, i32, float, float, float, float, float, float, float, i32, i32, i32*, %struct.AVRational, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*, i32)*, i32, float, float, i32, i32, i32, i32, i32, %struct.RcOverride*, i64, i64, float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i32, i32, i32, i32, i32, i64, %struct.AVHWAccel*, i8*, [8 x i64], i32, i32, i32, i32, i32, %struct.AVFrame*, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8*, i32*, i32, i32)*, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*, i32, i32)*, i8*, i32*, i32)*, i32, i32, i32, i32, i32, i32, i8*, i32, i64, i32, i32, %struct.AVRational, i32, %struct.AVRational, %struct.AVCodecDescriptor*, i64, i64, i64, i64, i8*, i32, i32, i32, i32, i16*, i8*, i8*, i32, %struct.AVPacketSideData*, i32, %struct.AVBufferRef*, i32, i32, i64, %struct.AVBufferRef*, i32, i32, i32, i32 }
%struct.AVCodecInternal = type opaque
%struct.RcOverride = type { i32, i32, i32, float }
%struct.AVHWAccel = type { i8*, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32 (%struct.AVCodecContext*, i8*, i32)*, i32 (%struct.AVCodecContext*, i32, i8*, i32)*, i32 (%struct.AVCodecContext*, i8*, i32)*, i32 (%struct.AVCodecContext*)*, i32, void (%struct.MpegEncContext*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*)*, i32, i32, i32 (%struct.AVCodecContext*, %struct.AVBufferRef*)* }
%struct.MpegEncContext = type opaque
%struct.AVCodecDescriptor = type { i32, i32, i8*, i8*, i32, i8**, %struct.AVProfile* }
%struct.AVProfile = type { i32, i8* }
%struct.AVCodecParameters = type { i32, i32, i32, i8*, i32, i32, i64, i32, i32, i32, i32, i32, i32, %struct.AVRational, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.45 = type { i64, i64, i32, i64, [2 x [399 x double]]*, i64, i64, i32, i32, i64, i64, i32, i64, i32 }
%struct.AVCodecParserContext = type { i8*, %struct.AVCodecParser*, i64, i64, i64, i32, i32, i64, i64, i64, i64, i32, i32, [4 x i64], [4 x i64], [4 x i64], i32, i64, [4 x i64], i32, i64, i32, i32, i32, [4 x i64], i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.AVCodecParser = type { [5 x i32], i32, i32 (%struct.AVCodecParserContext*)*, i32 (%struct.AVCodecParserContext*, %struct.AVCodecContext*, i8**, i32*, i8*, i32)*, void (%struct.AVCodecParserContext*)*, i32 (%struct.AVCodecContext*, i8*, i32)*, %struct.AVCodecParser* }
%struct.AVPacketList = type { %struct.AVPacket, %struct.AVPacketList* }
%struct.AVIndexEntry = type { i64, i64, i32, i32 }
%struct.AVStreamInternal = type opaque
%struct.AVProgram = type { i32, i32, i32, i32*, i32, %struct.AVDictionary*, i32, i32, i32, i32, i64, i64, i64, i32 }
%struct.AVChapter = type { i32, %struct.AVRational, i64, i64, %struct.AVDictionary* }
%struct.AVDictionary = type opaque
%struct.AVIOInterruptCB = type { i32 (i8*)*, i8* }
%struct.AVFormatInternal = type opaque
%struct.AVCodec = type { i8*, i8*, i32, i32, i32, %struct.AVRational*, i32*, i32*, i32*, i64*, i8, %struct.AVClass*, %struct.AVProfile*, i8*, i32, %struct.AVCodec*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, %struct.AVCodecContext*)*, %struct.AVCodecDefault*, void (%struct.AVCodec*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, %struct.AVSubtitle*)*, i32 (%struct.AVCodecContext*, %struct.AVPacket*, %struct.AVFrame*, i32*)*, i32 (%struct.AVCodecContext*, i8*, i32*, %struct.AVPacket*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32 (%struct.AVCodecContext*, %struct.AVPacket*)*, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*)*, i32, i8*, %struct.AVCodecHWConfigInternal** }
%struct.AVCodecDefault = type opaque
%struct.AVSubtitle = type { i16, i32, i32, i32, %struct.AVSubtitleRect**, i64 }
%struct.AVSubtitleRect = type { i32, i32, i32, i32, i32, %struct.AVPicture, [4 x i8*], [4 x i32], i32, i8*, i8*, i32 }
%struct.AVPicture = type { [8 x i8*], [8 x i32] }
%struct.AVCodecHWConfigInternal = type opaque
%struct.llat_st = type { %union.pthread_mutex_t, double, double, double, double, i8 }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { %struct.__pthread_internal_list*, %struct.__pthread_internal_list* }
%struct.framebuf_st = type { %union.pthread_mutex_t, i8, i64, [64000 x i8] }
%struct.mg_connection = type { %struct.mg_connection*, %struct.mg_mgr*, %struct.mg_addr, %struct.mg_addr, i8*, i64, %struct.mg_iobuf, %struct.mg_iobuf, void (%struct.mg_connection*, i32, i8*, i8*)*, i8*, void (%struct.mg_connection*, i32, i8*, i8*)*, i8*, [50 x i8], i8*, i16 }
%struct.mg_mgr = type { %struct.mg_connection*, %struct.mg_dns, %struct.mg_dns, i32, i8, i64, i8*, i16, i8*, %struct.mg_timer*, i8*, i64 }
%struct.mg_dns = type { i8*, %struct.mg_connection* }
%struct.mg_timer = type { i64, i64, i64, i32, void (i8*)*, i8*, %struct.mg_timer* }
%struct.mg_addr = type { i16, i32, [16 x i8], i8 }
%struct.mg_iobuf = type { i8*, i64, i64 }
%struct.mg_http_message = type { %struct.mg_str, %struct.mg_str, %struct.mg_str, %struct.mg_str, [40 x %struct.mg_http_header], %struct.mg_str, %struct.mg_str, %struct.mg_str, %struct.mg_str }
%struct.mg_http_header = type { %struct.mg_str, %struct.mg_str }
%struct.mg_tls_opts = type { i8*, i8*, i8*, i8*, i8*, %struct.mg_str, %struct.mg_fs* }
%struct.mg_http_serve_opts = type { i8*, i8*, i8*, i8*, i8*, %struct.mg_fs* }
%union.anon = type { float }
%struct.Vector_t = type { i32, double* }
%struct.Matrix_t = type { i32, i32, double* }
%struct.Vectorf_t = type { i32, float* }
%struct.Matrixf_t = type { i32, i32, float* }
%struct.llaTrig_t = type { double, double, double, double }
%struct.GeolocateTelemetry_t = type { %struct.GeolocateTelemetryCore_t, i16, i8, i8, i8, i8, i8, %struct.llaTrig_t, [3 x double], [3 x float], [3 x float], [9 x float], %struct.Matrixf_t, [4 x float], [3 x float], [9 x float], %struct.Matrixf_t, float, [3 x double], [3 x double] }
%struct.GeolocateTelemetryCore_t = type { i32, i32, i16, double, double, double, double, [3 x float], [4 x float], float, float, float, float, [3 x float], i16, i16, i32, float, float, i8, i8, [2 x float], float, float, [2 x float], i32, i8, float, float, i32, [4 x float], float }
%struct.GeolocateBuffer_t = type { [100 x %struct.GeolocateTelemetry_t], i32, i32 }
%struct.GpsData_t = type { i8, i8, i8, float, double, double, double, [3 x float], float, float, float, float, i32, i16, float, i32, i8, i8, float, [3 x float], [3 x float], [3 x double], [3 x float], [3 x float], [3 x float], i16, i8, i8, i8, i8, i8, i8, float, float, i8 }
%struct.__va_list_tag = type { i32, i32, i8*, i8* }
%union.anon.1 = type { double }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.dirent = type { i64, i64, i16, i8, [256 x i8] }
%struct.__dirstream = type opaque
%struct.dns_data = type { %struct.dns_data*, %struct.mg_connection*, i64, i16 }
%struct.mg_dns_message = type { i16, i8, %struct.mg_addr, [256 x i8] }
%struct.mg_dns_header = type { i16, i16, i16, i16, i16, i16 }
%struct.url = type { i64, i64, i64, i64, i64, i64, i64 }
%union.usa = type { %struct.sockaddr_in }
%union.__SOCKADDR_ARG = type { %struct.sockaddr* }
%struct.sockaddr = type { i16, [14 x i8] }
%struct.anon = type { %struct.mg_dns_header, [256 x i8] }
%struct.mg_fd = type { i8*, %struct.mg_fs* }
%struct.mg_http_part = type { %struct.mg_str, %struct.mg_str, %struct.mg_str }
%struct.printdirentrydata = type { %struct.mg_connection*, %struct.mg_http_message*, %struct.mg_http_serve_opts*, i8* }
%struct.mg_md5_ctx = type { [4 x i32], [2 x i32], [64 x i8] }
%struct.mg_mqtt_opts = type { %struct.mg_str, %struct.mg_str, %struct.mg_str, %struct.mg_str, %struct.mg_str, i8, i8, i8, i16 }
%struct.mg_mqtt_message = type { %struct.mg_str, %struct.mg_str, %struct.mg_str, i16, i8, i8, i8 }
%struct.mg_tls = type { i8*, %struct.mbedtls_x509_crt, %struct.mbedtls_x509_crt, %struct.mbedtls_ssl_context, %struct.mbedtls_ssl_config, %struct.mbedtls_pk_context }
%struct.mbedtls_x509_crt = type { %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, i32, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_named_data, %struct.mbedtls_asn1_named_data, %struct.mbedtls_x509_time, %struct.mbedtls_x509_time, %struct.mbedtls_pk_context, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_sequence, i32, i32, i32, i32, %struct.mbedtls_asn1_sequence, i8, %struct.mbedtls_asn1_buf, i32, i32, i8*, %struct.mbedtls_x509_crt* }
%struct.mbedtls_asn1_named_data = type { %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_named_data*, i8 }
%struct.mbedtls_x509_time = type { i32, i32, i32, i32, i32, i32 }
%struct.mbedtls_asn1_sequence = type { %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_sequence* }
%struct.mbedtls_asn1_buf = type { i32, i64, i8* }
%struct.mbedtls_ssl_context = type { %struct.mbedtls_ssl_config*, i32, i32, i32, i32, i32, i32, i32 (i8*, i8*, i64)*, i32 (i8*, i8*, i64)*, i32 (i8*, i8*, i64, i32)*, i8*, %struct.mbedtls_ssl_session*, %struct.mbedtls_ssl_session*, %struct.mbedtls_ssl_session*, %struct.mbedtls_ssl_session*, %struct.mbedtls_ssl_handshake_params*, %struct.mbedtls_ssl_transform*, %struct.mbedtls_ssl_transform*, %struct.mbedtls_ssl_transform*, %struct.mbedtls_ssl_transform*, i8*, void (i8*, i32, i32)*, i32 (i8*)*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i64, i64, i16, i64, i64, i64, i64, i32, i32, i8, i8*, i8*, i8*, i8*, i8*, i8*, i32, i64, i64, [8 x i8], i16, i8, i32, i8*, i8*, i8*, i64, i32, i64, [12 x i8], [12 x i8] }
%struct.mbedtls_ssl_session = type { i64, i32, i32, i64, [32 x i8], [48 x i8], %struct.mbedtls_x509_crt*, i32, i8*, i64, i32, i8, i32, i32 }
%struct.mbedtls_ssl_handshake_params = type opaque
%struct.mbedtls_ssl_transform = type opaque
%struct.mbedtls_ssl_config = type { [4 x i32*], void (i8*, i32, i8*, i32, i8*)*, i8*, i32 (i8*, i8*, i64)*, i8*, i32 (i8*, %struct.mbedtls_ssl_session*)*, i32 (i8*, %struct.mbedtls_ssl_session*)*, i8*, i32 (i8*, %struct.mbedtls_ssl_context*, i8*, i64)*, i8*, i32 (i8*, %struct.mbedtls_x509_crt*, i32, i32*)*, i8*, i32 (i8*, %struct.mbedtls_ssl_context*, i8*, i64)*, i8*, i32 (i8*, i8**, i8*, i8*, i64)*, i32 (i8*, i8*, i64, i8*, i64)*, i8*, i32 (i8*, %struct.mbedtls_ssl_session*, i8*, i8*, i64*, i32*)*, i32 (i8*, %struct.mbedtls_ssl_session*, i8*, i64)*, i8*, i32 (i8*, i8*, i8*, i64, i64, i64)*, i8*, %struct.mbedtls_x509_crt_profile*, %struct.mbedtls_ssl_key_cert*, %struct.mbedtls_x509_crt*, %struct.mbedtls_x509_crl*, i32*, i32*, %struct.mbedtls_mpi, %struct.mbedtls_mpi, i8*, i64, i8*, i64, i8**, i32, i32, i32, i32, [8 x i8], i32, i32, i8, i8, i8, i8, i24 }
%struct.mbedtls_x509_crt_profile = type { i32, i32, i32, i32 }
%struct.mbedtls_ssl_key_cert = type opaque
%struct.mbedtls_x509_crl = type { %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, i32, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_named_data, %struct.mbedtls_x509_time, %struct.mbedtls_x509_time, %struct.mbedtls_x509_crl_entry, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, i32, i32, i8*, %struct.mbedtls_x509_crl* }
%struct.mbedtls_x509_crl_entry = type { %struct.mbedtls_asn1_buf, %struct.mbedtls_asn1_buf, %struct.mbedtls_x509_time, %struct.mbedtls_asn1_buf, %struct.mbedtls_x509_crl_entry* }
%struct.mbedtls_mpi = type { i32, i64, i64* }
%struct.mbedtls_pk_context = type { %struct.mbedtls_pk_info_t*, i8* }
%struct.mbedtls_pk_info_t = type opaque
%struct.pollfd = type { i32, i16, i16 }
%struct.mg_sha1_ctx = type { [5 x i32], [2 x i32], [64 x i8] }
%union.char64long16 = type { [16 x i32] }
%struct.ws_msg = type { i8, i64, i64 }
%struct.mg_ws_message = type { %struct.mg_str, i8 }
%struct.termios = type { i32, i32, i32, i32, i8, [32 x i8], i32, i32 }
%struct.Date_t = type { i16, [2 x i8] }
%struct.OrionCmd_t = type { [2 x float], i32, i8, float }
%struct.OrionLaserState_t = type { i32, i24, i16 }
%struct.OrionPerformance_t = type { [2 x float], [2 x float], [2 x float], [2 x float], [2 x float] }
%struct.OrionDiagnostics_t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%struct.ThreadLoading_t = type { float, float, float, float, i16, float }
%struct.CoreLoading_t = type { float, float, float, i8, [10 x %struct.ThreadLoading_t] }
%struct.OrionSoftwareDiagnostics_t = type { i32, i8, [2 x %struct.CoreLoading_t] }
%struct.FftData_t = type { float, [3 x float], [3 x float] }
%struct.OrionVibration_t = type { [3 x float], [3 x float], [16 x %struct.FftData_t] }
%struct.NetworkDiagnostics_t = type { i16, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.StareStart_t = type { i32, float, i8, float, float, double, double, double, double, double, double, [4 x float], float, float, i32, float, float, float }
%struct.DebugString_t = type { i32, i32, i8, i8, [128 x i8] }
%struct.InsQuality_t = type { i32, i32, i32, i32, i8, float, float, float, float, float, [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], float, float, float, [3 x float], [3 x float], float, float, float, i8, i8, i8, i8, [2 x float], float }
%struct.OrionStartupCmd_t = type { %struct.OrionCmd_t }
%struct.PosPreset_t = type { float, float, i32 }
%struct.OrionPositions_t = type { i8, [6 x %struct.PosPreset_t] }
%struct.Point_t = type { [3 x float] }
%struct.OrionPath_t = type { i8, i8, [15 x %struct.Point_t], float, float }
%struct.OrionFlirSettings_t = type { i8, i8, i32, i8, i8, i8, i8, i8, float, i32 }
%struct.OrionAptinaSettings_t = type { i8, float, float, float, float, i8, float, float, float, i8, i8, float, float, float }
%struct.OrionZafiroSettings_t = type { i8, i8, float, i8, float, float, i8 }
%struct.OrionHitachiSettings_t = type { i8, i16, float, float, i8 }
%struct.OrionSonySettings_t = type { i8, float, float, i8, i8, i8, float, float, float, float }
%struct.OrionKtncSettings_t = type { i8, i16, float, i8, i8, i8, i8, i8, i8, float, i8, i8, i8 }
%struct.OrionUserData_t = type { i32, i8, i32, [128 x i8] }
%struct.OrionLaserCommand_t = type { i8, [16 x i8], i8, i8, i8, i16, i16, i16, i8 }
%struct.OrionLaserStates_t = type { i8, [2 x %struct.OrionLaserState_t] }
%struct.OrionUartConfig_t = type { i32, i32, i32, i8, i32 }
%struct.OrionLimitsData_t = type { [2 x float], [2 x float], [2 x float], [2 x float], [2 x float], [2 x float], [2 x float], [2 x float], [2 x float] }
%struct.InsOptions_t = type { i16, float, i16, [3 x float], float, [3 x float], float, [3 x float], float, [3 x float] }
%struct.OrionNetworkSettings_t = type { i32, i32, i32, i8, i16, i16, i8 }
%struct.OrionNetworkByteSettings_t = type { [4 x i8], [4 x i8], [4 x i8], i8, i16, i16, i8 }
%struct.OrionNetworkVideo_t = type { i32, i16, i32, i8, i32, i8, i8 }
%struct.OrionNetworkByteVideo_t = type { [4 x i8], i16, i32, i8, i32, i8, i8 }
%struct.OrionCamSettings_t = type { i8, i8, i32, i32, float, float, float, i16, i16, float, [2 x float], [2 x float] }
%struct.OrionCameras_t = type { i8, [2 x %struct.OrionCamSettings_t] }
%struct.OrionClevisVersion_t = type { [16 x i8], [16 x i8], i32 }
%struct.OrionPayloadVersion_t = type { [24 x i8], [16 x i8], i32 }
%struct.OrionRetractVersion_t = type { [16 x i8] }
%struct.OrionBoard_t = type { i32, i32, i32, i32, %struct.Date_t, %struct.Date_t }
%struct.OrionAutopilotData_t = type { i8, i8, i16 }
%union.pthread_attr_t = type { i64, [48 x i8] }
@llvm.global.annotations = appending global [21 x { i8*, i8*, i8*, i32 }] [{ i8*, i8*, i8*, i32 } { i8* bitcast (i32 (%struct.mg_connection*, %struct.mg_http_message*)* @handle_camera_command to i8*), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 110 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 (%struct.mg_connection*, %struct.mg_http_message*)* @handle_get_metadata to i8*), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.19, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 148 }, { i8*, i8*, i8*, i32 } { i8* getelementptr inbounds ([64000 x i8], [64000 x i8]* @wsend_video.buf, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 173 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 (i8*)* @wsend_video to i8*), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 167 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 ()* @websrv_main to i8*), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 229 }, { i8*, i8*, i8*, i32 } { i8* bitcast ([12 x i16]* @month_day_norm to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1.35, i32 0, i32 0), i32 9 }, { i8*, i8*, i8*, i32 } { i8* bitcast ([12 x i16]* @month_day_leap to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1.35, i32 0, i32 0), i32 12 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVFormatContext** @pInputContext to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 36 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVCodecContext** @pDecodeContext to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 37 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVCodecContext** @pEncodeContext to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 38 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVFrame** @pFrame to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 39 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32* @VideoStream to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 42 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32* @DataStream to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 43 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 (i8*)* @get_frame to i8*), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.11.485, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 210 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 (double*, double*, double*, double*)* @get_metadata to i8*), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.12.488, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 236 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 (double, double, double, i8, i8)* @send_camcmd to i8*), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.16.491, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 459 }, { i8*, i8*, i8*, i32 } { i8* bitcast (i32 ()* @run_videoproc to i8*), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.22.494, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 520 }, { i8*, i8*, i8*, i32 } { i8* getelementptr inbounds (%struct.TrilliumPkt_t, %struct.TrilliumPkt_t* @PktOut, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 34 }, { i8*, i8*, i8*, i32 } { i8* getelementptr inbounds (%struct.TrilliumPkt_t, %struct.TrilliumPkt_t* @PktIn, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 35 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVPacket* @Packet to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 40 }, { i8*, i8*, i8*, i32 } { i8* bitcast (%struct.AVPacket* @OutPacket to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.481, i32 0, i32 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1.482, i32 0, i32 0), i32 41 }], section "llvm.metadata"
@.str.12 = private unnamed_addr constant [26 x i8] c"FUN_HANDLE_CAMERA_COMMAND\00", section "llvm.metadata"
@.str.1 = private unnamed_addr constant [69 x i8] c"/workspaces/eop2-closure-mind-demo/websrv/annotated-working/websrv.c\00", section "llvm.metadata"
@.str.19 = private unnamed_addr constant [24 x i8] c"FUN_HANDLE_GET_METADATA\00", section "llvm.metadata"
@wsend_video.buf = internal global [64000 x i8] zeroinitializer, align 16, !dbg !0
@.str = private unnamed_addr constant [12 x i8] c"GREEN_SHARE\00", section "llvm.metadata"
@.str.20 = private unnamed_addr constant [16 x i8] c"FUN_WSEND_VIDEO\00", section "llvm.metadata"
@.str.33 = private unnamed_addr constant [16 x i8] c"FUN_WEBSRV_MAIN\00", section "llvm.metadata"
@stderr = external dso_local global %struct._IO_FILE*, align 8
@.str.32 = private unnamed_addr constant [32 x i8] c"Failed to run video processing\0A\00", align 1
@.str.28 = private unnamed_addr constant [18 x i8] c"ws://0.0.0.0:8443\00", align 1
@.str.29 = private unnamed_addr constant [20 x i8] c"http://0.0.0.0:8443\00", align 1
@.str.30 = private unnamed_addr constant [46 x i8] c"Starting HTTPS camera API endpoint on %s/api\0A\00", align 1
@.str.31 = private unnamed_addr constant [44 x i8] c"Starting WSS video endpoint on %s/ws/video\0A\00", align 1
@.str.22 = private unnamed_addr constant [20 x i8] c"./creds/server.cert\00", align 1
@.str.23 = private unnamed_addr constant [19 x i8] c"./creds/server.key\00", align 1
@.str.24 = private unnamed_addr constant [10 x i8] c"/ws/video\00", align 1
@.str.25 = private unnamed_addr constant [49 x i8] c"Stream request received, upgrading to websocket\0A\00", align 1
@.str.26 = private unnamed_addr constant [12 x i8] c"/api/camcmd\00", align 1
@.str.27 = private unnamed_addr constant [13 x i8] c"/api/getllat\00", align 1
@webfn.s_web_root = internal global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i32 0, i32 0), align 8, !dbg !164
@.str.21 = private unnamed_addr constant [6 x i8] c"./www\00", align 1
@.str.13 = private unnamed_addr constant [26 x i8] c"{%Q:%g,%Q:%g,%Q:%g,%Q:%g}\00", align 1
@.str.14 = private unnamed_addr constant [4 x i8] c"Lat\00", align 1
@.str.15 = private unnamed_addr constant [4 x i8] c"Lon\00", align 1
@.str.16 = private unnamed_addr constant [4 x i8] c"Alt\00", align 1
@.str.17 = private unnamed_addr constant [4 x i8] c"Tim\00", align 1
@.str.8 = private unnamed_addr constant [33 x i8] c"Content-Type: application/json\0D\0A\00", align 1
@.str.18 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.2 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@.str.3 = private unnamed_addr constant [6 x i8] c"$.pan\00", align 1
@.str.4 = private unnamed_addr constant [7 x i8] c"$.tilt\00", align 1
@.str.5 = private unnamed_addr constant [10 x i8] c"$.imptime\00", align 1
@.str.6 = private unnamed_addr constant [7 x i8] c"$.mode\00", align 1
@.str.7 = private unnamed_addr constant [7 x i8] c"$.stab\00", align 1
@.str.9 = private unnamed_addr constant [18 x i8] c"{\22result\22: \22%s\22}\0A\00", align 1
@.str.10 = private unnamed_addr constant [5 x i8] c"OKAY\00", align 1
@.str.11 = private unnamed_addr constant [5 x i8] c"FAIL\00", align 1
@month_day_norm = dso_local global [12 x i16] [i16 0, i16 31, i16 59, i16 90, i16 120, i16 151, i16 181, i16 212, i16 243, i16 273, i16 304, i16 334], align 16, !dbg !171
@month_day_leap = dso_local global [12 x i16] [i16 0, i16 31, i16 60, i16 91, i16 121, i16 152, i16 182, i16 213, i16 244, i16 274, i16 305, i16 335], align 16, !dbg !177
@.str.34 = private unnamed_addr constant [15 x i8] c"ORANGE_NOSHARE\00", section "llvm.metadata"
@.str.1.35 = private unnamed_addr constant [76 x i8] c"/workspaces/eop2-closure-mind-demo/websrv/annotated-working/mathutilities.c\00", section "llvm.metadata"
@fastSin.A = internal constant [4 x float] [float 0x3FC5555560000000, float 0x3FA99999A0000000, float 0x3F98618620000000, float 0x3F8C71C720000000], align 16, !dbg !183
@fastCos.A = internal constant [5 x float] [float 5.000000e-01, float 0x3FB5555560000000, float 0x3FA1111120000000, float 0x3F924924A0000000, float 0x3F86C16C20000000], align 16, !dbg !193
@__const.testEarthPosition.posECEF = private unnamed_addr constant [3 x double] [double 0x415854A640000000, double 0.000000e+00, double 0.000000e+00], align 16
@__const.testLinearAlgebra.vector = private unnamed_addr constant [3 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00], align 4
@__const.getTerrainIntersection.Temp = private unnamed_addr constant [3 x float] [float 1.000000e+00, float 0.000000e+00, float 0.000000e+00], align 4
@__const.testEarthRotation.velNED = private unnamed_addr constant [3 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00], align 4
@pHeadTag = dso_local global %struct.KlvTag_t* null, align 8, !dbg !199
@TagInfo = dso_local global [95 x %struct.KlvTagInfo_t] [%struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_NULL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CHECKSUM\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TIME_STAMP\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_MISSION_ID\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TAIL_NUMBER\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_YAW\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_PITCH_SHORT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFD657184AE74487, double 0x3FD657184AE74487 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_ROLL_SHORT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFEBECDE5DA115A9, double 0x3FEBECDE5DA115A9 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_TAS\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_IAS\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_ID\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_ID\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_COORD_SYSTEM\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_MSL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_HFOV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_VFOV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_PAN\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_TILT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_ROLL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SLANT_RANGE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 5.000000e+06 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_WIDTH\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 1.000000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_IMAGE_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_IMAGE_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_IMAGE_MSL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER1_LAT_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER1_LON_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER2_LAT_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER2_LON_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER3_LAT_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER3_LON_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER4_LAT_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER4_LON_OFFSET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBF557254C2C98977, double 0x3F557254C2C98977 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ICING\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_WIND_DIRECTION\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_WIND_SPEED\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 1.000000e+02 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_STATIC_PRESSURE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 5.000000e+05 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_DENSITY_ALTITUDE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_OAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 1, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_MSL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TRACK_WIDTH\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TRACK_HEIGHT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_CE90\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 4.096000e+03 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_LE90\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 4.096000e+03 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_GENERIC_FLAG\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SECURITY\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_DYNAMIC_PRESSURE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 5.000000e+05 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ANGLE_OF_ATTACK_SHORT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_VERTICAL_VELOCITY\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -1.800000e+02, double 1.800000e+02 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SIDESLIP_SHORT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFD657184AE74487, double 0x3FD657184AE74487 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_AIRFIELD_PRESSURE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 5.000000e+05 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_AIRFIELD_ELEVATION\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_HUMIDITY\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 1.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_GROUND_SPEED\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_GROUND_RANGE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 5.000000e+06 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_FUEL_REMAINING\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 1.000000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CALLSIGN\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_WEAPON_LOAD\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_WEAPON_FIRED\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_LASER_PRF_CODE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_FOV_NAME\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_MAGNETIC_HEADING\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_VERSION\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_TARGET_COVARIANCE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_MSL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_NAME\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 3, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_HEADING\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0.000000e+00, double 0x401921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_EVENT_START_TIME\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_RVT_LOCAL_SET\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_VMTI\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SENSOR_HAE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ALT_PLATFORM_HAE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_OPERATIONAL_MODE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 0, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_IMAGE_HAE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -9.000000e+02, double 1.900000e+04 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_NORTH_VELOCITY\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -3.270000e+02, double 3.270000e+02 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_EAST_VELOCITY\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double -3.270000e+02, double 3.270000e+02 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_IMAGE_HORIZON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER1_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER1_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER2_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER2_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER3_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER3_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER4_LAT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORNER4_LON\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xC00921FB54442D18, double 0x400921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_PITCH\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_PLATFORM_ROLL\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_ANGLE_OF_ATTACK\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_SIDESLIP\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 2, double 0xBFF921FB54442D18, double 0x3FF921FB54442D18 }, %struct.KlvTagInfo_t { [64 x i8] c"KLV_UAS_CORE_ID\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 4, double 0.000000e+00, double 0.000000e+00 }], align 16, !dbg !325
@.str.48 = private unnamed_addr constant [37 x i8] c"Key %3d (%-32s), length: %d, value: \00", align 1
@.str.1.49 = private unnamed_addr constant [5 x i8] c"%lf\0A\00", align 1
@.str.2.50 = private unnamed_addr constant [5 x i8] c"%lu\0A\00", align 1
@.str.3.51 = private unnamed_addr constant [5 x i8] c"%ld\0A\00", align 1
@.str.4.52 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.5.53 = private unnamed_addr constant [6 x i8] c"%02x \00", align 1
@.str.6.54 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str.7.55 = private unnamed_addr constant [43 x i8] c"TAG: Key = 0x%02x, Length = %d, Value = { \00", align 1
@.str.9.56 = private unnamed_addr constant [3 x i8] c", \00", align 1
@.str.10.57 = private unnamed_addr constant [4 x i8] c" }\0A\00", align 1
@.str.8.58 = private unnamed_addr constant [9 x i8] c"0x%02x%s\00", align 1
@mg_fs_packed = dso_local global %struct.mg_fs { i32 (i8*, i64*, i64*)* @packed_stat, void (i8*, void (i8*, i8*)*, i8*)* @packed_list, i8* (i8*, i32)* @packed_open, void (i8*)* @packed_close, i64 (i8*, i8*, i64)* @packed_read, i64 (i8*, i8*, i64)* @packed_write, i64 (i8*, i64)* @packed_seek, i1 (i8*, i8*)* @packed_rename, i1 (i8*)* @packed_remove, i1 (i8*)* @packed_mkdir }, align 8, !dbg !341
@.str.33.59 = private unnamed_addr constant [5 x i8] c"%.*s\00", align 1
@.str.95 = private unnamed_addr constant [3 x i8] c"0x\00", align 1
@.str.246 = private unnamed_addr constant [8 x i8] c"\08\0C\0A\0D\09\\\22\00", align 1
@.str.247 = private unnamed_addr constant [8 x i8] c"bfnrt\\\22\00", align 1
@.str.94 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00", align 1
@.str.38 = private unnamed_addr constant [3 x i8] c"%s\00", align 1
@.str.96 = private unnamed_addr constant [2 x i8] c"0\00", align 1
@.str.97 = private unnamed_addr constant [4 x i8] c"inf\00", align 1
@.str.98 = private unnamed_addr constant [5 x i8] c"-inf\00", align 1
@.str.99 = private unnamed_addr constant [4 x i8] c"nan\00", align 1
@mg_fs_posix = dso_local global %struct.mg_fs { i32 (i8*, i64*, i64*)* @p_stat, void (i8*, void (i8*, i8*)*, i8*)* @p_list, i8* (i8*, i32)* @p_open, void (i8*)* @p_close, i64 (i8*, i8*, i64)* @p_read, i64 (i8*, i8*, i64)* @p_write, i64 (i8*, i64)* @p_seek, i1 (i8*, i8*)* @p_rename, i1 (i8*)* @p_remove, i1 (i8*)* @p_mkdir }, align 8, !dbg !1094
@.str.124 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.148 = private unnamed_addr constant [4 x i8] c"a+b\00", align 1
@.str.146 = private unnamed_addr constant [2 x i8] c".\00", align 1
@.str.147 = private unnamed_addr constant [3 x i8] c"..\00", align 1
@s_spec = dso_local global i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.49, i32 0, i32 0), align 8, !dbg !1097
@.str.49 = private unnamed_addr constant [2 x i8] c"2\00", align 1
@s_log_func = dso_local global void (i8)* @default_logger, align 8, !dbg !1100
@.str.131 = private unnamed_addr constant [43 x i8] c"DNS server URL is NULL. Call mg_mgr_init()\00", align 1
@.str.132 = private unnamed_addr constant [9 x i8] c"resolver\00", align 1
@.str.133 = private unnamed_addr constant [12 x i8] c"resolve OOM\00", align 1
@.str.134 = private unnamed_addr constant [10 x i8] c"src/dns.c\00", align 1
@__func__.mg_sendnsreq = private unnamed_addr constant [13 x i8] c"mg_sendnsreq\00", align 1
@.str.135 = private unnamed_addr constant [35 x i8] c"%lu resolving %.*s @ %s, txnid %hu\00", align 1
@.str.136 = private unnamed_addr constant [9 x i8] c"DNS send\00", align 1
@.str.145 = private unnamed_addr constant [6 x i8] c"\00\00\01\00\01\00", align 1
@.str.80 = private unnamed_addr constant [11 x i8] c"src/sock.c\00", align 1
@__func__.mg_send = private unnamed_addr constant [8 x i8] c"mg_send\00", align 1
@.str.81 = private unnamed_addr constant [24 x i8] c"%lu %p %d:%d %ld err %d\00", align 1
@.str.44 = private unnamed_addr constant [12 x i8] c"src/iobuf.c\00", align 1
@__func__.mg_iobuf_resize = private unnamed_addr constant [16 x i8] c"mg_iobuf_resize\00", align 1
@.str.45 = private unnamed_addr constant [11 x i8] c"%lld->%lld\00", align 1
@__func__.iolog = private unnamed_addr constant [6 x i8] c"iolog\00", align 1
@.str.255 = private unnamed_addr constant [3 x i8] c"<-\00", align 1
@.str.256 = private unnamed_addr constant [3 x i8] c"->\00", align 1
@.str.254 = private unnamed_addr constant [24 x i8] c"\0A-- %lu %s %s %s %s %ld\00", align 1
@.str.53 = private unnamed_addr constant [3 x i8] c" \00", align 1
@.str.54 = private unnamed_addr constant [4 x i8] c" \00", align 1
@.str.58 = private unnamed_addr constant [8 x i8] c"[%s]:%d\00", align 1
@.str.59 = private unnamed_addr constant [6 x i8] c"%s:%d\00", align 1
@.str.60 = private unnamed_addr constant [24 x i8] c"%x:%x:%x:%x:%x:%x:%x:%x\00", align 1
@.str.61 = private unnamed_addr constant [12 x i8] c"%d.%d.%d.%d\00", align 1
@.str.52 = private unnamed_addr constant [17 x i8] c"%llx %d %s:%d:%s\00", align 1
@.str.137 = private unnamed_addr constant [12 x i8] c"DNS timeout\00", align 1
@__func__.dns_cb = private unnamed_addr constant [7 x i8] c"dns_cb\00", align 1
@.str.138 = private unnamed_addr constant [25 x i8] c"Unexpected DNS response:\00", align 1
@.str.139 = private unnamed_addr constant [6 x i8] c"%s %d\00", align 1
@.str.140 = private unnamed_addr constant [13 x i8] c"%lu %s is %s\00", align 1
@.str.141 = private unnamed_addr constant [21 x i8] c"%s DNS lookup failed\00", align 1
@.str.142 = private unnamed_addr constant [21 x i8] c"%lu already resolved\00", align 1
@.str.143 = private unnamed_addr constant [16 x i8] c"stray DNS reply\00", align 1
@.str.144 = private unnamed_addr constant [10 x i8] c"DNS error\00", align 1
@.str.62 = private unnamed_addr constant [10 x i8] c"src/net.c\00", align 1
@__func__.mg_connect = private unnamed_addr constant [11 x i8] c"mg_connect\00", align 1
@.str.64 = private unnamed_addr constant [9 x i8] c"null url\00", align 1
@.str.65 = private unnamed_addr constant [4 x i8] c"OOM\00", align 1
@.str.66 = private unnamed_addr constant [5 x i8] c"udp:\00", align 1
@.str.67 = private unnamed_addr constant [10 x i8] c"%lu -1 %s\00", align 1
@.str.68 = private unnamed_addr constant [12 x i8] c"src/event.c\00", align 1
@__func__.mg_error = private unnamed_addr constant [9 x i8] c"mg_error\00", align 1
@.str.1.69 = private unnamed_addr constant [10 x i8] c"%lu %p %s\00", align 1
@.str.87 = private unnamed_addr constant [13 x i8] c"socket(): %d\00", align 1
@__func__.mg_connect_resolved = private unnamed_addr constant [20 x i8] c"mg_connect_resolved\00", align 1
@.str.88 = private unnamed_addr constant [30 x i8] c"%lu %p connect in progress...\00", align 1
@.str.89 = private unnamed_addr constant [12 x i8] c"connect: %d\00", align 1
@.str.252 = private unnamed_addr constant [10 x i8] c"localhost\00", align 1
@.str.120 = private unnamed_addr constant [6 x i8] c"http:\00", align 1
@.str.121 = private unnamed_addr constant [4 x i8] c"ws:\00", align 1
@.str.114 = private unnamed_addr constant [5 x i8] c"wss:\00", align 1
@.str.115 = private unnamed_addr constant [7 x i8] c"https:\00", align 1
@.str.122 = private unnamed_addr constant [6 x i8] c"mqtt:\00", align 1
@.str.116 = private unnamed_addr constant [7 x i8] c"mqtts:\00", align 1
@.str.2.70 = private unnamed_addr constant [7 x i8] c"%s..%d\00", align 1
@.str.3.71 = private unnamed_addr constant [20 x i8] c"Content-Disposition\00", align 1
@.str.4.72 = private unnamed_addr constant [5 x i8] c"name\00", align 1
@.str.5.73 = private unnamed_addr constant [9 x i8] c"filename\00", align 1
@.str.6.74 = private unnamed_addr constant [22 x i8] c"Authorization: Basic \00", align 1
@.str.7.75 = private unnamed_addr constant [3 x i8] c"\0D\0A\00", align 1
@.str.8.76 = private unnamed_addr constant [11 x i8] c"src/http.c\00", align 1
@__func__.mg_http_bauth = private unnamed_addr constant [14 x i8] c"mg_http_bauth\00", align 1
@.str.9.77 = private unnamed_addr constant [35 x i8] c"%lu %s cannot resize iobuf %d->%d \00", align 1
@.str.10.78 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str.11.79 = private unnamed_addr constant [15 x i8] c"Content-Length\00", align 1
@.str.12.80 = private unnamed_addr constant [6 x i8] c"HTTP/\00", align 1
@.str.13.81 = private unnamed_addr constant [4 x i8] c"PUT\00", align 1
@.str.14.82 = private unnamed_addr constant [5 x i8] c"POST\00", align 1
@.str.15.83 = private unnamed_addr constant [4 x i8] c"204\00", align 1
@.str.149 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str.150 = private unnamed_addr constant [5 x i8] c": \0D\0A\00", align 1
@.str.16.84 = private unnamed_addr constant [6 x i8] c"%lx\0D\0A\00", align 1
@.str.18.87 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@.str.17.88 = private unnamed_addr constant [41 x i8] c"HTTP/1.1 %d %s\0D\0A%sContent-Length: %d\0D\0A\0D\0A\00", align 1
@.str.151 = private unnamed_addr constant [9 x i8] c"Continue\00", align 1
@.str.152 = private unnamed_addr constant [8 x i8] c"Created\00", align 1
@.str.153 = private unnamed_addr constant [9 x i8] c"Accepted\00", align 1
@.str.154 = private unnamed_addr constant [11 x i8] c"No Content\00", align 1
@.str.155 = private unnamed_addr constant [16 x i8] c"Partial Content\00", align 1
@.str.156 = private unnamed_addr constant [18 x i8] c"Moved Permanently\00", align 1
@.str.157 = private unnamed_addr constant [6 x i8] c"Found\00", align 1
@.str.158 = private unnamed_addr constant [13 x i8] c"Not Modified\00", align 1
@.str.159 = private unnamed_addr constant [12 x i8] c"Bad Request\00", align 1
@.str.160 = private unnamed_addr constant [13 x i8] c"Unauthorized\00", align 1
@.str.161 = private unnamed_addr constant [10 x i8] c"Forbidden\00", align 1
@.str.162 = private unnamed_addr constant [10 x i8] c"Not Found\00", align 1
@.str.163 = private unnamed_addr constant [13 x i8] c"I'm a teapot\00", align 1
@.str.164 = private unnamed_addr constant [22 x i8] c"Internal Server Error\00", align 1
@.str.165 = private unnamed_addr constant [16 x i8] c"Not Implemented\00", align 1
@.str.166 = private unnamed_addr constant [3 x i8] c"OK\00", align 1
@.str.19.89 = private unnamed_addr constant [12 x i8] c"\22%lld.%lld\22\00", align 1
@__func__.mg_http_serve_file = private unnamed_addr constant [19 x i8] c"mg_http_serve_file\00", align 1
@.str.20.90 = private unnamed_addr constant [10 x i8] c"NULL [%s]\00", align 1
@.str.21.91 = private unnamed_addr constant [6 x i8] c"%s.gz\00", align 1
@.str.22.92 = private unnamed_addr constant [11 x i8] c"Not found\0A\00", align 1
@.str.23.93 = private unnamed_addr constant [14 x i8] c"If-None-Match\00", align 1
@.str.24.94 = private unnamed_addr constant [51 x i8] c"HTTP/1.1 304 Not Modified\0D\0A%sContent-Length: 0\0D\0A\0D\0A\00", align 1
@.str.25.95 = private unnamed_addr constant [6 x i8] c"Range\00", align 1
@.str.26.96 = private unnamed_addr constant [30 x i8] c"Content-Range: bytes */%lld\0D\0A\00", align 1
@.str.27.97 = private unnamed_addr constant [38 x i8] c"Content-Range: bytes %lld-%lld/%lld\0D\0A\00", align 1
@.str.29.98 = private unnamed_addr constant [25 x i8] c"Content-Encoding: gzip\0D\0A\00", align 1
@.str.28.99 = private unnamed_addr constant [77 x i8] c"HTTP/1.1 %d %s\0D\0AContent-Type: %.*s\0D\0AEtag: %s\0D\0AContent-Length: %llu\0D\0A%s%s%s\0D\0A\00", align 1
@.str.30.100 = private unnamed_addr constant [5 x i8] c"HEAD\00", align 1
@.str.245 = private unnamed_addr constant [17 x i8] c"HTTP parse:\0A%.*s\00", align 1
@.str.243 = private unnamed_addr constant [8 x i8] c"chunked\00", align 1
@.str.244 = private unnamed_addr constant [18 x i8] c"Transfer-Encoding\00", align 1
@.str.224 = private unnamed_addr constant [7 x i8] c"bytes=\00", align 1
@__const.guess_content_type.tab = private unnamed_addr constant [61 x %struct.mg_str] [%struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.167, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.168, i32 0, i32 0), i64 24 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.169, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.168, i32 0, i32 0), i64 24 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.170, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.171, i32 0, i32 0), i64 23 }, %struct.mg_str { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.172, i32 0, i32 0), i64 2 }, %struct.mg_str { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.173, i32 0, i32 0), i64 30 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.174, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.175, i32 0, i32 0), i64 9 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.176, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.177, i32 0, i32 0), i64 9 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.178, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.179, i32 0, i32 0), i64 10 }, %struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.180, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.179, i32 0, i32 0), i64 10 }, %struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.181, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.182, i32 0, i32 0), i64 9 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.183, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.184, i32 0, i32 0), i64 8 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.185, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.186, i32 0, i32 0), i64 13 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.187, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.188, i32 0, i32 0), i64 25 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.189, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.190, i32 0, i32 0), i64 15 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.191, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.192, i32 0, i32 0), i64 8 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.193, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.194, i32 0, i32 0), i64 18 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.195, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.196, i32 0, i32 0), i64 24 }, %struct.mg_str { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.197, i32 0, i32 0), i64 2 }, %struct.mg_str { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.198, i32 0, i32 0), i64 16 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.199, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.200, i32 0, i32 0), i64 12 }, %struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.201, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.202, i32 0, i32 0), i64 16 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.203, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.204, i32 0, i32 0), i64 15 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.205, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.206, i32 0, i32 0), i64 10 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.207, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.208, i32 0, i32 0), i64 9 }, %struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.209, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.210, i32 0, i32 0), i64 10 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.211, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.212, i32 0, i32 0), i64 15 }, %struct.mg_str { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.213, i32 0, i32 0), i64 5 }, %struct.mg_str { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.168, i32 0, i32 0), i64 24 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.214, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.215, i32 0, i32 0), i64 18 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.216, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.217, i32 0, i32 0), i64 9 }, %struct.mg_str { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.218, i32 0, i32 0), i64 4 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.219, i32 0, i32 0), i64 10 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.220, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.221, i32 0, i32 0), i64 15 }, %struct.mg_str { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.222, i32 0, i32 0), i64 3 }, %struct.mg_str { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.223, i32 0, i32 0), i64 10 }, %struct.mg_str zeroinitializer], align 16
@.str.188 = private unnamed_addr constant [26 x i8] c"text/plain; charset=utf-8\00", align 1
@.str.167 = private unnamed_addr constant [5 x i8] c"html\00", align 1
@.str.168 = private unnamed_addr constant [25 x i8] c"text/html; charset=utf-8\00", align 1
@.str.169 = private unnamed_addr constant [4 x i8] c"htm\00", align 1
@.str.170 = private unnamed_addr constant [4 x i8] c"css\00", align 1
@.str.171 = private unnamed_addr constant [24 x i8] c"text/css; charset=utf-8\00", align 1
@.str.172 = private unnamed_addr constant [3 x i8] c"js\00", align 1
@.str.173 = private unnamed_addr constant [31 x i8] c"text/javascript; charset=utf-8\00", align 1
@.str.174 = private unnamed_addr constant [4 x i8] c"gif\00", align 1
@.str.175 = private unnamed_addr constant [10 x i8] c"image/gif\00", align 1
@.str.176 = private unnamed_addr constant [4 x i8] c"png\00", align 1
@.str.177 = private unnamed_addr constant [10 x i8] c"image/png\00", align 1
@.str.178 = private unnamed_addr constant [4 x i8] c"jpg\00", align 1
@.str.179 = private unnamed_addr constant [11 x i8] c"image/jpeg\00", align 1
@.str.180 = private unnamed_addr constant [5 x i8] c"jpeg\00", align 1
@.str.181 = private unnamed_addr constant [5 x i8] c"woff\00", align 1
@.str.182 = private unnamed_addr constant [10 x i8] c"font/woff\00", align 1
@.str.183 = private unnamed_addr constant [4 x i8] c"ttf\00", align 1
@.str.184 = private unnamed_addr constant [9 x i8] c"font/ttf\00", align 1
@.str.185 = private unnamed_addr constant [4 x i8] c"svg\00", align 1
@.str.186 = private unnamed_addr constant [14 x i8] c"image/svg+xml\00", align 1
@.str.187 = private unnamed_addr constant [4 x i8] c"txt\00", align 1
@.str.189 = private unnamed_addr constant [4 x i8] c"avi\00", align 1
@.str.190 = private unnamed_addr constant [16 x i8] c"video/x-msvideo\00", align 1
@.str.191 = private unnamed_addr constant [4 x i8] c"csv\00", align 1
@.str.192 = private unnamed_addr constant [9 x i8] c"text/csv\00", align 1
@.str.193 = private unnamed_addr constant [4 x i8] c"doc\00", align 1
@.str.194 = private unnamed_addr constant [19 x i8] c"application/msword\00", align 1
@.str.195 = private unnamed_addr constant [4 x i8] c"exe\00", align 1
@.str.196 = private unnamed_addr constant [25 x i8] c"application/octet-stream\00", align 1
@.str.197 = private unnamed_addr constant [3 x i8] c"gz\00", align 1
@.str.198 = private unnamed_addr constant [17 x i8] c"application/gzip\00", align 1
@.str.199 = private unnamed_addr constant [4 x i8] c"ico\00", align 1
@.str.200 = private unnamed_addr constant [13 x i8] c"image/x-icon\00", align 1
@.str.201 = private unnamed_addr constant [5 x i8] c"json\00", align 1
@.str.202 = private unnamed_addr constant [17 x i8] c"application/json\00", align 1
@.str.203 = private unnamed_addr constant [4 x i8] c"mov\00", align 1
@.str.204 = private unnamed_addr constant [16 x i8] c"video/quicktime\00", align 1
@.str.205 = private unnamed_addr constant [4 x i8] c"mp3\00", align 1
@.str.206 = private unnamed_addr constant [11 x i8] c"audio/mpeg\00", align 1
@.str.207 = private unnamed_addr constant [4 x i8] c"mp4\00", align 1
@.str.208 = private unnamed_addr constant [10 x i8] c"video/mp4\00", align 1
@.str.209 = private unnamed_addr constant [5 x i8] c"mpeg\00", align 1
@.str.210 = private unnamed_addr constant [11 x i8] c"video/mpeg\00", align 1
@.str.211 = private unnamed_addr constant [4 x i8] c"pdf\00", align 1
@.str.212 = private unnamed_addr constant [16 x i8] c"application/pdf\00", align 1
@.str.213 = private unnamed_addr constant [6 x i8] c"shtml\00", align 1
@.str.214 = private unnamed_addr constant [4 x i8] c"tgz\00", align 1
@.str.215 = private unnamed_addr constant [19 x i8] c"application/tar-gz\00", align 1
@.str.216 = private unnamed_addr constant [4 x i8] c"wav\00", align 1
@.str.217 = private unnamed_addr constant [10 x i8] c"audio/wav\00", align 1
@.str.218 = private unnamed_addr constant [5 x i8] c"webp\00", align 1
@.str.219 = private unnamed_addr constant [11 x i8] c"image/webp\00", align 1
@.str.220 = private unnamed_addr constant [4 x i8] c"zip\00", align 1
@.str.221 = private unnamed_addr constant [16 x i8] c"application/zip\00", align 1
@.str.222 = private unnamed_addr constant [4 x i8] c"3gp\00", align 1
@.str.223 = private unnamed_addr constant [11 x i8] c"video/3gpp\00", align 1
@.str.93 = private unnamed_addr constant [16 x i8] c"SSI not enabled\00", align 1
@.str.229 = private unnamed_addr constant [453 x i8] c"<script>function srt(tb, sc, so, d) {var tr = Array.prototype.slice.call(tb.rows, 0),tr = tr.sort(function (a, b) { var c1 = a.cells[sc], c2 = b.cells[sc],n1 = c1.getAttribute('name'), n2 = c2.getAttribute('name'), t1 = a.cells[2].getAttribute('name'), t2 = b.cells[2].getAttribute('name'); return so * (t1 < 0 && t2 >= 0 ? -1 : t2 < 0 && t1 >= 0 ? 1 : n1 ? parseInt(n2) - parseInt(n1) : c1.textContent.trim().localeCompare(c2.textContent.trim())); });\00", align 1
@.str.230 = private unnamed_addr constant [452 x i8] c"for (var i = 0; i < tr.length; i++) tb.appendChild(tr[i]); if (!d) window.location.hash = ('sc=' + sc + '&so=' + so); };window.onload = function() {var tb = document.getElementById('tb');var m = /sc=([012]).so=(1|-1)/.exec(window.location.hash) || [0, 2, 1];var sc = m[1], so = m[2]; document.onclick = function(ev) { var c = ev.target.rel; if (c) {if (c == sc) so *= -1; srt(tb, c, so); sc = c; ev.preventDefault();}};srt(tb, sc, so, true);}</script>\00", align 1
@.str.231 = private unnamed_addr constant [88 x i8] c"HTTP/1.1 200 OK\0D\0AContent-Type: text/html; charset=utf-8\0D\0A%sContent-Length: \0D\0A\0D\0A\00", align 1
@.str.232 = private unnamed_addr constant [392 x i8] c"<!DOCTYPE html><html><head><title>Index of %.*s</title>%s%s<style>th,td {text-align: left; padding-right: 1em; font-family: monospace; }</style></head><body><h1>Index of %.*s</h1><table cellpadding=\220\22><thead><tr><th><a href=\22#\22 rel=\220\22>Name</a></th><th><a href=\22#\22 rel=\221\22>Modified</a></th><th><a href=\22#\22 rel=\222\22>Size</a></th></tr><tr><td colspan=\223\22><hr></td></tr></thead><tbody id=\22tb\22>\0A\00", align 1
@.str.233 = private unnamed_addr constant [80 x i8] c" <tr><td><a href=\22..\22>..</a></td><td name=-1></td><td name=-1>[DIR]</td></tr>\0A\00", align 1
@.str.234 = private unnamed_addr constant [113 x i8] c"</tbody><tfoot><tr><td colspan=\223\22><hr></td></tr></tfoot></table><address>Mongoose v.%s</address></body></html>\0A\00", align 1
@.str.235 = private unnamed_addr constant [4 x i8] c"7.7\00", align 1
@.str.236 = private unnamed_addr constant [4 x i8] c"%lu\00", align 1
@.str.41 = private unnamed_addr constant [7 x i8] c"%s%c%s\00", align 1
@__func__.printdirentry = private unnamed_addr constant [14 x i8] c"printdirentry\00", align 1
@.str.237 = private unnamed_addr constant [13 x i8] c"%s truncated\00", align 1
@.str.238 = private unnamed_addr constant [17 x i8] c"%lu stat(%s): %d\00", align 1
@.str.119 = private unnamed_addr constant [2 x i8] c"/\00", align 1
@.str.239 = private unnamed_addr constant [6 x i8] c"[DIR]\00", align 1
@.str.240 = private unnamed_addr constant [5 x i8] c"%lld\00", align 1
@.str.241 = private unnamed_addr constant [4 x i8] c"%ld\00", align 1
@.str.242 = private unnamed_addr constant [88 x i8] c" <tr><td><a href=\22%.*s%s\22>%s%s</a></td><td name=%lu>%s</td><td name=%lld>%s</td></tr>\0A\00", align 1
@__func__.uri_to_path2 = private unnamed_addr constant [13 x i8] c"uri_to_path2\00", align 1
@.str.225 = private unnamed_addr constant [18 x i8] c"%lu %.*s -> %s %d\00", align 1
@.str.226 = private unnamed_addr constant [59 x i8] c"HTTP/1.1 301 Moved\0D\0ALocation: %.*s/\0D\0AContent-Length: 0\0D\0A\0D\0A\00", align 1
@.str.227 = private unnamed_addr constant [12 x i8] c"/index.html\00", align 1
@.str.228 = private unnamed_addr constant [13 x i8] c"/index.shtml\00", align 1
@.str.31.103 = private unnamed_addr constant [14 x i8] c"Authorization\00", align 1
@.str.32.104 = private unnamed_addr constant [7 x i8] c"Basic \00", align 1
@.str.34.105 = private unnamed_addr constant [8 x i8] c"Bearer \00", align 1
@.str.35 = private unnamed_addr constant [7 x i8] c"Cookie\00", align 1
@.str.36 = private unnamed_addr constant [13 x i8] c"access_token\00", align 1
@.str.37 = private unnamed_addr constant [7 x i8] c"offset\00", align 1
@.str.39 = private unnamed_addr constant [14 x i8] c"name required\00", align 1
@.str.40 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@__func__.mg_http_upload = private unnamed_addr constant [15 x i8] c"mg_http_upload\00", align 1
@.str.42 = private unnamed_addr constant [20 x i8] c"%d bytes @ %ld [%s]\00", align 1
@.str.43 = private unnamed_addr constant [13 x i8] c"open(%s): %d\00", align 1
@__func__.mg_listen = private unnamed_addr constant [10 x i8] c"mg_listen\00", align 1
@.str.68.110 = private unnamed_addr constant [7 x i8] c"OOM %s\00", align 1
@.str.69 = private unnamed_addr constant [21 x i8] c"Failed: %s, errno %d\00", align 1
@__func__.mg_open_listener = private unnamed_addr constant [17 x i8] c"mg_open_listener\00", align 1
@.str.82 = private unnamed_addr constant [26 x i8] c"invalid listening URL: %s\00", align 1
@.str.83 = private unnamed_addr constant [11 x i8] c"socket: %d\00", align 1
@.str.84 = private unnamed_addr constant [14 x i8] c"reuseaddr: %d\00", align 1
@.str.85 = private unnamed_addr constant [9 x i8] c"bind: %d\00", align 1
@.str.86 = private unnamed_addr constant [11 x i8] c"listen: %d\00", align 1
@.str.46 = private unnamed_addr constant [5 x i8] c"true\00", align 1
@.str.47 = private unnamed_addr constant [5 x i8] c"null\00", align 1
@.str.48.111 = private unnamed_addr constant [6 x i8] c"false\00", align 1
@.str.50 = private unnamed_addr constant [10 x i8] c"src/log.c\00", align 1
@__func__.mg_log_set = private unnamed_addr constant [11 x i8] c"mg_log_set\00", align 1
@.str.51 = private unnamed_addr constant [24 x i8] c"Setting log level to %s\00", align 1
@.str.55 = private unnamed_addr constant [8 x i8] c"\00\04MQTT\04\00", align 1
@.str.123 = private unnamed_addr constant [13 x i8] c"/dev/urandom\00", align 1
@.str.56 = private unnamed_addr constant [11 x i8] c"src/mqtt.c\00", align 1
@__func__.mg_mqtt_pub = private unnamed_addr constant [12 x i8] c"mg_mqtt_pub\00", align 1
@.str.57 = private unnamed_addr constant [21 x i8] c"%lu [%.*s] -> [%.*s]\00", align 1
@__func__.mqtt_cb = private unnamed_addr constant [8 x i8] c"mqtt_cb\00", align 1
@.str.248 = private unnamed_addr constant [27 x i8] c"%lu MQTT malformed message\00", align 1
@.str.249 = private unnamed_addr constant [29 x i8] c"%p MQTT CMD %d len %d [%.*s]\00", align 1
@.str.250 = private unnamed_addr constant [14 x i8] c"%lu Connected\00", align 1
@.str.251 = private unnamed_addr constant [30 x i8] c"%lu MQTT auth failed, code %d\00", align 1
@__func__.mg_close_conn = private unnamed_addr constant [14 x i8] c"mg_close_conn\00", align 1
@.str.63 = private unnamed_addr constant [11 x i8] c"%lu closed\00", align 1
@__func__.mg_mgr_free = private unnamed_addr constant [12 x i8] c"mg_mgr_free\00", align 1
@.str.70 = private unnamed_addr constant [23 x i8] c"All connections closed\00", align 1
@__func__.mg_mgr_poll = private unnamed_addr constant [12 x i8] c"mg_mgr_poll\00", align 1
@.str.92 = private unnamed_addr constant [20 x i8] c"%lu %c%c %c%c%c%c%c\00", align 1
@__func__.write_conn = private unnamed_addr constant [11 x i8] c"write_conn\00", align 1
@.str.262 = private unnamed_addr constant [26 x i8] c"max_recv_buf_size reached\00", align 1
@.str.263 = private unnamed_addr constant [4 x i8] c"oom\00", align 1
@__func__.read_conn = private unnamed_addr constant [10 x i8] c"read_conn\00", align 1
@.str.100 = private unnamed_addr constant [15 x i8] c"src/tls_mbed.c\00", align 1
@__func__.mg_tls_handshake = private unnamed_addr constant [17 x i8] c"mg_tls_handshake\00", align 1
@.str.101 = private unnamed_addr constant [12 x i8] c"%lu success\00", align 1
@.str.102 = private unnamed_addr constant [28 x i8] c"%lu pending, %d%d %d (-%#x)\00", align 1
@.str.103 = private unnamed_addr constant [20 x i8] c"TLS handshake: -%#x\00", align 1
@__func__.mg_net_recv = private unnamed_addr constant [12 x i8] c"mg_net_recv\00", align 1
@.str.264 = private unnamed_addr constant [19 x i8] c"%lu n=%d, errno=%d\00", align 1
@__func__.mg_net_send = private unnamed_addr constant [12 x i8] c"mg_net_send\00", align 1
@.str.261 = private unnamed_addr constant [23 x i8] c"error connecting to %s\00", align 1
@__func__.accept_conn = private unnamed_addr constant [12 x i8] c"accept_conn\00", align 1
@.str.258 = private unnamed_addr constant [28 x i8] c"%lu accept failed, errno %d\00", align 1
@.str.259 = private unnamed_addr constant [8 x i8] c"%lu OOM\00", align 1
@.str.260 = private unnamed_addr constant [16 x i8] c"%lu accepted %s\00", align 1
@__func__.mg_iotest = private unnamed_addr constant [10 x i8] c"mg_iotest\00", align 1
@.str.257 = private unnamed_addr constant [23 x i8] c"poll failed, errno: %d\00", align 1
@.str.71 = private unnamed_addr constant [17 x i8] c"udp://8.8.8.8:53\00", align 1
@.str.72 = private unnamed_addr constant [32 x i8] c"udp://[2001:4860:4860::8888]:53\00", align 1
@.str.73 = private unnamed_addr constant [11 x i8] c"src/sntp.c\00", align 1
@__func__.mg_sntp_parse = private unnamed_addr constant [14 x i8] c"mg_sntp_parse\00", align 1
@.str.74 = private unnamed_addr constant [15 x i8] c"corrupt packet\00", align 1
@.str.75 = private unnamed_addr constant [19 x i8] c"not a server reply\00", align 1
@.str.76 = private unnamed_addr constant [28 x i8] c"server sent a kiss of death\00", align 1
@.str.77 = private unnamed_addr constant [23 x i8] c"unexpected version: %d\00", align 1
@__func__.mg_sntp_request = private unnamed_addr constant [16 x i8] c"mg_sntp_request\00", align 1
@.str.78 = private unnamed_addr constant [24 x i8] c"%lu wait until resolved\00", align 1
@.str.79 = private unnamed_addr constant [26 x i8] c"udp://time.google.com:123\00", align 1
@__func__.sntp_cb = private unnamed_addr constant [8 x i8] c"sntp_cb\00", align 1
@.str.253 = private unnamed_addr constant [6 x i8] c"%u.%u\00", align 1
@__const.mg_mkpipe.sp = private unnamed_addr constant [2 x i32] [i32 -1, i32 -1], align 4
@__func__.mg_mkpipe = private unnamed_addr constant [10 x i8] c"mg_mkpipe\00", align 1
@.str.90 = private unnamed_addr constant [26 x i8] c"Cannot create socket pair\00", align 1
@.str.91 = private unnamed_addr constant [16 x i8] c"%lu %p pipe %lu\00", align 1
@.str.104 = private unnamed_addr constant [8 x i8] c"TLS OOM\00", align 1
@__func__.mg_tls_init = private unnamed_addr constant [12 x i8] c"mg_tls_init\00", align 1
@.str.105 = private unnamed_addr constant [16 x i8] c"%lu Setting TLS\00", align 1
@.str.106 = private unnamed_addr constant [17 x i8] c"tls defaults %#x\00", align 1
@.str.107 = private unnamed_addr constant [2 x i8] c"*\00", align 1
@.str.108 = private unnamed_addr constant [21 x i8] c"parse-ca(%s) err %#x\00", align 1
@.str.109 = private unnamed_addr constant [26 x i8] c"parse-cert(%s) err %#x %s\00", align 1
@.str.110 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
@.str.111 = private unnamed_addr constant [16 x i8] c"tls key(%s) %#x\00", align 1
@.str.112 = private unnamed_addr constant [13 x i8] c"own cert %#x\00", align 1
@.str.113 = private unnamed_addr constant [14 x i8] c"setup err %#x\00", align 1
@__func__.debug_cb = private unnamed_addr constant [9 x i8] c"debug_cb\00", align 1
@.str.265 = private unnamed_addr constant [12 x i8] c"%lu %d %.*s\00", align 1
@.str.117 = private unnamed_addr constant [5 x i8] c"ssl:\00", align 1
@.str.118 = private unnamed_addr constant [5 x i8] c"tls:\00", align 1
@.str.266 = private unnamed_addr constant [17 x i8] c"%d.%d.%d.%d/%d%n\00", align 1
@.str.267 = private unnamed_addr constant [14 x i8] c"%d.%d.%d.%d%n\00", align 1
@.str.125 = private unnamed_addr constant [9 x i8] c"src/ws.c\00", align 1
@__func__.mg_ws_send = private unnamed_addr constant [11 x i8] c"mg_ws_send\00", align 1
@.str.126 = private unnamed_addr constant [18 x i8] c"WS out: %d [%.*s]\00", align 1
@.str.127 = private unnamed_addr constant [127 x i8] c"GET %s HTTP/1.1\0D\0AUpgrade: websocket\0D\0AHost: %.*s\0D\0AConnection: Upgrade\0D\0A%.*sSec-WebSocket-Version: 13\0D\0ASec-WebSocket-Key: %s\0D\0A\0D\0A\00", align 1
@.str.268 = private unnamed_addr constant [4 x i8] c"101\00", align 1
@__func__.mg_ws_cb = private unnamed_addr constant [9 x i8] c"mg_ws_cb\00", align 1
@.str.269 = private unnamed_addr constant [29 x i8] c"%lu WS handshake error: %.*s\00", align 1
@.str.270 = private unnamed_addr constant [8 x i8] c"WS PONG\00", align 1
@.str.271 = private unnamed_addr constant [17 x i8] c"%lu Got WS CLOSE\00", align 1
@.str.272 = private unnamed_addr constant [17 x i8] c"unknown WS op %d\00", align 1
@.str.128 = private unnamed_addr constant [18 x i8] c"Sec-WebSocket-Key\00", align 1
@.str.129 = private unnamed_addr constant [21 x i8] c"WS upgrade expected\0A\00", align 1
@.str.130 = private unnamed_addr constant [23 x i8] c"Sec-WebSocket-Protocol\00", align 1
@.str.273 = private unnamed_addr constant [37 x i8] c"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\00", align 1
@.str.274 = private unnamed_addr constant [104 x i8] c"HTTP/1.1 101 Switching Protocols\0D\0AUpgrade: websocket\0D\0AConnection: Upgrade\0D\0ASec-WebSocket-Accept: %s\0D\0A%s\00", align 1
@.str.275 = private unnamed_addr constant [31 x i8] c"Sec-WebSocket-Protocol: %.*s\0D\0A\00", align 1
@.str.276 = private unnamed_addr constant [16 x i8] c"255.255.255.255\00", align 1
@Handle = dso_local global i32 -1, align 4, !dbg !1105
@.str.311 = private unnamed_addr constant [19 x i8] c"Failed to open %s\0A\00", align 1
@.str.1.312 = private unnamed_addr constant [29 x i8] c"Looking for gimbal on %s...\0A\00", align 1
@.str.2.317 = private unnamed_addr constant [9 x i8] c"/dev/tty\00", align 1
@.str.3.320 = private unnamed_addr constant [17 x i8] c"Connected to %s\0A\00", align 1
@.str.4.321 = private unnamed_addr constant [25 x i8] c"Failed to connect to %s\0A\00", align 1
@GetSockAddr.SockAddr = internal global %struct.sockaddr_in zeroinitializer, align 4, !dbg !1287
@OrionCommReceive.Pkt = internal global %struct.TrilliumPkt_t zeroinitializer, align 2, !dbg !1278
@pInputContext = dso_local global %struct.AVFormatContext* null, align 8, !dbg !1292
@pDecodeContext = dso_local global %struct.AVCodecContext* null, align 8, !dbg !2279
@pEncodeContext = dso_local global %struct.AVCodecContext* null, align 8, !dbg !2885
@pFrame = dso_local global %struct.AVFrame* null, align 8, !dbg !2887
@VideoStream = dso_local global i32 0, align 4, !dbg !2889
@DataStream = dso_local global i32 0, align 4, !dbg !2891
@Packet = common dso_local global %struct.AVPacket zeroinitializer, align 8, !dbg !2991
@OutPacket = common dso_local global %struct.AVPacket zeroinitializer, align 8, !dbg !2993
@PktOut = common dso_local global %struct.TrilliumPkt_t zeroinitializer, align 2, !dbg !2970
@PktIn = common dso_local global %struct.TrilliumPkt_t zeroinitializer, align 2, !dbg !2989
@.str.481 = private unnamed_addr constant [15 x i8] c"ORANGE_NOSHARE\00", section "llvm.metadata"
@.str.1.482 = private unnamed_addr constant [72 x i8] c"/workspaces/eop2-closure-mind-demo/websrv/annotated-working/cameractl.c\00", section "llvm.metadata"
@.str.11.485 = private unnamed_addr constant [20 x i8] c"XDLINKAGE_GET_FRAME\00", section "llvm.metadata"
@.str.12.488 = private unnamed_addr constant [23 x i8] c"XDLINKAGE_GET_METADATA\00", section "llvm.metadata"
@.str.16.491 = private unnamed_addr constant [22 x i8] c"XDLINKAGE_SEND_CAMCMD\00", section "llvm.metadata"
@.str.22.494 = private unnamed_addr constant [24 x i8] c"XDLINKAGE_RUN_VIDEOPROC\00", section "llvm.metadata"
@.str.10.495 = private unnamed_addr constant [13 x i8] c"ORANGE_SHARE\00", section "llvm.metadata"
@run_videoproc.inited = internal global i32 0, align 4, !dbg !2964
@.str.18.496 = private unnamed_addr constant [7 x i8] c"MYADDR\00", align 1
@.str.19.497 = private unnamed_addr constant [8 x i8] c"CAMADDR\00", align 1
@.str.20.498 = private unnamed_addr constant [53 x i8] c"Error with environment variables MYADDR and CAMADDR\0A\00", align 1
@.str.21.499 = private unnamed_addr constant [61 x i8] c"Initializing video processing with myaddr %s and camaddr %s\0A\00", align 1
@run_videoproc.arg = internal global [32 x i8] zeroinitializer, align 16, !dbg !2967
@.str.17.500 = private unnamed_addr constant [47 x i8] c"Unable to open camera, sleeping for 5 seconds\0A\00", align 1
@extract_metadata.MetaDataBytes = internal global i64 0, align 8, !dbg !2959
@extract_metadata.MetaDataSize = internal global i64 0, align 8, !dbg !2957
@extract_metadata.KlvHeader = internal constant [16 x i8] c"\06\0E+4\02\0B\01\01\0E\01\03\01\01\00\00\00", align 16, !dbg !2961
@extract_metadata.MetaDataBufferSize = internal global i64 0, align 8, !dbg !2955
@extract_metadata.pMetaData = internal global i8* null, align 8, !dbg !2950
@get_mdatabuf.inited = internal global i32 0, align 4, !dbg !2948
@get_mdatabuf.wp = internal global %struct.llat_st zeroinitializer, align 8, !dbg !2934
@.str.14.501 = private unnamed_addr constant [39 x i8] c"Error sending a frame for encoding:%s\0A\00", align 1
@.str.15.502 = private unnamed_addr constant [26 x i8] c"Error during encoding:%s\0A\00", align 1
@.str.13.503 = private unnamed_addr constant [37 x i8] c"Compressed frame larger than buffer\0A\00", align 1
@get_framebuf.inited = internal global i32 0, align 4, !dbg !2932
@get_framebuf.wp = internal global %struct.framebuf_st zeroinitializer, align 8, !dbg !2893
@.str.6.504 = private unnamed_addr constant [24 x i8] c"%3hhu.%3hhu.%3hhu.%3hhu\00", align 1
@.str.7.505 = private unnamed_addr constant [12 x i8] c"udp://%s:%d\00", align 1
@.str.8.506 = private unnamed_addr constant [48 x i8] c"Closing communications on gimbal connect error\0A\00", align 1
@.str.9.507 = private unnamed_addr constant [28 x i8] c"Failed to open video at %s\0A\00", align 1
@.str.2.508 = private unnamed_addr constant [8 x i8] c"timeout\00", align 1
@.str.3.509 = private unnamed_addr constant [8 x i8] c"5000000\00", align 1
@.str.4.510 = private unnamed_addr constant [7 x i8] c"preset\00", align 1
@.str.5.511 = private unnamed_addr constant [5 x i8] c"slow\00", align 1
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @handle_camera_command(%struct.mg_connection* %0, %struct.mg_http_message* %1) #0 !dbg !4025 {
%3 = alloca %struct.mg_connection*, align 8
%4 = alloca %struct.mg_http_message*, align 8
%5 = alloca double, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca i8, align 1
%9 = alloca i8, align 1
%10 = alloca %struct.mg_str, align 8
%11 = alloca %struct.mg_str, align 8
%12 = alloca i8*, align 8
%13 = alloca i8*, align 8
%14 = alloca i8*, align 8
%15 = alloca i8*, align 8
%16 = alloca i8*, align 8
store %struct.mg_connection* %0, %struct.mg_connection** %3, align 8
call void @llvm.dbg.declare(metadata %struct.mg_connection** %3, metadata !4028, metadata !DIExpression()), !dbg !4029
store %struct.mg_http_message* %1, %struct.mg_http_message** %4, align 8
call void @llvm.dbg.declare(metadata %struct.mg_http_message** %4, metadata !4030, metadata !DIExpression()), !dbg !4031
call void @llvm.dbg.declare(metadata double* %5, metadata !4032, metadata !DIExpression()), !dbg !4033
%17 = bitcast double* %5 to i8*, !dbg !4034
call void @llvm.var.annotation(i8* %17, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 115), !dbg !4034
call void @llvm.dbg.declare(metadata double* %6, metadata !4035, metadata !DIExpression()), !dbg !4036
%18 = bitcast double* %6 to i8*, !dbg !4034
call void @llvm.var.annotation(i8* %18, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 115), !dbg !4034
call void @llvm.dbg.declare(metadata double* %7, metadata !4037, metadata !DIExpression()), !dbg !4038
%19 = bitcast double* %7 to i8*, !dbg !4034
call void @llvm.var.annotation(i8* %19, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 115), !dbg !4034
call void @llvm.dbg.declare(metadata i8* %8, metadata !4039, metadata !DIExpression()), !dbg !4040
call void @llvm.var.annotation(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 116), !dbg !4041
call void @llvm.dbg.declare(metadata i8* %9, metadata !4042, metadata !DIExpression()), !dbg !4043
call void @llvm.var.annotation(i8* %9, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 116), !dbg !4041
%20 = load %struct.mg_http_message*, %struct.mg_http_message** %4, align 8, !dbg !4044
%21 = icmp ne %struct.mg_http_message* %20, null, !dbg !4046
br i1 %21, label %22, label %111, !dbg !4047
22: ; preds = %2
call void @llvm.dbg.declare(metadata %struct.mg_str* %10, metadata !4048, metadata !DIExpression()), !dbg !4050
%23 = call { i8*, i64 } @mg_str_s(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.2, i64 0, i64 0)), !dbg !4051
%24 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4051
%25 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 0, !dbg !4051
%26 = extractvalue { i8*, i64 } %23, 0, !dbg !4051
store i8* %26, i8** %25, align 8, !dbg !4051
%27 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 1, !dbg !4051
%28 = extractvalue { i8*, i64 } %23, 1, !dbg !4051
store i64 %28, i64* %27, align 8, !dbg !4051
%29 = load %struct.mg_http_message*, %struct.mg_http_message** %4, align 8, !dbg !4052
%30 = getelementptr inbounds %struct.mg_http_message, %struct.mg_http_message* %29, i32 0, i32 5, !dbg !4053
%31 = getelementptr inbounds %struct.mg_str, %struct.mg_str* %30, i32 0, i32 0, !dbg !4054
%32 = load i8*, i8** %31, align 8, !dbg !4054
%33 = load %struct.mg_http_message*, %struct.mg_http_message** %4, align 8, !dbg !4055
%34 = getelementptr inbounds %struct.mg_http_message, %struct.mg_http_message* %33, i32 0, i32 5, !dbg !4056
%35 = getelementptr inbounds %struct.mg_str, %struct.mg_str* %34, i32 0, i32 1, !dbg !4057
%36 = load i64, i64* %35, align 8, !dbg !4057
%37 = call { i8*, i64 } @mg_str_n(i8* %32, i64 %36), !dbg !4058
%38 = bitcast %struct.mg_str* %11 to { i8*, i64 }*, !dbg !4058
%39 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %38, i32 0, i32 0, !dbg !4058
%40 = extractvalue { i8*, i64 } %37, 0, !dbg !4058
store i8* %40, i8** %39, align 8, !dbg !4058
%41 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %38, i32 0, i32 1, !dbg !4058
%42 = extractvalue { i8*, i64 } %37, 1, !dbg !4058
store i64 %42, i64* %41, align 8, !dbg !4058
%43 = bitcast %struct.mg_str* %10 to i8*, !dbg !4058
%44 = bitcast %struct.mg_str* %11 to i8*, !dbg !4058
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false), !dbg !4058
call void @llvm.dbg.declare(metadata i8** %12, metadata !4059, metadata !DIExpression()), !dbg !4060
%45 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4061
%46 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %45, i32 0, i32 0, !dbg !4061
%47 = load i8*, i8** %46, align 8, !dbg !4061
%48 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %45, i32 0, i32 1, !dbg !4061
%49 = load i64, i64* %48, align 8, !dbg !4061
%50 = call i8* @mg_json_get_str(i8* %47, i64 %49, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0)), !dbg !4061
store i8* %50, i8** %12, align 8, !dbg !4060
call void @llvm.dbg.declare(metadata i8** %13, metadata !4062, metadata !DIExpression()), !dbg !4063
%51 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4064
%52 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %51, i32 0, i32 0, !dbg !4064
%53 = load i8*, i8** %52, align 8, !dbg !4064
%54 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %51, i32 0, i32 1, !dbg !4064
%55 = load i64, i64* %54, align 8, !dbg !4064
%56 = call i8* @mg_json_get_str(i8* %53, i64 %55, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0)), !dbg !4064
store i8* %56, i8** %13, align 8, !dbg !4063
call void @llvm.dbg.declare(metadata i8** %14, metadata !4065, metadata !DIExpression()), !dbg !4066
%57 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4067
%58 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %57, i32 0, i32 0, !dbg !4067
%59 = load i8*, i8** %58, align 8, !dbg !4067
%60 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %57, i32 0, i32 1, !dbg !4067
%61 = load i64, i64* %60, align 8, !dbg !4067
%62 = call i8* @mg_json_get_str(i8* %59, i64 %61, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0)), !dbg !4067
store i8* %62, i8** %14, align 8, !dbg !4066
call void @llvm.dbg.declare(metadata i8** %15, metadata !4068, metadata !DIExpression()), !dbg !4069
%63 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4070
%64 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %63, i32 0, i32 0, !dbg !4070
%65 = load i8*, i8** %64, align 8, !dbg !4070
%66 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %63, i32 0, i32 1, !dbg !4070
%67 = load i64, i64* %66, align 8, !dbg !4070
%68 = call i8* @mg_json_get_str(i8* %65, i64 %67, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0)), !dbg !4070
store i8* %68, i8** %15, align 8, !dbg !4069
call void @llvm.dbg.declare(metadata i8** %16, metadata !4071, metadata !DIExpression()), !dbg !4072
%69 = bitcast %struct.mg_str* %10 to { i8*, i64 }*, !dbg !4073
%70 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %69, i32 0, i32 0, !dbg !4073
%71 = load i8*, i8** %70, align 8, !dbg !4073
%72 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %69, i32 0, i32 1, !dbg !4073
%73 = load i64, i64* %72, align 8, !dbg !4073
%74 = call i8* @mg_json_get_str(i8* %71, i64 %73, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0)), !dbg !4073
store i8* %74, i8** %16, align 8, !dbg !4072
%75 = load i8*, i8** %12, align 8, !dbg !4074
%76 = call double @atof(i8* %75) #10, !dbg !4075
store double %76, double* %5, align 8, !dbg !4076
%77 = load i8*, i8** %13, align 8, !dbg !4077
%78 = call double @atof(i8* %77) #10, !dbg !4078
store double %78, double* %6, align 8, !dbg !4079
%79 = load i8*, i8** %14, align 8, !dbg !4080
%80 = call double @atof(i8* %79) #10, !dbg !4081
store double %80, double* %7, align 8, !dbg !4082
%81 = load i8*, i8** %15, align 8, !dbg !4083
%82 = call i64 @strlen(i8* %81) #10, !dbg !4084
%83 = icmp uge i64 %82, 1, !dbg !4085
br i1 %83, label %84, label %89, !dbg !4084
84: ; preds = %22
%85 = load i8*, i8** %15, align 8, !dbg !4086
%86 = getelementptr inbounds i8, i8* %85, i64 0, !dbg !4086
%87 = load i8, i8* %86, align 1, !dbg !4086
%88 = sext i8 %87 to i32, !dbg !4086
br label %90, !dbg !4084
89: ; preds = %22
br label %90, !dbg !4084
90: ; preds = %89, %84
%91 = phi i32 [ %88, %84 ], [ 95, %89 ], !dbg !4084
%92 = trunc i32 %91 to i8, !dbg !4084
store i8 %92, i8* %8, align 1, !dbg !4087
%93 = load i8*, i8** %16, align 8, !dbg !4088
%94 = call i32 @atoi(i8* %93) #10, !dbg !4089
%95 = trunc i32 %94 to i8, !dbg !4090
store i8 %95, i8* %9, align 1, !dbg !4091
%96 = load i8*, i8** %12, align 8, !dbg !4092
call void @free(i8* %96) #7, !dbg !4093
%97 = load i8*, i8** %13, align 8, !dbg !4094
call void @free(i8* %97) #7, !dbg !4095
%98 = load i8*, i8** %14, align 8, !dbg !4096
call void @free(i8* %98) #7, !dbg !4097
%99 = load i8*, i8** %15, align 8, !dbg !4098
call void @free(i8* %99) #7, !dbg !4099
%100 = load i8*, i8** %16, align 8, !dbg !4100
call void @free(i8* %100) #7, !dbg !4101
%101 = load double, double* %5, align 8, !dbg !4102
%102 = load double, double* %6, align 8, !dbg !4104
%103 = load double, double* %7, align 8, !dbg !4105
%104 = load i8, i8* %8, align 1, !dbg !4106
%105 = load i8, i8* %9, align 1, !dbg !4107
%106 = call i32 @send_camcmd(double %101, double %102, double %103, i8 signext %104, i8 signext %105), !dbg !4108
%107 = icmp eq i32 %106, 1, !dbg !4109
br i1 %107, label %108, label %110, !dbg !4110
108: ; preds = %90
%109 = load %struct.mg_connection*, %struct.mg_connection** %3, align 8, !dbg !4111
call void (%struct.mg_connection*, i32, i8*, i8*, ...) @mg_http_reply(%struct.mg_connection* %109, i32 200, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0)), !dbg !4113
br label %110, !dbg !4114
110: ; preds = %108, %90
br label %111, !dbg !4115
111: ; preds = %110, %2
%112 = load %struct.mg_connection*, %struct.mg_connection** %3, align 8, !dbg !4116
call void (%struct.mg_connection*, i32, i8*, i8*, ...) @mg_http_reply(%struct.mg_connection* %112, i32 200, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0)), !dbg !4117
ret i32 0, !dbg !4118
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @handle_get_metadata(%struct.mg_connection* %0, %struct.mg_http_message* %1) #0 !dbg !4119 {
%3 = alloca %struct.mg_connection*, align 8
%4 = alloca %struct.mg_http_message*, align 8
%5 = alloca double, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
%9 = alloca i8*, align 8
store %struct.mg_connection* %0, %struct.mg_connection** %3, align 8
call void @llvm.dbg.declare(metadata %struct.mg_connection** %3, metadata !4120, metadata !DIExpression()), !dbg !4121
store %struct.mg_http_message* %1, %struct.mg_http_message** %4, align 8
call void @llvm.dbg.declare(metadata %struct.mg_http_message** %4, metadata !4122, metadata !DIExpression()), !dbg !4123
call void @llvm.dbg.declare(metadata double* %5, metadata !4124, metadata !DIExpression()), !dbg !4125
%10 = bitcast double* %5 to i8*, !dbg !4126
call void @llvm.var.annotation(i8* %10, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 153), !dbg !4126
call void @llvm.dbg.declare(metadata double* %6, metadata !4127, metadata !DIExpression()), !dbg !4128
%11 = bitcast double* %6 to i8*, !dbg !4126
call void @llvm.var.annotation(i8* %11, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 153), !dbg !4126
call void @llvm.dbg.declare(metadata double* %7, metadata !4129, metadata !DIExpression()), !dbg !4130
%12 = bitcast double* %7 to i8*, !dbg !4126
call void @llvm.var.annotation(i8* %12, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 153), !dbg !4126
call void @llvm.dbg.declare(metadata double* %8, metadata !4131, metadata !DIExpression()), !dbg !4132
%13 = bitcast double* %8 to i8*, !dbg !4126
call void @llvm.var.annotation(i8* %13, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i32 153), !dbg !4126
%14 = call i32 @get_metadata(double* %5, double* %6, double* %7, double* %8), !dbg !4133
%15 = icmp ne i32 %14, 1, !dbg !4135
br i1 %15, label %16, label %17, !dbg !4136
16: ; preds = %2
store double 0.000000e+00, double* %5, align 8, !dbg !4137
store double 0.000000e+00, double* %6, align 8, !dbg !4139
store double 0.000000e+00, double* %7, align 8, !dbg !4140
store double 0.000000e+00, double* %8, align 8, !dbg !4141
br label %17, !dbg !4142
17: ; preds = %16, %2
call void @llvm.dbg.declare(metadata i8** %9, metadata !4143, metadata !DIExpression()), !dbg !4144
%18 = load double, double* %5, align 8, !dbg !4145
%19 = load double, double* %6, align 8, !dbg !4146
%20 = load double, double* %7, align 8, !dbg !4147
%21 = load double, double* %8, align 8, !dbg !4148
%22 = call i8* (i8*, ...) @mg_mprintf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0), double %18, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), double %19, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), double %20, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), double %21), !dbg !4149
store i8* %22, i8** %9, align 8, !dbg !4144
%23 = load %struct.mg_connection*, %struct.mg_connection** %3, align 8, !dbg !4150
%24 = load i8*, i8** %9, align 8, !dbg !4151
call void (%struct.mg_connection*, i32, i8*, i8*, ...) @mg_http_reply(%struct.mg_connection* %23, i32 200, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i8* %24), !dbg !4152
%25 = load i8*, i8** %9, align 8, !dbg !4153
call void @free(i8* %25) #7, !dbg !4154
ret i32 0, !dbg !4155
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @wsend_video(i8* %0) #0 !dbg !2 {
%2 = alloca i8*, align 8
%3 = alloca %struct.mg_mgr*, align 8
%4 = alloca i32, align 4
%5 = alloca %struct.mg_connection*, align 8
store i8* %0, i8** %2, align 8
call void @llvm.dbg.declare(metadata i8** %2, metadata !4156, metadata !DIExpression()), !dbg !4157
call void @llvm.dbg.declare(metadata %struct.mg_mgr** %3, metadata !4158, metadata !DIExpression()), !dbg !4159
%6 = load i8*, i8** %2, align 8, !dbg !4160
%7 = bitcast i8* %6 to %struct.mg_mgr*, !dbg !4161
store %struct.mg_mgr* %7, %struct.mg_mgr** %3, align 8, !dbg !4159
call void @llvm.dbg.declare(metadata i32* %4, metadata !4162, metadata !DIExpression()), !dbg !4163
%8 = call i32 @get_frame(i8* getelementptr inbounds ([64000 x i8], [64000 x i8]* @wsend_video.buf, i64 0, i64 0)), !dbg !4164
store i32 %8, i32* %4, align 4, !dbg !4165
%9 = load i32, i32* %4, align 4, !dbg !4166
%10 = icmp sgt i32 %9, 0, !dbg !4168
br i1 %10, label %11, label %36, !dbg !4169
11: ; preds = %1
call void @llvm.dbg.declare(metadata %struct.mg_connection** %5, metadata !4170, metadata !DIExpression()), !dbg !4173
%12 = load %struct.mg_mgr*, %struct.mg_mgr** %3, align 8, !dbg !4174
%13 = getelementptr inbounds %struct.mg_mgr, %struct.mg_mgr* %12, i32 0, i32 0, !dbg !4175
%14 = load %struct.mg_connection*, %struct.mg_connection** %13, align 8, !dbg !4175
store %struct.mg_connection* %14, %struct.mg_connection** %5, align 8, !dbg !4173
br label %15, !dbg !4176
15: ; preds = %31, %11
%16 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4177
%17 = icmp ne %struct.mg_connection* %16, null, !dbg !4179
br i1 %17, label %18, label %35, !dbg !4180
18: ; preds = %15
%19 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4181
%20 = getelementptr inbounds %struct.mg_connection, %struct.mg_connection* %19, i32 0, i32 12, !dbg !4184
%21 = getelementptr inbounds [50 x i8], [50 x i8]* %20, i64 0, i64 0, !dbg !4181
%22 = load i8, i8* %21, align 8, !dbg !4181
%23 = sext i8 %22 to i32, !dbg !4181
%24 = icmp eq i32 %23, 83, !dbg !4185
br i1 %24, label %25, label %30, !dbg !4186
25: ; preds = %18
%26 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4187
%27 = load i32, i32* %4, align 4, !dbg !4189
%28 = sext i32 %27 to i64, !dbg !4189
%29 = call i64 @mg_ws_send(%struct.mg_connection* %26, i8* getelementptr inbounds ([64000 x i8], [64000 x i8]* @wsend_video.buf, i64 0, i64 0), i64 %28, i32 2), !dbg !4190
br label %30, !dbg !4191
30: ; preds = %25, %18
br label %31, !dbg !4192
31: ; preds = %30
%32 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4193
%33 = getelementptr inbounds %struct.mg_connection, %struct.mg_connection* %32, i32 0, i32 0, !dbg !4194
%34 = load %struct.mg_connection*, %struct.mg_connection** %33, align 8, !dbg !4194
store %struct.mg_connection* %34, %struct.mg_connection** %5, align 8, !dbg !4195
br label %15, !dbg !4196, !llvm.loop !4197
35: ; preds = %15
br label %36, !dbg !4199
36: ; preds = %35, %1
ret i32 0, !dbg !4200
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @websrv_main() #0 !dbg !4201 {
br label %1, !dbg !4202
1: ; preds = %4, %0
%2 = call i32 @run_videoproc(), !dbg !4203
%3 = icmp ne i32 %2, 0, !dbg !4204
br i1 %3, label %4, label %7, !dbg !4202
4: ; preds = %1
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !4205
%6 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %5, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.32, i64 0, i64 0)), !dbg !4207
br label %1, !dbg !4202, !llvm.loop !4208
7: ; preds = %1
call void @run_webserver(), !dbg !4210
ret i32 0, !dbg !4211
}
declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #1
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @run_webserver() #0 !dbg !4212 {
%1 = alloca %struct.mg_mgr, align 8
%2 = alloca i8*, align 8
%3 = alloca i8*, align 8
call void @llvm.dbg.declare(metadata %struct.mg_mgr* %1, metadata !4215, metadata !DIExpression()), !dbg !4216
call void @llvm.dbg.declare(metadata i8** %2, metadata !4217, metadata !DIExpression()), !dbg !4218
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0), i8** %2, align 8, !dbg !4218
call void @llvm.dbg.declare(metadata i8** %3, metadata !4219, metadata !DIExpression()), !dbg !4220
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.29, i64 0, i64 0), i8** %3, align 8, !dbg !4220
call void @mg_mgr_init(%struct.mg_mgr* %1), !dbg !4221
%4 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !4222
%5 = load i8*, i8** %3, align 8, !dbg !4223
%6 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.30, i64 0, i64 0), i8* %5), !dbg !4224
%7 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !4225
%8 = load i8*, i8** %2, align 8, !dbg !4226
%9 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %7, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.31, i64 0, i64 0), i8* %8), !dbg !4227
%10 = load i8*, i8** %3, align 8, !dbg !4228
%11 = call %struct.mg_connection* @mg_http_listen(%struct.mg_mgr* %1, i8* %10, void (%struct.mg_connection*, i32, i8*, i8*)* @webfn, i8* inttoptr (i64 1 to i8*)), !dbg !4229
%12 = bitcast %struct.mg_mgr* %1 to i8*, !dbg !4230
%13 = call %struct.mg_timer* @mg_timer_add(%struct.mg_mgr* %1, i64 40, i32 1, void (i8*)* bitcast (i32 (i8*)* @wsend_video to void (i8*)*), i8* %12), !dbg !4231
br label %14, !dbg !4232
14: ; preds = %14, %0
call void @mg_mgr_poll(%struct.mg_mgr* %1, i32 5), !dbg !4233
br label %14, !dbg !4236, !llvm.loop !4237
}
; Function Attrs: nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @webfn(%struct.mg_connection* %0, i32 %1, i8* %2, i8* %3) #0 !dbg !166 {
%5 = alloca %struct.mg_connection*, align 8
%6 = alloca i32, align 4
%7 = alloca i8*, align 8
%8 = alloca i8*, align 8
%9 = alloca %struct.mg_tls_opts, align 8
%10 = alloca %struct.mg_http_message*, align 8
%11 = alloca %struct.mg_http_serve_opts, align 8
store %struct.mg_connection* %0, %struct.mg_connection** %5, align 8
call void @llvm.dbg.declare(metadata %struct.mg_connection** %5, metadata !4240, metadata !DIExpression()), !dbg !4241
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !4242, metadata !DIExpression()), !dbg !4243
store i8* %2, i8** %7, align 8
call void @llvm.dbg.declare(metadata i8** %7, metadata !4244, metadata !DIExpression()), !dbg !4245
store i8* %3, i8** %8, align 8
call void @llvm.dbg.declare(metadata i8** %8, metadata !4246, metadata !DIExpression()), !dbg !4247
%12 = load i32, i32* %6, align 4, !dbg !4248
%13 = icmp eq i32 %12, 5, !dbg !4250
br i1 %13, label %14, label %22, !dbg !4251
14: ; preds = %4
%15 = load i8*, i8** %8, align 8, !dbg !4252
%16 = icmp ne i8* %15, null, !dbg !4253
br i1 %16, label %17, label %22, !dbg !4254
17: ; preds = %14
call void @llvm.dbg.declare(metadata %struct.mg_tls_opts* %9, metadata !4255, metadata !DIExpression()), !dbg !4279
%18 = bitcast %struct.mg_tls_opts* %9 to i8*, !dbg !4279
call void @llvm.memset.p0i8.i64(i8* align 8 %18, i8 0, i64 64, i1 false), !dbg !4279
%19 = bitcast i8* %18 to %struct.mg_tls_opts*, !dbg !4279
%20 = getelementptr inbounds %struct.mg_tls_opts, %struct.mg_tls_opts* %19, i32 0, i32 2, !dbg !4279
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i32 0, i32 0), i8** %20, align 8, !dbg !4279
%21 = getelementptr inbounds %struct.mg_tls_opts, %struct.mg_tls_opts* %19, i32 0, i32 3, !dbg !4279
store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i32 0, i32 0), i8** %21, align 8, !dbg !4279
br label %63, !dbg !4280
22: ; preds = %14, %4
%23 = load i32, i32* %6, align 4, !dbg !4281
%24 = icmp eq i32 %23, 9, !dbg !4283
br i1 %24, label %25, label %62, !dbg !4284
25: ; preds = %22
call void @llvm.dbg.declare(metadata %struct.mg_http_message** %10, metadata !4285, metadata !DIExpression()), !dbg !4287
%26 = load i8*, i8** %7, align 8, !dbg !4288
%27 = bitcast i8* %26 to %struct.mg_http_message*, !dbg !4289
store %struct.mg_http_message* %27, %struct.mg_http_message** %10, align 8, !dbg !4287
%28 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4290
%29 = call zeroext i1 @mg_http_match_uri(%struct.mg_http_message* %28, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.24, i64 0, i64 0)), !dbg !4292
br i1 %29, label %30, label %38, !dbg !4293
30: ; preds = %25
%31 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8, !dbg !4294
%32 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %31, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.25, i64 0, i64 0)), !dbg !4296
%33 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4297
%34 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4298
call void (%struct.mg_connection*, %struct.mg_http_message*, i8*, ...) @mg_ws_upgrade(%struct.mg_connection* %33, %struct.mg_http_message* %34, i8* null), !dbg !4299
%35 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4300
%36 = getelementptr inbounds %struct.mg_connection, %struct.mg_connection* %35, i32 0, i32 12, !dbg !4301
%37 = getelementptr inbounds [50 x i8], [50 x i8]* %36, i64 0, i64 0, !dbg !4300
store i8 83, i8* %37, align 8, !dbg !4302
br label %61, !dbg !4303
38: ; preds = %25
%39 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4304
%40 = call zeroext i1 @mg_http_match_uri(%struct.mg_http_message* %39, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0)), !dbg !4306
br i1 %40, label %41, label %45, !dbg !4307
41: ; preds = %38
%42 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4308
%43 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4310
%44 = call i32 @handle_camera_command(%struct.mg_connection* %42, %struct.mg_http_message* %43), !dbg !4311
br label %60, !dbg !4312
45: ; preds = %38
%46 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4313
%47 = call zeroext i1 @mg_http_match_uri(%struct.mg_http_message* %46, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0)), !dbg !4315
br i1 %47, label %48, label %52, !dbg !4316
48: ; preds = %45
%49 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4317
%50 = load %struct.mg_http_message*, %struct.mg_http_message** %10, align 8, !dbg !4319
%51 = call i32 @handle_get_metadata(%struct.mg_connection* %49, %struct.mg_http_message* %50), !dbg !4320
br label %59, !dbg !4321
52: ; preds = %45
call void @llvm.dbg.declare(metadata %struct.mg_http_serve_opts* %11, metadata !4322, metadata !DIExpression()), !dbg !4332
%53 = bitcast %struct.mg_http_serve_opts* %11 to i8*, !dbg !4332
call void @llvm.memset.p0i8.i64(i8* align 8 %53, i8 0, i64 48, i1 false), !dbg !4332
%54 = getelementptr inbounds %struct.mg_http_serve_opts, %struct.mg_http_serve_opts* %11, i32 0, i32 0, !dbg !4333
%55 = load i8*, i8** @webfn.s_web_root, align 8, !dbg !4334
store i8* %55, i8** %54, align 8, !dbg !4333
%56 = load %struct.mg_connection*, %struct.mg_connection** %5, align 8, !dbg !4335
%57 = load i8*, i8** %7, align 8, !dbg !4336
%58 = bitcast i8* %57 to %struct.mg_http_message*, !dbg !4336
call void @mg_http_serve_dir(%struct.mg_connection* %56, %struct.mg_http_message* %58, %struct.mg_http_serve_opts* %11), !dbg !4337
br label %59
59: ; preds = %52, %48
br label %60
60: ; preds = %59, %41
br label %61
61: ; preds = %60, %30
br label %62, !dbg !4338
62: ; preds = %61, %22
br label %63
63: ; preds = %62, %17
ret void, !dbg !4339
}
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #3
; Function Attrs: nounwind willreturn
declare void @llvm.var.annotation(i8*, i8*, i8*, i32) #4
; Function Attrs: nounwind
declare dso_local void @free(i8*) #5
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #3
; Function Attrs: nounwind readonly
declare dso_local double @atof(i8*) #6
; Function Attrs: nounwind readonly
declare dso_local i64 @strlen(i8*) #6
; Function Attrs: nounwind readonly
declare dso_local i32 @atoi(i8*) #6
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @main(i32 %0, i8** %1) #0 !dbg !4340 {
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca i8**, align 8
store i32 0, i32* %3, align 4
store i32 %0, i32* %4, align 4
call void @llvm.dbg.declare(metadata i32* %4, metadata !4344, metadata !DIExpression()), !dbg !4345
store i8** %1, i8*** %5, align 8
call void @llvm.dbg.declare(metadata i8*** %5, metadata !4346, metadata !DIExpression()), !dbg !4347
%6 = call i32 @websrv_main(), !dbg !4348
ret i32 %6, !dbg !4349
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @addAngles(double %0, double %1) #0 !dbg !4350 {
%3 = alloca double, align 8
%4 = alloca double, align 8
store double %0, double* %3, align 8
call void @llvm.dbg.declare(metadata double* %3, metadata !4353, metadata !DIExpression()), !dbg !4354
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !4355, metadata !DIExpression()), !dbg !4356
%5 = load double, double* %3, align 8, !dbg !4357
%6 = load double, double* %4, align 8, !dbg !4358
%7 = fadd double %5, %6, !dbg !4359
%8 = call double @wrapAngle(double %7), !dbg !4360
ret double %8, !dbg !4361
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @wrapAngle(double %0) #0 !dbg !4362 {
%2 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !4365, metadata !DIExpression()), !dbg !4366
%3 = load double, double* %2, align 8, !dbg !4367
%4 = fcmp ogt double %3, 0x400921FB54442D18, !dbg !4369
br i1 %4, label %5, label %8, !dbg !4370
5: ; preds = %1
%6 = load double, double* %2, align 8, !dbg !4371
%7 = fsub double %6, 0x401921FB54442D18, !dbg !4371
store double %7, double* %2, align 8, !dbg !4371
br label %15, !dbg !4372
8: ; preds = %1
%9 = load double, double* %2, align 8, !dbg !4373
%10 = fcmp ole double %9, 0xC00921FB54442D18, !dbg !4375
br i1 %10, label %11, label %14, !dbg !4376
11: ; preds = %8
%12 = load double, double* %2, align 8, !dbg !4377
%13 = fadd double %12, 0x401921FB54442D18, !dbg !4377
store double %13, double* %2, align 8, !dbg !4377
br label %14, !dbg !4378
14: ; preds = %11, %8
br label %15
15: ; preds = %14, %5
%16 = load double, double* %2, align 8, !dbg !4379
ret double %16, !dbg !4380
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @subtractAngles(double %0, double %1) #0 !dbg !4381 {
%3 = alloca double, align 8
%4 = alloca double, align 8
store double %0, double* %3, align 8
call void @llvm.dbg.declare(metadata double* %3, metadata !4382, metadata !DIExpression()), !dbg !4383
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !4384, metadata !DIExpression()), !dbg !4385
%5 = load double, double* %3, align 8, !dbg !4386
%6 = load double, double* %4, align 8, !dbg !4387
%7 = fsub double %5, %6, !dbg !4388
%8 = call double @wrapAngle(double %7), !dbg !4389
ret double %8, !dbg !4390
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @wrapAngle90(double %0) #0 !dbg !4391 {
%2 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !4392, metadata !DIExpression()), !dbg !4393
%3 = load double, double* %2, align 8, !dbg !4394
%4 = fcmp ogt double %3, 0x3FF921FB54442D18, !dbg !4396
br i1 %4, label %5, label %8, !dbg !4397
5: ; preds = %1
%6 = load double, double* %2, align 8, !dbg !4398
%7 = fsub double %6, 0x401921FB54442D18, !dbg !4398
store double %7, double* %2, align 8, !dbg !4398
br label %15, !dbg !4399
8: ; preds = %1
%9 = load double, double* %2, align 8, !dbg !4400
%10 = fcmp ole double %9, 0xC012D97C7F3321D2, !dbg !4402
br i1 %10, label %11, label %14, !dbg !4403
11: ; preds = %8
%12 = load double, double* %2, align 8, !dbg !4404
%13 = fadd double %12, 0x401921FB54442D18, !dbg !4404
store double %13, double* %2, align 8, !dbg !4404
br label %14, !dbg !4405
14: ; preds = %11, %8
br label %15
15: ; preds = %14, %5
%16 = load double, double* %2, align 8, !dbg !4406
ret double %16, !dbg !4407
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @firstOrderFilter(double %0, double %1, double %2, double %3) #0 !dbg !4408 {
%5 = alloca double, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
store double %0, double* %5, align 8
call void @llvm.dbg.declare(metadata double* %5, metadata !4411, metadata !DIExpression()), !dbg !4412
store double %1, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !4413, metadata !DIExpression()), !dbg !4414
store double %2, double* %7, align 8
call void @llvm.dbg.declare(metadata double* %7, metadata !4415, metadata !DIExpression()), !dbg !4416
store double %3, double* %8, align 8
call void @llvm.dbg.declare(metadata double* %8, metadata !4417, metadata !DIExpression()), !dbg !4418
%9 = load double, double* %5, align 8, !dbg !4419
%10 = load double, double* %8, align 8, !dbg !4420
%11 = load double, double* %6, align 8, !dbg !4421
%12 = load double, double* %5, align 8, !dbg !4422
%13 = fsub double %11, %12, !dbg !4423
%14 = fmul double %10, %13, !dbg !4424
%15 = load double, double* %7, align 8, !dbg !4425
%16 = load double, double* %8, align 8, !dbg !4426
%17 = fadd double %15, %16, !dbg !4427
%18 = fdiv double %14, %17, !dbg !4428
%19 = fadd double %9, %18, !dbg !4429
ret double %19, !dbg !4430
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @addAnglesf(float %0, float %1) #0 !dbg !4431 {
%3 = alloca float, align 4
%4 = alloca float, align 4
store float %0, float* %3, align 4
call void @llvm.dbg.declare(metadata float* %3, metadata !4434, metadata !DIExpression()), !dbg !4435
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !4436, metadata !DIExpression()), !dbg !4437
%5 = load float, float* %3, align 4, !dbg !4438
%6 = load float, float* %4, align 4, !dbg !4439
%7 = fadd float %5, %6, !dbg !4440
%8 = call float @wrapAnglef(float %7), !dbg !4441
ret float %8, !dbg !4442
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @wrapAnglef(float %0) #0 !dbg !4443 {
%2 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4444, metadata !DIExpression()), !dbg !4445
%3 = load float, float* %2, align 4, !dbg !4446
%4 = fcmp ogt float %3, 0x400921FB60000000, !dbg !4448
br i1 %4, label %5, label %8, !dbg !4449
5: ; preds = %1
%6 = load float, float* %2, align 4, !dbg !4450
%7 = fsub float %6, 0x401921FB60000000, !dbg !4450
store float %7, float* %2, align 4, !dbg !4450
br label %15, !dbg !4451
8: ; preds = %1
%9 = load float, float* %2, align 4, !dbg !4452
%10 = fcmp ole float %9, 0xC00921FB60000000, !dbg !4454
br i1 %10, label %11, label %14, !dbg !4455
11: ; preds = %8
%12 = load float, float* %2, align 4, !dbg !4456
%13 = fadd float %12, 0x401921FB60000000, !dbg !4456
store float %13, float* %2, align 4, !dbg !4456
br label %14, !dbg !4457
14: ; preds = %11, %8
br label %15
15: ; preds = %14, %5
%16 = load float, float* %2, align 4, !dbg !4458
ret float %16, !dbg !4459
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @subtractAnglesf(float %0, float %1) #0 !dbg !4460 {
%3 = alloca float, align 4
%4 = alloca float, align 4
store float %0, float* %3, align 4
call void @llvm.dbg.declare(metadata float* %3, metadata !4461, metadata !DIExpression()), !dbg !4462
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !4463, metadata !DIExpression()), !dbg !4464
%5 = load float, float* %3, align 4, !dbg !4465
%6 = load float, float* %4, align 4, !dbg !4466
%7 = fsub float %5, %6, !dbg !4467
%8 = call float @wrapAnglef(float %7), !dbg !4468
ret float %8, !dbg !4469
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @wrapAngle90f(float %0) #0 !dbg !4470 {
%2 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4471, metadata !DIExpression()), !dbg !4472
%3 = load float, float* %2, align 4, !dbg !4473
%4 = fcmp ogt float %3, 0x3FF921FB60000000, !dbg !4475
br i1 %4, label %5, label %8, !dbg !4476
5: ; preds = %1
%6 = load float, float* %2, align 4, !dbg !4477
%7 = fsub float %6, 0x401921FB60000000, !dbg !4477
store float %7, float* %2, align 4, !dbg !4477
br label %15, !dbg !4478
8: ; preds = %1
%9 = load float, float* %2, align 4, !dbg !4479
%10 = fcmp ole float %9, 0xC012D97C80000000, !dbg !4481
br i1 %10, label %11, label %14, !dbg !4482
11: ; preds = %8
%12 = load float, float* %2, align 4, !dbg !4483
%13 = fadd float %12, 0x401921FB60000000, !dbg !4483
store float %13, float* %2, align 4, !dbg !4483
br label %14, !dbg !4484
14: ; preds = %11, %8
br label %15
15: ; preds = %14, %5
%16 = load float, float* %2, align 4, !dbg !4485
ret float %16, !dbg !4486
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @wrapAngle360f(float %0) #0 !dbg !4487 {
%2 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4488, metadata !DIExpression()), !dbg !4489
%3 = load float, float* %2, align 4, !dbg !4490
%4 = fcmp olt float %3, 0.000000e+00, !dbg !4492
br i1 %4, label %5, label %8, !dbg !4493
5: ; preds = %1
%6 = load float, float* %2, align 4, !dbg !4494
%7 = fadd float %6, 0x401921FB60000000, !dbg !4494
store float %7, float* %2, align 4, !dbg !4494
br label %8, !dbg !4495
8: ; preds = %5, %1
%9 = load float, float* %2, align 4, !dbg !4496
ret float %9, !dbg !4497
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @fastSin(float %0) #0 !dbg !185 {
%2 = alloca float, align 4
%3 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4498, metadata !DIExpression()), !dbg !4499
call void @llvm.dbg.declare(metadata float* %3, metadata !4500, metadata !DIExpression()), !dbg !4501
%4 = load float, float* %2, align 4, !dbg !4502
%5 = call float @wrapAnglef(float %4), !dbg !4503
store float %5, float* %2, align 4, !dbg !4504
%6 = load float, float* %2, align 4, !dbg !4505
%7 = load float, float* %2, align 4, !dbg !4506
%8 = fmul float %6, %7, !dbg !4507
store float %8, float* %3, align 4, !dbg !4508
%9 = load float, float* %2, align 4, !dbg !4509
%10 = load float, float* getelementptr inbounds ([4 x float], [4 x float]* @fastSin.A, i64 0, i64 0), align 16, !dbg !4510
%11 = load float, float* %3, align 4, !dbg !4511
%12 = fmul float %10, %11, !dbg !4512
%13 = load float, float* getelementptr inbounds ([4 x float], [4 x float]* @fastSin.A, i64 0, i64 1), align 4, !dbg !4513
%14 = load float, float* %3, align 4, !dbg !4514
%15 = fmul float %13, %14, !dbg !4515
%16 = load float, float* getelementptr inbounds ([4 x float], [4 x float]* @fastSin.A, i64 0, i64 2), align 8, !dbg !4516
%17 = load float, float* %3, align 4, !dbg !4517
%18 = fmul float %16, %17, !dbg !4518
%19 = load float, float* getelementptr inbounds ([4 x float], [4 x float]* @fastSin.A, i64 0, i64 3), align 4, !dbg !4519
%20 = load float, float* %3, align 4, !dbg !4520
%21 = fmul float %19, %20, !dbg !4521
%22 = fsub float 1.000000e+00, %21, !dbg !4522
%23 = fmul float %18, %22, !dbg !4523
%24 = fsub float 1.000000e+00, %23, !dbg !4524
%25 = fmul float %15, %24, !dbg !4525
%26 = fsub float 1.000000e+00, %25, !dbg !4526
%27 = fmul float %12, %26, !dbg !4527
%28 = fsub float 1.000000e+00, %27, !dbg !4528
%29 = fmul float %9, %28, !dbg !4529
ret float %29, !dbg !4530
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @fastCos(float %0) #0 !dbg !195 {
%2 = alloca float, align 4
%3 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4531, metadata !DIExpression()), !dbg !4532
call void @llvm.dbg.declare(metadata float* %3, metadata !4533, metadata !DIExpression()), !dbg !4534
%4 = load float, float* %2, align 4, !dbg !4535
%5 = call float @wrapAnglef(float %4), !dbg !4536
store float %5, float* %2, align 4, !dbg !4537
%6 = load float, float* %2, align 4, !dbg !4538
%7 = load float, float* %2, align 4, !dbg !4539
%8 = fmul float %6, %7, !dbg !4540
store float %8, float* %3, align 4, !dbg !4541
%9 = load float, float* getelementptr inbounds ([5 x float], [5 x float]* @fastCos.A, i64 0, i64 0), align 16, !dbg !4542
%10 = load float, float* %3, align 4, !dbg !4543
%11 = fmul float %9, %10, !dbg !4544
%12 = load float, float* getelementptr inbounds ([5 x float], [5 x float]* @fastCos.A, i64 0, i64 1), align 4, !dbg !4545
%13 = load float, float* %3, align 4, !dbg !4546
%14 = fmul float %12, %13, !dbg !4547
%15 = load float, float* getelementptr inbounds ([5 x float], [5 x float]* @fastCos.A, i64 0, i64 2), align 8, !dbg !4548
%16 = load float, float* %3, align 4, !dbg !4549
%17 = fmul float %15, %16, !dbg !4550
%18 = load float, float* getelementptr inbounds ([5 x float], [5 x float]* @fastCos.A, i64 0, i64 3), align 4, !dbg !4551
%19 = load float, float* %3, align 4, !dbg !4552
%20 = fmul float %18, %19, !dbg !4553
%21 = load float, float* getelementptr inbounds ([5 x float], [5 x float]* @fastCos.A, i64 0, i64 4), align 16, !dbg !4554
%22 = load float, float* %3, align 4, !dbg !4555
%23 = fmul float %21, %22, !dbg !4556
%24 = fsub float 1.000000e+00, %23, !dbg !4557
%25 = fmul float %20, %24, !dbg !4558
%26 = fsub float 1.000000e+00, %25, !dbg !4559
%27 = fmul float %17, %26, !dbg !4560
%28 = fsub float 1.000000e+00, %27, !dbg !4561
%29 = fmul float %14, %28, !dbg !4562
%30 = fsub float 1.000000e+00, %29, !dbg !4563
%31 = fmul float %11, %30, !dbg !4564
%32 = fsub float 1.000000e+00, %31, !dbg !4565
ret float %32, !dbg !4566
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @fastISqrt(float %0) #0 !dbg !4567 {
%2 = alloca float, align 4
%3 = alloca %union.anon, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4568, metadata !DIExpression()), !dbg !4569
call void @llvm.dbg.declare(metadata %union.anon* %3, metadata !4570, metadata !DIExpression()), !dbg !4575
%4 = load float, float* %2, align 4, !dbg !4576
%5 = bitcast %union.anon* %3 to float*, !dbg !4577
store float %4, float* %5, align 4, !dbg !4578
%6 = bitcast %union.anon* %3 to i32*, !dbg !4579
%7 = load i32, i32* %6, align 4, !dbg !4579
%8 = ashr i32 %7, 1, !dbg !4580
%9 = sext i32 %8 to i64, !dbg !4581
%10 = sub nsw i64 1597463007, %9, !dbg !4582
%11 = trunc i64 %10 to i32, !dbg !4583
%12 = bitcast %union.anon* %3 to i32*, !dbg !4584
store i32 %11, i32* %12, align 4, !dbg !4585
%13 = bitcast %union.anon* %3 to float*, !dbg !4586
%14 = load float, float* %13, align 4, !dbg !4586
%15 = load float, float* %2, align 4, !dbg !4587
%16 = fmul float 5.000000e-01, %15, !dbg !4588
%17 = bitcast %union.anon* %3 to float*, !dbg !4589
%18 = load float, float* %17, align 4, !dbg !4589
%19 = fmul float %16, %18, !dbg !4590
%20 = bitcast %union.anon* %3 to float*, !dbg !4591
%21 = load float, float* %20, align 4, !dbg !4591
%22 = fmul float %19, %21, !dbg !4592
%23 = fsub float 1.500000e+00, %22, !dbg !4593
%24 = fmul float %14, %23, !dbg !4594
ret float %24, !dbg !4595
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @fastSqrt(float %0) #0 !dbg !4596 {
%2 = alloca float, align 4
store float %0, float* %2, align 4
call void @llvm.dbg.declare(metadata float* %2, metadata !4597, metadata !DIExpression()), !dbg !4598
%3 = load float, float* %2, align 4, !dbg !4599
%4 = load float, float* %2, align 4, !dbg !4600
%5 = call float @fastISqrt(float %4), !dbg !4601
%6 = fmul float %3, %5, !dbg !4602
ret float %6, !dbg !4603
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @firstOrderFilterf(float %0, float %1, float %2, float %3) #0 !dbg !4604 {
%5 = alloca float, align 4
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
store float %0, float* %5, align 4
call void @llvm.dbg.declare(metadata float* %5, metadata !4607, metadata !DIExpression()), !dbg !4608
store float %1, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !4609, metadata !DIExpression()), !dbg !4610
store float %2, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !4611, metadata !DIExpression()), !dbg !4612
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !4613, metadata !DIExpression()), !dbg !4614
%9 = load float, float* %5, align 4, !dbg !4615
%10 = load float, float* %8, align 4, !dbg !4616
%11 = load float, float* %6, align 4, !dbg !4617
%12 = load float, float* %5, align 4, !dbg !4618
%13 = fsub float %11, %12, !dbg !4619
%14 = fmul float %10, %13, !dbg !4620
%15 = load float, float* %7, align 4, !dbg !4621
%16 = load float, float* %8, align 4, !dbg !4622
%17 = fadd float %15, %16, !dbg !4623
%18 = fdiv float %14, %17, !dbg !4624
%19 = fadd float %9, %18, !dbg !4625
ret float %19, !dbg !4626
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @rateOfChangeLimitf(float %0, float %1, float %2, float %3) #0 !dbg !4627 {
%5 = alloca float, align 4
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
%10 = alloca float, align 4
%11 = alloca float, align 4
store float %0, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !4628, metadata !DIExpression()), !dbg !4629
store float %1, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !4630, metadata !DIExpression()), !dbg !4631
store float %2, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !4632, metadata !DIExpression()), !dbg !4633
store float %3, float* %9, align 4
call void @llvm.dbg.declare(metadata float* %9, metadata !4634, metadata !DIExpression()), !dbg !4635
call void @llvm.dbg.declare(metadata float* %10, metadata !4636, metadata !DIExpression()), !dbg !4637
call void @llvm.dbg.declare(metadata float* %11, metadata !4638, metadata !DIExpression()), !dbg !4639
%12 = load float, float* %9, align 4, !dbg !4640
%13 = load float, float* %8, align 4, !dbg !4641
%14 = fmul float %12, %13, !dbg !4642
store float %14, float* %11, align 4, !dbg !4639
%15 = load float, float* %11, align 4, !dbg !4643
%16 = fcmp ole float %15, 0.000000e+00, !dbg !4645
br i1 %16, label %17, label %19, !dbg !4646
17: ; preds = %4
%18 = load float, float* %7, align 4, !dbg !4647
store float %18, float* %5, align 4, !dbg !4648
br label %41, !dbg !4648
19: ; preds = %4
%20 = load float, float* %7, align 4, !dbg !4649
%21 = load float, float* %6, align 4, !dbg !4650
%22 = fsub float %20, %21, !dbg !4651
store float %22, float* %10, align 4, !dbg !4652
%23 = load float, float* %10, align 4, !dbg !4653
%24 = load float, float* %11, align 4, !dbg !4655
%25 = fcmp ogt float %23, %24, !dbg !4656
br i1 %25, label %26, label %30, !dbg !4657
26: ; preds = %19
%27 = load float, float* %6, align 4, !dbg !4658
%28 = load float, float* %11, align 4, !dbg !4659
%29 = fadd float %27, %28, !dbg !4660
store float %29, float* %5, align 4, !dbg !4661
br label %41, !dbg !4661
30: ; preds = %19
%31 = load float, float* %10, align 4, !dbg !4662
%32 = load float, float* %11, align 4, !dbg !4664
%33 = fneg float %32, !dbg !4665
%34 = fcmp olt float %31, %33, !dbg !4666
br i1 %34, label %35, label %39, !dbg !4667
35: ; preds = %30
%36 = load float, float* %6, align 4, !dbg !4668
%37 = load float, float* %11, align 4, !dbg !4669
%38 = fsub float %36, %37, !dbg !4670
store float %38, float* %5, align 4, !dbg !4671
br label %41, !dbg !4671
39: ; preds = %30
%40 = load float, float* %7, align 4, !dbg !4672
store float %40, float* %5, align 4, !dbg !4673
br label %41, !dbg !4673
41: ; preds = %39, %35, %26, %17
%42 = load float, float* %5, align 4, !dbg !4674
ret float %42, !dbg !4674
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @computeDateAndTimeFromWeekAndItow(i16 zeroext %0, i32 %1, i8 zeroext %2, i16* %3, i8* %4, i8* %5, i8* %6, i8* %7, i8* %8) #0 !dbg !4675 {
%10 = alloca i16, align 2
%11 = alloca i32, align 4
%12 = alloca i8, align 1
%13 = alloca i16*, align 8
%14 = alloca i8*, align 8
%15 = alloca i8*, align 8
%16 = alloca i8*, align 8
%17 = alloca i8*, align 8
%18 = alloca i8*, align 8
store i16 %0, i16* %10, align 2
call void @llvm.dbg.declare(metadata i16* %10, metadata !4678, metadata !DIExpression()), !dbg !4679
store i32 %1, i32* %11, align 4
call void @llvm.dbg.declare(metadata i32* %11, metadata !4680, metadata !DIExpression()), !dbg !4681
store i8 %2, i8* %12, align 1
call void @llvm.dbg.declare(metadata i8* %12, metadata !4682, metadata !DIExpression()), !dbg !4683
store i16* %3, i16** %13, align 8
call void @llvm.dbg.declare(metadata i16** %13, metadata !4684, metadata !DIExpression()), !dbg !4685
store i8* %4, i8** %14, align 8
call void @llvm.dbg.declare(metadata i8** %14, metadata !4686, metadata !DIExpression()), !dbg !4687
store i8* %5, i8** %15, align 8
call void @llvm.dbg.declare(metadata i8** %15, metadata !4688, metadata !DIExpression()), !dbg !4689
store i8* %6, i8** %16, align 8
call void @llvm.dbg.declare(metadata i8** %16, metadata !4690, metadata !DIExpression()), !dbg !4691
store i8* %7, i8** %17, align 8
call void @llvm.dbg.declare(metadata i8** %17, metadata !4692, metadata !DIExpression()), !dbg !4693
store i8* %8, i8** %18, align 8
call void @llvm.dbg.declare(metadata i8** %18, metadata !4694, metadata !DIExpression()), !dbg !4695
%19 = load i32, i32* %11, align 4, !dbg !4696
%20 = load i8, i8* %12, align 1, !dbg !4698
%21 = zext i8 %20 to i32, !dbg !4698
%22 = mul i32 %21, 1000, !dbg !4699
%23 = icmp ult i32 %19, %22, !dbg !4700
br i1 %23, label %24, label %29, !dbg !4701
24: ; preds = %9
%25 = load i16, i16* %10, align 2, !dbg !4702
%26 = add i16 %25, -1, !dbg !4702
store i16 %26, i16* %10, align 2, !dbg !4702
%27 = load i32, i32* %11, align 4, !dbg !4704
%28 = add i32 %27, 604800000, !dbg !4704
store i32 %28, i32* %11, align 4, !dbg !4704
br label %29, !dbg !4705
29: ; preds = %24, %9
%30 = load i8, i8* %12, align 1, !dbg !4706
%31 = zext i8 %30 to i32, !dbg !4706
%32 = mul nsw i32 %31, 1000, !dbg !4707
%33 = load i32, i32* %11, align 4, !dbg !4708
%34 = sub i32 %33, %32, !dbg !4708
store i32 %34, i32* %11, align 4, !dbg !4708
%35 = load i16, i16* %10, align 2, !dbg !4709
%36 = load i32, i32* %11, align 4, !dbg !4710
%37 = load i16*, i16** %13, align 8, !dbg !4711
%38 = load i8*, i8** %14, align 8, !dbg !4712
%39 = load i8*, i8** %15, align 8, !dbg !4713
call void @computeDateFromWeekAndItow(i16 zeroext %35, i32 %36, i16* %37, i8* %38, i8* %39), !dbg !4714
%40 = load i32, i32* %11, align 4, !dbg !4715
%41 = load i8*, i8** %16, align 8, !dbg !4716
%42 = load i8*, i8** %17, align 8, !dbg !4717
%43 = load i8*, i8** %18, align 8, !dbg !4718
call void @computeTimeFromItow(i32 %40, i8* %41, i8* %42, i8* %43), !dbg !4719
ret void, !dbg !4720
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @computeDateFromWeekAndItow(i16 zeroext %0, i32 %1, i16* %2, i8* %3, i8* %4) #0 !dbg !4721 {
%6 = alloca i16, align 2
%7 = alloca i32, align 4
%8 = alloca i16*, align 8
%9 = alloca i8*, align 8
%10 = alloca i8*, align 8
%11 = alloca i32, align 4
%12 = alloca i8, align 1
%13 = alloca i16*, align 8
%14 = alloca i16, align 2
%15 = alloca i16, align 2
%16 = alloca i32, align 4
store i16 %0, i16* %6, align 2
call void @llvm.dbg.declare(metadata i16* %6, metadata !4724, metadata !DIExpression()), !dbg !4725
store i32 %1, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !4726, metadata !DIExpression()), !dbg !4727
store i16* %2, i16** %8, align 8
call void @llvm.dbg.declare(metadata i16** %8, metadata !4728, metadata !DIExpression()), !dbg !4729
store i8* %3, i8** %9, align 8
call void @llvm.dbg.declare(metadata i8** %9, metadata !4730, metadata !DIExpression()), !dbg !4731
store i8* %4, i8** %10, align 8
call void @llvm.dbg.declare(metadata i8** %10, metadata !4732, metadata !DIExpression()), !dbg !4733
%17 = load i16, i16* %6, align 2, !dbg !4734
%18 = zext i16 %17 to i32, !dbg !4734
%19 = icmp sge i32 %18, 1669, !dbg !4736
br i1 %19, label %20, label %101, !dbg !4737
20: ; preds = %5
call void @llvm.dbg.declare(metadata i32* %11, metadata !4738, metadata !DIExpression()), !dbg !4740
call void @llvm.dbg.declare(metadata i8* %12, metadata !4741, metadata !DIExpression()), !dbg !4742
call void @llvm.dbg.declare(metadata i16** %13, metadata !4743, metadata !DIExpression()), !dbg !4746
call void @llvm.dbg.declare(metadata i16* %14, metadata !4747, metadata !DIExpression()), !dbg !4748
call void @llvm.dbg.declare(metadata i16* %15, metadata !4749, metadata !DIExpression()), !dbg !4750
store i16 2012, i16* %15, align 2, !dbg !4750
call void @llvm.dbg.declare(metadata i32* %16, metadata !4751, metadata !DIExpression()), !dbg !4752
%21 = load i16, i16* %6, align 2, !dbg !4753
%22 = zext i16 %21 to i32, !dbg !4753
%23 = mul nsw i32 %22, 7, !dbg !4754
%24 = load i32, i32* %7, align 4, !dbg !4755
%25 = udiv i32 %24, 86400000, !dbg !4756
%26 = add i32 %23, %25, !dbg !4757
store i32 %26, i32* %16, align 4, !dbg !4752
%27 = load i32, i32* %16, align 4, !dbg !4758
%28 = sub i32 %27, 11683, !dbg !4758
store i32 %28, i32* %16, align 4, !dbg !4758
%29 = load i16, i16* %15, align 2, !dbg !4759
%30 = call i32 @isLeapYear(i16 zeroext %29), !dbg !4760
store i32 %30, i32* %11, align 4, !dbg !4761
%31 = load i32, i32* %11, align 4, !dbg !4762
%32 = icmp ne i32 %31, 0, !dbg !4762
br i1 %32, label %33, label %34, !dbg !4764
33: ; preds = %20
store i16 366, i16* %14, align 2, !dbg !4765
br label %35, !dbg !4766
34: ; preds = %20
store i16 365, i16* %14, align 2, !dbg !4767
br label %35
35: ; preds = %34, %33
br label %36, !dbg !4768
36: ; preds = %54, %35
%37 = load i32, i32* %16, align 4, !dbg !4769
%38 = load i16, i16* %14, align 2, !dbg !4770
%39 = zext i16 %38 to i32, !dbg !4770
%40 = icmp uge i32 %37, %39, !dbg !4771
br i1 %40, label %41, label %55, !dbg !4768
41: ; preds = %36
%42 = load i16, i16* %14, align 2, !dbg !4772
%43 = zext i16 %42 to i32, !dbg !4772
%44 = load i32, i32* %16, align 4, !dbg !4774
%45 = sub i32 %44, %43, !dbg !4774
store i32 %45, i32* %16, align 4, !dbg !4774
%46 = load i16, i16* %15, align 2, !dbg !4775
%47 = add i16 %46, 1, !dbg !4775
store i16 %47, i16* %15, align 2, !dbg !4775
%48 = load i16, i16* %15, align 2, !dbg !4776
%49 = call i32 @isLeapYear(i16 zeroext %48), !dbg !4777
store i32 %49, i32* %11, align 4, !dbg !4778
%50 = load i32, i32* %11, align 4, !dbg !4779
%51 = icmp ne i32 %50, 0, !dbg !4779
br i1 %51, label %52, label %53, !dbg !4781
52: ; preds = %41
store i16 366, i16* %14, align 2, !dbg !4782
br label %54, !dbg !4783
53: ; preds = %41
store i16 365, i16* %14, align 2, !dbg !4784
br label %54
54: ; preds = %53, %52
br label %36, !dbg !4768, !llvm.loop !4785
55: ; preds = %36
%56 = load i16, i16* %15, align 2, !dbg !4787
%57 = load i16*, i16** %8, align 8, !dbg !4788
store i16 %56, i16* %57, align 2, !dbg !4789
%58 = load i32, i32* %11, align 4, !dbg !4790
%59 = icmp ne i32 %58, 0, !dbg !4790
br i1 %59, label %60, label %61, !dbg !4792
60: ; preds = %55
store i16* getelementptr inbounds ([12 x i16], [12 x i16]* @month_day_leap, i64 0, i64 0), i16** %13, align 8, !dbg !4793
br label %62, !dbg !4794
61: ; preds = %55
store i16* getelementptr inbounds ([12 x i16], [12 x i16]* @month_day_norm, i64 0, i64 0), i16** %13, align 8, !dbg !4795
br label %62
62: ; preds = %61, %60
store i8 1, i8* %12, align 1, !dbg !4796
br label %63, !dbg !4798
63: ; preds = %78, %62
%64 = load i8, i8* %12, align 1, !dbg !4799
%65 = zext i8 %64 to i32, !dbg !4799
%66 = icmp slt i32 %65, 12, !dbg !4801
br i1 %66, label %67, label %81, !dbg !4802
67: ; preds = %63
%68 = load i32, i32* %16, align 4, !dbg !4803
%69 = load i16*, i16** %13, align 8, !dbg !4806
%70 = load i8, i8* %12, align 1, !dbg !4807
%71 = zext i8 %70 to i64, !dbg !4806
%72 = getelementptr inbounds i16, i16* %69, i64 %71, !dbg !4806
%73 = load i16, i16* %72, align 2, !dbg !4806
%74 = zext i16 %73 to i32, !dbg !4806
%75 = icmp ult i32 %68, %74, !dbg !4808
br i1 %75, label %76, label %77, !dbg !4809
76: ; preds = %67
br label %81, !dbg !4810
77: ; preds = %67
br label %78, !dbg !4811
78: ; preds = %77
%79 = load i8, i8* %12, align 1, !dbg !4812
%80 = add i8 %79, 1, !dbg !4812
store i8 %80, i8* %12, align 1, !dbg !4812
br label %63, !dbg !4813, !llvm.loop !4814
81: ; preds = %76, %63
%82 = load i8, i8* %12, align 1, !dbg !4816
%83 = add i8 %82, -1, !dbg !4816
store i8 %83, i8* %12, align 1, !dbg !4816
%84 = load i16*, i16** %13, align 8, !dbg !4817
%85 = load i8, i8* %12, align 1, !dbg !4818
%86 = zext i8 %85 to i64, !dbg !4817
%87 = getelementptr inbounds i16, i16* %84, i64 %86, !dbg !4817
%88 = load i16, i16* %87, align 2, !dbg !4817
%89 = zext i16 %88 to i32, !dbg !4817
%90 = load i32, i32* %16, align 4, !dbg !4819
%91 = sub i32 %90, %89, !dbg !4819
store i32 %91, i32* %16, align 4, !dbg !4819
%92 = load i32, i32* %16, align 4, !dbg !4820
%93 = add i32 %92, 1, !dbg !4821
%94 = trunc i32 %93 to i8, !dbg !4820
%95 = load i8*, i8** %10, align 8, !dbg !4822
store i8 %94, i8* %95, align 1, !dbg !4823
%96 = load i8, i8* %12, align 1, !dbg !4824
%97 = zext i8 %96 to i32, !dbg !4824
%98 = add nsw i32 %97, 1, !dbg !4825
%99 = trunc i32 %98 to i8, !dbg !4824
%100 = load i8*, i8** %9, align 8, !dbg !4826
store i8 %99, i8* %100, align 1, !dbg !4827
br label %105, !dbg !4828
101: ; preds = %5
%102 = load i16*, i16** %8, align 8, !dbg !4829
store i16 1980, i16* %102, align 2, !dbg !4831
%103 = load i8*, i8** %9, align 8, !dbg !4832
store i8 1, i8* %103, align 1, !dbg !4833
%104 = load i8*, i8** %10, align 8, !dbg !4834
store i8 6, i8* %104, align 1, !dbg !4835
br label %105
105: ; preds = %101, %81
ret void, !dbg !4836
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @computeTimeFromItow(i32 %0, i8* %1, i8* %2, i8* %3) #0 !dbg !4837 {
%5 = alloca i32, align 4
%6 = alloca i8*, align 8
%7 = alloca i8*, align 8
%8 = alloca i8*, align 8
store i32 %0, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !4840, metadata !DIExpression()), !dbg !4841
store i8* %1, i8** %6, align 8
call void @llvm.dbg.declare(metadata i8** %6, metadata !4842, metadata !DIExpression()), !dbg !4843
store i8* %2, i8** %7, align 8
call void @llvm.dbg.declare(metadata i8** %7, metadata !4844, metadata !DIExpression()), !dbg !4845
store i8* %3, i8** %8, align 8
call void @llvm.dbg.declare(metadata i8** %8, metadata !4846, metadata !DIExpression()), !dbg !4847
%9 = load i32, i32* %5, align 4, !dbg !4848
%10 = urem i32 %9, 86400000, !dbg !4849
store i32 %10, i32* %5, align 4, !dbg !4850
%11 = load i32, i32* %5, align 4, !dbg !4851
%12 = zext i32 %11 to i64, !dbg !4851
%13 = udiv i64 %12, 3600000, !dbg !4852
%14 = trunc i64 %13 to i8, !dbg !4853
%15 = load i8*, i8** %6, align 8, !dbg !4854
store i8 %14, i8* %15, align 1, !dbg !4855
%16 = load i8*, i8** %6, align 8, !dbg !4856
%17 = load i8, i8* %16, align 1, !dbg !4857
%18 = zext i8 %17 to i32, !dbg !4858
%19 = mul nsw i32 %18, 60, !dbg !4859
%20 = mul nsw i32 %19, 60, !dbg !4860
%21 = mul nsw i32 %20, 1000, !dbg !4861
%22 = load i32, i32* %5, align 4, !dbg !4862
%23 = sub i32 %22, %21, !dbg !4862
store i32 %23, i32* %5, align 4, !dbg !4862
%24 = load i32, i32* %5, align 4, !dbg !4863
%25 = zext i32 %24 to i64, !dbg !4863
%26 = udiv i64 %25, 60000, !dbg !4864
%27 = trunc i64 %26 to i8, !dbg !4865
%28 = load i8*, i8** %7, align 8, !dbg !4866
store i8 %27, i8* %28, align 1, !dbg !4867
%29 = load i8*, i8** %7, align 8, !dbg !4868
%30 = load i8, i8* %29, align 1, !dbg !4869
%31 = zext i8 %30 to i32, !dbg !4870
%32 = mul nsw i32 %31, 60, !dbg !4871
%33 = mul nsw i32 %32, 1000, !dbg !4872
%34 = load i32, i32* %5, align 4, !dbg !4873
%35 = sub i32 %34, %33, !dbg !4873
store i32 %35, i32* %5, align 4, !dbg !4873
%36 = load i32, i32* %5, align 4, !dbg !4874
%37 = zext i32 %36 to i64, !dbg !4874
%38 = udiv i64 %37, 1000, !dbg !4875
%39 = trunc i64 %38 to i8, !dbg !4876
%40 = load i8*, i8** %8, align 8, !dbg !4877
store i8 %39, i8* %40, align 1, !dbg !4878
ret void, !dbg !4879
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @isLeapYear(i16 zeroext %0) #0 !dbg !4880 {
%2 = alloca i32, align 4
%3 = alloca i16, align 2
store i16 %0, i16* %3, align 2
call void @llvm.dbg.declare(metadata i16* %3, metadata !4883, metadata !DIExpression()), !dbg !4884
%4 = load i16, i16* %3, align 2, !dbg !4885
%5 = zext i16 %4 to i32, !dbg !4885
%6 = and i32 %5, 3, !dbg !4887
%7 = icmp ne i32 %6, 0, !dbg !4887
br i1 %7, label %8, label %9, !dbg !4888
8: ; preds = %1
store i32 0, i32* %2, align 4, !dbg !4889
br label %22, !dbg !4889
9: ; preds = %1
%10 = load i16, i16* %3, align 2, !dbg !4890
%11 = zext i16 %10 to i32, !dbg !4890
%12 = srem i32 %11, 100, !dbg !4893
%13 = icmp ne i32 %12, 0, !dbg !4894
br i1 %13, label %14, label %15, !dbg !4895
14: ; preds = %9
store i32 1, i32* %2, align 4, !dbg !4896
br label %22, !dbg !4896
15: ; preds = %9
%16 = load i16, i16* %3, align 2, !dbg !4897
%17 = zext i16 %16 to i32, !dbg !4897
%18 = srem i32 %17, 400, !dbg !4899
%19 = icmp ne i32 %18, 0, !dbg !4900
br i1 %19, label %20, label %21, !dbg !4901
20: ; preds = %15
store i32 0, i32* %2, align 4, !dbg !4902
br label %22, !dbg !4902
21: ; preds = %15
store i32 1, i32* %2, align 4, !dbg !4903
br label %22, !dbg !4903
22: ; preds = %21, %20, %14, %8
%23 = load i32, i32* %2, align 4, !dbg !4904
ret i32 %23, !dbg !4904
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @computeWeekAndItow(i16 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3, i8 zeroext %4, i8 zeroext %5, i16 signext %6, i16* %7, i32* %8) #0 !dbg !4905 {
%10 = alloca i16, align 2
%11 = alloca i8, align 1
%12 = alloca i8, align 1
%13 = alloca i8, align 1
%14 = alloca i8, align 1
%15 = alloca i8, align 1
%16 = alloca i16, align 2
%17 = alloca i16*, align 8
%18 = alloca i32*, align 8
%19 = alloca i32, align 4
%20 = alloca i32, align 4
%21 = alloca i32, align 4
store i16 %0, i16* %10, align 2
call void @llvm.dbg.declare(metadata i16* %10, metadata !4908, metadata !DIExpression()), !dbg !4909
store i8 %1, i8* %11, align 1
call void @llvm.dbg.declare(metadata i8* %11, metadata !4910, metadata !DIExpression()), !dbg !4911
store i8 %2, i8* %12, align 1
call void @llvm.dbg.declare(metadata i8* %12, metadata !4912, metadata !DIExpression()), !dbg !4913
store i8 %3, i8* %13, align 1
call void @llvm.dbg.declare(metadata i8* %13, metadata !4914, metadata !DIExpression()), !dbg !4915
store i8 %4, i8* %14, align 1
call void @llvm.dbg.declare(metadata i8* %14, metadata !4916, metadata !DIExpression()), !dbg !4917
store i8 %5, i8* %15, align 1
call void @llvm.dbg.declare(metadata i8* %15, metadata !4918, metadata !DIExpression()), !dbg !4919
store i16 %6, i16* %16, align 2
call void @llvm.dbg.declare(metadata i16* %16, metadata !4920, metadata !DIExpression()), !dbg !4921
store i16* %7, i16** %17, align 8
call void @llvm.dbg.declare(metadata i16** %17, metadata !4922, metadata !DIExpression()), !dbg !4923
store i32* %8, i32** %18, align 8
call void @llvm.dbg.declare(metadata i32** %18, metadata !4924, metadata !DIExpression()), !dbg !4925
call void @llvm.dbg.declare(metadata i32* %19, metadata !4926, metadata !DIExpression()), !dbg !4927
store i32 11683, i32* %19, align 4, !dbg !4927
call void @llvm.dbg.declare(metadata i32* %20, metadata !4928, metadata !DIExpression()), !dbg !4929
call void @llvm.dbg.declare(metadata i32* %21, metadata !4930, metadata !DIExpression()), !dbg !4931
%22 = load i8, i8* %11, align 1, !dbg !4932
%23 = add i8 %22, -1, !dbg !4932
store i8 %23, i8* %11, align 1, !dbg !4932
%24 = load i8, i8* %12, align 1, !dbg !4933
%25 = add i8 %24, -1, !dbg !4933
store i8 %25, i8* %12, align 1, !dbg !4933
%26 = load i8, i8* %11, align 1, !dbg !4934
%27 = zext i8 %26 to i64, !dbg !4935
%28 = getelementptr inbounds [12 x i16], [12 x i16]* @month_day_norm, i64 0, i64 %27, !dbg !4935
%29 = load i16, i16* %28, align 2, !dbg !4935
%30 = zext i16 %29 to i32, !dbg !4935
%31 = load i32, i32* %19, align 4, !dbg !4936
%32 = add i32 %31, %30, !dbg !4936
store i32 %32, i32* %19, align 4, !dbg !4936
%33 = load i8, i8* %12, align 1, !dbg !4937
%34 = zext i8 %33 to i32, !dbg !4937
%35 = load i32, i32* %19, align 4, !dbg !4938
%36 = add i32 %35, %34, !dbg !4938
store i32 %36, i32* %19, align 4, !dbg !4938
%37 = load i16, i16* %10, align 2, !dbg !4939
%38 = call i32 @isLeapYear(i16 zeroext %37), !dbg !4941
%39 = icmp ne i32 %38, 0, !dbg !4941
br i1 %39, label %40, label %47, !dbg !4942
40: ; preds = %9
%41 = load i8, i8* %11, align 1, !dbg !4943
%42 = zext i8 %41 to i32, !dbg !4943
%43 = icmp sge i32 %42, 2, !dbg !4944
br i1 %43, label %44, label %47, !dbg !4945
44: ; preds = %40
%45 = load i32, i32* %19, align 4, !dbg !4946
%46 = add i32 %45, 1, !dbg !4946
store i32 %46, i32* %19, align 4, !dbg !4946
br label %47, !dbg !4947
47: ; preds = %44, %40, %9
br label %48, !dbg !4948
48: ; preds = %64, %47
%49 = load i16, i16* %10, align 2, !dbg !4949
%50 = zext i16 %49 to i32, !dbg !4949
%51 = icmp sgt i32 %50, 2012, !dbg !4950
br i1 %51, label %52, label %65, !dbg !4948
52: ; preds = %48
%53 = load i16, i16* %10, align 2, !dbg !4951
%54 = add i16 %53, -1, !dbg !4951
store i16 %54, i16* %10, align 2, !dbg !4951
%55 = load i16, i16* %10, align 2, !dbg !4953
%56 = call i32 @isLeapYear(i16 zeroext %55), !dbg !4955
%57 = icmp ne i32 %56, 0, !dbg !4955
br i1 %57, label %58, label %61, !dbg !4956
58: ; preds = %52
%59 = load i32, i32* %19, align 4, !dbg !4957
%60 = add i32 %59, 366, !dbg !4957
store i32 %60, i32* %19, align 4, !dbg !4957
br label %64, !dbg !4958
61: ; preds = %52
%62 = load i32, i32* %19, align 4, !dbg !4959
%63 = add i32 %62, 365, !dbg !4959
store i32 %63, i32* %19, align 4, !dbg !4959
br label %64
64: ; preds = %61, %58
br label %48, !dbg !4948, !llvm.loop !4960
65: ; preds = %48
%66 = load i32, i32* %19, align 4, !dbg !4962
%67 = udiv i32 %66, 7, !dbg !4963
store i32 %67, i32* %20, align 4, !dbg !4964
%68 = load i32, i32* %20, align 4, !dbg !4965
%69 = mul i32 %68, 7, !dbg !4966
%70 = load i32, i32* %19, align 4, !dbg !4967
%71 = sub i32 %70, %69, !dbg !4967
store i32 %71, i32* %19, align 4, !dbg !4967
%72 = load i32, i32* %19, align 4, !dbg !4968
%73 = mul i32 %72, 24, !dbg !4969
%74 = load i8, i8* %13, align 1, !dbg !4970
%75 = zext i8 %74 to i32, !dbg !4970
%76 = add i32 %73, %75, !dbg !4971
%77 = mul i32 %76, 60, !dbg !4972
%78 = load i8, i8* %14, align 1, !dbg !4973
%79 = zext i8 %78 to i32, !dbg !4973
%80 = add i32 %77, %79, !dbg !4974
%81 = mul i32 %80, 60, !dbg !4975
%82 = load i8, i8* %15, align 1, !dbg !4976
%83 = zext i8 %82 to i32, !dbg !4976
%84 = add i32 %81, %83, !dbg !4977
%85 = mul i32 %84, 1000, !dbg !4978
%86 = load i16, i16* %16, align 2, !dbg !4979
%87 = sext i16 %86 to i32, !dbg !4979
%88 = add i32 %85, %87, !dbg !4980
store i32 %88, i32* %21, align 4, !dbg !4981
%89 = load i32, i32* %20, align 4, !dbg !4982
%90 = trunc i32 %89 to i16, !dbg !4983
%91 = load i16*, i16** %17, align 8, !dbg !4984
store i16 %90, i16* %91, align 2, !dbg !4985
%92 = load i32, i32* %21, align 4, !dbg !4986
%93 = load i32*, i32** %18, align 8, !dbg !4987
store i32 %92, i32* %93, align 4, !dbg !4988
ret void, !dbg !4989
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i32 @testDateConversion() #0 !dbg !4990 {
%1 = alloca i32, align 4
%2 = alloca i16, align 2
%3 = alloca i32, align 4
%4 = alloca i16, align 2
%5 = alloca i8, align 1
%6 = alloca i8, align 1
call void @llvm.dbg.declare(metadata i16* %2, metadata !4991, metadata !DIExpression()), !dbg !4992
call void @llvm.dbg.declare(metadata i32* %3, metadata !4993, metadata !DIExpression()), !dbg !4994
call void @llvm.dbg.declare(metadata i16* %4, metadata !4995, metadata !DIExpression()), !dbg !4996
call void @llvm.dbg.declare(metadata i8* %5, metadata !4997, metadata !DIExpression()), !dbg !4998
call void @llvm.dbg.declare(metadata i8* %6, metadata !4999, metadata !DIExpression()), !dbg !5000
call void @computeWeekAndItow(i16 zeroext 2016, i8 zeroext 3, i8 zeroext 12, i8 zeroext 9, i8 zeroext 10, i8 zeroext 11, i16 signext 250, i16* %2, i32* %3), !dbg !5001
%7 = load i16, i16* %2, align 2, !dbg !5002
%8 = load i32, i32* %3, align 4, !dbg !5003
call void @computeDateFromWeekAndItow(i16 zeroext %7, i32 %8, i16* %4, i8* %5, i8* %6), !dbg !5004
%9 = load i16, i16* %4, align 2, !dbg !5005
%10 = zext i16 %9 to i32, !dbg !5005
%11 = icmp ne i32 %10, 2016, !dbg !5007
br i1 %11, label %12, label %13, !dbg !5008
12: ; preds = %0
store i32 0, i32* %1, align 4, !dbg !5009
br label %34, !dbg !5009
13: ; preds = %0
%14 = load i8, i8* %5, align 1, !dbg !5010
%15 = zext i8 %14 to i32, !dbg !5010
%16 = icmp ne i32 %15, 3, !dbg !5012
br i1 %16, label %17, label %18, !dbg !5013
17: ; preds = %13
store i32 0, i32* %1, align 4, !dbg !5014
br label %34, !dbg !5014
18: ; preds = %13
%19 = load i8, i8* %6, align 1, !dbg !5015
%20 = zext i8 %19 to i32, !dbg !5015
%21 = icmp ne i32 %20, 12, !dbg !5017
br i1 %21, label %22, label %23, !dbg !5018
22: ; preds = %18
store i32 0, i32* %1, align 4, !dbg !5019
br label %34, !dbg !5019
23: ; preds = %18
%24 = load i16, i16* %2, align 2, !dbg !5020
%25 = zext i16 %24 to i32, !dbg !5020
%26 = icmp ne i32 %25, 1887, !dbg !5022
br i1 %26, label %27, label %28, !dbg !5023
27: ; preds = %23
store i32 0, i32* %1, align 4, !dbg !5024
br label %34, !dbg !5024
28: ; preds = %23
%29 = load i32, i32* %3, align 4, !dbg !5025
%30 = zext i32 %29 to i64, !dbg !5025
%31 = icmp ne i64 %30, 551411250, !dbg !5027
br i1 %31, label %32, label %33, !dbg !5028
32: ; preds = %28
store i32 0, i32* %1, align 4, !dbg !5029
br label %34, !dbg !5029
33: ; preds = %28
store i32 1, i32* %1, align 4, !dbg !5030
br label %34, !dbg !5030
34: ; preds = %33, %32, %27, %22, %17, %12
%35 = load i32, i32* %1, align 4, !dbg !5031
ret i32 %35, !dbg !5031
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Set(double* %0, double %1) #0 !dbg !5032 {
%3 = alloca double*, align 8
%4 = alloca double, align 8
%5 = alloca i32, align 4
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !5036, metadata !DIExpression()), !dbg !5037
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !5038, metadata !DIExpression()), !dbg !5039
call void @llvm.dbg.declare(metadata i32* %5, metadata !5040, metadata !DIExpression()), !dbg !5041
store i32 0, i32* %5, align 4, !dbg !5042
br label %6, !dbg !5044
6: ; preds = %15, %2
%7 = load i32, i32* %5, align 4, !dbg !5045
%8 = icmp slt i32 %7, 3, !dbg !5047
br i1 %8, label %9, label %18, !dbg !5048
9: ; preds = %6
%10 = load double, double* %4, align 8, !dbg !5049
%11 = load double*, double** %3, align 8, !dbg !5050
%12 = load i32, i32* %5, align 4, !dbg !5051
%13 = sext i32 %12 to i64, !dbg !5050
%14 = getelementptr inbounds double, double* %11, i64 %13, !dbg !5050
store double %10, double* %14, align 8, !dbg !5052
br label %15, !dbg !5050
15: ; preds = %9
%16 = load i32, i32* %5, align 4, !dbg !5053
%17 = add nsw i32 %16, 1, !dbg !5053
store i32 %17, i32* %5, align 4, !dbg !5053
br label %6, !dbg !5054, !llvm.loop !5055
18: ; preds = %6
%19 = load double*, double** %3, align 8, !dbg !5057
ret double* %19, !dbg !5058
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Copy(double* %0, double* %1) #0 !dbg !5059 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca i32, align 4
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !5063, metadata !DIExpression()), !dbg !5064
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5065, metadata !DIExpression()), !dbg !5066
call void @llvm.dbg.declare(metadata i32* %5, metadata !5067, metadata !DIExpression()), !dbg !5068
store i32 0, i32* %5, align 4, !dbg !5069
br label %6, !dbg !5071
6: ; preds = %19, %2
%7 = load i32, i32* %5, align 4, !dbg !5072
%8 = icmp slt i32 %7, 3, !dbg !5074
br i1 %8, label %9, label %22, !dbg !5075
9: ; preds = %6
%10 = load double*, double** %3, align 8, !dbg !5076
%11 = load i32, i32* %5, align 4, !dbg !5077
%12 = sext i32 %11 to i64, !dbg !5076
%13 = getelementptr inbounds double, double* %10, i64 %12, !dbg !5076
%14 = load double, double* %13, align 8, !dbg !5076
%15 = load double*, double** %4, align 8, !dbg !5078
%16 = load i32, i32* %5, align 4, !dbg !5079
%17 = sext i32 %16 to i64, !dbg !5078
%18 = getelementptr inbounds double, double* %15, i64 %17, !dbg !5078
store double %14, double* %18, align 8, !dbg !5080
br label %19, !dbg !5078
19: ; preds = %9
%20 = load i32, i32* %5, align 4, !dbg !5081
%21 = add nsw i32 %20, 1, !dbg !5081
store i32 %21, i32* %5, align 4, !dbg !5081
br label %6, !dbg !5082, !llvm.loop !5083
22: ; preds = %6
%23 = load double*, double** %4, align 8, !dbg !5085
ret double* %23, !dbg !5086
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3MultiplyAccumulate(double* %0, double* %1, double %2, double* %3) #0 !dbg !5087 {
%5 = alloca double*, align 8
%6 = alloca double*, align 8
%7 = alloca double, align 8
%8 = alloca double*, align 8
%9 = alloca i32, align 4
store double* %0, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5090, metadata !DIExpression()), !dbg !5091
store double* %1, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5092, metadata !DIExpression()), !dbg !5093
store double %2, double* %7, align 8
call void @llvm.dbg.declare(metadata double* %7, metadata !5094, metadata !DIExpression()), !dbg !5095
store double* %3, double** %8, align 8
call void @llvm.dbg.declare(metadata double** %8, metadata !5096, metadata !DIExpression()), !dbg !5097
call void @llvm.dbg.declare(metadata i32* %9, metadata !5098, metadata !DIExpression()), !dbg !5099
store i32 0, i32* %9, align 4, !dbg !5100
br label %10, !dbg !5102
10: ; preds = %31, %4
%11 = load i32, i32* %9, align 4, !dbg !5103
%12 = icmp slt i32 %11, 3, !dbg !5105
br i1 %12, label %13, label %34, !dbg !5106
13: ; preds = %10
%14 = load double*, double** %5, align 8, !dbg !5107
%15 = load i32, i32* %9, align 4, !dbg !5108
%16 = sext i32 %15 to i64, !dbg !5107
%17 = getelementptr inbounds double, double* %14, i64 %16, !dbg !5107
%18 = load double, double* %17, align 8, !dbg !5107
%19 = load double*, double** %6, align 8, !dbg !5109
%20 = load i32, i32* %9, align 4, !dbg !5110
%21 = sext i32 %20 to i64, !dbg !5109
%22 = getelementptr inbounds double, double* %19, i64 %21, !dbg !5109
%23 = load double, double* %22, align 8, !dbg !5109
%24 = load double, double* %7, align 8, !dbg !5111
%25 = fmul double %23, %24, !dbg !5112
%26 = fadd double %18, %25, !dbg !5113
%27 = load double*, double** %8, align 8, !dbg !5114
%28 = load i32, i32* %9, align 4, !dbg !5115
%29 = sext i32 %28 to i64, !dbg !5114
%30 = getelementptr inbounds double, double* %27, i64 %29, !dbg !5114
store double %26, double* %30, align 8, !dbg !5116
br label %31, !dbg !5114
31: ; preds = %13
%32 = load i32, i32* %9, align 4, !dbg !5117
%33 = add nsw i32 %32, 1, !dbg !5117
store i32 %33, i32* %9, align 4, !dbg !5117
br label %10, !dbg !5118, !llvm.loop !5119
34: ; preds = %10
%35 = load double*, double** %8, align 8, !dbg !5121
ret double* %35, !dbg !5122
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Sum(double* %0, double* %1, double* %2) #0 !dbg !5123 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double*, align 8
%7 = alloca i32, align 4
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5126, metadata !DIExpression()), !dbg !5127
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5128, metadata !DIExpression()), !dbg !5129
store double* %2, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5130, metadata !DIExpression()), !dbg !5131
call void @llvm.dbg.declare(metadata i32* %7, metadata !5132, metadata !DIExpression()), !dbg !5133
store i32 0, i32* %7, align 4, !dbg !5134
br label %8, !dbg !5136
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !5137
%10 = icmp slt i32 %9, 3, !dbg !5139
br i1 %10, label %11, label %30, !dbg !5140
11: ; preds = %8
%12 = load double*, double** %4, align 8, !dbg !5141
%13 = load i32, i32* %7, align 4, !dbg !5142
%14 = sext i32 %13 to i64, !dbg !5141
%15 = getelementptr inbounds double, double* %12, i64 %14, !dbg !5141
%16 = load double, double* %15, align 8, !dbg !5141
%17 = load double*, double** %5, align 8, !dbg !5143
%18 = load i32, i32* %7, align 4, !dbg !5144
%19 = sext i32 %18 to i64, !dbg !5143
%20 = getelementptr inbounds double, double* %17, i64 %19, !dbg !5143
%21 = load double, double* %20, align 8, !dbg !5143
%22 = fadd double %16, %21, !dbg !5145
%23 = load double*, double** %6, align 8, !dbg !5146
%24 = load i32, i32* %7, align 4, !dbg !5147
%25 = sext i32 %24 to i64, !dbg !5146
%26 = getelementptr inbounds double, double* %23, i64 %25, !dbg !5146
store double %22, double* %26, align 8, !dbg !5148
br label %27, !dbg !5146
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !5149
%29 = add nsw i32 %28, 1, !dbg !5149
store i32 %29, i32* %7, align 4, !dbg !5149
br label %8, !dbg !5150, !llvm.loop !5151
30: ; preds = %8
%31 = load double*, double** %6, align 8, !dbg !5153
ret double* %31, !dbg !5154
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Difference(double* %0, double* %1, double* %2) #0 !dbg !5155 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double*, align 8
%7 = alloca i32, align 4
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5156, metadata !DIExpression()), !dbg !5157
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5158, metadata !DIExpression()), !dbg !5159
store double* %2, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5160, metadata !DIExpression()), !dbg !5161
call void @llvm.dbg.declare(metadata i32* %7, metadata !5162, metadata !DIExpression()), !dbg !5163
store i32 0, i32* %7, align 4, !dbg !5164
br label %8, !dbg !5166
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !5167
%10 = icmp slt i32 %9, 3, !dbg !5169
br i1 %10, label %11, label %30, !dbg !5170
11: ; preds = %8
%12 = load double*, double** %4, align 8, !dbg !5171
%13 = load i32, i32* %7, align 4, !dbg !5172
%14 = sext i32 %13 to i64, !dbg !5171
%15 = getelementptr inbounds double, double* %12, i64 %14, !dbg !5171
%16 = load double, double* %15, align 8, !dbg !5171
%17 = load double*, double** %5, align 8, !dbg !5173
%18 = load i32, i32* %7, align 4, !dbg !5174
%19 = sext i32 %18 to i64, !dbg !5173
%20 = getelementptr inbounds double, double* %17, i64 %19, !dbg !5173
%21 = load double, double* %20, align 8, !dbg !5173
%22 = fsub double %16, %21, !dbg !5175
%23 = load double*, double** %6, align 8, !dbg !5176
%24 = load i32, i32* %7, align 4, !dbg !5177
%25 = sext i32 %24 to i64, !dbg !5176
%26 = getelementptr inbounds double, double* %23, i64 %25, !dbg !5176
store double %22, double* %26, align 8, !dbg !5178
br label %27, !dbg !5176
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !5179
%29 = add nsw i32 %28, 1, !dbg !5179
store i32 %29, i32* %7, align 4, !dbg !5179
br label %8, !dbg !5180, !llvm.loop !5181
30: ; preds = %8
%31 = load double*, double** %6, align 8, !dbg !5183
ret double* %31, !dbg !5184
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Multiply(double* %0, double* %1, double* %2) #0 !dbg !5185 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double*, align 8
%7 = alloca i32, align 4
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5186, metadata !DIExpression()), !dbg !5187
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5188, metadata !DIExpression()), !dbg !5189
store double* %2, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5190, metadata !DIExpression()), !dbg !5191
call void @llvm.dbg.declare(metadata i32* %7, metadata !5192, metadata !DIExpression()), !dbg !5193
store i32 0, i32* %7, align 4, !dbg !5194
br label %8, !dbg !5196
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !5197
%10 = icmp slt i32 %9, 3, !dbg !5199
br i1 %10, label %11, label %30, !dbg !5200
11: ; preds = %8
%12 = load double*, double** %4, align 8, !dbg !5201
%13 = load i32, i32* %7, align 4, !dbg !5202
%14 = sext i32 %13 to i64, !dbg !5201
%15 = getelementptr inbounds double, double* %12, i64 %14, !dbg !5201
%16 = load double, double* %15, align 8, !dbg !5201
%17 = load double*, double** %5, align 8, !dbg !5203
%18 = load i32, i32* %7, align 4, !dbg !5204
%19 = sext i32 %18 to i64, !dbg !5203
%20 = getelementptr inbounds double, double* %17, i64 %19, !dbg !5203
%21 = load double, double* %20, align 8, !dbg !5203
%22 = fmul double %16, %21, !dbg !5205
%23 = load double*, double** %6, align 8, !dbg !5206
%24 = load i32, i32* %7, align 4, !dbg !5207
%25 = sext i32 %24 to i64, !dbg !5206
%26 = getelementptr inbounds double, double* %23, i64 %25, !dbg !5206
store double %22, double* %26, align 8, !dbg !5208
br label %27, !dbg !5206
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !5209
%29 = add nsw i32 %28, 1, !dbg !5209
store i32 %29, i32* %7, align 4, !dbg !5209
br label %8, !dbg !5210, !llvm.loop !5211
30: ; preds = %8
%31 = load double*, double** %6, align 8, !dbg !5213
ret double* %31, !dbg !5214
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vector3Dot(double* %0, double* %1) #0 !dbg !5215 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !5218, metadata !DIExpression()), !dbg !5219
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5220, metadata !DIExpression()), !dbg !5221
call void @llvm.dbg.declare(metadata i32* %5, metadata !5222, metadata !DIExpression()), !dbg !5223
call void @llvm.dbg.declare(metadata double* %6, metadata !5224, metadata !DIExpression()), !dbg !5225
store double 0.000000e+00, double* %6, align 8, !dbg !5225
store i32 0, i32* %5, align 4, !dbg !5226
br label %7, !dbg !5228
7: ; preds = %24, %2
%8 = load i32, i32* %5, align 4, !dbg !5229
%9 = icmp slt i32 %8, 3, !dbg !5231
br i1 %9, label %10, label %27, !dbg !5232
10: ; preds = %7
%11 = load double*, double** %3, align 8, !dbg !5233
%12 = load i32, i32* %5, align 4, !dbg !5234
%13 = sext i32 %12 to i64, !dbg !5233
%14 = getelementptr inbounds double, double* %11, i64 %13, !dbg !5233
%15 = load double, double* %14, align 8, !dbg !5233
%16 = load double*, double** %4, align 8, !dbg !5235
%17 = load i32, i32* %5, align 4, !dbg !5236
%18 = sext i32 %17 to i64, !dbg !5235
%19 = getelementptr inbounds double, double* %16, i64 %18, !dbg !5235
%20 = load double, double* %19, align 8, !dbg !5235
%21 = fmul double %15, %20, !dbg !5237
%22 = load double, double* %6, align 8, !dbg !5238
%23 = fadd double %22, %21, !dbg !5238
store double %23, double* %6, align 8, !dbg !5238
br label %24, !dbg !5239
24: ; preds = %10
%25 = load i32, i32* %5, align 4, !dbg !5240
%26 = add nsw i32 %25, 1, !dbg !5240
store i32 %26, i32* %5, align 4, !dbg !5240
br label %7, !dbg !5241, !llvm.loop !5242
27: ; preds = %7
%28 = load double, double* %6, align 8, !dbg !5244
ret double %28, !dbg !5245
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vector3AngleBetween(double* %0, double* %1) #0 !dbg !5246 {
%3 = alloca double, align 8
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5247, metadata !DIExpression()), !dbg !5248
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5249, metadata !DIExpression()), !dbg !5250
call void @llvm.dbg.declare(metadata double* %6, metadata !5251, metadata !DIExpression()), !dbg !5252
%8 = load double*, double** %4, align 8, !dbg !5253
%9 = load double*, double** %5, align 8, !dbg !5254
%10 = call double @vector3Dot(double* %8, double* %9), !dbg !5255
store double %10, double* %6, align 8, !dbg !5252
call void @llvm.dbg.declare(metadata double* %7, metadata !5256, metadata !DIExpression()), !dbg !5257
%11 = load double*, double** %4, align 8, !dbg !5258
%12 = call double @vector3LengthSquared(double* %11), !dbg !5259
%13 = load double*, double** %5, align 8, !dbg !5260
%14 = call double @vector3LengthSquared(double* %13), !dbg !5261
%15 = fmul double %12, %14, !dbg !5262
store double %15, double* %7, align 8, !dbg !5257
%16 = load double, double* %7, align 8, !dbg !5263
%17 = fcmp ogt double %16, 0.000000e+00, !dbg !5265
br i1 %17, label %18, label %25, !dbg !5266
18: ; preds = %2
%19 = load double, double* %7, align 8, !dbg !5267
%20 = call double @sqrt(double %19) #7, !dbg !5269
store double %20, double* %7, align 8, !dbg !5270
%21 = load double, double* %6, align 8, !dbg !5271
%22 = load double, double* %7, align 8, !dbg !5272
%23 = fdiv double %21, %22, !dbg !5273
%24 = call double @acos(double %23) #7, !dbg !5274
store double %24, double* %3, align 8, !dbg !5275
br label %26, !dbg !5275
25: ; preds = %2
store double 0.000000e+00, double* %3, align 8, !dbg !5276
br label %26, !dbg !5276
26: ; preds = %25, %18
%27 = load double, double* %3, align 8, !dbg !5277
ret double %27, !dbg !5277
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vector3LengthSquared(double* %0) #0 !dbg !5278 {
%2 = alloca double*, align 8
store double* %0, double** %2, align 8
call void @llvm.dbg.declare(metadata double** %2, metadata !5281, metadata !DIExpression()), !dbg !5282
%3 = load double*, double** %2, align 8, !dbg !5283
%4 = load double*, double** %2, align 8, !dbg !5284
%5 = call double @vector3Dot(double* %3, double* %4), !dbg !5285
ret double %5, !dbg !5286
}
; Function Attrs: nounwind
declare dso_local double @sqrt(double) #5
; Function Attrs: nounwind
declare dso_local double @acos(double) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Cross(double* %0, double* %1, double* %2) #0 !dbg !5287 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double*, align 8
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5288, metadata !DIExpression()), !dbg !5289
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5290, metadata !DIExpression()), !dbg !5291
store double* %2, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5292, metadata !DIExpression()), !dbg !5293
%7 = load double*, double** %4, align 8, !dbg !5294
%8 = getelementptr inbounds double, double* %7, i64 1, !dbg !5294
%9 = load double, double* %8, align 8, !dbg !5294
%10 = load double*, double** %5, align 8, !dbg !5295
%11 = getelementptr inbounds double, double* %10, i64 2, !dbg !5295
%12 = load double, double* %11, align 8, !dbg !5295
%13 = fmul double %9, %12, !dbg !5296
%14 = load double*, double** %4, align 8, !dbg !5297
%15 = getelementptr inbounds double, double* %14, i64 2, !dbg !5297
%16 = load double, double* %15, align 8, !dbg !5297
%17 = load double*, double** %5, align 8, !dbg !5298
%18 = getelementptr inbounds double, double* %17, i64 1, !dbg !5298
%19 = load double, double* %18, align 8, !dbg !5298
%20 = fmul double %16, %19, !dbg !5299
%21 = fsub double %13, %20, !dbg !5300
%22 = load double*, double** %6, align 8, !dbg !5301
%23 = getelementptr inbounds double, double* %22, i64 0, !dbg !5301
store double %21, double* %23, align 8, !dbg !5302
%24 = load double*, double** %4, align 8, !dbg !5303
%25 = getelementptr inbounds double, double* %24, i64 2, !dbg !5303
%26 = load double, double* %25, align 8, !dbg !5303
%27 = load double*, double** %5, align 8, !dbg !5304
%28 = getelementptr inbounds double, double* %27, i64 0, !dbg !5304
%29 = load double, double* %28, align 8, !dbg !5304
%30 = fmul double %26, %29, !dbg !5305
%31 = load double*, double** %4, align 8, !dbg !5306
%32 = getelementptr inbounds double, double* %31, i64 0, !dbg !5306
%33 = load double, double* %32, align 8, !dbg !5306
%34 = load double*, double** %5, align 8, !dbg !5307
%35 = getelementptr inbounds double, double* %34, i64 2, !dbg !5307
%36 = load double, double* %35, align 8, !dbg !5307
%37 = fmul double %33, %36, !dbg !5308
%38 = fsub double %30, %37, !dbg !5309
%39 = load double*, double** %6, align 8, !dbg !5310
%40 = getelementptr inbounds double, double* %39, i64 1, !dbg !5310
store double %38, double* %40, align 8, !dbg !5311
%41 = load double*, double** %4, align 8, !dbg !5312
%42 = getelementptr inbounds double, double* %41, i64 0, !dbg !5312
%43 = load double, double* %42, align 8, !dbg !5312
%44 = load double*, double** %5, align 8, !dbg !5313
%45 = getelementptr inbounds double, double* %44, i64 1, !dbg !5313
%46 = load double, double* %45, align 8, !dbg !5313
%47 = fmul double %43, %46, !dbg !5314
%48 = load double*, double** %4, align 8, !dbg !5315
%49 = getelementptr inbounds double, double* %48, i64 1, !dbg !5315
%50 = load double, double* %49, align 8, !dbg !5315
%51 = load double*, double** %5, align 8, !dbg !5316
%52 = getelementptr inbounds double, double* %51, i64 0, !dbg !5316
%53 = load double, double* %52, align 8, !dbg !5316
%54 = fmul double %50, %53, !dbg !5317
%55 = fsub double %47, %54, !dbg !5318
%56 = load double*, double** %6, align 8, !dbg !5319
%57 = getelementptr inbounds double, double* %56, i64 2, !dbg !5319
store double %55, double* %57, align 8, !dbg !5320
%58 = load double*, double** %6, align 8, !dbg !5321
ret double* %58, !dbg !5322
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vector3Length(double* %0) #0 !dbg !5323 {
%2 = alloca double*, align 8
store double* %0, double** %2, align 8
call void @llvm.dbg.declare(metadata double** %2, metadata !5324, metadata !DIExpression()), !dbg !5325
%3 = load double*, double** %2, align 8, !dbg !5326
%4 = call double @vector3LengthSquared(double* %3), !dbg !5327
%5 = call double @sqrt(double %4) #7, !dbg !5328
ret double %5, !dbg !5329
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3ChangeLength(double* %0, double* %1, double %2) #0 !dbg !5330 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double*, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
store double* %0, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5333, metadata !DIExpression()), !dbg !5334
store double* %1, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !5335, metadata !DIExpression()), !dbg !5336
store double %2, double* %7, align 8
call void @llvm.dbg.declare(metadata double* %7, metadata !5337, metadata !DIExpression()), !dbg !5338
call void @llvm.dbg.declare(metadata double* %8, metadata !5339, metadata !DIExpression()), !dbg !5340
%9 = load double*, double** %5, align 8, !dbg !5341
%10 = call double @vector3Length(double* %9), !dbg !5342
store double %10, double* %8, align 8, !dbg !5340
%11 = load double, double* %8, align 8, !dbg !5343
%12 = fcmp ogt double %11, 0.000000e+00, !dbg !5345
br i1 %12, label %13, label %20, !dbg !5346
13: ; preds = %3
%14 = load double*, double** %5, align 8, !dbg !5347
%15 = load double*, double** %6, align 8, !dbg !5349
%16 = load double, double* %7, align 8, !dbg !5350
%17 = load double, double* %8, align 8, !dbg !5351
%18 = fdiv double %16, %17, !dbg !5352
%19 = call double* @vector3Scale(double* %14, double* %15, double %18), !dbg !5353
store double* %19, double** %4, align 8, !dbg !5354
br label %29, !dbg !5354
20: ; preds = %3
%21 = load double, double* %7, align 8, !dbg !5355
%22 = load double*, double** %6, align 8, !dbg !5357
%23 = getelementptr inbounds double, double* %22, i64 0, !dbg !5357
store double %21, double* %23, align 8, !dbg !5358
%24 = load double*, double** %6, align 8, !dbg !5359
%25 = getelementptr inbounds double, double* %24, i64 1, !dbg !5359
store double 0.000000e+00, double* %25, align 8, !dbg !5360
%26 = load double*, double** %6, align 8, !dbg !5361
%27 = getelementptr inbounds double, double* %26, i64 2, !dbg !5361
store double 0.000000e+00, double* %27, align 8, !dbg !5362
%28 = load double*, double** %6, align 8, !dbg !5363
store double* %28, double** %4, align 8, !dbg !5364
br label %29, !dbg !5364
29: ; preds = %20, %13
%30 = load double*, double** %4, align 8, !dbg !5365
ret double* %30, !dbg !5365
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Scale(double* %0, double* %1, double %2) #0 !dbg !5366 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double, align 8
%7 = alloca i32, align 4
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5367, metadata !DIExpression()), !dbg !5368
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5369, metadata !DIExpression()), !dbg !5370
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5371, metadata !DIExpression()), !dbg !5372
call void @llvm.dbg.declare(metadata i32* %7, metadata !5373, metadata !DIExpression()), !dbg !5374
store i32 0, i32* %7, align 4, !dbg !5375
br label %8, !dbg !5377
8: ; preds = %23, %3
%9 = load i32, i32* %7, align 4, !dbg !5378
%10 = icmp slt i32 %9, 3, !dbg !5380
br i1 %10, label %11, label %26, !dbg !5381
11: ; preds = %8
%12 = load double*, double** %4, align 8, !dbg !5382
%13 = load i32, i32* %7, align 4, !dbg !5383
%14 = sext i32 %13 to i64, !dbg !5382
%15 = getelementptr inbounds double, double* %12, i64 %14, !dbg !5382
%16 = load double, double* %15, align 8, !dbg !5382
%17 = load double, double* %6, align 8, !dbg !5384
%18 = fmul double %16, %17, !dbg !5385
%19 = load double*, double** %5, align 8, !dbg !5386
%20 = load i32, i32* %7, align 4, !dbg !5387
%21 = sext i32 %20 to i64, !dbg !5386
%22 = getelementptr inbounds double, double* %19, i64 %21, !dbg !5386
store double %18, double* %22, align 8, !dbg !5388
br label %23, !dbg !5386
23: ; preds = %11
%24 = load i32, i32* %7, align 4, !dbg !5389
%25 = add nsw i32 %24, 1, !dbg !5389
store i32 %25, i32* %7, align 4, !dbg !5389
br label %8, !dbg !5390, !llvm.loop !5391
26: ; preds = %8
%27 = load double*, double** %5, align 8, !dbg !5393
ret double* %27, !dbg !5394
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Convert(double* %0, float* %1) #0 !dbg !5395 {
%3 = alloca double*, align 8
%4 = alloca float*, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !5399, metadata !DIExpression()), !dbg !5400
store float* %1, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !5401, metadata !DIExpression()), !dbg !5402
%5 = load double*, double** %3, align 8, !dbg !5403
%6 = getelementptr inbounds double, double* %5, i64 0, !dbg !5403
%7 = load double, double* %6, align 8, !dbg !5403
%8 = fptrunc double %7 to float, !dbg !5404
%9 = load float*, float** %4, align 8, !dbg !5405
%10 = getelementptr inbounds float, float* %9, i64 0, !dbg !5405
store float %8, float* %10, align 4, !dbg !5406
%11 = load double*, double** %3, align 8, !dbg !5407
%12 = getelementptr inbounds double, double* %11, i64 1, !dbg !5407
%13 = load double, double* %12, align 8, !dbg !5407
%14 = fptrunc double %13 to float, !dbg !5408
%15 = load float*, float** %4, align 8, !dbg !5409
%16 = getelementptr inbounds float, float* %15, i64 1, !dbg !5409
store float %14, float* %16, align 4, !dbg !5410
%17 = load double*, double** %3, align 8, !dbg !5411
%18 = getelementptr inbounds double, double* %17, i64 2, !dbg !5411
%19 = load double, double* %18, align 8, !dbg !5411
%20 = fptrunc double %19 to float, !dbg !5412
%21 = load float*, float** %4, align 8, !dbg !5413
%22 = getelementptr inbounds float, float* %21, i64 2, !dbg !5413
store float %20, float* %22, align 4, !dbg !5414
%23 = load float*, float** %4, align 8, !dbg !5415
ret float* %23, !dbg !5416
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Convertf(float* %0, double* %1) #0 !dbg !5417 {
%3 = alloca float*, align 8
%4 = alloca double*, align 8
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !5420, metadata !DIExpression()), !dbg !5421
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5422, metadata !DIExpression()), !dbg !5423
%5 = load float*, float** %3, align 8, !dbg !5424
%6 = getelementptr inbounds float, float* %5, i64 0, !dbg !5424
%7 = load float, float* %6, align 4, !dbg !5424
%8 = fpext float %7 to double, !dbg !5424
%9 = load double*, double** %4, align 8, !dbg !5425
%10 = getelementptr inbounds double, double* %9, i64 0, !dbg !5425
store double %8, double* %10, align 8, !dbg !5426
%11 = load float*, float** %3, align 8, !dbg !5427
%12 = getelementptr inbounds float, float* %11, i64 1, !dbg !5427
%13 = load float, float* %12, align 4, !dbg !5427
%14 = fpext float %13 to double, !dbg !5427
%15 = load double*, double** %4, align 8, !dbg !5428
%16 = getelementptr inbounds double, double* %15, i64 1, !dbg !5428
store double %14, double* %16, align 8, !dbg !5429
%17 = load float*, float** %3, align 8, !dbg !5430
%18 = getelementptr inbounds float, float* %17, i64 2, !dbg !5430
%19 = load float, float* %18, align 4, !dbg !5430
%20 = fpext float %19 to double, !dbg !5430
%21 = load double*, double** %4, align 8, !dbg !5431
%22 = getelementptr inbounds double, double* %21, i64 2, !dbg !5431
store double %20, double* %22, align 8, !dbg !5432
%23 = load double*, double** %4, align 8, !dbg !5433
ret double* %23, !dbg !5434
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Unit(double* %0, double* %1) #0 !dbg !5435 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca double, align 8
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !5436, metadata !DIExpression()), !dbg !5437
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !5438, metadata !DIExpression()), !dbg !5439
call void @llvm.dbg.declare(metadata double* %6, metadata !5440, metadata !DIExpression()), !dbg !5441
%7 = load double*, double** %4, align 8, !dbg !5442
%8 = call double @vector3Length(double* %7), !dbg !5443
store double %8, double* %6, align 8, !dbg !5441
%9 = load double, double* %6, align 8, !dbg !5444
%10 = fcmp ogt double %9, 0.000000e+00, !dbg !5446
br i1 %10, label %11, label %17, !dbg !5447
11: ; preds = %2
%12 = load double*, double** %4, align 8, !dbg !5448
%13 = load double*, double** %5, align 8, !dbg !5449
%14 = load double, double* %6, align 8, !dbg !5450
%15 = fdiv double 1.000000e+00, %14, !dbg !5451
%16 = call double* @vector3Scale(double* %12, double* %13, double %15), !dbg !5452
store double* %16, double** %3, align 8, !dbg !5453
br label %25, !dbg !5453
17: ; preds = %2
%18 = load double*, double** %5, align 8, !dbg !5454
%19 = getelementptr inbounds double, double* %18, i64 0, !dbg !5454
store double 1.000000e+00, double* %19, align 8, !dbg !5456
%20 = load double*, double** %5, align 8, !dbg !5457
%21 = getelementptr inbounds double, double* %20, i64 1, !dbg !5457
store double 0.000000e+00, double* %21, align 8, !dbg !5458
%22 = load double*, double** %5, align 8, !dbg !5459
%23 = getelementptr inbounds double, double* %22, i64 2, !dbg !5459
store double 0.000000e+00, double* %23, align 8, !dbg !5460
%24 = load double*, double** %5, align 8, !dbg !5461
store double* %24, double** %3, align 8, !dbg !5462
br label %25, !dbg !5462
25: ; preds = %17, %11
%26 = load double*, double** %3, align 8, !dbg !5463
ret double* %26, !dbg !5463
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorGet(%struct.Vector_t* %0, i32 %1) #0 !dbg !5464 {
%3 = alloca double, align 8
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5469, metadata !DIExpression()), !dbg !5470
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !5471, metadata !DIExpression()), !dbg !5472
%6 = load i32, i32* %5, align 4, !dbg !5473
%7 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5475
%8 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %7, i32 0, i32 0, !dbg !5476
%9 = load i32, i32* %8, align 8, !dbg !5476
%10 = icmp ult i32 %6, %9, !dbg !5477
br i1 %10, label %11, label %19, !dbg !5478
11: ; preds = %2
%12 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5479
%13 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %12, i32 0, i32 1, !dbg !5480
%14 = load double*, double** %13, align 8, !dbg !5480
%15 = load i32, i32* %5, align 4, !dbg !5481
%16 = zext i32 %15 to i64, !dbg !5479
%17 = getelementptr inbounds double, double* %14, i64 %16, !dbg !5479
%18 = load double, double* %17, align 8, !dbg !5479
store double %18, double* %3, align 8, !dbg !5482
br label %20, !dbg !5482
19: ; preds = %2
store double 0.000000e+00, double* %3, align 8, !dbg !5483
br label %20, !dbg !5483
20: ; preds = %19, %11
%21 = load double, double* %3, align 8, !dbg !5484
ret double %21, !dbg !5484
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorSet(%struct.Vector_t* %0, i32 %1, double %2) #0 !dbg !5485 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5488, metadata !DIExpression()), !dbg !5489
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !5490, metadata !DIExpression()), !dbg !5491
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5492, metadata !DIExpression()), !dbg !5493
%7 = load i32, i32* %5, align 4, !dbg !5494
%8 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5496
%9 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %8, i32 0, i32 0, !dbg !5497
%10 = load i32, i32* %9, align 8, !dbg !5497
%11 = icmp ult i32 %7, %10, !dbg !5498
br i1 %11, label %12, label %20, !dbg !5499
12: ; preds = %3
%13 = load double, double* %6, align 8, !dbg !5500
%14 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5501
%15 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %14, i32 0, i32 1, !dbg !5502
%16 = load double*, double** %15, align 8, !dbg !5502
%17 = load i32, i32* %5, align 4, !dbg !5503
%18 = zext i32 %17 to i64, !dbg !5501
%19 = getelementptr inbounds double, double* %16, i64 %18, !dbg !5501
store double %13, double* %19, align 8, !dbg !5504
br label %20, !dbg !5501
20: ; preds = %12, %3
%21 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5505
ret %struct.Vector_t* %21, !dbg !5506
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorAddToElement(%struct.Vector_t* %0, i32 %1, double %2) #0 !dbg !5507 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5508, metadata !DIExpression()), !dbg !5509
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !5510, metadata !DIExpression()), !dbg !5511
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5512, metadata !DIExpression()), !dbg !5513
%7 = load i32, i32* %5, align 4, !dbg !5514
%8 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5516
%9 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %8, i32 0, i32 0, !dbg !5517
%10 = load i32, i32* %9, align 8, !dbg !5517
%11 = icmp ult i32 %7, %10, !dbg !5518
br i1 %11, label %12, label %22, !dbg !5519
12: ; preds = %3
%13 = load double, double* %6, align 8, !dbg !5520
%14 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5521
%15 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %14, i32 0, i32 1, !dbg !5522
%16 = load double*, double** %15, align 8, !dbg !5522
%17 = load i32, i32* %5, align 4, !dbg !5523
%18 = zext i32 %17 to i64, !dbg !5521
%19 = getelementptr inbounds double, double* %16, i64 %18, !dbg !5521
%20 = load double, double* %19, align 8, !dbg !5524
%21 = fadd double %20, %13, !dbg !5524
store double %21, double* %19, align 8, !dbg !5524
br label %22, !dbg !5521
22: ; preds = %12, %3
%23 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5525
ret %struct.Vector_t* %23, !dbg !5526
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorSetAll(%struct.Vector_t* %0, double %1) #0 !dbg !5527 {
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca double, align 8
%5 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5530, metadata !DIExpression()), !dbg !5531
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !5532, metadata !DIExpression()), !dbg !5533
call void @llvm.dbg.declare(metadata i32* %5, metadata !5534, metadata !DIExpression()), !dbg !5535
store i32 0, i32* %5, align 4, !dbg !5536
br label %6, !dbg !5538
6: ; preds = %20, %2
%7 = load i32, i32* %5, align 4, !dbg !5539
%8 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5541
%9 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %8, i32 0, i32 0, !dbg !5542
%10 = load i32, i32* %9, align 8, !dbg !5542
%11 = icmp ult i32 %7, %10, !dbg !5543
br i1 %11, label %12, label %23, !dbg !5544
12: ; preds = %6
%13 = load double, double* %4, align 8, !dbg !5545
%14 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5546
%15 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %14, i32 0, i32 1, !dbg !5547
%16 = load double*, double** %15, align 8, !dbg !5547
%17 = load i32, i32* %5, align 4, !dbg !5548
%18 = zext i32 %17 to i64, !dbg !5546
%19 = getelementptr inbounds double, double* %16, i64 %18, !dbg !5546
store double %13, double* %19, align 8, !dbg !5549
br label %20, !dbg !5546
20: ; preds = %12
%21 = load i32, i32* %5, align 4, !dbg !5550
%22 = add i32 %21, 1, !dbg !5550
store i32 %22, i32* %5, align 4, !dbg !5550
br label %6, !dbg !5551, !llvm.loop !5552
23: ; preds = %6
%24 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5554
ret %struct.Vector_t* %24, !dbg !5555
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorAllocate(i32 %0) #0 !dbg !5556 {
%2 = alloca i32, align 4
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca i8*, align 8
store i32 %0, i32* %2, align 4
call void @llvm.dbg.declare(metadata i32* %2, metadata !5559, metadata !DIExpression()), !dbg !5560
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5561, metadata !DIExpression()), !dbg !5562
%5 = load i32, i32* %2, align 4, !dbg !5563
%6 = zext i32 %5 to i64, !dbg !5563
%7 = mul i64 8, %6, !dbg !5564
%8 = add i64 16, %7, !dbg !5565
%9 = call noalias i8* @malloc(i64 %8) #7, !dbg !5566
%10 = bitcast i8* %9 to %struct.Vector_t*, !dbg !5567
store %struct.Vector_t* %10, %struct.Vector_t** %3, align 8, !dbg !5562
%11 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5568
%12 = icmp ne %struct.Vector_t* %11, null, !dbg !5568
br i1 %12, label %13, label %27, !dbg !5570
13: ; preds = %1
call void @llvm.dbg.declare(metadata i8** %4, metadata !5571, metadata !DIExpression()), !dbg !5573
%14 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5574
%15 = bitcast %struct.Vector_t* %14 to i8*, !dbg !5575
store i8* %15, i8** %4, align 8, !dbg !5573
%16 = load i8*, i8** %4, align 8, !dbg !5576
%17 = getelementptr inbounds i8, i8* %16, i64 16, !dbg !5576
store i8* %17, i8** %4, align 8, !dbg !5576
%18 = load i8*, i8** %4, align 8, !dbg !5577
%19 = bitcast i8* %18 to double*, !dbg !5578
%20 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5579
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 1, !dbg !5580
store double* %19, double** %21, align 8, !dbg !5581
%22 = load i32, i32* %2, align 4, !dbg !5582
%23 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5583
%24 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %23, i32 0, i32 0, !dbg !5584
store i32 %22, i32* %24, align 8, !dbg !5585
%25 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5586
%26 = call %struct.Vector_t* @vectorZero(%struct.Vector_t* %25), !dbg !5587
br label %27, !dbg !5588
27: ; preds = %13, %1
%28 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5589
ret %struct.Vector_t* %28, !dbg !5590
}
; Function Attrs: nounwind
declare dso_local noalias i8* @malloc(i64) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorZero(%struct.Vector_t* %0) #0 !dbg !5591 {
%2 = alloca %struct.Vector_t*, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %2, metadata !5594, metadata !DIExpression()), !dbg !5595
%3 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !5596
%4 = call %struct.Vector_t* @vectorSetAll(%struct.Vector_t* %3, double 0.000000e+00), !dbg !5597
ret %struct.Vector_t* %4, !dbg !5598
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorChangeAllocateSize(%struct.Vector_t* %0, i32 %1, double %2) #0 !dbg !5599 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
%7 = alloca %struct.Vector_t*, align 8
%8 = alloca i8*, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5600, metadata !DIExpression()), !dbg !5601
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !5602, metadata !DIExpression()), !dbg !5603
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5604, metadata !DIExpression()), !dbg !5605
call void @llvm.dbg.declare(metadata %struct.Vector_t** %7, metadata !5606, metadata !DIExpression()), !dbg !5607
%9 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5608
%10 = bitcast %struct.Vector_t* %9 to i8*, !dbg !5608
%11 = load i32, i32* %5, align 4, !dbg !5609
%12 = zext i32 %11 to i64, !dbg !5609
%13 = mul i64 8, %12, !dbg !5610
%14 = add i64 16, %13, !dbg !5611
%15 = call i8* @realloc(i8* %10, i64 %14) #7, !dbg !5612
%16 = bitcast i8* %15 to %struct.Vector_t*, !dbg !5613
store %struct.Vector_t* %16, %struct.Vector_t** %7, align 8, !dbg !5607
%17 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !5614
%18 = icmp ne %struct.Vector_t* %17, null, !dbg !5614
br i1 %18, label %19, label %31, !dbg !5616
19: ; preds = %3
call void @llvm.dbg.declare(metadata i8** %8, metadata !5617, metadata !DIExpression()), !dbg !5619
%20 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !5620
%21 = bitcast %struct.Vector_t* %20 to i8*, !dbg !5621
store i8* %21, i8** %8, align 8, !dbg !5619
%22 = load i8*, i8** %8, align 8, !dbg !5622
%23 = getelementptr inbounds i8, i8* %22, i64 16, !dbg !5622
store i8* %23, i8** %8, align 8, !dbg !5622
%24 = load i8*, i8** %8, align 8, !dbg !5623
%25 = bitcast i8* %24 to double*, !dbg !5624
%26 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !5625
%27 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %26, i32 0, i32 1, !dbg !5626
store double* %25, double** %27, align 8, !dbg !5627
%28 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !5628
%29 = load i32, i32* %5, align 4, !dbg !5629
%30 = load double, double* %6, align 8, !dbg !5630
call void @vectorChangeSize(%struct.Vector_t* %28, i32 %29, double %30), !dbg !5631
br label %31, !dbg !5632
31: ; preds = %19, %3
%32 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !5633
ret %struct.Vector_t* %32, !dbg !5634
}
; Function Attrs: nounwind
declare dso_local i8* @realloc(i8*, i64) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @vectorChangeSize(%struct.Vector_t* %0, i32 %1, double %2) #0 !dbg !5635 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
%7 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5638, metadata !DIExpression()), !dbg !5639
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !5640, metadata !DIExpression()), !dbg !5641
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5642, metadata !DIExpression()), !dbg !5643
call void @llvm.dbg.declare(metadata i32* %7, metadata !5644, metadata !DIExpression()), !dbg !5645
%8 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5646
%9 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %8, i32 0, i32 0, !dbg !5648
%10 = load i32, i32* %9, align 8, !dbg !5648
store i32 %10, i32* %7, align 4, !dbg !5649
br label %11, !dbg !5650
11: ; preds = %23, %3
%12 = load i32, i32* %7, align 4, !dbg !5651
%13 = load i32, i32* %5, align 4, !dbg !5653
%14 = icmp ult i32 %12, %13, !dbg !5654
br i1 %14, label %15, label %26, !dbg !5655
15: ; preds = %11
%16 = load double, double* %6, align 8, !dbg !5656
%17 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5657
%18 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %17, i32 0, i32 1, !dbg !5658
%19 = load double*, double** %18, align 8, !dbg !5658
%20 = load i32, i32* %7, align 4, !dbg !5659
%21 = zext i32 %20 to i64, !dbg !5657
%22 = getelementptr inbounds double, double* %19, i64 %21, !dbg !5657
store double %16, double* %22, align 8, !dbg !5660
br label %23, !dbg !5657
23: ; preds = %15
%24 = load i32, i32* %7, align 4, !dbg !5661
%25 = add i32 %24, 1, !dbg !5661
store i32 %25, i32* %7, align 4, !dbg !5661
br label %11, !dbg !5662, !llvm.loop !5663
26: ; preds = %11
%27 = load i32, i32* %5, align 4, !dbg !5665
%28 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5666
%29 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %28, i32 0, i32 0, !dbg !5667
store i32 %27, i32* %29, align 8, !dbg !5668
ret void, !dbg !5669
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorCopy(%struct.Vector_t* %0, %struct.Vector_t* %1) #0 !dbg !5670 {
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5673, metadata !DIExpression()), !dbg !5674
store %struct.Vector_t* %1, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5675, metadata !DIExpression()), !dbg !5676
call void @llvm.dbg.declare(metadata i32* %5, metadata !5677, metadata !DIExpression()), !dbg !5678
call void @llvm.dbg.declare(metadata i32* %6, metadata !5679, metadata !DIExpression()), !dbg !5680
%7 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5681
%8 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %7, i32 0, i32 0, !dbg !5681
%9 = load i32, i32* %8, align 8, !dbg !5681
%10 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5681
%11 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %10, i32 0, i32 0, !dbg !5681
%12 = load i32, i32* %11, align 8, !dbg !5681
%13 = icmp ult i32 %9, %12, !dbg !5681
br i1 %13, label %14, label %18, !dbg !5681
14: ; preds = %2
%15 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5681
%16 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %15, i32 0, i32 0, !dbg !5681
%17 = load i32, i32* %16, align 8, !dbg !5681
br label %22, !dbg !5681
18: ; preds = %2
%19 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5681
%20 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %19, i32 0, i32 0, !dbg !5681
%21 = load i32, i32* %20, align 8, !dbg !5681
br label %22, !dbg !5681
22: ; preds = %18, %14
%23 = phi i32 [ %17, %14 ], [ %21, %18 ], !dbg !5681
store i32 %23, i32* %6, align 4, !dbg !5680
store i32 0, i32* %5, align 4, !dbg !5682
br label %24, !dbg !5684
24: ; preds = %42, %22
%25 = load i32, i32* %5, align 4, !dbg !5685
%26 = load i32, i32* %6, align 4, !dbg !5687
%27 = icmp ult i32 %25, %26, !dbg !5688
br i1 %27, label %28, label %45, !dbg !5689
28: ; preds = %24
%29 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5690
%30 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %29, i32 0, i32 1, !dbg !5691
%31 = load double*, double** %30, align 8, !dbg !5691
%32 = load i32, i32* %5, align 4, !dbg !5692
%33 = zext i32 %32 to i64, !dbg !5690
%34 = getelementptr inbounds double, double* %31, i64 %33, !dbg !5690
%35 = load double, double* %34, align 8, !dbg !5690
%36 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5693
%37 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %36, i32 0, i32 1, !dbg !5694
%38 = load double*, double** %37, align 8, !dbg !5694
%39 = load i32, i32* %5, align 4, !dbg !5695
%40 = zext i32 %39 to i64, !dbg !5693
%41 = getelementptr inbounds double, double* %38, i64 %40, !dbg !5693
store double %35, double* %41, align 8, !dbg !5696
br label %42, !dbg !5693
42: ; preds = %28
%43 = load i32, i32* %5, align 4, !dbg !5697
%44 = add i32 %43, 1, !dbg !5697
store i32 %44, i32* %5, align 4, !dbg !5697
br label %24, !dbg !5698, !llvm.loop !5699
45: ; preds = %24
%46 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5701
ret %struct.Vector_t* %46, !dbg !5702
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorMultiplyAccumulate(%struct.Vector_t* %0, %struct.Vector_t* %1, double %2, %struct.Vector_t* %3) #0 !dbg !5703 {
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca double, align 8
%8 = alloca %struct.Vector_t*, align 8
%9 = alloca i32, align 4
%10 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5706, metadata !DIExpression()), !dbg !5707
store %struct.Vector_t* %1, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !5708, metadata !DIExpression()), !dbg !5709
store double %2, double* %7, align 8
call void @llvm.dbg.declare(metadata double* %7, metadata !5710, metadata !DIExpression()), !dbg !5711
store %struct.Vector_t* %3, %struct.Vector_t** %8, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %8, metadata !5712, metadata !DIExpression()), !dbg !5713
call void @llvm.dbg.declare(metadata i32* %9, metadata !5714, metadata !DIExpression()), !dbg !5715
call void @llvm.dbg.declare(metadata i32* %10, metadata !5716, metadata !DIExpression()), !dbg !5717
%11 = load %struct.Vector_t*, %struct.Vector_t** %8, align 8, !dbg !5718
%12 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %11, i32 0, i32 0, !dbg !5718
%13 = load i32, i32* %12, align 8, !dbg !5718
%14 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5718
%15 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %14, i32 0, i32 0, !dbg !5718
%16 = load i32, i32* %15, align 8, !dbg !5718
%17 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5718
%18 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %17, i32 0, i32 0, !dbg !5718
%19 = load i32, i32* %18, align 8, !dbg !5718
%20 = icmp ult i32 %16, %19, !dbg !5718
br i1 %20, label %21, label %25, !dbg !5718
21: ; preds = %4
%22 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5718
%23 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %22, i32 0, i32 0, !dbg !5718
%24 = load i32, i32* %23, align 8, !dbg !5718
br label %29, !dbg !5718
25: ; preds = %4
%26 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5718
%27 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %26, i32 0, i32 0, !dbg !5718
%28 = load i32, i32* %27, align 8, !dbg !5718
br label %29, !dbg !5718
29: ; preds = %25, %21
%30 = phi i32 [ %24, %21 ], [ %28, %25 ], !dbg !5718
%31 = icmp ult i32 %13, %30, !dbg !5718
br i1 %31, label %32, label %36, !dbg !5718
32: ; preds = %29
%33 = load %struct.Vector_t*, %struct.Vector_t** %8, align 8, !dbg !5718
%34 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %33, i32 0, i32 0, !dbg !5718
%35 = load i32, i32* %34, align 8, !dbg !5718
br label %54, !dbg !5718
36: ; preds = %29
%37 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5718
%38 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %37, i32 0, i32 0, !dbg !5718
%39 = load i32, i32* %38, align 8, !dbg !5718
%40 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5718
%41 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %40, i32 0, i32 0, !dbg !5718
%42 = load i32, i32* %41, align 8, !dbg !5718
%43 = icmp ult i32 %39, %42, !dbg !5718
br i1 %43, label %44, label %48, !dbg !5718
44: ; preds = %36
%45 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5718
%46 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %45, i32 0, i32 0, !dbg !5718
%47 = load i32, i32* %46, align 8, !dbg !5718
br label %52, !dbg !5718
48: ; preds = %36
%49 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5718
%50 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %49, i32 0, i32 0, !dbg !5718
%51 = load i32, i32* %50, align 8, !dbg !5718
br label %52, !dbg !5718
52: ; preds = %48, %44
%53 = phi i32 [ %47, %44 ], [ %51, %48 ], !dbg !5718
br label %54, !dbg !5718
54: ; preds = %52, %32
%55 = phi i32 [ %35, %32 ], [ %53, %52 ], !dbg !5718
store i32 %55, i32* %10, align 4, !dbg !5717
store i32 0, i32* %9, align 4, !dbg !5719
br label %56, !dbg !5721
56: ; preds = %84, %54
%57 = load i32, i32* %9, align 4, !dbg !5722
%58 = load i32, i32* %10, align 4, !dbg !5724
%59 = icmp ult i32 %57, %58, !dbg !5725
br i1 %59, label %60, label %87, !dbg !5726
60: ; preds = %56
%61 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5727
%62 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %61, i32 0, i32 1, !dbg !5728
%63 = load double*, double** %62, align 8, !dbg !5728
%64 = load i32, i32* %9, align 4, !dbg !5729
%65 = zext i32 %64 to i64, !dbg !5727
%66 = getelementptr inbounds double, double* %63, i64 %65, !dbg !5727
%67 = load double, double* %66, align 8, !dbg !5727
%68 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5730
%69 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %68, i32 0, i32 1, !dbg !5731
%70 = load double*, double** %69, align 8, !dbg !5731
%71 = load i32, i32* %9, align 4, !dbg !5732
%72 = zext i32 %71 to i64, !dbg !5730
%73 = getelementptr inbounds double, double* %70, i64 %72, !dbg !5730
%74 = load double, double* %73, align 8, !dbg !5730
%75 = load double, double* %7, align 8, !dbg !5733
%76 = fmul double %74, %75, !dbg !5734
%77 = fadd double %67, %76, !dbg !5735
%78 = load %struct.Vector_t*, %struct.Vector_t** %8, align 8, !dbg !5736
%79 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %78, i32 0, i32 1, !dbg !5737
%80 = load double*, double** %79, align 8, !dbg !5737
%81 = load i32, i32* %9, align 4, !dbg !5738
%82 = zext i32 %81 to i64, !dbg !5736
%83 = getelementptr inbounds double, double* %80, i64 %82, !dbg !5736
store double %77, double* %83, align 8, !dbg !5739
br label %84, !dbg !5736
84: ; preds = %60
%85 = load i32, i32* %9, align 4, !dbg !5740
%86 = add i32 %85, 1, !dbg !5740
store i32 %86, i32* %9, align 4, !dbg !5740
br label %56, !dbg !5741, !llvm.loop !5742
87: ; preds = %56
%88 = load %struct.Vector_t*, %struct.Vector_t** %8, align 8, !dbg !5744
ret %struct.Vector_t* %88, !dbg !5745
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorSum(%struct.Vector_t* %0, %struct.Vector_t* %1, %struct.Vector_t* %2) #0 !dbg !5746 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5749, metadata !DIExpression()), !dbg !5750
store %struct.Vector_t* %1, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5751, metadata !DIExpression()), !dbg !5752
store %struct.Vector_t* %2, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !5753, metadata !DIExpression()), !dbg !5754
call void @llvm.dbg.declare(metadata i32* %7, metadata !5755, metadata !DIExpression()), !dbg !5756
call void @llvm.dbg.declare(metadata i32* %8, metadata !5757, metadata !DIExpression()), !dbg !5758
%9 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5759
%10 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %9, i32 0, i32 0, !dbg !5759
%11 = load i32, i32* %10, align 8, !dbg !5759
%12 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5759
%13 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %12, i32 0, i32 0, !dbg !5759
%14 = load i32, i32* %13, align 8, !dbg !5759
%15 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5759
%16 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %15, i32 0, i32 0, !dbg !5759
%17 = load i32, i32* %16, align 8, !dbg !5759
%18 = icmp ult i32 %14, %17, !dbg !5759
br i1 %18, label %19, label %23, !dbg !5759
19: ; preds = %3
%20 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5759
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !5759
%22 = load i32, i32* %21, align 8, !dbg !5759
br label %27, !dbg !5759
23: ; preds = %3
%24 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5759
%25 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %24, i32 0, i32 0, !dbg !5759
%26 = load i32, i32* %25, align 8, !dbg !5759
br label %27, !dbg !5759
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !5759
%29 = icmp ult i32 %11, %28, !dbg !5759
br i1 %29, label %30, label %34, !dbg !5759
30: ; preds = %27
%31 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5759
%32 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %31, i32 0, i32 0, !dbg !5759
%33 = load i32, i32* %32, align 8, !dbg !5759
br label %52, !dbg !5759
34: ; preds = %27
%35 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5759
%36 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %35, i32 0, i32 0, !dbg !5759
%37 = load i32, i32* %36, align 8, !dbg !5759
%38 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5759
%39 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %38, i32 0, i32 0, !dbg !5759
%40 = load i32, i32* %39, align 8, !dbg !5759
%41 = icmp ult i32 %37, %40, !dbg !5759
br i1 %41, label %42, label %46, !dbg !5759
42: ; preds = %34
%43 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5759
%44 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %43, i32 0, i32 0, !dbg !5759
%45 = load i32, i32* %44, align 8, !dbg !5759
br label %50, !dbg !5759
46: ; preds = %34
%47 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5759
%48 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %47, i32 0, i32 0, !dbg !5759
%49 = load i32, i32* %48, align 8, !dbg !5759
br label %50, !dbg !5759
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !5759
br label %52, !dbg !5759
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !5759
store i32 %53, i32* %8, align 4, !dbg !5758
store i32 0, i32* %7, align 4, !dbg !5760
br label %54, !dbg !5762
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !5763
%56 = load i32, i32* %8, align 4, !dbg !5765
%57 = icmp ult i32 %55, %56, !dbg !5766
br i1 %57, label %58, label %83, !dbg !5767
58: ; preds = %54
%59 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5768
%60 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %59, i32 0, i32 1, !dbg !5769
%61 = load double*, double** %60, align 8, !dbg !5769
%62 = load i32, i32* %7, align 4, !dbg !5770
%63 = zext i32 %62 to i64, !dbg !5768
%64 = getelementptr inbounds double, double* %61, i64 %63, !dbg !5768
%65 = load double, double* %64, align 8, !dbg !5768
%66 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5771
%67 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %66, i32 0, i32 1, !dbg !5772
%68 = load double*, double** %67, align 8, !dbg !5772
%69 = load i32, i32* %7, align 4, !dbg !5773
%70 = zext i32 %69 to i64, !dbg !5771
%71 = getelementptr inbounds double, double* %68, i64 %70, !dbg !5771
%72 = load double, double* %71, align 8, !dbg !5771
%73 = fadd double %65, %72, !dbg !5774
%74 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5775
%75 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %74, i32 0, i32 1, !dbg !5776
%76 = load double*, double** %75, align 8, !dbg !5776
%77 = load i32, i32* %7, align 4, !dbg !5777
%78 = zext i32 %77 to i64, !dbg !5775
%79 = getelementptr inbounds double, double* %76, i64 %78, !dbg !5775
store double %73, double* %79, align 8, !dbg !5778
br label %80, !dbg !5775
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !5779
%82 = add i32 %81, 1, !dbg !5779
store i32 %82, i32* %7, align 4, !dbg !5779
br label %54, !dbg !5780, !llvm.loop !5781
83: ; preds = %54
%84 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5783
ret %struct.Vector_t* %84, !dbg !5784
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorDifference(%struct.Vector_t* %0, %struct.Vector_t* %1, %struct.Vector_t* %2) #0 !dbg !5785 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5786, metadata !DIExpression()), !dbg !5787
store %struct.Vector_t* %1, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5788, metadata !DIExpression()), !dbg !5789
store %struct.Vector_t* %2, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !5790, metadata !DIExpression()), !dbg !5791
call void @llvm.dbg.declare(metadata i32* %7, metadata !5792, metadata !DIExpression()), !dbg !5793
call void @llvm.dbg.declare(metadata i32* %8, metadata !5794, metadata !DIExpression()), !dbg !5795
%9 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5796
%10 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %9, i32 0, i32 0, !dbg !5796
%11 = load i32, i32* %10, align 8, !dbg !5796
%12 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5796
%13 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %12, i32 0, i32 0, !dbg !5796
%14 = load i32, i32* %13, align 8, !dbg !5796
%15 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5796
%16 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %15, i32 0, i32 0, !dbg !5796
%17 = load i32, i32* %16, align 8, !dbg !5796
%18 = icmp ult i32 %14, %17, !dbg !5796
br i1 %18, label %19, label %23, !dbg !5796
19: ; preds = %3
%20 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5796
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !5796
%22 = load i32, i32* %21, align 8, !dbg !5796
br label %27, !dbg !5796
23: ; preds = %3
%24 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5796
%25 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %24, i32 0, i32 0, !dbg !5796
%26 = load i32, i32* %25, align 8, !dbg !5796
br label %27, !dbg !5796
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !5796
%29 = icmp ult i32 %11, %28, !dbg !5796
br i1 %29, label %30, label %34, !dbg !5796
30: ; preds = %27
%31 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5796
%32 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %31, i32 0, i32 0, !dbg !5796
%33 = load i32, i32* %32, align 8, !dbg !5796
br label %52, !dbg !5796
34: ; preds = %27
%35 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5796
%36 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %35, i32 0, i32 0, !dbg !5796
%37 = load i32, i32* %36, align 8, !dbg !5796
%38 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5796
%39 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %38, i32 0, i32 0, !dbg !5796
%40 = load i32, i32* %39, align 8, !dbg !5796
%41 = icmp ult i32 %37, %40, !dbg !5796
br i1 %41, label %42, label %46, !dbg !5796
42: ; preds = %34
%43 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5796
%44 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %43, i32 0, i32 0, !dbg !5796
%45 = load i32, i32* %44, align 8, !dbg !5796
br label %50, !dbg !5796
46: ; preds = %34
%47 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5796
%48 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %47, i32 0, i32 0, !dbg !5796
%49 = load i32, i32* %48, align 8, !dbg !5796
br label %50, !dbg !5796
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !5796
br label %52, !dbg !5796
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !5796
store i32 %53, i32* %8, align 4, !dbg !5795
store i32 0, i32* %7, align 4, !dbg !5797
br label %54, !dbg !5799
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !5800
%56 = load i32, i32* %8, align 4, !dbg !5802
%57 = icmp ult i32 %55, %56, !dbg !5803
br i1 %57, label %58, label %83, !dbg !5804
58: ; preds = %54
%59 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5805
%60 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %59, i32 0, i32 1, !dbg !5806
%61 = load double*, double** %60, align 8, !dbg !5806
%62 = load i32, i32* %7, align 4, !dbg !5807
%63 = zext i32 %62 to i64, !dbg !5805
%64 = getelementptr inbounds double, double* %61, i64 %63, !dbg !5805
%65 = load double, double* %64, align 8, !dbg !5805
%66 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5808
%67 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %66, i32 0, i32 1, !dbg !5809
%68 = load double*, double** %67, align 8, !dbg !5809
%69 = load i32, i32* %7, align 4, !dbg !5810
%70 = zext i32 %69 to i64, !dbg !5808
%71 = getelementptr inbounds double, double* %68, i64 %70, !dbg !5808
%72 = load double, double* %71, align 8, !dbg !5808
%73 = fsub double %65, %72, !dbg !5811
%74 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5812
%75 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %74, i32 0, i32 1, !dbg !5813
%76 = load double*, double** %75, align 8, !dbg !5813
%77 = load i32, i32* %7, align 4, !dbg !5814
%78 = zext i32 %77 to i64, !dbg !5812
%79 = getelementptr inbounds double, double* %76, i64 %78, !dbg !5812
store double %73, double* %79, align 8, !dbg !5815
br label %80, !dbg !5812
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !5816
%82 = add i32 %81, 1, !dbg !5816
store i32 %82, i32* %7, align 4, !dbg !5816
br label %54, !dbg !5817, !llvm.loop !5818
83: ; preds = %54
%84 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5820
ret %struct.Vector_t* %84, !dbg !5821
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorMultiply(%struct.Vector_t* %0, %struct.Vector_t* %1, %struct.Vector_t* %2) #0 !dbg !5822 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5823, metadata !DIExpression()), !dbg !5824
store %struct.Vector_t* %1, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5825, metadata !DIExpression()), !dbg !5826
store %struct.Vector_t* %2, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !5827, metadata !DIExpression()), !dbg !5828
call void @llvm.dbg.declare(metadata i32* %7, metadata !5829, metadata !DIExpression()), !dbg !5830
call void @llvm.dbg.declare(metadata i32* %8, metadata !5831, metadata !DIExpression()), !dbg !5832
%9 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5833
%10 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %9, i32 0, i32 0, !dbg !5833
%11 = load i32, i32* %10, align 8, !dbg !5833
%12 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5833
%13 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %12, i32 0, i32 0, !dbg !5833
%14 = load i32, i32* %13, align 8, !dbg !5833
%15 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5833
%16 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %15, i32 0, i32 0, !dbg !5833
%17 = load i32, i32* %16, align 8, !dbg !5833
%18 = icmp ult i32 %14, %17, !dbg !5833
br i1 %18, label %19, label %23, !dbg !5833
19: ; preds = %3
%20 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5833
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !5833
%22 = load i32, i32* %21, align 8, !dbg !5833
br label %27, !dbg !5833
23: ; preds = %3
%24 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5833
%25 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %24, i32 0, i32 0, !dbg !5833
%26 = load i32, i32* %25, align 8, !dbg !5833
br label %27, !dbg !5833
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !5833
%29 = icmp ult i32 %11, %28, !dbg !5833
br i1 %29, label %30, label %34, !dbg !5833
30: ; preds = %27
%31 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5833
%32 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %31, i32 0, i32 0, !dbg !5833
%33 = load i32, i32* %32, align 8, !dbg !5833
br label %52, !dbg !5833
34: ; preds = %27
%35 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5833
%36 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %35, i32 0, i32 0, !dbg !5833
%37 = load i32, i32* %36, align 8, !dbg !5833
%38 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5833
%39 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %38, i32 0, i32 0, !dbg !5833
%40 = load i32, i32* %39, align 8, !dbg !5833
%41 = icmp ult i32 %37, %40, !dbg !5833
br i1 %41, label %42, label %46, !dbg !5833
42: ; preds = %34
%43 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5833
%44 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %43, i32 0, i32 0, !dbg !5833
%45 = load i32, i32* %44, align 8, !dbg !5833
br label %50, !dbg !5833
46: ; preds = %34
%47 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5833
%48 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %47, i32 0, i32 0, !dbg !5833
%49 = load i32, i32* %48, align 8, !dbg !5833
br label %50, !dbg !5833
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !5833
br label %52, !dbg !5833
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !5833
store i32 %53, i32* %8, align 4, !dbg !5832
store i32 0, i32* %7, align 4, !dbg !5834
br label %54, !dbg !5836
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !5837
%56 = load i32, i32* %8, align 4, !dbg !5839
%57 = icmp ult i32 %55, %56, !dbg !5840
br i1 %57, label %58, label %83, !dbg !5841
58: ; preds = %54
%59 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5842
%60 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %59, i32 0, i32 1, !dbg !5843
%61 = load double*, double** %60, align 8, !dbg !5843
%62 = load i32, i32* %7, align 4, !dbg !5844
%63 = zext i32 %62 to i64, !dbg !5842
%64 = getelementptr inbounds double, double* %61, i64 %63, !dbg !5842
%65 = load double, double* %64, align 8, !dbg !5842
%66 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5845
%67 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %66, i32 0, i32 1, !dbg !5846
%68 = load double*, double** %67, align 8, !dbg !5846
%69 = load i32, i32* %7, align 4, !dbg !5847
%70 = zext i32 %69 to i64, !dbg !5845
%71 = getelementptr inbounds double, double* %68, i64 %70, !dbg !5845
%72 = load double, double* %71, align 8, !dbg !5845
%73 = fmul double %65, %72, !dbg !5848
%74 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5849
%75 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %74, i32 0, i32 1, !dbg !5850
%76 = load double*, double** %75, align 8, !dbg !5850
%77 = load i32, i32* %7, align 4, !dbg !5851
%78 = zext i32 %77 to i64, !dbg !5849
%79 = getelementptr inbounds double, double* %76, i64 %78, !dbg !5849
store double %73, double* %79, align 8, !dbg !5852
br label %80, !dbg !5849
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !5853
%82 = add i32 %81, 1, !dbg !5853
store i32 %82, i32* %7, align 4, !dbg !5853
br label %54, !dbg !5854, !llvm.loop !5855
83: ; preds = %54
%84 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !5857
ret %struct.Vector_t* %84, !dbg !5858
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorDot(%struct.Vector_t* %0, %struct.Vector_t* %1) #0 !dbg !5859 {
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
%7 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5862, metadata !DIExpression()), !dbg !5863
store %struct.Vector_t* %1, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5864, metadata !DIExpression()), !dbg !5865
call void @llvm.dbg.declare(metadata i32* %5, metadata !5866, metadata !DIExpression()), !dbg !5867
call void @llvm.dbg.declare(metadata i32* %6, metadata !5868, metadata !DIExpression()), !dbg !5869
%8 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5870
%9 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %8, i32 0, i32 0, !dbg !5870
%10 = load i32, i32* %9, align 8, !dbg !5870
%11 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5870
%12 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %11, i32 0, i32 0, !dbg !5870
%13 = load i32, i32* %12, align 8, !dbg !5870
%14 = icmp ult i32 %10, %13, !dbg !5870
br i1 %14, label %15, label %19, !dbg !5870
15: ; preds = %2
%16 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5870
%17 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %16, i32 0, i32 0, !dbg !5870
%18 = load i32, i32* %17, align 8, !dbg !5870
br label %23, !dbg !5870
19: ; preds = %2
%20 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5870
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !5870
%22 = load i32, i32* %21, align 8, !dbg !5870
br label %23, !dbg !5870
23: ; preds = %19, %15
%24 = phi i32 [ %18, %15 ], [ %22, %19 ], !dbg !5870
store i32 %24, i32* %6, align 4, !dbg !5869
call void @llvm.dbg.declare(metadata double* %7, metadata !5871, metadata !DIExpression()), !dbg !5872
store double 0.000000e+00, double* %7, align 8, !dbg !5872
store i32 0, i32* %5, align 4, !dbg !5873
br label %25, !dbg !5875
25: ; preds = %47, %23
%26 = load i32, i32* %5, align 4, !dbg !5876
%27 = load i32, i32* %6, align 4, !dbg !5878
%28 = icmp ult i32 %26, %27, !dbg !5879
br i1 %28, label %29, label %50, !dbg !5880
29: ; preds = %25
%30 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5881
%31 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %30, i32 0, i32 1, !dbg !5882
%32 = load double*, double** %31, align 8, !dbg !5882
%33 = load i32, i32* %5, align 4, !dbg !5883
%34 = zext i32 %33 to i64, !dbg !5881
%35 = getelementptr inbounds double, double* %32, i64 %34, !dbg !5881
%36 = load double, double* %35, align 8, !dbg !5881
%37 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5884
%38 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %37, i32 0, i32 1, !dbg !5885
%39 = load double*, double** %38, align 8, !dbg !5885
%40 = load i32, i32* %5, align 4, !dbg !5886
%41 = zext i32 %40 to i64, !dbg !5884
%42 = getelementptr inbounds double, double* %39, i64 %41, !dbg !5884
%43 = load double, double* %42, align 8, !dbg !5884
%44 = fmul double %36, %43, !dbg !5887
%45 = load double, double* %7, align 8, !dbg !5888
%46 = fadd double %45, %44, !dbg !5888
store double %46, double* %7, align 8, !dbg !5888
br label %47, !dbg !5889
47: ; preds = %29
%48 = load i32, i32* %5, align 4, !dbg !5890
%49 = add i32 %48, 1, !dbg !5890
store i32 %49, i32* %5, align 4, !dbg !5890
br label %25, !dbg !5891, !llvm.loop !5892
50: ; preds = %25
%51 = load double, double* %7, align 8, !dbg !5894
ret double %51, !dbg !5895
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorLengthSquared(%struct.Vector_t* %0) #0 !dbg !5896 {
%2 = alloca %struct.Vector_t*, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %2, metadata !5899, metadata !DIExpression()), !dbg !5900
%3 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !5901
%4 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !5902
%5 = call double @vectorDot(%struct.Vector_t* %3, %struct.Vector_t* %4), !dbg !5903
ret double %5, !dbg !5904
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorLength(%struct.Vector_t* %0) #0 !dbg !5905 {
%2 = alloca %struct.Vector_t*, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %2, metadata !5906, metadata !DIExpression()), !dbg !5907
%3 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !5908
%4 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !5909
%5 = call double @vectorDot(%struct.Vector_t* %3, %struct.Vector_t* %4), !dbg !5910
%6 = call double @sqrt(double %5) #7, !dbg !5911
ret double %6, !dbg !5912
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorChangeLength(%struct.Vector_t* %0, %struct.Vector_t* %1, double %2) #0 !dbg !5913 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5916, metadata !DIExpression()), !dbg !5917
store %struct.Vector_t* %1, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5918, metadata !DIExpression()), !dbg !5919
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5920, metadata !DIExpression()), !dbg !5921
call void @llvm.dbg.declare(metadata double* %7, metadata !5922, metadata !DIExpression()), !dbg !5923
%8 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5924
%9 = call double @vectorLength(%struct.Vector_t* %8), !dbg !5925
store double %9, double* %7, align 8, !dbg !5923
%10 = load double, double* %7, align 8, !dbg !5926
%11 = fcmp ogt double %10, 0.000000e+00, !dbg !5928
br i1 %11, label %12, label %19, !dbg !5929
12: ; preds = %3
%13 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5930
%14 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5932
%15 = load double, double* %6, align 8, !dbg !5933
%16 = load double, double* %7, align 8, !dbg !5934
%17 = fdiv double %15, %16, !dbg !5935
%18 = call %struct.Vector_t* @vectorScale(%struct.Vector_t* %13, %struct.Vector_t* %14, double %17), !dbg !5936
br label %33, !dbg !5937
19: ; preds = %3
%20 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5938
%21 = call %struct.Vector_t* @vectorZero(%struct.Vector_t* %20), !dbg !5940
%22 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5941
%23 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %22, i32 0, i32 0, !dbg !5943
%24 = load i32, i32* %23, align 8, !dbg !5943
%25 = icmp ugt i32 %24, 0, !dbg !5944
br i1 %25, label %26, label %32, !dbg !5945
26: ; preds = %19
%27 = load double, double* %6, align 8, !dbg !5946
%28 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5947
%29 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %28, i32 0, i32 1, !dbg !5948
%30 = load double*, double** %29, align 8, !dbg !5948
%31 = getelementptr inbounds double, double* %30, i64 0, !dbg !5947
store double %27, double* %31, align 8, !dbg !5949
br label %32, !dbg !5947
32: ; preds = %26, %19
br label %33
33: ; preds = %32, %12
%34 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5950
ret %struct.Vector_t* %34, !dbg !5951
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorScale(%struct.Vector_t* %0, %struct.Vector_t* %1, double %2) #0 !dbg !5952 {
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca %struct.Vector_t*, align 8
%6 = alloca double, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5953, metadata !DIExpression()), !dbg !5954
store %struct.Vector_t* %1, %struct.Vector_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %5, metadata !5955, metadata !DIExpression()), !dbg !5956
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !5957, metadata !DIExpression()), !dbg !5958
call void @llvm.dbg.declare(metadata i32* %7, metadata !5959, metadata !DIExpression()), !dbg !5960
call void @llvm.dbg.declare(metadata i32* %8, metadata !5961, metadata !DIExpression()), !dbg !5962
%9 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5963
%10 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %9, i32 0, i32 0, !dbg !5963
%11 = load i32, i32* %10, align 8, !dbg !5963
%12 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5963
%13 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %12, i32 0, i32 0, !dbg !5963
%14 = load i32, i32* %13, align 8, !dbg !5963
%15 = icmp ult i32 %11, %14, !dbg !5963
br i1 %15, label %16, label %20, !dbg !5963
16: ; preds = %3
%17 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5963
%18 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %17, i32 0, i32 0, !dbg !5963
%19 = load i32, i32* %18, align 8, !dbg !5963
br label %24, !dbg !5963
20: ; preds = %3
%21 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5963
%22 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %21, i32 0, i32 0, !dbg !5963
%23 = load i32, i32* %22, align 8, !dbg !5963
br label %24, !dbg !5963
24: ; preds = %20, %16
%25 = phi i32 [ %19, %16 ], [ %23, %20 ], !dbg !5963
store i32 %25, i32* %8, align 4, !dbg !5962
store i32 0, i32* %7, align 4, !dbg !5964
br label %26, !dbg !5966
26: ; preds = %46, %24
%27 = load i32, i32* %7, align 4, !dbg !5967
%28 = load i32, i32* %8, align 4, !dbg !5969
%29 = icmp ult i32 %27, %28, !dbg !5970
br i1 %29, label %30, label %49, !dbg !5971
30: ; preds = %26
%31 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5972
%32 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %31, i32 0, i32 1, !dbg !5973
%33 = load double*, double** %32, align 8, !dbg !5973
%34 = load i32, i32* %7, align 4, !dbg !5974
%35 = zext i32 %34 to i64, !dbg !5972
%36 = getelementptr inbounds double, double* %33, i64 %35, !dbg !5972
%37 = load double, double* %36, align 8, !dbg !5972
%38 = load double, double* %6, align 8, !dbg !5975
%39 = fmul double %37, %38, !dbg !5976
%40 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5977
%41 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %40, i32 0, i32 1, !dbg !5978
%42 = load double*, double** %41, align 8, !dbg !5978
%43 = load i32, i32* %7, align 4, !dbg !5979
%44 = zext i32 %43 to i64, !dbg !5977
%45 = getelementptr inbounds double, double* %42, i64 %44, !dbg !5977
store double %39, double* %45, align 8, !dbg !5980
br label %46, !dbg !5977
46: ; preds = %30
%47 = load i32, i32* %7, align 4, !dbg !5981
%48 = add i32 %47, 1, !dbg !5981
store i32 %48, i32* %7, align 4, !dbg !5981
br label %26, !dbg !5982, !llvm.loop !5983
49: ; preds = %26
%50 = load %struct.Vector_t*, %struct.Vector_t** %5, align 8, !dbg !5985
ret %struct.Vector_t* %50, !dbg !5986
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorUnit(%struct.Vector_t* %0, %struct.Vector_t* %1) #0 !dbg !5987 {
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca %struct.Vector_t*, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5988, metadata !DIExpression()), !dbg !5989
store %struct.Vector_t* %1, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5990, metadata !DIExpression()), !dbg !5991
%5 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !5992
%6 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !5993
%7 = call %struct.Vector_t* @vectorChangeLength(%struct.Vector_t* %5, %struct.Vector_t* %6, double 1.000000e+00), !dbg !5994
ret %struct.Vector_t* %7, !dbg !5995
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vector_t* @vectorAbs(%struct.Vector_t* %0, %struct.Vector_t* %1) #0 !dbg !5996 {
%3 = alloca %struct.Vector_t*, align 8
%4 = alloca %struct.Vector_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Vector_t* %0, %struct.Vector_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %3, metadata !5997, metadata !DIExpression()), !dbg !5998
store %struct.Vector_t* %1, %struct.Vector_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %4, metadata !5999, metadata !DIExpression()), !dbg !6000
call void @llvm.dbg.declare(metadata i32* %5, metadata !6001, metadata !DIExpression()), !dbg !6002
call void @llvm.dbg.declare(metadata i32* %6, metadata !6003, metadata !DIExpression()), !dbg !6004
%7 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !6005
%8 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %7, i32 0, i32 0, !dbg !6005
%9 = load i32, i32* %8, align 8, !dbg !6005
%10 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !6005
%11 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %10, i32 0, i32 0, !dbg !6005
%12 = load i32, i32* %11, align 8, !dbg !6005
%13 = icmp ult i32 %9, %12, !dbg !6005
br i1 %13, label %14, label %18, !dbg !6005
14: ; preds = %2
%15 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !6005
%16 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %15, i32 0, i32 0, !dbg !6005
%17 = load i32, i32* %16, align 8, !dbg !6005
br label %22, !dbg !6005
18: ; preds = %2
%19 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !6005
%20 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %19, i32 0, i32 0, !dbg !6005
%21 = load i32, i32* %20, align 8, !dbg !6005
br label %22, !dbg !6005
22: ; preds = %18, %14
%23 = phi i32 [ %17, %14 ], [ %21, %18 ], !dbg !6005
store i32 %23, i32* %6, align 4, !dbg !6004
store i32 0, i32* %5, align 4, !dbg !6006
br label %24, !dbg !6008
24: ; preds = %43, %22
%25 = load i32, i32* %5, align 4, !dbg !6009
%26 = load i32, i32* %6, align 4, !dbg !6011
%27 = icmp ult i32 %25, %26, !dbg !6012
br i1 %27, label %28, label %46, !dbg !6013
28: ; preds = %24
%29 = load %struct.Vector_t*, %struct.Vector_t** %3, align 8, !dbg !6014
%30 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %29, i32 0, i32 1, !dbg !6015
%31 = load double*, double** %30, align 8, !dbg !6015
%32 = load i32, i32* %5, align 4, !dbg !6016
%33 = zext i32 %32 to i64, !dbg !6014
%34 = getelementptr inbounds double, double* %31, i64 %33, !dbg !6014
%35 = load double, double* %34, align 8, !dbg !6014
%36 = call double @llvm.fabs.f64(double %35), !dbg !6017
%37 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !6018
%38 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %37, i32 0, i32 1, !dbg !6019
%39 = load double*, double** %38, align 8, !dbg !6019
%40 = load i32, i32* %5, align 4, !dbg !6020
%41 = zext i32 %40 to i64, !dbg !6018
%42 = getelementptr inbounds double, double* %39, i64 %41, !dbg !6018
store double %36, double* %42, align 8, !dbg !6021
br label %43, !dbg !6018
43: ; preds = %28
%44 = load i32, i32* %5, align 4, !dbg !6022
%45 = add i32 %44, 1, !dbg !6022
store i32 %45, i32* %5, align 4, !dbg !6022
br label %24, !dbg !6023, !llvm.loop !6024
46: ; preds = %24
%47 = load %struct.Vector_t*, %struct.Vector_t** %4, align 8, !dbg !6026
ret %struct.Vector_t* %47, !dbg !6027
}
; Function Attrs: nounwind readnone speculatable willreturn
declare double @llvm.fabs.f64(double) #2
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorMax(%struct.Vector_t* %0) #0 !dbg !6028 {
%2 = alloca %struct.Vector_t*, align 8
%3 = alloca i32, align 4
%4 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %2, metadata !6029, metadata !DIExpression()), !dbg !6030
call void @llvm.dbg.declare(metadata i32* %3, metadata !6031, metadata !DIExpression()), !dbg !6032
call void @llvm.dbg.declare(metadata double* %4, metadata !6033, metadata !DIExpression()), !dbg !6034
%5 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6035
%6 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %5, i32 0, i32 0, !dbg !6036
%7 = load i32, i32* %6, align 8, !dbg !6036
%8 = icmp ugt i32 %7, 0, !dbg !6037
br i1 %8, label %9, label %15, !dbg !6038
9: ; preds = %1
%10 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6039
%11 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %10, i32 0, i32 1, !dbg !6040
%12 = load double*, double** %11, align 8, !dbg !6040
%13 = getelementptr inbounds double, double* %12, i64 0, !dbg !6039
%14 = load double, double* %13, align 8, !dbg !6039
br label %16, !dbg !6038
15: ; preds = %1
br label %16, !dbg !6038
16: ; preds = %15, %9
%17 = phi double [ %14, %9 ], [ 0.000000e+00, %15 ], !dbg !6038
store double %17, double* %4, align 8, !dbg !6034
store i32 1, i32* %3, align 4, !dbg !6041
br label %18, !dbg !6043
18: ; preds = %43, %16
%19 = load i32, i32* %3, align 4, !dbg !6044
%20 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6046
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !6047
%22 = load i32, i32* %21, align 8, !dbg !6047
%23 = icmp ult i32 %19, %22, !dbg !6048
br i1 %23, label %24, label %46, !dbg !6049
24: ; preds = %18
%25 = load double, double* %4, align 8, !dbg !6050
%26 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6053
%27 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %26, i32 0, i32 1, !dbg !6054
%28 = load double*, double** %27, align 8, !dbg !6054
%29 = load i32, i32* %3, align 4, !dbg !6055
%30 = zext i32 %29 to i64, !dbg !6053
%31 = getelementptr inbounds double, double* %28, i64 %30, !dbg !6053
%32 = load double, double* %31, align 8, !dbg !6053
%33 = fcmp olt double %25, %32, !dbg !6056
br i1 %33, label %34, label %42, !dbg !6057
34: ; preds = %24
%35 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6058
%36 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %35, i32 0, i32 1, !dbg !6059
%37 = load double*, double** %36, align 8, !dbg !6059
%38 = load i32, i32* %3, align 4, !dbg !6060
%39 = zext i32 %38 to i64, !dbg !6058
%40 = getelementptr inbounds double, double* %37, i64 %39, !dbg !6058
%41 = load double, double* %40, align 8, !dbg !6058
store double %41, double* %4, align 8, !dbg !6061
br label %42, !dbg !6062
42: ; preds = %34, %24
br label %43, !dbg !6063
43: ; preds = %42
%44 = load i32, i32* %3, align 4, !dbg !6064
%45 = add i32 %44, 1, !dbg !6064
store i32 %45, i32* %3, align 4, !dbg !6064
br label %18, !dbg !6065, !llvm.loop !6066
46: ; preds = %18
%47 = load double, double* %4, align 8, !dbg !6068
ret double %47, !dbg !6069
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @vectorMin(%struct.Vector_t* %0) #0 !dbg !6070 {
%2 = alloca %struct.Vector_t*, align 8
%3 = alloca i32, align 4
%4 = alloca double, align 8
store %struct.Vector_t* %0, %struct.Vector_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %2, metadata !6071, metadata !DIExpression()), !dbg !6072
call void @llvm.dbg.declare(metadata i32* %3, metadata !6073, metadata !DIExpression()), !dbg !6074
call void @llvm.dbg.declare(metadata double* %4, metadata !6075, metadata !DIExpression()), !dbg !6076
%5 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6077
%6 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %5, i32 0, i32 0, !dbg !6078
%7 = load i32, i32* %6, align 8, !dbg !6078
%8 = icmp ugt i32 %7, 0, !dbg !6079
br i1 %8, label %9, label %15, !dbg !6080
9: ; preds = %1
%10 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6081
%11 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %10, i32 0, i32 1, !dbg !6082
%12 = load double*, double** %11, align 8, !dbg !6082
%13 = getelementptr inbounds double, double* %12, i64 0, !dbg !6081
%14 = load double, double* %13, align 8, !dbg !6081
br label %16, !dbg !6080
15: ; preds = %1
br label %16, !dbg !6080
16: ; preds = %15, %9
%17 = phi double [ %14, %9 ], [ 0.000000e+00, %15 ], !dbg !6080
store double %17, double* %4, align 8, !dbg !6076
store i32 1, i32* %3, align 4, !dbg !6083
br label %18, !dbg !6085
18: ; preds = %43, %16
%19 = load i32, i32* %3, align 4, !dbg !6086
%20 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6088
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !6089
%22 = load i32, i32* %21, align 8, !dbg !6089
%23 = icmp ult i32 %19, %22, !dbg !6090
br i1 %23, label %24, label %46, !dbg !6091
24: ; preds = %18
%25 = load double, double* %4, align 8, !dbg !6092
%26 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6095
%27 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %26, i32 0, i32 1, !dbg !6096
%28 = load double*, double** %27, align 8, !dbg !6096
%29 = load i32, i32* %3, align 4, !dbg !6097
%30 = zext i32 %29 to i64, !dbg !6095
%31 = getelementptr inbounds double, double* %28, i64 %30, !dbg !6095
%32 = load double, double* %31, align 8, !dbg !6095
%33 = fcmp ogt double %25, %32, !dbg !6098
br i1 %33, label %34, label %42, !dbg !6099
34: ; preds = %24
%35 = load %struct.Vector_t*, %struct.Vector_t** %2, align 8, !dbg !6100
%36 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %35, i32 0, i32 1, !dbg !6101
%37 = load double*, double** %36, align 8, !dbg !6101
%38 = load i32, i32* %3, align 4, !dbg !6102
%39 = zext i32 %38 to i64, !dbg !6100
%40 = getelementptr inbounds double, double* %37, i64 %39, !dbg !6100
%41 = load double, double* %40, align 8, !dbg !6100
store double %41, double* %4, align 8, !dbg !6103
br label %42, !dbg !6104
42: ; preds = %34, %24
br label %43, !dbg !6105
43: ; preds = %42
%44 = load i32, i32* %3, align 4, !dbg !6106
%45 = add i32 %44, 1, !dbg !6106
store i32 %45, i32* %3, align 4, !dbg !6106
br label %18, !dbg !6107, !llvm.loop !6108
46: ; preds = %18
%47 = load double, double* %4, align 8, !dbg !6110
ret double %47, !dbg !6111
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @matrixGet(%struct.Matrix_t* %0, i32 %1, i32 %2) #0 !dbg !6112 {
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !6117, metadata !DIExpression()), !dbg !6118
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !6119, metadata !DIExpression()), !dbg !6120
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !6121, metadata !DIExpression()), !dbg !6122
%7 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6123
%8 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %7, i32 0, i32 2, !dbg !6123
%9 = load double*, double** %8, align 8, !dbg !6123
%10 = load i32, i32* %5, align 4, !dbg !6123
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6123
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 1, !dbg !6123
%13 = load i32, i32* %12, align 4, !dbg !6123
%14 = mul i32 %10, %13, !dbg !6123
%15 = load i32, i32* %6, align 4, !dbg !6123
%16 = add i32 %14, %15, !dbg !6123
%17 = zext i32 %16 to i64, !dbg !6123
%18 = getelementptr inbounds double, double* %9, i64 %17, !dbg !6123
%19 = load double, double* %18, align 8, !dbg !6123
ret double %19, !dbg !6124
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSet(%struct.Matrix_t* %0, i32 %1, i32 %2, double %3) #0 !dbg !6125 {
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6128, metadata !DIExpression()), !dbg !6129
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !6130, metadata !DIExpression()), !dbg !6131
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !6132, metadata !DIExpression()), !dbg !6133
store double %3, double* %8, align 8
call void @llvm.dbg.declare(metadata double* %8, metadata !6134, metadata !DIExpression()), !dbg !6135
%9 = load double, double* %8, align 8, !dbg !6136
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6137
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 2, !dbg !6137
%12 = load double*, double** %11, align 8, !dbg !6137
%13 = load i32, i32* %6, align 4, !dbg !6137
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6137
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !6137
%16 = load i32, i32* %15, align 4, !dbg !6137
%17 = mul i32 %13, %16, !dbg !6137
%18 = load i32, i32* %7, align 4, !dbg !6137
%19 = add i32 %17, %18, !dbg !6137
%20 = zext i32 %19 to i64, !dbg !6137
%21 = getelementptr inbounds double, double* %12, i64 %20, !dbg !6137
store double %9, double* %21, align 8, !dbg !6138
ret void, !dbg !6139
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixAddToElement(%struct.Matrix_t* %0, i32 %1, i32 %2, double %3) #0 !dbg !6140 {
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6141, metadata !DIExpression()), !dbg !6142
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !6143, metadata !DIExpression()), !dbg !6144
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !6145, metadata !DIExpression()), !dbg !6146
store double %3, double* %8, align 8
call void @llvm.dbg.declare(metadata double* %8, metadata !6147, metadata !DIExpression()), !dbg !6148
%9 = load double, double* %8, align 8, !dbg !6149
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6150
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 2, !dbg !6150
%12 = load double*, double** %11, align 8, !dbg !6150
%13 = load i32, i32* %6, align 4, !dbg !6150
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6150
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !6150
%16 = load i32, i32* %15, align 4, !dbg !6150
%17 = mul i32 %13, %16, !dbg !6150
%18 = load i32, i32* %7, align 4, !dbg !6150
%19 = add i32 %17, %18, !dbg !6150
%20 = zext i32 %19 to i64, !dbg !6150
%21 = getelementptr inbounds double, double* %12, i64 %20, !dbg !6150
%22 = load double, double* %21, align 8, !dbg !6151
%23 = fadd double %22, %9, !dbg !6151
store double %23, double* %21, align 8, !dbg !6151
ret void, !dbg !6152
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Matrix_t* @matrixAllocate(i32 %0, i32 %1) #0 !dbg !6153 {
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i8*, align 8
store i32 %0, i32* %3, align 4
call void @llvm.dbg.declare(metadata i32* %3, metadata !6156, metadata !DIExpression()), !dbg !6157
store i32 %1, i32* %4, align 4
call void @llvm.dbg.declare(metadata i32* %4, metadata !6158, metadata !DIExpression()), !dbg !6159
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6160, metadata !DIExpression()), !dbg !6161
%7 = load i32, i32* %3, align 4, !dbg !6162
%8 = zext i32 %7 to i64, !dbg !6162
%9 = mul i64 8, %8, !dbg !6163
%10 = load i32, i32* %4, align 4, !dbg !6164
%11 = zext i32 %10 to i64, !dbg !6164
%12 = mul i64 %9, %11, !dbg !6165
%13 = add i64 16, %12, !dbg !6166
%14 = call noalias i8* @malloc(i64 %13) #7, !dbg !6167
%15 = bitcast i8* %14 to %struct.Matrix_t*, !dbg !6168
store %struct.Matrix_t* %15, %struct.Matrix_t** %5, align 8, !dbg !6161
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6169
%17 = icmp ne %struct.Matrix_t* %16, null, !dbg !6169
br i1 %17, label %18, label %34, !dbg !6171
18: ; preds = %2
call void @llvm.dbg.declare(metadata i8** %6, metadata !6172, metadata !DIExpression()), !dbg !6174
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6175
%20 = bitcast %struct.Matrix_t* %19 to i8*, !dbg !6176
store i8* %20, i8** %6, align 8, !dbg !6174
%21 = load i8*, i8** %6, align 8, !dbg !6177
%22 = getelementptr inbounds i8, i8* %21, i64 16, !dbg !6177
store i8* %22, i8** %6, align 8, !dbg !6177
%23 = load i8*, i8** %6, align 8, !dbg !6178
%24 = bitcast i8* %23 to double*, !dbg !6179
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6180
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 2, !dbg !6181
store double* %24, double** %26, align 8, !dbg !6182
%27 = load i32, i32* %4, align 4, !dbg !6183
%28 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6184
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %28, i32 0, i32 1, !dbg !6185
store i32 %27, i32* %29, align 4, !dbg !6186
%30 = load i32, i32* %3, align 4, !dbg !6187
%31 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6188
%32 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %31, i32 0, i32 0, !dbg !6189
store i32 %30, i32* %32, align 8, !dbg !6190
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6191
call void @matrixZero(%struct.Matrix_t* %33), !dbg !6192
br label %34, !dbg !6193
34: ; preds = %18, %2
%35 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6194
ret %struct.Matrix_t* %35, !dbg !6195
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixZero(%struct.Matrix_t* %0) #0 !dbg !6196 {
%2 = alloca %struct.Matrix_t*, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !6199, metadata !DIExpression()), !dbg !6200
%3 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6201
%4 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %3, i32 0, i32 2, !dbg !6202
%5 = load double*, double** %4, align 8, !dbg !6202
%6 = bitcast double* %5 to i8*, !dbg !6203
%7 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6204
%8 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %7, i32 0, i32 1, !dbg !6205
%9 = load i32, i32* %8, align 4, !dbg !6205
%10 = zext i32 %9 to i64, !dbg !6204
%11 = mul i64 8, %10, !dbg !6206
%12 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6207
%13 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %12, i32 0, i32 0, !dbg !6208
%14 = load i32, i32* %13, align 8, !dbg !6208
%15 = zext i32 %14 to i64, !dbg !6207
%16 = mul i64 %11, %15, !dbg !6209
call void @llvm.memset.p0i8.i64(i8* align 8 %6, i8 0, i64 %16, i1 false), !dbg !6203
ret void, !dbg !6210
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Matrix_t* @matrixChangeAllocateSize(%struct.Matrix_t* %0, i32 %1, i32 %2, double %3) #0 !dbg !6211 {
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
%9 = alloca %struct.Matrix_t*, align 8
%10 = alloca i8*, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6214, metadata !DIExpression()), !dbg !6215
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !6216, metadata !DIExpression()), !dbg !6217
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !6218, metadata !DIExpression()), !dbg !6219
store double %3, double* %8, align 8
call void @llvm.dbg.declare(metadata double* %8, metadata !6220, metadata !DIExpression()), !dbg !6221
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %9, metadata !6222, metadata !DIExpression()), !dbg !6223
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6224
%12 = bitcast %struct.Matrix_t* %11 to i8*, !dbg !6224
%13 = load i32, i32* %6, align 4, !dbg !6225
%14 = zext i32 %13 to i64, !dbg !6225
%15 = mul i64 8, %14, !dbg !6226
%16 = load i32, i32* %7, align 4, !dbg !6227
%17 = zext i32 %16 to i64, !dbg !6227
%18 = mul i64 %15, %17, !dbg !6228
%19 = add i64 16, %18, !dbg !6229
%20 = call i8* @realloc(i8* %12, i64 %19) #7, !dbg !6230
%21 = bitcast i8* %20 to %struct.Matrix_t*, !dbg !6231
store %struct.Matrix_t* %21, %struct.Matrix_t** %9, align 8, !dbg !6223
%22 = load %struct.Matrix_t*, %struct.Matrix_t** %9, align 8, !dbg !6232
%23 = icmp ne %struct.Matrix_t* %22, null, !dbg !6232
br i1 %23, label %24, label %37, !dbg !6234
24: ; preds = %4
call void @llvm.dbg.declare(metadata i8** %10, metadata !6235, metadata !DIExpression()), !dbg !6237
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %9, align 8, !dbg !6238
%26 = bitcast %struct.Matrix_t* %25 to i8*, !dbg !6239
store i8* %26, i8** %10, align 8, !dbg !6237
%27 = load i8*, i8** %10, align 8, !dbg !6240
%28 = getelementptr inbounds i8, i8* %27, i64 16, !dbg !6240
store i8* %28, i8** %10, align 8, !dbg !6240
%29 = load i8*, i8** %10, align 8, !dbg !6241
%30 = bitcast i8* %29 to double*, !dbg !6242
%31 = load %struct.Matrix_t*, %struct.Matrix_t** %9, align 8, !dbg !6243
%32 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %31, i32 0, i32 2, !dbg !6244
store double* %30, double** %32, align 8, !dbg !6245
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %9, align 8, !dbg !6246
%34 = load i32, i32* %6, align 4, !dbg !6247
%35 = load i32, i32* %7, align 4, !dbg !6248
%36 = load double, double* %8, align 8, !dbg !6249
call void @matrixChangeSize(%struct.Matrix_t* %33, i32 %34, i32 %35, double %36), !dbg !6250
br label %37, !dbg !6251
37: ; preds = %24, %4
%38 = load %struct.Matrix_t*, %struct.Matrix_t** %9, align 8, !dbg !6252
ret %struct.Matrix_t* %38, !dbg !6253
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixChangeSize(%struct.Matrix_t* %0, i32 %1, i32 %2, double %3) #0 !dbg !6254 {
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
%9 = alloca %struct.Matrix_t, align 8
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca i32, align 4
%14 = alloca i32, align 4
%15 = alloca i32, align 4
%16 = alloca i32, align 4
%17 = alloca i32, align 4
%18 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6255, metadata !DIExpression()), !dbg !6256
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !6257, metadata !DIExpression()), !dbg !6258
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !6259, metadata !DIExpression()), !dbg !6260
store double %3, double* %8, align 8
call void @llvm.dbg.declare(metadata double* %8, metadata !6261, metadata !DIExpression()), !dbg !6262
call void @llvm.dbg.declare(metadata %struct.Matrix_t* %9, metadata !6263, metadata !DIExpression()), !dbg !6264
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6265
%20 = bitcast %struct.Matrix_t* %9 to i8*, !dbg !6266
%21 = bitcast %struct.Matrix_t* %19 to i8*, !dbg !6266
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false), !dbg !6266
%22 = load i32, i32* %7, align 4, !dbg !6267
%23 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6268
store i32 %22, i32* %23, align 4, !dbg !6269
%24 = load i32, i32* %6, align 4, !dbg !6270
%25 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6271
store i32 %24, i32* %25, align 8, !dbg !6272
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6273
%27 = load i32, i32* %26, align 4, !dbg !6273
%28 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6275
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %28, i32 0, i32 1, !dbg !6276
%30 = load i32, i32* %29, align 4, !dbg !6276
%31 = icmp ugt i32 %27, %30, !dbg !6277
br i1 %31, label %32, label %135, !dbg !6278
32: ; preds = %4
call void @llvm.dbg.declare(metadata i32* %10, metadata !6279, metadata !DIExpression()), !dbg !6281
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6282
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 0, !dbg !6283
%35 = load i32, i32* %34, align 8, !dbg !6283
%36 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6284
%37 = load i32, i32* %36, align 8, !dbg !6284
%38 = icmp ult i32 %35, %37, !dbg !6285
br i1 %38, label %39, label %43, !dbg !6286
39: ; preds = %32
%40 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6287
%41 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %40, i32 0, i32 0, !dbg !6288
%42 = load i32, i32* %41, align 8, !dbg !6288
br label %46, !dbg !6286
43: ; preds = %32
%44 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6289
%45 = load i32, i32* %44, align 8, !dbg !6289
br label %46, !dbg !6286
46: ; preds = %43, %39
%47 = phi i32 [ %42, %39 ], [ %45, %43 ], !dbg !6286
store i32 %47, i32* %10, align 4, !dbg !6281
call void @llvm.dbg.declare(metadata i32* %11, metadata !6290, metadata !DIExpression()), !dbg !6291
call void @llvm.dbg.declare(metadata i32* %12, metadata !6292, metadata !DIExpression()), !dbg !6293
%48 = load i32, i32* %10, align 4, !dbg !6294
%49 = sub i32 %48, 1, !dbg !6296
store i32 %49, i32* %11, align 4, !dbg !6297
br label %50, !dbg !6298
50: ; preds = %107, %46
%51 = load i32, i32* %11, align 4, !dbg !6299
%52 = icmp sgt i32 %51, 0, !dbg !6301
br i1 %52, label %53, label %110, !dbg !6302
53: ; preds = %50
%54 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6303
%55 = load i32, i32* %54, align 4, !dbg !6303
%56 = sub i32 %55, 1, !dbg !6306
store i32 %56, i32* %12, align 4, !dbg !6307
br label %57, !dbg !6308
57: ; preds = %103, %53
%58 = load i32, i32* %12, align 4, !dbg !6309
%59 = icmp sge i32 %58, 0, !dbg !6311
br i1 %59, label %60, label %106, !dbg !6312
60: ; preds = %57
%61 = load i32, i32* %12, align 4, !dbg !6313
%62 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6316
%63 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %62, i32 0, i32 1, !dbg !6317
%64 = load i32, i32* %63, align 4, !dbg !6317
%65 = icmp sge i32 %61, %64, !dbg !6318
br i1 %65, label %66, label %78, !dbg !6319
66: ; preds = %60
%67 = load double, double* %8, align 8, !dbg !6320
%68 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6320
%69 = load double*, double** %68, align 8, !dbg !6320
%70 = load i32, i32* %11, align 4, !dbg !6320
%71 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6320
%72 = load i32, i32* %71, align 4, !dbg !6320
%73 = mul i32 %70, %72, !dbg !6320
%74 = load i32, i32* %12, align 4, !dbg !6320
%75 = add i32 %73, %74, !dbg !6320
%76 = zext i32 %75 to i64, !dbg !6320
%77 = getelementptr inbounds double, double* %69, i64 %76, !dbg !6320
store double %67, double* %77, align 8, !dbg !6320
br label %102, !dbg !6320
78: ; preds = %60
%79 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6321
%80 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %79, i32 0, i32 2, !dbg !6321
%81 = load double*, double** %80, align 8, !dbg !6321
%82 = load i32, i32* %11, align 4, !dbg !6321
%83 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6321
%84 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %83, i32 0, i32 1, !dbg !6321
%85 = load i32, i32* %84, align 4, !dbg !6321
%86 = mul i32 %82, %85, !dbg !6321
%87 = load i32, i32* %12, align 4, !dbg !6321
%88 = add i32 %86, %87, !dbg !6321
%89 = zext i32 %88 to i64, !dbg !6321
%90 = getelementptr inbounds double, double* %81, i64 %89, !dbg !6321
%91 = load double, double* %90, align 8, !dbg !6321
%92 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6321
%93 = load double*, double** %92, align 8, !dbg !6321
%94 = load i32, i32* %11, align 4, !dbg !6321
%95 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6321
%96 = load i32, i32* %95, align 4, !dbg !6321
%97 = mul i32 %94, %96, !dbg !6321
%98 = load i32, i32* %12, align 4, !dbg !6321
%99 = add i32 %97, %98, !dbg !6321
%100 = zext i32 %99 to i64, !dbg !6321
%101 = getelementptr inbounds double, double* %93, i64 %100, !dbg !6321
store double %91, double* %101, align 8, !dbg !6321
br label %102
102: ; preds = %78, %66
br label %103, !dbg !6322
103: ; preds = %102
%104 = load i32, i32* %12, align 4, !dbg !6323
%105 = add nsw i32 %104, -1, !dbg !6323
store i32 %105, i32* %12, align 4, !dbg !6323
br label %57, !dbg !6324, !llvm.loop !6325
106: ; preds = %57
br label %107, !dbg !6327
107: ; preds = %106
%108 = load i32, i32* %11, align 4, !dbg !6328
%109 = add nsw i32 %108, -1, !dbg !6328
store i32 %109, i32* %11, align 4, !dbg !6328
br label %50, !dbg !6329, !llvm.loop !6330
110: ; preds = %50
%111 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6332
%112 = load i32, i32* %111, align 4, !dbg !6332
%113 = sub i32 %112, 1, !dbg !6334
store i32 %113, i32* %12, align 4, !dbg !6335
br label %114, !dbg !6336
114: ; preds = %131, %110
%115 = load i32, i32* %12, align 4, !dbg !6337
%116 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6339
%117 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %116, i32 0, i32 1, !dbg !6340
%118 = load i32, i32* %117, align 4, !dbg !6340
%119 = icmp sge i32 %115, %118, !dbg !6341
br i1 %119, label %120, label %134, !dbg !6342
120: ; preds = %114
%121 = load double, double* %8, align 8, !dbg !6343
%122 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6343
%123 = load double*, double** %122, align 8, !dbg !6343
%124 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6343
%125 = load i32, i32* %124, align 4, !dbg !6343
%126 = mul i32 0, %125, !dbg !6343
%127 = load i32, i32* %12, align 4, !dbg !6343
%128 = add i32 %126, %127, !dbg !6343
%129 = zext i32 %128 to i64, !dbg !6343
%130 = getelementptr inbounds double, double* %123, i64 %129, !dbg !6343
store double %121, double* %130, align 8, !dbg !6343
br label %131, !dbg !6343
131: ; preds = %120
%132 = load i32, i32* %12, align 4, !dbg !6344
%133 = add nsw i32 %132, -1, !dbg !6344
store i32 %133, i32* %12, align 4, !dbg !6344
br label %114, !dbg !6345, !llvm.loop !6346
134: ; preds = %114
br label %201, !dbg !6348
135: ; preds = %4
%136 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6349
%137 = load i32, i32* %136, align 4, !dbg !6349
%138 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6351
%139 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %138, i32 0, i32 1, !dbg !6352
%140 = load i32, i32* %139, align 4, !dbg !6352
%141 = icmp ult i32 %137, %140, !dbg !6353
br i1 %141, label %142, label %200, !dbg !6354
142: ; preds = %135
call void @llvm.dbg.declare(metadata i32* %13, metadata !6355, metadata !DIExpression()), !dbg !6357
%143 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6358
%144 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %143, i32 0, i32 0, !dbg !6359
%145 = load i32, i32* %144, align 8, !dbg !6359
%146 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6360
%147 = load i32, i32* %146, align 8, !dbg !6360
%148 = icmp ult i32 %145, %147, !dbg !6361
br i1 %148, label %149, label %153, !dbg !6362
149: ; preds = %142
%150 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6363
%151 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %150, i32 0, i32 0, !dbg !6364
%152 = load i32, i32* %151, align 8, !dbg !6364
br label %156, !dbg !6362
153: ; preds = %142
%154 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6365
%155 = load i32, i32* %154, align 8, !dbg !6365
br label %156, !dbg !6362
156: ; preds = %153, %149
%157 = phi i32 [ %152, %149 ], [ %155, %153 ], !dbg !6362
store i32 %157, i32* %13, align 4, !dbg !6357
call void @llvm.dbg.declare(metadata i32* %14, metadata !6366, metadata !DIExpression()), !dbg !6367
call void @llvm.dbg.declare(metadata i32* %15, metadata !6368, metadata !DIExpression()), !dbg !6369
store i32 1, i32* %14, align 4, !dbg !6370
br label %158, !dbg !6372
158: ; preds = %196, %156
%159 = load i32, i32* %14, align 4, !dbg !6373
%160 = load i32, i32* %13, align 4, !dbg !6375
%161 = icmp ult i32 %159, %160, !dbg !6376
br i1 %161, label %162, label %199, !dbg !6377
162: ; preds = %158
store i32 0, i32* %15, align 4, !dbg !6378
br label %163, !dbg !6381
163: ; preds = %192, %162
%164 = load i32, i32* %15, align 4, !dbg !6382
%165 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6384
%166 = load i32, i32* %165, align 4, !dbg !6384
%167 = icmp ult i32 %164, %166, !dbg !6385
br i1 %167, label %168, label %195, !dbg !6386
168: ; preds = %163
%169 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6387
%170 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %169, i32 0, i32 2, !dbg !6387
%171 = load double*, double** %170, align 8, !dbg !6387
%172 = load i32, i32* %14, align 4, !dbg !6387
%173 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6387
%174 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %173, i32 0, i32 1, !dbg !6387
%175 = load i32, i32* %174, align 4, !dbg !6387
%176 = mul i32 %172, %175, !dbg !6387
%177 = load i32, i32* %15, align 4, !dbg !6387
%178 = add i32 %176, %177, !dbg !6387
%179 = zext i32 %178 to i64, !dbg !6387
%180 = getelementptr inbounds double, double* %171, i64 %179, !dbg !6387
%181 = load double, double* %180, align 8, !dbg !6387
%182 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6387
%183 = load double*, double** %182, align 8, !dbg !6387
%184 = load i32, i32* %14, align 4, !dbg !6387
%185 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6387
%186 = load i32, i32* %185, align 4, !dbg !6387
%187 = mul i32 %184, %186, !dbg !6387
%188 = load i32, i32* %15, align 4, !dbg !6387
%189 = add i32 %187, %188, !dbg !6387
%190 = zext i32 %189 to i64, !dbg !6387
%191 = getelementptr inbounds double, double* %183, i64 %190, !dbg !6387
store double %181, double* %191, align 8, !dbg !6387
br label %192, !dbg !6387
192: ; preds = %168
%193 = load i32, i32* %15, align 4, !dbg !6388
%194 = add i32 %193, 1, !dbg !6388
store i32 %194, i32* %15, align 4, !dbg !6388
br label %163, !dbg !6389, !llvm.loop !6390
195: ; preds = %163
br label %196, !dbg !6392
196: ; preds = %195
%197 = load i32, i32* %14, align 4, !dbg !6393
%198 = add i32 %197, 1, !dbg !6393
store i32 %198, i32* %14, align 4, !dbg !6393
br label %158, !dbg !6394, !llvm.loop !6395
199: ; preds = %158
br label %200, !dbg !6397
200: ; preds = %199, %135
br label %201
201: ; preds = %200, %134
call void @llvm.dbg.declare(metadata i32* %16, metadata !6398, metadata !DIExpression()), !dbg !6399
call void @llvm.dbg.declare(metadata i32* %17, metadata !6400, metadata !DIExpression()), !dbg !6401
call void @llvm.dbg.declare(metadata i32* %18, metadata !6402, metadata !DIExpression()), !dbg !6403
%202 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6404
%203 = load i32, i32* %202, align 8, !dbg !6404
%204 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6406
%205 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %204, i32 0, i32 0, !dbg !6407
%206 = load i32, i32* %205, align 8, !dbg !6407
%207 = icmp ugt i32 %203, %206, !dbg !6408
br i1 %207, label %208, label %243, !dbg !6409
208: ; preds = %201
%209 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6410
%210 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %209, i32 0, i32 0, !dbg !6413
%211 = load i32, i32* %210, align 8, !dbg !6413
store i32 %211, i32* %16, align 4, !dbg !6414
br label %212, !dbg !6415
212: ; preds = %239, %208
%213 = load i32, i32* %16, align 4, !dbg !6416
%214 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6418
%215 = load i32, i32* %214, align 8, !dbg !6418
%216 = icmp ult i32 %213, %215, !dbg !6419
br i1 %216, label %217, label %242, !dbg !6420
217: ; preds = %212
store i32 0, i32* %17, align 4, !dbg !6421
br label %218, !dbg !6423
218: ; preds = %235, %217
%219 = load i32, i32* %17, align 4, !dbg !6424
%220 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6426
%221 = load i32, i32* %220, align 4, !dbg !6426
%222 = icmp ult i32 %219, %221, !dbg !6427
br i1 %222, label %223, label %238, !dbg !6428
223: ; preds = %218
%224 = load double, double* %8, align 8, !dbg !6429
%225 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6429
%226 = load double*, double** %225, align 8, !dbg !6429
%227 = load i32, i32* %16, align 4, !dbg !6429
%228 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6429
%229 = load i32, i32* %228, align 4, !dbg !6429
%230 = mul i32 %227, %229, !dbg !6429
%231 = load i32, i32* %17, align 4, !dbg !6429
%232 = add i32 %230, %231, !dbg !6429
%233 = zext i32 %232 to i64, !dbg !6429
%234 = getelementptr inbounds double, double* %226, i64 %233, !dbg !6429
store double %224, double* %234, align 8, !dbg !6429
br label %235, !dbg !6429
235: ; preds = %223
%236 = load i32, i32* %17, align 4, !dbg !6430
%237 = add i32 %236, 1, !dbg !6430
store i32 %237, i32* %17, align 4, !dbg !6430
br label %218, !dbg !6431, !llvm.loop !6432
238: ; preds = %218
br label %239, !dbg !6433
239: ; preds = %238
%240 = load i32, i32* %16, align 4, !dbg !6434
%241 = add i32 %240, 1, !dbg !6434
store i32 %241, i32* %16, align 4, !dbg !6434
br label %212, !dbg !6435, !llvm.loop !6436
242: ; preds = %212
br label %243, !dbg !6438
243: ; preds = %242, %201
%244 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6439
%245 = load i32, i32* %244, align 8, !dbg !6439
%246 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6441
%247 = load i32, i32* %246, align 4, !dbg !6441
%248 = mul i32 %245, %247, !dbg !6442
%249 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6443
%250 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %249, i32 0, i32 0, !dbg !6444
%251 = load i32, i32* %250, align 8, !dbg !6444
%252 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6445
%253 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %252, i32 0, i32 1, !dbg !6446
%254 = load i32, i32* %253, align 4, !dbg !6446
%255 = mul i32 %251, %254, !dbg !6447
%256 = icmp ult i32 %248, %255, !dbg !6448
br i1 %256, label %257, label %284, !dbg !6449
257: ; preds = %243
%258 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6450
%259 = load i32, i32* %258, align 8, !dbg !6450
%260 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6453
%261 = load i32, i32* %260, align 4, !dbg !6453
%262 = mul i32 %259, %261, !dbg !6454
store i32 %262, i32* %18, align 4, !dbg !6455
br label %263, !dbg !6456
263: ; preds = %280, %257
%264 = load i32, i32* %18, align 4, !dbg !6457
%265 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6459
%266 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %265, i32 0, i32 0, !dbg !6460
%267 = load i32, i32* %266, align 8, !dbg !6460
%268 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6461
%269 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %268, i32 0, i32 1, !dbg !6462
%270 = load i32, i32* %269, align 4, !dbg !6462
%271 = mul i32 %267, %270, !dbg !6463
%272 = icmp ult i32 %264, %271, !dbg !6464
br i1 %272, label %273, label %283, !dbg !6465
273: ; preds = %263
%274 = load double, double* %8, align 8, !dbg !6466
%275 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 2, !dbg !6467
%276 = load double*, double** %275, align 8, !dbg !6467
%277 = load i32, i32* %18, align 4, !dbg !6468
%278 = zext i32 %277 to i64, !dbg !6469
%279 = getelementptr inbounds double, double* %276, i64 %278, !dbg !6469
store double %274, double* %279, align 8, !dbg !6470
br label %280, !dbg !6469
280: ; preds = %273
%281 = load i32, i32* %18, align 4, !dbg !6471
%282 = add i32 %281, 1, !dbg !6471
store i32 %282, i32* %18, align 4, !dbg !6471
br label %263, !dbg !6472, !llvm.loop !6473
283: ; preds = %263
br label %284, !dbg !6475
284: ; preds = %283, %243
%285 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6476
%286 = bitcast %struct.Matrix_t* %285 to i8*, !dbg !6477
%287 = bitcast %struct.Matrix_t* %9 to i8*, !dbg !6477
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %286, i8* align 8 %287, i64 16, i1 false), !dbg !6477
ret void, !dbg !6478
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetIdentity(%struct.Matrix_t* %0) #0 !dbg !6479 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !6480, metadata !DIExpression()), !dbg !6481
call void @llvm.dbg.declare(metadata i32* %3, metadata !6482, metadata !DIExpression()), !dbg !6483
call void @llvm.dbg.declare(metadata i32* %4, metadata !6484, metadata !DIExpression()), !dbg !6485
store i32 0, i32* %3, align 4, !dbg !6486
br label %5, !dbg !6488
5: ; preds = %53, %1
%6 = load i32, i32* %3, align 4, !dbg !6489
%7 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6491
%8 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %7, i32 0, i32 0, !dbg !6492
%9 = load i32, i32* %8, align 8, !dbg !6492
%10 = icmp ult i32 %6, %9, !dbg !6493
br i1 %10, label %11, label %56, !dbg !6494
11: ; preds = %5
store i32 0, i32* %4, align 4, !dbg !6495
br label %12, !dbg !6498
12: ; preds = %49, %11
%13 = load i32, i32* %4, align 4, !dbg !6499
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6501
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !6502
%16 = load i32, i32* %15, align 4, !dbg !6502
%17 = icmp ult i32 %13, %16, !dbg !6503
br i1 %17, label %18, label %52, !dbg !6504
18: ; preds = %12
%19 = load i32, i32* %3, align 4, !dbg !6505
%20 = load i32, i32* %4, align 4, !dbg !6508
%21 = icmp eq i32 %19, %20, !dbg !6509
br i1 %21, label %22, label %35, !dbg !6510
22: ; preds = %18
%23 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6511
%24 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 2, !dbg !6511
%25 = load double*, double** %24, align 8, !dbg !6511
%26 = load i32, i32* %3, align 4, !dbg !6511
%27 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6511
%28 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %27, i32 0, i32 1, !dbg !6511
%29 = load i32, i32* %28, align 4, !dbg !6511
%30 = mul i32 %26, %29, !dbg !6511
%31 = load i32, i32* %4, align 4, !dbg !6511
%32 = add i32 %30, %31, !dbg !6511
%33 = zext i32 %32 to i64, !dbg !6511
%34 = getelementptr inbounds double, double* %25, i64 %33, !dbg !6511
store double 1.000000e+00, double* %34, align 8, !dbg !6511
br label %48, !dbg !6511
35: ; preds = %18
%36 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6512
%37 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %36, i32 0, i32 2, !dbg !6512
%38 = load double*, double** %37, align 8, !dbg !6512
%39 = load i32, i32* %3, align 4, !dbg !6512
%40 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !6512
%41 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %40, i32 0, i32 1, !dbg !6512
%42 = load i32, i32* %41, align 4, !dbg !6512
%43 = mul i32 %39, %42, !dbg !6512
%44 = load i32, i32* %4, align 4, !dbg !6512
%45 = add i32 %43, %44, !dbg !6512
%46 = zext i32 %45 to i64, !dbg !6512
%47 = getelementptr inbounds double, double* %38, i64 %46, !dbg !6512
store double 0.000000e+00, double* %47, align 8, !dbg !6512
br label %48
48: ; preds = %35, %22
br label %49, !dbg !6513
49: ; preds = %48
%50 = load i32, i32* %4, align 4, !dbg !6514
%51 = add i32 %50, 1, !dbg !6514
store i32 %51, i32* %4, align 4, !dbg !6514
br label %12, !dbg !6515, !llvm.loop !6516
52: ; preds = %12
br label %53, !dbg !6518
53: ; preds = %52
%54 = load i32, i32* %3, align 4, !dbg !6519
%55 = add i32 %54, 1, !dbg !6519
store i32 %55, i32* %3, align 4, !dbg !6519
br label %5, !dbg !6520, !llvm.loop !6521
56: ; preds = %5
ret void, !dbg !6523
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixCopy(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !6524 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !6527, metadata !DIExpression()), !dbg !6528
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6529, metadata !DIExpression()), !dbg !6530
call void @llvm.dbg.declare(metadata i32* %6, metadata !6531, metadata !DIExpression()), !dbg !6532
%7 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6533
%8 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %7, i32 0, i32 1, !dbg !6535
%9 = load i32, i32* %8, align 4, !dbg !6535
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6536
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 1, !dbg !6537
%12 = load i32, i32* %11, align 4, !dbg !6537
%13 = icmp eq i32 %9, %12, !dbg !6538
br i1 %13, label %14, label %51, !dbg !6539
14: ; preds = %2
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6540
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 0, !dbg !6541
%17 = load i32, i32* %16, align 8, !dbg !6541
%18 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6542
%19 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %18, i32 0, i32 0, !dbg !6543
%20 = load i32, i32* %19, align 8, !dbg !6543
%21 = icmp eq i32 %17, %20, !dbg !6544
br i1 %21, label %22, label %51, !dbg !6545
22: ; preds = %14
store i32 0, i32* %6, align 4, !dbg !6546
br label %23, !dbg !6549
23: ; preds = %47, %22
%24 = load i32, i32* %6, align 4, !dbg !6550
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6552
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 1, !dbg !6553
%27 = load i32, i32* %26, align 4, !dbg !6553
%28 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6554
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %28, i32 0, i32 0, !dbg !6555
%30 = load i32, i32* %29, align 8, !dbg !6555
%31 = mul i32 %27, %30, !dbg !6556
%32 = icmp ult i32 %24, %31, !dbg !6557
br i1 %32, label %33, label %50, !dbg !6558
33: ; preds = %23
%34 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6559
%35 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %34, i32 0, i32 2, !dbg !6560
%36 = load double*, double** %35, align 8, !dbg !6560
%37 = load i32, i32* %6, align 4, !dbg !6561
%38 = zext i32 %37 to i64, !dbg !6559
%39 = getelementptr inbounds double, double* %36, i64 %38, !dbg !6559
%40 = load double, double* %39, align 8, !dbg !6559
%41 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6562
%42 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %41, i32 0, i32 2, !dbg !6563
%43 = load double*, double** %42, align 8, !dbg !6563
%44 = load i32, i32* %6, align 4, !dbg !6564
%45 = zext i32 %44 to i64, !dbg !6562
%46 = getelementptr inbounds double, double* %43, i64 %45, !dbg !6562
store double %40, double* %46, align 8, !dbg !6565
br label %47, !dbg !6562
47: ; preds = %33
%48 = load i32, i32* %6, align 4, !dbg !6566
%49 = add i32 %48, 1, !dbg !6566
store i32 %49, i32* %6, align 4, !dbg !6566
br label %23, !dbg !6567, !llvm.loop !6568
50: ; preds = %23
store i64 1, i64* %3, align 8, !dbg !6570
br label %52, !dbg !6570
51: ; preds = %14, %2
store i64 0, i64* %3, align 8, !dbg !6571
br label %52, !dbg !6571
52: ; preds = %51, %50
%53 = load i64, i64* %3, align 8, !dbg !6572
ret i64 %53, !dbg !6572
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetRow(%struct.Matrix_t* %0, i32 %1, double %2) #0 !dbg !6573 {
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
%7 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !6576, metadata !DIExpression()), !dbg !6577
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !6578, metadata !DIExpression()), !dbg !6579
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !6580, metadata !DIExpression()), !dbg !6581
%8 = load i32, i32* %5, align 4, !dbg !6582
%9 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6584
%10 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 0, !dbg !6585
%11 = load i32, i32* %10, align 8, !dbg !6585
%12 = icmp ult i32 %8, %11, !dbg !6586
br i1 %12, label %13, label %38, !dbg !6587
13: ; preds = %3
call void @llvm.dbg.declare(metadata i32* %7, metadata !6588, metadata !DIExpression()), !dbg !6590
store i32 0, i32* %7, align 4, !dbg !6591
br label %14, !dbg !6593
14: ; preds = %34, %13
%15 = load i32, i32* %7, align 4, !dbg !6594
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6596
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 1, !dbg !6597
%18 = load i32, i32* %17, align 4, !dbg !6597
%19 = icmp ult i32 %15, %18, !dbg !6598
br i1 %19, label %20, label %37, !dbg !6599
20: ; preds = %14
%21 = load double, double* %6, align 8, !dbg !6600
%22 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6600
%23 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %22, i32 0, i32 2, !dbg !6600
%24 = load double*, double** %23, align 8, !dbg !6600
%25 = load i32, i32* %5, align 4, !dbg !6600
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6600
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 1, !dbg !6600
%28 = load i32, i32* %27, align 4, !dbg !6600
%29 = mul i32 %25, %28, !dbg !6600
%30 = load i32, i32* %7, align 4, !dbg !6600
%31 = add i32 %29, %30, !dbg !6600
%32 = zext i32 %31 to i64, !dbg !6600
%33 = getelementptr inbounds double, double* %24, i64 %32, !dbg !6600
store double %21, double* %33, align 8, !dbg !6600
br label %34, !dbg !6600
34: ; preds = %20
%35 = load i32, i32* %7, align 4, !dbg !6601
%36 = add i32 %35, 1, !dbg !6601
store i32 %36, i32* %7, align 4, !dbg !6601
br label %14, !dbg !6602, !llvm.loop !6603
37: ; preds = %14
br label %38, !dbg !6605
38: ; preds = %37, %3
ret void, !dbg !6606
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetColumn(%struct.Matrix_t* %0, i32 %1, double %2) #0 !dbg !6607 {
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca i32, align 4
%6 = alloca double, align 8
%7 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !6608, metadata !DIExpression()), !dbg !6609
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !6610, metadata !DIExpression()), !dbg !6611
store double %2, double* %6, align 8
call void @llvm.dbg.declare(metadata double* %6, metadata !6612, metadata !DIExpression()), !dbg !6613
%8 = load i32, i32* %5, align 4, !dbg !6614
%9 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6616
%10 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !6617
%11 = load i32, i32* %10, align 4, !dbg !6617
%12 = icmp ult i32 %8, %11, !dbg !6618
br i1 %12, label %13, label %38, !dbg !6619
13: ; preds = %3
call void @llvm.dbg.declare(metadata i32* %7, metadata !6620, metadata !DIExpression()), !dbg !6622
store i32 0, i32* %7, align 4, !dbg !6623
br label %14, !dbg !6625
14: ; preds = %34, %13
%15 = load i32, i32* %7, align 4, !dbg !6626
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6628
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 0, !dbg !6629
%18 = load i32, i32* %17, align 8, !dbg !6629
%19 = icmp ult i32 %15, %18, !dbg !6630
br i1 %19, label %20, label %37, !dbg !6631
20: ; preds = %14
%21 = load double, double* %6, align 8, !dbg !6632
%22 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6632
%23 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %22, i32 0, i32 2, !dbg !6632
%24 = load double*, double** %23, align 8, !dbg !6632
%25 = load i32, i32* %7, align 4, !dbg !6632
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !6632
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 1, !dbg !6632
%28 = load i32, i32* %27, align 4, !dbg !6632
%29 = mul i32 %25, %28, !dbg !6632
%30 = load i32, i32* %5, align 4, !dbg !6632
%31 = add i32 %29, %30, !dbg !6632
%32 = zext i32 %31 to i64, !dbg !6632
%33 = getelementptr inbounds double, double* %24, i64 %32, !dbg !6632
store double %21, double* %33, align 8, !dbg !6632
br label %34, !dbg !6632
34: ; preds = %20
%35 = load i32, i32* %7, align 4, !dbg !6633
%36 = add i32 %35, 1, !dbg !6633
store i32 %36, i32* %7, align 4, !dbg !6633
br label %14, !dbg !6634, !llvm.loop !6635
37: ; preds = %14
br label %38, !dbg !6637
38: ; preds = %37, %3
ret void, !dbg !6638
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiply(%struct.Matrix_t* %0, %struct.Matrix_t* %1, %struct.Matrix_t* %2) #0 !dbg !6639 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Matrix_t*, align 8
%7 = alloca %struct.Matrix_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6642, metadata !DIExpression()), !dbg !6643
store %struct.Matrix_t* %1, %struct.Matrix_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %6, metadata !6644, metadata !DIExpression()), !dbg !6645
store %struct.Matrix_t* %2, %struct.Matrix_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %7, metadata !6646, metadata !DIExpression()), !dbg !6647
call void @llvm.dbg.declare(metadata i32* %8, metadata !6648, metadata !DIExpression()), !dbg !6649
call void @llvm.dbg.declare(metadata i32* %9, metadata !6650, metadata !DIExpression()), !dbg !6651
call void @llvm.dbg.declare(metadata i32* %10, metadata !6652, metadata !DIExpression()), !dbg !6653
%12 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6654
%13 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %12, i32 0, i32 1, !dbg !6656
%14 = load i32, i32* %13, align 4, !dbg !6656
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6657
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 0, !dbg !6658
%17 = load i32, i32* %16, align 8, !dbg !6658
%18 = icmp ne i32 %14, %17, !dbg !6659
br i1 %18, label %35, label %19, !dbg !6660
19: ; preds = %3
%20 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6661
%21 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %20, i32 0, i32 0, !dbg !6662
%22 = load i32, i32* %21, align 8, !dbg !6662
%23 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6663
%24 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 0, !dbg !6664
%25 = load i32, i32* %24, align 8, !dbg !6664
%26 = icmp ne i32 %22, %25, !dbg !6665
br i1 %26, label %35, label %27, !dbg !6666
27: ; preds = %19
%28 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6667
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %28, i32 0, i32 1, !dbg !6668
%30 = load i32, i32* %29, align 4, !dbg !6668
%31 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6669
%32 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %31, i32 0, i32 1, !dbg !6670
%33 = load i32, i32* %32, align 4, !dbg !6670
%34 = icmp ne i32 %30, %33, !dbg !6671
br i1 %34, label %35, label %36, !dbg !6672
35: ; preds = %27, %19, %3
store i64 0, i64* %4, align 8, !dbg !6673
br label %112, !dbg !6673
36: ; preds = %27
store i32 0, i32* %8, align 4, !dbg !6674
br label %37, !dbg !6676
37: ; preds = %108, %36
%38 = load i32, i32* %8, align 4, !dbg !6677
%39 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6679
%40 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %39, i32 0, i32 0, !dbg !6680
%41 = load i32, i32* %40, align 8, !dbg !6680
%42 = icmp ult i32 %38, %41, !dbg !6681
br i1 %42, label %43, label %111, !dbg !6682
43: ; preds = %37
store i32 0, i32* %9, align 4, !dbg !6683
br label %44, !dbg !6686
44: ; preds = %104, %43
%45 = load i32, i32* %9, align 4, !dbg !6687
%46 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6689
%47 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %46, i32 0, i32 1, !dbg !6690
%48 = load i32, i32* %47, align 4, !dbg !6690
%49 = icmp ult i32 %45, %48, !dbg !6691
br i1 %49, label %50, label %107, !dbg !6692
50: ; preds = %44
call void @llvm.dbg.declare(metadata double* %11, metadata !6693, metadata !DIExpression()), !dbg !6695
store double 0.000000e+00, double* %11, align 8, !dbg !6695
store i32 0, i32* %10, align 4, !dbg !6696
br label %51, !dbg !6698
51: ; preds = %87, %50
%52 = load i32, i32* %10, align 4, !dbg !6699
%53 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6701
%54 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %53, i32 0, i32 1, !dbg !6702
%55 = load i32, i32* %54, align 4, !dbg !6702
%56 = icmp ult i32 %52, %55, !dbg !6703
br i1 %56, label %57, label %90, !dbg !6704
57: ; preds = %51
%58 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6705
%59 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %58, i32 0, i32 2, !dbg !6705
%60 = load double*, double** %59, align 8, !dbg !6705
%61 = load i32, i32* %8, align 4, !dbg !6705
%62 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6705
%63 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %62, i32 0, i32 1, !dbg !6705
%64 = load i32, i32* %63, align 4, !dbg !6705
%65 = mul i32 %61, %64, !dbg !6705
%66 = load i32, i32* %10, align 4, !dbg !6705
%67 = add i32 %65, %66, !dbg !6705
%68 = zext i32 %67 to i64, !dbg !6705
%69 = getelementptr inbounds double, double* %60, i64 %68, !dbg !6705
%70 = load double, double* %69, align 8, !dbg !6705
%71 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6707
%72 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %71, i32 0, i32 2, !dbg !6707
%73 = load double*, double** %72, align 8, !dbg !6707
%74 = load i32, i32* %10, align 4, !dbg !6707
%75 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6707
%76 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %75, i32 0, i32 1, !dbg !6707
%77 = load i32, i32* %76, align 4, !dbg !6707
%78 = mul i32 %74, %77, !dbg !6707
%79 = load i32, i32* %9, align 4, !dbg !6707
%80 = add i32 %78, %79, !dbg !6707
%81 = zext i32 %80 to i64, !dbg !6707
%82 = getelementptr inbounds double, double* %73, i64 %81, !dbg !6707
%83 = load double, double* %82, align 8, !dbg !6707
%84 = fmul double %70, %83, !dbg !6708
%85 = load double, double* %11, align 8, !dbg !6709
%86 = fadd double %85, %84, !dbg !6709
store double %86, double* %11, align 8, !dbg !6709
br label %87, !dbg !6710
87: ; preds = %57
%88 = load i32, i32* %10, align 4, !dbg !6711
%89 = add i32 %88, 1, !dbg !6711
store i32 %89, i32* %10, align 4, !dbg !6711
br label %51, !dbg !6712, !llvm.loop !6713
90: ; preds = %51
%91 = load double, double* %11, align 8, !dbg !6715
%92 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6715
%93 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %92, i32 0, i32 2, !dbg !6715
%94 = load double*, double** %93, align 8, !dbg !6715
%95 = load i32, i32* %8, align 4, !dbg !6715
%96 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6715
%97 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %96, i32 0, i32 1, !dbg !6715
%98 = load i32, i32* %97, align 4, !dbg !6715
%99 = mul i32 %95, %98, !dbg !6715
%100 = load i32, i32* %9, align 4, !dbg !6715
%101 = add i32 %99, %100, !dbg !6715
%102 = zext i32 %101 to i64, !dbg !6715
%103 = getelementptr inbounds double, double* %94, i64 %102, !dbg !6715
store double %91, double* %103, align 8, !dbg !6715
br label %104, !dbg !6716
104: ; preds = %90
%105 = load i32, i32* %9, align 4, !dbg !6717
%106 = add i32 %105, 1, !dbg !6717
store i32 %106, i32* %9, align 4, !dbg !6717
br label %44, !dbg !6718, !llvm.loop !6719
107: ; preds = %44
br label %108, !dbg !6721
108: ; preds = %107
%109 = load i32, i32* %8, align 4, !dbg !6722
%110 = add i32 %109, 1, !dbg !6722
store i32 %110, i32* %8, align 4, !dbg !6722
br label %37, !dbg !6723, !llvm.loop !6724
111: ; preds = %37
store i64 1, i64* %4, align 8, !dbg !6726
br label %112, !dbg !6726
112: ; preds = %111, %35
%113 = load i64, i64* %4, align 8, !dbg !6727
ret i64 %113, !dbg !6727
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiplyTransA(%struct.Matrix_t* %0, %struct.Matrix_t* %1, %struct.Matrix_t* %2) #0 !dbg !6728 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Matrix_t*, align 8
%7 = alloca %struct.Matrix_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6729, metadata !DIExpression()), !dbg !6730
store %struct.Matrix_t* %1, %struct.Matrix_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %6, metadata !6731, metadata !DIExpression()), !dbg !6732
store %struct.Matrix_t* %2, %struct.Matrix_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %7, metadata !6733, metadata !DIExpression()), !dbg !6734
call void @llvm.dbg.declare(metadata i32* %8, metadata !6735, metadata !DIExpression()), !dbg !6736
call void @llvm.dbg.declare(metadata i32* %9, metadata !6737, metadata !DIExpression()), !dbg !6738
call void @llvm.dbg.declare(metadata i32* %10, metadata !6739, metadata !DIExpression()), !dbg !6740
call void @llvm.dbg.declare(metadata i32* %11, metadata !6741, metadata !DIExpression()), !dbg !6742
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6743
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !6744
%16 = load i32, i32* %15, align 4, !dbg !6744
store i32 %16, i32* %11, align 4, !dbg !6742
call void @llvm.dbg.declare(metadata i32* %12, metadata !6745, metadata !DIExpression()), !dbg !6746
%17 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6747
%18 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %17, i32 0, i32 0, !dbg !6748
%19 = load i32, i32* %18, align 8, !dbg !6748
store i32 %19, i32* %12, align 4, !dbg !6746
%20 = load i32, i32* %12, align 4, !dbg !6749
%21 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6751
%22 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 0, !dbg !6752
%23 = load i32, i32* %22, align 8, !dbg !6752
%24 = icmp ne i32 %20, %23, !dbg !6753
br i1 %24, label %39, label %25, !dbg !6754
25: ; preds = %3
%26 = load i32, i32* %11, align 4, !dbg !6755
%27 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6756
%28 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %27, i32 0, i32 0, !dbg !6757
%29 = load i32, i32* %28, align 8, !dbg !6757
%30 = icmp ne i32 %26, %29, !dbg !6758
br i1 %30, label %39, label %31, !dbg !6759
31: ; preds = %25
%32 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6760
%33 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %32, i32 0, i32 1, !dbg !6761
%34 = load i32, i32* %33, align 4, !dbg !6761
%35 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6762
%36 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %35, i32 0, i32 1, !dbg !6763
%37 = load i32, i32* %36, align 4, !dbg !6763
%38 = icmp ne i32 %34, %37, !dbg !6764
br i1 %38, label %39, label %40, !dbg !6765
39: ; preds = %31, %25, %3
store i64 0, i64* %4, align 8, !dbg !6766
br label %112, !dbg !6766
40: ; preds = %31
store i32 0, i32* %8, align 4, !dbg !6767
br label %41, !dbg !6769
41: ; preds = %108, %40
%42 = load i32, i32* %8, align 4, !dbg !6770
%43 = load i32, i32* %11, align 4, !dbg !6772
%44 = icmp ult i32 %42, %43, !dbg !6773
br i1 %44, label %45, label %111, !dbg !6774
45: ; preds = %41
store i32 0, i32* %9, align 4, !dbg !6775
br label %46, !dbg !6778
46: ; preds = %104, %45
%47 = load i32, i32* %9, align 4, !dbg !6779
%48 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6781
%49 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %48, i32 0, i32 1, !dbg !6782
%50 = load i32, i32* %49, align 4, !dbg !6782
%51 = icmp ult i32 %47, %50, !dbg !6783
br i1 %51, label %52, label %107, !dbg !6784
52: ; preds = %46
call void @llvm.dbg.declare(metadata double* %13, metadata !6785, metadata !DIExpression()), !dbg !6787
store double 0.000000e+00, double* %13, align 8, !dbg !6787
store i32 0, i32* %10, align 4, !dbg !6788
br label %53, !dbg !6790
53: ; preds = %87, %52
%54 = load i32, i32* %10, align 4, !dbg !6791
%55 = load i32, i32* %12, align 4, !dbg !6793
%56 = icmp ult i32 %54, %55, !dbg !6794
br i1 %56, label %57, label %90, !dbg !6795
57: ; preds = %53
%58 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6796
%59 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %58, i32 0, i32 2, !dbg !6796
%60 = load double*, double** %59, align 8, !dbg !6796
%61 = load i32, i32* %10, align 4, !dbg !6796
%62 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6796
%63 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %62, i32 0, i32 1, !dbg !6796
%64 = load i32, i32* %63, align 4, !dbg !6796
%65 = mul i32 %61, %64, !dbg !6796
%66 = load i32, i32* %8, align 4, !dbg !6796
%67 = add i32 %65, %66, !dbg !6796
%68 = zext i32 %67 to i64, !dbg !6796
%69 = getelementptr inbounds double, double* %60, i64 %68, !dbg !6796
%70 = load double, double* %69, align 8, !dbg !6796
%71 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6798
%72 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %71, i32 0, i32 2, !dbg !6798
%73 = load double*, double** %72, align 8, !dbg !6798
%74 = load i32, i32* %10, align 4, !dbg !6798
%75 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6798
%76 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %75, i32 0, i32 1, !dbg !6798
%77 = load i32, i32* %76, align 4, !dbg !6798
%78 = mul i32 %74, %77, !dbg !6798
%79 = load i32, i32* %9, align 4, !dbg !6798
%80 = add i32 %78, %79, !dbg !6798
%81 = zext i32 %80 to i64, !dbg !6798
%82 = getelementptr inbounds double, double* %73, i64 %81, !dbg !6798
%83 = load double, double* %82, align 8, !dbg !6798
%84 = fmul double %70, %83, !dbg !6799
%85 = load double, double* %13, align 8, !dbg !6800
%86 = fadd double %85, %84, !dbg !6800
store double %86, double* %13, align 8, !dbg !6800
br label %87, !dbg !6801
87: ; preds = %57
%88 = load i32, i32* %10, align 4, !dbg !6802
%89 = add i32 %88, 1, !dbg !6802
store i32 %89, i32* %10, align 4, !dbg !6802
br label %53, !dbg !6803, !llvm.loop !6804
90: ; preds = %53
%91 = load double, double* %13, align 8, !dbg !6806
%92 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6806
%93 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %92, i32 0, i32 2, !dbg !6806
%94 = load double*, double** %93, align 8, !dbg !6806
%95 = load i32, i32* %8, align 4, !dbg !6806
%96 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6806
%97 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %96, i32 0, i32 1, !dbg !6806
%98 = load i32, i32* %97, align 4, !dbg !6806
%99 = mul i32 %95, %98, !dbg !6806
%100 = load i32, i32* %9, align 4, !dbg !6806
%101 = add i32 %99, %100, !dbg !6806
%102 = zext i32 %101 to i64, !dbg !6806
%103 = getelementptr inbounds double, double* %94, i64 %102, !dbg !6806
store double %91, double* %103, align 8, !dbg !6806
br label %104, !dbg !6807
104: ; preds = %90
%105 = load i32, i32* %9, align 4, !dbg !6808
%106 = add i32 %105, 1, !dbg !6808
store i32 %106, i32* %9, align 4, !dbg !6808
br label %46, !dbg !6809, !llvm.loop !6810
107: ; preds = %46
br label %108, !dbg !6812
108: ; preds = %107
%109 = load i32, i32* %8, align 4, !dbg !6813
%110 = add i32 %109, 1, !dbg !6813
store i32 %110, i32* %8, align 4, !dbg !6813
br label %41, !dbg !6814, !llvm.loop !6815
111: ; preds = %41
store i64 1, i64* %4, align 8, !dbg !6817
br label %112, !dbg !6817
112: ; preds = %111, %39
%113 = load i64, i64* %4, align 8, !dbg !6818
ret i64 %113, !dbg !6818
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiplyTransB(%struct.Matrix_t* %0, %struct.Matrix_t* %1, %struct.Matrix_t* %2) #0 !dbg !6819 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Matrix_t*, align 8
%7 = alloca %struct.Matrix_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6820, metadata !DIExpression()), !dbg !6821
store %struct.Matrix_t* %1, %struct.Matrix_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %6, metadata !6822, metadata !DIExpression()), !dbg !6823
store %struct.Matrix_t* %2, %struct.Matrix_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %7, metadata !6824, metadata !DIExpression()), !dbg !6825
call void @llvm.dbg.declare(metadata i32* %8, metadata !6826, metadata !DIExpression()), !dbg !6827
call void @llvm.dbg.declare(metadata i32* %9, metadata !6828, metadata !DIExpression()), !dbg !6829
call void @llvm.dbg.declare(metadata i32* %10, metadata !6830, metadata !DIExpression()), !dbg !6831
call void @llvm.dbg.declare(metadata i32* %11, metadata !6832, metadata !DIExpression()), !dbg !6833
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6834
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !6835
%16 = load i32, i32* %15, align 4, !dbg !6835
store i32 %16, i32* %11, align 4, !dbg !6833
call void @llvm.dbg.declare(metadata i32* %12, metadata !6836, metadata !DIExpression()), !dbg !6837
%17 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6838
%18 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %17, i32 0, i32 0, !dbg !6839
%19 = load i32, i32* %18, align 8, !dbg !6839
store i32 %19, i32* %12, align 4, !dbg !6837
%20 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6840
%21 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %20, i32 0, i32 1, !dbg !6842
%22 = load i32, i32* %21, align 4, !dbg !6842
%23 = load i32, i32* %11, align 4, !dbg !6843
%24 = icmp ne i32 %22, %23, !dbg !6844
br i1 %24, label %39, label %25, !dbg !6845
25: ; preds = %3
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6846
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 0, !dbg !6847
%28 = load i32, i32* %27, align 8, !dbg !6847
%29 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6848
%30 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %29, i32 0, i32 0, !dbg !6849
%31 = load i32, i32* %30, align 8, !dbg !6849
%32 = icmp ne i32 %28, %31, !dbg !6850
br i1 %32, label %39, label %33, !dbg !6851
33: ; preds = %25
%34 = load i32, i32* %12, align 4, !dbg !6852
%35 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6853
%36 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %35, i32 0, i32 1, !dbg !6854
%37 = load i32, i32* %36, align 4, !dbg !6854
%38 = icmp ne i32 %34, %37, !dbg !6855
br i1 %38, label %39, label %40, !dbg !6856
39: ; preds = %33, %25, %3
store i64 0, i64* %4, align 8, !dbg !6857
br label %114, !dbg !6857
40: ; preds = %33
store i32 0, i32* %8, align 4, !dbg !6858
br label %41, !dbg !6860
41: ; preds = %110, %40
%42 = load i32, i32* %8, align 4, !dbg !6861
%43 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6863
%44 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %43, i32 0, i32 0, !dbg !6864
%45 = load i32, i32* %44, align 8, !dbg !6864
%46 = icmp ult i32 %42, %45, !dbg !6865
br i1 %46, label %47, label %113, !dbg !6866
47: ; preds = %41
store i32 0, i32* %9, align 4, !dbg !6867
br label %48, !dbg !6870
48: ; preds = %106, %47
%49 = load i32, i32* %9, align 4, !dbg !6871
%50 = load i32, i32* %12, align 4, !dbg !6873
%51 = icmp ult i32 %49, %50, !dbg !6874
br i1 %51, label %52, label %109, !dbg !6875
52: ; preds = %48
call void @llvm.dbg.declare(metadata double* %13, metadata !6876, metadata !DIExpression()), !dbg !6878
store double 0.000000e+00, double* %13, align 8, !dbg !6878
store i32 0, i32* %10, align 4, !dbg !6879
br label %53, !dbg !6881
53: ; preds = %89, %52
%54 = load i32, i32* %10, align 4, !dbg !6882
%55 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6884
%56 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %55, i32 0, i32 1, !dbg !6885
%57 = load i32, i32* %56, align 4, !dbg !6885
%58 = icmp ult i32 %54, %57, !dbg !6886
br i1 %58, label %59, label %92, !dbg !6887
59: ; preds = %53
%60 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6888
%61 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %60, i32 0, i32 2, !dbg !6888
%62 = load double*, double** %61, align 8, !dbg !6888
%63 = load i32, i32* %8, align 4, !dbg !6888
%64 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6888
%65 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %64, i32 0, i32 1, !dbg !6888
%66 = load i32, i32* %65, align 4, !dbg !6888
%67 = mul i32 %63, %66, !dbg !6888
%68 = load i32, i32* %10, align 4, !dbg !6888
%69 = add i32 %67, %68, !dbg !6888
%70 = zext i32 %69 to i64, !dbg !6888
%71 = getelementptr inbounds double, double* %62, i64 %70, !dbg !6888
%72 = load double, double* %71, align 8, !dbg !6888
%73 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6890
%74 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %73, i32 0, i32 2, !dbg !6890
%75 = load double*, double** %74, align 8, !dbg !6890
%76 = load i32, i32* %9, align 4, !dbg !6890
%77 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !6890
%78 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %77, i32 0, i32 1, !dbg !6890
%79 = load i32, i32* %78, align 4, !dbg !6890
%80 = mul i32 %76, %79, !dbg !6890
%81 = load i32, i32* %10, align 4, !dbg !6890
%82 = add i32 %80, %81, !dbg !6890
%83 = zext i32 %82 to i64, !dbg !6890
%84 = getelementptr inbounds double, double* %75, i64 %83, !dbg !6890
%85 = load double, double* %84, align 8, !dbg !6890
%86 = fmul double %72, %85, !dbg !6891
%87 = load double, double* %13, align 8, !dbg !6892
%88 = fadd double %87, %86, !dbg !6892
store double %88, double* %13, align 8, !dbg !6892
br label %89, !dbg !6893
89: ; preds = %59
%90 = load i32, i32* %10, align 4, !dbg !6894
%91 = add i32 %90, 1, !dbg !6894
store i32 %91, i32* %10, align 4, !dbg !6894
br label %53, !dbg !6895, !llvm.loop !6896
92: ; preds = %53
%93 = load double, double* %13, align 8, !dbg !6898
%94 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6898
%95 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %94, i32 0, i32 2, !dbg !6898
%96 = load double*, double** %95, align 8, !dbg !6898
%97 = load i32, i32* %8, align 4, !dbg !6898
%98 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !6898
%99 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %98, i32 0, i32 1, !dbg !6898
%100 = load i32, i32* %99, align 4, !dbg !6898
%101 = mul i32 %97, %100, !dbg !6898
%102 = load i32, i32* %9, align 4, !dbg !6898
%103 = add i32 %101, %102, !dbg !6898
%104 = zext i32 %103 to i64, !dbg !6898
%105 = getelementptr inbounds double, double* %96, i64 %104, !dbg !6898
store double %93, double* %105, align 8, !dbg !6898
br label %106, !dbg !6899
106: ; preds = %92
%107 = load i32, i32* %9, align 4, !dbg !6900
%108 = add i32 %107, 1, !dbg !6900
store i32 %108, i32* %9, align 4, !dbg !6900
br label %48, !dbg !6901, !llvm.loop !6902
109: ; preds = %48
br label %110, !dbg !6904
110: ; preds = %109
%111 = load i32, i32* %8, align 4, !dbg !6905
%112 = add i32 %111, 1, !dbg !6905
store i32 %112, i32* %8, align 4, !dbg !6905
br label %41, !dbg !6906, !llvm.loop !6907
113: ; preds = %41
store i64 1, i64* %4, align 8, !dbg !6909
br label %114, !dbg !6909
114: ; preds = %113, %39
%115 = load i64, i64* %4, align 8, !dbg !6910
ret i64 %115, !dbg !6910
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixVectorMultiply(%struct.Matrix_t* %0, %struct.Vector_t* %1, %struct.Vector_t* %2) #0 !dbg !6911 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca %struct.Vector_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6914, metadata !DIExpression()), !dbg !6915
store %struct.Vector_t* %1, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !6916, metadata !DIExpression()), !dbg !6917
store %struct.Vector_t* %2, %struct.Vector_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %7, metadata !6918, metadata !DIExpression()), !dbg !6919
call void @llvm.dbg.declare(metadata i32* %8, metadata !6920, metadata !DIExpression()), !dbg !6921
call void @llvm.dbg.declare(metadata i32* %9, metadata !6922, metadata !DIExpression()), !dbg !6923
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6924
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 1, !dbg !6926
%13 = load i32, i32* %12, align 4, !dbg !6926
%14 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !6927
%15 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %14, i32 0, i32 0, !dbg !6928
%16 = load i32, i32* %15, align 8, !dbg !6928
%17 = icmp ugt i32 %13, %16, !dbg !6929
br i1 %17, label %26, label %18, !dbg !6930
18: ; preds = %3
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6931
%20 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 0, !dbg !6932
%21 = load i32, i32* %20, align 8, !dbg !6932
%22 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !6933
%23 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %22, i32 0, i32 0, !dbg !6934
%24 = load i32, i32* %23, align 8, !dbg !6934
%25 = icmp ugt i32 %21, %24, !dbg !6935
br i1 %25, label %26, label %27, !dbg !6936
26: ; preds = %18, %3
store i64 0, i64* %4, align 8, !dbg !6937
br label %80, !dbg !6937
27: ; preds = %18
store i32 0, i32* %8, align 4, !dbg !6938
br label %28, !dbg !6940
28: ; preds = %76, %27
%29 = load i32, i32* %8, align 4, !dbg !6941
%30 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6943
%31 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %30, i32 0, i32 0, !dbg !6944
%32 = load i32, i32* %31, align 8, !dbg !6944
%33 = icmp ult i32 %29, %32, !dbg !6945
br i1 %33, label %34, label %79, !dbg !6946
34: ; preds = %28
call void @llvm.dbg.declare(metadata double* %10, metadata !6947, metadata !DIExpression()), !dbg !6949
store double 0.000000e+00, double* %10, align 8, !dbg !6949
store i32 0, i32* %9, align 4, !dbg !6950
br label %35, !dbg !6952
35: ; preds = %65, %34
%36 = load i32, i32* %9, align 4, !dbg !6953
%37 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6955
%38 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %37, i32 0, i32 1, !dbg !6956
%39 = load i32, i32* %38, align 4, !dbg !6956
%40 = icmp ult i32 %36, %39, !dbg !6957
br i1 %40, label %41, label %68, !dbg !6958
41: ; preds = %35
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6959
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 2, !dbg !6959
%44 = load double*, double** %43, align 8, !dbg !6959
%45 = load i32, i32* %8, align 4, !dbg !6959
%46 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6959
%47 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %46, i32 0, i32 1, !dbg !6959
%48 = load i32, i32* %47, align 4, !dbg !6959
%49 = mul i32 %45, %48, !dbg !6959
%50 = load i32, i32* %9, align 4, !dbg !6959
%51 = add i32 %49, %50, !dbg !6959
%52 = zext i32 %51 to i64, !dbg !6959
%53 = getelementptr inbounds double, double* %44, i64 %52, !dbg !6959
%54 = load double, double* %53, align 8, !dbg !6959
%55 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !6961
%56 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %55, i32 0, i32 1, !dbg !6962
%57 = load double*, double** %56, align 8, !dbg !6962
%58 = load i32, i32* %9, align 4, !dbg !6963
%59 = zext i32 %58 to i64, !dbg !6961
%60 = getelementptr inbounds double, double* %57, i64 %59, !dbg !6961
%61 = load double, double* %60, align 8, !dbg !6961
%62 = fmul double %54, %61, !dbg !6964
%63 = load double, double* %10, align 8, !dbg !6965
%64 = fadd double %63, %62, !dbg !6965
store double %64, double* %10, align 8, !dbg !6965
br label %65, !dbg !6966
65: ; preds = %41
%66 = load i32, i32* %9, align 4, !dbg !6967
%67 = add i32 %66, 1, !dbg !6967
store i32 %67, i32* %9, align 4, !dbg !6967
br label %35, !dbg !6968, !llvm.loop !6969
68: ; preds = %35
%69 = load double, double* %10, align 8, !dbg !6971
%70 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !6972
%71 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %70, i32 0, i32 1, !dbg !6973
%72 = load double*, double** %71, align 8, !dbg !6973
%73 = load i32, i32* %8, align 4, !dbg !6974
%74 = zext i32 %73 to i64, !dbg !6972
%75 = getelementptr inbounds double, double* %72, i64 %74, !dbg !6972
store double %69, double* %75, align 8, !dbg !6975
br label %76, !dbg !6976
76: ; preds = %68
%77 = load i32, i32* %8, align 4, !dbg !6977
%78 = add i32 %77, 1, !dbg !6977
store i32 %78, i32* %8, align 4, !dbg !6977
br label %28, !dbg !6978, !llvm.loop !6979
79: ; preds = %28
store i64 1, i64* %4, align 8, !dbg !6981
br label %80, !dbg !6981
80: ; preds = %79, %26
%81 = load i64, i64* %4, align 8, !dbg !6982
ret i64 %81, !dbg !6982
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixVectorMultiplyTransA(%struct.Matrix_t* %0, %struct.Vector_t* %1, %struct.Vector_t* %2) #0 !dbg !6983 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Vector_t*, align 8
%7 = alloca %struct.Vector_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !6984, metadata !DIExpression()), !dbg !6985
store %struct.Vector_t* %1, %struct.Vector_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %6, metadata !6986, metadata !DIExpression()), !dbg !6987
store %struct.Vector_t* %2, %struct.Vector_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Vector_t** %7, metadata !6988, metadata !DIExpression()), !dbg !6989
call void @llvm.dbg.declare(metadata i32* %8, metadata !6990, metadata !DIExpression()), !dbg !6991
call void @llvm.dbg.declare(metadata i32* %9, metadata !6992, metadata !DIExpression()), !dbg !6993
call void @llvm.dbg.declare(metadata i32* %10, metadata !6994, metadata !DIExpression()), !dbg !6995
%13 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !6996
%14 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %13, i32 0, i32 1, !dbg !6997
%15 = load i32, i32* %14, align 4, !dbg !6997
store i32 %15, i32* %10, align 4, !dbg !6995
call void @llvm.dbg.declare(metadata i32* %11, metadata !6998, metadata !DIExpression()), !dbg !6999
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7000
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 0, !dbg !7001
%18 = load i32, i32* %17, align 8, !dbg !7001
store i32 %18, i32* %11, align 4, !dbg !6999
%19 = load i32, i32* %11, align 4, !dbg !7002
%20 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !7004
%21 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %20, i32 0, i32 0, !dbg !7005
%22 = load i32, i32* %21, align 8, !dbg !7005
%23 = icmp ugt i32 %19, %22, !dbg !7006
br i1 %23, label %30, label %24, !dbg !7007
24: ; preds = %3
%25 = load i32, i32* %10, align 4, !dbg !7008
%26 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !7009
%27 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %26, i32 0, i32 0, !dbg !7010
%28 = load i32, i32* %27, align 8, !dbg !7010
%29 = icmp ugt i32 %25, %28, !dbg !7011
br i1 %29, label %30, label %31, !dbg !7012
30: ; preds = %24, %3
store i64 0, i64* %4, align 8, !dbg !7013
br label %80, !dbg !7013
31: ; preds = %24
store i32 0, i32* %8, align 4, !dbg !7014
br label %32, !dbg !7016
32: ; preds = %76, %31
%33 = load i32, i32* %8, align 4, !dbg !7017
%34 = load i32, i32* %10, align 4, !dbg !7019
%35 = icmp ult i32 %33, %34, !dbg !7020
br i1 %35, label %36, label %79, !dbg !7021
36: ; preds = %32
call void @llvm.dbg.declare(metadata double* %12, metadata !7022, metadata !DIExpression()), !dbg !7024
store double 0.000000e+00, double* %12, align 8, !dbg !7024
store i32 0, i32* %9, align 4, !dbg !7025
br label %37, !dbg !7027
37: ; preds = %65, %36
%38 = load i32, i32* %9, align 4, !dbg !7028
%39 = load i32, i32* %11, align 4, !dbg !7030
%40 = icmp ult i32 %38, %39, !dbg !7031
br i1 %40, label %41, label %68, !dbg !7032
41: ; preds = %37
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7033
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 2, !dbg !7033
%44 = load double*, double** %43, align 8, !dbg !7033
%45 = load i32, i32* %9, align 4, !dbg !7033
%46 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7033
%47 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %46, i32 0, i32 1, !dbg !7033
%48 = load i32, i32* %47, align 4, !dbg !7033
%49 = mul i32 %45, %48, !dbg !7033
%50 = load i32, i32* %8, align 4, !dbg !7033
%51 = add i32 %49, %50, !dbg !7033
%52 = zext i32 %51 to i64, !dbg !7033
%53 = getelementptr inbounds double, double* %44, i64 %52, !dbg !7033
%54 = load double, double* %53, align 8, !dbg !7033
%55 = load %struct.Vector_t*, %struct.Vector_t** %6, align 8, !dbg !7035
%56 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %55, i32 0, i32 1, !dbg !7036
%57 = load double*, double** %56, align 8, !dbg !7036
%58 = load i32, i32* %9, align 4, !dbg !7037
%59 = zext i32 %58 to i64, !dbg !7035
%60 = getelementptr inbounds double, double* %57, i64 %59, !dbg !7035
%61 = load double, double* %60, align 8, !dbg !7035
%62 = fmul double %54, %61, !dbg !7038
%63 = load double, double* %12, align 8, !dbg !7039
%64 = fadd double %63, %62, !dbg !7039
store double %64, double* %12, align 8, !dbg !7039
br label %65, !dbg !7040
65: ; preds = %41
%66 = load i32, i32* %9, align 4, !dbg !7041
%67 = add i32 %66, 1, !dbg !7041
store i32 %67, i32* %9, align 4, !dbg !7041
br label %37, !dbg !7042, !llvm.loop !7043
68: ; preds = %37
%69 = load double, double* %12, align 8, !dbg !7045
%70 = load %struct.Vector_t*, %struct.Vector_t** %7, align 8, !dbg !7046
%71 = getelementptr inbounds %struct.Vector_t, %struct.Vector_t* %70, i32 0, i32 1, !dbg !7047
%72 = load double*, double** %71, align 8, !dbg !7047
%73 = load i32, i32* %8, align 4, !dbg !7048
%74 = zext i32 %73 to i64, !dbg !7046
%75 = getelementptr inbounds double, double* %72, i64 %74, !dbg !7046
store double %69, double* %75, align 8, !dbg !7049
br label %76, !dbg !7050
76: ; preds = %68
%77 = load i32, i32* %8, align 4, !dbg !7051
%78 = add i32 %77, 1, !dbg !7051
store i32 %78, i32* %8, align 4, !dbg !7051
br label %32, !dbg !7052, !llvm.loop !7053
79: ; preds = %32
store i64 1, i64* %4, align 8, !dbg !7055
br label %80, !dbg !7055
80: ; preds = %79, %30
%81 = load i64, i64* %4, align 8, !dbg !7056
ret i64 %81, !dbg !7056
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAdd(%struct.Matrix_t* %0, %struct.Matrix_t* %1, %struct.Matrix_t* %2) #0 !dbg !7057 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Matrix_t*, align 8
%7 = alloca %struct.Matrix_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7058, metadata !DIExpression()), !dbg !7059
store %struct.Matrix_t* %1, %struct.Matrix_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %6, metadata !7060, metadata !DIExpression()), !dbg !7061
store %struct.Matrix_t* %2, %struct.Matrix_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %7, metadata !7062, metadata !DIExpression()), !dbg !7063
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7064
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 0, !dbg !7066
%12 = load i32, i32* %11, align 8, !dbg !7066
%13 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7067
%14 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %13, i32 0, i32 0, !dbg !7068
%15 = load i32, i32* %14, align 8, !dbg !7068
%16 = icmp eq i32 %12, %15, !dbg !7069
br i1 %16, label %17, label %79, !dbg !7070
17: ; preds = %3
%18 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7071
%19 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %18, i32 0, i32 0, !dbg !7072
%20 = load i32, i32* %19, align 8, !dbg !7072
%21 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7073
%22 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 0, !dbg !7074
%23 = load i32, i32* %22, align 8, !dbg !7074
%24 = icmp eq i32 %20, %23, !dbg !7075
br i1 %24, label %25, label %79, !dbg !7076
25: ; preds = %17
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7077
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 1, !dbg !7078
%28 = load i32, i32* %27, align 4, !dbg !7078
%29 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7079
%30 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %29, i32 0, i32 1, !dbg !7080
%31 = load i32, i32* %30, align 4, !dbg !7080
%32 = icmp eq i32 %28, %31, !dbg !7081
br i1 %32, label %33, label %79, !dbg !7082
33: ; preds = %25
%34 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7083
%35 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %34, i32 0, i32 1, !dbg !7084
%36 = load i32, i32* %35, align 4, !dbg !7084
%37 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7085
%38 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %37, i32 0, i32 1, !dbg !7086
%39 = load i32, i32* %38, align 4, !dbg !7086
%40 = icmp eq i32 %36, %39, !dbg !7087
br i1 %40, label %41, label %79, !dbg !7088
41: ; preds = %33
call void @llvm.dbg.declare(metadata i32* %8, metadata !7089, metadata !DIExpression()), !dbg !7091
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7092
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 0, !dbg !7093
%44 = load i32, i32* %43, align 8, !dbg !7093
%45 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7094
%46 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %45, i32 0, i32 1, !dbg !7095
%47 = load i32, i32* %46, align 4, !dbg !7095
%48 = mul i32 %44, %47, !dbg !7096
store i32 %48, i32* %8, align 4, !dbg !7091
call void @llvm.dbg.declare(metadata i32* %9, metadata !7097, metadata !DIExpression()), !dbg !7098
store i32 0, i32* %9, align 4, !dbg !7099
br label %49, !dbg !7101
49: ; preds = %75, %41
%50 = load i32, i32* %9, align 4, !dbg !7102
%51 = load i32, i32* %8, align 4, !dbg !7104
%52 = icmp ult i32 %50, %51, !dbg !7105
br i1 %52, label %53, label %78, !dbg !7106
53: ; preds = %49
%54 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7107
%55 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %54, i32 0, i32 2, !dbg !7108
%56 = load double*, double** %55, align 8, !dbg !7108
%57 = load i32, i32* %9, align 4, !dbg !7109
%58 = zext i32 %57 to i64, !dbg !7107
%59 = getelementptr inbounds double, double* %56, i64 %58, !dbg !7107
%60 = load double, double* %59, align 8, !dbg !7107
%61 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7110
%62 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %61, i32 0, i32 2, !dbg !7111
%63 = load double*, double** %62, align 8, !dbg !7111
%64 = load i32, i32* %9, align 4, !dbg !7112
%65 = zext i32 %64 to i64, !dbg !7110
%66 = getelementptr inbounds double, double* %63, i64 %65, !dbg !7110
%67 = load double, double* %66, align 8, !dbg !7110
%68 = fadd double %60, %67, !dbg !7113
%69 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7114
%70 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %69, i32 0, i32 2, !dbg !7115
%71 = load double*, double** %70, align 8, !dbg !7115
%72 = load i32, i32* %9, align 4, !dbg !7116
%73 = zext i32 %72 to i64, !dbg !7114
%74 = getelementptr inbounds double, double* %71, i64 %73, !dbg !7114
store double %68, double* %74, align 8, !dbg !7117
br label %75, !dbg !7114
75: ; preds = %53
%76 = load i32, i32* %9, align 4, !dbg !7118
%77 = add i32 %76, 1, !dbg !7118
store i32 %77, i32* %9, align 4, !dbg !7118
br label %49, !dbg !7119, !llvm.loop !7120
78: ; preds = %49
store i64 1, i64* %4, align 8, !dbg !7122
br label %80, !dbg !7122
79: ; preds = %33, %25, %17, %3
store i64 0, i64* %4, align 8, !dbg !7123
br label %80, !dbg !7123
80: ; preds = %79, %78
%81 = load i64, i64* %4, align 8, !dbg !7124
ret i64 %81, !dbg !7124
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAddEquals(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !7125 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7128, metadata !DIExpression()), !dbg !7129
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7130, metadata !DIExpression()), !dbg !7131
%7 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7132
%8 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %7, i32 0, i32 0, !dbg !7134
%9 = load i32, i32* %8, align 8, !dbg !7134
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7135
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 0, !dbg !7136
%12 = load i32, i32* %11, align 8, !dbg !7136
%13 = icmp eq i32 %9, %12, !dbg !7137
br i1 %13, label %14, label %53, !dbg !7138
14: ; preds = %2
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7139
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 1, !dbg !7140
%17 = load i32, i32* %16, align 4, !dbg !7140
%18 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7141
%19 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %18, i32 0, i32 1, !dbg !7142
%20 = load i32, i32* %19, align 4, !dbg !7142
%21 = icmp eq i32 %17, %20, !dbg !7143
br i1 %21, label %22, label %53, !dbg !7144
22: ; preds = %14
call void @llvm.dbg.declare(metadata i32* %6, metadata !7145, metadata !DIExpression()), !dbg !7147
store i32 0, i32* %6, align 4, !dbg !7148
br label %23, !dbg !7150
23: ; preds = %49, %22
%24 = load i32, i32* %6, align 4, !dbg !7151
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7153
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 0, !dbg !7154
%27 = load i32, i32* %26, align 8, !dbg !7154
%28 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7155
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %28, i32 0, i32 1, !dbg !7156
%30 = load i32, i32* %29, align 4, !dbg !7156
%31 = mul i32 %27, %30, !dbg !7157
%32 = icmp ult i32 %24, %31, !dbg !7158
br i1 %32, label %33, label %52, !dbg !7159
33: ; preds = %23
%34 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7160
%35 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %34, i32 0, i32 2, !dbg !7161
%36 = load double*, double** %35, align 8, !dbg !7161
%37 = load i32, i32* %6, align 4, !dbg !7162
%38 = zext i32 %37 to i64, !dbg !7160
%39 = getelementptr inbounds double, double* %36, i64 %38, !dbg !7160
%40 = load double, double* %39, align 8, !dbg !7160
%41 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7163
%42 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %41, i32 0, i32 2, !dbg !7164
%43 = load double*, double** %42, align 8, !dbg !7164
%44 = load i32, i32* %6, align 4, !dbg !7165
%45 = zext i32 %44 to i64, !dbg !7163
%46 = getelementptr inbounds double, double* %43, i64 %45, !dbg !7163
%47 = load double, double* %46, align 8, !dbg !7166
%48 = fadd double %47, %40, !dbg !7166
store double %48, double* %46, align 8, !dbg !7166
br label %49, !dbg !7163
49: ; preds = %33
%50 = load i32, i32* %6, align 4, !dbg !7167
%51 = add i32 %50, 1, !dbg !7167
store i32 %51, i32* %6, align 4, !dbg !7167
br label %23, !dbg !7168, !llvm.loop !7169
52: ; preds = %23
store i64 1, i64* %3, align 8, !dbg !7171
br label %54, !dbg !7171
53: ; preds = %14, %2
store i64 0, i64* %3, align 8, !dbg !7172
br label %54, !dbg !7172
54: ; preds = %53, %52
%55 = load i64, i64* %3, align 8, !dbg !7173
ret i64 %55, !dbg !7173
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixScale(%struct.Matrix_t* %0, double %1) #0 !dbg !7174 {
%3 = alloca %struct.Matrix_t*, align 8
%4 = alloca double, align 8
%5 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %3, metadata !7177, metadata !DIExpression()), !dbg !7178
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !7179, metadata !DIExpression()), !dbg !7180
call void @llvm.dbg.declare(metadata i32* %5, metadata !7181, metadata !DIExpression()), !dbg !7182
store i32 0, i32* %5, align 4, !dbg !7183
br label %6, !dbg !7185
6: ; preds = %26, %2
%7 = load i32, i32* %5, align 4, !dbg !7186
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %3, align 8, !dbg !7188
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !7189
%10 = load i32, i32* %9, align 8, !dbg !7189
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %3, align 8, !dbg !7190
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 1, !dbg !7191
%13 = load i32, i32* %12, align 4, !dbg !7191
%14 = mul i32 %10, %13, !dbg !7192
%15 = icmp ult i32 %7, %14, !dbg !7193
br i1 %15, label %16, label %29, !dbg !7194
16: ; preds = %6
%17 = load double, double* %4, align 8, !dbg !7195
%18 = load %struct.Matrix_t*, %struct.Matrix_t** %3, align 8, !dbg !7196
%19 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %18, i32 0, i32 2, !dbg !7197
%20 = load double*, double** %19, align 8, !dbg !7197
%21 = load i32, i32* %5, align 4, !dbg !7198
%22 = zext i32 %21 to i64, !dbg !7196
%23 = getelementptr inbounds double, double* %20, i64 %22, !dbg !7196
%24 = load double, double* %23, align 8, !dbg !7199
%25 = fmul double %24, %17, !dbg !7199
store double %25, double* %23, align 8, !dbg !7199
br label %26, !dbg !7196
26: ; preds = %16
%27 = load i32, i32* %5, align 4, !dbg !7200
%28 = add i32 %27, 1, !dbg !7200
store i32 %28, i32* %5, align 4, !dbg !7200
br label %6, !dbg !7201, !llvm.loop !7202
29: ; preds = %6
ret void, !dbg !7204
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAverage(%struct.Matrix_t* %0, %struct.Matrix_t* %1, %struct.Matrix_t* %2) #0 !dbg !7205 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca %struct.Matrix_t*, align 8
%7 = alloca %struct.Matrix_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7206, metadata !DIExpression()), !dbg !7207
store %struct.Matrix_t* %1, %struct.Matrix_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %6, metadata !7208, metadata !DIExpression()), !dbg !7209
store %struct.Matrix_t* %2, %struct.Matrix_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %7, metadata !7210, metadata !DIExpression()), !dbg !7211
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7212
%11 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %10, i32 0, i32 0, !dbg !7214
%12 = load i32, i32* %11, align 8, !dbg !7214
%13 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7215
%14 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %13, i32 0, i32 0, !dbg !7216
%15 = load i32, i32* %14, align 8, !dbg !7216
%16 = icmp eq i32 %12, %15, !dbg !7217
br i1 %16, label %17, label %80, !dbg !7218
17: ; preds = %3
%18 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7219
%19 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %18, i32 0, i32 0, !dbg !7220
%20 = load i32, i32* %19, align 8, !dbg !7220
%21 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7221
%22 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 0, !dbg !7222
%23 = load i32, i32* %22, align 8, !dbg !7222
%24 = icmp eq i32 %20, %23, !dbg !7223
br i1 %24, label %25, label %80, !dbg !7224
25: ; preds = %17
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7225
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 1, !dbg !7226
%28 = load i32, i32* %27, align 4, !dbg !7226
%29 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7227
%30 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %29, i32 0, i32 1, !dbg !7228
%31 = load i32, i32* %30, align 4, !dbg !7228
%32 = icmp eq i32 %28, %31, !dbg !7229
br i1 %32, label %33, label %80, !dbg !7230
33: ; preds = %25
%34 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7231
%35 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %34, i32 0, i32 1, !dbg !7232
%36 = load i32, i32* %35, align 4, !dbg !7232
%37 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7233
%38 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %37, i32 0, i32 1, !dbg !7234
%39 = load i32, i32* %38, align 4, !dbg !7234
%40 = icmp eq i32 %36, %39, !dbg !7235
br i1 %40, label %41, label %80, !dbg !7236
41: ; preds = %33
call void @llvm.dbg.declare(metadata i32* %8, metadata !7237, metadata !DIExpression()), !dbg !7239
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7240
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 0, !dbg !7241
%44 = load i32, i32* %43, align 8, !dbg !7241
%45 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7242
%46 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %45, i32 0, i32 1, !dbg !7243
%47 = load i32, i32* %46, align 4, !dbg !7243
%48 = mul i32 %44, %47, !dbg !7244
store i32 %48, i32* %8, align 4, !dbg !7239
call void @llvm.dbg.declare(metadata i32* %9, metadata !7245, metadata !DIExpression()), !dbg !7246
store i32 0, i32* %9, align 4, !dbg !7247
br label %49, !dbg !7249
49: ; preds = %76, %41
%50 = load i32, i32* %9, align 4, !dbg !7250
%51 = load i32, i32* %8, align 4, !dbg !7252
%52 = icmp ult i32 %50, %51, !dbg !7253
br i1 %52, label %53, label %79, !dbg !7254
53: ; preds = %49
%54 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7255
%55 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %54, i32 0, i32 2, !dbg !7256
%56 = load double*, double** %55, align 8, !dbg !7256
%57 = load i32, i32* %9, align 4, !dbg !7257
%58 = zext i32 %57 to i64, !dbg !7255
%59 = getelementptr inbounds double, double* %56, i64 %58, !dbg !7255
%60 = load double, double* %59, align 8, !dbg !7255
%61 = load %struct.Matrix_t*, %struct.Matrix_t** %6, align 8, !dbg !7258
%62 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %61, i32 0, i32 2, !dbg !7259
%63 = load double*, double** %62, align 8, !dbg !7259
%64 = load i32, i32* %9, align 4, !dbg !7260
%65 = zext i32 %64 to i64, !dbg !7258
%66 = getelementptr inbounds double, double* %63, i64 %65, !dbg !7258
%67 = load double, double* %66, align 8, !dbg !7258
%68 = fadd double %60, %67, !dbg !7261
%69 = fmul double %68, 5.000000e-01, !dbg !7262
%70 = load %struct.Matrix_t*, %struct.Matrix_t** %7, align 8, !dbg !7263
%71 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %70, i32 0, i32 2, !dbg !7264
%72 = load double*, double** %71, align 8, !dbg !7264
%73 = load i32, i32* %9, align 4, !dbg !7265
%74 = zext i32 %73 to i64, !dbg !7263
%75 = getelementptr inbounds double, double* %72, i64 %74, !dbg !7263
store double %69, double* %75, align 8, !dbg !7266
br label %76, !dbg !7263
76: ; preds = %53
%77 = load i32, i32* %9, align 4, !dbg !7267
%78 = add i32 %77, 1, !dbg !7267
store i32 %78, i32* %9, align 4, !dbg !7267
br label %49, !dbg !7268, !llvm.loop !7269
79: ; preds = %49
store i64 1, i64* %4, align 8, !dbg !7271
br label %81, !dbg !7271
80: ; preds = %33, %25, %17, %3
store i64 0, i64* %4, align 8, !dbg !7272
br label %81, !dbg !7272
81: ; preds = %80, %79
%82 = load i64, i64* %4, align 8, !dbg !7273
ret i64 %82, !dbg !7273
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixAddIdentity(%struct.Matrix_t* %0) #0 !dbg !7274 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !7275, metadata !DIExpression()), !dbg !7276
call void @llvm.dbg.declare(metadata i32* %3, metadata !7277, metadata !DIExpression()), !dbg !7278
%5 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7279
%6 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %5, i32 0, i32 0, !dbg !7280
%7 = load i32, i32* %6, align 8, !dbg !7280
store i32 %7, i32* %3, align 4, !dbg !7278
call void @llvm.dbg.declare(metadata i32* %4, metadata !7281, metadata !DIExpression()), !dbg !7282
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7283
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 1, !dbg !7285
%10 = load i32, i32* %9, align 4, !dbg !7285
%11 = load i32, i32* %3, align 4, !dbg !7286
%12 = icmp ult i32 %10, %11, !dbg !7287
br i1 %12, label %13, label %17, !dbg !7288
13: ; preds = %1
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7289
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !7290
%16 = load i32, i32* %15, align 4, !dbg !7290
store i32 %16, i32* %3, align 4, !dbg !7291
br label %17, !dbg !7292
17: ; preds = %13, %1
store i32 0, i32* %4, align 4, !dbg !7293
br label %18, !dbg !7295
18: ; preds = %37, %17
%19 = load i32, i32* %4, align 4, !dbg !7296
%20 = load i32, i32* %3, align 4, !dbg !7298
%21 = icmp ult i32 %19, %20, !dbg !7299
br i1 %21, label %22, label %40, !dbg !7300
22: ; preds = %18
%23 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7301
%24 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 2, !dbg !7301
%25 = load double*, double** %24, align 8, !dbg !7301
%26 = load i32, i32* %4, align 4, !dbg !7301
%27 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7301
%28 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %27, i32 0, i32 1, !dbg !7301
%29 = load i32, i32* %28, align 4, !dbg !7301
%30 = mul i32 %26, %29, !dbg !7301
%31 = load i32, i32* %4, align 4, !dbg !7301
%32 = add i32 %30, %31, !dbg !7301
%33 = zext i32 %32 to i64, !dbg !7301
%34 = getelementptr inbounds double, double* %25, i64 %33, !dbg !7301
%35 = load double, double* %34, align 8, !dbg !7302
%36 = fadd double %35, 1.000000e+00, !dbg !7302
store double %36, double* %34, align 8, !dbg !7302
br label %37, !dbg !7301
37: ; preds = %22
%38 = load i32, i32* %4, align 4, !dbg !7303
%39 = add i32 %38, 1, !dbg !7303
store i32 %39, i32* %4, align 4, !dbg !7303
br label %18, !dbg !7304, !llvm.loop !7305
40: ; preds = %18
ret void, !dbg !7307
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixMinusIdentity(%struct.Matrix_t* %0) #0 !dbg !7308 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !7309, metadata !DIExpression()), !dbg !7310
call void @llvm.dbg.declare(metadata i32* %3, metadata !7311, metadata !DIExpression()), !dbg !7312
%5 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7313
%6 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %5, i32 0, i32 0, !dbg !7314
%7 = load i32, i32* %6, align 8, !dbg !7314
store i32 %7, i32* %3, align 4, !dbg !7312
call void @llvm.dbg.declare(metadata i32* %4, metadata !7315, metadata !DIExpression()), !dbg !7316
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7317
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 1, !dbg !7319
%10 = load i32, i32* %9, align 4, !dbg !7319
%11 = load i32, i32* %3, align 4, !dbg !7320
%12 = icmp ult i32 %10, %11, !dbg !7321
br i1 %12, label %13, label %17, !dbg !7322
13: ; preds = %1
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7323
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !7324
%16 = load i32, i32* %15, align 4, !dbg !7324
store i32 %16, i32* %3, align 4, !dbg !7325
br label %17, !dbg !7326
17: ; preds = %13, %1
store i32 0, i32* %4, align 4, !dbg !7327
br label %18, !dbg !7329
18: ; preds = %37, %17
%19 = load i32, i32* %4, align 4, !dbg !7330
%20 = load i32, i32* %3, align 4, !dbg !7332
%21 = icmp ult i32 %19, %20, !dbg !7333
br i1 %21, label %22, label %40, !dbg !7334
22: ; preds = %18
%23 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7335
%24 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 2, !dbg !7335
%25 = load double*, double** %24, align 8, !dbg !7335
%26 = load i32, i32* %4, align 4, !dbg !7335
%27 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7335
%28 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %27, i32 0, i32 1, !dbg !7335
%29 = load i32, i32* %28, align 4, !dbg !7335
%30 = mul i32 %26, %29, !dbg !7335
%31 = load i32, i32* %4, align 4, !dbg !7335
%32 = add i32 %30, %31, !dbg !7335
%33 = zext i32 %32 to i64, !dbg !7335
%34 = getelementptr inbounds double, double* %25, i64 %33, !dbg !7335
%35 = load double, double* %34, align 8, !dbg !7336
%36 = fsub double %35, 1.000000e+00, !dbg !7336
store double %36, double* %34, align 8, !dbg !7336
br label %37, !dbg !7335
37: ; preds = %22
%38 = load i32, i32* %4, align 4, !dbg !7337
%39 = add i32 %38, 1, !dbg !7337
store i32 %39, i32* %4, align 4, !dbg !7337
br label %18, !dbg !7338, !llvm.loop !7339
40: ; preds = %18
ret void, !dbg !7341
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixIdentityMinus(%struct.Matrix_t* %0) #0 !dbg !7342 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !7343, metadata !DIExpression()), !dbg !7344
call void @llvm.dbg.declare(metadata i32* %3, metadata !7345, metadata !DIExpression()), !dbg !7346
call void @llvm.dbg.declare(metadata i32* %4, metadata !7347, metadata !DIExpression()), !dbg !7348
store i32 0, i32* %3, align 4, !dbg !7349
br label %6, !dbg !7351
6: ; preds = %56, %1
%7 = load i32, i32* %3, align 4, !dbg !7352
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7354
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !7355
%10 = load i32, i32* %9, align 8, !dbg !7355
%11 = icmp ult i32 %7, %10, !dbg !7356
br i1 %11, label %12, label %59, !dbg !7357
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !7358
br label %13, !dbg !7361
13: ; preds = %52, %12
%14 = load i32, i32* %4, align 4, !dbg !7362
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7364
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 1, !dbg !7365
%17 = load i32, i32* %16, align 4, !dbg !7365
%18 = icmp ult i32 %14, %17, !dbg !7366
br i1 %18, label %19, label %55, !dbg !7367
19: ; preds = %13
call void @llvm.dbg.declare(metadata double* %5, metadata !7368, metadata !DIExpression()), !dbg !7370
store double 0.000000e+00, double* %5, align 8, !dbg !7370
%20 = load i32, i32* %4, align 4, !dbg !7371
%21 = load i32, i32* %3, align 4, !dbg !7373
%22 = icmp eq i32 %20, %21, !dbg !7374
br i1 %22, label %23, label %24, !dbg !7375
23: ; preds = %19
store double 1.000000e+00, double* %5, align 8, !dbg !7376
br label %24, !dbg !7377
24: ; preds = %23, %19
%25 = load double, double* %5, align 8, !dbg !7378
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7378
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 2, !dbg !7378
%28 = load double*, double** %27, align 8, !dbg !7378
%29 = load i32, i32* %3, align 4, !dbg !7378
%30 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7378
%31 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %30, i32 0, i32 1, !dbg !7378
%32 = load i32, i32* %31, align 4, !dbg !7378
%33 = mul i32 %29, %32, !dbg !7378
%34 = load i32, i32* %4, align 4, !dbg !7378
%35 = add i32 %33, %34, !dbg !7378
%36 = zext i32 %35 to i64, !dbg !7378
%37 = getelementptr inbounds double, double* %28, i64 %36, !dbg !7378
%38 = load double, double* %37, align 8, !dbg !7378
%39 = fsub double %25, %38, !dbg !7378
%40 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7378
%41 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %40, i32 0, i32 2, !dbg !7378
%42 = load double*, double** %41, align 8, !dbg !7378
%43 = load i32, i32* %3, align 4, !dbg !7378
%44 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7378
%45 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %44, i32 0, i32 1, !dbg !7378
%46 = load i32, i32* %45, align 4, !dbg !7378
%47 = mul i32 %43, %46, !dbg !7378
%48 = load i32, i32* %4, align 4, !dbg !7378
%49 = add i32 %47, %48, !dbg !7378
%50 = zext i32 %49 to i64, !dbg !7378
%51 = getelementptr inbounds double, double* %42, i64 %50, !dbg !7378
store double %39, double* %51, align 8, !dbg !7378
br label %52, !dbg !7379
52: ; preds = %24
%53 = load i32, i32* %4, align 4, !dbg !7380
%54 = add i32 %53, 1, !dbg !7380
store i32 %54, i32* %4, align 4, !dbg !7380
br label %13, !dbg !7381, !llvm.loop !7382
55: ; preds = %13
br label %56, !dbg !7384
56: ; preds = %55
%57 = load i32, i32* %3, align 4, !dbg !7385
%58 = add i32 %57, 1, !dbg !7385
store i32 %58, i32* %3, align 4, !dbg !7385
br label %6, !dbg !7386, !llvm.loop !7387
59: ; preds = %6
ret void, !dbg !7389
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @matrixDotRows(%struct.Matrix_t* %0, i32 %1, i32 %2) #0 !dbg !7390 {
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7391, metadata !DIExpression()), !dbg !7392
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !7393, metadata !DIExpression()), !dbg !7394
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !7395, metadata !DIExpression()), !dbg !7396
call void @llvm.dbg.declare(metadata i32* %7, metadata !7397, metadata !DIExpression()), !dbg !7398
call void @llvm.dbg.declare(metadata double* %8, metadata !7399, metadata !DIExpression()), !dbg !7400
store double 0.000000e+00, double* %8, align 8, !dbg !7400
store i32 0, i32* %7, align 4, !dbg !7401
br label %9, !dbg !7403
9: ; preds = %45, %3
%10 = load i32, i32* %7, align 4, !dbg !7404
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7406
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 1, !dbg !7407
%13 = load i32, i32* %12, align 4, !dbg !7407
%14 = icmp ult i32 %10, %13, !dbg !7408
br i1 %14, label %15, label %48, !dbg !7409
15: ; preds = %9
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7410
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 2, !dbg !7410
%18 = load double*, double** %17, align 8, !dbg !7410
%19 = load i32, i32* %5, align 4, !dbg !7410
%20 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7410
%21 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %20, i32 0, i32 1, !dbg !7410
%22 = load i32, i32* %21, align 4, !dbg !7410
%23 = mul i32 %19, %22, !dbg !7410
%24 = load i32, i32* %7, align 4, !dbg !7410
%25 = add i32 %23, %24, !dbg !7410
%26 = zext i32 %25 to i64, !dbg !7410
%27 = getelementptr inbounds double, double* %18, i64 %26, !dbg !7410
%28 = load double, double* %27, align 8, !dbg !7410
%29 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7412
%30 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %29, i32 0, i32 2, !dbg !7412
%31 = load double*, double** %30, align 8, !dbg !7412
%32 = load i32, i32* %6, align 4, !dbg !7412
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7412
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 1, !dbg !7412
%35 = load i32, i32* %34, align 4, !dbg !7412
%36 = mul i32 %32, %35, !dbg !7412
%37 = load i32, i32* %7, align 4, !dbg !7412
%38 = add i32 %36, %37, !dbg !7412
%39 = zext i32 %38 to i64, !dbg !7412
%40 = getelementptr inbounds double, double* %31, i64 %39, !dbg !7412
%41 = load double, double* %40, align 8, !dbg !7412
%42 = fmul double %28, %41, !dbg !7413
%43 = load double, double* %8, align 8, !dbg !7414
%44 = fadd double %43, %42, !dbg !7414
store double %44, double* %8, align 8, !dbg !7414
br label %45, !dbg !7415
45: ; preds = %15
%46 = load i32, i32* %7, align 4, !dbg !7416
%47 = add i32 %46, 1, !dbg !7416
store i32 %47, i32* %7, align 4, !dbg !7416
br label %9, !dbg !7417, !llvm.loop !7418
48: ; preds = %9
%49 = load double, double* %8, align 8, !dbg !7420
ret double %49, !dbg !7421
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixTranspose(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !7422 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7423, metadata !DIExpression()), !dbg !7424
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7425, metadata !DIExpression()), !dbg !7426
call void @llvm.dbg.declare(metadata i32* %6, metadata !7427, metadata !DIExpression()), !dbg !7428
call void @llvm.dbg.declare(metadata i32* %7, metadata !7429, metadata !DIExpression()), !dbg !7430
%9 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7431
%10 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7433
%11 = icmp eq %struct.Matrix_t* %9, %10, !dbg !7434
br i1 %11, label %12, label %102, !dbg !7435
12: ; preds = %2
%13 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7436
%14 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %13, i32 0, i32 0, !dbg !7437
%15 = load i32, i32* %14, align 8, !dbg !7437
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7438
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 1, !dbg !7439
%18 = load i32, i32* %17, align 4, !dbg !7439
%19 = icmp eq i32 %15, %18, !dbg !7440
br i1 %19, label %20, label %102, !dbg !7441
20: ; preds = %12
call void @llvm.dbg.declare(metadata double* %8, metadata !7442, metadata !DIExpression()), !dbg !7444
store i32 0, i32* %6, align 4, !dbg !7445
br label %21, !dbg !7447
21: ; preds = %98, %20
%22 = load i32, i32* %6, align 4, !dbg !7448
%23 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7450
%24 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 0, !dbg !7451
%25 = load i32, i32* %24, align 8, !dbg !7451
%26 = sub i32 %25, 1, !dbg !7452
%27 = icmp ult i32 %22, %26, !dbg !7453
br i1 %27, label %28, label %101, !dbg !7454
28: ; preds = %21
%29 = load i32, i32* %6, align 4, !dbg !7455
%30 = add i32 %29, 1, !dbg !7458
store i32 %30, i32* %7, align 4, !dbg !7459
br label %31, !dbg !7460
31: ; preds = %94, %28
%32 = load i32, i32* %7, align 4, !dbg !7461
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7463
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 1, !dbg !7464
%35 = load i32, i32* %34, align 4, !dbg !7464
%36 = icmp ult i32 %32, %35, !dbg !7465
br i1 %36, label %37, label %97, !dbg !7466
37: ; preds = %31
%38 = load i32, i32* %6, align 4, !dbg !7467
%39 = load i32, i32* %7, align 4, !dbg !7470
%40 = icmp ne i32 %38, %39, !dbg !7471
br i1 %40, label %41, label %93, !dbg !7472
41: ; preds = %37
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7473
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 2, !dbg !7473
%44 = load double*, double** %43, align 8, !dbg !7473
%45 = load i32, i32* %6, align 4, !dbg !7473
%46 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7473
%47 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %46, i32 0, i32 1, !dbg !7473
%48 = load i32, i32* %47, align 4, !dbg !7473
%49 = mul i32 %45, %48, !dbg !7473
%50 = load i32, i32* %7, align 4, !dbg !7473
%51 = add i32 %49, %50, !dbg !7473
%52 = zext i32 %51 to i64, !dbg !7473
%53 = getelementptr inbounds double, double* %44, i64 %52, !dbg !7473
%54 = load double, double* %53, align 8, !dbg !7473
store double %54, double* %8, align 8, !dbg !7475
%55 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7476
%56 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %55, i32 0, i32 2, !dbg !7476
%57 = load double*, double** %56, align 8, !dbg !7476
%58 = load i32, i32* %7, align 4, !dbg !7476
%59 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7476
%60 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %59, i32 0, i32 1, !dbg !7476
%61 = load i32, i32* %60, align 4, !dbg !7476
%62 = mul i32 %58, %61, !dbg !7476
%63 = load i32, i32* %6, align 4, !dbg !7476
%64 = add i32 %62, %63, !dbg !7476
%65 = zext i32 %64 to i64, !dbg !7476
%66 = getelementptr inbounds double, double* %57, i64 %65, !dbg !7476
%67 = load double, double* %66, align 8, !dbg !7476
%68 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7476
%69 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %68, i32 0, i32 2, !dbg !7476
%70 = load double*, double** %69, align 8, !dbg !7476
%71 = load i32, i32* %6, align 4, !dbg !7476
%72 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7476
%73 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %72, i32 0, i32 1, !dbg !7476
%74 = load i32, i32* %73, align 4, !dbg !7476
%75 = mul i32 %71, %74, !dbg !7476
%76 = load i32, i32* %7, align 4, !dbg !7476
%77 = add i32 %75, %76, !dbg !7476
%78 = zext i32 %77 to i64, !dbg !7476
%79 = getelementptr inbounds double, double* %70, i64 %78, !dbg !7476
store double %67, double* %79, align 8, !dbg !7476
%80 = load double, double* %8, align 8, !dbg !7477
%81 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7477
%82 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %81, i32 0, i32 2, !dbg !7477
%83 = load double*, double** %82, align 8, !dbg !7477
%84 = load i32, i32* %7, align 4, !dbg !7477
%85 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7477
%86 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %85, i32 0, i32 1, !dbg !7477
%87 = load i32, i32* %86, align 4, !dbg !7477
%88 = mul i32 %84, %87, !dbg !7477
%89 = load i32, i32* %6, align 4, !dbg !7477
%90 = add i32 %88, %89, !dbg !7477
%91 = zext i32 %90 to i64, !dbg !7477
%92 = getelementptr inbounds double, double* %83, i64 %91, !dbg !7477
store double %80, double* %92, align 8, !dbg !7477
br label %93, !dbg !7478
93: ; preds = %41, %37
br label %94, !dbg !7479
94: ; preds = %93
%95 = load i32, i32* %7, align 4, !dbg !7480
%96 = add i32 %95, 1, !dbg !7480
store i32 %96, i32* %7, align 4, !dbg !7480
br label %31, !dbg !7481, !llvm.loop !7482
97: ; preds = %31
br label %98, !dbg !7484
98: ; preds = %97
%99 = load i32, i32* %6, align 4, !dbg !7485
%100 = add i32 %99, 1, !dbg !7485
store i32 %100, i32* %6, align 4, !dbg !7485
br label %21, !dbg !7486, !llvm.loop !7487
101: ; preds = %21
store i64 1, i64* %3, align 8, !dbg !7489
br label %167, !dbg !7489
102: ; preds = %12, %2
%103 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7490
%104 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %103, i32 0, i32 0, !dbg !7492
%105 = load i32, i32* %104, align 8, !dbg !7492
%106 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7493
%107 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %106, i32 0, i32 1, !dbg !7494
%108 = load i32, i32* %107, align 4, !dbg !7494
%109 = icmp eq i32 %105, %108, !dbg !7495
br i1 %109, label %110, label %166, !dbg !7496
110: ; preds = %102
%111 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7497
%112 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %111, i32 0, i32 1, !dbg !7498
%113 = load i32, i32* %112, align 4, !dbg !7498
%114 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7499
%115 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %114, i32 0, i32 0, !dbg !7500
%116 = load i32, i32* %115, align 8, !dbg !7500
%117 = icmp eq i32 %113, %116, !dbg !7501
br i1 %117, label %118, label %166, !dbg !7502
118: ; preds = %110
store i32 0, i32* %6, align 4, !dbg !7503
br label %119, !dbg !7506
119: ; preds = %162, %118
%120 = load i32, i32* %6, align 4, !dbg !7507
%121 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7509
%122 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %121, i32 0, i32 0, !dbg !7510
%123 = load i32, i32* %122, align 8, !dbg !7510
%124 = icmp ult i32 %120, %123, !dbg !7511
br i1 %124, label %125, label %165, !dbg !7512
125: ; preds = %119
store i32 0, i32* %7, align 4, !dbg !7513
br label %126, !dbg !7516
126: ; preds = %158, %125
%127 = load i32, i32* %7, align 4, !dbg !7517
%128 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7519
%129 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %128, i32 0, i32 1, !dbg !7520
%130 = load i32, i32* %129, align 4, !dbg !7520
%131 = icmp ult i32 %127, %130, !dbg !7521
br i1 %131, label %132, label %161, !dbg !7522
132: ; preds = %126
%133 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7523
%134 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %133, i32 0, i32 2, !dbg !7523
%135 = load double*, double** %134, align 8, !dbg !7523
%136 = load i32, i32* %6, align 4, !dbg !7523
%137 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7523
%138 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %137, i32 0, i32 1, !dbg !7523
%139 = load i32, i32* %138, align 4, !dbg !7523
%140 = mul i32 %136, %139, !dbg !7523
%141 = load i32, i32* %7, align 4, !dbg !7523
%142 = add i32 %140, %141, !dbg !7523
%143 = zext i32 %142 to i64, !dbg !7523
%144 = getelementptr inbounds double, double* %135, i64 %143, !dbg !7523
%145 = load double, double* %144, align 8, !dbg !7523
%146 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7523
%147 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %146, i32 0, i32 2, !dbg !7523
%148 = load double*, double** %147, align 8, !dbg !7523
%149 = load i32, i32* %7, align 4, !dbg !7523
%150 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7523
%151 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %150, i32 0, i32 1, !dbg !7523
%152 = load i32, i32* %151, align 4, !dbg !7523
%153 = mul i32 %149, %152, !dbg !7523
%154 = load i32, i32* %6, align 4, !dbg !7523
%155 = add i32 %153, %154, !dbg !7523
%156 = zext i32 %155 to i64, !dbg !7523
%157 = getelementptr inbounds double, double* %148, i64 %156, !dbg !7523
store double %145, double* %157, align 8, !dbg !7523
br label %158, !dbg !7525
158: ; preds = %132
%159 = load i32, i32* %7, align 4, !dbg !7526
%160 = add i32 %159, 1, !dbg !7526
store i32 %160, i32* %7, align 4, !dbg !7526
br label %126, !dbg !7527, !llvm.loop !7528
161: ; preds = %126
br label %162, !dbg !7530
162: ; preds = %161
%163 = load i32, i32* %6, align 4, !dbg !7531
%164 = add i32 %163, 1, !dbg !7531
store i32 %164, i32* %6, align 4, !dbg !7531
br label %119, !dbg !7532, !llvm.loop !7533
165: ; preds = %119
store i64 1, i64* %3, align 8, !dbg !7535
br label %167, !dbg !7535
166: ; preds = %110, %102
store i64 0, i64* %3, align 8, !dbg !7536
br label %167, !dbg !7536
167: ; preds = %166, %165, %101
%168 = load i64, i64* %3, align 8, !dbg !7537
ret i64 %168, !dbg !7537
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixInverse(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !7538 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7539, metadata !DIExpression()), !dbg !7540
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7541, metadata !DIExpression()), !dbg !7542
%6 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7543
%7 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %6, i32 0, i32 0, !dbg !7545
%8 = load i32, i32* %7, align 8, !dbg !7545
%9 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7546
%10 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %9, i32 0, i32 1, !dbg !7547
%11 = load i32, i32* %10, align 4, !dbg !7547
%12 = icmp ne i32 %8, %11, !dbg !7548
br i1 %12, label %29, label %13, !dbg !7549
13: ; preds = %2
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7550
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 0, !dbg !7551
%16 = load i32, i32* %15, align 8, !dbg !7551
%17 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7552
%18 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %17, i32 0, i32 1, !dbg !7553
%19 = load i32, i32* %18, align 4, !dbg !7553
%20 = icmp ne i32 %16, %19, !dbg !7554
br i1 %20, label %29, label %21, !dbg !7555
21: ; preds = %13
%22 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7556
%23 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %22, i32 0, i32 0, !dbg !7557
%24 = load i32, i32* %23, align 8, !dbg !7557
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7558
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 0, !dbg !7559
%27 = load i32, i32* %26, align 8, !dbg !7559
%28 = icmp ne i32 %24, %27, !dbg !7560
br i1 %28, label %29, label %30, !dbg !7561
29: ; preds = %21, %13, %2
store i64 0, i64* %3, align 8, !dbg !7562
br label %62, !dbg !7562
30: ; preds = %21
%31 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7563
%32 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %31, i32 0, i32 0, !dbg !7564
%33 = load i32, i32* %32, align 8, !dbg !7564
switch i32 %33, label %61 [
i32 1, label %34
i32 2, label %53
i32 3, label %57
], !dbg !7565
34: ; preds = %30
%35 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7566
%36 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %35, i32 0, i32 2, !dbg !7569
%37 = load double*, double** %36, align 8, !dbg !7569
%38 = getelementptr inbounds double, double* %37, i64 0, !dbg !7566
%39 = load double, double* %38, align 8, !dbg !7566
%40 = fcmp une double %39, 0.000000e+00, !dbg !7570
br i1 %40, label %41, label %52, !dbg !7571
41: ; preds = %34
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7572
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 2, !dbg !7574
%44 = load double*, double** %43, align 8, !dbg !7574
%45 = getelementptr inbounds double, double* %44, i64 0, !dbg !7572
%46 = load double, double* %45, align 8, !dbg !7572
%47 = fdiv double 1.000000e+00, %46, !dbg !7575
%48 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7576
%49 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %48, i32 0, i32 2, !dbg !7577
%50 = load double*, double** %49, align 8, !dbg !7577
%51 = getelementptr inbounds double, double* %50, i64 0, !dbg !7576
store double %47, double* %51, align 8, !dbg !7578
store i64 1, i64* %3, align 8, !dbg !7579
br label %62, !dbg !7579
52: ; preds = %34
store i64 0, i64* %3, align 8, !dbg !7580
br label %62, !dbg !7580
53: ; preds = %30
%54 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7581
%55 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7582
%56 = call i64 @matrixInverse2x2(%struct.Matrix_t* %54, %struct.Matrix_t* %55), !dbg !7583
store i64 %56, i64* %3, align 8, !dbg !7584
br label %62, !dbg !7584
57: ; preds = %30
%58 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7585
%59 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7586
%60 = call i64 @matrixInverse3x3(%struct.Matrix_t* %58, %struct.Matrix_t* %59), !dbg !7587
store i64 %60, i64* %3, align 8, !dbg !7588
br label %62, !dbg !7588
61: ; preds = %30
store i64 0, i64* %3, align 8, !dbg !7589
br label %62, !dbg !7589
62: ; preds = %61, %57, %53, %52, %41, %29
%63 = load i64, i64* %3, align 8, !dbg !7590
ret i64 %63, !dbg !7590
}
; Function Attrs: noinline nounwind optnone uwtable
define internal i64 @matrixInverse2x2(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !7591 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
%9 = alloca double, align 8
%10 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7592, metadata !DIExpression()), !dbg !7593
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7594, metadata !DIExpression()), !dbg !7595
call void @llvm.dbg.declare(metadata double* %6, metadata !7596, metadata !DIExpression()), !dbg !7597
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7598
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 2, !dbg !7598
%13 = load double*, double** %12, align 8, !dbg !7598
%14 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7598
%15 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %14, i32 0, i32 1, !dbg !7598
%16 = load i32, i32* %15, align 4, !dbg !7598
%17 = mul i32 0, %16, !dbg !7598
%18 = add i32 %17, 0, !dbg !7598
%19 = zext i32 %18 to i64, !dbg !7598
%20 = getelementptr inbounds double, double* %13, i64 %19, !dbg !7598
%21 = load double, double* %20, align 8, !dbg !7598
store double %21, double* %6, align 8, !dbg !7597
call void @llvm.dbg.declare(metadata double* %7, metadata !7599, metadata !DIExpression()), !dbg !7600
%22 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7601
%23 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %22, i32 0, i32 2, !dbg !7601
%24 = load double*, double** %23, align 8, !dbg !7601
%25 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7601
%26 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 1, !dbg !7601
%27 = load i32, i32* %26, align 4, !dbg !7601
%28 = mul i32 0, %27, !dbg !7601
%29 = add i32 %28, 1, !dbg !7601
%30 = zext i32 %29 to i64, !dbg !7601
%31 = getelementptr inbounds double, double* %24, i64 %30, !dbg !7601
%32 = load double, double* %31, align 8, !dbg !7601
store double %32, double* %7, align 8, !dbg !7600
call void @llvm.dbg.declare(metadata double* %8, metadata !7602, metadata !DIExpression()), !dbg !7603
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7604
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 2, !dbg !7604
%35 = load double*, double** %34, align 8, !dbg !7604
%36 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7604
%37 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %36, i32 0, i32 1, !dbg !7604
%38 = load i32, i32* %37, align 4, !dbg !7604
%39 = mul i32 1, %38, !dbg !7604
%40 = add i32 %39, 0, !dbg !7604
%41 = zext i32 %40 to i64, !dbg !7604
%42 = getelementptr inbounds double, double* %35, i64 %41, !dbg !7604
%43 = load double, double* %42, align 8, !dbg !7604
store double %43, double* %8, align 8, !dbg !7603
call void @llvm.dbg.declare(metadata double* %9, metadata !7605, metadata !DIExpression()), !dbg !7606
%44 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7607
%45 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %44, i32 0, i32 2, !dbg !7607
%46 = load double*, double** %45, align 8, !dbg !7607
%47 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7607
%48 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %47, i32 0, i32 1, !dbg !7607
%49 = load i32, i32* %48, align 4, !dbg !7607
%50 = mul i32 1, %49, !dbg !7607
%51 = add i32 %50, 1, !dbg !7607
%52 = zext i32 %51 to i64, !dbg !7607
%53 = getelementptr inbounds double, double* %46, i64 %52, !dbg !7607
%54 = load double, double* %53, align 8, !dbg !7607
store double %54, double* %9, align 8, !dbg !7606
call void @llvm.dbg.declare(metadata double* %10, metadata !7608, metadata !DIExpression()), !dbg !7609
%55 = load double, double* %6, align 8, !dbg !7610
%56 = load double, double* %9, align 8, !dbg !7611
%57 = fmul double %55, %56, !dbg !7612
%58 = load double, double* %7, align 8, !dbg !7613
%59 = load double, double* %8, align 8, !dbg !7614
%60 = fmul double %58, %59, !dbg !7615
%61 = fsub double %57, %60, !dbg !7616
store double %61, double* %10, align 8, !dbg !7609
%62 = load double, double* %10, align 8, !dbg !7617
%63 = fcmp une double %62, 0.000000e+00, !dbg !7619
br i1 %63, label %64, label %121, !dbg !7620
64: ; preds = %2
%65 = load double, double* %10, align 8, !dbg !7621
%66 = fdiv double 1.000000e+00, %65, !dbg !7623
store double %66, double* %10, align 8, !dbg !7624
%67 = load double, double* %10, align 8, !dbg !7625
%68 = load double, double* %9, align 8, !dbg !7625
%69 = fmul double %67, %68, !dbg !7625
%70 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7625
%71 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %70, i32 0, i32 2, !dbg !7625
%72 = load double*, double** %71, align 8, !dbg !7625
%73 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7625
%74 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %73, i32 0, i32 1, !dbg !7625
%75 = load i32, i32* %74, align 4, !dbg !7625
%76 = mul i32 0, %75, !dbg !7625
%77 = add i32 %76, 0, !dbg !7625
%78 = zext i32 %77 to i64, !dbg !7625
%79 = getelementptr inbounds double, double* %72, i64 %78, !dbg !7625
store double %69, double* %79, align 8, !dbg !7625
%80 = load double, double* %10, align 8, !dbg !7626
%81 = fneg double %80, !dbg !7626
%82 = load double, double* %7, align 8, !dbg !7626
%83 = fmul double %81, %82, !dbg !7626
%84 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7626
%85 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %84, i32 0, i32 2, !dbg !7626
%86 = load double*, double** %85, align 8, !dbg !7626
%87 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7626
%88 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %87, i32 0, i32 1, !dbg !7626
%89 = load i32, i32* %88, align 4, !dbg !7626
%90 = mul i32 0, %89, !dbg !7626
%91 = add i32 %90, 1, !dbg !7626
%92 = zext i32 %91 to i64, !dbg !7626
%93 = getelementptr inbounds double, double* %86, i64 %92, !dbg !7626
store double %83, double* %93, align 8, !dbg !7626
%94 = load double, double* %10, align 8, !dbg !7627
%95 = fneg double %94, !dbg !7627
%96 = load double, double* %8, align 8, !dbg !7627
%97 = fmul double %95, %96, !dbg !7627
%98 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7627
%99 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %98, i32 0, i32 2, !dbg !7627
%100 = load double*, double** %99, align 8, !dbg !7627
%101 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7627
%102 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %101, i32 0, i32 1, !dbg !7627
%103 = load i32, i32* %102, align 4, !dbg !7627
%104 = mul i32 1, %103, !dbg !7627
%105 = add i32 %104, 0, !dbg !7627
%106 = zext i32 %105 to i64, !dbg !7627
%107 = getelementptr inbounds double, double* %100, i64 %106, !dbg !7627
store double %97, double* %107, align 8, !dbg !7627
%108 = load double, double* %10, align 8, !dbg !7628
%109 = load double, double* %6, align 8, !dbg !7628
%110 = fmul double %108, %109, !dbg !7628
%111 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7628
%112 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %111, i32 0, i32 2, !dbg !7628
%113 = load double*, double** %112, align 8, !dbg !7628
%114 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7628
%115 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %114, i32 0, i32 1, !dbg !7628
%116 = load i32, i32* %115, align 4, !dbg !7628
%117 = mul i32 1, %116, !dbg !7628
%118 = add i32 %117, 1, !dbg !7628
%119 = zext i32 %118 to i64, !dbg !7628
%120 = getelementptr inbounds double, double* %113, i64 %119, !dbg !7628
store double %110, double* %120, align 8, !dbg !7628
store i64 1, i64* %3, align 8, !dbg !7629
br label %122, !dbg !7629
121: ; preds = %2
store i64 0, i64* %3, align 8, !dbg !7630
br label %122, !dbg !7630
122: ; preds = %121, %64
%123 = load i64, i64* %3, align 8, !dbg !7631
ret i64 %123, !dbg !7631
}
; Function Attrs: noinline nounwind optnone uwtable
define internal i64 @matrixInverse3x3(%struct.Matrix_t* %0, %struct.Matrix_t* %1) #0 !dbg !7632 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
%9 = alloca double, align 8
%10 = alloca double, align 8
%11 = alloca double, align 8
%12 = alloca double, align 8
%13 = alloca double, align 8
%14 = alloca double, align 8
%15 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !7633, metadata !DIExpression()), !dbg !7634
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !7635, metadata !DIExpression()), !dbg !7636
call void @llvm.dbg.declare(metadata double* %6, metadata !7637, metadata !DIExpression()), !dbg !7638
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7639
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 2, !dbg !7639
%18 = load double*, double** %17, align 8, !dbg !7639
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7639
%20 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 1, !dbg !7639
%21 = load i32, i32* %20, align 4, !dbg !7639
%22 = mul i32 0, %21, !dbg !7639
%23 = add i32 %22, 0, !dbg !7639
%24 = zext i32 %23 to i64, !dbg !7639
%25 = getelementptr inbounds double, double* %18, i64 %24, !dbg !7639
%26 = load double, double* %25, align 8, !dbg !7639
store double %26, double* %6, align 8, !dbg !7638
call void @llvm.dbg.declare(metadata double* %7, metadata !7640, metadata !DIExpression()), !dbg !7641
%27 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7642
%28 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %27, i32 0, i32 2, !dbg !7642
%29 = load double*, double** %28, align 8, !dbg !7642
%30 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7642
%31 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %30, i32 0, i32 1, !dbg !7642
%32 = load i32, i32* %31, align 4, !dbg !7642
%33 = mul i32 0, %32, !dbg !7642
%34 = add i32 %33, 1, !dbg !7642
%35 = zext i32 %34 to i64, !dbg !7642
%36 = getelementptr inbounds double, double* %29, i64 %35, !dbg !7642
%37 = load double, double* %36, align 8, !dbg !7642
store double %37, double* %7, align 8, !dbg !7641
call void @llvm.dbg.declare(metadata double* %8, metadata !7643, metadata !DIExpression()), !dbg !7644
%38 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7645
%39 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %38, i32 0, i32 2, !dbg !7645
%40 = load double*, double** %39, align 8, !dbg !7645
%41 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7645
%42 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %41, i32 0, i32 1, !dbg !7645
%43 = load i32, i32* %42, align 4, !dbg !7645
%44 = mul i32 0, %43, !dbg !7645
%45 = add i32 %44, 2, !dbg !7645
%46 = zext i32 %45 to i64, !dbg !7645
%47 = getelementptr inbounds double, double* %40, i64 %46, !dbg !7645
%48 = load double, double* %47, align 8, !dbg !7645
store double %48, double* %8, align 8, !dbg !7644
call void @llvm.dbg.declare(metadata double* %9, metadata !7646, metadata !DIExpression()), !dbg !7647
%49 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7648
%50 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %49, i32 0, i32 2, !dbg !7648
%51 = load double*, double** %50, align 8, !dbg !7648
%52 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7648
%53 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %52, i32 0, i32 1, !dbg !7648
%54 = load i32, i32* %53, align 4, !dbg !7648
%55 = mul i32 1, %54, !dbg !7648
%56 = add i32 %55, 0, !dbg !7648
%57 = zext i32 %56 to i64, !dbg !7648
%58 = getelementptr inbounds double, double* %51, i64 %57, !dbg !7648
%59 = load double, double* %58, align 8, !dbg !7648
store double %59, double* %9, align 8, !dbg !7647
call void @llvm.dbg.declare(metadata double* %10, metadata !7649, metadata !DIExpression()), !dbg !7650
%60 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7651
%61 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %60, i32 0, i32 2, !dbg !7651
%62 = load double*, double** %61, align 8, !dbg !7651
%63 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7651
%64 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %63, i32 0, i32 1, !dbg !7651
%65 = load i32, i32* %64, align 4, !dbg !7651
%66 = mul i32 1, %65, !dbg !7651
%67 = add i32 %66, 1, !dbg !7651
%68 = zext i32 %67 to i64, !dbg !7651
%69 = getelementptr inbounds double, double* %62, i64 %68, !dbg !7651
%70 = load double, double* %69, align 8, !dbg !7651
store double %70, double* %10, align 8, !dbg !7650
call void @llvm.dbg.declare(metadata double* %11, metadata !7652, metadata !DIExpression()), !dbg !7653
%71 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7654
%72 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %71, i32 0, i32 2, !dbg !7654
%73 = load double*, double** %72, align 8, !dbg !7654
%74 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7654
%75 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %74, i32 0, i32 1, !dbg !7654
%76 = load i32, i32* %75, align 4, !dbg !7654
%77 = mul i32 1, %76, !dbg !7654
%78 = add i32 %77, 2, !dbg !7654
%79 = zext i32 %78 to i64, !dbg !7654
%80 = getelementptr inbounds double, double* %73, i64 %79, !dbg !7654
%81 = load double, double* %80, align 8, !dbg !7654
store double %81, double* %11, align 8, !dbg !7653
call void @llvm.dbg.declare(metadata double* %12, metadata !7655, metadata !DIExpression()), !dbg !7656
%82 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7657
%83 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %82, i32 0, i32 2, !dbg !7657
%84 = load double*, double** %83, align 8, !dbg !7657
%85 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7657
%86 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %85, i32 0, i32 1, !dbg !7657
%87 = load i32, i32* %86, align 4, !dbg !7657
%88 = mul i32 2, %87, !dbg !7657
%89 = add i32 %88, 0, !dbg !7657
%90 = zext i32 %89 to i64, !dbg !7657
%91 = getelementptr inbounds double, double* %84, i64 %90, !dbg !7657
%92 = load double, double* %91, align 8, !dbg !7657
store double %92, double* %12, align 8, !dbg !7656
call void @llvm.dbg.declare(metadata double* %13, metadata !7658, metadata !DIExpression()), !dbg !7659
%93 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7660
%94 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %93, i32 0, i32 2, !dbg !7660
%95 = load double*, double** %94, align 8, !dbg !7660
%96 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7660
%97 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %96, i32 0, i32 1, !dbg !7660
%98 = load i32, i32* %97, align 4, !dbg !7660
%99 = mul i32 2, %98, !dbg !7660
%100 = add i32 %99, 1, !dbg !7660
%101 = zext i32 %100 to i64, !dbg !7660
%102 = getelementptr inbounds double, double* %95, i64 %101, !dbg !7660
%103 = load double, double* %102, align 8, !dbg !7660
store double %103, double* %13, align 8, !dbg !7659
call void @llvm.dbg.declare(metadata double* %14, metadata !7661, metadata !DIExpression()), !dbg !7662
%104 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7663
%105 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %104, i32 0, i32 2, !dbg !7663
%106 = load double*, double** %105, align 8, !dbg !7663
%107 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !7663
%108 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %107, i32 0, i32 1, !dbg !7663
%109 = load i32, i32* %108, align 4, !dbg !7663
%110 = mul i32 2, %109, !dbg !7663
%111 = add i32 %110, 2, !dbg !7663
%112 = zext i32 %111 to i64, !dbg !7663
%113 = getelementptr inbounds double, double* %106, i64 %112, !dbg !7663
%114 = load double, double* %113, align 8, !dbg !7663
store double %114, double* %14, align 8, !dbg !7662
call void @llvm.dbg.declare(metadata double* %15, metadata !7664, metadata !DIExpression()), !dbg !7665
%115 = load double, double* %6, align 8, !dbg !7666
%116 = load double, double* %10, align 8, !dbg !7667
%117 = fmul double %115, %116, !dbg !7668
%118 = load double, double* %14, align 8, !dbg !7669
%119 = fmul double %117, %118, !dbg !7670
%120 = load double, double* %9, align 8, !dbg !7671
%121 = load double, double* %13, align 8, !dbg !7672
%122 = fmul double %120, %121, !dbg !7673
%123 = load double, double* %8, align 8, !dbg !7674
%124 = fmul double %122, %123, !dbg !7675
%125 = fadd double %119, %124, !dbg !7676
%126 = load double, double* %12, align 8, !dbg !7677
%127 = load double, double* %7, align 8, !dbg !7678
%128 = fmul double %126, %127, !dbg !7679
%129 = load double, double* %11, align 8, !dbg !7680
%130 = fmul double %128, %129, !dbg !7681
%131 = fadd double %125, %130, !dbg !7682
%132 = load double, double* %6, align 8, !dbg !7683
%133 = load double, double* %13, align 8, !dbg !7684
%134 = fmul double %132, %133, !dbg !7685
%135 = load double, double* %11, align 8, !dbg !7686
%136 = fmul double %134, %135, !dbg !7687
%137 = fsub double %131, %136, !dbg !7688
%138 = load double, double* %12, align 8, !dbg !7689
%139 = load double, double* %10, align 8, !dbg !7690
%140 = fmul double %138, %139, !dbg !7691
%141 = load double, double* %8, align 8, !dbg !7692
%142 = fmul double %140, %141, !dbg !7693
%143 = fsub double %137, %142, !dbg !7694
%144 = load double, double* %9, align 8, !dbg !7695
%145 = load double, double* %7, align 8, !dbg !7696
%146 = fmul double %144, %145, !dbg !7697
%147 = load double, double* %14, align 8, !dbg !7698
%148 = fmul double %146, %147, !dbg !7699
%149 = fsub double %143, %148, !dbg !7700
store double %149, double* %15, align 8, !dbg !7665
%150 = load double, double* %15, align 8, !dbg !7701
%151 = fcmp une double %150, 0.000000e+00, !dbg !7703
br i1 %151, label %152, label %326, !dbg !7704
152: ; preds = %2
%153 = load double, double* %15, align 8, !dbg !7705
%154 = fdiv double 1.000000e+00, %153, !dbg !7707
store double %154, double* %15, align 8, !dbg !7708
%155 = load double, double* %15, align 8, !dbg !7709
%156 = load double, double* %10, align 8, !dbg !7709
%157 = load double, double* %14, align 8, !dbg !7709
%158 = fmul double %156, %157, !dbg !7709
%159 = load double, double* %11, align 8, !dbg !7709
%160 = load double, double* %13, align 8, !dbg !7709
%161 = fmul double %159, %160, !dbg !7709
%162 = fsub double %158, %161, !dbg !7709
%163 = fmul double %155, %162, !dbg !7709
%164 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7709
%165 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %164, i32 0, i32 2, !dbg !7709
%166 = load double*, double** %165, align 8, !dbg !7709
%167 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7709
%168 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %167, i32 0, i32 1, !dbg !7709
%169 = load i32, i32* %168, align 4, !dbg !7709
%170 = mul i32 0, %169, !dbg !7709
%171 = add i32 %170, 0, !dbg !7709
%172 = zext i32 %171 to i64, !dbg !7709
%173 = getelementptr inbounds double, double* %166, i64 %172, !dbg !7709
store double %163, double* %173, align 8, !dbg !7709
%174 = load double, double* %15, align 8, !dbg !7710
%175 = load double, double* %8, align 8, !dbg !7710
%176 = load double, double* %13, align 8, !dbg !7710
%177 = fmul double %175, %176, !dbg !7710
%178 = load double, double* %7, align 8, !dbg !7710
%179 = load double, double* %14, align 8, !dbg !7710
%180 = fmul double %178, %179, !dbg !7710
%181 = fsub double %177, %180, !dbg !7710
%182 = fmul double %174, %181, !dbg !7710
%183 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7710
%184 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %183, i32 0, i32 2, !dbg !7710
%185 = load double*, double** %184, align 8, !dbg !7710
%186 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7710
%187 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %186, i32 0, i32 1, !dbg !7710
%188 = load i32, i32* %187, align 4, !dbg !7710
%189 = mul i32 0, %188, !dbg !7710
%190 = add i32 %189, 1, !dbg !7710
%191 = zext i32 %190 to i64, !dbg !7710
%192 = getelementptr inbounds double, double* %185, i64 %191, !dbg !7710
store double %182, double* %192, align 8, !dbg !7710
%193 = load double, double* %15, align 8, !dbg !7711
%194 = load double, double* %7, align 8, !dbg !7711
%195 = load double, double* %11, align 8, !dbg !7711
%196 = fmul double %194, %195, !dbg !7711
%197 = load double, double* %8, align 8, !dbg !7711
%198 = load double, double* %10, align 8, !dbg !7711
%199 = fmul double %197, %198, !dbg !7711
%200 = fsub double %196, %199, !dbg !7711
%201 = fmul double %193, %200, !dbg !7711
%202 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7711
%203 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %202, i32 0, i32 2, !dbg !7711
%204 = load double*, double** %203, align 8, !dbg !7711
%205 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7711
%206 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %205, i32 0, i32 1, !dbg !7711
%207 = load i32, i32* %206, align 4, !dbg !7711
%208 = mul i32 0, %207, !dbg !7711
%209 = add i32 %208, 2, !dbg !7711
%210 = zext i32 %209 to i64, !dbg !7711
%211 = getelementptr inbounds double, double* %204, i64 %210, !dbg !7711
store double %201, double* %211, align 8, !dbg !7711
%212 = load double, double* %15, align 8, !dbg !7712
%213 = load double, double* %11, align 8, !dbg !7712
%214 = load double, double* %12, align 8, !dbg !7712
%215 = fmul double %213, %214, !dbg !7712
%216 = load double, double* %9, align 8, !dbg !7712
%217 = load double, double* %14, align 8, !dbg !7712
%218 = fmul double %216, %217, !dbg !7712
%219 = fsub double %215, %218, !dbg !7712
%220 = fmul double %212, %219, !dbg !7712
%221 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7712
%222 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %221, i32 0, i32 2, !dbg !7712
%223 = load double*, double** %222, align 8, !dbg !7712
%224 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7712
%225 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %224, i32 0, i32 1, !dbg !7712
%226 = load i32, i32* %225, align 4, !dbg !7712
%227 = mul i32 1, %226, !dbg !7712
%228 = add i32 %227, 0, !dbg !7712
%229 = zext i32 %228 to i64, !dbg !7712
%230 = getelementptr inbounds double, double* %223, i64 %229, !dbg !7712
store double %220, double* %230, align 8, !dbg !7712
%231 = load double, double* %15, align 8, !dbg !7713
%232 = load double, double* %6, align 8, !dbg !7713
%233 = load double, double* %14, align 8, !dbg !7713
%234 = fmul double %232, %233, !dbg !7713
%235 = load double, double* %8, align 8, !dbg !7713
%236 = load double, double* %12, align 8, !dbg !7713
%237 = fmul double %235, %236, !dbg !7713
%238 = fsub double %234, %237, !dbg !7713
%239 = fmul double %231, %238, !dbg !7713
%240 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7713
%241 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %240, i32 0, i32 2, !dbg !7713
%242 = load double*, double** %241, align 8, !dbg !7713
%243 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7713
%244 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %243, i32 0, i32 1, !dbg !7713
%245 = load i32, i32* %244, align 4, !dbg !7713
%246 = mul i32 1, %245, !dbg !7713
%247 = add i32 %246, 1, !dbg !7713
%248 = zext i32 %247 to i64, !dbg !7713
%249 = getelementptr inbounds double, double* %242, i64 %248, !dbg !7713
store double %239, double* %249, align 8, !dbg !7713
%250 = load double, double* %15, align 8, !dbg !7714
%251 = load double, double* %8, align 8, !dbg !7714
%252 = load double, double* %9, align 8, !dbg !7714
%253 = fmul double %251, %252, !dbg !7714
%254 = load double, double* %6, align 8, !dbg !7714
%255 = load double, double* %11, align 8, !dbg !7714
%256 = fmul double %254, %255, !dbg !7714
%257 = fsub double %253, %256, !dbg !7714
%258 = fmul double %250, %257, !dbg !7714
%259 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7714
%260 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %259, i32 0, i32 2, !dbg !7714
%261 = load double*, double** %260, align 8, !dbg !7714
%262 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7714
%263 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %262, i32 0, i32 1, !dbg !7714
%264 = load i32, i32* %263, align 4, !dbg !7714
%265 = mul i32 1, %264, !dbg !7714
%266 = add i32 %265, 2, !dbg !7714
%267 = zext i32 %266 to i64, !dbg !7714
%268 = getelementptr inbounds double, double* %261, i64 %267, !dbg !7714
store double %258, double* %268, align 8, !dbg !7714
%269 = load double, double* %15, align 8, !dbg !7715
%270 = load double, double* %9, align 8, !dbg !7715
%271 = load double, double* %13, align 8, !dbg !7715
%272 = fmul double %270, %271, !dbg !7715
%273 = load double, double* %10, align 8, !dbg !7715
%274 = load double, double* %12, align 8, !dbg !7715
%275 = fmul double %273, %274, !dbg !7715
%276 = fsub double %272, %275, !dbg !7715
%277 = fmul double %269, %276, !dbg !7715
%278 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7715
%279 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %278, i32 0, i32 2, !dbg !7715
%280 = load double*, double** %279, align 8, !dbg !7715
%281 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7715
%282 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %281, i32 0, i32 1, !dbg !7715
%283 = load i32, i32* %282, align 4, !dbg !7715
%284 = mul i32 2, %283, !dbg !7715
%285 = add i32 %284, 0, !dbg !7715
%286 = zext i32 %285 to i64, !dbg !7715
%287 = getelementptr inbounds double, double* %280, i64 %286, !dbg !7715
store double %277, double* %287, align 8, !dbg !7715
%288 = load double, double* %15, align 8, !dbg !7716
%289 = load double, double* %7, align 8, !dbg !7716
%290 = load double, double* %12, align 8, !dbg !7716
%291 = fmul double %289, %290, !dbg !7716
%292 = load double, double* %6, align 8, !dbg !7716
%293 = load double, double* %13, align 8, !dbg !7716
%294 = fmul double %292, %293, !dbg !7716
%295 = fsub double %291, %294, !dbg !7716
%296 = fmul double %288, %295, !dbg !7716
%297 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7716
%298 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %297, i32 0, i32 2, !dbg !7716
%299 = load double*, double** %298, align 8, !dbg !7716
%300 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7716
%301 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %300, i32 0, i32 1, !dbg !7716
%302 = load i32, i32* %301, align 4, !dbg !7716
%303 = mul i32 2, %302, !dbg !7716
%304 = add i32 %303, 1, !dbg !7716
%305 = zext i32 %304 to i64, !dbg !7716
%306 = getelementptr inbounds double, double* %299, i64 %305, !dbg !7716
store double %296, double* %306, align 8, !dbg !7716
%307 = load double, double* %15, align 8, !dbg !7717
%308 = load double, double* %6, align 8, !dbg !7717
%309 = load double, double* %10, align 8, !dbg !7717
%310 = fmul double %308, %309, !dbg !7717
%311 = load double, double* %7, align 8, !dbg !7717
%312 = load double, double* %9, align 8, !dbg !7717
%313 = fmul double %311, %312, !dbg !7717
%314 = fsub double %310, %313, !dbg !7717
%315 = fmul double %307, %314, !dbg !7717
%316 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7717
%317 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %316, i32 0, i32 2, !dbg !7717
%318 = load double*, double** %317, align 8, !dbg !7717
%319 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !7717
%320 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %319, i32 0, i32 1, !dbg !7717
%321 = load i32, i32* %320, align 4, !dbg !7717
%322 = mul i32 2, %321, !dbg !7717
%323 = add i32 %322, 2, !dbg !7717
%324 = zext i32 %323 to i64, !dbg !7717
%325 = getelementptr inbounds double, double* %318, i64 %324, !dbg !7717
store double %315, double* %325, align 8, !dbg !7717
store i64 1, i64* %3, align 8, !dbg !7718
br label %327, !dbg !7718
326: ; preds = %2
store i64 0, i64* %3, align 8, !dbg !7719
br label %327, !dbg !7719
327: ; preds = %326, %152
%328 = load i64, i64* %3, align 8, !dbg !7720
ret i64 %328, !dbg !7720
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @testForIdentity(%struct.Matrix_t* %0) #0 !dbg !7721 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !7724, metadata !DIExpression()), !dbg !7725
call void @llvm.dbg.declare(metadata i32* %3, metadata !7726, metadata !DIExpression()), !dbg !7727
call void @llvm.dbg.declare(metadata i32* %4, metadata !7728, metadata !DIExpression()), !dbg !7729
call void @llvm.dbg.declare(metadata double* %5, metadata !7730, metadata !DIExpression()), !dbg !7731
store double 0.000000e+00, double* %5, align 8, !dbg !7731
store i32 0, i32* %3, align 4, !dbg !7732
br label %6, !dbg !7734
6: ; preds = %46, %1
%7 = load i32, i32* %3, align 4, !dbg !7735
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7737
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !7738
%10 = load i32, i32* %9, align 8, !dbg !7738
%11 = icmp ult i32 %7, %10, !dbg !7739
br i1 %11, label %12, label %49, !dbg !7740
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !7741
br label %13, !dbg !7744
13: ; preds = %42, %12
%14 = load i32, i32* %4, align 4, !dbg !7745
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7747
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 1, !dbg !7748
%17 = load i32, i32* %16, align 4, !dbg !7748
%18 = icmp ult i32 %14, %17, !dbg !7749
br i1 %18, label %19, label %45, !dbg !7750
19: ; preds = %13
%20 = load i32, i32* %3, align 4, !dbg !7751
%21 = load i32, i32* %4, align 4, !dbg !7754
%22 = icmp eq i32 %20, %21, !dbg !7755
br i1 %22, label %23, label %32, !dbg !7756
23: ; preds = %19
%24 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7757
%25 = load i32, i32* %3, align 4, !dbg !7758
%26 = load i32, i32* %4, align 4, !dbg !7759
%27 = call double @matrixGet(%struct.Matrix_t* %24, i32 %25, i32 %26), !dbg !7760
%28 = fsub double 1.000000e+00, %27, !dbg !7761
%29 = call double @llvm.fabs.f64(double %28), !dbg !7762
%30 = load double, double* %5, align 8, !dbg !7763
%31 = fadd double %30, %29, !dbg !7763
store double %31, double* %5, align 8, !dbg !7763
br label %41, !dbg !7764
32: ; preds = %19
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7765
%34 = load i32, i32* %3, align 4, !dbg !7766
%35 = load i32, i32* %4, align 4, !dbg !7767
%36 = call double @matrixGet(%struct.Matrix_t* %33, i32 %34, i32 %35), !dbg !7768
%37 = fsub double 0.000000e+00, %36, !dbg !7769
%38 = call double @llvm.fabs.f64(double %37), !dbg !7770
%39 = load double, double* %5, align 8, !dbg !7771
%40 = fadd double %39, %38, !dbg !7771
store double %40, double* %5, align 8, !dbg !7771
br label %41
41: ; preds = %32, %23
br label %42, !dbg !7772
42: ; preds = %41
%43 = load i32, i32* %4, align 4, !dbg !7773
%44 = add i32 %43, 1, !dbg !7773
store i32 %44, i32* %4, align 4, !dbg !7773
br label %13, !dbg !7774, !llvm.loop !7775
45: ; preds = %13
br label %46, !dbg !7777
46: ; preds = %45
%47 = load i32, i32* %3, align 4, !dbg !7778
%48 = add i32 %47, 1, !dbg !7778
store i32 %48, i32* %3, align 4, !dbg !7778
br label %6, !dbg !7779, !llvm.loop !7780
49: ; preds = %6
%50 = load double, double* %5, align 8, !dbg !7782
ret double %50, !dbg !7783
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @testForZeroMatrix(%struct.Matrix_t* %0) #0 !dbg !7784 {
%2 = alloca %struct.Matrix_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca double, align 8
store %struct.Matrix_t* %0, %struct.Matrix_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %2, metadata !7785, metadata !DIExpression()), !dbg !7786
call void @llvm.dbg.declare(metadata i32* %3, metadata !7787, metadata !DIExpression()), !dbg !7788
call void @llvm.dbg.declare(metadata i32* %4, metadata !7789, metadata !DIExpression()), !dbg !7790
call void @llvm.dbg.declare(metadata double* %5, metadata !7791, metadata !DIExpression()), !dbg !7792
store double 0.000000e+00, double* %5, align 8, !dbg !7792
store i32 0, i32* %3, align 4, !dbg !7793
br label %6, !dbg !7795
6: ; preds = %32, %1
%7 = load i32, i32* %3, align 4, !dbg !7796
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7798
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !7799
%10 = load i32, i32* %9, align 8, !dbg !7799
%11 = icmp ult i32 %7, %10, !dbg !7800
br i1 %11, label %12, label %35, !dbg !7801
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !7802
br label %13, !dbg !7805
13: ; preds = %28, %12
%14 = load i32, i32* %4, align 4, !dbg !7806
%15 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7808
%16 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %15, i32 0, i32 1, !dbg !7809
%17 = load i32, i32* %16, align 4, !dbg !7809
%18 = icmp ult i32 %14, %17, !dbg !7810
br i1 %18, label %19, label %31, !dbg !7811
19: ; preds = %13
%20 = load %struct.Matrix_t*, %struct.Matrix_t** %2, align 8, !dbg !7812
%21 = load i32, i32* %3, align 4, !dbg !7814
%22 = load i32, i32* %4, align 4, !dbg !7815
%23 = call double @matrixGet(%struct.Matrix_t* %20, i32 %21, i32 %22), !dbg !7816
%24 = fsub double 0.000000e+00, %23, !dbg !7817
%25 = call double @llvm.fabs.f64(double %24), !dbg !7818
%26 = load double, double* %5, align 8, !dbg !7819
%27 = fadd double %26, %25, !dbg !7819
store double %27, double* %5, align 8, !dbg !7819
br label %28, !dbg !7820
28: ; preds = %19
%29 = load i32, i32* %4, align 4, !dbg !7821
%30 = add i32 %29, 1, !dbg !7821
store i32 %30, i32* %4, align 4, !dbg !7821
br label %13, !dbg !7822, !llvm.loop !7823
31: ; preds = %13
br label %32, !dbg !7825
32: ; preds = %31
%33 = load i32, i32* %3, align 4, !dbg !7826
%34 = add i32 %33, 1, !dbg !7826
store i32 %34, i32* %3, align 4, !dbg !7826
br label %6, !dbg !7827, !llvm.loop !7828
35: ; preds = %6
%36 = load double, double* %5, align 8, !dbg !7830
ret double %36, !dbg !7831
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @quadraticDerivativeEvaluation(double* %0, double %1) #0 !dbg !7832 {
%3 = alloca double*, align 8
%4 = alloca double, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !7835, metadata !DIExpression()), !dbg !7836
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !7837, metadata !DIExpression()), !dbg !7838
%5 = load double*, double** %3, align 8, !dbg !7839
%6 = getelementptr inbounds double, double* %5, i64 2, !dbg !7839
%7 = load double, double* %6, align 8, !dbg !7839
%8 = fmul double 2.000000e+00, %7, !dbg !7840
%9 = load double, double* %4, align 8, !dbg !7841
%10 = fmul double %8, %9, !dbg !7842
%11 = load double*, double** %3, align 8, !dbg !7843
%12 = getelementptr inbounds double, double* %11, i64 1, !dbg !7843
%13 = load double, double* %12, align 8, !dbg !7843
%14 = fadd double %10, %13, !dbg !7844
ret double %14, !dbg !7845
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @quadraticEvaluation(double* %0, double %1) #0 !dbg !7846 {
%3 = alloca double*, align 8
%4 = alloca double, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !7847, metadata !DIExpression()), !dbg !7848
store double %1, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !7849, metadata !DIExpression()), !dbg !7850
%5 = load double, double* %4, align 8, !dbg !7851
%6 = load double, double* %4, align 8, !dbg !7852
%7 = fmul double %5, %6, !dbg !7853
%8 = load double*, double** %3, align 8, !dbg !7854
%9 = getelementptr inbounds double, double* %8, i64 2, !dbg !7854
%10 = load double, double* %9, align 8, !dbg !7854
%11 = fmul double %7, %10, !dbg !7855
%12 = load double, double* %4, align 8, !dbg !7856
%13 = load double*, double** %3, align 8, !dbg !7857
%14 = getelementptr inbounds double, double* %13, i64 1, !dbg !7857
%15 = load double, double* %14, align 8, !dbg !7857
%16 = fmul double %12, %15, !dbg !7858
%17 = fadd double %11, %16, !dbg !7859
%18 = load double*, double** %3, align 8, !dbg !7860
%19 = getelementptr inbounds double, double* %18, i64 0, !dbg !7860
%20 = load double, double* %19, align 8, !dbg !7860
%21 = fadd double %17, %20, !dbg !7861
ret double %21, !dbg !7862
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @quadraticRegression(double* %0, double* %1, i32 %2, double* %3) #0 !dbg !7863 {
%5 = alloca i64, align 8
%6 = alloca double*, align 8
%7 = alloca double*, align 8
%8 = alloca i32, align 4
%9 = alloca double*, align 8
%10 = alloca i32, align 4
%11 = alloca double, align 8
%12 = alloca double, align 8
%13 = alloca double, align 8
%14 = alloca double, align 8
%15 = alloca double, align 8
%16 = alloca double, align 8
%17 = alloca double, align 8
%18 = alloca [9 x double], align 16
%19 = alloca %struct.Matrix_t, align 8
%20 = alloca [9 x double], align 16
%21 = alloca %struct.Matrix_t, align 8
%22 = alloca [3 x double], align 16
%23 = alloca %struct.Matrix_t, align 8
%24 = alloca [3 x double], align 16
%25 = alloca %struct.Matrix_t, align 8
%26 = alloca double, align 8
%27 = alloca double, align 8
%28 = alloca double, align 8
store double* %0, double** %6, align 8
call void @llvm.dbg.declare(metadata double** %6, metadata !7866, metadata !DIExpression()), !dbg !7867
store double* %1, double** %7, align 8
call void @llvm.dbg.declare(metadata double** %7, metadata !7868, metadata !DIExpression()), !dbg !7869
store i32 %2, i32* %8, align 4
call void @llvm.dbg.declare(metadata i32* %8, metadata !7870, metadata !DIExpression()), !dbg !7871
store double* %3, double** %9, align 8
call void @llvm.dbg.declare(metadata double** %9, metadata !7872, metadata !DIExpression()), !dbg !7873
call void @llvm.dbg.declare(metadata i32* %10, metadata !7874, metadata !DIExpression()), !dbg !7875
call void @llvm.dbg.declare(metadata double* %11, metadata !7876, metadata !DIExpression()), !dbg !7877
store double 0.000000e+00, double* %11, align 8, !dbg !7877
call void @llvm.dbg.declare(metadata double* %12, metadata !7878, metadata !DIExpression()), !dbg !7879
store double 0.000000e+00, double* %12, align 8, !dbg !7879
call void @llvm.dbg.declare(metadata double* %13, metadata !7880, metadata !DIExpression()), !dbg !7881
store double 0.000000e+00, double* %13, align 8, !dbg !7881
call void @llvm.dbg.declare(metadata double* %14, metadata !7882, metadata !DIExpression()), !dbg !7883
store double 0.000000e+00, double* %14, align 8, !dbg !7883
call void @llvm.dbg.declare(metadata double* %15, metadata !7884, metadata !DIExpression()), !dbg !7885
store double 0.000000e+00, double* %15, align 8, !dbg !7885
call void @llvm.dbg.declare(metadata double* %16, metadata !7886, metadata !DIExpression()), !dbg !7887
store double 0.000000e+00, double* %16, align 8, !dbg !7887
call void @llvm.dbg.declare(metadata double* %17, metadata !7888, metadata !DIExpression()), !dbg !7889
store double 0.000000e+00, double* %17, align 8, !dbg !7889
call void @llvm.dbg.declare(metadata [9 x double]* %18, metadata !7890, metadata !DIExpression()), !dbg !7892
call void @llvm.dbg.declare(metadata %struct.Matrix_t* %19, metadata !7893, metadata !DIExpression()), !dbg !7892
%29 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 0, !dbg !7892
store i32 3, i32* %29, align 8, !dbg !7892
%30 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 1, !dbg !7892
store i32 3, i32* %30, align 4, !dbg !7892
%31 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 2, !dbg !7892
%32 = getelementptr inbounds [9 x double], [9 x double]* %18, i64 0, i64 0, !dbg !7892
store double* %32, double** %31, align 8, !dbg !7892
call void @llvm.dbg.declare(metadata [9 x double]* %20, metadata !7894, metadata !DIExpression()), !dbg !7895
call void @llvm.dbg.declare(metadata %struct.Matrix_t* %21, metadata !7896, metadata !DIExpression()), !dbg !7895
%33 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 0, !dbg !7895
store i32 3, i32* %33, align 8, !dbg !7895
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 1, !dbg !7895
store i32 3, i32* %34, align 4, !dbg !7895
%35 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %21, i32 0, i32 2, !dbg !7895
%36 = getelementptr inbounds [9 x double], [9 x double]* %20, i64 0, i64 0, !dbg !7895
store double* %36, double** %35, align 8, !dbg !7895
call void @llvm.dbg.declare(metadata [3 x double]* %22, metadata !7897, metadata !DIExpression()), !dbg !7898
call void @llvm.dbg.declare(metadata %struct.Matrix_t* %23, metadata !7899, metadata !DIExpression()), !dbg !7898
%37 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 0, !dbg !7898
store i32 3, i32* %37, align 8, !dbg !7898
%38 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 1, !dbg !7898
store i32 1, i32* %38, align 4, !dbg !7898
%39 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %23, i32 0, i32 2, !dbg !7898
%40 = getelementptr inbounds [3 x double], [3 x double]* %22, i64 0, i64 0, !dbg !7898
store double* %40, double** %39, align 8, !dbg !7898
call void @llvm.dbg.declare(metadata [3 x double]* %24, metadata !7900, metadata !DIExpression()), !dbg !7901
call void @llvm.dbg.declare(metadata %struct.Matrix_t* %25, metadata !7902, metadata !DIExpression()), !dbg !7901
%41 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 0, !dbg !7901
store i32 3, i32* %41, align 8, !dbg !7901
%42 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 1, !dbg !7901
store i32 1, i32* %42, align 4, !dbg !7901
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %25, i32 0, i32 2, !dbg !7901
%44 = getelementptr inbounds [3 x double], [3 x double]* %24, i64 0, i64 0, !dbg !7901
store double* %44, double** %43, align 8, !dbg !7901
%45 = load i32, i32* %8, align 4, !dbg !7903
%46 = icmp slt i32 %45, 3, !dbg !7905
br i1 %46, label %47, label %48, !dbg !7906
47: ; preds = %4
store i64 0, i64* %5, align 8, !dbg !7907
br label %127, !dbg !7907
48: ; preds = %4
store i32 0, i32* %10, align 4, !dbg !7908
br label %49, !dbg !7910
49: ; preds = %96, %48
%50 = load i32, i32* %10, align 4, !dbg !7911
%51 = load i32, i32* %8, align 4, !dbg !7913
%52 = icmp slt i32 %50, %51, !dbg !7914
br i1 %52, label %53, label %99, !dbg !7915
53: ; preds = %49
call void @llvm.dbg.declare(metadata double* %26, metadata !7916, metadata !DIExpression()), !dbg !7918
%54 = load double*, double** %6, align 8, !dbg !7919
%55 = load i32, i32* %10, align 4, !dbg !7920
%56 = sext i32 %55 to i64, !dbg !7919
%57 = getelementptr inbounds double, double* %54, i64 %56, !dbg !7919
%58 = load double, double* %57, align 8, !dbg !7919
store double %58, double* %26, align 8, !dbg !7918
call void @llvm.dbg.declare(metadata double* %27, metadata !7921, metadata !DIExpression()), !dbg !7922
%59 = load double*, double** %7, align 8, !dbg !7923
%60 = load i32, i32* %10, align 4, !dbg !7924
%61 = sext i32 %60 to i64, !dbg !7923
%62 = getelementptr inbounds double, double* %59, i64 %61, !dbg !7923
%63 = load double, double* %62, align 8, !dbg !7923
store double %63, double* %27, align 8, !dbg !7922
call void @llvm.dbg.declare(metadata double* %28, metadata !7925, metadata !DIExpression()), !dbg !7926
%64 = load double, double* %26, align 8, !dbg !7927
%65 = load double, double* %26, align 8, !dbg !7928
%66 = fmul double %64, %65, !dbg !7929
store double %66, double* %28, align 8, !dbg !7926
%67 = load double, double* %26, align 8, !dbg !7930
%68 = load double, double* %14, align 8, !dbg !7931
%69 = fadd double %68, %67, !dbg !7931
store double %69, double* %14, align 8, !dbg !7931
%70 = load double, double* %27, align 8, !dbg !7932
%71 = load double, double* %17, align 8, !dbg !7933
%72 = fadd double %71, %70, !dbg !7933
store double %72, double* %17, align 8, !dbg !7933
%73 = load double, double* %28, align 8, !dbg !7934
%74 = load double, double* %13, align 8, !dbg !7935
%75 = fadd double %74, %73, !dbg !7935
store double %75, double* %13, align 8, !dbg !7935
%76 = load double, double* %28, align 8, !dbg !7936
%77 = load double, double* %26, align 8, !dbg !7937
%78 = fmul double %76, %77, !dbg !7938
%79 = load double, double* %12, align 8, !dbg !7939
%80 = fadd double %79, %78, !dbg !7939
store double %80, double* %12, align 8, !dbg !7939
%81 = load double, double* %28, align 8, !dbg !7940
%82 = load double, double* %28, align 8, !dbg !7941
%83 = fmul double %81, %82, !dbg !7942
%84 = load double, double* %11, align 8, !dbg !7943
%85 = fadd double %84, %83, !dbg !7943
store double %85, double* %11, align 8, !dbg !7943
%86 = load double, double* %26, align 8, !dbg !7944
%87 = load double, double* %27, align 8, !dbg !7945
%88 = fmul double %86, %87, !dbg !7946
%89 = load double, double* %16, align 8, !dbg !7947
%90 = fadd double %89, %88, !dbg !7947
store double %90, double* %16, align 8, !dbg !7947
%91 = load double, double* %28, align 8, !dbg !7948
%92 = load double, double* %27, align 8, !dbg !7949
%93 = fmul double %91, %92, !dbg !7950
%94 = load double, double* %15, align 8, !dbg !7951
%95 = fadd double %94, %93, !dbg !7951
store double %95, double* %15, align 8, !dbg !7951
br label %96, !dbg !7952
96: ; preds = %53
%97 = load i32, i32* %10, align 4, !dbg !7953
%98 = add nsw i32 %97, 1, !dbg !7953
store i32 %98, i32* %10, align 4, !dbg !7953
br label %49, !dbg !7954, !llvm.loop !7955
99: ; preds = %49
%100 = load double, double* %11, align 8, !dbg !7957
call void @matrixSet(%struct.Matrix_t* %19, i32 0, i32 0, double %100), !dbg !7958
%101 = load double, double* %12, align 8, !dbg !7959
call void @matrixSet(%struct.Matrix_t* %19, i32 0, i32 1, double %101), !dbg !7960
%102 = load double, double* %13, align 8, !dbg !7961
call void @matrixSet(%struct.Matrix_t* %19, i32 0, i32 2, double %102), !dbg !7962
%103 = load double, double* %12, align 8, !dbg !7963
call void @matrixSet(%struct.Matrix_t* %19, i32 1, i32 0, double %103), !dbg !7964
%104 = load double, double* %13, align 8, !dbg !7965
call void @matrixSet(%struct.Matrix_t* %19, i32 1, i32 1, double %104), !dbg !7966
%105 = load double, double* %14, align 8, !dbg !7967
call void @matrixSet(%struct.Matrix_t* %19, i32 1, i32 2, double %105), !dbg !7968
%106 = load double, double* %13, align 8, !dbg !7969
call void @matrixSet(%struct.Matrix_t* %19, i32 2, i32 0, double %106), !dbg !7970
%107 = load double, double* %14, align 8, !dbg !7971
call void @matrixSet(%struct.Matrix_t* %19, i32 2, i32 1, double %107), !dbg !7972
%108 = load i32, i32* %8, align 4, !dbg !7973
%109 = sitofp i32 %108 to double, !dbg !7973
call void @matrixSet(%struct.Matrix_t* %19, i32 2, i32 2, double %109), !dbg !7974
%110 = call i64 @matrixInverse(%struct.Matrix_t* %19, %struct.Matrix_t* %21), !dbg !7975
%111 = icmp ne i64 %110, 0, !dbg !7975
br i1 %111, label %113, label %112, !dbg !7977
112: ; preds = %99
store i64 0, i64* %5, align 8, !dbg !7978
br label %127, !dbg !7978
113: ; preds = %99
%114 = load double, double* %15, align 8, !dbg !7979
call void @matrixSet(%struct.Matrix_t* %23, i32 0, i32 0, double %114), !dbg !7980
%115 = load double, double* %16, align 8, !dbg !7981
call void @matrixSet(%struct.Matrix_t* %23, i32 0, i32 1, double %115), !dbg !7982
%116 = load double, double* %17, align 8, !dbg !7983
call void @matrixSet(%struct.Matrix_t* %23, i32 0, i32 2, double %116), !dbg !7984
%117 = call i64 @matrixMultiply(%struct.Matrix_t* %21, %struct.Matrix_t* %23, %struct.Matrix_t* %25), !dbg !7985
%118 = call double @matrixGet(%struct.Matrix_t* %25, i32 0, i32 0), !dbg !7986
%119 = load double*, double** %9, align 8, !dbg !7987
%120 = getelementptr inbounds double, double* %119, i64 2, !dbg !7987
store double %118, double* %120, align 8, !dbg !7988
%121 = call double @matrixGet(%struct.Matrix_t* %25, i32 0, i32 1), !dbg !7989
%122 = load double*, double** %9, align 8, !dbg !7990
%123 = getelementptr inbounds double, double* %122, i64 1, !dbg !7990
store double %121, double* %123, align 8, !dbg !7991
%124 = call double @matrixGet(%struct.Matrix_t* %25, i32 0, i32 2), !dbg !7992
%125 = load double*, double** %9, align 8, !dbg !7993
%126 = getelementptr inbounds double, double* %125, i64 0, !dbg !7993
store double %124, double* %126, align 8, !dbg !7994
store i64 1, i64* %5, align 8, !dbg !7995
br label %127, !dbg !7995
127: ; preds = %113, %112, %47
%128 = load i64, i64* %5, align 8, !dbg !7996
ret i64 %128, !dbg !7996
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Setf(float* %0, float %1) #0 !dbg !7997 {
%3 = alloca float*, align 8
%4 = alloca float, align 4
%5 = alloca i32, align 4
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !8000, metadata !DIExpression()), !dbg !8001
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !8002, metadata !DIExpression()), !dbg !8003
call void @llvm.dbg.declare(metadata i32* %5, metadata !8004, metadata !DIExpression()), !dbg !8005
store i32 0, i32* %5, align 4, !dbg !8006
br label %6, !dbg !8008
6: ; preds = %15, %2
%7 = load i32, i32* %5, align 4, !dbg !8009
%8 = icmp slt i32 %7, 3, !dbg !8011
br i1 %8, label %9, label %18, !dbg !8012
9: ; preds = %6
%10 = load float, float* %4, align 4, !dbg !8013
%11 = load float*, float** %3, align 8, !dbg !8014
%12 = load i32, i32* %5, align 4, !dbg !8015
%13 = sext i32 %12 to i64, !dbg !8014
%14 = getelementptr inbounds float, float* %11, i64 %13, !dbg !8014
store float %10, float* %14, align 4, !dbg !8016
br label %15, !dbg !8014
15: ; preds = %9
%16 = load i32, i32* %5, align 4, !dbg !8017
%17 = add nsw i32 %16, 1, !dbg !8017
store i32 %17, i32* %5, align 4, !dbg !8017
br label %6, !dbg !8018, !llvm.loop !8019
18: ; preds = %6
%19 = load float*, float** %3, align 8, !dbg !8021
ret float* %19, !dbg !8022
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Copyf(float* %0, float* %1) #0 !dbg !8023 {
%3 = alloca float*, align 8
%4 = alloca float*, align 8
%5 = alloca i32, align 4
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !8026, metadata !DIExpression()), !dbg !8027
store float* %1, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8028, metadata !DIExpression()), !dbg !8029
call void @llvm.dbg.declare(metadata i32* %5, metadata !8030, metadata !DIExpression()), !dbg !8031
store i32 0, i32* %5, align 4, !dbg !8032
br label %6, !dbg !8034
6: ; preds = %19, %2
%7 = load i32, i32* %5, align 4, !dbg !8035
%8 = icmp slt i32 %7, 3, !dbg !8037
br i1 %8, label %9, label %22, !dbg !8038
9: ; preds = %6
%10 = load float*, float** %3, align 8, !dbg !8039
%11 = load i32, i32* %5, align 4, !dbg !8040
%12 = sext i32 %11 to i64, !dbg !8039
%13 = getelementptr inbounds float, float* %10, i64 %12, !dbg !8039
%14 = load float, float* %13, align 4, !dbg !8039
%15 = load float*, float** %4, align 8, !dbg !8041
%16 = load i32, i32* %5, align 4, !dbg !8042
%17 = sext i32 %16 to i64, !dbg !8041
%18 = getelementptr inbounds float, float* %15, i64 %17, !dbg !8041
store float %14, float* %18, align 4, !dbg !8043
br label %19, !dbg !8041
19: ; preds = %9
%20 = load i32, i32* %5, align 4, !dbg !8044
%21 = add nsw i32 %20, 1, !dbg !8044
store i32 %21, i32* %5, align 4, !dbg !8044
br label %6, !dbg !8045, !llvm.loop !8046
22: ; preds = %6
%23 = load float*, float** %4, align 8, !dbg !8048
ret float* %23, !dbg !8049
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3MultiplyAccumulatef(float* %0, float* %1, float %2, float* %3) #0 !dbg !8050 {
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca float, align 4
%8 = alloca float*, align 8
%9 = alloca i32, align 4
store float* %0, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8053, metadata !DIExpression()), !dbg !8054
store float* %1, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8055, metadata !DIExpression()), !dbg !8056
store float %2, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !8057, metadata !DIExpression()), !dbg !8058
store float* %3, float** %8, align 8
call void @llvm.dbg.declare(metadata float** %8, metadata !8059, metadata !DIExpression()), !dbg !8060
call void @llvm.dbg.declare(metadata i32* %9, metadata !8061, metadata !DIExpression()), !dbg !8062
store i32 0, i32* %9, align 4, !dbg !8063
br label %10, !dbg !8065
10: ; preds = %31, %4
%11 = load i32, i32* %9, align 4, !dbg !8066
%12 = icmp slt i32 %11, 3, !dbg !8068
br i1 %12, label %13, label %34, !dbg !8069
13: ; preds = %10
%14 = load float*, float** %5, align 8, !dbg !8070
%15 = load i32, i32* %9, align 4, !dbg !8071
%16 = sext i32 %15 to i64, !dbg !8070
%17 = getelementptr inbounds float, float* %14, i64 %16, !dbg !8070
%18 = load float, float* %17, align 4, !dbg !8070
%19 = load float*, float** %6, align 8, !dbg !8072
%20 = load i32, i32* %9, align 4, !dbg !8073
%21 = sext i32 %20 to i64, !dbg !8072
%22 = getelementptr inbounds float, float* %19, i64 %21, !dbg !8072
%23 = load float, float* %22, align 4, !dbg !8072
%24 = load float, float* %7, align 4, !dbg !8074
%25 = fmul float %23, %24, !dbg !8075
%26 = fadd float %18, %25, !dbg !8076
%27 = load float*, float** %8, align 8, !dbg !8077
%28 = load i32, i32* %9, align 4, !dbg !8078
%29 = sext i32 %28 to i64, !dbg !8077
%30 = getelementptr inbounds float, float* %27, i64 %29, !dbg !8077
store float %26, float* %30, align 4, !dbg !8079
br label %31, !dbg !8077
31: ; preds = %13
%32 = load i32, i32* %9, align 4, !dbg !8080
%33 = add nsw i32 %32, 1, !dbg !8080
store i32 %33, i32* %9, align 4, !dbg !8080
br label %10, !dbg !8081, !llvm.loop !8082
34: ; preds = %10
%35 = load float*, float** %8, align 8, !dbg !8084
ret float* %35, !dbg !8085
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Sumf(float* %0, float* %1, float* %2) #0 !dbg !8086 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca i32, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8089, metadata !DIExpression()), !dbg !8090
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8091, metadata !DIExpression()), !dbg !8092
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8093, metadata !DIExpression()), !dbg !8094
call void @llvm.dbg.declare(metadata i32* %7, metadata !8095, metadata !DIExpression()), !dbg !8096
store i32 0, i32* %7, align 4, !dbg !8097
br label %8, !dbg !8099
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !8100
%10 = icmp slt i32 %9, 3, !dbg !8102
br i1 %10, label %11, label %30, !dbg !8103
11: ; preds = %8
%12 = load float*, float** %4, align 8, !dbg !8104
%13 = load i32, i32* %7, align 4, !dbg !8105
%14 = sext i32 %13 to i64, !dbg !8104
%15 = getelementptr inbounds float, float* %12, i64 %14, !dbg !8104
%16 = load float, float* %15, align 4, !dbg !8104
%17 = load float*, float** %5, align 8, !dbg !8106
%18 = load i32, i32* %7, align 4, !dbg !8107
%19 = sext i32 %18 to i64, !dbg !8106
%20 = getelementptr inbounds float, float* %17, i64 %19, !dbg !8106
%21 = load float, float* %20, align 4, !dbg !8106
%22 = fadd float %16, %21, !dbg !8108
%23 = load float*, float** %6, align 8, !dbg !8109
%24 = load i32, i32* %7, align 4, !dbg !8110
%25 = sext i32 %24 to i64, !dbg !8109
%26 = getelementptr inbounds float, float* %23, i64 %25, !dbg !8109
store float %22, float* %26, align 4, !dbg !8111
br label %27, !dbg !8109
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !8112
%29 = add nsw i32 %28, 1, !dbg !8112
store i32 %29, i32* %7, align 4, !dbg !8112
br label %8, !dbg !8113, !llvm.loop !8114
30: ; preds = %8
%31 = load float*, float** %6, align 8, !dbg !8116
ret float* %31, !dbg !8117
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Differencef(float* %0, float* %1, float* %2) #0 !dbg !8118 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca i32, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8119, metadata !DIExpression()), !dbg !8120
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8121, metadata !DIExpression()), !dbg !8122
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8123, metadata !DIExpression()), !dbg !8124
call void @llvm.dbg.declare(metadata i32* %7, metadata !8125, metadata !DIExpression()), !dbg !8126
store i32 0, i32* %7, align 4, !dbg !8127
br label %8, !dbg !8129
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !8130
%10 = icmp slt i32 %9, 3, !dbg !8132
br i1 %10, label %11, label %30, !dbg !8133
11: ; preds = %8
%12 = load float*, float** %4, align 8, !dbg !8134
%13 = load i32, i32* %7, align 4, !dbg !8135
%14 = sext i32 %13 to i64, !dbg !8134
%15 = getelementptr inbounds float, float* %12, i64 %14, !dbg !8134
%16 = load float, float* %15, align 4, !dbg !8134
%17 = load float*, float** %5, align 8, !dbg !8136
%18 = load i32, i32* %7, align 4, !dbg !8137
%19 = sext i32 %18 to i64, !dbg !8136
%20 = getelementptr inbounds float, float* %17, i64 %19, !dbg !8136
%21 = load float, float* %20, align 4, !dbg !8136
%22 = fsub float %16, %21, !dbg !8138
%23 = load float*, float** %6, align 8, !dbg !8139
%24 = load i32, i32* %7, align 4, !dbg !8140
%25 = sext i32 %24 to i64, !dbg !8139
%26 = getelementptr inbounds float, float* %23, i64 %25, !dbg !8139
store float %22, float* %26, align 4, !dbg !8141
br label %27, !dbg !8139
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !8142
%29 = add nsw i32 %28, 1, !dbg !8142
store i32 %29, i32* %7, align 4, !dbg !8142
br label %8, !dbg !8143, !llvm.loop !8144
30: ; preds = %8
%31 = load float*, float** %6, align 8, !dbg !8146
ret float* %31, !dbg !8147
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Multiplyf(float* %0, float* %1, float* %2) #0 !dbg !8148 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca i32, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8149, metadata !DIExpression()), !dbg !8150
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8151, metadata !DIExpression()), !dbg !8152
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8153, metadata !DIExpression()), !dbg !8154
call void @llvm.dbg.declare(metadata i32* %7, metadata !8155, metadata !DIExpression()), !dbg !8156
store i32 0, i32* %7, align 4, !dbg !8157
br label %8, !dbg !8159
8: ; preds = %27, %3
%9 = load i32, i32* %7, align 4, !dbg !8160
%10 = icmp slt i32 %9, 3, !dbg !8162
br i1 %10, label %11, label %30, !dbg !8163
11: ; preds = %8
%12 = load float*, float** %4, align 8, !dbg !8164
%13 = load i32, i32* %7, align 4, !dbg !8165
%14 = sext i32 %13 to i64, !dbg !8164
%15 = getelementptr inbounds float, float* %12, i64 %14, !dbg !8164
%16 = load float, float* %15, align 4, !dbg !8164
%17 = load float*, float** %5, align 8, !dbg !8166
%18 = load i32, i32* %7, align 4, !dbg !8167
%19 = sext i32 %18 to i64, !dbg !8166
%20 = getelementptr inbounds float, float* %17, i64 %19, !dbg !8166
%21 = load float, float* %20, align 4, !dbg !8166
%22 = fmul float %16, %21, !dbg !8168
%23 = load float*, float** %6, align 8, !dbg !8169
%24 = load i32, i32* %7, align 4, !dbg !8170
%25 = sext i32 %24 to i64, !dbg !8169
%26 = getelementptr inbounds float, float* %23, i64 %25, !dbg !8169
store float %22, float* %26, align 4, !dbg !8171
br label %27, !dbg !8169
27: ; preds = %11
%28 = load i32, i32* %7, align 4, !dbg !8172
%29 = add nsw i32 %28, 1, !dbg !8172
store i32 %29, i32* %7, align 4, !dbg !8172
br label %8, !dbg !8173, !llvm.loop !8174
30: ; preds = %8
%31 = load float*, float** %6, align 8, !dbg !8176
ret float* %31, !dbg !8177
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vector3Dotf(float* %0, float* %1) #0 !dbg !8178 {
%3 = alloca float*, align 8
%4 = alloca float*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !8181, metadata !DIExpression()), !dbg !8182
store float* %1, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8183, metadata !DIExpression()), !dbg !8184
call void @llvm.dbg.declare(metadata i32* %5, metadata !8185, metadata !DIExpression()), !dbg !8186
call void @llvm.dbg.declare(metadata float* %6, metadata !8187, metadata !DIExpression()), !dbg !8188
store float 0.000000e+00, float* %6, align 4, !dbg !8188
store i32 0, i32* %5, align 4, !dbg !8189
br label %7, !dbg !8191
7: ; preds = %24, %2
%8 = load i32, i32* %5, align 4, !dbg !8192
%9 = icmp slt i32 %8, 3, !dbg !8194
br i1 %9, label %10, label %27, !dbg !8195
10: ; preds = %7
%11 = load float*, float** %3, align 8, !dbg !8196
%12 = load i32, i32* %5, align 4, !dbg !8197
%13 = sext i32 %12 to i64, !dbg !8196
%14 = getelementptr inbounds float, float* %11, i64 %13, !dbg !8196
%15 = load float, float* %14, align 4, !dbg !8196
%16 = load float*, float** %4, align 8, !dbg !8198
%17 = load i32, i32* %5, align 4, !dbg !8199
%18 = sext i32 %17 to i64, !dbg !8198
%19 = getelementptr inbounds float, float* %16, i64 %18, !dbg !8198
%20 = load float, float* %19, align 4, !dbg !8198
%21 = fmul float %15, %20, !dbg !8200
%22 = load float, float* %6, align 4, !dbg !8201
%23 = fadd float %22, %21, !dbg !8201
store float %23, float* %6, align 4, !dbg !8201
br label %24, !dbg !8202
24: ; preds = %10
%25 = load i32, i32* %5, align 4, !dbg !8203
%26 = add nsw i32 %25, 1, !dbg !8203
store i32 %26, i32* %5, align 4, !dbg !8203
br label %7, !dbg !8204, !llvm.loop !8205
27: ; preds = %7
%28 = load float, float* %6, align 4, !dbg !8207
ret float %28, !dbg !8208
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vector3AngleBetweenf(float* %0, float* %1) #0 !dbg !8209 {
%3 = alloca float, align 4
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float, align 4
%7 = alloca float, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8210, metadata !DIExpression()), !dbg !8211
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8212, metadata !DIExpression()), !dbg !8213
call void @llvm.dbg.declare(metadata float* %6, metadata !8214, metadata !DIExpression()), !dbg !8215
%8 = load float*, float** %4, align 8, !dbg !8216
%9 = load float*, float** %5, align 8, !dbg !8217
%10 = call float @vector3Dotf(float* %8, float* %9), !dbg !8218
store float %10, float* %6, align 4, !dbg !8215
call void @llvm.dbg.declare(metadata float* %7, metadata !8219, metadata !DIExpression()), !dbg !8220
%11 = load float*, float** %4, align 8, !dbg !8221
%12 = call float @vector3LengthSquaredf(float* %11), !dbg !8222
%13 = load float*, float** %5, align 8, !dbg !8223
%14 = call float @vector3LengthSquaredf(float* %13), !dbg !8224
%15 = fmul float %12, %14, !dbg !8225
store float %15, float* %7, align 4, !dbg !8220
%16 = load float, float* %7, align 4, !dbg !8226
%17 = fcmp ogt float %16, 0.000000e+00, !dbg !8228
br i1 %17, label %18, label %25, !dbg !8229
18: ; preds = %2
%19 = load float, float* %7, align 4, !dbg !8230
%20 = call float @sqrtf(float %19) #7, !dbg !8232
store float %20, float* %7, align 4, !dbg !8233
%21 = load float, float* %6, align 4, !dbg !8234
%22 = load float, float* %7, align 4, !dbg !8235
%23 = fdiv float %21, %22, !dbg !8236
%24 = call float @acosf(float %23) #7, !dbg !8237
store float %24, float* %3, align 4, !dbg !8238
br label %26, !dbg !8238
25: ; preds = %2
store float 0.000000e+00, float* %3, align 4, !dbg !8239
br label %26, !dbg !8239
26: ; preds = %25, %18
%27 = load float, float* %3, align 4, !dbg !8240
ret float %27, !dbg !8240
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vector3LengthSquaredf(float* %0) #0 !dbg !8241 {
%2 = alloca float*, align 8
store float* %0, float** %2, align 8
call void @llvm.dbg.declare(metadata float** %2, metadata !8244, metadata !DIExpression()), !dbg !8245
%3 = load float*, float** %2, align 8, !dbg !8246
%4 = load float*, float** %2, align 8, !dbg !8247
%5 = call float @vector3Dotf(float* %3, float* %4), !dbg !8248
ret float %5, !dbg !8249
}
; Function Attrs: nounwind
declare dso_local float @sqrtf(float) #5
; Function Attrs: nounwind
declare dso_local float @acosf(float) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Crossf(float* %0, float* %1, float* %2) #0 !dbg !8250 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8251, metadata !DIExpression()), !dbg !8252
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8253, metadata !DIExpression()), !dbg !8254
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8255, metadata !DIExpression()), !dbg !8256
%7 = load float*, float** %4, align 8, !dbg !8257
%8 = getelementptr inbounds float, float* %7, i64 1, !dbg !8257
%9 = load float, float* %8, align 4, !dbg !8257
%10 = load float*, float** %5, align 8, !dbg !8258
%11 = getelementptr inbounds float, float* %10, i64 2, !dbg !8258
%12 = load float, float* %11, align 4, !dbg !8258
%13 = fmul float %9, %12, !dbg !8259
%14 = load float*, float** %4, align 8, !dbg !8260
%15 = getelementptr inbounds float, float* %14, i64 2, !dbg !8260
%16 = load float, float* %15, align 4, !dbg !8260
%17 = load float*, float** %5, align 8, !dbg !8261
%18 = getelementptr inbounds float, float* %17, i64 1, !dbg !8261
%19 = load float, float* %18, align 4, !dbg !8261
%20 = fmul float %16, %19, !dbg !8262
%21 = fsub float %13, %20, !dbg !8263
%22 = load float*, float** %6, align 8, !dbg !8264
%23 = getelementptr inbounds float, float* %22, i64 0, !dbg !8264
store float %21, float* %23, align 4, !dbg !8265
%24 = load float*, float** %4, align 8, !dbg !8266
%25 = getelementptr inbounds float, float* %24, i64 2, !dbg !8266
%26 = load float, float* %25, align 4, !dbg !8266
%27 = load float*, float** %5, align 8, !dbg !8267
%28 = getelementptr inbounds float, float* %27, i64 0, !dbg !8267
%29 = load float, float* %28, align 4, !dbg !8267
%30 = fmul float %26, %29, !dbg !8268
%31 = load float*, float** %4, align 8, !dbg !8269
%32 = getelementptr inbounds float, float* %31, i64 0, !dbg !8269
%33 = load float, float* %32, align 4, !dbg !8269
%34 = load float*, float** %5, align 8, !dbg !8270
%35 = getelementptr inbounds float, float* %34, i64 2, !dbg !8270
%36 = load float, float* %35, align 4, !dbg !8270
%37 = fmul float %33, %36, !dbg !8271
%38 = fsub float %30, %37, !dbg !8272
%39 = load float*, float** %6, align 8, !dbg !8273
%40 = getelementptr inbounds float, float* %39, i64 1, !dbg !8273
store float %38, float* %40, align 4, !dbg !8274
%41 = load float*, float** %4, align 8, !dbg !8275
%42 = getelementptr inbounds float, float* %41, i64 0, !dbg !8275
%43 = load float, float* %42, align 4, !dbg !8275
%44 = load float*, float** %5, align 8, !dbg !8276
%45 = getelementptr inbounds float, float* %44, i64 1, !dbg !8276
%46 = load float, float* %45, align 4, !dbg !8276
%47 = fmul float %43, %46, !dbg !8277
%48 = load float*, float** %4, align 8, !dbg !8278
%49 = getelementptr inbounds float, float* %48, i64 1, !dbg !8278
%50 = load float, float* %49, align 4, !dbg !8278
%51 = load float*, float** %5, align 8, !dbg !8279
%52 = getelementptr inbounds float, float* %51, i64 0, !dbg !8279
%53 = load float, float* %52, align 4, !dbg !8279
%54 = fmul float %50, %53, !dbg !8280
%55 = fsub float %47, %54, !dbg !8281
%56 = load float*, float** %6, align 8, !dbg !8282
%57 = getelementptr inbounds float, float* %56, i64 2, !dbg !8282
store float %55, float* %57, align 4, !dbg !8283
%58 = load float*, float** %6, align 8, !dbg !8284
ret float* %58, !dbg !8285
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vector3Lengthf(float* %0) #0 !dbg !8286 {
%2 = alloca float*, align 8
store float* %0, float** %2, align 8
call void @llvm.dbg.declare(metadata float** %2, metadata !8287, metadata !DIExpression()), !dbg !8288
%3 = load float*, float** %2, align 8, !dbg !8289
%4 = call float @vector3LengthSquaredf(float* %3), !dbg !8290
%5 = call float @sqrtf(float %4) #7, !dbg !8291
ret float %5, !dbg !8292
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3ChangeLengthf(float* %0, float* %1, float %2) #0 !dbg !8293 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca float, align 4
%8 = alloca float, align 4
store float* %0, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8296, metadata !DIExpression()), !dbg !8297
store float* %1, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !8298, metadata !DIExpression()), !dbg !8299
store float %2, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !8300, metadata !DIExpression()), !dbg !8301
call void @llvm.dbg.declare(metadata float* %8, metadata !8302, metadata !DIExpression()), !dbg !8303
%9 = load float*, float** %5, align 8, !dbg !8304
%10 = call float @vector3Lengthf(float* %9), !dbg !8305
store float %10, float* %8, align 4, !dbg !8303
%11 = load float, float* %8, align 4, !dbg !8306
%12 = fcmp ogt float %11, 0.000000e+00, !dbg !8308
br i1 %12, label %13, label %20, !dbg !8309
13: ; preds = %3
%14 = load float*, float** %5, align 8, !dbg !8310
%15 = load float*, float** %6, align 8, !dbg !8312
%16 = load float, float* %7, align 4, !dbg !8313
%17 = load float, float* %8, align 4, !dbg !8314
%18 = fdiv float %16, %17, !dbg !8315
%19 = call float* @vector3Scalef(float* %14, float* %15, float %18), !dbg !8316
store float* %19, float** %4, align 8, !dbg !8317
br label %29, !dbg !8317
20: ; preds = %3
%21 = load float, float* %7, align 4, !dbg !8318
%22 = load float*, float** %6, align 8, !dbg !8320
%23 = getelementptr inbounds float, float* %22, i64 0, !dbg !8320
store float %21, float* %23, align 4, !dbg !8321
%24 = load float*, float** %6, align 8, !dbg !8322
%25 = getelementptr inbounds float, float* %24, i64 1, !dbg !8322
store float 0.000000e+00, float* %25, align 4, !dbg !8323
%26 = load float*, float** %6, align 8, !dbg !8324
%27 = getelementptr inbounds float, float* %26, i64 2, !dbg !8324
store float 0.000000e+00, float* %27, align 4, !dbg !8325
%28 = load float*, float** %6, align 8, !dbg !8326
store float* %28, float** %4, align 8, !dbg !8327
br label %29, !dbg !8327
29: ; preds = %20, %13
%30 = load float*, float** %4, align 8, !dbg !8328
ret float* %30, !dbg !8328
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Scalef(float* %0, float* %1, float %2) #0 !dbg !8329 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float, align 4
%7 = alloca i32, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8330, metadata !DIExpression()), !dbg !8331
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8332, metadata !DIExpression()), !dbg !8333
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8334, metadata !DIExpression()), !dbg !8335
call void @llvm.dbg.declare(metadata i32* %7, metadata !8336, metadata !DIExpression()), !dbg !8337
store i32 0, i32* %7, align 4, !dbg !8338
br label %8, !dbg !8340
8: ; preds = %23, %3
%9 = load i32, i32* %7, align 4, !dbg !8341
%10 = icmp slt i32 %9, 3, !dbg !8343
br i1 %10, label %11, label %26, !dbg !8344
11: ; preds = %8
%12 = load float*, float** %4, align 8, !dbg !8345
%13 = load i32, i32* %7, align 4, !dbg !8346
%14 = sext i32 %13 to i64, !dbg !8345
%15 = getelementptr inbounds float, float* %12, i64 %14, !dbg !8345
%16 = load float, float* %15, align 4, !dbg !8345
%17 = load float, float* %6, align 4, !dbg !8347
%18 = fmul float %16, %17, !dbg !8348
%19 = load float*, float** %5, align 8, !dbg !8349
%20 = load i32, i32* %7, align 4, !dbg !8350
%21 = sext i32 %20 to i64, !dbg !8349
%22 = getelementptr inbounds float, float* %19, i64 %21, !dbg !8349
store float %18, float* %22, align 4, !dbg !8351
br label %23, !dbg !8349
23: ; preds = %11
%24 = load i32, i32* %7, align 4, !dbg !8352
%25 = add nsw i32 %24, 1, !dbg !8352
store i32 %25, i32* %7, align 4, !dbg !8352
br label %8, !dbg !8353, !llvm.loop !8354
26: ; preds = %8
%27 = load float*, float** %5, align 8, !dbg !8356
ret float* %27, !dbg !8357
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Unitf(float* %0, float* %1) #0 !dbg !8358 {
%3 = alloca float*, align 8
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8359, metadata !DIExpression()), !dbg !8360
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !8361, metadata !DIExpression()), !dbg !8362
call void @llvm.dbg.declare(metadata float* %6, metadata !8363, metadata !DIExpression()), !dbg !8364
%7 = load float*, float** %4, align 8, !dbg !8365
%8 = call float @vector3Lengthf(float* %7), !dbg !8366
store float %8, float* %6, align 4, !dbg !8364
%9 = load float, float* %6, align 4, !dbg !8367
%10 = fcmp ogt float %9, 0.000000e+00, !dbg !8369
br i1 %10, label %11, label %17, !dbg !8370
11: ; preds = %2
%12 = load float*, float** %4, align 8, !dbg !8371
%13 = load float*, float** %5, align 8, !dbg !8372
%14 = load float, float* %6, align 4, !dbg !8373
%15 = fdiv float 1.000000e+00, %14, !dbg !8374
%16 = call float* @vector3Scalef(float* %12, float* %13, float %15), !dbg !8375
store float* %16, float** %3, align 8, !dbg !8376
br label %25, !dbg !8376
17: ; preds = %2
%18 = load float*, float** %5, align 8, !dbg !8377
%19 = getelementptr inbounds float, float* %18, i64 0, !dbg !8377
store float 1.000000e+00, float* %19, align 4, !dbg !8379
%20 = load float*, float** %5, align 8, !dbg !8380
%21 = getelementptr inbounds float, float* %20, i64 1, !dbg !8380
store float 0.000000e+00, float* %21, align 4, !dbg !8381
%22 = load float*, float** %5, align 8, !dbg !8382
%23 = getelementptr inbounds float, float* %22, i64 2, !dbg !8382
store float 0.000000e+00, float* %23, align 4, !dbg !8383
%24 = load float*, float** %5, align 8, !dbg !8384
store float* %24, float** %3, align 8, !dbg !8385
br label %25, !dbg !8385
25: ; preds = %17, %11
%26 = load float*, float** %3, align 8, !dbg !8386
ret float* %26, !dbg !8386
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double* @vector3Abs(double* %0, double* %1) #0 !dbg !8387 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !8388, metadata !DIExpression()), !dbg !8389
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !8390, metadata !DIExpression()), !dbg !8391
%5 = load double*, double** %3, align 8, !dbg !8392
%6 = getelementptr inbounds double, double* %5, i64 0, !dbg !8392
%7 = load double, double* %6, align 8, !dbg !8392
%8 = call double @llvm.fabs.f64(double %7), !dbg !8393
%9 = load double*, double** %4, align 8, !dbg !8394
%10 = getelementptr inbounds double, double* %9, i64 0, !dbg !8394
store double %8, double* %10, align 8, !dbg !8395
%11 = load double*, double** %3, align 8, !dbg !8396
%12 = getelementptr inbounds double, double* %11, i64 1, !dbg !8396
%13 = load double, double* %12, align 8, !dbg !8396
%14 = call double @llvm.fabs.f64(double %13), !dbg !8397
%15 = load double*, double** %4, align 8, !dbg !8398
%16 = getelementptr inbounds double, double* %15, i64 1, !dbg !8398
store double %14, double* %16, align 8, !dbg !8399
%17 = load double*, double** %3, align 8, !dbg !8400
%18 = getelementptr inbounds double, double* %17, i64 2, !dbg !8400
%19 = load double, double* %18, align 8, !dbg !8400
%20 = call double @llvm.fabs.f64(double %19), !dbg !8401
%21 = load double*, double** %4, align 8, !dbg !8402
%22 = getelementptr inbounds double, double* %21, i64 2, !dbg !8402
store double %20, double* %22, align 8, !dbg !8403
%23 = load double*, double** %4, align 8, !dbg !8404
ret double* %23, !dbg !8405
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float* @vector3Absf(float* %0, float* %1) #0 !dbg !8406 {
%3 = alloca float*, align 8
%4 = alloca float*, align 8
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !8407, metadata !DIExpression()), !dbg !8408
store float* %1, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !8409, metadata !DIExpression()), !dbg !8410
%5 = load float*, float** %3, align 8, !dbg !8411
%6 = getelementptr inbounds float, float* %5, i64 0, !dbg !8411
%7 = load float, float* %6, align 4, !dbg !8411
%8 = call float @llvm.fabs.f32(float %7), !dbg !8412
%9 = load float*, float** %4, align 8, !dbg !8413
%10 = getelementptr inbounds float, float* %9, i64 0, !dbg !8413
store float %8, float* %10, align 4, !dbg !8414
%11 = load float*, float** %3, align 8, !dbg !8415
%12 = getelementptr inbounds float, float* %11, i64 1, !dbg !8415
%13 = load float, float* %12, align 4, !dbg !8415
%14 = call float @llvm.fabs.f32(float %13), !dbg !8416
%15 = load float*, float** %4, align 8, !dbg !8417
%16 = getelementptr inbounds float, float* %15, i64 1, !dbg !8417
store float %14, float* %16, align 4, !dbg !8418
%17 = load float*, float** %3, align 8, !dbg !8419
%18 = getelementptr inbounds float, float* %17, i64 2, !dbg !8419
%19 = load float, float* %18, align 4, !dbg !8419
%20 = call float @llvm.fabs.f32(float %19), !dbg !8420
%21 = load float*, float** %4, align 8, !dbg !8421
%22 = getelementptr inbounds float, float* %21, i64 2, !dbg !8421
store float %20, float* %22, align 4, !dbg !8422
%23 = load float*, float** %4, align 8, !dbg !8423
ret float* %23, !dbg !8424
}
; Function Attrs: nounwind readnone speculatable willreturn
declare float @llvm.fabs.f32(float) #2
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorGetf(%struct.Vectorf_t* %0, i32 %1) #0 !dbg !8425 {
%3 = alloca float, align 4
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8430, metadata !DIExpression()), !dbg !8431
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !8432, metadata !DIExpression()), !dbg !8433
%6 = load i32, i32* %5, align 4, !dbg !8434
%7 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8436
%8 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %7, i32 0, i32 0, !dbg !8437
%9 = load i32, i32* %8, align 8, !dbg !8437
%10 = icmp ult i32 %6, %9, !dbg !8438
br i1 %10, label %11, label %19, !dbg !8439
11: ; preds = %2
%12 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8440
%13 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %12, i32 0, i32 1, !dbg !8441
%14 = load float*, float** %13, align 8, !dbg !8441
%15 = load i32, i32* %5, align 4, !dbg !8442
%16 = zext i32 %15 to i64, !dbg !8440
%17 = getelementptr inbounds float, float* %14, i64 %16, !dbg !8440
%18 = load float, float* %17, align 4, !dbg !8440
store float %18, float* %3, align 4, !dbg !8443
br label %20, !dbg !8443
19: ; preds = %2
store float 0.000000e+00, float* %3, align 4, !dbg !8444
br label %20, !dbg !8444
20: ; preds = %19, %11
%21 = load float, float* %3, align 4, !dbg !8445
ret float %21, !dbg !8445
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorSetf(%struct.Vectorf_t* %0, i32 %1, float %2) #0 !dbg !8446 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8449, metadata !DIExpression()), !dbg !8450
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !8451, metadata !DIExpression()), !dbg !8452
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8453, metadata !DIExpression()), !dbg !8454
%7 = load i32, i32* %5, align 4, !dbg !8455
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8457
%9 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %8, i32 0, i32 0, !dbg !8458
%10 = load i32, i32* %9, align 8, !dbg !8458
%11 = icmp ult i32 %7, %10, !dbg !8459
br i1 %11, label %12, label %20, !dbg !8460
12: ; preds = %3
%13 = load float, float* %6, align 4, !dbg !8461
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8462
%15 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %14, i32 0, i32 1, !dbg !8463
%16 = load float*, float** %15, align 8, !dbg !8463
%17 = load i32, i32* %5, align 4, !dbg !8464
%18 = zext i32 %17 to i64, !dbg !8462
%19 = getelementptr inbounds float, float* %16, i64 %18, !dbg !8462
store float %13, float* %19, align 4, !dbg !8465
br label %20, !dbg !8462
20: ; preds = %12, %3
%21 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8466
ret %struct.Vectorf_t* %21, !dbg !8467
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorAddToElementf(%struct.Vectorf_t* %0, i32 %1, float %2) #0 !dbg !8468 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8469, metadata !DIExpression()), !dbg !8470
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !8471, metadata !DIExpression()), !dbg !8472
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8473, metadata !DIExpression()), !dbg !8474
%7 = load i32, i32* %5, align 4, !dbg !8475
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8477
%9 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %8, i32 0, i32 0, !dbg !8478
%10 = load i32, i32* %9, align 8, !dbg !8478
%11 = icmp ult i32 %7, %10, !dbg !8479
br i1 %11, label %12, label %22, !dbg !8480
12: ; preds = %3
%13 = load float, float* %6, align 4, !dbg !8481
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8482
%15 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %14, i32 0, i32 1, !dbg !8483
%16 = load float*, float** %15, align 8, !dbg !8483
%17 = load i32, i32* %5, align 4, !dbg !8484
%18 = zext i32 %17 to i64, !dbg !8482
%19 = getelementptr inbounds float, float* %16, i64 %18, !dbg !8482
%20 = load float, float* %19, align 4, !dbg !8485
%21 = fadd float %20, %13, !dbg !8485
store float %21, float* %19, align 4, !dbg !8485
br label %22, !dbg !8482
22: ; preds = %12, %3
%23 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8486
ret %struct.Vectorf_t* %23, !dbg !8487
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorSetAllf(%struct.Vectorf_t* %0, float %1) #0 !dbg !8488 {
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca float, align 4
%5 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8491, metadata !DIExpression()), !dbg !8492
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !8493, metadata !DIExpression()), !dbg !8494
call void @llvm.dbg.declare(metadata i32* %5, metadata !8495, metadata !DIExpression()), !dbg !8496
store i32 0, i32* %5, align 4, !dbg !8497
br label %6, !dbg !8499
6: ; preds = %20, %2
%7 = load i32, i32* %5, align 4, !dbg !8500
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8502
%9 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %8, i32 0, i32 0, !dbg !8503
%10 = load i32, i32* %9, align 8, !dbg !8503
%11 = icmp ult i32 %7, %10, !dbg !8504
br i1 %11, label %12, label %23, !dbg !8505
12: ; preds = %6
%13 = load float, float* %4, align 4, !dbg !8506
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8507
%15 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %14, i32 0, i32 1, !dbg !8508
%16 = load float*, float** %15, align 8, !dbg !8508
%17 = load i32, i32* %5, align 4, !dbg !8509
%18 = zext i32 %17 to i64, !dbg !8507
%19 = getelementptr inbounds float, float* %16, i64 %18, !dbg !8507
store float %13, float* %19, align 4, !dbg !8510
br label %20, !dbg !8507
20: ; preds = %12
%21 = load i32, i32* %5, align 4, !dbg !8511
%22 = add i32 %21, 1, !dbg !8511
store i32 %22, i32* %5, align 4, !dbg !8511
br label %6, !dbg !8512, !llvm.loop !8513
23: ; preds = %6
%24 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8515
ret %struct.Vectorf_t* %24, !dbg !8516
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorAllocatef(i32 %0) #0 !dbg !8517 {
%2 = alloca i32, align 4
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca i8*, align 8
store i32 %0, i32* %2, align 4
call void @llvm.dbg.declare(metadata i32* %2, metadata !8520, metadata !DIExpression()), !dbg !8521
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8522, metadata !DIExpression()), !dbg !8523
%5 = load i32, i32* %2, align 4, !dbg !8524
%6 = zext i32 %5 to i64, !dbg !8524
%7 = mul i64 4, %6, !dbg !8525
%8 = add i64 16, %7, !dbg !8526
%9 = call noalias i8* @malloc(i64 %8) #7, !dbg !8527
%10 = bitcast i8* %9 to %struct.Vectorf_t*, !dbg !8528
store %struct.Vectorf_t* %10, %struct.Vectorf_t** %3, align 8, !dbg !8523
%11 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8529
%12 = icmp ne %struct.Vectorf_t* %11, null, !dbg !8529
br i1 %12, label %13, label %27, !dbg !8531
13: ; preds = %1
call void @llvm.dbg.declare(metadata i8** %4, metadata !8532, metadata !DIExpression()), !dbg !8534
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8535
%15 = bitcast %struct.Vectorf_t* %14 to i8*, !dbg !8536
store i8* %15, i8** %4, align 8, !dbg !8534
%16 = load i8*, i8** %4, align 8, !dbg !8537
%17 = getelementptr inbounds i8, i8* %16, i64 16, !dbg !8537
store i8* %17, i8** %4, align 8, !dbg !8537
%18 = load i8*, i8** %4, align 8, !dbg !8538
%19 = bitcast i8* %18 to float*, !dbg !8539
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8540
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 1, !dbg !8541
store float* %19, float** %21, align 8, !dbg !8542
%22 = load i32, i32* %2, align 4, !dbg !8543
%23 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8544
%24 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %23, i32 0, i32 0, !dbg !8545
store i32 %22, i32* %24, align 8, !dbg !8546
%25 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8547
%26 = call %struct.Vectorf_t* @vectorZerof(%struct.Vectorf_t* %25), !dbg !8548
br label %27, !dbg !8549
27: ; preds = %13, %1
%28 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8550
ret %struct.Vectorf_t* %28, !dbg !8551
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorZerof(%struct.Vectorf_t* %0) #0 !dbg !8552 {
%2 = alloca %struct.Vectorf_t*, align 8
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %2, metadata !8555, metadata !DIExpression()), !dbg !8556
%3 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8557
%4 = call %struct.Vectorf_t* @vectorSetAllf(%struct.Vectorf_t* %3, float 0.000000e+00), !dbg !8558
ret %struct.Vectorf_t* %4, !dbg !8559
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorChangeAllocateSizef(%struct.Vectorf_t* %0, i32 %1, float %2) #0 !dbg !8560 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
%7 = alloca %struct.Vectorf_t*, align 8
%8 = alloca i8*, align 8
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8561, metadata !DIExpression()), !dbg !8562
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !8563, metadata !DIExpression()), !dbg !8564
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8565, metadata !DIExpression()), !dbg !8566
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %7, metadata !8567, metadata !DIExpression()), !dbg !8568
%9 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8569
%10 = bitcast %struct.Vectorf_t* %9 to i8*, !dbg !8569
%11 = load i32, i32* %5, align 4, !dbg !8570
%12 = zext i32 %11 to i64, !dbg !8570
%13 = mul i64 4, %12, !dbg !8571
%14 = add i64 16, %13, !dbg !8572
%15 = call i8* @realloc(i8* %10, i64 %14) #7, !dbg !8573
%16 = bitcast i8* %15 to %struct.Vectorf_t*, !dbg !8574
store %struct.Vectorf_t* %16, %struct.Vectorf_t** %7, align 8, !dbg !8568
%17 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !8575
%18 = icmp ne %struct.Vectorf_t* %17, null, !dbg !8575
br i1 %18, label %19, label %31, !dbg !8577
19: ; preds = %3
call void @llvm.dbg.declare(metadata i8** %8, metadata !8578, metadata !DIExpression()), !dbg !8580
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !8581
%21 = bitcast %struct.Vectorf_t* %20 to i8*, !dbg !8582
store i8* %21, i8** %8, align 8, !dbg !8580
%22 = load i8*, i8** %8, align 8, !dbg !8583
%23 = getelementptr inbounds i8, i8* %22, i64 16, !dbg !8583
store i8* %23, i8** %8, align 8, !dbg !8583
%24 = load i8*, i8** %8, align 8, !dbg !8584
%25 = bitcast i8* %24 to float*, !dbg !8585
%26 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !8586
%27 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %26, i32 0, i32 1, !dbg !8587
store float* %25, float** %27, align 8, !dbg !8588
%28 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !8589
%29 = load i32, i32* %5, align 4, !dbg !8590
%30 = load float, float* %6, align 4, !dbg !8591
call void @vectorChangeSizef(%struct.Vectorf_t* %28, i32 %29, float %30), !dbg !8592
br label %31, !dbg !8593
31: ; preds = %19, %3
%32 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !8594
ret %struct.Vectorf_t* %32, !dbg !8595
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @vectorChangeSizef(%struct.Vectorf_t* %0, i32 %1, float %2) #0 !dbg !8596 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
%7 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8599, metadata !DIExpression()), !dbg !8600
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !8601, metadata !DIExpression()), !dbg !8602
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8603, metadata !DIExpression()), !dbg !8604
call void @llvm.dbg.declare(metadata i32* %7, metadata !8605, metadata !DIExpression()), !dbg !8606
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8607
%9 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %8, i32 0, i32 0, !dbg !8609
%10 = load i32, i32* %9, align 8, !dbg !8609
store i32 %10, i32* %7, align 4, !dbg !8610
br label %11, !dbg !8611
11: ; preds = %23, %3
%12 = load i32, i32* %7, align 4, !dbg !8612
%13 = load i32, i32* %5, align 4, !dbg !8614
%14 = icmp ult i32 %12, %13, !dbg !8615
br i1 %14, label %15, label %26, !dbg !8616
15: ; preds = %11
%16 = load float, float* %6, align 4, !dbg !8617
%17 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8618
%18 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %17, i32 0, i32 1, !dbg !8619
%19 = load float*, float** %18, align 8, !dbg !8619
%20 = load i32, i32* %7, align 4, !dbg !8620
%21 = zext i32 %20 to i64, !dbg !8618
%22 = getelementptr inbounds float, float* %19, i64 %21, !dbg !8618
store float %16, float* %22, align 4, !dbg !8621
br label %23, !dbg !8618
23: ; preds = %15
%24 = load i32, i32* %7, align 4, !dbg !8622
%25 = add i32 %24, 1, !dbg !8622
store i32 %25, i32* %7, align 4, !dbg !8622
br label %11, !dbg !8623, !llvm.loop !8624
26: ; preds = %11
%27 = load i32, i32* %5, align 4, !dbg !8626
%28 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8627
%29 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %28, i32 0, i32 0, !dbg !8628
store i32 %27, i32* %29, align 8, !dbg !8629
ret void, !dbg !8630
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorCopyf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1) #0 !dbg !8631 {
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8634, metadata !DIExpression()), !dbg !8635
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8636, metadata !DIExpression()), !dbg !8637
call void @llvm.dbg.declare(metadata i32* %5, metadata !8638, metadata !DIExpression()), !dbg !8639
call void @llvm.dbg.declare(metadata i32* %6, metadata !8640, metadata !DIExpression()), !dbg !8641
%7 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8642
%8 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %7, i32 0, i32 0, !dbg !8642
%9 = load i32, i32* %8, align 8, !dbg !8642
%10 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8642
%11 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %10, i32 0, i32 0, !dbg !8642
%12 = load i32, i32* %11, align 8, !dbg !8642
%13 = icmp ult i32 %9, %12, !dbg !8642
br i1 %13, label %14, label %18, !dbg !8642
14: ; preds = %2
%15 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8642
%16 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %15, i32 0, i32 0, !dbg !8642
%17 = load i32, i32* %16, align 8, !dbg !8642
br label %22, !dbg !8642
18: ; preds = %2
%19 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8642
%20 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %19, i32 0, i32 0, !dbg !8642
%21 = load i32, i32* %20, align 8, !dbg !8642
br label %22, !dbg !8642
22: ; preds = %18, %14
%23 = phi i32 [ %17, %14 ], [ %21, %18 ], !dbg !8642
store i32 %23, i32* %6, align 4, !dbg !8641
store i32 0, i32* %5, align 4, !dbg !8643
br label %24, !dbg !8645
24: ; preds = %42, %22
%25 = load i32, i32* %5, align 4, !dbg !8646
%26 = load i32, i32* %6, align 4, !dbg !8648
%27 = icmp ult i32 %25, %26, !dbg !8649
br i1 %27, label %28, label %45, !dbg !8650
28: ; preds = %24
%29 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8651
%30 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %29, i32 0, i32 1, !dbg !8652
%31 = load float*, float** %30, align 8, !dbg !8652
%32 = load i32, i32* %5, align 4, !dbg !8653
%33 = zext i32 %32 to i64, !dbg !8651
%34 = getelementptr inbounds float, float* %31, i64 %33, !dbg !8651
%35 = load float, float* %34, align 4, !dbg !8651
%36 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8654
%37 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %36, i32 0, i32 1, !dbg !8655
%38 = load float*, float** %37, align 8, !dbg !8655
%39 = load i32, i32* %5, align 4, !dbg !8656
%40 = zext i32 %39 to i64, !dbg !8654
%41 = getelementptr inbounds float, float* %38, i64 %40, !dbg !8654
store float %35, float* %41, align 4, !dbg !8657
br label %42, !dbg !8654
42: ; preds = %28
%43 = load i32, i32* %5, align 4, !dbg !8658
%44 = add i32 %43, 1, !dbg !8658
store i32 %44, i32* %5, align 4, !dbg !8658
br label %24, !dbg !8659, !llvm.loop !8660
45: ; preds = %24
%46 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8662
ret %struct.Vectorf_t* %46, !dbg !8663
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorMultiplyAccumulatef(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, float %2, %struct.Vectorf_t* %3) #0 !dbg !8664 {
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca float, align 4
%8 = alloca %struct.Vectorf_t*, align 8
%9 = alloca i32, align 4
%10 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8667, metadata !DIExpression()), !dbg !8668
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !8669, metadata !DIExpression()), !dbg !8670
store float %2, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !8671, metadata !DIExpression()), !dbg !8672
store %struct.Vectorf_t* %3, %struct.Vectorf_t** %8, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %8, metadata !8673, metadata !DIExpression()), !dbg !8674
call void @llvm.dbg.declare(metadata i32* %9, metadata !8675, metadata !DIExpression()), !dbg !8676
call void @llvm.dbg.declare(metadata i32* %10, metadata !8677, metadata !DIExpression()), !dbg !8678
%11 = load %struct.Vectorf_t*, %struct.Vectorf_t** %8, align 8, !dbg !8679
%12 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %11, i32 0, i32 0, !dbg !8679
%13 = load i32, i32* %12, align 8, !dbg !8679
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8679
%15 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %14, i32 0, i32 0, !dbg !8679
%16 = load i32, i32* %15, align 8, !dbg !8679
%17 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8679
%18 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %17, i32 0, i32 0, !dbg !8679
%19 = load i32, i32* %18, align 8, !dbg !8679
%20 = icmp ult i32 %16, %19, !dbg !8679
br i1 %20, label %21, label %25, !dbg !8679
21: ; preds = %4
%22 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8679
%23 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %22, i32 0, i32 0, !dbg !8679
%24 = load i32, i32* %23, align 8, !dbg !8679
br label %29, !dbg !8679
25: ; preds = %4
%26 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8679
%27 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %26, i32 0, i32 0, !dbg !8679
%28 = load i32, i32* %27, align 8, !dbg !8679
br label %29, !dbg !8679
29: ; preds = %25, %21
%30 = phi i32 [ %24, %21 ], [ %28, %25 ], !dbg !8679
%31 = icmp ult i32 %13, %30, !dbg !8679
br i1 %31, label %32, label %36, !dbg !8679
32: ; preds = %29
%33 = load %struct.Vectorf_t*, %struct.Vectorf_t** %8, align 8, !dbg !8679
%34 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %33, i32 0, i32 0, !dbg !8679
%35 = load i32, i32* %34, align 8, !dbg !8679
br label %54, !dbg !8679
36: ; preds = %29
%37 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8679
%38 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %37, i32 0, i32 0, !dbg !8679
%39 = load i32, i32* %38, align 8, !dbg !8679
%40 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8679
%41 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %40, i32 0, i32 0, !dbg !8679
%42 = load i32, i32* %41, align 8, !dbg !8679
%43 = icmp ult i32 %39, %42, !dbg !8679
br i1 %43, label %44, label %48, !dbg !8679
44: ; preds = %36
%45 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8679
%46 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %45, i32 0, i32 0, !dbg !8679
%47 = load i32, i32* %46, align 8, !dbg !8679
br label %52, !dbg !8679
48: ; preds = %36
%49 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8679
%50 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %49, i32 0, i32 0, !dbg !8679
%51 = load i32, i32* %50, align 8, !dbg !8679
br label %52, !dbg !8679
52: ; preds = %48, %44
%53 = phi i32 [ %47, %44 ], [ %51, %48 ], !dbg !8679
br label %54, !dbg !8679
54: ; preds = %52, %32
%55 = phi i32 [ %35, %32 ], [ %53, %52 ], !dbg !8679
store i32 %55, i32* %10, align 4, !dbg !8678
store i32 0, i32* %9, align 4, !dbg !8680
br label %56, !dbg !8682
56: ; preds = %84, %54
%57 = load i32, i32* %9, align 4, !dbg !8683
%58 = load i32, i32* %10, align 4, !dbg !8685
%59 = icmp ult i32 %57, %58, !dbg !8686
br i1 %59, label %60, label %87, !dbg !8687
60: ; preds = %56
%61 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8688
%62 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %61, i32 0, i32 1, !dbg !8689
%63 = load float*, float** %62, align 8, !dbg !8689
%64 = load i32, i32* %9, align 4, !dbg !8690
%65 = zext i32 %64 to i64, !dbg !8688
%66 = getelementptr inbounds float, float* %63, i64 %65, !dbg !8688
%67 = load float, float* %66, align 4, !dbg !8688
%68 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8691
%69 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %68, i32 0, i32 1, !dbg !8692
%70 = load float*, float** %69, align 8, !dbg !8692
%71 = load i32, i32* %9, align 4, !dbg !8693
%72 = zext i32 %71 to i64, !dbg !8691
%73 = getelementptr inbounds float, float* %70, i64 %72, !dbg !8691
%74 = load float, float* %73, align 4, !dbg !8691
%75 = load float, float* %7, align 4, !dbg !8694
%76 = fmul float %74, %75, !dbg !8695
%77 = fadd float %67, %76, !dbg !8696
%78 = load %struct.Vectorf_t*, %struct.Vectorf_t** %8, align 8, !dbg !8697
%79 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %78, i32 0, i32 1, !dbg !8698
%80 = load float*, float** %79, align 8, !dbg !8698
%81 = load i32, i32* %9, align 4, !dbg !8699
%82 = zext i32 %81 to i64, !dbg !8697
%83 = getelementptr inbounds float, float* %80, i64 %82, !dbg !8697
store float %77, float* %83, align 4, !dbg !8700
br label %84, !dbg !8697
84: ; preds = %60
%85 = load i32, i32* %9, align 4, !dbg !8701
%86 = add i32 %85, 1, !dbg !8701
store i32 %86, i32* %9, align 4, !dbg !8701
br label %56, !dbg !8702, !llvm.loop !8703
87: ; preds = %56
%88 = load %struct.Vectorf_t*, %struct.Vectorf_t** %8, align 8, !dbg !8705
ret %struct.Vectorf_t* %88, !dbg !8706
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorSumf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, %struct.Vectorf_t* %2) #0 !dbg !8707 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8710, metadata !DIExpression()), !dbg !8711
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8712, metadata !DIExpression()), !dbg !8713
store %struct.Vectorf_t* %2, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !8714, metadata !DIExpression()), !dbg !8715
call void @llvm.dbg.declare(metadata i32* %7, metadata !8716, metadata !DIExpression()), !dbg !8717
call void @llvm.dbg.declare(metadata i32* %8, metadata !8718, metadata !DIExpression()), !dbg !8719
%9 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8720
%10 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %9, i32 0, i32 0, !dbg !8720
%11 = load i32, i32* %10, align 8, !dbg !8720
%12 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8720
%13 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %12, i32 0, i32 0, !dbg !8720
%14 = load i32, i32* %13, align 8, !dbg !8720
%15 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8720
%16 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %15, i32 0, i32 0, !dbg !8720
%17 = load i32, i32* %16, align 8, !dbg !8720
%18 = icmp ult i32 %14, %17, !dbg !8720
br i1 %18, label %19, label %23, !dbg !8720
19: ; preds = %3
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8720
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !8720
%22 = load i32, i32* %21, align 8, !dbg !8720
br label %27, !dbg !8720
23: ; preds = %3
%24 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8720
%25 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %24, i32 0, i32 0, !dbg !8720
%26 = load i32, i32* %25, align 8, !dbg !8720
br label %27, !dbg !8720
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !8720
%29 = icmp ult i32 %11, %28, !dbg !8720
br i1 %29, label %30, label %34, !dbg !8720
30: ; preds = %27
%31 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8720
%32 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %31, i32 0, i32 0, !dbg !8720
%33 = load i32, i32* %32, align 8, !dbg !8720
br label %52, !dbg !8720
34: ; preds = %27
%35 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8720
%36 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %35, i32 0, i32 0, !dbg !8720
%37 = load i32, i32* %36, align 8, !dbg !8720
%38 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8720
%39 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %38, i32 0, i32 0, !dbg !8720
%40 = load i32, i32* %39, align 8, !dbg !8720
%41 = icmp ult i32 %37, %40, !dbg !8720
br i1 %41, label %42, label %46, !dbg !8720
42: ; preds = %34
%43 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8720
%44 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %43, i32 0, i32 0, !dbg !8720
%45 = load i32, i32* %44, align 8, !dbg !8720
br label %50, !dbg !8720
46: ; preds = %34
%47 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8720
%48 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %47, i32 0, i32 0, !dbg !8720
%49 = load i32, i32* %48, align 8, !dbg !8720
br label %50, !dbg !8720
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !8720
br label %52, !dbg !8720
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !8720
store i32 %53, i32* %8, align 4, !dbg !8719
store i32 0, i32* %7, align 4, !dbg !8721
br label %54, !dbg !8723
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !8724
%56 = load i32, i32* %8, align 4, !dbg !8726
%57 = icmp ult i32 %55, %56, !dbg !8727
br i1 %57, label %58, label %83, !dbg !8728
58: ; preds = %54
%59 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8729
%60 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %59, i32 0, i32 1, !dbg !8730
%61 = load float*, float** %60, align 8, !dbg !8730
%62 = load i32, i32* %7, align 4, !dbg !8731
%63 = zext i32 %62 to i64, !dbg !8729
%64 = getelementptr inbounds float, float* %61, i64 %63, !dbg !8729
%65 = load float, float* %64, align 4, !dbg !8729
%66 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8732
%67 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %66, i32 0, i32 1, !dbg !8733
%68 = load float*, float** %67, align 8, !dbg !8733
%69 = load i32, i32* %7, align 4, !dbg !8734
%70 = zext i32 %69 to i64, !dbg !8732
%71 = getelementptr inbounds float, float* %68, i64 %70, !dbg !8732
%72 = load float, float* %71, align 4, !dbg !8732
%73 = fadd float %65, %72, !dbg !8735
%74 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8736
%75 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %74, i32 0, i32 1, !dbg !8737
%76 = load float*, float** %75, align 8, !dbg !8737
%77 = load i32, i32* %7, align 4, !dbg !8738
%78 = zext i32 %77 to i64, !dbg !8736
%79 = getelementptr inbounds float, float* %76, i64 %78, !dbg !8736
store float %73, float* %79, align 4, !dbg !8739
br label %80, !dbg !8736
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !8740
%82 = add i32 %81, 1, !dbg !8740
store i32 %82, i32* %7, align 4, !dbg !8740
br label %54, !dbg !8741, !llvm.loop !8742
83: ; preds = %54
%84 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8744
ret %struct.Vectorf_t* %84, !dbg !8745
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorDifferencef(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, %struct.Vectorf_t* %2) #0 !dbg !8746 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8747, metadata !DIExpression()), !dbg !8748
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8749, metadata !DIExpression()), !dbg !8750
store %struct.Vectorf_t* %2, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !8751, metadata !DIExpression()), !dbg !8752
call void @llvm.dbg.declare(metadata i32* %7, metadata !8753, metadata !DIExpression()), !dbg !8754
call void @llvm.dbg.declare(metadata i32* %8, metadata !8755, metadata !DIExpression()), !dbg !8756
%9 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8757
%10 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %9, i32 0, i32 0, !dbg !8757
%11 = load i32, i32* %10, align 8, !dbg !8757
%12 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8757
%13 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %12, i32 0, i32 0, !dbg !8757
%14 = load i32, i32* %13, align 8, !dbg !8757
%15 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8757
%16 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %15, i32 0, i32 0, !dbg !8757
%17 = load i32, i32* %16, align 8, !dbg !8757
%18 = icmp ult i32 %14, %17, !dbg !8757
br i1 %18, label %19, label %23, !dbg !8757
19: ; preds = %3
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8757
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !8757
%22 = load i32, i32* %21, align 8, !dbg !8757
br label %27, !dbg !8757
23: ; preds = %3
%24 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8757
%25 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %24, i32 0, i32 0, !dbg !8757
%26 = load i32, i32* %25, align 8, !dbg !8757
br label %27, !dbg !8757
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !8757
%29 = icmp ult i32 %11, %28, !dbg !8757
br i1 %29, label %30, label %34, !dbg !8757
30: ; preds = %27
%31 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8757
%32 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %31, i32 0, i32 0, !dbg !8757
%33 = load i32, i32* %32, align 8, !dbg !8757
br label %52, !dbg !8757
34: ; preds = %27
%35 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8757
%36 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %35, i32 0, i32 0, !dbg !8757
%37 = load i32, i32* %36, align 8, !dbg !8757
%38 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8757
%39 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %38, i32 0, i32 0, !dbg !8757
%40 = load i32, i32* %39, align 8, !dbg !8757
%41 = icmp ult i32 %37, %40, !dbg !8757
br i1 %41, label %42, label %46, !dbg !8757
42: ; preds = %34
%43 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8757
%44 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %43, i32 0, i32 0, !dbg !8757
%45 = load i32, i32* %44, align 8, !dbg !8757
br label %50, !dbg !8757
46: ; preds = %34
%47 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8757
%48 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %47, i32 0, i32 0, !dbg !8757
%49 = load i32, i32* %48, align 8, !dbg !8757
br label %50, !dbg !8757
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !8757
br label %52, !dbg !8757
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !8757
store i32 %53, i32* %8, align 4, !dbg !8756
store i32 0, i32* %7, align 4, !dbg !8758
br label %54, !dbg !8760
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !8761
%56 = load i32, i32* %8, align 4, !dbg !8763
%57 = icmp ult i32 %55, %56, !dbg !8764
br i1 %57, label %58, label %83, !dbg !8765
58: ; preds = %54
%59 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8766
%60 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %59, i32 0, i32 1, !dbg !8767
%61 = load float*, float** %60, align 8, !dbg !8767
%62 = load i32, i32* %7, align 4, !dbg !8768
%63 = zext i32 %62 to i64, !dbg !8766
%64 = getelementptr inbounds float, float* %61, i64 %63, !dbg !8766
%65 = load float, float* %64, align 4, !dbg !8766
%66 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8769
%67 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %66, i32 0, i32 1, !dbg !8770
%68 = load float*, float** %67, align 8, !dbg !8770
%69 = load i32, i32* %7, align 4, !dbg !8771
%70 = zext i32 %69 to i64, !dbg !8769
%71 = getelementptr inbounds float, float* %68, i64 %70, !dbg !8769
%72 = load float, float* %71, align 4, !dbg !8769
%73 = fsub float %65, %72, !dbg !8772
%74 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8773
%75 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %74, i32 0, i32 1, !dbg !8774
%76 = load float*, float** %75, align 8, !dbg !8774
%77 = load i32, i32* %7, align 4, !dbg !8775
%78 = zext i32 %77 to i64, !dbg !8773
%79 = getelementptr inbounds float, float* %76, i64 %78, !dbg !8773
store float %73, float* %79, align 4, !dbg !8776
br label %80, !dbg !8773
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !8777
%82 = add i32 %81, 1, !dbg !8777
store i32 %82, i32* %7, align 4, !dbg !8777
br label %54, !dbg !8778, !llvm.loop !8779
83: ; preds = %54
%84 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8781
ret %struct.Vectorf_t* %84, !dbg !8782
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorMultiplyf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, %struct.Vectorf_t* %2) #0 !dbg !8783 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8784, metadata !DIExpression()), !dbg !8785
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8786, metadata !DIExpression()), !dbg !8787
store %struct.Vectorf_t* %2, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !8788, metadata !DIExpression()), !dbg !8789
call void @llvm.dbg.declare(metadata i32* %7, metadata !8790, metadata !DIExpression()), !dbg !8791
call void @llvm.dbg.declare(metadata i32* %8, metadata !8792, metadata !DIExpression()), !dbg !8793
%9 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8794
%10 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %9, i32 0, i32 0, !dbg !8794
%11 = load i32, i32* %10, align 8, !dbg !8794
%12 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8794
%13 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %12, i32 0, i32 0, !dbg !8794
%14 = load i32, i32* %13, align 8, !dbg !8794
%15 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8794
%16 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %15, i32 0, i32 0, !dbg !8794
%17 = load i32, i32* %16, align 8, !dbg !8794
%18 = icmp ult i32 %14, %17, !dbg !8794
br i1 %18, label %19, label %23, !dbg !8794
19: ; preds = %3
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8794
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !8794
%22 = load i32, i32* %21, align 8, !dbg !8794
br label %27, !dbg !8794
23: ; preds = %3
%24 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8794
%25 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %24, i32 0, i32 0, !dbg !8794
%26 = load i32, i32* %25, align 8, !dbg !8794
br label %27, !dbg !8794
27: ; preds = %23, %19
%28 = phi i32 [ %22, %19 ], [ %26, %23 ], !dbg !8794
%29 = icmp ult i32 %11, %28, !dbg !8794
br i1 %29, label %30, label %34, !dbg !8794
30: ; preds = %27
%31 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8794
%32 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %31, i32 0, i32 0, !dbg !8794
%33 = load i32, i32* %32, align 8, !dbg !8794
br label %52, !dbg !8794
34: ; preds = %27
%35 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8794
%36 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %35, i32 0, i32 0, !dbg !8794
%37 = load i32, i32* %36, align 8, !dbg !8794
%38 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8794
%39 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %38, i32 0, i32 0, !dbg !8794
%40 = load i32, i32* %39, align 8, !dbg !8794
%41 = icmp ult i32 %37, %40, !dbg !8794
br i1 %41, label %42, label %46, !dbg !8794
42: ; preds = %34
%43 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8794
%44 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %43, i32 0, i32 0, !dbg !8794
%45 = load i32, i32* %44, align 8, !dbg !8794
br label %50, !dbg !8794
46: ; preds = %34
%47 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8794
%48 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %47, i32 0, i32 0, !dbg !8794
%49 = load i32, i32* %48, align 8, !dbg !8794
br label %50, !dbg !8794
50: ; preds = %46, %42
%51 = phi i32 [ %45, %42 ], [ %49, %46 ], !dbg !8794
br label %52, !dbg !8794
52: ; preds = %50, %30
%53 = phi i32 [ %33, %30 ], [ %51, %50 ], !dbg !8794
store i32 %53, i32* %8, align 4, !dbg !8793
store i32 0, i32* %7, align 4, !dbg !8795
br label %54, !dbg !8797
54: ; preds = %80, %52
%55 = load i32, i32* %7, align 4, !dbg !8798
%56 = load i32, i32* %8, align 4, !dbg !8800
%57 = icmp ult i32 %55, %56, !dbg !8801
br i1 %57, label %58, label %83, !dbg !8802
58: ; preds = %54
%59 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8803
%60 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %59, i32 0, i32 1, !dbg !8804
%61 = load float*, float** %60, align 8, !dbg !8804
%62 = load i32, i32* %7, align 4, !dbg !8805
%63 = zext i32 %62 to i64, !dbg !8803
%64 = getelementptr inbounds float, float* %61, i64 %63, !dbg !8803
%65 = load float, float* %64, align 4, !dbg !8803
%66 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8806
%67 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %66, i32 0, i32 1, !dbg !8807
%68 = load float*, float** %67, align 8, !dbg !8807
%69 = load i32, i32* %7, align 4, !dbg !8808
%70 = zext i32 %69 to i64, !dbg !8806
%71 = getelementptr inbounds float, float* %68, i64 %70, !dbg !8806
%72 = load float, float* %71, align 4, !dbg !8806
%73 = fmul float %65, %72, !dbg !8809
%74 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8810
%75 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %74, i32 0, i32 1, !dbg !8811
%76 = load float*, float** %75, align 8, !dbg !8811
%77 = load i32, i32* %7, align 4, !dbg !8812
%78 = zext i32 %77 to i64, !dbg !8810
%79 = getelementptr inbounds float, float* %76, i64 %78, !dbg !8810
store float %73, float* %79, align 4, !dbg !8813
br label %80, !dbg !8810
80: ; preds = %58
%81 = load i32, i32* %7, align 4, !dbg !8814
%82 = add i32 %81, 1, !dbg !8814
store i32 %82, i32* %7, align 4, !dbg !8814
br label %54, !dbg !8815, !llvm.loop !8816
83: ; preds = %54
%84 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !8818
ret %struct.Vectorf_t* %84, !dbg !8819
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorDotf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1) #0 !dbg !8820 {
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
%7 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8823, metadata !DIExpression()), !dbg !8824
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8825, metadata !DIExpression()), !dbg !8826
call void @llvm.dbg.declare(metadata i32* %5, metadata !8827, metadata !DIExpression()), !dbg !8828
call void @llvm.dbg.declare(metadata i32* %6, metadata !8829, metadata !DIExpression()), !dbg !8830
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8831
%9 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %8, i32 0, i32 0, !dbg !8831
%10 = load i32, i32* %9, align 8, !dbg !8831
%11 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8831
%12 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %11, i32 0, i32 0, !dbg !8831
%13 = load i32, i32* %12, align 8, !dbg !8831
%14 = icmp ult i32 %10, %13, !dbg !8831
br i1 %14, label %15, label %19, !dbg !8831
15: ; preds = %2
%16 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8831
%17 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %16, i32 0, i32 0, !dbg !8831
%18 = load i32, i32* %17, align 8, !dbg !8831
br label %23, !dbg !8831
19: ; preds = %2
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8831
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !8831
%22 = load i32, i32* %21, align 8, !dbg !8831
br label %23, !dbg !8831
23: ; preds = %19, %15
%24 = phi i32 [ %18, %15 ], [ %22, %19 ], !dbg !8831
store i32 %24, i32* %6, align 4, !dbg !8830
call void @llvm.dbg.declare(metadata float* %7, metadata !8832, metadata !DIExpression()), !dbg !8833
store float 0.000000e+00, float* %7, align 4, !dbg !8833
store i32 0, i32* %5, align 4, !dbg !8834
br label %25, !dbg !8836
25: ; preds = %47, %23
%26 = load i32, i32* %5, align 4, !dbg !8837
%27 = load i32, i32* %6, align 4, !dbg !8839
%28 = icmp ult i32 %26, %27, !dbg !8840
br i1 %28, label %29, label %50, !dbg !8841
29: ; preds = %25
%30 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8842
%31 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %30, i32 0, i32 1, !dbg !8843
%32 = load float*, float** %31, align 8, !dbg !8843
%33 = load i32, i32* %5, align 4, !dbg !8844
%34 = zext i32 %33 to i64, !dbg !8842
%35 = getelementptr inbounds float, float* %32, i64 %34, !dbg !8842
%36 = load float, float* %35, align 4, !dbg !8842
%37 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8845
%38 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %37, i32 0, i32 1, !dbg !8846
%39 = load float*, float** %38, align 8, !dbg !8846
%40 = load i32, i32* %5, align 4, !dbg !8847
%41 = zext i32 %40 to i64, !dbg !8845
%42 = getelementptr inbounds float, float* %39, i64 %41, !dbg !8845
%43 = load float, float* %42, align 4, !dbg !8845
%44 = fmul float %36, %43, !dbg !8848
%45 = load float, float* %7, align 4, !dbg !8849
%46 = fadd float %45, %44, !dbg !8849
store float %46, float* %7, align 4, !dbg !8849
br label %47, !dbg !8850
47: ; preds = %29
%48 = load i32, i32* %5, align 4, !dbg !8851
%49 = add i32 %48, 1, !dbg !8851
store i32 %49, i32* %5, align 4, !dbg !8851
br label %25, !dbg !8852, !llvm.loop !8853
50: ; preds = %25
%51 = load float, float* %7, align 4, !dbg !8855
ret float %51, !dbg !8856
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorLengthSquaredf(%struct.Vectorf_t* %0) #0 !dbg !8857 {
%2 = alloca %struct.Vectorf_t*, align 8
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %2, metadata !8860, metadata !DIExpression()), !dbg !8861
%3 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8862
%4 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8863
%5 = call float @vectorDotf(%struct.Vectorf_t* %3, %struct.Vectorf_t* %4), !dbg !8864
ret float %5, !dbg !8865
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorLengthf(%struct.Vectorf_t* %0) #0 !dbg !8866 {
%2 = alloca %struct.Vectorf_t*, align 8
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %2, metadata !8867, metadata !DIExpression()), !dbg !8868
%3 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8869
%4 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8870
%5 = call float @vectorDotf(%struct.Vectorf_t* %3, %struct.Vectorf_t* %4), !dbg !8871
%6 = call float @sqrtf(float %5) #7, !dbg !8872
ret float %6, !dbg !8873
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorChangeLengthf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, float %2) #0 !dbg !8874 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca float, align 4
%7 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8877, metadata !DIExpression()), !dbg !8878
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8879, metadata !DIExpression()), !dbg !8880
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8881, metadata !DIExpression()), !dbg !8882
call void @llvm.dbg.declare(metadata float* %7, metadata !8883, metadata !DIExpression()), !dbg !8884
%8 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8885
%9 = call float @vectorLengthf(%struct.Vectorf_t* %8), !dbg !8886
store float %9, float* %7, align 4, !dbg !8884
%10 = load float, float* %7, align 4, !dbg !8887
%11 = fcmp ogt float %10, 0.000000e+00, !dbg !8889
br i1 %11, label %12, label %19, !dbg !8890
12: ; preds = %3
%13 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8891
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8893
%15 = load float, float* %6, align 4, !dbg !8894
%16 = load float, float* %7, align 4, !dbg !8895
%17 = fdiv float %15, %16, !dbg !8896
%18 = call %struct.Vectorf_t* @vectorScalef(%struct.Vectorf_t* %13, %struct.Vectorf_t* %14, float %17), !dbg !8897
br label %33, !dbg !8898
19: ; preds = %3
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8899
%21 = call %struct.Vectorf_t* @vectorZerof(%struct.Vectorf_t* %20), !dbg !8901
%22 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8902
%23 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %22, i32 0, i32 0, !dbg !8904
%24 = load i32, i32* %23, align 8, !dbg !8904
%25 = icmp ugt i32 %24, 0, !dbg !8905
br i1 %25, label %26, label %32, !dbg !8906
26: ; preds = %19
%27 = load float, float* %6, align 4, !dbg !8907
%28 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8908
%29 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %28, i32 0, i32 1, !dbg !8909
%30 = load float*, float** %29, align 8, !dbg !8909
%31 = getelementptr inbounds float, float* %30, i64 0, !dbg !8908
store float %27, float* %31, align 4, !dbg !8910
br label %32, !dbg !8908
32: ; preds = %26, %19
br label %33
33: ; preds = %32, %12
%34 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8911
ret %struct.Vectorf_t* %34, !dbg !8912
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorScalef(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1, float %2) #0 !dbg !8913 {
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca %struct.Vectorf_t*, align 8
%6 = alloca float, align 4
%7 = alloca i32, align 4
%8 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8914, metadata !DIExpression()), !dbg !8915
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %5, metadata !8916, metadata !DIExpression()), !dbg !8917
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !8918, metadata !DIExpression()), !dbg !8919
call void @llvm.dbg.declare(metadata i32* %7, metadata !8920, metadata !DIExpression()), !dbg !8921
call void @llvm.dbg.declare(metadata i32* %8, metadata !8922, metadata !DIExpression()), !dbg !8923
%9 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8924
%10 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %9, i32 0, i32 0, !dbg !8924
%11 = load i32, i32* %10, align 8, !dbg !8924
%12 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8924
%13 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %12, i32 0, i32 0, !dbg !8924
%14 = load i32, i32* %13, align 8, !dbg !8924
%15 = icmp ult i32 %11, %14, !dbg !8924
br i1 %15, label %16, label %20, !dbg !8924
16: ; preds = %3
%17 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8924
%18 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %17, i32 0, i32 0, !dbg !8924
%19 = load i32, i32* %18, align 8, !dbg !8924
br label %24, !dbg !8924
20: ; preds = %3
%21 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8924
%22 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %21, i32 0, i32 0, !dbg !8924
%23 = load i32, i32* %22, align 8, !dbg !8924
br label %24, !dbg !8924
24: ; preds = %20, %16
%25 = phi i32 [ %19, %16 ], [ %23, %20 ], !dbg !8924
store i32 %25, i32* %8, align 4, !dbg !8923
store i32 0, i32* %7, align 4, !dbg !8925
br label %26, !dbg !8927
26: ; preds = %46, %24
%27 = load i32, i32* %7, align 4, !dbg !8928
%28 = load i32, i32* %8, align 4, !dbg !8930
%29 = icmp ult i32 %27, %28, !dbg !8931
br i1 %29, label %30, label %49, !dbg !8932
30: ; preds = %26
%31 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8933
%32 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %31, i32 0, i32 1, !dbg !8934
%33 = load float*, float** %32, align 8, !dbg !8934
%34 = load i32, i32* %7, align 4, !dbg !8935
%35 = zext i32 %34 to i64, !dbg !8933
%36 = getelementptr inbounds float, float* %33, i64 %35, !dbg !8933
%37 = load float, float* %36, align 4, !dbg !8933
%38 = load float, float* %6, align 4, !dbg !8936
%39 = fmul float %37, %38, !dbg !8937
%40 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8938
%41 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %40, i32 0, i32 1, !dbg !8939
%42 = load float*, float** %41, align 8, !dbg !8939
%43 = load i32, i32* %7, align 4, !dbg !8940
%44 = zext i32 %43 to i64, !dbg !8938
%45 = getelementptr inbounds float, float* %42, i64 %44, !dbg !8938
store float %39, float* %45, align 4, !dbg !8941
br label %46, !dbg !8938
46: ; preds = %30
%47 = load i32, i32* %7, align 4, !dbg !8942
%48 = add i32 %47, 1, !dbg !8942
store i32 %48, i32* %7, align 4, !dbg !8942
br label %26, !dbg !8943, !llvm.loop !8944
49: ; preds = %26
%50 = load %struct.Vectorf_t*, %struct.Vectorf_t** %5, align 8, !dbg !8946
ret %struct.Vectorf_t* %50, !dbg !8947
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorUnitf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1) #0 !dbg !8948 {
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca %struct.Vectorf_t*, align 8
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8949, metadata !DIExpression()), !dbg !8950
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8951, metadata !DIExpression()), !dbg !8952
%5 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8953
%6 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8954
%7 = call %struct.Vectorf_t* @vectorChangeLengthf(%struct.Vectorf_t* %5, %struct.Vectorf_t* %6, float 1.000000e+00), !dbg !8955
ret %struct.Vectorf_t* %7, !dbg !8956
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Vectorf_t* @vectorAbsf(%struct.Vectorf_t* %0, %struct.Vectorf_t* %1) #0 !dbg !8957 {
%3 = alloca %struct.Vectorf_t*, align 8
%4 = alloca %struct.Vectorf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %3, metadata !8958, metadata !DIExpression()), !dbg !8959
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %4, metadata !8960, metadata !DIExpression()), !dbg !8961
call void @llvm.dbg.declare(metadata i32* %5, metadata !8962, metadata !DIExpression()), !dbg !8963
call void @llvm.dbg.declare(metadata i32* %6, metadata !8964, metadata !DIExpression()), !dbg !8965
%7 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8966
%8 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %7, i32 0, i32 0, !dbg !8966
%9 = load i32, i32* %8, align 8, !dbg !8966
%10 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8966
%11 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %10, i32 0, i32 0, !dbg !8966
%12 = load i32, i32* %11, align 8, !dbg !8966
%13 = icmp ult i32 %9, %12, !dbg !8966
br i1 %13, label %14, label %18, !dbg !8966
14: ; preds = %2
%15 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8966
%16 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %15, i32 0, i32 0, !dbg !8966
%17 = load i32, i32* %16, align 8, !dbg !8966
br label %22, !dbg !8966
18: ; preds = %2
%19 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8966
%20 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %19, i32 0, i32 0, !dbg !8966
%21 = load i32, i32* %20, align 8, !dbg !8966
br label %22, !dbg !8966
22: ; preds = %18, %14
%23 = phi i32 [ %17, %14 ], [ %21, %18 ], !dbg !8966
store i32 %23, i32* %6, align 4, !dbg !8965
store i32 0, i32* %5, align 4, !dbg !8967
br label %24, !dbg !8969
24: ; preds = %43, %22
%25 = load i32, i32* %5, align 4, !dbg !8970
%26 = load i32, i32* %6, align 4, !dbg !8972
%27 = icmp ult i32 %25, %26, !dbg !8973
br i1 %27, label %28, label %46, !dbg !8974
28: ; preds = %24
%29 = load %struct.Vectorf_t*, %struct.Vectorf_t** %3, align 8, !dbg !8975
%30 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %29, i32 0, i32 1, !dbg !8976
%31 = load float*, float** %30, align 8, !dbg !8976
%32 = load i32, i32* %5, align 4, !dbg !8977
%33 = zext i32 %32 to i64, !dbg !8975
%34 = getelementptr inbounds float, float* %31, i64 %33, !dbg !8975
%35 = load float, float* %34, align 4, !dbg !8975
%36 = call float @llvm.fabs.f32(float %35), !dbg !8978
%37 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8979
%38 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %37, i32 0, i32 1, !dbg !8980
%39 = load float*, float** %38, align 8, !dbg !8980
%40 = load i32, i32* %5, align 4, !dbg !8981
%41 = zext i32 %40 to i64, !dbg !8979
%42 = getelementptr inbounds float, float* %39, i64 %41, !dbg !8979
store float %36, float* %42, align 4, !dbg !8982
br label %43, !dbg !8979
43: ; preds = %28
%44 = load i32, i32* %5, align 4, !dbg !8983
%45 = add i32 %44, 1, !dbg !8983
store i32 %45, i32* %5, align 4, !dbg !8983
br label %24, !dbg !8984, !llvm.loop !8985
46: ; preds = %24
%47 = load %struct.Vectorf_t*, %struct.Vectorf_t** %4, align 8, !dbg !8987
ret %struct.Vectorf_t* %47, !dbg !8988
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorMaxf(%struct.Vectorf_t* %0) #0 !dbg !8989 {
%2 = alloca %struct.Vectorf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %2, metadata !8990, metadata !DIExpression()), !dbg !8991
call void @llvm.dbg.declare(metadata i32* %3, metadata !8992, metadata !DIExpression()), !dbg !8993
call void @llvm.dbg.declare(metadata float* %4, metadata !8994, metadata !DIExpression()), !dbg !8995
%5 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !8996
%6 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %5, i32 0, i32 0, !dbg !8997
%7 = load i32, i32* %6, align 8, !dbg !8997
%8 = icmp ugt i32 %7, 0, !dbg !8998
br i1 %8, label %9, label %15, !dbg !8999
9: ; preds = %1
%10 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9000
%11 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %10, i32 0, i32 1, !dbg !9001
%12 = load float*, float** %11, align 8, !dbg !9001
%13 = getelementptr inbounds float, float* %12, i64 0, !dbg !9000
%14 = load float, float* %13, align 4, !dbg !9000
br label %16, !dbg !8999
15: ; preds = %1
br label %16, !dbg !8999
16: ; preds = %15, %9
%17 = phi float [ %14, %9 ], [ 0.000000e+00, %15 ], !dbg !8999
store float %17, float* %4, align 4, !dbg !8995
store i32 1, i32* %3, align 4, !dbg !9002
br label %18, !dbg !9004
18: ; preds = %43, %16
%19 = load i32, i32* %3, align 4, !dbg !9005
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9007
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !9008
%22 = load i32, i32* %21, align 8, !dbg !9008
%23 = icmp ult i32 %19, %22, !dbg !9009
br i1 %23, label %24, label %46, !dbg !9010
24: ; preds = %18
%25 = load float, float* %4, align 4, !dbg !9011
%26 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9014
%27 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %26, i32 0, i32 1, !dbg !9015
%28 = load float*, float** %27, align 8, !dbg !9015
%29 = load i32, i32* %3, align 4, !dbg !9016
%30 = zext i32 %29 to i64, !dbg !9014
%31 = getelementptr inbounds float, float* %28, i64 %30, !dbg !9014
%32 = load float, float* %31, align 4, !dbg !9014
%33 = fcmp olt float %25, %32, !dbg !9017
br i1 %33, label %34, label %42, !dbg !9018
34: ; preds = %24
%35 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9019
%36 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %35, i32 0, i32 1, !dbg !9020
%37 = load float*, float** %36, align 8, !dbg !9020
%38 = load i32, i32* %3, align 4, !dbg !9021
%39 = zext i32 %38 to i64, !dbg !9019
%40 = getelementptr inbounds float, float* %37, i64 %39, !dbg !9019
%41 = load float, float* %40, align 4, !dbg !9019
store float %41, float* %4, align 4, !dbg !9022
br label %42, !dbg !9023
42: ; preds = %34, %24
br label %43, !dbg !9024
43: ; preds = %42
%44 = load i32, i32* %3, align 4, !dbg !9025
%45 = add i32 %44, 1, !dbg !9025
store i32 %45, i32* %3, align 4, !dbg !9025
br label %18, !dbg !9026, !llvm.loop !9027
46: ; preds = %18
%47 = load float, float* %4, align 4, !dbg !9029
ret float %47, !dbg !9030
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @vectorMinf(%struct.Vectorf_t* %0) #0 !dbg !9031 {
%2 = alloca %struct.Vectorf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca float, align 4
store %struct.Vectorf_t* %0, %struct.Vectorf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %2, metadata !9032, metadata !DIExpression()), !dbg !9033
call void @llvm.dbg.declare(metadata i32* %3, metadata !9034, metadata !DIExpression()), !dbg !9035
call void @llvm.dbg.declare(metadata float* %4, metadata !9036, metadata !DIExpression()), !dbg !9037
%5 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9038
%6 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %5, i32 0, i32 0, !dbg !9039
%7 = load i32, i32* %6, align 8, !dbg !9039
%8 = icmp ugt i32 %7, 0, !dbg !9040
br i1 %8, label %9, label %15, !dbg !9041
9: ; preds = %1
%10 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9042
%11 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %10, i32 0, i32 1, !dbg !9043
%12 = load float*, float** %11, align 8, !dbg !9043
%13 = getelementptr inbounds float, float* %12, i64 0, !dbg !9042
%14 = load float, float* %13, align 4, !dbg !9042
br label %16, !dbg !9041
15: ; preds = %1
br label %16, !dbg !9041
16: ; preds = %15, %9
%17 = phi float [ %14, %9 ], [ 0.000000e+00, %15 ], !dbg !9041
store float %17, float* %4, align 4, !dbg !9037
store i32 1, i32* %3, align 4, !dbg !9044
br label %18, !dbg !9046
18: ; preds = %43, %16
%19 = load i32, i32* %3, align 4, !dbg !9047
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9049
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !9050
%22 = load i32, i32* %21, align 8, !dbg !9050
%23 = icmp ult i32 %19, %22, !dbg !9051
br i1 %23, label %24, label %46, !dbg !9052
24: ; preds = %18
%25 = load float, float* %4, align 4, !dbg !9053
%26 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9056
%27 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %26, i32 0, i32 1, !dbg !9057
%28 = load float*, float** %27, align 8, !dbg !9057
%29 = load i32, i32* %3, align 4, !dbg !9058
%30 = zext i32 %29 to i64, !dbg !9056
%31 = getelementptr inbounds float, float* %28, i64 %30, !dbg !9056
%32 = load float, float* %31, align 4, !dbg !9056
%33 = fcmp ogt float %25, %32, !dbg !9059
br i1 %33, label %34, label %42, !dbg !9060
34: ; preds = %24
%35 = load %struct.Vectorf_t*, %struct.Vectorf_t** %2, align 8, !dbg !9061
%36 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %35, i32 0, i32 1, !dbg !9062
%37 = load float*, float** %36, align 8, !dbg !9062
%38 = load i32, i32* %3, align 4, !dbg !9063
%39 = zext i32 %38 to i64, !dbg !9061
%40 = getelementptr inbounds float, float* %37, i64 %39, !dbg !9061
%41 = load float, float* %40, align 4, !dbg !9061
store float %41, float* %4, align 4, !dbg !9064
br label %42, !dbg !9065
42: ; preds = %34, %24
br label %43, !dbg !9066
43: ; preds = %42
%44 = load i32, i32* %3, align 4, !dbg !9067
%45 = add i32 %44, 1, !dbg !9067
store i32 %45, i32* %3, align 4, !dbg !9067
br label %18, !dbg !9068, !llvm.loop !9069
46: ; preds = %18
%47 = load float, float* %4, align 4, !dbg !9071
ret float %47, !dbg !9072
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @matrixGetf(%struct.Matrixf_t* %0, i32 %1, i32 %2) #0 !dbg !9073 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !9078, metadata !DIExpression()), !dbg !9079
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !9080, metadata !DIExpression()), !dbg !9081
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !9082, metadata !DIExpression()), !dbg !9083
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9084
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 2, !dbg !9084
%9 = load float*, float** %8, align 8, !dbg !9084
%10 = load i32, i32* %5, align 4, !dbg !9084
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9084
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 1, !dbg !9084
%13 = load i32, i32* %12, align 4, !dbg !9084
%14 = mul i32 %10, %13, !dbg !9084
%15 = load i32, i32* %6, align 4, !dbg !9084
%16 = add i32 %14, %15, !dbg !9084
%17 = zext i32 %16 to i64, !dbg !9084
%18 = getelementptr inbounds float, float* %9, i64 %17, !dbg !9084
%19 = load float, float* %18, align 4, !dbg !9084
ret float %19, !dbg !9085
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetf(%struct.Matrixf_t* %0, i32 %1, i32 %2, float %3) #0 !dbg !9086 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9089, metadata !DIExpression()), !dbg !9090
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !9091, metadata !DIExpression()), !dbg !9092
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !9093, metadata !DIExpression()), !dbg !9094
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !9095, metadata !DIExpression()), !dbg !9096
%9 = load float, float* %8, align 4, !dbg !9097
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9098
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 2, !dbg !9098
%12 = load float*, float** %11, align 8, !dbg !9098
%13 = load i32, i32* %6, align 4, !dbg !9098
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9098
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !9098
%16 = load i32, i32* %15, align 4, !dbg !9098
%17 = mul i32 %13, %16, !dbg !9098
%18 = load i32, i32* %7, align 4, !dbg !9098
%19 = add i32 %17, %18, !dbg !9098
%20 = zext i32 %19 to i64, !dbg !9098
%21 = getelementptr inbounds float, float* %12, i64 %20, !dbg !9098
store float %9, float* %21, align 4, !dbg !9099
ret void, !dbg !9100
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixAddToElementf(%struct.Matrixf_t* %0, i32 %1, i32 %2, float %3) #0 !dbg !9101 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9102, metadata !DIExpression()), !dbg !9103
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !9104, metadata !DIExpression()), !dbg !9105
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !9106, metadata !DIExpression()), !dbg !9107
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !9108, metadata !DIExpression()), !dbg !9109
%9 = load float, float* %8, align 4, !dbg !9110
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9111
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 2, !dbg !9111
%12 = load float*, float** %11, align 8, !dbg !9111
%13 = load i32, i32* %6, align 4, !dbg !9111
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9111
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !9111
%16 = load i32, i32* %15, align 4, !dbg !9111
%17 = mul i32 %13, %16, !dbg !9111
%18 = load i32, i32* %7, align 4, !dbg !9111
%19 = add i32 %17, %18, !dbg !9111
%20 = zext i32 %19 to i64, !dbg !9111
%21 = getelementptr inbounds float, float* %12, i64 %20, !dbg !9111
%22 = load float, float* %21, align 4, !dbg !9112
%23 = fadd float %22, %9, !dbg !9112
store float %23, float* %21, align 4, !dbg !9112
ret void, !dbg !9113
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Matrixf_t* @matrixAllocatef(i32 %0, i32 %1) #0 !dbg !9114 {
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i8*, align 8
store i32 %0, i32* %3, align 4
call void @llvm.dbg.declare(metadata i32* %3, metadata !9117, metadata !DIExpression()), !dbg !9118
store i32 %1, i32* %4, align 4
call void @llvm.dbg.declare(metadata i32* %4, metadata !9119, metadata !DIExpression()), !dbg !9120
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9121, metadata !DIExpression()), !dbg !9122
%7 = load i32, i32* %3, align 4, !dbg !9123
%8 = zext i32 %7 to i64, !dbg !9123
%9 = mul i64 4, %8, !dbg !9124
%10 = load i32, i32* %4, align 4, !dbg !9125
%11 = zext i32 %10 to i64, !dbg !9125
%12 = mul i64 %9, %11, !dbg !9126
%13 = add i64 16, %12, !dbg !9127
%14 = call noalias i8* @malloc(i64 %13) #7, !dbg !9128
%15 = bitcast i8* %14 to %struct.Matrixf_t*, !dbg !9129
store %struct.Matrixf_t* %15, %struct.Matrixf_t** %5, align 8, !dbg !9122
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9130
%17 = icmp ne %struct.Matrixf_t* %16, null, !dbg !9130
br i1 %17, label %18, label %34, !dbg !9132
18: ; preds = %2
call void @llvm.dbg.declare(metadata i8** %6, metadata !9133, metadata !DIExpression()), !dbg !9135
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9136
%20 = bitcast %struct.Matrixf_t* %19 to i8*, !dbg !9137
store i8* %20, i8** %6, align 8, !dbg !9135
%21 = load i8*, i8** %6, align 8, !dbg !9138
%22 = getelementptr inbounds i8, i8* %21, i64 16, !dbg !9138
store i8* %22, i8** %6, align 8, !dbg !9138
%23 = load i8*, i8** %6, align 8, !dbg !9139
%24 = bitcast i8* %23 to float*, !dbg !9140
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9141
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 2, !dbg !9142
store float* %24, float** %26, align 8, !dbg !9143
%27 = load i32, i32* %4, align 4, !dbg !9144
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9145
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 1, !dbg !9146
store i32 %27, i32* %29, align 4, !dbg !9147
%30 = load i32, i32* %3, align 4, !dbg !9148
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9149
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 0, !dbg !9150
store i32 %30, i32* %32, align 8, !dbg !9151
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9152
call void @matrixZerof(%struct.Matrixf_t* %33), !dbg !9153
br label %34, !dbg !9154
34: ; preds = %18, %2
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9155
ret %struct.Matrixf_t* %35, !dbg !9156
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixZerof(%struct.Matrixf_t* %0) #0 !dbg !9157 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !9160, metadata !DIExpression()), !dbg !9161
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9162
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !9163
%5 = load float*, float** %4, align 8, !dbg !9163
%6 = bitcast float* %5 to i8*, !dbg !9164
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9165
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 1, !dbg !9166
%9 = load i32, i32* %8, align 4, !dbg !9166
%10 = zext i32 %9 to i64, !dbg !9165
%11 = mul i64 4, %10, !dbg !9167
%12 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9168
%13 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %12, i32 0, i32 0, !dbg !9169
%14 = load i32, i32* %13, align 8, !dbg !9169
%15 = zext i32 %14 to i64, !dbg !9168
%16 = mul i64 %11, %15, !dbg !9170
call void @llvm.memset.p0i8.i64(i8* align 4 %6, i8 0, i64 %16, i1 false), !dbg !9164
ret void, !dbg !9171
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Matrixf_t* @matrixChangeAllocateSizef(%struct.Matrixf_t* %0, i32 %1, i32 %2, float %3) #0 !dbg !9172 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
%9 = alloca %struct.Matrixf_t*, align 8
%10 = alloca i8*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9175, metadata !DIExpression()), !dbg !9176
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !9177, metadata !DIExpression()), !dbg !9178
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !9179, metadata !DIExpression()), !dbg !9180
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !9181, metadata !DIExpression()), !dbg !9182
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %9, metadata !9183, metadata !DIExpression()), !dbg !9184
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9185
%12 = bitcast %struct.Matrixf_t* %11 to i8*, !dbg !9185
%13 = load i32, i32* %6, align 4, !dbg !9186
%14 = zext i32 %13 to i64, !dbg !9186
%15 = mul i64 4, %14, !dbg !9187
%16 = load i32, i32* %7, align 4, !dbg !9188
%17 = zext i32 %16 to i64, !dbg !9188
%18 = mul i64 %15, %17, !dbg !9189
%19 = add i64 16, %18, !dbg !9190
%20 = call i8* @realloc(i8* %12, i64 %19) #7, !dbg !9191
%21 = bitcast i8* %20 to %struct.Matrixf_t*, !dbg !9192
store %struct.Matrixf_t* %21, %struct.Matrixf_t** %9, align 8, !dbg !9184
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %9, align 8, !dbg !9193
%23 = icmp ne %struct.Matrixf_t* %22, null, !dbg !9193
br i1 %23, label %24, label %37, !dbg !9195
24: ; preds = %4
call void @llvm.dbg.declare(metadata i8** %10, metadata !9196, metadata !DIExpression()), !dbg !9198
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %9, align 8, !dbg !9199
%26 = bitcast %struct.Matrixf_t* %25 to i8*, !dbg !9200
store i8* %26, i8** %10, align 8, !dbg !9198
%27 = load i8*, i8** %10, align 8, !dbg !9201
%28 = getelementptr inbounds i8, i8* %27, i64 16, !dbg !9201
store i8* %28, i8** %10, align 8, !dbg !9201
%29 = load i8*, i8** %10, align 8, !dbg !9202
%30 = bitcast i8* %29 to float*, !dbg !9203
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %9, align 8, !dbg !9204
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 2, !dbg !9205
store float* %30, float** %32, align 8, !dbg !9206
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %9, align 8, !dbg !9207
%34 = load i32, i32* %6, align 4, !dbg !9208
%35 = load i32, i32* %7, align 4, !dbg !9209
%36 = load float, float* %8, align 4, !dbg !9210
call void @matrixChangeSizef(%struct.Matrixf_t* %33, i32 %34, i32 %35, float %36), !dbg !9211
br label %37, !dbg !9212
37: ; preds = %24, %4
%38 = load %struct.Matrixf_t*, %struct.Matrixf_t** %9, align 8, !dbg !9213
ret %struct.Matrixf_t* %38, !dbg !9214
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixChangeSizef(%struct.Matrixf_t* %0, i32 %1, i32 %2, float %3) #0 !dbg !9215 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
%9 = alloca %struct.Matrixf_t, align 8
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca i32, align 4
%14 = alloca i32, align 4
%15 = alloca i32, align 4
%16 = alloca i32, align 4
%17 = alloca i32, align 4
%18 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9216, metadata !DIExpression()), !dbg !9217
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !9218, metadata !DIExpression()), !dbg !9219
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !9220, metadata !DIExpression()), !dbg !9221
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !9222, metadata !DIExpression()), !dbg !9223
call void @llvm.dbg.declare(metadata %struct.Matrixf_t* %9, metadata !9224, metadata !DIExpression()), !dbg !9225
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9226
%20 = bitcast %struct.Matrixf_t* %9 to i8*, !dbg !9227
%21 = bitcast %struct.Matrixf_t* %19 to i8*, !dbg !9227
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false), !dbg !9227
%22 = load i32, i32* %7, align 4, !dbg !9228
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9229
store i32 %22, i32* %23, align 4, !dbg !9230
%24 = load i32, i32* %6, align 4, !dbg !9231
%25 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9232
store i32 %24, i32* %25, align 8, !dbg !9233
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9234
%27 = load i32, i32* %26, align 4, !dbg !9234
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9236
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 1, !dbg !9237
%30 = load i32, i32* %29, align 4, !dbg !9237
%31 = icmp ugt i32 %27, %30, !dbg !9238
br i1 %31, label %32, label %135, !dbg !9239
32: ; preds = %4
call void @llvm.dbg.declare(metadata i32* %10, metadata !9240, metadata !DIExpression()), !dbg !9242
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9243
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 0, !dbg !9244
%35 = load i32, i32* %34, align 8, !dbg !9244
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9245
%37 = load i32, i32* %36, align 8, !dbg !9245
%38 = icmp ult i32 %35, %37, !dbg !9246
br i1 %38, label %39, label %43, !dbg !9247
39: ; preds = %32
%40 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9248
%41 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %40, i32 0, i32 0, !dbg !9249
%42 = load i32, i32* %41, align 8, !dbg !9249
br label %46, !dbg !9247
43: ; preds = %32
%44 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9250
%45 = load i32, i32* %44, align 8, !dbg !9250
br label %46, !dbg !9247
46: ; preds = %43, %39
%47 = phi i32 [ %42, %39 ], [ %45, %43 ], !dbg !9247
store i32 %47, i32* %10, align 4, !dbg !9242
call void @llvm.dbg.declare(metadata i32* %11, metadata !9251, metadata !DIExpression()), !dbg !9252
call void @llvm.dbg.declare(metadata i32* %12, metadata !9253, metadata !DIExpression()), !dbg !9254
%48 = load i32, i32* %10, align 4, !dbg !9255
%49 = sub i32 %48, 1, !dbg !9257
store i32 %49, i32* %11, align 4, !dbg !9258
br label %50, !dbg !9259
50: ; preds = %107, %46
%51 = load i32, i32* %11, align 4, !dbg !9260
%52 = icmp sgt i32 %51, 0, !dbg !9262
br i1 %52, label %53, label %110, !dbg !9263
53: ; preds = %50
%54 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9264
%55 = load i32, i32* %54, align 4, !dbg !9264
%56 = sub i32 %55, 1, !dbg !9267
store i32 %56, i32* %12, align 4, !dbg !9268
br label %57, !dbg !9269
57: ; preds = %103, %53
%58 = load i32, i32* %12, align 4, !dbg !9270
%59 = icmp sge i32 %58, 0, !dbg !9272
br i1 %59, label %60, label %106, !dbg !9273
60: ; preds = %57
%61 = load i32, i32* %12, align 4, !dbg !9274
%62 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9277
%63 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %62, i32 0, i32 1, !dbg !9278
%64 = load i32, i32* %63, align 4, !dbg !9278
%65 = icmp sge i32 %61, %64, !dbg !9279
br i1 %65, label %66, label %78, !dbg !9280
66: ; preds = %60
%67 = load float, float* %8, align 4, !dbg !9281
%68 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9281
%69 = load float*, float** %68, align 8, !dbg !9281
%70 = load i32, i32* %11, align 4, !dbg !9281
%71 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9281
%72 = load i32, i32* %71, align 4, !dbg !9281
%73 = mul i32 %70, %72, !dbg !9281
%74 = load i32, i32* %12, align 4, !dbg !9281
%75 = add i32 %73, %74, !dbg !9281
%76 = zext i32 %75 to i64, !dbg !9281
%77 = getelementptr inbounds float, float* %69, i64 %76, !dbg !9281
store float %67, float* %77, align 4, !dbg !9281
br label %102, !dbg !9281
78: ; preds = %60
%79 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9282
%80 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %79, i32 0, i32 2, !dbg !9282
%81 = load float*, float** %80, align 8, !dbg !9282
%82 = load i32, i32* %11, align 4, !dbg !9282
%83 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9282
%84 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %83, i32 0, i32 1, !dbg !9282
%85 = load i32, i32* %84, align 4, !dbg !9282
%86 = mul i32 %82, %85, !dbg !9282
%87 = load i32, i32* %12, align 4, !dbg !9282
%88 = add i32 %86, %87, !dbg !9282
%89 = zext i32 %88 to i64, !dbg !9282
%90 = getelementptr inbounds float, float* %81, i64 %89, !dbg !9282
%91 = load float, float* %90, align 4, !dbg !9282
%92 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9282
%93 = load float*, float** %92, align 8, !dbg !9282
%94 = load i32, i32* %11, align 4, !dbg !9282
%95 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9282
%96 = load i32, i32* %95, align 4, !dbg !9282
%97 = mul i32 %94, %96, !dbg !9282
%98 = load i32, i32* %12, align 4, !dbg !9282
%99 = add i32 %97, %98, !dbg !9282
%100 = zext i32 %99 to i64, !dbg !9282
%101 = getelementptr inbounds float, float* %93, i64 %100, !dbg !9282
store float %91, float* %101, align 4, !dbg !9282
br label %102
102: ; preds = %78, %66
br label %103, !dbg !9283
103: ; preds = %102
%104 = load i32, i32* %12, align 4, !dbg !9284
%105 = add nsw i32 %104, -1, !dbg !9284
store i32 %105, i32* %12, align 4, !dbg !9284
br label %57, !dbg !9285, !llvm.loop !9286
106: ; preds = %57
br label %107, !dbg !9288
107: ; preds = %106
%108 = load i32, i32* %11, align 4, !dbg !9289
%109 = add nsw i32 %108, -1, !dbg !9289
store i32 %109, i32* %11, align 4, !dbg !9289
br label %50, !dbg !9290, !llvm.loop !9291
110: ; preds = %50
%111 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9293
%112 = load i32, i32* %111, align 4, !dbg !9293
%113 = sub i32 %112, 1, !dbg !9295
store i32 %113, i32* %12, align 4, !dbg !9296
br label %114, !dbg !9297
114: ; preds = %131, %110
%115 = load i32, i32* %12, align 4, !dbg !9298
%116 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9300
%117 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %116, i32 0, i32 1, !dbg !9301
%118 = load i32, i32* %117, align 4, !dbg !9301
%119 = icmp sge i32 %115, %118, !dbg !9302
br i1 %119, label %120, label %134, !dbg !9303
120: ; preds = %114
%121 = load float, float* %8, align 4, !dbg !9304
%122 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9304
%123 = load float*, float** %122, align 8, !dbg !9304
%124 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9304
%125 = load i32, i32* %124, align 4, !dbg !9304
%126 = mul i32 0, %125, !dbg !9304
%127 = load i32, i32* %12, align 4, !dbg !9304
%128 = add i32 %126, %127, !dbg !9304
%129 = zext i32 %128 to i64, !dbg !9304
%130 = getelementptr inbounds float, float* %123, i64 %129, !dbg !9304
store float %121, float* %130, align 4, !dbg !9304
br label %131, !dbg !9304
131: ; preds = %120
%132 = load i32, i32* %12, align 4, !dbg !9305
%133 = add nsw i32 %132, -1, !dbg !9305
store i32 %133, i32* %12, align 4, !dbg !9305
br label %114, !dbg !9306, !llvm.loop !9307
134: ; preds = %114
br label %201, !dbg !9309
135: ; preds = %4
%136 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9310
%137 = load i32, i32* %136, align 4, !dbg !9310
%138 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9312
%139 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %138, i32 0, i32 1, !dbg !9313
%140 = load i32, i32* %139, align 4, !dbg !9313
%141 = icmp ult i32 %137, %140, !dbg !9314
br i1 %141, label %142, label %200, !dbg !9315
142: ; preds = %135
call void @llvm.dbg.declare(metadata i32* %13, metadata !9316, metadata !DIExpression()), !dbg !9318
%143 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9319
%144 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %143, i32 0, i32 0, !dbg !9320
%145 = load i32, i32* %144, align 8, !dbg !9320
%146 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9321
%147 = load i32, i32* %146, align 8, !dbg !9321
%148 = icmp ult i32 %145, %147, !dbg !9322
br i1 %148, label %149, label %153, !dbg !9323
149: ; preds = %142
%150 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9324
%151 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %150, i32 0, i32 0, !dbg !9325
%152 = load i32, i32* %151, align 8, !dbg !9325
br label %156, !dbg !9323
153: ; preds = %142
%154 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9326
%155 = load i32, i32* %154, align 8, !dbg !9326
br label %156, !dbg !9323
156: ; preds = %153, %149
%157 = phi i32 [ %152, %149 ], [ %155, %153 ], !dbg !9323
store i32 %157, i32* %13, align 4, !dbg !9318
call void @llvm.dbg.declare(metadata i32* %14, metadata !9327, metadata !DIExpression()), !dbg !9328
call void @llvm.dbg.declare(metadata i32* %15, metadata !9329, metadata !DIExpression()), !dbg !9330
store i32 1, i32* %14, align 4, !dbg !9331
br label %158, !dbg !9333
158: ; preds = %196, %156
%159 = load i32, i32* %14, align 4, !dbg !9334
%160 = load i32, i32* %13, align 4, !dbg !9336
%161 = icmp ult i32 %159, %160, !dbg !9337
br i1 %161, label %162, label %199, !dbg !9338
162: ; preds = %158
store i32 0, i32* %15, align 4, !dbg !9339
br label %163, !dbg !9342
163: ; preds = %192, %162
%164 = load i32, i32* %15, align 4, !dbg !9343
%165 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9345
%166 = load i32, i32* %165, align 4, !dbg !9345
%167 = icmp ult i32 %164, %166, !dbg !9346
br i1 %167, label %168, label %195, !dbg !9347
168: ; preds = %163
%169 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9348
%170 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %169, i32 0, i32 2, !dbg !9348
%171 = load float*, float** %170, align 8, !dbg !9348
%172 = load i32, i32* %14, align 4, !dbg !9348
%173 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9348
%174 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %173, i32 0, i32 1, !dbg !9348
%175 = load i32, i32* %174, align 4, !dbg !9348
%176 = mul i32 %172, %175, !dbg !9348
%177 = load i32, i32* %15, align 4, !dbg !9348
%178 = add i32 %176, %177, !dbg !9348
%179 = zext i32 %178 to i64, !dbg !9348
%180 = getelementptr inbounds float, float* %171, i64 %179, !dbg !9348
%181 = load float, float* %180, align 4, !dbg !9348
%182 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9348
%183 = load float*, float** %182, align 8, !dbg !9348
%184 = load i32, i32* %14, align 4, !dbg !9348
%185 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9348
%186 = load i32, i32* %185, align 4, !dbg !9348
%187 = mul i32 %184, %186, !dbg !9348
%188 = load i32, i32* %15, align 4, !dbg !9348
%189 = add i32 %187, %188, !dbg !9348
%190 = zext i32 %189 to i64, !dbg !9348
%191 = getelementptr inbounds float, float* %183, i64 %190, !dbg !9348
store float %181, float* %191, align 4, !dbg !9348
br label %192, !dbg !9348
192: ; preds = %168
%193 = load i32, i32* %15, align 4, !dbg !9349
%194 = add i32 %193, 1, !dbg !9349
store i32 %194, i32* %15, align 4, !dbg !9349
br label %163, !dbg !9350, !llvm.loop !9351
195: ; preds = %163
br label %196, !dbg !9353
196: ; preds = %195
%197 = load i32, i32* %14, align 4, !dbg !9354
%198 = add i32 %197, 1, !dbg !9354
store i32 %198, i32* %14, align 4, !dbg !9354
br label %158, !dbg !9355, !llvm.loop !9356
199: ; preds = %158
br label %200, !dbg !9358
200: ; preds = %199, %135
br label %201
201: ; preds = %200, %134
call void @llvm.dbg.declare(metadata i32* %16, metadata !9359, metadata !DIExpression()), !dbg !9360
call void @llvm.dbg.declare(metadata i32* %17, metadata !9361, metadata !DIExpression()), !dbg !9362
call void @llvm.dbg.declare(metadata i32* %18, metadata !9363, metadata !DIExpression()), !dbg !9364
%202 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9365
%203 = load i32, i32* %202, align 8, !dbg !9365
%204 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9367
%205 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %204, i32 0, i32 0, !dbg !9368
%206 = load i32, i32* %205, align 8, !dbg !9368
%207 = icmp ugt i32 %203, %206, !dbg !9369
br i1 %207, label %208, label %243, !dbg !9370
208: ; preds = %201
%209 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9371
%210 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %209, i32 0, i32 0, !dbg !9374
%211 = load i32, i32* %210, align 8, !dbg !9374
store i32 %211, i32* %16, align 4, !dbg !9375
br label %212, !dbg !9376
212: ; preds = %239, %208
%213 = load i32, i32* %16, align 4, !dbg !9377
%214 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9379
%215 = load i32, i32* %214, align 8, !dbg !9379
%216 = icmp ult i32 %213, %215, !dbg !9380
br i1 %216, label %217, label %242, !dbg !9381
217: ; preds = %212
store i32 0, i32* %17, align 4, !dbg !9382
br label %218, !dbg !9384
218: ; preds = %235, %217
%219 = load i32, i32* %17, align 4, !dbg !9385
%220 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9387
%221 = load i32, i32* %220, align 4, !dbg !9387
%222 = icmp ult i32 %219, %221, !dbg !9388
br i1 %222, label %223, label %238, !dbg !9389
223: ; preds = %218
%224 = load float, float* %8, align 4, !dbg !9390
%225 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9390
%226 = load float*, float** %225, align 8, !dbg !9390
%227 = load i32, i32* %16, align 4, !dbg !9390
%228 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9390
%229 = load i32, i32* %228, align 4, !dbg !9390
%230 = mul i32 %227, %229, !dbg !9390
%231 = load i32, i32* %17, align 4, !dbg !9390
%232 = add i32 %230, %231, !dbg !9390
%233 = zext i32 %232 to i64, !dbg !9390
%234 = getelementptr inbounds float, float* %226, i64 %233, !dbg !9390
store float %224, float* %234, align 4, !dbg !9390
br label %235, !dbg !9390
235: ; preds = %223
%236 = load i32, i32* %17, align 4, !dbg !9391
%237 = add i32 %236, 1, !dbg !9391
store i32 %237, i32* %17, align 4, !dbg !9391
br label %218, !dbg !9392, !llvm.loop !9393
238: ; preds = %218
br label %239, !dbg !9394
239: ; preds = %238
%240 = load i32, i32* %16, align 4, !dbg !9395
%241 = add i32 %240, 1, !dbg !9395
store i32 %241, i32* %16, align 4, !dbg !9395
br label %212, !dbg !9396, !llvm.loop !9397
242: ; preds = %212
br label %243, !dbg !9399
243: ; preds = %242, %201
%244 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9400
%245 = load i32, i32* %244, align 8, !dbg !9400
%246 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9402
%247 = load i32, i32* %246, align 4, !dbg !9402
%248 = mul i32 %245, %247, !dbg !9403
%249 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9404
%250 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %249, i32 0, i32 0, !dbg !9405
%251 = load i32, i32* %250, align 8, !dbg !9405
%252 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9406
%253 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %252, i32 0, i32 1, !dbg !9407
%254 = load i32, i32* %253, align 4, !dbg !9407
%255 = mul i32 %251, %254, !dbg !9408
%256 = icmp ult i32 %248, %255, !dbg !9409
br i1 %256, label %257, label %284, !dbg !9410
257: ; preds = %243
%258 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9411
%259 = load i32, i32* %258, align 8, !dbg !9411
%260 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9414
%261 = load i32, i32* %260, align 4, !dbg !9414
%262 = mul i32 %259, %261, !dbg !9415
store i32 %262, i32* %18, align 4, !dbg !9416
br label %263, !dbg !9417
263: ; preds = %280, %257
%264 = load i32, i32* %18, align 4, !dbg !9418
%265 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9420
%266 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %265, i32 0, i32 0, !dbg !9421
%267 = load i32, i32* %266, align 8, !dbg !9421
%268 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9422
%269 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %268, i32 0, i32 1, !dbg !9423
%270 = load i32, i32* %269, align 4, !dbg !9423
%271 = mul i32 %267, %270, !dbg !9424
%272 = icmp ult i32 %264, %271, !dbg !9425
br i1 %272, label %273, label %283, !dbg !9426
273: ; preds = %263
%274 = load float, float* %8, align 4, !dbg !9427
%275 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !9428
%276 = load float*, float** %275, align 8, !dbg !9428
%277 = load i32, i32* %18, align 4, !dbg !9429
%278 = zext i32 %277 to i64, !dbg !9430
%279 = getelementptr inbounds float, float* %276, i64 %278, !dbg !9430
store float %274, float* %279, align 4, !dbg !9431
br label %280, !dbg !9430
280: ; preds = %273
%281 = load i32, i32* %18, align 4, !dbg !9432
%282 = add i32 %281, 1, !dbg !9432
store i32 %282, i32* %18, align 4, !dbg !9432
br label %263, !dbg !9433, !llvm.loop !9434
283: ; preds = %263
br label %284, !dbg !9436
284: ; preds = %283, %243
%285 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9437
%286 = bitcast %struct.Matrixf_t* %285 to i8*, !dbg !9438
%287 = bitcast %struct.Matrixf_t* %9 to i8*, !dbg !9438
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %286, i8* align 8 %287, i64 16, i1 false), !dbg !9438
ret void, !dbg !9439
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetIdentityf(%struct.Matrixf_t* %0) #0 !dbg !9440 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !9441, metadata !DIExpression()), !dbg !9442
call void @llvm.dbg.declare(metadata i32* %3, metadata !9443, metadata !DIExpression()), !dbg !9444
call void @llvm.dbg.declare(metadata i32* %4, metadata !9445, metadata !DIExpression()), !dbg !9446
store i32 0, i32* %3, align 4, !dbg !9447
br label %5, !dbg !9449
5: ; preds = %53, %1
%6 = load i32, i32* %3, align 4, !dbg !9450
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9452
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 0, !dbg !9453
%9 = load i32, i32* %8, align 8, !dbg !9453
%10 = icmp ult i32 %6, %9, !dbg !9454
br i1 %10, label %11, label %56, !dbg !9455
11: ; preds = %5
store i32 0, i32* %4, align 4, !dbg !9456
br label %12, !dbg !9459
12: ; preds = %49, %11
%13 = load i32, i32* %4, align 4, !dbg !9460
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9462
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !9463
%16 = load i32, i32* %15, align 4, !dbg !9463
%17 = icmp ult i32 %13, %16, !dbg !9464
br i1 %17, label %18, label %52, !dbg !9465
18: ; preds = %12
%19 = load i32, i32* %3, align 4, !dbg !9466
%20 = load i32, i32* %4, align 4, !dbg !9469
%21 = icmp eq i32 %19, %20, !dbg !9470
br i1 %21, label %22, label %35, !dbg !9471
22: ; preds = %18
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9472
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !9472
%25 = load float*, float** %24, align 8, !dbg !9472
%26 = load i32, i32* %3, align 4, !dbg !9472
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9472
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 1, !dbg !9472
%29 = load i32, i32* %28, align 4, !dbg !9472
%30 = mul i32 %26, %29, !dbg !9472
%31 = load i32, i32* %4, align 4, !dbg !9472
%32 = add i32 %30, %31, !dbg !9472
%33 = zext i32 %32 to i64, !dbg !9472
%34 = getelementptr inbounds float, float* %25, i64 %33, !dbg !9472
store float 1.000000e+00, float* %34, align 4, !dbg !9472
br label %48, !dbg !9472
35: ; preds = %18
%36 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9473
%37 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %36, i32 0, i32 2, !dbg !9473
%38 = load float*, float** %37, align 8, !dbg !9473
%39 = load i32, i32* %3, align 4, !dbg !9473
%40 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !9473
%41 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %40, i32 0, i32 1, !dbg !9473
%42 = load i32, i32* %41, align 4, !dbg !9473
%43 = mul i32 %39, %42, !dbg !9473
%44 = load i32, i32* %4, align 4, !dbg !9473
%45 = add i32 %43, %44, !dbg !9473
%46 = zext i32 %45 to i64, !dbg !9473
%47 = getelementptr inbounds float, float* %38, i64 %46, !dbg !9473
store float 0.000000e+00, float* %47, align 4, !dbg !9473
br label %48
48: ; preds = %35, %22
br label %49, !dbg !9474
49: ; preds = %48
%50 = load i32, i32* %4, align 4, !dbg !9475
%51 = add i32 %50, 1, !dbg !9475
store i32 %51, i32* %4, align 4, !dbg !9475
br label %12, !dbg !9476, !llvm.loop !9477
52: ; preds = %12
br label %53, !dbg !9479
53: ; preds = %52
%54 = load i32, i32* %3, align 4, !dbg !9480
%55 = add i32 %54, 1, !dbg !9480
store i32 %55, i32* %3, align 4, !dbg !9480
br label %5, !dbg !9481, !llvm.loop !9482
56: ; preds = %5
ret void, !dbg !9484
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixCopyf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !9485 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !9488, metadata !DIExpression()), !dbg !9489
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9490, metadata !DIExpression()), !dbg !9491
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9492
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 1, !dbg !9494
%9 = load i32, i32* %8, align 4, !dbg !9494
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9495
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 1, !dbg !9496
%12 = load i32, i32* %11, align 4, !dbg !9496
%13 = icmp eq i32 %9, %12, !dbg !9497
br i1 %13, label %14, label %51, !dbg !9498
14: ; preds = %2
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9499
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 0, !dbg !9500
%17 = load i32, i32* %16, align 8, !dbg !9500
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9501
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 0, !dbg !9502
%20 = load i32, i32* %19, align 8, !dbg !9502
%21 = icmp eq i32 %17, %20, !dbg !9503
br i1 %21, label %22, label %51, !dbg !9504
22: ; preds = %14
call void @llvm.dbg.declare(metadata i32* %6, metadata !9505, metadata !DIExpression()), !dbg !9507
store i32 0, i32* %6, align 4, !dbg !9508
br label %23, !dbg !9510
23: ; preds = %47, %22
%24 = load i32, i32* %6, align 4, !dbg !9511
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9513
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 1, !dbg !9514
%27 = load i32, i32* %26, align 4, !dbg !9514
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9515
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 0, !dbg !9516
%30 = load i32, i32* %29, align 8, !dbg !9516
%31 = mul i32 %27, %30, !dbg !9517
%32 = icmp ult i32 %24, %31, !dbg !9518
br i1 %32, label %33, label %50, !dbg !9519
33: ; preds = %23
%34 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9520
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %34, i32 0, i32 2, !dbg !9521
%36 = load float*, float** %35, align 8, !dbg !9521
%37 = load i32, i32* %6, align 4, !dbg !9522
%38 = zext i32 %37 to i64, !dbg !9520
%39 = getelementptr inbounds float, float* %36, i64 %38, !dbg !9520
%40 = load float, float* %39, align 4, !dbg !9520
%41 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9523
%42 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %41, i32 0, i32 2, !dbg !9524
%43 = load float*, float** %42, align 8, !dbg !9524
%44 = load i32, i32* %6, align 4, !dbg !9525
%45 = zext i32 %44 to i64, !dbg !9523
%46 = getelementptr inbounds float, float* %43, i64 %45, !dbg !9523
store float %40, float* %46, align 4, !dbg !9526
br label %47, !dbg !9523
47: ; preds = %33
%48 = load i32, i32* %6, align 4, !dbg !9527
%49 = add i32 %48, 1, !dbg !9527
store i32 %49, i32* %6, align 4, !dbg !9527
br label %23, !dbg !9528, !llvm.loop !9529
50: ; preds = %23
store i64 1, i64* %3, align 8, !dbg !9531
br label %52, !dbg !9531
51: ; preds = %14, %2
store i64 0, i64* %3, align 8, !dbg !9532
br label %52, !dbg !9532
52: ; preds = %51, %50
%53 = load i64, i64* %3, align 8, !dbg !9533
ret i64 %53, !dbg !9533
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetRowf(%struct.Matrixf_t* %0, i32 %1, float %2) #0 !dbg !9534 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
%7 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !9537, metadata !DIExpression()), !dbg !9538
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !9539, metadata !DIExpression()), !dbg !9540
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !9541, metadata !DIExpression()), !dbg !9542
%8 = load i32, i32* %5, align 4, !dbg !9543
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9545
%10 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 0, !dbg !9546
%11 = load i32, i32* %10, align 8, !dbg !9546
%12 = icmp ult i32 %8, %11, !dbg !9547
br i1 %12, label %13, label %38, !dbg !9548
13: ; preds = %3
call void @llvm.dbg.declare(metadata i32* %7, metadata !9549, metadata !DIExpression()), !dbg !9551
store i32 0, i32* %7, align 4, !dbg !9552
br label %14, !dbg !9554
14: ; preds = %34, %13
%15 = load i32, i32* %7, align 4, !dbg !9555
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9557
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 1, !dbg !9558
%18 = load i32, i32* %17, align 4, !dbg !9558
%19 = icmp ult i32 %15, %18, !dbg !9559
br i1 %19, label %20, label %37, !dbg !9560
20: ; preds = %14
%21 = load float, float* %6, align 4, !dbg !9561
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9561
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %22, i32 0, i32 2, !dbg !9561
%24 = load float*, float** %23, align 8, !dbg !9561
%25 = load i32, i32* %5, align 4, !dbg !9561
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9561
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 1, !dbg !9561
%28 = load i32, i32* %27, align 4, !dbg !9561
%29 = mul i32 %25, %28, !dbg !9561
%30 = load i32, i32* %7, align 4, !dbg !9561
%31 = add i32 %29, %30, !dbg !9561
%32 = zext i32 %31 to i64, !dbg !9561
%33 = getelementptr inbounds float, float* %24, i64 %32, !dbg !9561
store float %21, float* %33, align 4, !dbg !9561
br label %34, !dbg !9561
34: ; preds = %20
%35 = load i32, i32* %7, align 4, !dbg !9562
%36 = add i32 %35, 1, !dbg !9562
store i32 %36, i32* %7, align 4, !dbg !9562
br label %14, !dbg !9563, !llvm.loop !9564
37: ; preds = %14
br label %38, !dbg !9566
38: ; preds = %37, %3
ret void, !dbg !9567
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixSetColumnf(%struct.Matrixf_t* %0, i32 %1, float %2) #0 !dbg !9568 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca float, align 4
%7 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !9569, metadata !DIExpression()), !dbg !9570
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !9571, metadata !DIExpression()), !dbg !9572
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !9573, metadata !DIExpression()), !dbg !9574
%8 = load i32, i32* %5, align 4, !dbg !9575
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9577
%10 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !9578
%11 = load i32, i32* %10, align 4, !dbg !9578
%12 = icmp ult i32 %8, %11, !dbg !9579
br i1 %12, label %13, label %38, !dbg !9580
13: ; preds = %3
call void @llvm.dbg.declare(metadata i32* %7, metadata !9581, metadata !DIExpression()), !dbg !9583
store i32 0, i32* %7, align 4, !dbg !9584
br label %14, !dbg !9586
14: ; preds = %34, %13
%15 = load i32, i32* %7, align 4, !dbg !9587
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9589
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 0, !dbg !9590
%18 = load i32, i32* %17, align 8, !dbg !9590
%19 = icmp ult i32 %15, %18, !dbg !9591
br i1 %19, label %20, label %37, !dbg !9592
20: ; preds = %14
%21 = load float, float* %6, align 4, !dbg !9593
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9593
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %22, i32 0, i32 2, !dbg !9593
%24 = load float*, float** %23, align 8, !dbg !9593
%25 = load i32, i32* %7, align 4, !dbg !9593
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !9593
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 1, !dbg !9593
%28 = load i32, i32* %27, align 4, !dbg !9593
%29 = mul i32 %25, %28, !dbg !9593
%30 = load i32, i32* %5, align 4, !dbg !9593
%31 = add i32 %29, %30, !dbg !9593
%32 = zext i32 %31 to i64, !dbg !9593
%33 = getelementptr inbounds float, float* %24, i64 %32, !dbg !9593
store float %21, float* %33, align 4, !dbg !9593
br label %34, !dbg !9593
34: ; preds = %20
%35 = load i32, i32* %7, align 4, !dbg !9594
%36 = add i32 %35, 1, !dbg !9594
store i32 %36, i32* %7, align 4, !dbg !9594
br label %14, !dbg !9595, !llvm.loop !9596
37: ; preds = %14
br label %38, !dbg !9598
38: ; preds = %37, %3
ret void, !dbg !9599
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiplyf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1, %struct.Matrixf_t* %2) #0 !dbg !9600 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Matrixf_t*, align 8
%7 = alloca %struct.Matrixf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9603, metadata !DIExpression()), !dbg !9604
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %6, metadata !9605, metadata !DIExpression()), !dbg !9606
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %7, metadata !9607, metadata !DIExpression()), !dbg !9608
call void @llvm.dbg.declare(metadata i32* %8, metadata !9609, metadata !DIExpression()), !dbg !9610
call void @llvm.dbg.declare(metadata i32* %9, metadata !9611, metadata !DIExpression()), !dbg !9612
call void @llvm.dbg.declare(metadata i32* %10, metadata !9613, metadata !DIExpression()), !dbg !9614
%12 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9615
%13 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %12, i32 0, i32 1, !dbg !9617
%14 = load i32, i32* %13, align 4, !dbg !9617
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9618
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 0, !dbg !9619
%17 = load i32, i32* %16, align 8, !dbg !9619
%18 = icmp ne i32 %14, %17, !dbg !9620
br i1 %18, label %35, label %19, !dbg !9621
19: ; preds = %3
%20 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9622
%21 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %20, i32 0, i32 0, !dbg !9623
%22 = load i32, i32* %21, align 8, !dbg !9623
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9624
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 0, !dbg !9625
%25 = load i32, i32* %24, align 8, !dbg !9625
%26 = icmp ne i32 %22, %25, !dbg !9626
br i1 %26, label %35, label %27, !dbg !9627
27: ; preds = %19
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9628
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 1, !dbg !9629
%30 = load i32, i32* %29, align 4, !dbg !9629
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9630
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 1, !dbg !9631
%33 = load i32, i32* %32, align 4, !dbg !9631
%34 = icmp ne i32 %30, %33, !dbg !9632
br i1 %34, label %35, label %36, !dbg !9633
35: ; preds = %27, %19, %3
store i64 0, i64* %4, align 8, !dbg !9634
br label %112, !dbg !9634
36: ; preds = %27
store i32 0, i32* %8, align 4, !dbg !9635
br label %37, !dbg !9637
37: ; preds = %108, %36
%38 = load i32, i32* %8, align 4, !dbg !9638
%39 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9640
%40 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %39, i32 0, i32 0, !dbg !9641
%41 = load i32, i32* %40, align 8, !dbg !9641
%42 = icmp ult i32 %38, %41, !dbg !9642
br i1 %42, label %43, label %111, !dbg !9643
43: ; preds = %37
store i32 0, i32* %9, align 4, !dbg !9644
br label %44, !dbg !9647
44: ; preds = %104, %43
%45 = load i32, i32* %9, align 4, !dbg !9648
%46 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9650
%47 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %46, i32 0, i32 1, !dbg !9651
%48 = load i32, i32* %47, align 4, !dbg !9651
%49 = icmp ult i32 %45, %48, !dbg !9652
br i1 %49, label %50, label %107, !dbg !9653
50: ; preds = %44
call void @llvm.dbg.declare(metadata float* %11, metadata !9654, metadata !DIExpression()), !dbg !9656
store float 0.000000e+00, float* %11, align 4, !dbg !9656
store i32 0, i32* %10, align 4, !dbg !9657
br label %51, !dbg !9659
51: ; preds = %87, %50
%52 = load i32, i32* %10, align 4, !dbg !9660
%53 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9662
%54 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %53, i32 0, i32 1, !dbg !9663
%55 = load i32, i32* %54, align 4, !dbg !9663
%56 = icmp ult i32 %52, %55, !dbg !9664
br i1 %56, label %57, label %90, !dbg !9665
57: ; preds = %51
%58 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9666
%59 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %58, i32 0, i32 2, !dbg !9666
%60 = load float*, float** %59, align 8, !dbg !9666
%61 = load i32, i32* %8, align 4, !dbg !9666
%62 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9666
%63 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %62, i32 0, i32 1, !dbg !9666
%64 = load i32, i32* %63, align 4, !dbg !9666
%65 = mul i32 %61, %64, !dbg !9666
%66 = load i32, i32* %10, align 4, !dbg !9666
%67 = add i32 %65, %66, !dbg !9666
%68 = zext i32 %67 to i64, !dbg !9666
%69 = getelementptr inbounds float, float* %60, i64 %68, !dbg !9666
%70 = load float, float* %69, align 4, !dbg !9666
%71 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9668
%72 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %71, i32 0, i32 2, !dbg !9668
%73 = load float*, float** %72, align 8, !dbg !9668
%74 = load i32, i32* %10, align 4, !dbg !9668
%75 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9668
%76 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %75, i32 0, i32 1, !dbg !9668
%77 = load i32, i32* %76, align 4, !dbg !9668
%78 = mul i32 %74, %77, !dbg !9668
%79 = load i32, i32* %9, align 4, !dbg !9668
%80 = add i32 %78, %79, !dbg !9668
%81 = zext i32 %80 to i64, !dbg !9668
%82 = getelementptr inbounds float, float* %73, i64 %81, !dbg !9668
%83 = load float, float* %82, align 4, !dbg !9668
%84 = fmul float %70, %83, !dbg !9669
%85 = load float, float* %11, align 4, !dbg !9670
%86 = fadd float %85, %84, !dbg !9670
store float %86, float* %11, align 4, !dbg !9670
br label %87, !dbg !9671
87: ; preds = %57
%88 = load i32, i32* %10, align 4, !dbg !9672
%89 = add i32 %88, 1, !dbg !9672
store i32 %89, i32* %10, align 4, !dbg !9672
br label %51, !dbg !9673, !llvm.loop !9674
90: ; preds = %51
%91 = load float, float* %11, align 4, !dbg !9676
%92 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9676
%93 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %92, i32 0, i32 2, !dbg !9676
%94 = load float*, float** %93, align 8, !dbg !9676
%95 = load i32, i32* %8, align 4, !dbg !9676
%96 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9676
%97 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %96, i32 0, i32 1, !dbg !9676
%98 = load i32, i32* %97, align 4, !dbg !9676
%99 = mul i32 %95, %98, !dbg !9676
%100 = load i32, i32* %9, align 4, !dbg !9676
%101 = add i32 %99, %100, !dbg !9676
%102 = zext i32 %101 to i64, !dbg !9676
%103 = getelementptr inbounds float, float* %94, i64 %102, !dbg !9676
store float %91, float* %103, align 4, !dbg !9676
br label %104, !dbg !9677
104: ; preds = %90
%105 = load i32, i32* %9, align 4, !dbg !9678
%106 = add i32 %105, 1, !dbg !9678
store i32 %106, i32* %9, align 4, !dbg !9678
br label %44, !dbg !9679, !llvm.loop !9680
107: ; preds = %44
br label %108, !dbg !9682
108: ; preds = %107
%109 = load i32, i32* %8, align 4, !dbg !9683
%110 = add i32 %109, 1, !dbg !9683
store i32 %110, i32* %8, align 4, !dbg !9683
br label %37, !dbg !9684, !llvm.loop !9685
111: ; preds = %37
store i64 1, i64* %4, align 8, !dbg !9687
br label %112, !dbg !9687
112: ; preds = %111, %35
%113 = load i64, i64* %4, align 8, !dbg !9688
ret i64 %113, !dbg !9688
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiplyTransAf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1, %struct.Matrixf_t* %2) #0 !dbg !9689 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Matrixf_t*, align 8
%7 = alloca %struct.Matrixf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9690, metadata !DIExpression()), !dbg !9691
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %6, metadata !9692, metadata !DIExpression()), !dbg !9693
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %7, metadata !9694, metadata !DIExpression()), !dbg !9695
call void @llvm.dbg.declare(metadata i32* %8, metadata !9696, metadata !DIExpression()), !dbg !9697
call void @llvm.dbg.declare(metadata i32* %9, metadata !9698, metadata !DIExpression()), !dbg !9699
call void @llvm.dbg.declare(metadata i32* %10, metadata !9700, metadata !DIExpression()), !dbg !9701
call void @llvm.dbg.declare(metadata i32* %11, metadata !9702, metadata !DIExpression()), !dbg !9703
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9704
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !9705
%16 = load i32, i32* %15, align 4, !dbg !9705
store i32 %16, i32* %11, align 4, !dbg !9703
call void @llvm.dbg.declare(metadata i32* %12, metadata !9706, metadata !DIExpression()), !dbg !9707
%17 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9708
%18 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %17, i32 0, i32 0, !dbg !9709
%19 = load i32, i32* %18, align 8, !dbg !9709
store i32 %19, i32* %12, align 4, !dbg !9707
%20 = load i32, i32* %12, align 4, !dbg !9710
%21 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9712
%22 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 0, !dbg !9713
%23 = load i32, i32* %22, align 8, !dbg !9713
%24 = icmp ne i32 %20, %23, !dbg !9714
br i1 %24, label %39, label %25, !dbg !9715
25: ; preds = %3
%26 = load i32, i32* %11, align 4, !dbg !9716
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9717
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 0, !dbg !9718
%29 = load i32, i32* %28, align 8, !dbg !9718
%30 = icmp ne i32 %26, %29, !dbg !9719
br i1 %30, label %39, label %31, !dbg !9720
31: ; preds = %25
%32 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9721
%33 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %32, i32 0, i32 1, !dbg !9722
%34 = load i32, i32* %33, align 4, !dbg !9722
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9723
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %35, i32 0, i32 1, !dbg !9724
%37 = load i32, i32* %36, align 4, !dbg !9724
%38 = icmp ne i32 %34, %37, !dbg !9725
br i1 %38, label %39, label %40, !dbg !9726
39: ; preds = %31, %25, %3
store i64 0, i64* %4, align 8, !dbg !9727
br label %112, !dbg !9727
40: ; preds = %31
store i32 0, i32* %8, align 4, !dbg !9728
br label %41, !dbg !9730
41: ; preds = %108, %40
%42 = load i32, i32* %8, align 4, !dbg !9731
%43 = load i32, i32* %11, align 4, !dbg !9733
%44 = icmp ult i32 %42, %43, !dbg !9734
br i1 %44, label %45, label %111, !dbg !9735
45: ; preds = %41
store i32 0, i32* %9, align 4, !dbg !9736
br label %46, !dbg !9739
46: ; preds = %104, %45
%47 = load i32, i32* %9, align 4, !dbg !9740
%48 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9742
%49 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %48, i32 0, i32 1, !dbg !9743
%50 = load i32, i32* %49, align 4, !dbg !9743
%51 = icmp ult i32 %47, %50, !dbg !9744
br i1 %51, label %52, label %107, !dbg !9745
52: ; preds = %46
call void @llvm.dbg.declare(metadata float* %13, metadata !9746, metadata !DIExpression()), !dbg !9748
store float 0.000000e+00, float* %13, align 4, !dbg !9748
store i32 0, i32* %10, align 4, !dbg !9749
br label %53, !dbg !9751
53: ; preds = %87, %52
%54 = load i32, i32* %10, align 4, !dbg !9752
%55 = load i32, i32* %12, align 4, !dbg !9754
%56 = icmp ult i32 %54, %55, !dbg !9755
br i1 %56, label %57, label %90, !dbg !9756
57: ; preds = %53
%58 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9757
%59 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %58, i32 0, i32 2, !dbg !9757
%60 = load float*, float** %59, align 8, !dbg !9757
%61 = load i32, i32* %10, align 4, !dbg !9757
%62 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9757
%63 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %62, i32 0, i32 1, !dbg !9757
%64 = load i32, i32* %63, align 4, !dbg !9757
%65 = mul i32 %61, %64, !dbg !9757
%66 = load i32, i32* %8, align 4, !dbg !9757
%67 = add i32 %65, %66, !dbg !9757
%68 = zext i32 %67 to i64, !dbg !9757
%69 = getelementptr inbounds float, float* %60, i64 %68, !dbg !9757
%70 = load float, float* %69, align 4, !dbg !9757
%71 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9759
%72 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %71, i32 0, i32 2, !dbg !9759
%73 = load float*, float** %72, align 8, !dbg !9759
%74 = load i32, i32* %10, align 4, !dbg !9759
%75 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9759
%76 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %75, i32 0, i32 1, !dbg !9759
%77 = load i32, i32* %76, align 4, !dbg !9759
%78 = mul i32 %74, %77, !dbg !9759
%79 = load i32, i32* %9, align 4, !dbg !9759
%80 = add i32 %78, %79, !dbg !9759
%81 = zext i32 %80 to i64, !dbg !9759
%82 = getelementptr inbounds float, float* %73, i64 %81, !dbg !9759
%83 = load float, float* %82, align 4, !dbg !9759
%84 = fmul float %70, %83, !dbg !9760
%85 = load float, float* %13, align 4, !dbg !9761
%86 = fadd float %85, %84, !dbg !9761
store float %86, float* %13, align 4, !dbg !9761
br label %87, !dbg !9762
87: ; preds = %57
%88 = load i32, i32* %10, align 4, !dbg !9763
%89 = add i32 %88, 1, !dbg !9763
store i32 %89, i32* %10, align 4, !dbg !9763
br label %53, !dbg !9764, !llvm.loop !9765
90: ; preds = %53
%91 = load float, float* %13, align 4, !dbg !9767
%92 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9767
%93 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %92, i32 0, i32 2, !dbg !9767
%94 = load float*, float** %93, align 8, !dbg !9767
%95 = load i32, i32* %8, align 4, !dbg !9767
%96 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9767
%97 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %96, i32 0, i32 1, !dbg !9767
%98 = load i32, i32* %97, align 4, !dbg !9767
%99 = mul i32 %95, %98, !dbg !9767
%100 = load i32, i32* %9, align 4, !dbg !9767
%101 = add i32 %99, %100, !dbg !9767
%102 = zext i32 %101 to i64, !dbg !9767
%103 = getelementptr inbounds float, float* %94, i64 %102, !dbg !9767
store float %91, float* %103, align 4, !dbg !9767
br label %104, !dbg !9768
104: ; preds = %90
%105 = load i32, i32* %9, align 4, !dbg !9769
%106 = add i32 %105, 1, !dbg !9769
store i32 %106, i32* %9, align 4, !dbg !9769
br label %46, !dbg !9770, !llvm.loop !9771
107: ; preds = %46
br label %108, !dbg !9773
108: ; preds = %107
%109 = load i32, i32* %8, align 4, !dbg !9774
%110 = add i32 %109, 1, !dbg !9774
store i32 %110, i32* %8, align 4, !dbg !9774
br label %41, !dbg !9775, !llvm.loop !9776
111: ; preds = %41
store i64 1, i64* %4, align 8, !dbg !9778
br label %112, !dbg !9778
112: ; preds = %111, %39
%113 = load i64, i64* %4, align 8, !dbg !9779
ret i64 %113, !dbg !9779
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixMultiplyTransBf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1, %struct.Matrixf_t* %2) #0 !dbg !9780 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Matrixf_t*, align 8
%7 = alloca %struct.Matrixf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca i32, align 4
%13 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9781, metadata !DIExpression()), !dbg !9782
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %6, metadata !9783, metadata !DIExpression()), !dbg !9784
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %7, metadata !9785, metadata !DIExpression()), !dbg !9786
call void @llvm.dbg.declare(metadata i32* %8, metadata !9787, metadata !DIExpression()), !dbg !9788
call void @llvm.dbg.declare(metadata i32* %9, metadata !9789, metadata !DIExpression()), !dbg !9790
call void @llvm.dbg.declare(metadata i32* %10, metadata !9791, metadata !DIExpression()), !dbg !9792
call void @llvm.dbg.declare(metadata i32* %11, metadata !9793, metadata !DIExpression()), !dbg !9794
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9795
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !9796
%16 = load i32, i32* %15, align 4, !dbg !9796
store i32 %16, i32* %11, align 4, !dbg !9794
call void @llvm.dbg.declare(metadata i32* %12, metadata !9797, metadata !DIExpression()), !dbg !9798
%17 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9799
%18 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %17, i32 0, i32 0, !dbg !9800
%19 = load i32, i32* %18, align 8, !dbg !9800
store i32 %19, i32* %12, align 4, !dbg !9798
%20 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9801
%21 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %20, i32 0, i32 1, !dbg !9803
%22 = load i32, i32* %21, align 4, !dbg !9803
%23 = load i32, i32* %11, align 4, !dbg !9804
%24 = icmp ne i32 %22, %23, !dbg !9805
br i1 %24, label %39, label %25, !dbg !9806
25: ; preds = %3
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9807
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 0, !dbg !9808
%28 = load i32, i32* %27, align 8, !dbg !9808
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9809
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 0, !dbg !9810
%31 = load i32, i32* %30, align 8, !dbg !9810
%32 = icmp ne i32 %28, %31, !dbg !9811
br i1 %32, label %39, label %33, !dbg !9812
33: ; preds = %25
%34 = load i32, i32* %12, align 4, !dbg !9813
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9814
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %35, i32 0, i32 1, !dbg !9815
%37 = load i32, i32* %36, align 4, !dbg !9815
%38 = icmp ne i32 %34, %37, !dbg !9816
br i1 %38, label %39, label %40, !dbg !9817
39: ; preds = %33, %25, %3
store i64 0, i64* %4, align 8, !dbg !9818
br label %114, !dbg !9818
40: ; preds = %33
store i32 0, i32* %8, align 4, !dbg !9819
br label %41, !dbg !9821
41: ; preds = %110, %40
%42 = load i32, i32* %8, align 4, !dbg !9822
%43 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9824
%44 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %43, i32 0, i32 0, !dbg !9825
%45 = load i32, i32* %44, align 8, !dbg !9825
%46 = icmp ult i32 %42, %45, !dbg !9826
br i1 %46, label %47, label %113, !dbg !9827
47: ; preds = %41
store i32 0, i32* %9, align 4, !dbg !9828
br label %48, !dbg !9831
48: ; preds = %106, %47
%49 = load i32, i32* %9, align 4, !dbg !9832
%50 = load i32, i32* %12, align 4, !dbg !9834
%51 = icmp ult i32 %49, %50, !dbg !9835
br i1 %51, label %52, label %109, !dbg !9836
52: ; preds = %48
call void @llvm.dbg.declare(metadata float* %13, metadata !9837, metadata !DIExpression()), !dbg !9839
store float 0.000000e+00, float* %13, align 4, !dbg !9839
store i32 0, i32* %10, align 4, !dbg !9840
br label %53, !dbg !9842
53: ; preds = %89, %52
%54 = load i32, i32* %10, align 4, !dbg !9843
%55 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9845
%56 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %55, i32 0, i32 1, !dbg !9846
%57 = load i32, i32* %56, align 4, !dbg !9846
%58 = icmp ult i32 %54, %57, !dbg !9847
br i1 %58, label %59, label %92, !dbg !9848
59: ; preds = %53
%60 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9849
%61 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %60, i32 0, i32 2, !dbg !9849
%62 = load float*, float** %61, align 8, !dbg !9849
%63 = load i32, i32* %8, align 4, !dbg !9849
%64 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9849
%65 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %64, i32 0, i32 1, !dbg !9849
%66 = load i32, i32* %65, align 4, !dbg !9849
%67 = mul i32 %63, %66, !dbg !9849
%68 = load i32, i32* %10, align 4, !dbg !9849
%69 = add i32 %67, %68, !dbg !9849
%70 = zext i32 %69 to i64, !dbg !9849
%71 = getelementptr inbounds float, float* %62, i64 %70, !dbg !9849
%72 = load float, float* %71, align 4, !dbg !9849
%73 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9851
%74 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %73, i32 0, i32 2, !dbg !9851
%75 = load float*, float** %74, align 8, !dbg !9851
%76 = load i32, i32* %9, align 4, !dbg !9851
%77 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !9851
%78 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %77, i32 0, i32 1, !dbg !9851
%79 = load i32, i32* %78, align 4, !dbg !9851
%80 = mul i32 %76, %79, !dbg !9851
%81 = load i32, i32* %10, align 4, !dbg !9851
%82 = add i32 %80, %81, !dbg !9851
%83 = zext i32 %82 to i64, !dbg !9851
%84 = getelementptr inbounds float, float* %75, i64 %83, !dbg !9851
%85 = load float, float* %84, align 4, !dbg !9851
%86 = fmul float %72, %85, !dbg !9852
%87 = load float, float* %13, align 4, !dbg !9853
%88 = fadd float %87, %86, !dbg !9853
store float %88, float* %13, align 4, !dbg !9853
br label %89, !dbg !9854
89: ; preds = %59
%90 = load i32, i32* %10, align 4, !dbg !9855
%91 = add i32 %90, 1, !dbg !9855
store i32 %91, i32* %10, align 4, !dbg !9855
br label %53, !dbg !9856, !llvm.loop !9857
92: ; preds = %53
%93 = load float, float* %13, align 4, !dbg !9859
%94 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9859
%95 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %94, i32 0, i32 2, !dbg !9859
%96 = load float*, float** %95, align 8, !dbg !9859
%97 = load i32, i32* %8, align 4, !dbg !9859
%98 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !9859
%99 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %98, i32 0, i32 1, !dbg !9859
%100 = load i32, i32* %99, align 4, !dbg !9859
%101 = mul i32 %97, %100, !dbg !9859
%102 = load i32, i32* %9, align 4, !dbg !9859
%103 = add i32 %101, %102, !dbg !9859
%104 = zext i32 %103 to i64, !dbg !9859
%105 = getelementptr inbounds float, float* %96, i64 %104, !dbg !9859
store float %93, float* %105, align 4, !dbg !9859
br label %106, !dbg !9860
106: ; preds = %92
%107 = load i32, i32* %9, align 4, !dbg !9861
%108 = add i32 %107, 1, !dbg !9861
store i32 %108, i32* %9, align 4, !dbg !9861
br label %48, !dbg !9862, !llvm.loop !9863
109: ; preds = %48
br label %110, !dbg !9865
110: ; preds = %109
%111 = load i32, i32* %8, align 4, !dbg !9866
%112 = add i32 %111, 1, !dbg !9866
store i32 %112, i32* %8, align 4, !dbg !9866
br label %41, !dbg !9867, !llvm.loop !9868
113: ; preds = %41
store i64 1, i64* %4, align 8, !dbg !9870
br label %114, !dbg !9870
114: ; preds = %113, %39
%115 = load i64, i64* %4, align 8, !dbg !9871
ret i64 %115, !dbg !9871
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixVectorMultiplyf(%struct.Matrixf_t* %0, %struct.Vectorf_t* %1, %struct.Vectorf_t* %2) #0 !dbg !9872 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca %struct.Vectorf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9875, metadata !DIExpression()), !dbg !9876
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !9877, metadata !DIExpression()), !dbg !9878
store %struct.Vectorf_t* %2, %struct.Vectorf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %7, metadata !9879, metadata !DIExpression()), !dbg !9880
call void @llvm.dbg.declare(metadata i32* %8, metadata !9881, metadata !DIExpression()), !dbg !9882
call void @llvm.dbg.declare(metadata i32* %9, metadata !9883, metadata !DIExpression()), !dbg !9884
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9885
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 1, !dbg !9887
%13 = load i32, i32* %12, align 4, !dbg !9887
%14 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !9888
%15 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %14, i32 0, i32 0, !dbg !9889
%16 = load i32, i32* %15, align 8, !dbg !9889
%17 = icmp ugt i32 %13, %16, !dbg !9890
br i1 %17, label %26, label %18, !dbg !9891
18: ; preds = %3
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9892
%20 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 0, !dbg !9893
%21 = load i32, i32* %20, align 8, !dbg !9893
%22 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !9894
%23 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %22, i32 0, i32 0, !dbg !9895
%24 = load i32, i32* %23, align 8, !dbg !9895
%25 = icmp ugt i32 %21, %24, !dbg !9896
br i1 %25, label %26, label %27, !dbg !9897
26: ; preds = %18, %3
store i64 0, i64* %4, align 8, !dbg !9898
br label %80, !dbg !9898
27: ; preds = %18
store i32 0, i32* %8, align 4, !dbg !9899
br label %28, !dbg !9901
28: ; preds = %76, %27
%29 = load i32, i32* %8, align 4, !dbg !9902
%30 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9904
%31 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %30, i32 0, i32 0, !dbg !9905
%32 = load i32, i32* %31, align 8, !dbg !9905
%33 = icmp ult i32 %29, %32, !dbg !9906
br i1 %33, label %34, label %79, !dbg !9907
34: ; preds = %28
call void @llvm.dbg.declare(metadata float* %10, metadata !9908, metadata !DIExpression()), !dbg !9910
store float 0.000000e+00, float* %10, align 4, !dbg !9910
store i32 0, i32* %9, align 4, !dbg !9911
br label %35, !dbg !9913
35: ; preds = %65, %34
%36 = load i32, i32* %9, align 4, !dbg !9914
%37 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9916
%38 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %37, i32 0, i32 1, !dbg !9917
%39 = load i32, i32* %38, align 4, !dbg !9917
%40 = icmp ult i32 %36, %39, !dbg !9918
br i1 %40, label %41, label %68, !dbg !9919
41: ; preds = %35
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9920
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 2, !dbg !9920
%44 = load float*, float** %43, align 8, !dbg !9920
%45 = load i32, i32* %8, align 4, !dbg !9920
%46 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9920
%47 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %46, i32 0, i32 1, !dbg !9920
%48 = load i32, i32* %47, align 4, !dbg !9920
%49 = mul i32 %45, %48, !dbg !9920
%50 = load i32, i32* %9, align 4, !dbg !9920
%51 = add i32 %49, %50, !dbg !9920
%52 = zext i32 %51 to i64, !dbg !9920
%53 = getelementptr inbounds float, float* %44, i64 %52, !dbg !9920
%54 = load float, float* %53, align 4, !dbg !9920
%55 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !9922
%56 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %55, i32 0, i32 1, !dbg !9923
%57 = load float*, float** %56, align 8, !dbg !9923
%58 = load i32, i32* %9, align 4, !dbg !9924
%59 = zext i32 %58 to i64, !dbg !9922
%60 = getelementptr inbounds float, float* %57, i64 %59, !dbg !9922
%61 = load float, float* %60, align 4, !dbg !9922
%62 = fmul float %54, %61, !dbg !9925
%63 = load float, float* %10, align 4, !dbg !9926
%64 = fadd float %63, %62, !dbg !9926
store float %64, float* %10, align 4, !dbg !9926
br label %65, !dbg !9927
65: ; preds = %41
%66 = load i32, i32* %9, align 4, !dbg !9928
%67 = add i32 %66, 1, !dbg !9928
store i32 %67, i32* %9, align 4, !dbg !9928
br label %35, !dbg !9929, !llvm.loop !9930
68: ; preds = %35
%69 = load float, float* %10, align 4, !dbg !9932
%70 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !9933
%71 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %70, i32 0, i32 1, !dbg !9934
%72 = load float*, float** %71, align 8, !dbg !9934
%73 = load i32, i32* %8, align 4, !dbg !9935
%74 = zext i32 %73 to i64, !dbg !9933
%75 = getelementptr inbounds float, float* %72, i64 %74, !dbg !9933
store float %69, float* %75, align 4, !dbg !9936
br label %76, !dbg !9937
76: ; preds = %68
%77 = load i32, i32* %8, align 4, !dbg !9938
%78 = add i32 %77, 1, !dbg !9938
store i32 %78, i32* %8, align 4, !dbg !9938
br label %28, !dbg !9939, !llvm.loop !9940
79: ; preds = %28
store i64 1, i64* %4, align 8, !dbg !9942
br label %80, !dbg !9942
80: ; preds = %79, %26
%81 = load i64, i64* %4, align 8, !dbg !9943
ret i64 %81, !dbg !9943
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixVectorMultiplyTransAf(%struct.Matrixf_t* %0, %struct.Vectorf_t* %1, %struct.Vectorf_t* %2) #0 !dbg !9944 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Vectorf_t*, align 8
%7 = alloca %struct.Vectorf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
%10 = alloca i32, align 4
%11 = alloca i32, align 4
%12 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !9945, metadata !DIExpression()), !dbg !9946
store %struct.Vectorf_t* %1, %struct.Vectorf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %6, metadata !9947, metadata !DIExpression()), !dbg !9948
store %struct.Vectorf_t* %2, %struct.Vectorf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Vectorf_t** %7, metadata !9949, metadata !DIExpression()), !dbg !9950
call void @llvm.dbg.declare(metadata i32* %8, metadata !9951, metadata !DIExpression()), !dbg !9952
call void @llvm.dbg.declare(metadata i32* %9, metadata !9953, metadata !DIExpression()), !dbg !9954
call void @llvm.dbg.declare(metadata i32* %10, metadata !9955, metadata !DIExpression()), !dbg !9956
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9957
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 1, !dbg !9958
%15 = load i32, i32* %14, align 4, !dbg !9958
store i32 %15, i32* %10, align 4, !dbg !9956
call void @llvm.dbg.declare(metadata i32* %11, metadata !9959, metadata !DIExpression()), !dbg !9960
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9961
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 0, !dbg !9962
%18 = load i32, i32* %17, align 8, !dbg !9962
store i32 %18, i32* %11, align 4, !dbg !9960
%19 = load i32, i32* %11, align 4, !dbg !9963
%20 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !9965
%21 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %20, i32 0, i32 0, !dbg !9966
%22 = load i32, i32* %21, align 8, !dbg !9966
%23 = icmp ugt i32 %19, %22, !dbg !9967
br i1 %23, label %30, label %24, !dbg !9968
24: ; preds = %3
%25 = load i32, i32* %10, align 4, !dbg !9969
%26 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !9970
%27 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %26, i32 0, i32 0, !dbg !9971
%28 = load i32, i32* %27, align 8, !dbg !9971
%29 = icmp ugt i32 %25, %28, !dbg !9972
br i1 %29, label %30, label %31, !dbg !9973
30: ; preds = %24, %3
store i64 0, i64* %4, align 8, !dbg !9974
br label %80, !dbg !9974
31: ; preds = %24
store i32 0, i32* %8, align 4, !dbg !9975
br label %32, !dbg !9977
32: ; preds = %76, %31
%33 = load i32, i32* %8, align 4, !dbg !9978
%34 = load i32, i32* %10, align 4, !dbg !9980
%35 = icmp ult i32 %33, %34, !dbg !9981
br i1 %35, label %36, label %79, !dbg !9982
36: ; preds = %32
call void @llvm.dbg.declare(metadata float* %12, metadata !9983, metadata !DIExpression()), !dbg !9985
store float 0.000000e+00, float* %12, align 4, !dbg !9985
store i32 0, i32* %9, align 4, !dbg !9986
br label %37, !dbg !9988
37: ; preds = %65, %36
%38 = load i32, i32* %9, align 4, !dbg !9989
%39 = load i32, i32* %11, align 4, !dbg !9991
%40 = icmp ult i32 %38, %39, !dbg !9992
br i1 %40, label %41, label %68, !dbg !9993
41: ; preds = %37
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9994
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 2, !dbg !9994
%44 = load float*, float** %43, align 8, !dbg !9994
%45 = load i32, i32* %9, align 4, !dbg !9994
%46 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !9994
%47 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %46, i32 0, i32 1, !dbg !9994
%48 = load i32, i32* %47, align 4, !dbg !9994
%49 = mul i32 %45, %48, !dbg !9994
%50 = load i32, i32* %8, align 4, !dbg !9994
%51 = add i32 %49, %50, !dbg !9994
%52 = zext i32 %51 to i64, !dbg !9994
%53 = getelementptr inbounds float, float* %44, i64 %52, !dbg !9994
%54 = load float, float* %53, align 4, !dbg !9994
%55 = load %struct.Vectorf_t*, %struct.Vectorf_t** %6, align 8, !dbg !9996
%56 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %55, i32 0, i32 1, !dbg !9997
%57 = load float*, float** %56, align 8, !dbg !9997
%58 = load i32, i32* %9, align 4, !dbg !9998
%59 = zext i32 %58 to i64, !dbg !9996
%60 = getelementptr inbounds float, float* %57, i64 %59, !dbg !9996
%61 = load float, float* %60, align 4, !dbg !9996
%62 = fmul float %54, %61, !dbg !9999
%63 = load float, float* %12, align 4, !dbg !10000
%64 = fadd float %63, %62, !dbg !10000
store float %64, float* %12, align 4, !dbg !10000
br label %65, !dbg !10001
65: ; preds = %41
%66 = load i32, i32* %9, align 4, !dbg !10002
%67 = add i32 %66, 1, !dbg !10002
store i32 %67, i32* %9, align 4, !dbg !10002
br label %37, !dbg !10003, !llvm.loop !10004
68: ; preds = %37
%69 = load float, float* %12, align 4, !dbg !10006
%70 = load %struct.Vectorf_t*, %struct.Vectorf_t** %7, align 8, !dbg !10007
%71 = getelementptr inbounds %struct.Vectorf_t, %struct.Vectorf_t* %70, i32 0, i32 1, !dbg !10008
%72 = load float*, float** %71, align 8, !dbg !10008
%73 = load i32, i32* %8, align 4, !dbg !10009
%74 = zext i32 %73 to i64, !dbg !10007
%75 = getelementptr inbounds float, float* %72, i64 %74, !dbg !10007
store float %69, float* %75, align 4, !dbg !10010
br label %76, !dbg !10011
76: ; preds = %68
%77 = load i32, i32* %8, align 4, !dbg !10012
%78 = add i32 %77, 1, !dbg !10012
store i32 %78, i32* %8, align 4, !dbg !10012
br label %32, !dbg !10013, !llvm.loop !10014
79: ; preds = %32
store i64 1, i64* %4, align 8, !dbg !10016
br label %80, !dbg !10016
80: ; preds = %79, %30
%81 = load i64, i64* %4, align 8, !dbg !10017
ret i64 %81, !dbg !10017
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAddf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1, %struct.Matrixf_t* %2) #0 !dbg !10018 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Matrixf_t*, align 8
%7 = alloca %struct.Matrixf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10019, metadata !DIExpression()), !dbg !10020
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %6, metadata !10021, metadata !DIExpression()), !dbg !10022
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %7, metadata !10023, metadata !DIExpression()), !dbg !10024
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10025
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 0, !dbg !10027
%12 = load i32, i32* %11, align 8, !dbg !10027
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10028
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 0, !dbg !10029
%15 = load i32, i32* %14, align 8, !dbg !10029
%16 = icmp eq i32 %12, %15, !dbg !10030
br i1 %16, label %17, label %79, !dbg !10031
17: ; preds = %3
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10032
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 0, !dbg !10033
%20 = load i32, i32* %19, align 8, !dbg !10033
%21 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10034
%22 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 0, !dbg !10035
%23 = load i32, i32* %22, align 8, !dbg !10035
%24 = icmp eq i32 %20, %23, !dbg !10036
br i1 %24, label %25, label %79, !dbg !10037
25: ; preds = %17
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10038
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 1, !dbg !10039
%28 = load i32, i32* %27, align 4, !dbg !10039
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10040
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 1, !dbg !10041
%31 = load i32, i32* %30, align 4, !dbg !10041
%32 = icmp eq i32 %28, %31, !dbg !10042
br i1 %32, label %33, label %79, !dbg !10043
33: ; preds = %25
%34 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10044
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %34, i32 0, i32 1, !dbg !10045
%36 = load i32, i32* %35, align 4, !dbg !10045
%37 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10046
%38 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %37, i32 0, i32 1, !dbg !10047
%39 = load i32, i32* %38, align 4, !dbg !10047
%40 = icmp eq i32 %36, %39, !dbg !10048
br i1 %40, label %41, label %79, !dbg !10049
41: ; preds = %33
call void @llvm.dbg.declare(metadata i32* %8, metadata !10050, metadata !DIExpression()), !dbg !10052
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10053
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 0, !dbg !10054
%44 = load i32, i32* %43, align 8, !dbg !10054
%45 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10055
%46 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %45, i32 0, i32 1, !dbg !10056
%47 = load i32, i32* %46, align 4, !dbg !10056
%48 = mul i32 %44, %47, !dbg !10057
store i32 %48, i32* %8, align 4, !dbg !10052
call void @llvm.dbg.declare(metadata i32* %9, metadata !10058, metadata !DIExpression()), !dbg !10059
store i32 0, i32* %9, align 4, !dbg !10060
br label %49, !dbg !10062
49: ; preds = %75, %41
%50 = load i32, i32* %9, align 4, !dbg !10063
%51 = load i32, i32* %8, align 4, !dbg !10065
%52 = icmp ult i32 %50, %51, !dbg !10066
br i1 %52, label %53, label %78, !dbg !10067
53: ; preds = %49
%54 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10068
%55 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %54, i32 0, i32 2, !dbg !10069
%56 = load float*, float** %55, align 8, !dbg !10069
%57 = load i32, i32* %9, align 4, !dbg !10070
%58 = zext i32 %57 to i64, !dbg !10068
%59 = getelementptr inbounds float, float* %56, i64 %58, !dbg !10068
%60 = load float, float* %59, align 4, !dbg !10068
%61 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10071
%62 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %61, i32 0, i32 2, !dbg !10072
%63 = load float*, float** %62, align 8, !dbg !10072
%64 = load i32, i32* %9, align 4, !dbg !10073
%65 = zext i32 %64 to i64, !dbg !10071
%66 = getelementptr inbounds float, float* %63, i64 %65, !dbg !10071
%67 = load float, float* %66, align 4, !dbg !10071
%68 = fadd float %60, %67, !dbg !10074
%69 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10075
%70 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %69, i32 0, i32 2, !dbg !10076
%71 = load float*, float** %70, align 8, !dbg !10076
%72 = load i32, i32* %9, align 4, !dbg !10077
%73 = zext i32 %72 to i64, !dbg !10075
%74 = getelementptr inbounds float, float* %71, i64 %73, !dbg !10075
store float %68, float* %74, align 4, !dbg !10078
br label %75, !dbg !10075
75: ; preds = %53
%76 = load i32, i32* %9, align 4, !dbg !10079
%77 = add i32 %76, 1, !dbg !10079
store i32 %77, i32* %9, align 4, !dbg !10079
br label %49, !dbg !10080, !llvm.loop !10081
78: ; preds = %49
store i64 1, i64* %4, align 8, !dbg !10083
br label %80, !dbg !10083
79: ; preds = %33, %25, %17, %3
store i64 0, i64* %4, align 8, !dbg !10084
br label %80, !dbg !10084
80: ; preds = %79, %78
%81 = load i64, i64* %4, align 8, !dbg !10085
ret i64 %81, !dbg !10085
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAddEqualsf(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10086 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10089, metadata !DIExpression()), !dbg !10090
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10091, metadata !DIExpression()), !dbg !10092
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10093
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 0, !dbg !10095
%9 = load i32, i32* %8, align 8, !dbg !10095
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10096
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 0, !dbg !10097
%12 = load i32, i32* %11, align 8, !dbg !10097
%13 = icmp eq i32 %9, %12, !dbg !10098
br i1 %13, label %14, label %53, !dbg !10099
14: ; preds = %2
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10100
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 1, !dbg !10101
%17 = load i32, i32* %16, align 4, !dbg !10101
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10102
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 1, !dbg !10103
%20 = load i32, i32* %19, align 4, !dbg !10103
%21 = icmp eq i32 %17, %20, !dbg !10104
br i1 %21, label %22, label %53, !dbg !10105
22: ; preds = %14
call void @llvm.dbg.declare(metadata i32* %6, metadata !10106, metadata !DIExpression()), !dbg !10108
store i32 0, i32* %6, align 4, !dbg !10109
br label %23, !dbg !10111
23: ; preds = %49, %22
%24 = load i32, i32* %6, align 4, !dbg !10112
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10114
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 0, !dbg !10115
%27 = load i32, i32* %26, align 8, !dbg !10115
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10116
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 1, !dbg !10117
%30 = load i32, i32* %29, align 4, !dbg !10117
%31 = mul i32 %27, %30, !dbg !10118
%32 = icmp ult i32 %24, %31, !dbg !10119
br i1 %32, label %33, label %52, !dbg !10120
33: ; preds = %23
%34 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10121
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %34, i32 0, i32 2, !dbg !10122
%36 = load float*, float** %35, align 8, !dbg !10122
%37 = load i32, i32* %6, align 4, !dbg !10123
%38 = zext i32 %37 to i64, !dbg !10121
%39 = getelementptr inbounds float, float* %36, i64 %38, !dbg !10121
%40 = load float, float* %39, align 4, !dbg !10121
%41 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10124
%42 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %41, i32 0, i32 2, !dbg !10125
%43 = load float*, float** %42, align 8, !dbg !10125
%44 = load i32, i32* %6, align 4, !dbg !10126
%45 = zext i32 %44 to i64, !dbg !10124
%46 = getelementptr inbounds float, float* %43, i64 %45, !dbg !10124
%47 = load float, float* %46, align 4, !dbg !10127
%48 = fadd float %47, %40, !dbg !10127
store float %48, float* %46, align 4, !dbg !10127
br label %49, !dbg !10124
49: ; preds = %33
%50 = load i32, i32* %6, align 4, !dbg !10128
%51 = add i32 %50, 1, !dbg !10128
store i32 %51, i32* %6, align 4, !dbg !10128
br label %23, !dbg !10129, !llvm.loop !10130
52: ; preds = %23
store i64 1, i64* %3, align 8, !dbg !10132
br label %54, !dbg !10132
53: ; preds = %14, %2
store i64 0, i64* %3, align 8, !dbg !10133
br label %54, !dbg !10133
54: ; preds = %53, %52
%55 = load i64, i64* %3, align 8, !dbg !10134
ret i64 %55, !dbg !10134
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixScalef(%struct.Matrixf_t* %0, float %1) #0 !dbg !10135 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca float, align 4
%5 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !10138, metadata !DIExpression()), !dbg !10139
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !10140, metadata !DIExpression()), !dbg !10141
call void @llvm.dbg.declare(metadata i32* %5, metadata !10142, metadata !DIExpression()), !dbg !10143
store i32 0, i32* %5, align 4, !dbg !10144
br label %6, !dbg !10146
6: ; preds = %26, %2
%7 = load i32, i32* %5, align 4, !dbg !10147
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !10149
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10150
%10 = load i32, i32* %9, align 8, !dbg !10150
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !10151
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 1, !dbg !10152
%13 = load i32, i32* %12, align 4, !dbg !10152
%14 = mul i32 %10, %13, !dbg !10153
%15 = icmp ult i32 %7, %14, !dbg !10154
br i1 %15, label %16, label %29, !dbg !10155
16: ; preds = %6
%17 = load float, float* %4, align 4, !dbg !10156
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !10157
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 2, !dbg !10158
%20 = load float*, float** %19, align 8, !dbg !10158
%21 = load i32, i32* %5, align 4, !dbg !10159
%22 = zext i32 %21 to i64, !dbg !10157
%23 = getelementptr inbounds float, float* %20, i64 %22, !dbg !10157
%24 = load float, float* %23, align 4, !dbg !10160
%25 = fmul float %24, %17, !dbg !10160
store float %25, float* %23, align 4, !dbg !10160
br label %26, !dbg !10157
26: ; preds = %16
%27 = load i32, i32* %5, align 4, !dbg !10161
%28 = add i32 %27, 1, !dbg !10161
store i32 %28, i32* %5, align 4, !dbg !10161
br label %6, !dbg !10162, !llvm.loop !10163
29: ; preds = %6
ret void, !dbg !10165
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixAveragef(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1, %struct.Matrixf_t* %2) #0 !dbg !10166 {
%4 = alloca i64, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca %struct.Matrixf_t*, align 8
%7 = alloca %struct.Matrixf_t*, align 8
%8 = alloca i32, align 4
%9 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10167, metadata !DIExpression()), !dbg !10168
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %6, metadata !10169, metadata !DIExpression()), !dbg !10170
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %7, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %7, metadata !10171, metadata !DIExpression()), !dbg !10172
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10173
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 0, !dbg !10175
%12 = load i32, i32* %11, align 8, !dbg !10175
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10176
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 0, !dbg !10177
%15 = load i32, i32* %14, align 8, !dbg !10177
%16 = icmp eq i32 %12, %15, !dbg !10178
br i1 %16, label %17, label %80, !dbg !10179
17: ; preds = %3
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10180
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 0, !dbg !10181
%20 = load i32, i32* %19, align 8, !dbg !10181
%21 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10182
%22 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 0, !dbg !10183
%23 = load i32, i32* %22, align 8, !dbg !10183
%24 = icmp eq i32 %20, %23, !dbg !10184
br i1 %24, label %25, label %80, !dbg !10185
25: ; preds = %17
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10186
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 1, !dbg !10187
%28 = load i32, i32* %27, align 4, !dbg !10187
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10188
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 1, !dbg !10189
%31 = load i32, i32* %30, align 4, !dbg !10189
%32 = icmp eq i32 %28, %31, !dbg !10190
br i1 %32, label %33, label %80, !dbg !10191
33: ; preds = %25
%34 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10192
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %34, i32 0, i32 1, !dbg !10193
%36 = load i32, i32* %35, align 4, !dbg !10193
%37 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10194
%38 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %37, i32 0, i32 1, !dbg !10195
%39 = load i32, i32* %38, align 4, !dbg !10195
%40 = icmp eq i32 %36, %39, !dbg !10196
br i1 %40, label %41, label %80, !dbg !10197
41: ; preds = %33
call void @llvm.dbg.declare(metadata i32* %8, metadata !10198, metadata !DIExpression()), !dbg !10200
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10201
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 0, !dbg !10202
%44 = load i32, i32* %43, align 8, !dbg !10202
%45 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10203
%46 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %45, i32 0, i32 1, !dbg !10204
%47 = load i32, i32* %46, align 4, !dbg !10204
%48 = mul i32 %44, %47, !dbg !10205
store i32 %48, i32* %8, align 4, !dbg !10200
call void @llvm.dbg.declare(metadata i32* %9, metadata !10206, metadata !DIExpression()), !dbg !10207
store i32 0, i32* %9, align 4, !dbg !10208
br label %49, !dbg !10210
49: ; preds = %76, %41
%50 = load i32, i32* %9, align 4, !dbg !10211
%51 = load i32, i32* %8, align 4, !dbg !10213
%52 = icmp ult i32 %50, %51, !dbg !10214
br i1 %52, label %53, label %79, !dbg !10215
53: ; preds = %49
%54 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10216
%55 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %54, i32 0, i32 2, !dbg !10217
%56 = load float*, float** %55, align 8, !dbg !10217
%57 = load i32, i32* %9, align 4, !dbg !10218
%58 = zext i32 %57 to i64, !dbg !10216
%59 = getelementptr inbounds float, float* %56, i64 %58, !dbg !10216
%60 = load float, float* %59, align 4, !dbg !10216
%61 = load %struct.Matrixf_t*, %struct.Matrixf_t** %6, align 8, !dbg !10219
%62 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %61, i32 0, i32 2, !dbg !10220
%63 = load float*, float** %62, align 8, !dbg !10220
%64 = load i32, i32* %9, align 4, !dbg !10221
%65 = zext i32 %64 to i64, !dbg !10219
%66 = getelementptr inbounds float, float* %63, i64 %65, !dbg !10219
%67 = load float, float* %66, align 4, !dbg !10219
%68 = fadd float %60, %67, !dbg !10222
%69 = fmul float %68, 5.000000e-01, !dbg !10223
%70 = load %struct.Matrixf_t*, %struct.Matrixf_t** %7, align 8, !dbg !10224
%71 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %70, i32 0, i32 2, !dbg !10225
%72 = load float*, float** %71, align 8, !dbg !10225
%73 = load i32, i32* %9, align 4, !dbg !10226
%74 = zext i32 %73 to i64, !dbg !10224
%75 = getelementptr inbounds float, float* %72, i64 %74, !dbg !10224
store float %69, float* %75, align 4, !dbg !10227
br label %76, !dbg !10224
76: ; preds = %53
%77 = load i32, i32* %9, align 4, !dbg !10228
%78 = add i32 %77, 1, !dbg !10228
store i32 %78, i32* %9, align 4, !dbg !10228
br label %49, !dbg !10229, !llvm.loop !10230
79: ; preds = %49
store i64 1, i64* %4, align 8, !dbg !10232
br label %81, !dbg !10232
80: ; preds = %33, %25, %17, %3
store i64 0, i64* %4, align 8, !dbg !10233
br label %81, !dbg !10233
81: ; preds = %80, %79
%82 = load i64, i64* %4, align 8, !dbg !10234
ret i64 %82, !dbg !10234
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixAddIdentityf(%struct.Matrixf_t* %0) #0 !dbg !10235 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !10236, metadata !DIExpression()), !dbg !10237
call void @llvm.dbg.declare(metadata i32* %3, metadata !10238, metadata !DIExpression()), !dbg !10239
%5 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10240
%6 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %5, i32 0, i32 0, !dbg !10241
%7 = load i32, i32* %6, align 8, !dbg !10241
store i32 %7, i32* %3, align 4, !dbg !10239
call void @llvm.dbg.declare(metadata i32* %4, metadata !10242, metadata !DIExpression()), !dbg !10243
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10244
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 1, !dbg !10246
%10 = load i32, i32* %9, align 4, !dbg !10246
%11 = load i32, i32* %3, align 4, !dbg !10247
%12 = icmp ult i32 %10, %11, !dbg !10248
br i1 %12, label %13, label %17, !dbg !10249
13: ; preds = %1
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10250
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !10251
%16 = load i32, i32* %15, align 4, !dbg !10251
store i32 %16, i32* %3, align 4, !dbg !10252
br label %17, !dbg !10253
17: ; preds = %13, %1
store i32 0, i32* %4, align 4, !dbg !10254
br label %18, !dbg !10256
18: ; preds = %37, %17
%19 = load i32, i32* %4, align 4, !dbg !10257
%20 = load i32, i32* %3, align 4, !dbg !10259
%21 = icmp ult i32 %19, %20, !dbg !10260
br i1 %21, label %22, label %40, !dbg !10261
22: ; preds = %18
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10262
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !10262
%25 = load float*, float** %24, align 8, !dbg !10262
%26 = load i32, i32* %4, align 4, !dbg !10262
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10262
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 1, !dbg !10262
%29 = load i32, i32* %28, align 4, !dbg !10262
%30 = mul i32 %26, %29, !dbg !10262
%31 = load i32, i32* %4, align 4, !dbg !10262
%32 = add i32 %30, %31, !dbg !10262
%33 = zext i32 %32 to i64, !dbg !10262
%34 = getelementptr inbounds float, float* %25, i64 %33, !dbg !10262
%35 = load float, float* %34, align 4, !dbg !10263
%36 = fadd float %35, 1.000000e+00, !dbg !10263
store float %36, float* %34, align 4, !dbg !10263
br label %37, !dbg !10262
37: ; preds = %22
%38 = load i32, i32* %4, align 4, !dbg !10264
%39 = add i32 %38, 1, !dbg !10264
store i32 %39, i32* %4, align 4, !dbg !10264
br label %18, !dbg !10265, !llvm.loop !10266
40: ; preds = %18
ret void, !dbg !10268
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixMinusIdentityf(%struct.Matrixf_t* %0) #0 !dbg !10269 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !10270, metadata !DIExpression()), !dbg !10271
call void @llvm.dbg.declare(metadata i32* %3, metadata !10272, metadata !DIExpression()), !dbg !10273
%5 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10274
%6 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %5, i32 0, i32 0, !dbg !10275
%7 = load i32, i32* %6, align 8, !dbg !10275
store i32 %7, i32* %3, align 4, !dbg !10273
call void @llvm.dbg.declare(metadata i32* %4, metadata !10276, metadata !DIExpression()), !dbg !10277
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10278
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 1, !dbg !10280
%10 = load i32, i32* %9, align 4, !dbg !10280
%11 = load i32, i32* %3, align 4, !dbg !10281
%12 = icmp ult i32 %10, %11, !dbg !10282
br i1 %12, label %13, label %17, !dbg !10283
13: ; preds = %1
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10284
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !10285
%16 = load i32, i32* %15, align 4, !dbg !10285
store i32 %16, i32* %3, align 4, !dbg !10286
br label %17, !dbg !10287
17: ; preds = %13, %1
store i32 0, i32* %4, align 4, !dbg !10288
br label %18, !dbg !10290
18: ; preds = %37, %17
%19 = load i32, i32* %4, align 4, !dbg !10291
%20 = load i32, i32* %3, align 4, !dbg !10293
%21 = icmp ult i32 %19, %20, !dbg !10294
br i1 %21, label %22, label %40, !dbg !10295
22: ; preds = %18
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10296
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !10296
%25 = load float*, float** %24, align 8, !dbg !10296
%26 = load i32, i32* %4, align 4, !dbg !10296
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10296
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 1, !dbg !10296
%29 = load i32, i32* %28, align 4, !dbg !10296
%30 = mul i32 %26, %29, !dbg !10296
%31 = load i32, i32* %4, align 4, !dbg !10296
%32 = add i32 %30, %31, !dbg !10296
%33 = zext i32 %32 to i64, !dbg !10296
%34 = getelementptr inbounds float, float* %25, i64 %33, !dbg !10296
%35 = load float, float* %34, align 4, !dbg !10297
%36 = fsub float %35, 1.000000e+00, !dbg !10297
store float %36, float* %34, align 4, !dbg !10297
br label %37, !dbg !10296
37: ; preds = %22
%38 = load i32, i32* %4, align 4, !dbg !10298
%39 = add i32 %38, 1, !dbg !10298
store i32 %39, i32* %4, align 4, !dbg !10298
br label %18, !dbg !10299, !llvm.loop !10300
40: ; preds = %18
ret void, !dbg !10302
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @matrixIdentityMinusf(%struct.Matrixf_t* %0) #0 !dbg !10303 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !10304, metadata !DIExpression()), !dbg !10305
call void @llvm.dbg.declare(metadata i32* %3, metadata !10306, metadata !DIExpression()), !dbg !10307
call void @llvm.dbg.declare(metadata i32* %4, metadata !10308, metadata !DIExpression()), !dbg !10309
store i32 0, i32* %3, align 4, !dbg !10310
br label %6, !dbg !10312
6: ; preds = %56, %1
%7 = load i32, i32* %3, align 4, !dbg !10313
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10315
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10316
%10 = load i32, i32* %9, align 8, !dbg !10316
%11 = icmp ult i32 %7, %10, !dbg !10317
br i1 %11, label %12, label %59, !dbg !10318
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !10319
br label %13, !dbg !10322
13: ; preds = %52, %12
%14 = load i32, i32* %4, align 4, !dbg !10323
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10325
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 1, !dbg !10326
%17 = load i32, i32* %16, align 4, !dbg !10326
%18 = icmp ult i32 %14, %17, !dbg !10327
br i1 %18, label %19, label %55, !dbg !10328
19: ; preds = %13
call void @llvm.dbg.declare(metadata float* %5, metadata !10329, metadata !DIExpression()), !dbg !10331
store float 0.000000e+00, float* %5, align 4, !dbg !10331
%20 = load i32, i32* %4, align 4, !dbg !10332
%21 = load i32, i32* %3, align 4, !dbg !10334
%22 = icmp eq i32 %20, %21, !dbg !10335
br i1 %22, label %23, label %24, !dbg !10336
23: ; preds = %19
store float 1.000000e+00, float* %5, align 4, !dbg !10337
br label %24, !dbg !10338
24: ; preds = %23, %19
%25 = load float, float* %5, align 4, !dbg !10339
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10339
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 2, !dbg !10339
%28 = load float*, float** %27, align 8, !dbg !10339
%29 = load i32, i32* %3, align 4, !dbg !10339
%30 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10339
%31 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %30, i32 0, i32 1, !dbg !10339
%32 = load i32, i32* %31, align 4, !dbg !10339
%33 = mul i32 %29, %32, !dbg !10339
%34 = load i32, i32* %4, align 4, !dbg !10339
%35 = add i32 %33, %34, !dbg !10339
%36 = zext i32 %35 to i64, !dbg !10339
%37 = getelementptr inbounds float, float* %28, i64 %36, !dbg !10339
%38 = load float, float* %37, align 4, !dbg !10339
%39 = fsub float %25, %38, !dbg !10339
%40 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10339
%41 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %40, i32 0, i32 2, !dbg !10339
%42 = load float*, float** %41, align 8, !dbg !10339
%43 = load i32, i32* %3, align 4, !dbg !10339
%44 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10339
%45 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %44, i32 0, i32 1, !dbg !10339
%46 = load i32, i32* %45, align 4, !dbg !10339
%47 = mul i32 %43, %46, !dbg !10339
%48 = load i32, i32* %4, align 4, !dbg !10339
%49 = add i32 %47, %48, !dbg !10339
%50 = zext i32 %49 to i64, !dbg !10339
%51 = getelementptr inbounds float, float* %42, i64 %50, !dbg !10339
store float %39, float* %51, align 4, !dbg !10339
br label %52, !dbg !10340
52: ; preds = %24
%53 = load i32, i32* %4, align 4, !dbg !10341
%54 = add i32 %53, 1, !dbg !10341
store i32 %54, i32* %4, align 4, !dbg !10341
br label %13, !dbg !10342, !llvm.loop !10343
55: ; preds = %13
br label %56, !dbg !10345
56: ; preds = %55
%57 = load i32, i32* %3, align 4, !dbg !10346
%58 = add i32 %57, 1, !dbg !10346
store i32 %58, i32* %3, align 4, !dbg !10346
br label %6, !dbg !10347, !llvm.loop !10348
59: ; preds = %6
ret void, !dbg !10350
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @matrixDotRowsf(%struct.Matrixf_t* %0, i32 %1, i32 %2) #0 !dbg !10351 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10352, metadata !DIExpression()), !dbg !10353
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !10354, metadata !DIExpression()), !dbg !10355
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !10356, metadata !DIExpression()), !dbg !10357
call void @llvm.dbg.declare(metadata i32* %7, metadata !10358, metadata !DIExpression()), !dbg !10359
call void @llvm.dbg.declare(metadata float* %8, metadata !10360, metadata !DIExpression()), !dbg !10361
store float 0.000000e+00, float* %8, align 4, !dbg !10361
store i32 0, i32* %7, align 4, !dbg !10362
br label %9, !dbg !10364
9: ; preds = %45, %3
%10 = load i32, i32* %7, align 4, !dbg !10365
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10367
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 1, !dbg !10368
%13 = load i32, i32* %12, align 4, !dbg !10368
%14 = icmp ult i32 %10, %13, !dbg !10369
br i1 %14, label %15, label %48, !dbg !10370
15: ; preds = %9
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10371
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 2, !dbg !10371
%18 = load float*, float** %17, align 8, !dbg !10371
%19 = load i32, i32* %5, align 4, !dbg !10371
%20 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10371
%21 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %20, i32 0, i32 1, !dbg !10371
%22 = load i32, i32* %21, align 4, !dbg !10371
%23 = mul i32 %19, %22, !dbg !10371
%24 = load i32, i32* %7, align 4, !dbg !10371
%25 = add i32 %23, %24, !dbg !10371
%26 = zext i32 %25 to i64, !dbg !10371
%27 = getelementptr inbounds float, float* %18, i64 %26, !dbg !10371
%28 = load float, float* %27, align 4, !dbg !10371
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10373
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 2, !dbg !10373
%31 = load float*, float** %30, align 8, !dbg !10373
%32 = load i32, i32* %6, align 4, !dbg !10373
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10373
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 1, !dbg !10373
%35 = load i32, i32* %34, align 4, !dbg !10373
%36 = mul i32 %32, %35, !dbg !10373
%37 = load i32, i32* %7, align 4, !dbg !10373
%38 = add i32 %36, %37, !dbg !10373
%39 = zext i32 %38 to i64, !dbg !10373
%40 = getelementptr inbounds float, float* %31, i64 %39, !dbg !10373
%41 = load float, float* %40, align 4, !dbg !10373
%42 = fmul float %28, %41, !dbg !10374
%43 = load float, float* %8, align 4, !dbg !10375
%44 = fadd float %43, %42, !dbg !10375
store float %44, float* %8, align 4, !dbg !10375
br label %45, !dbg !10376
45: ; preds = %15
%46 = load i32, i32* %7, align 4, !dbg !10377
%47 = add i32 %46, 1, !dbg !10377
store i32 %47, i32* %7, align 4, !dbg !10377
br label %9, !dbg !10378, !llvm.loop !10379
48: ; preds = %9
%49 = load float, float* %8, align 4, !dbg !10381
ret float %49, !dbg !10382
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixTransposef(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10383 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10384, metadata !DIExpression()), !dbg !10385
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10386, metadata !DIExpression()), !dbg !10387
call void @llvm.dbg.declare(metadata i32* %6, metadata !10388, metadata !DIExpression()), !dbg !10389
call void @llvm.dbg.declare(metadata i32* %7, metadata !10390, metadata !DIExpression()), !dbg !10391
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10392
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10394
%11 = icmp eq %struct.Matrixf_t* %9, %10, !dbg !10395
br i1 %11, label %12, label %102, !dbg !10396
12: ; preds = %2
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10397
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 0, !dbg !10398
%15 = load i32, i32* %14, align 8, !dbg !10398
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10399
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 1, !dbg !10400
%18 = load i32, i32* %17, align 4, !dbg !10400
%19 = icmp eq i32 %15, %18, !dbg !10401
br i1 %19, label %20, label %102, !dbg !10402
20: ; preds = %12
call void @llvm.dbg.declare(metadata float* %8, metadata !10403, metadata !DIExpression()), !dbg !10405
store i32 0, i32* %6, align 4, !dbg !10406
br label %21, !dbg !10408
21: ; preds = %98, %20
%22 = load i32, i32* %6, align 4, !dbg !10409
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10411
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 0, !dbg !10412
%25 = load i32, i32* %24, align 8, !dbg !10412
%26 = sub i32 %25, 1, !dbg !10413
%27 = icmp ult i32 %22, %26, !dbg !10414
br i1 %27, label %28, label %101, !dbg !10415
28: ; preds = %21
%29 = load i32, i32* %6, align 4, !dbg !10416
%30 = add i32 %29, 1, !dbg !10419
store i32 %30, i32* %7, align 4, !dbg !10420
br label %31, !dbg !10421
31: ; preds = %94, %28
%32 = load i32, i32* %7, align 4, !dbg !10422
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10424
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 1, !dbg !10425
%35 = load i32, i32* %34, align 4, !dbg !10425
%36 = icmp ult i32 %32, %35, !dbg !10426
br i1 %36, label %37, label %97, !dbg !10427
37: ; preds = %31
%38 = load i32, i32* %6, align 4, !dbg !10428
%39 = load i32, i32* %7, align 4, !dbg !10431
%40 = icmp ne i32 %38, %39, !dbg !10432
br i1 %40, label %41, label %93, !dbg !10433
41: ; preds = %37
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10434
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 2, !dbg !10434
%44 = load float*, float** %43, align 8, !dbg !10434
%45 = load i32, i32* %6, align 4, !dbg !10434
%46 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10434
%47 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %46, i32 0, i32 1, !dbg !10434
%48 = load i32, i32* %47, align 4, !dbg !10434
%49 = mul i32 %45, %48, !dbg !10434
%50 = load i32, i32* %7, align 4, !dbg !10434
%51 = add i32 %49, %50, !dbg !10434
%52 = zext i32 %51 to i64, !dbg !10434
%53 = getelementptr inbounds float, float* %44, i64 %52, !dbg !10434
%54 = load float, float* %53, align 4, !dbg !10434
store float %54, float* %8, align 4, !dbg !10436
%55 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10437
%56 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %55, i32 0, i32 2, !dbg !10437
%57 = load float*, float** %56, align 8, !dbg !10437
%58 = load i32, i32* %7, align 4, !dbg !10437
%59 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10437
%60 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %59, i32 0, i32 1, !dbg !10437
%61 = load i32, i32* %60, align 4, !dbg !10437
%62 = mul i32 %58, %61, !dbg !10437
%63 = load i32, i32* %6, align 4, !dbg !10437
%64 = add i32 %62, %63, !dbg !10437
%65 = zext i32 %64 to i64, !dbg !10437
%66 = getelementptr inbounds float, float* %57, i64 %65, !dbg !10437
%67 = load float, float* %66, align 4, !dbg !10437
%68 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10437
%69 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %68, i32 0, i32 2, !dbg !10437
%70 = load float*, float** %69, align 8, !dbg !10437
%71 = load i32, i32* %6, align 4, !dbg !10437
%72 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10437
%73 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %72, i32 0, i32 1, !dbg !10437
%74 = load i32, i32* %73, align 4, !dbg !10437
%75 = mul i32 %71, %74, !dbg !10437
%76 = load i32, i32* %7, align 4, !dbg !10437
%77 = add i32 %75, %76, !dbg !10437
%78 = zext i32 %77 to i64, !dbg !10437
%79 = getelementptr inbounds float, float* %70, i64 %78, !dbg !10437
store float %67, float* %79, align 4, !dbg !10437
%80 = load float, float* %8, align 4, !dbg !10438
%81 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10438
%82 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %81, i32 0, i32 2, !dbg !10438
%83 = load float*, float** %82, align 8, !dbg !10438
%84 = load i32, i32* %7, align 4, !dbg !10438
%85 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10438
%86 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %85, i32 0, i32 1, !dbg !10438
%87 = load i32, i32* %86, align 4, !dbg !10438
%88 = mul i32 %84, %87, !dbg !10438
%89 = load i32, i32* %6, align 4, !dbg !10438
%90 = add i32 %88, %89, !dbg !10438
%91 = zext i32 %90 to i64, !dbg !10438
%92 = getelementptr inbounds float, float* %83, i64 %91, !dbg !10438
store float %80, float* %92, align 4, !dbg !10438
br label %93, !dbg !10439
93: ; preds = %41, %37
br label %94, !dbg !10440
94: ; preds = %93
%95 = load i32, i32* %7, align 4, !dbg !10441
%96 = add i32 %95, 1, !dbg !10441
store i32 %96, i32* %7, align 4, !dbg !10441
br label %31, !dbg !10442, !llvm.loop !10443
97: ; preds = %31
br label %98, !dbg !10445
98: ; preds = %97
%99 = load i32, i32* %6, align 4, !dbg !10446
%100 = add i32 %99, 1, !dbg !10446
store i32 %100, i32* %6, align 4, !dbg !10446
br label %21, !dbg !10447, !llvm.loop !10448
101: ; preds = %21
store i64 1, i64* %3, align 8, !dbg !10450
br label %167, !dbg !10450
102: ; preds = %12, %2
%103 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10451
%104 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %103, i32 0, i32 0, !dbg !10453
%105 = load i32, i32* %104, align 8, !dbg !10453
%106 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10454
%107 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %106, i32 0, i32 1, !dbg !10455
%108 = load i32, i32* %107, align 4, !dbg !10455
%109 = icmp eq i32 %105, %108, !dbg !10456
br i1 %109, label %110, label %166, !dbg !10457
110: ; preds = %102
%111 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10458
%112 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %111, i32 0, i32 1, !dbg !10459
%113 = load i32, i32* %112, align 4, !dbg !10459
%114 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10460
%115 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %114, i32 0, i32 0, !dbg !10461
%116 = load i32, i32* %115, align 8, !dbg !10461
%117 = icmp eq i32 %113, %116, !dbg !10462
br i1 %117, label %118, label %166, !dbg !10463
118: ; preds = %110
store i32 0, i32* %6, align 4, !dbg !10464
br label %119, !dbg !10467
119: ; preds = %162, %118
%120 = load i32, i32* %6, align 4, !dbg !10468
%121 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10470
%122 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %121, i32 0, i32 0, !dbg !10471
%123 = load i32, i32* %122, align 8, !dbg !10471
%124 = icmp ult i32 %120, %123, !dbg !10472
br i1 %124, label %125, label %165, !dbg !10473
125: ; preds = %119
store i32 0, i32* %7, align 4, !dbg !10474
br label %126, !dbg !10477
126: ; preds = %158, %125
%127 = load i32, i32* %7, align 4, !dbg !10478
%128 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10480
%129 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %128, i32 0, i32 1, !dbg !10481
%130 = load i32, i32* %129, align 4, !dbg !10481
%131 = icmp ult i32 %127, %130, !dbg !10482
br i1 %131, label %132, label %161, !dbg !10483
132: ; preds = %126
%133 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10484
%134 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %133, i32 0, i32 2, !dbg !10484
%135 = load float*, float** %134, align 8, !dbg !10484
%136 = load i32, i32* %6, align 4, !dbg !10484
%137 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10484
%138 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %137, i32 0, i32 1, !dbg !10484
%139 = load i32, i32* %138, align 4, !dbg !10484
%140 = mul i32 %136, %139, !dbg !10484
%141 = load i32, i32* %7, align 4, !dbg !10484
%142 = add i32 %140, %141, !dbg !10484
%143 = zext i32 %142 to i64, !dbg !10484
%144 = getelementptr inbounds float, float* %135, i64 %143, !dbg !10484
%145 = load float, float* %144, align 4, !dbg !10484
%146 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10484
%147 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %146, i32 0, i32 2, !dbg !10484
%148 = load float*, float** %147, align 8, !dbg !10484
%149 = load i32, i32* %7, align 4, !dbg !10484
%150 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10484
%151 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %150, i32 0, i32 1, !dbg !10484
%152 = load i32, i32* %151, align 4, !dbg !10484
%153 = mul i32 %149, %152, !dbg !10484
%154 = load i32, i32* %6, align 4, !dbg !10484
%155 = add i32 %153, %154, !dbg !10484
%156 = zext i32 %155 to i64, !dbg !10484
%157 = getelementptr inbounds float, float* %148, i64 %156, !dbg !10484
store float %145, float* %157, align 4, !dbg !10484
br label %158, !dbg !10486
158: ; preds = %132
%159 = load i32, i32* %7, align 4, !dbg !10487
%160 = add i32 %159, 1, !dbg !10487
store i32 %160, i32* %7, align 4, !dbg !10487
br label %126, !dbg !10488, !llvm.loop !10489
161: ; preds = %126
br label %162, !dbg !10491
162: ; preds = %161
%163 = load i32, i32* %6, align 4, !dbg !10492
%164 = add i32 %163, 1, !dbg !10492
store i32 %164, i32* %6, align 4, !dbg !10492
br label %119, !dbg !10493, !llvm.loop !10494
165: ; preds = %119
store i64 1, i64* %3, align 8, !dbg !10496
br label %167, !dbg !10496
166: ; preds = %110, %102
store i64 0, i64* %3, align 8, !dbg !10497
br label %167, !dbg !10497
167: ; preds = %166, %165, %101
%168 = load i64, i64* %3, align 8, !dbg !10498
ret i64 %168, !dbg !10498
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixInversef(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10499 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10500, metadata !DIExpression()), !dbg !10501
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10502, metadata !DIExpression()), !dbg !10503
%6 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10504
%7 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %6, i32 0, i32 0, !dbg !10506
%8 = load i32, i32* %7, align 8, !dbg !10506
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10507
%10 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 1, !dbg !10508
%11 = load i32, i32* %10, align 4, !dbg !10508
%12 = icmp ne i32 %8, %11, !dbg !10509
br i1 %12, label %29, label %13, !dbg !10510
13: ; preds = %2
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10511
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 0, !dbg !10512
%16 = load i32, i32* %15, align 8, !dbg !10512
%17 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10513
%18 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %17, i32 0, i32 1, !dbg !10514
%19 = load i32, i32* %18, align 4, !dbg !10514
%20 = icmp ne i32 %16, %19, !dbg !10515
br i1 %20, label %29, label %21, !dbg !10516
21: ; preds = %13
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10517
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %22, i32 0, i32 0, !dbg !10518
%24 = load i32, i32* %23, align 8, !dbg !10518
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10519
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 0, !dbg !10520
%27 = load i32, i32* %26, align 8, !dbg !10520
%28 = icmp ne i32 %24, %27, !dbg !10521
br i1 %28, label %29, label %30, !dbg !10522
29: ; preds = %21, %13, %2
store i64 0, i64* %3, align 8, !dbg !10523
br label %62, !dbg !10523
30: ; preds = %21
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10524
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 0, !dbg !10525
%33 = load i32, i32* %32, align 8, !dbg !10525
switch i32 %33, label %61 [
i32 1, label %34
i32 2, label %53
i32 3, label %57
], !dbg !10526
34: ; preds = %30
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10527
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %35, i32 0, i32 2, !dbg !10530
%37 = load float*, float** %36, align 8, !dbg !10530
%38 = getelementptr inbounds float, float* %37, i64 0, !dbg !10527
%39 = load float, float* %38, align 4, !dbg !10527
%40 = fcmp une float %39, 0.000000e+00, !dbg !10531
br i1 %40, label %41, label %52, !dbg !10532
41: ; preds = %34
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10533
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 2, !dbg !10535
%44 = load float*, float** %43, align 8, !dbg !10535
%45 = getelementptr inbounds float, float* %44, i64 0, !dbg !10533
%46 = load float, float* %45, align 4, !dbg !10533
%47 = fdiv float 1.000000e+00, %46, !dbg !10536
%48 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10537
%49 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %48, i32 0, i32 2, !dbg !10538
%50 = load float*, float** %49, align 8, !dbg !10538
%51 = getelementptr inbounds float, float* %50, i64 0, !dbg !10537
store float %47, float* %51, align 4, !dbg !10539
store i64 1, i64* %3, align 8, !dbg !10540
br label %62, !dbg !10540
52: ; preds = %34
store i64 0, i64* %3, align 8, !dbg !10541
br label %62, !dbg !10541
53: ; preds = %30
%54 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10542
%55 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10543
%56 = call i64 @matrixInverse2x2f(%struct.Matrixf_t* %54, %struct.Matrixf_t* %55), !dbg !10544
store i64 %56, i64* %3, align 8, !dbg !10545
br label %62, !dbg !10545
57: ; preds = %30
%58 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10546
%59 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10547
%60 = call i64 @matrixInverse3x3f(%struct.Matrixf_t* %58, %struct.Matrixf_t* %59), !dbg !10548
store i64 %60, i64* %3, align 8, !dbg !10549
br label %62, !dbg !10549
61: ; preds = %30
store i64 0, i64* %3, align 8, !dbg !10550
br label %62, !dbg !10550
62: ; preds = %61, %57, %53, %52, %41, %29
%63 = load i64, i64* %3, align 8, !dbg !10551
ret i64 %63, !dbg !10551
}
; Function Attrs: noinline nounwind optnone uwtable
define internal i64 @matrixInverse2x2f(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10552 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
%10 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10553, metadata !DIExpression()), !dbg !10554
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10555, metadata !DIExpression()), !dbg !10556
call void @llvm.dbg.declare(metadata float* %6, metadata !10557, metadata !DIExpression()), !dbg !10558
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10559
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 2, !dbg !10559
%13 = load float*, float** %12, align 8, !dbg !10559
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10559
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 1, !dbg !10559
%16 = load i32, i32* %15, align 4, !dbg !10559
%17 = mul i32 0, %16, !dbg !10559
%18 = add i32 %17, 0, !dbg !10559
%19 = zext i32 %18 to i64, !dbg !10559
%20 = getelementptr inbounds float, float* %13, i64 %19, !dbg !10559
%21 = load float, float* %20, align 4, !dbg !10559
store float %21, float* %6, align 4, !dbg !10558
call void @llvm.dbg.declare(metadata float* %7, metadata !10560, metadata !DIExpression()), !dbg !10561
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10562
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %22, i32 0, i32 2, !dbg !10562
%24 = load float*, float** %23, align 8, !dbg !10562
%25 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10562
%26 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 1, !dbg !10562
%27 = load i32, i32* %26, align 4, !dbg !10562
%28 = mul i32 0, %27, !dbg !10562
%29 = add i32 %28, 1, !dbg !10562
%30 = zext i32 %29 to i64, !dbg !10562
%31 = getelementptr inbounds float, float* %24, i64 %30, !dbg !10562
%32 = load float, float* %31, align 4, !dbg !10562
store float %32, float* %7, align 4, !dbg !10561
call void @llvm.dbg.declare(metadata float* %8, metadata !10563, metadata !DIExpression()), !dbg !10564
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10565
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 2, !dbg !10565
%35 = load float*, float** %34, align 8, !dbg !10565
%36 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10565
%37 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %36, i32 0, i32 1, !dbg !10565
%38 = load i32, i32* %37, align 4, !dbg !10565
%39 = mul i32 1, %38, !dbg !10565
%40 = add i32 %39, 0, !dbg !10565
%41 = zext i32 %40 to i64, !dbg !10565
%42 = getelementptr inbounds float, float* %35, i64 %41, !dbg !10565
%43 = load float, float* %42, align 4, !dbg !10565
store float %43, float* %8, align 4, !dbg !10564
call void @llvm.dbg.declare(metadata float* %9, metadata !10566, metadata !DIExpression()), !dbg !10567
%44 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10568
%45 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %44, i32 0, i32 2, !dbg !10568
%46 = load float*, float** %45, align 8, !dbg !10568
%47 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10568
%48 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %47, i32 0, i32 1, !dbg !10568
%49 = load i32, i32* %48, align 4, !dbg !10568
%50 = mul i32 1, %49, !dbg !10568
%51 = add i32 %50, 1, !dbg !10568
%52 = zext i32 %51 to i64, !dbg !10568
%53 = getelementptr inbounds float, float* %46, i64 %52, !dbg !10568
%54 = load float, float* %53, align 4, !dbg !10568
store float %54, float* %9, align 4, !dbg !10567
call void @llvm.dbg.declare(metadata float* %10, metadata !10569, metadata !DIExpression()), !dbg !10570
%55 = load float, float* %6, align 4, !dbg !10571
%56 = load float, float* %9, align 4, !dbg !10572
%57 = fmul float %55, %56, !dbg !10573
%58 = load float, float* %7, align 4, !dbg !10574
%59 = load float, float* %8, align 4, !dbg !10575
%60 = fmul float %58, %59, !dbg !10576
%61 = fsub float %57, %60, !dbg !10577
store float %61, float* %10, align 4, !dbg !10570
%62 = load float, float* %10, align 4, !dbg !10578
%63 = fcmp une float %62, 0.000000e+00, !dbg !10580
br i1 %63, label %64, label %121, !dbg !10581
64: ; preds = %2
%65 = load float, float* %10, align 4, !dbg !10582
%66 = fdiv float 1.000000e+00, %65, !dbg !10584
store float %66, float* %10, align 4, !dbg !10585
%67 = load float, float* %10, align 4, !dbg !10586
%68 = load float, float* %9, align 4, !dbg !10586
%69 = fmul float %67, %68, !dbg !10586
%70 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10586
%71 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %70, i32 0, i32 2, !dbg !10586
%72 = load float*, float** %71, align 8, !dbg !10586
%73 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10586
%74 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %73, i32 0, i32 1, !dbg !10586
%75 = load i32, i32* %74, align 4, !dbg !10586
%76 = mul i32 0, %75, !dbg !10586
%77 = add i32 %76, 0, !dbg !10586
%78 = zext i32 %77 to i64, !dbg !10586
%79 = getelementptr inbounds float, float* %72, i64 %78, !dbg !10586
store float %69, float* %79, align 4, !dbg !10586
%80 = load float, float* %10, align 4, !dbg !10587
%81 = fneg float %80, !dbg !10587
%82 = load float, float* %7, align 4, !dbg !10587
%83 = fmul float %81, %82, !dbg !10587
%84 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10587
%85 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %84, i32 0, i32 2, !dbg !10587
%86 = load float*, float** %85, align 8, !dbg !10587
%87 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10587
%88 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %87, i32 0, i32 1, !dbg !10587
%89 = load i32, i32* %88, align 4, !dbg !10587
%90 = mul i32 0, %89, !dbg !10587
%91 = add i32 %90, 1, !dbg !10587
%92 = zext i32 %91 to i64, !dbg !10587
%93 = getelementptr inbounds float, float* %86, i64 %92, !dbg !10587
store float %83, float* %93, align 4, !dbg !10587
%94 = load float, float* %10, align 4, !dbg !10588
%95 = fneg float %94, !dbg !10588
%96 = load float, float* %8, align 4, !dbg !10588
%97 = fmul float %95, %96, !dbg !10588
%98 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10588
%99 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %98, i32 0, i32 2, !dbg !10588
%100 = load float*, float** %99, align 8, !dbg !10588
%101 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10588
%102 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %101, i32 0, i32 1, !dbg !10588
%103 = load i32, i32* %102, align 4, !dbg !10588
%104 = mul i32 1, %103, !dbg !10588
%105 = add i32 %104, 0, !dbg !10588
%106 = zext i32 %105 to i64, !dbg !10588
%107 = getelementptr inbounds float, float* %100, i64 %106, !dbg !10588
store float %97, float* %107, align 4, !dbg !10588
%108 = load float, float* %10, align 4, !dbg !10589
%109 = load float, float* %6, align 4, !dbg !10589
%110 = fmul float %108, %109, !dbg !10589
%111 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10589
%112 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %111, i32 0, i32 2, !dbg !10589
%113 = load float*, float** %112, align 8, !dbg !10589
%114 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10589
%115 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %114, i32 0, i32 1, !dbg !10589
%116 = load i32, i32* %115, align 4, !dbg !10589
%117 = mul i32 1, %116, !dbg !10589
%118 = add i32 %117, 1, !dbg !10589
%119 = zext i32 %118 to i64, !dbg !10589
%120 = getelementptr inbounds float, float* %113, i64 %119, !dbg !10589
store float %110, float* %120, align 4, !dbg !10589
store i64 1, i64* %3, align 8, !dbg !10590
br label %122, !dbg !10590
121: ; preds = %2
store i64 0, i64* %3, align 8, !dbg !10591
br label %122, !dbg !10591
122: ; preds = %121, %64
%123 = load i64, i64* %3, align 8, !dbg !10592
ret i64 %123, !dbg !10592
}
; Function Attrs: noinline nounwind optnone uwtable
define internal i64 @matrixInverse3x3f(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10593 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
%10 = alloca float, align 4
%11 = alloca float, align 4
%12 = alloca float, align 4
%13 = alloca float, align 4
%14 = alloca float, align 4
%15 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10594, metadata !DIExpression()), !dbg !10595
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10596, metadata !DIExpression()), !dbg !10597
call void @llvm.dbg.declare(metadata float* %6, metadata !10598, metadata !DIExpression()), !dbg !10599
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10600
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 2, !dbg !10600
%18 = load float*, float** %17, align 8, !dbg !10600
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10600
%20 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 1, !dbg !10600
%21 = load i32, i32* %20, align 4, !dbg !10600
%22 = mul i32 0, %21, !dbg !10600
%23 = add i32 %22, 0, !dbg !10600
%24 = zext i32 %23 to i64, !dbg !10600
%25 = getelementptr inbounds float, float* %18, i64 %24, !dbg !10600
%26 = load float, float* %25, align 4, !dbg !10600
store float %26, float* %6, align 4, !dbg !10599
call void @llvm.dbg.declare(metadata float* %7, metadata !10601, metadata !DIExpression()), !dbg !10602
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10603
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 2, !dbg !10603
%29 = load float*, float** %28, align 8, !dbg !10603
%30 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10603
%31 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %30, i32 0, i32 1, !dbg !10603
%32 = load i32, i32* %31, align 4, !dbg !10603
%33 = mul i32 0, %32, !dbg !10603
%34 = add i32 %33, 1, !dbg !10603
%35 = zext i32 %34 to i64, !dbg !10603
%36 = getelementptr inbounds float, float* %29, i64 %35, !dbg !10603
%37 = load float, float* %36, align 4, !dbg !10603
store float %37, float* %7, align 4, !dbg !10602
call void @llvm.dbg.declare(metadata float* %8, metadata !10604, metadata !DIExpression()), !dbg !10605
%38 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10606
%39 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %38, i32 0, i32 2, !dbg !10606
%40 = load float*, float** %39, align 8, !dbg !10606
%41 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10606
%42 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %41, i32 0, i32 1, !dbg !10606
%43 = load i32, i32* %42, align 4, !dbg !10606
%44 = mul i32 0, %43, !dbg !10606
%45 = add i32 %44, 2, !dbg !10606
%46 = zext i32 %45 to i64, !dbg !10606
%47 = getelementptr inbounds float, float* %40, i64 %46, !dbg !10606
%48 = load float, float* %47, align 4, !dbg !10606
store float %48, float* %8, align 4, !dbg !10605
call void @llvm.dbg.declare(metadata float* %9, metadata !10607, metadata !DIExpression()), !dbg !10608
%49 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10609
%50 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %49, i32 0, i32 2, !dbg !10609
%51 = load float*, float** %50, align 8, !dbg !10609
%52 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10609
%53 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %52, i32 0, i32 1, !dbg !10609
%54 = load i32, i32* %53, align 4, !dbg !10609
%55 = mul i32 1, %54, !dbg !10609
%56 = add i32 %55, 0, !dbg !10609
%57 = zext i32 %56 to i64, !dbg !10609
%58 = getelementptr inbounds float, float* %51, i64 %57, !dbg !10609
%59 = load float, float* %58, align 4, !dbg !10609
store float %59, float* %9, align 4, !dbg !10608
call void @llvm.dbg.declare(metadata float* %10, metadata !10610, metadata !DIExpression()), !dbg !10611
%60 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10612
%61 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %60, i32 0, i32 2, !dbg !10612
%62 = load float*, float** %61, align 8, !dbg !10612
%63 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10612
%64 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %63, i32 0, i32 1, !dbg !10612
%65 = load i32, i32* %64, align 4, !dbg !10612
%66 = mul i32 1, %65, !dbg !10612
%67 = add i32 %66, 1, !dbg !10612
%68 = zext i32 %67 to i64, !dbg !10612
%69 = getelementptr inbounds float, float* %62, i64 %68, !dbg !10612
%70 = load float, float* %69, align 4, !dbg !10612
store float %70, float* %10, align 4, !dbg !10611
call void @llvm.dbg.declare(metadata float* %11, metadata !10613, metadata !DIExpression()), !dbg !10614
%71 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10615
%72 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %71, i32 0, i32 2, !dbg !10615
%73 = load float*, float** %72, align 8, !dbg !10615
%74 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10615
%75 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %74, i32 0, i32 1, !dbg !10615
%76 = load i32, i32* %75, align 4, !dbg !10615
%77 = mul i32 1, %76, !dbg !10615
%78 = add i32 %77, 2, !dbg !10615
%79 = zext i32 %78 to i64, !dbg !10615
%80 = getelementptr inbounds float, float* %73, i64 %79, !dbg !10615
%81 = load float, float* %80, align 4, !dbg !10615
store float %81, float* %11, align 4, !dbg !10614
call void @llvm.dbg.declare(metadata float* %12, metadata !10616, metadata !DIExpression()), !dbg !10617
%82 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10618
%83 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %82, i32 0, i32 2, !dbg !10618
%84 = load float*, float** %83, align 8, !dbg !10618
%85 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10618
%86 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %85, i32 0, i32 1, !dbg !10618
%87 = load i32, i32* %86, align 4, !dbg !10618
%88 = mul i32 2, %87, !dbg !10618
%89 = add i32 %88, 0, !dbg !10618
%90 = zext i32 %89 to i64, !dbg !10618
%91 = getelementptr inbounds float, float* %84, i64 %90, !dbg !10618
%92 = load float, float* %91, align 4, !dbg !10618
store float %92, float* %12, align 4, !dbg !10617
call void @llvm.dbg.declare(metadata float* %13, metadata !10619, metadata !DIExpression()), !dbg !10620
%93 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10621
%94 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %93, i32 0, i32 2, !dbg !10621
%95 = load float*, float** %94, align 8, !dbg !10621
%96 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10621
%97 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %96, i32 0, i32 1, !dbg !10621
%98 = load i32, i32* %97, align 4, !dbg !10621
%99 = mul i32 2, %98, !dbg !10621
%100 = add i32 %99, 1, !dbg !10621
%101 = zext i32 %100 to i64, !dbg !10621
%102 = getelementptr inbounds float, float* %95, i64 %101, !dbg !10621
%103 = load float, float* %102, align 4, !dbg !10621
store float %103, float* %13, align 4, !dbg !10620
call void @llvm.dbg.declare(metadata float* %14, metadata !10622, metadata !DIExpression()), !dbg !10623
%104 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10624
%105 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %104, i32 0, i32 2, !dbg !10624
%106 = load float*, float** %105, align 8, !dbg !10624
%107 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10624
%108 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %107, i32 0, i32 1, !dbg !10624
%109 = load i32, i32* %108, align 4, !dbg !10624
%110 = mul i32 2, %109, !dbg !10624
%111 = add i32 %110, 2, !dbg !10624
%112 = zext i32 %111 to i64, !dbg !10624
%113 = getelementptr inbounds float, float* %106, i64 %112, !dbg !10624
%114 = load float, float* %113, align 4, !dbg !10624
store float %114, float* %14, align 4, !dbg !10623
call void @llvm.dbg.declare(metadata float* %15, metadata !10625, metadata !DIExpression()), !dbg !10626
%115 = load float, float* %6, align 4, !dbg !10627
%116 = load float, float* %10, align 4, !dbg !10628
%117 = fmul float %115, %116, !dbg !10629
%118 = load float, float* %14, align 4, !dbg !10630
%119 = fmul float %117, %118, !dbg !10631
%120 = load float, float* %9, align 4, !dbg !10632
%121 = load float, float* %13, align 4, !dbg !10633
%122 = fmul float %120, %121, !dbg !10634
%123 = load float, float* %8, align 4, !dbg !10635
%124 = fmul float %122, %123, !dbg !10636
%125 = fadd float %119, %124, !dbg !10637
%126 = load float, float* %12, align 4, !dbg !10638
%127 = load float, float* %7, align 4, !dbg !10639
%128 = fmul float %126, %127, !dbg !10640
%129 = load float, float* %11, align 4, !dbg !10641
%130 = fmul float %128, %129, !dbg !10642
%131 = fadd float %125, %130, !dbg !10643
%132 = load float, float* %6, align 4, !dbg !10644
%133 = load float, float* %13, align 4, !dbg !10645
%134 = fmul float %132, %133, !dbg !10646
%135 = load float, float* %11, align 4, !dbg !10647
%136 = fmul float %134, %135, !dbg !10648
%137 = fsub float %131, %136, !dbg !10649
%138 = load float, float* %12, align 4, !dbg !10650
%139 = load float, float* %10, align 4, !dbg !10651
%140 = fmul float %138, %139, !dbg !10652
%141 = load float, float* %8, align 4, !dbg !10653
%142 = fmul float %140, %141, !dbg !10654
%143 = fsub float %137, %142, !dbg !10655
%144 = load float, float* %9, align 4, !dbg !10656
%145 = load float, float* %7, align 4, !dbg !10657
%146 = fmul float %144, %145, !dbg !10658
%147 = load float, float* %14, align 4, !dbg !10659
%148 = fmul float %146, %147, !dbg !10660
%149 = fsub float %143, %148, !dbg !10661
store float %149, float* %15, align 4, !dbg !10626
%150 = load float, float* %15, align 4, !dbg !10662
%151 = fcmp une float %150, 0.000000e+00, !dbg !10664
br i1 %151, label %152, label %326, !dbg !10665
152: ; preds = %2
%153 = load float, float* %15, align 4, !dbg !10666
%154 = fdiv float 1.000000e+00, %153, !dbg !10668
store float %154, float* %15, align 4, !dbg !10669
%155 = load float, float* %15, align 4, !dbg !10670
%156 = load float, float* %10, align 4, !dbg !10670
%157 = load float, float* %14, align 4, !dbg !10670
%158 = fmul float %156, %157, !dbg !10670
%159 = load float, float* %11, align 4, !dbg !10670
%160 = load float, float* %13, align 4, !dbg !10670
%161 = fmul float %159, %160, !dbg !10670
%162 = fsub float %158, %161, !dbg !10670
%163 = fmul float %155, %162, !dbg !10670
%164 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10670
%165 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %164, i32 0, i32 2, !dbg !10670
%166 = load float*, float** %165, align 8, !dbg !10670
%167 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10670
%168 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %167, i32 0, i32 1, !dbg !10670
%169 = load i32, i32* %168, align 4, !dbg !10670
%170 = mul i32 0, %169, !dbg !10670
%171 = add i32 %170, 0, !dbg !10670
%172 = zext i32 %171 to i64, !dbg !10670
%173 = getelementptr inbounds float, float* %166, i64 %172, !dbg !10670
store float %163, float* %173, align 4, !dbg !10670
%174 = load float, float* %15, align 4, !dbg !10671
%175 = load float, float* %8, align 4, !dbg !10671
%176 = load float, float* %13, align 4, !dbg !10671
%177 = fmul float %175, %176, !dbg !10671
%178 = load float, float* %7, align 4, !dbg !10671
%179 = load float, float* %14, align 4, !dbg !10671
%180 = fmul float %178, %179, !dbg !10671
%181 = fsub float %177, %180, !dbg !10671
%182 = fmul float %174, %181, !dbg !10671
%183 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10671
%184 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %183, i32 0, i32 2, !dbg !10671
%185 = load float*, float** %184, align 8, !dbg !10671
%186 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10671
%187 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %186, i32 0, i32 1, !dbg !10671
%188 = load i32, i32* %187, align 4, !dbg !10671
%189 = mul i32 0, %188, !dbg !10671
%190 = add i32 %189, 1, !dbg !10671
%191 = zext i32 %190 to i64, !dbg !10671
%192 = getelementptr inbounds float, float* %185, i64 %191, !dbg !10671
store float %182, float* %192, align 4, !dbg !10671
%193 = load float, float* %15, align 4, !dbg !10672
%194 = load float, float* %7, align 4, !dbg !10672
%195 = load float, float* %11, align 4, !dbg !10672
%196 = fmul float %194, %195, !dbg !10672
%197 = load float, float* %8, align 4, !dbg !10672
%198 = load float, float* %10, align 4, !dbg !10672
%199 = fmul float %197, %198, !dbg !10672
%200 = fsub float %196, %199, !dbg !10672
%201 = fmul float %193, %200, !dbg !10672
%202 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10672
%203 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %202, i32 0, i32 2, !dbg !10672
%204 = load float*, float** %203, align 8, !dbg !10672
%205 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10672
%206 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %205, i32 0, i32 1, !dbg !10672
%207 = load i32, i32* %206, align 4, !dbg !10672
%208 = mul i32 0, %207, !dbg !10672
%209 = add i32 %208, 2, !dbg !10672
%210 = zext i32 %209 to i64, !dbg !10672
%211 = getelementptr inbounds float, float* %204, i64 %210, !dbg !10672
store float %201, float* %211, align 4, !dbg !10672
%212 = load float, float* %15, align 4, !dbg !10673
%213 = load float, float* %11, align 4, !dbg !10673
%214 = load float, float* %12, align 4, !dbg !10673
%215 = fmul float %213, %214, !dbg !10673
%216 = load float, float* %9, align 4, !dbg !10673
%217 = load float, float* %14, align 4, !dbg !10673
%218 = fmul float %216, %217, !dbg !10673
%219 = fsub float %215, %218, !dbg !10673
%220 = fmul float %212, %219, !dbg !10673
%221 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10673
%222 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %221, i32 0, i32 2, !dbg !10673
%223 = load float*, float** %222, align 8, !dbg !10673
%224 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10673
%225 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %224, i32 0, i32 1, !dbg !10673
%226 = load i32, i32* %225, align 4, !dbg !10673
%227 = mul i32 1, %226, !dbg !10673
%228 = add i32 %227, 0, !dbg !10673
%229 = zext i32 %228 to i64, !dbg !10673
%230 = getelementptr inbounds float, float* %223, i64 %229, !dbg !10673
store float %220, float* %230, align 4, !dbg !10673
%231 = load float, float* %15, align 4, !dbg !10674
%232 = load float, float* %6, align 4, !dbg !10674
%233 = load float, float* %14, align 4, !dbg !10674
%234 = fmul float %232, %233, !dbg !10674
%235 = load float, float* %8, align 4, !dbg !10674
%236 = load float, float* %12, align 4, !dbg !10674
%237 = fmul float %235, %236, !dbg !10674
%238 = fsub float %234, %237, !dbg !10674
%239 = fmul float %231, %238, !dbg !10674
%240 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10674
%241 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %240, i32 0, i32 2, !dbg !10674
%242 = load float*, float** %241, align 8, !dbg !10674
%243 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10674
%244 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %243, i32 0, i32 1, !dbg !10674
%245 = load i32, i32* %244, align 4, !dbg !10674
%246 = mul i32 1, %245, !dbg !10674
%247 = add i32 %246, 1, !dbg !10674
%248 = zext i32 %247 to i64, !dbg !10674
%249 = getelementptr inbounds float, float* %242, i64 %248, !dbg !10674
store float %239, float* %249, align 4, !dbg !10674
%250 = load float, float* %15, align 4, !dbg !10675
%251 = load float, float* %8, align 4, !dbg !10675
%252 = load float, float* %9, align 4, !dbg !10675
%253 = fmul float %251, %252, !dbg !10675
%254 = load float, float* %6, align 4, !dbg !10675
%255 = load float, float* %11, align 4, !dbg !10675
%256 = fmul float %254, %255, !dbg !10675
%257 = fsub float %253, %256, !dbg !10675
%258 = fmul float %250, %257, !dbg !10675
%259 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10675
%260 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %259, i32 0, i32 2, !dbg !10675
%261 = load float*, float** %260, align 8, !dbg !10675
%262 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10675
%263 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %262, i32 0, i32 1, !dbg !10675
%264 = load i32, i32* %263, align 4, !dbg !10675
%265 = mul i32 1, %264, !dbg !10675
%266 = add i32 %265, 2, !dbg !10675
%267 = zext i32 %266 to i64, !dbg !10675
%268 = getelementptr inbounds float, float* %261, i64 %267, !dbg !10675
store float %258, float* %268, align 4, !dbg !10675
%269 = load float, float* %15, align 4, !dbg !10676
%270 = load float, float* %9, align 4, !dbg !10676
%271 = load float, float* %13, align 4, !dbg !10676
%272 = fmul float %270, %271, !dbg !10676
%273 = load float, float* %10, align 4, !dbg !10676
%274 = load float, float* %12, align 4, !dbg !10676
%275 = fmul float %273, %274, !dbg !10676
%276 = fsub float %272, %275, !dbg !10676
%277 = fmul float %269, %276, !dbg !10676
%278 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10676
%279 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %278, i32 0, i32 2, !dbg !10676
%280 = load float*, float** %279, align 8, !dbg !10676
%281 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10676
%282 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %281, i32 0, i32 1, !dbg !10676
%283 = load i32, i32* %282, align 4, !dbg !10676
%284 = mul i32 2, %283, !dbg !10676
%285 = add i32 %284, 0, !dbg !10676
%286 = zext i32 %285 to i64, !dbg !10676
%287 = getelementptr inbounds float, float* %280, i64 %286, !dbg !10676
store float %277, float* %287, align 4, !dbg !10676
%288 = load float, float* %15, align 4, !dbg !10677
%289 = load float, float* %7, align 4, !dbg !10677
%290 = load float, float* %12, align 4, !dbg !10677
%291 = fmul float %289, %290, !dbg !10677
%292 = load float, float* %6, align 4, !dbg !10677
%293 = load float, float* %13, align 4, !dbg !10677
%294 = fmul float %292, %293, !dbg !10677
%295 = fsub float %291, %294, !dbg !10677
%296 = fmul float %288, %295, !dbg !10677
%297 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10677
%298 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %297, i32 0, i32 2, !dbg !10677
%299 = load float*, float** %298, align 8, !dbg !10677
%300 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10677
%301 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %300, i32 0, i32 1, !dbg !10677
%302 = load i32, i32* %301, align 4, !dbg !10677
%303 = mul i32 2, %302, !dbg !10677
%304 = add i32 %303, 1, !dbg !10677
%305 = zext i32 %304 to i64, !dbg !10677
%306 = getelementptr inbounds float, float* %299, i64 %305, !dbg !10677
store float %296, float* %306, align 4, !dbg !10677
%307 = load float, float* %15, align 4, !dbg !10678
%308 = load float, float* %6, align 4, !dbg !10678
%309 = load float, float* %10, align 4, !dbg !10678
%310 = fmul float %308, %309, !dbg !10678
%311 = load float, float* %7, align 4, !dbg !10678
%312 = load float, float* %9, align 4, !dbg !10678
%313 = fmul float %311, %312, !dbg !10678
%314 = fsub float %310, %313, !dbg !10678
%315 = fmul float %307, %314, !dbg !10678
%316 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10678
%317 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %316, i32 0, i32 2, !dbg !10678
%318 = load float*, float** %317, align 8, !dbg !10678
%319 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10678
%320 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %319, i32 0, i32 1, !dbg !10678
%321 = load i32, i32* %320, align 4, !dbg !10678
%322 = mul i32 2, %321, !dbg !10678
%323 = add i32 %322, 2, !dbg !10678
%324 = zext i32 %323 to i64, !dbg !10678
%325 = getelementptr inbounds float, float* %318, i64 %324, !dbg !10678
store float %315, float* %325, align 4, !dbg !10678
store i64 1, i64* %3, align 8, !dbg !10679
br label %327, !dbg !10679
326: ; preds = %2
store i64 0, i64* %3, align 8, !dbg !10680
br label %327, !dbg !10680
327: ; preds = %326, %152
%328 = load i64, i64* %3, align 8, !dbg !10681
ret i64 %328, !dbg !10681
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @testForIdentityf(%struct.Matrixf_t* %0) #0 !dbg !10682 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !10685, metadata !DIExpression()), !dbg !10686
call void @llvm.dbg.declare(metadata i32* %3, metadata !10687, metadata !DIExpression()), !dbg !10688
call void @llvm.dbg.declare(metadata i32* %4, metadata !10689, metadata !DIExpression()), !dbg !10690
call void @llvm.dbg.declare(metadata float* %5, metadata !10691, metadata !DIExpression()), !dbg !10692
store float 0.000000e+00, float* %5, align 4, !dbg !10692
store i32 0, i32* %3, align 4, !dbg !10693
br label %6, !dbg !10695
6: ; preds = %46, %1
%7 = load i32, i32* %3, align 4, !dbg !10696
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10698
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10699
%10 = load i32, i32* %9, align 8, !dbg !10699
%11 = icmp ult i32 %7, %10, !dbg !10700
br i1 %11, label %12, label %49, !dbg !10701
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !10702
br label %13, !dbg !10705
13: ; preds = %42, %12
%14 = load i32, i32* %4, align 4, !dbg !10706
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10708
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 1, !dbg !10709
%17 = load i32, i32* %16, align 4, !dbg !10709
%18 = icmp ult i32 %14, %17, !dbg !10710
br i1 %18, label %19, label %45, !dbg !10711
19: ; preds = %13
%20 = load i32, i32* %3, align 4, !dbg !10712
%21 = load i32, i32* %4, align 4, !dbg !10715
%22 = icmp eq i32 %20, %21, !dbg !10716
br i1 %22, label %23, label %32, !dbg !10717
23: ; preds = %19
%24 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10718
%25 = load i32, i32* %3, align 4, !dbg !10719
%26 = load i32, i32* %4, align 4, !dbg !10720
%27 = call float @matrixGetf(%struct.Matrixf_t* %24, i32 %25, i32 %26), !dbg !10721
%28 = fsub float 1.000000e+00, %27, !dbg !10722
%29 = call float @llvm.fabs.f32(float %28), !dbg !10723
%30 = load float, float* %5, align 4, !dbg !10724
%31 = fadd float %30, %29, !dbg !10724
store float %31, float* %5, align 4, !dbg !10724
br label %41, !dbg !10725
32: ; preds = %19
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10726
%34 = load i32, i32* %3, align 4, !dbg !10727
%35 = load i32, i32* %4, align 4, !dbg !10728
%36 = call float @matrixGetf(%struct.Matrixf_t* %33, i32 %34, i32 %35), !dbg !10729
%37 = fsub float 0.000000e+00, %36, !dbg !10730
%38 = call float @llvm.fabs.f32(float %37), !dbg !10731
%39 = load float, float* %5, align 4, !dbg !10732
%40 = fadd float %39, %38, !dbg !10732
store float %40, float* %5, align 4, !dbg !10732
br label %41
41: ; preds = %32, %23
br label %42, !dbg !10733
42: ; preds = %41
%43 = load i32, i32* %4, align 4, !dbg !10734
%44 = add i32 %43, 1, !dbg !10734
store i32 %44, i32* %4, align 4, !dbg !10734
br label %13, !dbg !10735, !llvm.loop !10736
45: ; preds = %13
br label %46, !dbg !10738
46: ; preds = %45
%47 = load i32, i32* %3, align 4, !dbg !10739
%48 = add i32 %47, 1, !dbg !10739
store i32 %48, i32* %3, align 4, !dbg !10739
br label %6, !dbg !10740, !llvm.loop !10741
49: ; preds = %6
%50 = load float, float* %5, align 4, !dbg !10743
ret float %50, !dbg !10744
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @testForZeroMatrixf(%struct.Matrixf_t* %0) #0 !dbg !10745 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca i32, align 4
%4 = alloca i32, align 4
%5 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !10746, metadata !DIExpression()), !dbg !10747
call void @llvm.dbg.declare(metadata i32* %3, metadata !10748, metadata !DIExpression()), !dbg !10749
call void @llvm.dbg.declare(metadata i32* %4, metadata !10750, metadata !DIExpression()), !dbg !10751
call void @llvm.dbg.declare(metadata float* %5, metadata !10752, metadata !DIExpression()), !dbg !10753
store float 0.000000e+00, float* %5, align 4, !dbg !10753
store i32 0, i32* %3, align 4, !dbg !10754
br label %6, !dbg !10756
6: ; preds = %32, %1
%7 = load i32, i32* %3, align 4, !dbg !10757
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10759
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10760
%10 = load i32, i32* %9, align 8, !dbg !10760
%11 = icmp ult i32 %7, %10, !dbg !10761
br i1 %11, label %12, label %35, !dbg !10762
12: ; preds = %6
store i32 0, i32* %4, align 4, !dbg !10763
br label %13, !dbg !10766
13: ; preds = %28, %12
%14 = load i32, i32* %4, align 4, !dbg !10767
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10769
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 1, !dbg !10770
%17 = load i32, i32* %16, align 4, !dbg !10770
%18 = icmp ult i32 %14, %17, !dbg !10771
br i1 %18, label %19, label %31, !dbg !10772
19: ; preds = %13
%20 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !10773
%21 = load i32, i32* %3, align 4, !dbg !10775
%22 = load i32, i32* %4, align 4, !dbg !10776
%23 = call float @matrixGetf(%struct.Matrixf_t* %20, i32 %21, i32 %22), !dbg !10777
%24 = fsub float 0.000000e+00, %23, !dbg !10778
%25 = call float @llvm.fabs.f32(float %24), !dbg !10779
%26 = load float, float* %5, align 4, !dbg !10780
%27 = fadd float %26, %25, !dbg !10780
store float %27, float* %5, align 4, !dbg !10780
br label %28, !dbg !10781
28: ; preds = %19
%29 = load i32, i32* %4, align 4, !dbg !10782
%30 = add i32 %29, 1, !dbg !10782
store i32 %30, i32* %4, align 4, !dbg !10782
br label %13, !dbg !10783, !llvm.loop !10784
31: ; preds = %13
br label %32, !dbg !10786
32: ; preds = %31
%33 = load i32, i32* %3, align 4, !dbg !10787
%34 = add i32 %33, 1, !dbg !10787
store i32 %34, i32* %3, align 4, !dbg !10787
br label %6, !dbg !10788, !llvm.loop !10789
35: ; preds = %6
%36 = load float, float* %5, align 4, !dbg !10791
ret float %36, !dbg !10792
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixTranspose_ftod(%struct.Matrixf_t* %0, %struct.Matrix_t* %1) #0 !dbg !10793 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10796, metadata !DIExpression()), !dbg !10797
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !10798, metadata !DIExpression()), !dbg !10799
call void @llvm.dbg.declare(metadata i32* %6, metadata !10800, metadata !DIExpression()), !dbg !10801
call void @llvm.dbg.declare(metadata i32* %7, metadata !10802, metadata !DIExpression()), !dbg !10803
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10804
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10806
%10 = load i32, i32* %9, align 8, !dbg !10806
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10807
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 1, !dbg !10808
%13 = load i32, i32* %12, align 4, !dbg !10808
%14 = icmp eq i32 %10, %13, !dbg !10809
br i1 %14, label %15, label %72, !dbg !10810
15: ; preds = %2
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10811
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 1, !dbg !10812
%18 = load i32, i32* %17, align 4, !dbg !10812
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10813
%20 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 0, !dbg !10814
%21 = load i32, i32* %20, align 8, !dbg !10814
%22 = icmp eq i32 %18, %21, !dbg !10815
br i1 %22, label %23, label %72, !dbg !10816
23: ; preds = %15
store i32 0, i32* %6, align 4, !dbg !10817
br label %24, !dbg !10820
24: ; preds = %68, %23
%25 = load i32, i32* %6, align 4, !dbg !10821
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10823
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 0, !dbg !10824
%28 = load i32, i32* %27, align 8, !dbg !10824
%29 = icmp ult i32 %25, %28, !dbg !10825
br i1 %29, label %30, label %71, !dbg !10826
30: ; preds = %24
store i32 0, i32* %7, align 4, !dbg !10827
br label %31, !dbg !10830
31: ; preds = %64, %30
%32 = load i32, i32* %7, align 4, !dbg !10831
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10833
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 1, !dbg !10834
%35 = load i32, i32* %34, align 4, !dbg !10834
%36 = icmp ult i32 %32, %35, !dbg !10835
br i1 %36, label %37, label %67, !dbg !10836
37: ; preds = %31
%38 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10837
%39 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %38, i32 0, i32 2, !dbg !10837
%40 = load float*, float** %39, align 8, !dbg !10837
%41 = load i32, i32* %6, align 4, !dbg !10837
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10837
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 1, !dbg !10837
%44 = load i32, i32* %43, align 4, !dbg !10837
%45 = mul i32 %41, %44, !dbg !10837
%46 = load i32, i32* %7, align 4, !dbg !10837
%47 = add i32 %45, %46, !dbg !10837
%48 = zext i32 %47 to i64, !dbg !10837
%49 = getelementptr inbounds float, float* %40, i64 %48, !dbg !10837
%50 = load float, float* %49, align 4, !dbg !10837
%51 = fpext float %50 to double, !dbg !10837
%52 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10837
%53 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %52, i32 0, i32 2, !dbg !10837
%54 = load double*, double** %53, align 8, !dbg !10837
%55 = load i32, i32* %7, align 4, !dbg !10837
%56 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10837
%57 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %56, i32 0, i32 1, !dbg !10837
%58 = load i32, i32* %57, align 4, !dbg !10837
%59 = mul i32 %55, %58, !dbg !10837
%60 = load i32, i32* %6, align 4, !dbg !10837
%61 = add i32 %59, %60, !dbg !10837
%62 = zext i32 %61 to i64, !dbg !10837
%63 = getelementptr inbounds double, double* %54, i64 %62, !dbg !10837
store double %51, double* %63, align 8, !dbg !10837
br label %64, !dbg !10839
64: ; preds = %37
%65 = load i32, i32* %7, align 4, !dbg !10840
%66 = add i32 %65, 1, !dbg !10840
store i32 %66, i32* %7, align 4, !dbg !10840
br label %31, !dbg !10841, !llvm.loop !10842
67: ; preds = %31
br label %68, !dbg !10844
68: ; preds = %67
%69 = load i32, i32* %6, align 4, !dbg !10845
%70 = add i32 %69, 1, !dbg !10845
store i32 %70, i32* %6, align 4, !dbg !10845
br label %24, !dbg !10846, !llvm.loop !10847
71: ; preds = %24
store i64 1, i64* %3, align 8, !dbg !10849
br label %73, !dbg !10849
72: ; preds = %15, %2
store i64 0, i64* %3, align 8, !dbg !10850
br label %73, !dbg !10850
73: ; preds = %72, %71
%74 = load i64, i64* %3, align 8, !dbg !10851
ret i64 %74, !dbg !10851
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixTranspose_dtof(%struct.Matrix_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10852 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !10855, metadata !DIExpression()), !dbg !10856
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10857, metadata !DIExpression()), !dbg !10858
call void @llvm.dbg.declare(metadata i32* %6, metadata !10859, metadata !DIExpression()), !dbg !10860
call void @llvm.dbg.declare(metadata i32* %7, metadata !10861, metadata !DIExpression()), !dbg !10862
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10863
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !10865
%10 = load i32, i32* %9, align 8, !dbg !10865
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10866
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 1, !dbg !10867
%13 = load i32, i32* %12, align 4, !dbg !10867
%14 = icmp eq i32 %10, %13, !dbg !10868
br i1 %14, label %15, label %72, !dbg !10869
15: ; preds = %2
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10870
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 1, !dbg !10871
%18 = load i32, i32* %17, align 4, !dbg !10871
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10872
%20 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 0, !dbg !10873
%21 = load i32, i32* %20, align 8, !dbg !10873
%22 = icmp eq i32 %18, %21, !dbg !10874
br i1 %22, label %23, label %72, !dbg !10875
23: ; preds = %15
store i32 0, i32* %6, align 4, !dbg !10876
br label %24, !dbg !10879
24: ; preds = %68, %23
%25 = load i32, i32* %6, align 4, !dbg !10880
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10882
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 0, !dbg !10883
%28 = load i32, i32* %27, align 8, !dbg !10883
%29 = icmp ult i32 %25, %28, !dbg !10884
br i1 %29, label %30, label %71, !dbg !10885
30: ; preds = %24
store i32 0, i32* %7, align 4, !dbg !10886
br label %31, !dbg !10889
31: ; preds = %64, %30
%32 = load i32, i32* %7, align 4, !dbg !10890
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10892
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 1, !dbg !10893
%35 = load i32, i32* %34, align 4, !dbg !10893
%36 = icmp ult i32 %32, %35, !dbg !10894
br i1 %36, label %37, label %67, !dbg !10895
37: ; preds = %31
%38 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10896
%39 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %38, i32 0, i32 2, !dbg !10896
%40 = load double*, double** %39, align 8, !dbg !10896
%41 = load i32, i32* %6, align 4, !dbg !10896
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10896
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 1, !dbg !10896
%44 = load i32, i32* %43, align 4, !dbg !10896
%45 = mul i32 %41, %44, !dbg !10896
%46 = load i32, i32* %7, align 4, !dbg !10896
%47 = add i32 %45, %46, !dbg !10896
%48 = zext i32 %47 to i64, !dbg !10896
%49 = getelementptr inbounds double, double* %40, i64 %48, !dbg !10896
%50 = load double, double* %49, align 8, !dbg !10896
%51 = fptrunc double %50 to float, !dbg !10896
%52 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10896
%53 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %52, i32 0, i32 2, !dbg !10896
%54 = load float*, float** %53, align 8, !dbg !10896
%55 = load i32, i32* %7, align 4, !dbg !10896
%56 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10896
%57 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %56, i32 0, i32 1, !dbg !10896
%58 = load i32, i32* %57, align 4, !dbg !10896
%59 = mul i32 %55, %58, !dbg !10896
%60 = load i32, i32* %6, align 4, !dbg !10896
%61 = add i32 %59, %60, !dbg !10896
%62 = zext i32 %61 to i64, !dbg !10896
%63 = getelementptr inbounds float, float* %54, i64 %62, !dbg !10896
store float %51, float* %63, align 4, !dbg !10896
br label %64, !dbg !10898
64: ; preds = %37
%65 = load i32, i32* %7, align 4, !dbg !10899
%66 = add i32 %65, 1, !dbg !10899
store i32 %66, i32* %7, align 4, !dbg !10899
br label %31, !dbg !10900, !llvm.loop !10901
67: ; preds = %31
br label %68, !dbg !10903
68: ; preds = %67
%69 = load i32, i32* %6, align 4, !dbg !10904
%70 = add i32 %69, 1, !dbg !10904
store i32 %70, i32* %6, align 4, !dbg !10904
br label %24, !dbg !10905, !llvm.loop !10906
71: ; preds = %24
store i64 1, i64* %3, align 8, !dbg !10908
br label %73, !dbg !10908
72: ; preds = %15, %2
store i64 0, i64* %3, align 8, !dbg !10909
br label %73, !dbg !10909
73: ; preds = %72, %71
%74 = load i64, i64* %3, align 8, !dbg !10910
ret i64 %74, !dbg !10910
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixCopy_ftod(%struct.Matrixf_t* %0, %struct.Matrix_t* %1) #0 !dbg !10911 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca %struct.Matrix_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !10912, metadata !DIExpression()), !dbg !10913
store %struct.Matrix_t* %1, %struct.Matrix_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %5, metadata !10914, metadata !DIExpression()), !dbg !10915
call void @llvm.dbg.declare(metadata i32* %6, metadata !10916, metadata !DIExpression()), !dbg !10917
call void @llvm.dbg.declare(metadata i32* %7, metadata !10918, metadata !DIExpression()), !dbg !10919
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10920
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 0, !dbg !10922
%10 = load i32, i32* %9, align 8, !dbg !10922
%11 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10923
%12 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %11, i32 0, i32 0, !dbg !10924
%13 = load i32, i32* %12, align 8, !dbg !10924
%14 = icmp eq i32 %10, %13, !dbg !10925
br i1 %14, label %15, label %72, !dbg !10926
15: ; preds = %2
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10927
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 1, !dbg !10928
%18 = load i32, i32* %17, align 4, !dbg !10928
%19 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10929
%20 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %19, i32 0, i32 1, !dbg !10930
%21 = load i32, i32* %20, align 4, !dbg !10930
%22 = icmp eq i32 %18, %21, !dbg !10931
br i1 %22, label %23, label %72, !dbg !10932
23: ; preds = %15
store i32 0, i32* %6, align 4, !dbg !10933
br label %24, !dbg !10936
24: ; preds = %68, %23
%25 = load i32, i32* %6, align 4, !dbg !10937
%26 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10939
%27 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %26, i32 0, i32 0, !dbg !10940
%28 = load i32, i32* %27, align 8, !dbg !10940
%29 = icmp ult i32 %25, %28, !dbg !10941
br i1 %29, label %30, label %71, !dbg !10942
30: ; preds = %24
store i32 0, i32* %7, align 4, !dbg !10943
br label %31, !dbg !10946
31: ; preds = %64, %30
%32 = load i32, i32* %7, align 4, !dbg !10947
%33 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10949
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %33, i32 0, i32 1, !dbg !10950
%35 = load i32, i32* %34, align 4, !dbg !10950
%36 = icmp ult i32 %32, %35, !dbg !10951
br i1 %36, label %37, label %67, !dbg !10952
37: ; preds = %31
%38 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10953
%39 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %38, i32 0, i32 2, !dbg !10953
%40 = load float*, float** %39, align 8, !dbg !10953
%41 = load i32, i32* %6, align 4, !dbg !10953
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !10953
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 1, !dbg !10953
%44 = load i32, i32* %43, align 4, !dbg !10953
%45 = mul i32 %41, %44, !dbg !10953
%46 = load i32, i32* %7, align 4, !dbg !10953
%47 = add i32 %45, %46, !dbg !10953
%48 = zext i32 %47 to i64, !dbg !10953
%49 = getelementptr inbounds float, float* %40, i64 %48, !dbg !10953
%50 = load float, float* %49, align 4, !dbg !10953
%51 = fpext float %50 to double, !dbg !10953
%52 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10953
%53 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %52, i32 0, i32 2, !dbg !10953
%54 = load double*, double** %53, align 8, !dbg !10953
%55 = load i32, i32* %6, align 4, !dbg !10953
%56 = load %struct.Matrix_t*, %struct.Matrix_t** %5, align 8, !dbg !10953
%57 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %56, i32 0, i32 1, !dbg !10953
%58 = load i32, i32* %57, align 4, !dbg !10953
%59 = mul i32 %55, %58, !dbg !10953
%60 = load i32, i32* %7, align 4, !dbg !10953
%61 = add i32 %59, %60, !dbg !10953
%62 = zext i32 %61 to i64, !dbg !10953
%63 = getelementptr inbounds double, double* %54, i64 %62, !dbg !10953
store double %51, double* %63, align 8, !dbg !10953
br label %64, !dbg !10955
64: ; preds = %37
%65 = load i32, i32* %7, align 4, !dbg !10956
%66 = add i32 %65, 1, !dbg !10956
store i32 %66, i32* %7, align 4, !dbg !10956
br label %31, !dbg !10957, !llvm.loop !10958
67: ; preds = %31
br label %68, !dbg !10960
68: ; preds = %67
%69 = load i32, i32* %6, align 4, !dbg !10961
%70 = add i32 %69, 1, !dbg !10961
store i32 %70, i32* %6, align 4, !dbg !10961
br label %24, !dbg !10962, !llvm.loop !10963
71: ; preds = %24
store i64 1, i64* %3, align 8, !dbg !10965
br label %73, !dbg !10965
72: ; preds = %15, %2
store i64 0, i64* %3, align 8, !dbg !10966
br label %73, !dbg !10966
73: ; preds = %72, %71
%74 = load i64, i64* %3, align 8, !dbg !10967
ret i64 %74, !dbg !10967
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @matrixCopy_dtof(%struct.Matrix_t* %0, %struct.Matrixf_t* %1) #0 !dbg !10968 {
%3 = alloca i64, align 8
%4 = alloca %struct.Matrix_t*, align 8
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
store %struct.Matrix_t* %0, %struct.Matrix_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrix_t** %4, metadata !10969, metadata !DIExpression()), !dbg !10970
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !10971, metadata !DIExpression()), !dbg !10972
call void @llvm.dbg.declare(metadata i32* %6, metadata !10973, metadata !DIExpression()), !dbg !10974
call void @llvm.dbg.declare(metadata i32* %7, metadata !10975, metadata !DIExpression()), !dbg !10976
%8 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10977
%9 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %8, i32 0, i32 0, !dbg !10979
%10 = load i32, i32* %9, align 8, !dbg !10979
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10980
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 0, !dbg !10981
%13 = load i32, i32* %12, align 8, !dbg !10981
%14 = icmp eq i32 %10, %13, !dbg !10982
br i1 %14, label %15, label %72, !dbg !10983
15: ; preds = %2
%16 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10984
%17 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %16, i32 0, i32 1, !dbg !10985
%18 = load i32, i32* %17, align 4, !dbg !10985
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !10986
%20 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 1, !dbg !10987
%21 = load i32, i32* %20, align 4, !dbg !10987
%22 = icmp eq i32 %18, %21, !dbg !10988
br i1 %22, label %23, label %72, !dbg !10989
23: ; preds = %15
store i32 0, i32* %6, align 4, !dbg !10990
br label %24, !dbg !10993
24: ; preds = %68, %23
%25 = load i32, i32* %6, align 4, !dbg !10994
%26 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !10996
%27 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %26, i32 0, i32 0, !dbg !10997
%28 = load i32, i32* %27, align 8, !dbg !10997
%29 = icmp ult i32 %25, %28, !dbg !10998
br i1 %29, label %30, label %71, !dbg !10999
30: ; preds = %24
store i32 0, i32* %7, align 4, !dbg !11000
br label %31, !dbg !11003
31: ; preds = %64, %30
%32 = load i32, i32* %7, align 4, !dbg !11004
%33 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !11006
%34 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %33, i32 0, i32 1, !dbg !11007
%35 = load i32, i32* %34, align 4, !dbg !11007
%36 = icmp ult i32 %32, %35, !dbg !11008
br i1 %36, label %37, label %67, !dbg !11009
37: ; preds = %31
%38 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !11010
%39 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %38, i32 0, i32 2, !dbg !11010
%40 = load double*, double** %39, align 8, !dbg !11010
%41 = load i32, i32* %6, align 4, !dbg !11010
%42 = load %struct.Matrix_t*, %struct.Matrix_t** %4, align 8, !dbg !11010
%43 = getelementptr inbounds %struct.Matrix_t, %struct.Matrix_t* %42, i32 0, i32 1, !dbg !11010
%44 = load i32, i32* %43, align 4, !dbg !11010
%45 = mul i32 %41, %44, !dbg !11010
%46 = load i32, i32* %7, align 4, !dbg !11010
%47 = add i32 %45, %46, !dbg !11010
%48 = zext i32 %47 to i64, !dbg !11010
%49 = getelementptr inbounds double, double* %40, i64 %48, !dbg !11010
%50 = load double, double* %49, align 8, !dbg !11010
%51 = fptrunc double %50 to float, !dbg !11010
%52 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !11010
%53 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %52, i32 0, i32 2, !dbg !11010
%54 = load float*, float** %53, align 8, !dbg !11010
%55 = load i32, i32* %6, align 4, !dbg !11010
%56 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !11010
%57 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %56, i32 0, i32 1, !dbg !11010
%58 = load i32, i32* %57, align 4, !dbg !11010
%59 = mul i32 %55, %58, !dbg !11010
%60 = load i32, i32* %7, align 4, !dbg !11010
%61 = add i32 %59, %60, !dbg !11010
%62 = zext i32 %61 to i64, !dbg !11010
%63 = getelementptr inbounds float, float* %54, i64 %62, !dbg !11010
store float %51, float* %63, align 4, !dbg !11010
br label %64, !dbg !11012
64: ; preds = %37
%65 = load i32, i32* %7, align 4, !dbg !11013
%66 = add i32 %65, 1, !dbg !11013
store i32 %66, i32* %7, align 4, !dbg !11013
br label %31, !dbg !11014, !llvm.loop !11015
67: ; preds = %31
br label %68, !dbg !11017
68: ; preds = %67
%69 = load i32, i32* %6, align 4, !dbg !11018
%70 = add i32 %69, 1, !dbg !11018
store i32 %70, i32* %6, align 4, !dbg !11018
br label %24, !dbg !11019, !llvm.loop !11020
71: ; preds = %24
store i64 1, i64* %3, align 8, !dbg !11022
br label %73, !dbg !11022
72: ; preds = %15, %2
store i64 0, i64* %3, align 8, !dbg !11023
br label %73, !dbg !11023
73: ; preds = %72, %71
%74 = load i64, i64* %3, align 8, !dbg !11024
ret i64 %74, !dbg !11024
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @quadraticDerivativeEvaluationf(float* %0, float %1) #0 !dbg !11025 {
%3 = alloca float*, align 8
%4 = alloca float, align 4
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !11028, metadata !DIExpression()), !dbg !11029
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !11030, metadata !DIExpression()), !dbg !11031
%5 = load float*, float** %3, align 8, !dbg !11032
%6 = getelementptr inbounds float, float* %5, i64 2, !dbg !11032
%7 = load float, float* %6, align 4, !dbg !11032
%8 = fmul float 2.000000e+00, %7, !dbg !11033
%9 = load float, float* %4, align 4, !dbg !11034
%10 = fmul float %8, %9, !dbg !11035
%11 = load float*, float** %3, align 8, !dbg !11036
%12 = getelementptr inbounds float, float* %11, i64 1, !dbg !11036
%13 = load float, float* %12, align 4, !dbg !11036
%14 = fadd float %10, %13, !dbg !11037
ret float %14, !dbg !11038
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @quadraticEvaluationf(float* %0, float %1) #0 !dbg !11039 {
%3 = alloca float*, align 8
%4 = alloca float, align 4
store float* %0, float** %3, align 8
call void @llvm.dbg.declare(metadata float** %3, metadata !11040, metadata !DIExpression()), !dbg !11041
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !11042, metadata !DIExpression()), !dbg !11043
%5 = load float, float* %4, align 4, !dbg !11044
%6 = load float, float* %4, align 4, !dbg !11045
%7 = fmul float %5, %6, !dbg !11046
%8 = load float*, float** %3, align 8, !dbg !11047
%9 = getelementptr inbounds float, float* %8, i64 2, !dbg !11047
%10 = load float, float* %9, align 4, !dbg !11047
%11 = fmul float %7, %10, !dbg !11048
%12 = load float, float* %4, align 4, !dbg !11049
%13 = load float*, float** %3, align 8, !dbg !11050
%14 = getelementptr inbounds float, float* %13, i64 1, !dbg !11050
%15 = load float, float* %14, align 4, !dbg !11050
%16 = fmul float %12, %15, !dbg !11051
%17 = fadd float %11, %16, !dbg !11052
%18 = load float*, float** %3, align 8, !dbg !11053
%19 = getelementptr inbounds float, float* %18, i64 0, !dbg !11053
%20 = load float, float* %19, align 4, !dbg !11053
%21 = fadd float %17, %20, !dbg !11054
ret float %21, !dbg !11055
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @quadraticRegressionf(float* %0, float* %1, i32 %2, float* %3) #0 !dbg !11056 {
%5 = alloca i64, align 8
%6 = alloca float*, align 8
%7 = alloca float*, align 8
%8 = alloca i32, align 4
%9 = alloca float*, align 8
%10 = alloca i32, align 4
%11 = alloca float, align 4
%12 = alloca float, align 4
%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 [9 x float], align 16
%19 = alloca %struct.Matrixf_t, align 8
%20 = alloca [9 x float], align 16
%21 = alloca %struct.Matrixf_t, align 8
%22 = alloca [3 x float], align 4
%23 = alloca %struct.Matrixf_t, align 8
%24 = alloca [3 x float], align 4
%25 = alloca %struct.Matrixf_t, align 8
%26 = alloca float, align 4
%27 = alloca float, align 4
%28 = alloca float, align 4
store float* %0, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !11059, metadata !DIExpression()), !dbg !11060
store float* %1, float** %7, align 8
call void @llvm.dbg.declare(metadata float** %7, metadata !11061, metadata !DIExpression()), !dbg !11062
store i32 %2, i32* %8, align 4
call void @llvm.dbg.declare(metadata i32* %8, metadata !11063, metadata !DIExpression()), !dbg !11064
store float* %3, float** %9, align 8
call void @llvm.dbg.declare(metadata float** %9, metadata !11065, metadata !DIExpression()), !dbg !11066
call void @llvm.dbg.declare(metadata i32* %10, metadata !11067, metadata !DIExpression()), !dbg !11068
call void @llvm.dbg.declare(metadata float* %11, metadata !11069, metadata !DIExpression()), !dbg !11070
store float 0.000000e+00, float* %11, align 4, !dbg !11070
call void @llvm.dbg.declare(metadata float* %12, metadata !11071, metadata !DIExpression()), !dbg !11072
store float 0.000000e+00, float* %12, align 4, !dbg !11072
call void @llvm.dbg.declare(metadata float* %13, metadata !11073, metadata !DIExpression()), !dbg !11074
store float 0.000000e+00, float* %13, align 4, !dbg !11074
call void @llvm.dbg.declare(metadata float* %14, metadata !11075, metadata !DIExpression()), !dbg !11076
store float 0.000000e+00, float* %14, align 4, !dbg !11076
call void @llvm.dbg.declare(metadata float* %15, metadata !11077, metadata !DIExpression()), !dbg !11078
store float 0.000000e+00, float* %15, align 4, !dbg !11078
call void @llvm.dbg.declare(metadata float* %16, metadata !11079, metadata !DIExpression()), !dbg !11080
store float 0.000000e+00, float* %16, align 4, !dbg !11080
call void @llvm.dbg.declare(metadata float* %17, metadata !11081, metadata !DIExpression()), !dbg !11082
store float 0.000000e+00, float* %17, align 4, !dbg !11082
call void @llvm.dbg.declare(metadata [9 x float]* %18, metadata !11083, metadata !DIExpression()), !dbg !11084
call void @llvm.dbg.declare(metadata %struct.Matrixf_t* %19, metadata !11085, metadata !DIExpression()), !dbg !11084
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 0, !dbg !11084
store i32 3, i32* %29, align 8, !dbg !11084
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 1, !dbg !11084
store i32 3, i32* %30, align 4, !dbg !11084
%31 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 2, !dbg !11084
%32 = getelementptr inbounds [9 x float], [9 x float]* %18, i64 0, i64 0, !dbg !11084
store float* %32, float** %31, align 8, !dbg !11084
call void @llvm.dbg.declare(metadata [9 x float]* %20, metadata !11086, metadata !DIExpression()), !dbg !11087
call void @llvm.dbg.declare(metadata %struct.Matrixf_t* %21, metadata !11088, metadata !DIExpression()), !dbg !11087
%33 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 0, !dbg !11087
store i32 3, i32* %33, align 8, !dbg !11087
%34 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 1, !dbg !11087
store i32 3, i32* %34, align 4, !dbg !11087
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 2, !dbg !11087
%36 = getelementptr inbounds [9 x float], [9 x float]* %20, i64 0, i64 0, !dbg !11087
store float* %36, float** %35, align 8, !dbg !11087
call void @llvm.dbg.declare(metadata [3 x float]* %22, metadata !11089, metadata !DIExpression()), !dbg !11090
call void @llvm.dbg.declare(metadata %struct.Matrixf_t* %23, metadata !11091, metadata !DIExpression()), !dbg !11090
%37 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 0, !dbg !11090
store i32 3, i32* %37, align 8, !dbg !11090
%38 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 1, !dbg !11090
store i32 1, i32* %38, align 4, !dbg !11090
%39 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !11090
%40 = getelementptr inbounds [3 x float], [3 x float]* %22, i64 0, i64 0, !dbg !11090
store float* %40, float** %39, align 8, !dbg !11090
call void @llvm.dbg.declare(metadata [3 x float]* %24, metadata !11092, metadata !DIExpression()), !dbg !11093
call void @llvm.dbg.declare(metadata %struct.Matrixf_t* %25, metadata !11094, metadata !DIExpression()), !dbg !11093
%41 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 0, !dbg !11093
store i32 3, i32* %41, align 8, !dbg !11093
%42 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 1, !dbg !11093
store i32 1, i32* %42, align 4, !dbg !11093
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %25, i32 0, i32 2, !dbg !11093
%44 = getelementptr inbounds [3 x float], [3 x float]* %24, i64 0, i64 0, !dbg !11093
store float* %44, float** %43, align 8, !dbg !11093
%45 = load i32, i32* %8, align 4, !dbg !11095
%46 = icmp slt i32 %45, 3, !dbg !11097
br i1 %46, label %47, label %48, !dbg !11098
47: ; preds = %4
store i64 0, i64* %5, align 8, !dbg !11099
br label %127, !dbg !11099
48: ; preds = %4
store i32 0, i32* %10, align 4, !dbg !11100
br label %49, !dbg !11102
49: ; preds = %96, %48
%50 = load i32, i32* %10, align 4, !dbg !11103
%51 = load i32, i32* %8, align 4, !dbg !11105
%52 = icmp slt i32 %50, %51, !dbg !11106
br i1 %52, label %53, label %99, !dbg !11107
53: ; preds = %49
call void @llvm.dbg.declare(metadata float* %26, metadata !11108, metadata !DIExpression()), !dbg !11110
%54 = load float*, float** %6, align 8, !dbg !11111
%55 = load i32, i32* %10, align 4, !dbg !11112
%56 = sext i32 %55 to i64, !dbg !11111
%57 = getelementptr inbounds float, float* %54, i64 %56, !dbg !11111
%58 = load float, float* %57, align 4, !dbg !11111
store float %58, float* %26, align 4, !dbg !11110
call void @llvm.dbg.declare(metadata float* %27, metadata !11113, metadata !DIExpression()), !dbg !11114
%59 = load float*, float** %7, align 8, !dbg !11115
%60 = load i32, i32* %10, align 4, !dbg !11116
%61 = sext i32 %60 to i64, !dbg !11115
%62 = getelementptr inbounds float, float* %59, i64 %61, !dbg !11115
%63 = load float, float* %62, align 4, !dbg !11115
store float %63, float* %27, align 4, !dbg !11114
call void @llvm.dbg.declare(metadata float* %28, metadata !11117, metadata !DIExpression()), !dbg !11118
%64 = load float, float* %26, align 4, !dbg !11119
%65 = load float, float* %26, align 4, !dbg !11120
%66 = fmul float %64, %65, !dbg !11121
store float %66, float* %28, align 4, !dbg !11118
%67 = load float, float* %26, align 4, !dbg !11122
%68 = load float, float* %14, align 4, !dbg !11123
%69 = fadd float %68, %67, !dbg !11123
store float %69, float* %14, align 4, !dbg !11123
%70 = load float, float* %27, align 4, !dbg !11124
%71 = load float, float* %17, align 4, !dbg !11125
%72 = fadd float %71, %70, !dbg !11125
store float %72, float* %17, align 4, !dbg !11125
%73 = load float, float* %28, align 4, !dbg !11126
%74 = load float, float* %13, align 4, !dbg !11127
%75 = fadd float %74, %73, !dbg !11127
store float %75, float* %13, align 4, !dbg !11127
%76 = load float, float* %28, align 4, !dbg !11128
%77 = load float, float* %26, align 4, !dbg !11129
%78 = fmul float %76, %77, !dbg !11130
%79 = load float, float* %12, align 4, !dbg !11131
%80 = fadd float %79, %78, !dbg !11131
store float %80, float* %12, align 4, !dbg !11131
%81 = load float, float* %28, align 4, !dbg !11132
%82 = load float, float* %28, align 4, !dbg !11133
%83 = fmul float %81, %82, !dbg !11134
%84 = load float, float* %11, align 4, !dbg !11135
%85 = fadd float %84, %83, !dbg !11135
store float %85, float* %11, align 4, !dbg !11135
%86 = load float, float* %26, align 4, !dbg !11136
%87 = load float, float* %27, align 4, !dbg !11137
%88 = fmul float %86, %87, !dbg !11138
%89 = load float, float* %16, align 4, !dbg !11139
%90 = fadd float %89, %88, !dbg !11139
store float %90, float* %16, align 4, !dbg !11139
%91 = load float, float* %28, align 4, !dbg !11140
%92 = load float, float* %27, align 4, !dbg !11141
%93 = fmul float %91, %92, !dbg !11142
%94 = load float, float* %15, align 4, !dbg !11143
%95 = fadd float %94, %93, !dbg !11143
store float %95, float* %15, align 4, !dbg !11143
br label %96, !dbg !11144
96: ; preds = %53
%97 = load i32, i32* %10, align 4, !dbg !11145
%98 = add nsw i32 %97, 1, !dbg !11145
store i32 %98, i32* %10, align 4, !dbg !11145
br label %49, !dbg !11146, !llvm.loop !11147
99: ; preds = %49
%100 = load float, float* %11, align 4, !dbg !11149
call void @matrixSetf(%struct.Matrixf_t* %19, i32 0, i32 0, float %100), !dbg !11150
%101 = load float, float* %12, align 4, !dbg !11151
call void @matrixSetf(%struct.Matrixf_t* %19, i32 0, i32 1, float %101), !dbg !11152
%102 = load float, float* %13, align 4, !dbg !11153
call void @matrixSetf(%struct.Matrixf_t* %19, i32 0, i32 2, float %102), !dbg !11154
%103 = load float, float* %12, align 4, !dbg !11155
call void @matrixSetf(%struct.Matrixf_t* %19, i32 1, i32 0, float %103), !dbg !11156
%104 = load float, float* %13, align 4, !dbg !11157
call void @matrixSetf(%struct.Matrixf_t* %19, i32 1, i32 1, float %104), !dbg !11158
%105 = load float, float* %14, align 4, !dbg !11159
call void @matrixSetf(%struct.Matrixf_t* %19, i32 1, i32 2, float %105), !dbg !11160
%106 = load float, float* %13, align 4, !dbg !11161
call void @matrixSetf(%struct.Matrixf_t* %19, i32 2, i32 0, float %106), !dbg !11162
%107 = load float, float* %14, align 4, !dbg !11163
call void @matrixSetf(%struct.Matrixf_t* %19, i32 2, i32 1, float %107), !dbg !11164
%108 = load i32, i32* %8, align 4, !dbg !11165
%109 = sitofp i32 %108 to float, !dbg !11166
call void @matrixSetf(%struct.Matrixf_t* %19, i32 2, i32 2, float %109), !dbg !11167
%110 = call i64 @matrixInversef(%struct.Matrixf_t* %19, %struct.Matrixf_t* %21), !dbg !11168
%111 = icmp ne i64 %110, 0, !dbg !11168
br i1 %111, label %113, label %112, !dbg !11170
112: ; preds = %99
store i64 0, i64* %5, align 8, !dbg !11171
br label %127, !dbg !11171
113: ; preds = %99
%114 = load float, float* %15, align 4, !dbg !11172
call void @matrixSetf(%struct.Matrixf_t* %23, i32 0, i32 0, float %114), !dbg !11173
%115 = load float, float* %16, align 4, !dbg !11174
call void @matrixSetf(%struct.Matrixf_t* %23, i32 0, i32 1, float %115), !dbg !11175
%116 = load float, float* %17, align 4, !dbg !11176
call void @matrixSetf(%struct.Matrixf_t* %23, i32 0, i32 2, float %116), !dbg !11177
%117 = call i64 @matrixMultiplyf(%struct.Matrixf_t* %21, %struct.Matrixf_t* %23, %struct.Matrixf_t* %25), !dbg !11178
%118 = call float @matrixGetf(%struct.Matrixf_t* %25, i32 0, i32 0), !dbg !11179
%119 = load float*, float** %9, align 8, !dbg !11180
%120 = getelementptr inbounds float, float* %119, i64 2, !dbg !11180
store float %118, float* %120, align 4, !dbg !11181
%121 = call float @matrixGetf(%struct.Matrixf_t* %25, i32 0, i32 1), !dbg !11182
%122 = load float*, float** %9, align 8, !dbg !11183
%123 = getelementptr inbounds float, float* %122, i64 1, !dbg !11183
store float %121, float* %123, align 4, !dbg !11184
%124 = call float @matrixGetf(%struct.Matrixf_t* %25, i32 0, i32 2), !dbg !11185
%125 = load float*, float** %9, align 8, !dbg !11186
%126 = getelementptr inbounds float, float* %125, i64 0, !dbg !11186
store float %124, float* %126, align 4, !dbg !11187
store i64 1, i64* %5, align 8, !dbg !11188
br label %127, !dbg !11188
127: ; preds = %113, %112, %47
%128 = load i64, i64* %5, align 8, !dbg !11189
ret i64 %128, !dbg !11189
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @gravity(double %0) #0 !dbg !11190 {
%2 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !11192, metadata !DIExpression()), !dbg !11193
%3 = load double, double* %2, align 8, !dbg !11194
%4 = call double @sin(double %3) #7, !dbg !11195
%5 = call double @gravityFromSinLat(double %4), !dbg !11196
ret double %5, !dbg !11197
}
; Function Attrs: nounwind
declare dso_local double @sin(double) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @gravityFromSinLat(double %0) #0 !dbg !11198 {
%2 = alloca double, align 8
%3 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !11199, metadata !DIExpression()), !dbg !11200
call void @llvm.dbg.declare(metadata double* %3, metadata !11201, metadata !DIExpression()), !dbg !11202
%4 = load double, double* %2, align 8, !dbg !11203
%5 = load double, double* %2, align 8, !dbg !11204
%6 = fmul double %4, %5, !dbg !11205
store double %6, double* %3, align 8, !dbg !11202
%7 = load double, double* %3, align 8, !dbg !11206
%8 = fmul double 0x3F5FA6C5A19E24B8, %7, !dbg !11207
%9 = fadd double 1.000000e+00, %8, !dbg !11208
%10 = fmul double 0x40238F86FD96B669, %9, !dbg !11209
%11 = load double, double* %3, align 8, !dbg !11210
%12 = fmul double 0x3F7B6B90F1FE9500, %11, !dbg !11211
%13 = fsub double 1.000000e+00, %12, !dbg !11212
%14 = call double @sqrt(double %13) #7, !dbg !11213
%15 = fdiv double %10, %14, !dbg !11214
ret double %15, !dbg !11215
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @radiusOfEWCurv(double %0) #0 !dbg !11216 {
%2 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !11217, metadata !DIExpression()), !dbg !11218
%3 = load double, double* %2, align 8, !dbg !11219
%4 = call double @sin(double %3) #7, !dbg !11220
%5 = call double @radiusOfEWCurvFromSinLat(double %4), !dbg !11221
ret double %5, !dbg !11222
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local double @radiusOfEWCurvFromSinLat(double %0) #0 !dbg !11223 {
%2 = alloca double, align 8
store double %0, double* %2, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !11224, metadata !DIExpression()), !dbg !11225
%3 = load double, double* %2, align 8, !dbg !11226
%4 = fmul double 0x3F7B6B90F1FE9500, %3, !dbg !11227
%5 = load double, double* %2, align 8, !dbg !11228
%6 = fmul double %4, %5, !dbg !11229
%7 = fsub double 1.000000e+00, %6, !dbg !11230
%8 = call double @sqrt(double %7) #7, !dbg !11231
%9 = fdiv double 0x415854A640000000, %8, !dbg !11232
ret double %9, !dbg !11233
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.llaTrig_t* @llaToTrig(double* %0, %struct.llaTrig_t* %1) #0 !dbg !11234 {
%3 = alloca double*, align 8
%4 = alloca %struct.llaTrig_t*, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !11248, metadata !DIExpression()), !dbg !11249
store %struct.llaTrig_t* %1, %struct.llaTrig_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.llaTrig_t** %4, metadata !11250, metadata !DIExpression()), !dbg !11251
%5 = load double*, double** %3, align 8, !dbg !11252
%6 = getelementptr inbounds double, double* %5, i64 0, !dbg !11252
%7 = load double, double* %6, align 8, !dbg !11252
%8 = call double @cos(double %7) #7, !dbg !11253
%9 = load %struct.llaTrig_t*, %struct.llaTrig_t** %4, align 8, !dbg !11254
%10 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %9, i32 0, i32 2, !dbg !11255
store double %8, double* %10, align 8, !dbg !11256
%11 = load double*, double** %3, align 8, !dbg !11257
%12 = getelementptr inbounds double, double* %11, i64 1, !dbg !11257
%13 = load double, double* %12, align 8, !dbg !11257
%14 = call double @cos(double %13) #7, !dbg !11258
%15 = load %struct.llaTrig_t*, %struct.llaTrig_t** %4, align 8, !dbg !11259
%16 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %15, i32 0, i32 3, !dbg !11260
store double %14, double* %16, align 8, !dbg !11261
%17 = load double*, double** %3, align 8, !dbg !11262
%18 = getelementptr inbounds double, double* %17, i64 0, !dbg !11262
%19 = load double, double* %18, align 8, !dbg !11262
%20 = call double @sin(double %19) #7, !dbg !11263
%21 = load %struct.llaTrig_t*, %struct.llaTrig_t** %4, align 8, !dbg !11264
%22 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %21, i32 0, i32 0, !dbg !11265
store double %20, double* %22, align 8, !dbg !11266
%23 = load double*, double** %3, align 8, !dbg !11267
%24 = getelementptr inbounds double, double* %23, i64 1, !dbg !11267
%25 = load double, double* %24, align 8, !dbg !11267
%26 = call double @sin(double %25) #7, !dbg !11268
%27 = load %struct.llaTrig_t*, %struct.llaTrig_t** %4, align 8, !dbg !11269
%28 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %27, i32 0, i32 1, !dbg !11270
store double %26, double* %28, align 8, !dbg !11271
%29 = load %struct.llaTrig_t*, %struct.llaTrig_t** %4, align 8, !dbg !11272
ret %struct.llaTrig_t* %29, !dbg !11273
}
; Function Attrs: nounwind
declare dso_local double @cos(double) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @llaToECEF(double* %0, double* %1) #0 !dbg !11274 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca %struct.llaTrig_t, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !11277, metadata !DIExpression()), !dbg !11278
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !11279, metadata !DIExpression()), !dbg !11280
call void @llvm.dbg.declare(metadata %struct.llaTrig_t* %5, metadata !11281, metadata !DIExpression()), !dbg !11282
%6 = load double*, double** %3, align 8, !dbg !11283
%7 = load double*, double** %4, align 8, !dbg !11284
call void @llaToECEFandTrig(double* %6, double* %7, %struct.llaTrig_t* %5), !dbg !11285
ret void, !dbg !11286
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @llaToECEFandTrig(double* %0, double* %1, %struct.llaTrig_t* %2) #0 !dbg !11287 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca %struct.llaTrig_t*, align 8
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !11290, metadata !DIExpression()), !dbg !11291
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !11292, metadata !DIExpression()), !dbg !11293
store %struct.llaTrig_t* %2, %struct.llaTrig_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.llaTrig_t** %6, metadata !11294, metadata !DIExpression()), !dbg !11295
%7 = load double*, double** %4, align 8, !dbg !11296
%8 = getelementptr inbounds double, double* %7, i64 2, !dbg !11296
%9 = load double, double* %8, align 8, !dbg !11296
%10 = load double*, double** %5, align 8, !dbg !11297
%11 = load double*, double** %4, align 8, !dbg !11298
%12 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11299
%13 = call %struct.llaTrig_t* @llaToTrig(double* %11, %struct.llaTrig_t* %12), !dbg !11300
call void @llaTrigToECEF(double %9, double* %10, %struct.llaTrig_t* %13), !dbg !11301
ret void, !dbg !11302
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @llaTrigToECEF(double %0, double* %1, %struct.llaTrig_t* %2) #0 !dbg !11303 {
%4 = alloca double, align 8
%5 = alloca double*, align 8
%6 = alloca %struct.llaTrig_t*, align 8
%7 = alloca double, align 8
store double %0, double* %4, align 8
call void @llvm.dbg.declare(metadata double* %4, metadata !11306, metadata !DIExpression()), !dbg !11307
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !11308, metadata !DIExpression()), !dbg !11309
store %struct.llaTrig_t* %2, %struct.llaTrig_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.llaTrig_t** %6, metadata !11310, metadata !DIExpression()), !dbg !11311
call void @llvm.dbg.declare(metadata double* %7, metadata !11312, metadata !DIExpression()), !dbg !11313
%8 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11314
%9 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %8, i32 0, i32 0, !dbg !11315
%10 = load double, double* %9, align 8, !dbg !11315
%11 = call double @radiusOfEWCurvFromSinLat(double %10), !dbg !11316
store double %11, double* %7, align 8, !dbg !11313
%12 = load double, double* %7, align 8, !dbg !11317
%13 = load double, double* %4, align 8, !dbg !11318
%14 = fadd double %12, %13, !dbg !11319
%15 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11320
%16 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %15, i32 0, i32 2, !dbg !11321
%17 = load double, double* %16, align 8, !dbg !11321
%18 = fmul double %14, %17, !dbg !11322
%19 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11323
%20 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %19, i32 0, i32 3, !dbg !11324
%21 = load double, double* %20, align 8, !dbg !11324
%22 = fmul double %18, %21, !dbg !11325
%23 = load double*, double** %5, align 8, !dbg !11326
%24 = getelementptr inbounds double, double* %23, i64 0, !dbg !11326
store double %22, double* %24, align 8, !dbg !11327
%25 = load double, double* %7, align 8, !dbg !11328
%26 = load double, double* %4, align 8, !dbg !11329
%27 = fadd double %25, %26, !dbg !11330
%28 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11331
%29 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %28, i32 0, i32 2, !dbg !11332
%30 = load double, double* %29, align 8, !dbg !11332
%31 = fmul double %27, %30, !dbg !11333
%32 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11334
%33 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %32, i32 0, i32 1, !dbg !11335
%34 = load double, double* %33, align 8, !dbg !11335
%35 = fmul double %31, %34, !dbg !11336
%36 = load double*, double** %5, align 8, !dbg !11337
%37 = getelementptr inbounds double, double* %36, i64 1, !dbg !11337
store double %35, double* %37, align 8, !dbg !11338
%38 = load double, double* %7, align 8, !dbg !11339
%39 = fmul double %38, 0x3FEFC928DE1C02D6, !dbg !11340
%40 = load double, double* %4, align 8, !dbg !11341
%41 = fadd double %39, %40, !dbg !11342
%42 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11343
%43 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %42, i32 0, i32 0, !dbg !11344
%44 = load double, double* %43, align 8, !dbg !11344
%45 = fmul double %41, %44, !dbg !11345
%46 = load double*, double** %5, align 8, !dbg !11346
%47 = getelementptr inbounds double, double* %46, i64 2, !dbg !11346
store double %45, double* %47, align 8, !dbg !11347
ret void, !dbg !11348
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @ecefToLLA(double* %0, double* %1) #0 !dbg !11349 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca %struct.llaTrig_t, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !11350, metadata !DIExpression()), !dbg !11351
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !11352, metadata !DIExpression()), !dbg !11353
call void @llvm.dbg.declare(metadata %struct.llaTrig_t* %5, metadata !11354, metadata !DIExpression()), !dbg !11355
%6 = load double*, double** %3, align 8, !dbg !11356
%7 = load double*, double** %4, align 8, !dbg !11357
call void @ecefToLLAandTrig(double* %6, double* %7, %struct.llaTrig_t* %5), !dbg !11358
ret void, !dbg !11359
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @ecefToLLAandTrig(double* %0, double* %1, %struct.llaTrig_t* %2) #0 !dbg !11360 {
%4 = alloca double*, align 8
%5 = alloca double*, align 8
%6 = alloca %struct.llaTrig_t*, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
%9 = alloca double, align 8
%10 = alloca double, align 8
%11 = alloca double, align 8
%12 = alloca double, align 8
%13 = alloca double, align 8
%14 = alloca double, align 8
store double* %0, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !11361, metadata !DIExpression()), !dbg !11362
store double* %1, double** %5, align 8
call void @llvm.dbg.declare(metadata double** %5, metadata !11363, metadata !DIExpression()), !dbg !11364
store %struct.llaTrig_t* %2, %struct.llaTrig_t** %6, align 8
call void @llvm.dbg.declare(metadata %struct.llaTrig_t** %6, metadata !11365, metadata !DIExpression()), !dbg !11366
call void @llvm.dbg.declare(metadata double* %7, metadata !11367, metadata !DIExpression()), !dbg !11368
%15 = load double*, double** %4, align 8, !dbg !11369
%16 = getelementptr inbounds double, double* %15, i64 0, !dbg !11369
%17 = load double, double* %16, align 8, !dbg !11369
%18 = load double*, double** %4, align 8, !dbg !11370
%19 = getelementptr inbounds double, double* %18, i64 0, !dbg !11370
%20 = load double, double* %19, align 8, !dbg !11370
%21 = fmul double %17, %20, !dbg !11371
%22 = load double*, double** %4, align 8, !dbg !11372
%23 = getelementptr inbounds double, double* %22, i64 1, !dbg !11372
%24 = load double, double* %23, align 8, !dbg !11372
%25 = load double*, double** %4, align 8, !dbg !11373
%26 = getelementptr inbounds double, double* %25, i64 1, !dbg !11373
%27 = load double, double* %26, align 8, !dbg !11373
%28 = fmul double %24, %27, !dbg !11374
%29 = fadd double %21, %28, !dbg !11375
store double %29, double* %7, align 8, !dbg !11368
%30 = load double, double* %7, align 8, !dbg !11376
%31 = fcmp oeq double %30, 0.000000e+00, !dbg !11378
br i1 %31, label %32, label %78, !dbg !11379
32: ; preds = %3
%33 = load double*, double** %4, align 8, !dbg !11380
%34 = getelementptr inbounds double, double* %33, i64 2, !dbg !11380
%35 = load double, double* %34, align 8, !dbg !11380
%36 = call double @llvm.fabs.f64(double %35), !dbg !11382
%37 = fsub double %36, 0x41583FC4141C97D0, !dbg !11383
%38 = load double*, double** %5, align 8, !dbg !11384
%39 = getelementptr inbounds double, double* %38, i64 2, !dbg !11384
store double %37, double* %39, align 8, !dbg !11385
%40 = load double*, double** %5, align 8, !dbg !11386
%41 = getelementptr inbounds double, double* %40, i64 1, !dbg !11386
store double 0.000000e+00, double* %41, align 8, !dbg !11387
%42 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11388
%43 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %42, i32 0, i32 3, !dbg !11389
store double 1.000000e+00, double* %43, align 8, !dbg !11390
%44 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11391
%45 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %44, i32 0, i32 1, !dbg !11392
store double 0.000000e+00, double* %45, align 8, !dbg !11393
%46 = load double*, double** %4, align 8, !dbg !11394
%47 = getelementptr inbounds double, double* %46, i64 2, !dbg !11394
%48 = load double, double* %47, align 8, !dbg !11394
%49 = fcmp oeq double %48, 0.000000e+00, !dbg !11396
br i1 %49, label %50, label %57, !dbg !11397
50: ; preds = %32
%51 = load double*, double** %5, align 8, !dbg !11398
%52 = getelementptr inbounds double, double* %51, i64 0, !dbg !11398
store double 0.000000e+00, double* %52, align 8, !dbg !11400
%53 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11401
%54 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %53, i32 0, i32 2, !dbg !11402
store double 1.000000e+00, double* %54, align 8, !dbg !11403
%55 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11404
%56 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %55, i32 0, i32 0, !dbg !11405
store double 0.000000e+00, double* %56, align 8, !dbg !11406
br label %77, !dbg !11407
57: ; preds = %32
%58 = load double*, double** %4, align 8, !dbg !11408
%59 = getelementptr inbounds double, double* %58, i64 2, !dbg !11408
%60 = load double, double* %59, align 8, !dbg !11408
%61 = fcmp ogt double %60, 0.000000e+00, !dbg !11410
br i1 %61, label %62, label %69, !dbg !11411
62: ; preds = %57
%63 = load double*, double** %5, align 8, !dbg !11412
%64 = getelementptr inbounds double, double* %63, i64 0, !dbg !11412
store double 0x3FF921FB54442D18, double* %64, align 8, !dbg !11414
%65 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11415
%66 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %65, i32 0, i32 2, !dbg !11416
store double 0.000000e+00, double* %66, align 8, !dbg !11417
%67 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11418
%68 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %67, i32 0, i32 0, !dbg !11419
store double 1.000000e+00, double* %68, align 8, !dbg !11420
br label %76, !dbg !11421
69: ; preds = %57
%70 = load double*, double** %5, align 8, !dbg !11422
%71 = getelementptr inbounds double, double* %70, i64 0, !dbg !11422
store double 0xBFF921FB54442D18, double* %71, align 8, !dbg !11424
%72 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11425
%73 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %72, i32 0, i32 2, !dbg !11426
store double 0.000000e+00, double* %73, align 8, !dbg !11427
%74 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11428
%75 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %74, i32 0, i32 0, !dbg !11429
store double -1.000000e+00, double* %75, align 8, !dbg !11430
br label %76
76: ; preds = %69, %62
br label %77
77: ; preds = %76, %50
br label %183, !dbg !11431
78: ; preds = %3
call void @llvm.dbg.declare(metadata double* %8, metadata !11432, metadata !DIExpression()), !dbg !11434
%79 = load double, double* %7, align 8, !dbg !11435
%80 = call double @sqrt(double %79) #7, !dbg !11436
store double %80, double* %8, align 8, !dbg !11434
call void @llvm.dbg.declare(metadata double* %9, metadata !11437, metadata !DIExpression()), !dbg !11438
%81 = load double*, double** %4, align 8, !dbg !11439
%82 = getelementptr inbounds double, double* %81, i64 2, !dbg !11439
%83 = load double, double* %82, align 8, !dbg !11439
%84 = fmul double %83, 0x415854A640000000, !dbg !11440
%85 = load double, double* %8, align 8, !dbg !11441
%86 = fmul double %85, 0x41583FC4141C97D0, !dbg !11442
%87 = call double @atan2(double %84, double %86) #7, !dbg !11443
store double %87, double* %9, align 8, !dbg !11438
call void @llvm.dbg.declare(metadata double* %10, metadata !11444, metadata !DIExpression()), !dbg !11445
%88 = load double, double* %9, align 8, !dbg !11446
%89 = call double @sin(double %88) #7, !dbg !11447
store double %89, double* %10, align 8, !dbg !11445
call void @llvm.dbg.declare(metadata double* %11, metadata !11448, metadata !DIExpression()), !dbg !11449
%90 = load double, double* %9, align 8, !dbg !11450
%91 = call double @cos(double %90) #7, !dbg !11451
store double %91, double* %11, align 8, !dbg !11449
call void @llvm.dbg.declare(metadata double* %12, metadata !11452, metadata !DIExpression()), !dbg !11453
%92 = load double*, double** %4, align 8, !dbg !11454
%93 = getelementptr inbounds double, double* %92, i64 2, !dbg !11454
%94 = load double, double* %93, align 8, !dbg !11454
%95 = load double, double* %10, align 8, !dbg !11455
%96 = fmul double 0x40E4EB29F7EAC4E4, %95, !dbg !11456
%97 = load double, double* %10, align 8, !dbg !11457
%98 = fmul double %96, %97, !dbg !11458
%99 = load double, double* %10, align 8, !dbg !11459
%100 = fmul double %98, %99, !dbg !11460
%101 = fadd double %94, %100, !dbg !11461
store double %101, double* %12, align 8, !dbg !11453
call void @llvm.dbg.declare(metadata double* %13, metadata !11462, metadata !DIExpression()), !dbg !11463
%102 = load double, double* %8, align 8, !dbg !11464
%103 = load double, double* %11, align 8, !dbg !11465
%104 = fmul double 0x40E4D93586D13544, %103, !dbg !11466
%105 = load double, double* %11, align 8, !dbg !11467
%106 = fmul double %104, %105, !dbg !11468
%107 = load double, double* %11, align 8, !dbg !11469
%108 = fmul double %106, %107, !dbg !11470
%109 = fsub double %102, %108, !dbg !11471
store double %109, double* %13, align 8, !dbg !11463
call void @llvm.dbg.declare(metadata double* %14, metadata !11472, metadata !DIExpression()), !dbg !11473
%110 = load double, double* %12, align 8, !dbg !11474
%111 = load double, double* %12, align 8, !dbg !11475
%112 = fmul double %110, %111, !dbg !11476
%113 = load double, double* %13, align 8, !dbg !11477
%114 = load double, double* %13, align 8, !dbg !11478
%115 = fmul double %113, %114, !dbg !11479
%116 = fadd double %112, %115, !dbg !11480
%117 = call double @sqrt(double %116) #7, !dbg !11481
store double %117, double* %14, align 8, !dbg !11473
%118 = load double, double* %12, align 8, !dbg !11482
%119 = load double, double* %13, align 8, !dbg !11483
%120 = call double @atan2(double %118, double %119) #7, !dbg !11484
%121 = load double*, double** %5, align 8, !dbg !11485
%122 = getelementptr inbounds double, double* %121, i64 0, !dbg !11485
store double %120, double* %122, align 8, !dbg !11486
%123 = load double, double* %12, align 8, !dbg !11487
%124 = load double, double* %14, align 8, !dbg !11488
%125 = fdiv double %123, %124, !dbg !11489
%126 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11490
%127 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %126, i32 0, i32 0, !dbg !11491
store double %125, double* %127, align 8, !dbg !11492
%128 = load double, double* %13, align 8, !dbg !11493
%129 = load double, double* %14, align 8, !dbg !11494
%130 = fdiv double %128, %129, !dbg !11495
%131 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11496
%132 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %131, i32 0, i32 2, !dbg !11497
store double %130, double* %132, align 8, !dbg !11498
%133 = load double*, double** %4, align 8, !dbg !11499
%134 = getelementptr inbounds double, double* %133, i64 1, !dbg !11499
%135 = load double, double* %134, align 8, !dbg !11499
%136 = load double*, double** %4, align 8, !dbg !11500
%137 = getelementptr inbounds double, double* %136, i64 0, !dbg !11500
%138 = load double, double* %137, align 8, !dbg !11500
%139 = call double @atan2(double %135, double %138) #7, !dbg !11501
%140 = load double*, double** %5, align 8, !dbg !11502
%141 = getelementptr inbounds double, double* %140, i64 1, !dbg !11502
store double %139, double* %141, align 8, !dbg !11503
%142 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11504
%143 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %142, i32 0, i32 2, !dbg !11506
%144 = load double, double* %143, align 8, !dbg !11506
%145 = call double @llvm.fabs.f64(double %144), !dbg !11507
%146 = fcmp ogt double %145, 1.000000e-03, !dbg !11508
br i1 %146, label %147, label %160, !dbg !11509
147: ; preds = %78
%148 = load double, double* %8, align 8, !dbg !11510
%149 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11511
%150 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %149, i32 0, i32 2, !dbg !11512
%151 = load double, double* %150, align 8, !dbg !11512
%152 = fdiv double %148, %151, !dbg !11513
%153 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11514
%154 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %153, i32 0, i32 0, !dbg !11515
%155 = load double, double* %154, align 8, !dbg !11515
%156 = call double @radiusOfEWCurvFromSinLat(double %155), !dbg !11516
%157 = fsub double %152, %156, !dbg !11517
%158 = load double*, double** %5, align 8, !dbg !11518
%159 = getelementptr inbounds double, double* %158, i64 2, !dbg !11518
store double %157, double* %159, align 8, !dbg !11519
br label %168, !dbg !11518
160: ; preds = %78
%161 = load double*, double** %4, align 8, !dbg !11520
%162 = getelementptr inbounds double, double* %161, i64 2, !dbg !11520
%163 = load double, double* %162, align 8, !dbg !11520
%164 = call double @llvm.fabs.f64(double %163), !dbg !11521
%165 = fsub double %164, 0x41583FC4141C97D0, !dbg !11522
%166 = load double*, double** %5, align 8, !dbg !11523
%167 = getelementptr inbounds double, double* %166, i64 2, !dbg !11523
store double %165, double* %167, align 8, !dbg !11524
br label %168
168: ; preds = %160, %147
%169 = load double*, double** %4, align 8, !dbg !11525
%170 = getelementptr inbounds double, double* %169, i64 0, !dbg !11525
%171 = load double, double* %170, align 8, !dbg !11525
%172 = load double, double* %8, align 8, !dbg !11526
%173 = fdiv double %171, %172, !dbg !11527
%174 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11528
%175 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %174, i32 0, i32 3, !dbg !11529
store double %173, double* %175, align 8, !dbg !11530
%176 = load double*, double** %4, align 8, !dbg !11531
%177 = getelementptr inbounds double, double* %176, i64 1, !dbg !11531
%178 = load double, double* %177, align 8, !dbg !11531
%179 = load double, double* %8, align 8, !dbg !11532
%180 = fdiv double %178, %179, !dbg !11533
%181 = load %struct.llaTrig_t*, %struct.llaTrig_t** %6, align 8, !dbg !11534
%182 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %181, i32 0, i32 1, !dbg !11535
store double %180, double* %182, align 8, !dbg !11536
br label %183
183: ; preds = %168, %77
ret void, !dbg !11537
}
; Function Attrs: nounwind
declare dso_local double @atan2(double, double) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @geodeticToGeocentric(double* %0, double* %1) #0 !dbg !11538 {
%3 = alloca double*, align 8
%4 = alloca double*, align 8
%5 = alloca double, align 8
%6 = alloca double, align 8
%7 = alloca double, align 8
%8 = alloca double, align 8
store double* %0, double** %3, align 8
call void @llvm.dbg.declare(metadata double** %3, metadata !11539, metadata !DIExpression()), !dbg !11540
store double* %1, double** %4, align 8
call void @llvm.dbg.declare(metadata double** %4, metadata !11541, metadata !DIExpression()), !dbg !11542
call void @llvm.dbg.declare(metadata double* %5, metadata !11543, metadata !DIExpression()), !dbg !11544
%9 = load double*, double** %3, align 8, !dbg !11545
%10 = getelementptr inbounds double, double* %9, i64 0, !dbg !11545
%11 = load double, double* %10, align 8, !dbg !11545
%12 = call double @sin(double %11) #7, !dbg !11546
store double %12, double* %5, align 8, !dbg !11544
call void @llvm.dbg.declare(metadata double* %6, metadata !11547, metadata !DIExpression()), !dbg !11548
%13 = load double, double* %5, align 8, !dbg !11549
%14 = call double @radiusOfEWCurvFromSinLat(double %13), !dbg !11550
store double %14, double* %6, align 8, !dbg !11548
call void @llvm.dbg.declare(metadata double* %7, metadata !11551, metadata !DIExpression()), !dbg !11552
%15 = load double, double* %6, align 8, !dbg !11553
%16 = load double*, double** %3, align 8, !dbg !11554
%17 = getelementptr inbounds double, double* %16, i64 2, !dbg !11554
%18 = load double, double* %17, align 8, !dbg !11554
%19 = fadd double %15, %18, !dbg !11555
%20 = load double*, double** %3, align 8, !dbg !11556
%21 = getelementptr inbounds double, double* %20, i64 0, !dbg !11556
%22 = load double, double* %21, align 8, !dbg !11556
%23 = call double @cos(double %22) #7, !dbg !11557
%24 = fmul double %19, %23, !dbg !11558
store double %24, double* %7, align 8, !dbg !11552
call void @llvm.dbg.declare(metadata double* %8, metadata !11559, metadata !DIExpression()), !dbg !11560
%25 = load double, double* %6, align 8, !dbg !11561
%26 = fmul double %25, 0x3FEFC928DE1C02D6, !dbg !11562
%27 = load double*, double** %3, align 8, !dbg !11563
%28 = getelementptr inbounds double, double* %27, i64 2, !dbg !11563
%29 = load double, double* %28, align 8, !dbg !11563
%30 = fadd double %26, %29, !dbg !11564
%31 = load double, double* %5, align 8, !dbg !11565
%32 = fmul double %30, %31, !dbg !11566
store double %32, double* %8, align 8, !dbg !11560
%33 = load double, double* %7, align 8, !dbg !11567
%34 = load double, double* %7, align 8, !dbg !11568
%35 = fmul double %33, %34, !dbg !11569
%36 = load double, double* %8, align 8, !dbg !11570
%37 = load double, double* %8, align 8, !dbg !11571
%38 = fmul double %36, %37, !dbg !11572
%39 = fadd double %35, %38, !dbg !11573
%40 = call double @sqrt(double %39) #7, !dbg !11574
%41 = load double*, double** %4, align 8, !dbg !11575
%42 = getelementptr inbounds double, double* %41, i64 2, !dbg !11575
store double %40, double* %42, align 8, !dbg !11576
%43 = load double, double* %8, align 8, !dbg !11577
%44 = load double*, double** %4, align 8, !dbg !11578
%45 = getelementptr inbounds double, double* %44, i64 2, !dbg !11578
%46 = load double, double* %45, align 8, !dbg !11578
%47 = fdiv double %43, %46, !dbg !11579
%48 = call double @asin(double %47) #7, !dbg !11580
%49 = load double*, double** %4, align 8, !dbg !11581
%50 = getelementptr inbounds double, double* %49, i64 0, !dbg !11581
store double %48, double* %50, align 8, !dbg !11582
%51 = load double*, double** %3, align 8, !dbg !11583
%52 = getelementptr inbounds double, double* %51, i64 1, !dbg !11583
%53 = load double, double* %52, align 8, !dbg !11583
%54 = load double*, double** %4, align 8, !dbg !11584
%55 = getelementptr inbounds double, double* %54, i64 1, !dbg !11584
store double %53, double* %55, align 8, !dbg !11585
ret void, !dbg !11586
}
; Function Attrs: nounwind
declare dso_local double @asin(double) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local i64 @testEarthPosition() #0 !dbg !11587 {
%1 = alloca i64, align 8
%2 = alloca double, align 8
%3 = alloca [3 x double], align 16
%4 = alloca [3 x double], align 16
%5 = alloca %struct.llaTrig_t, align 8
call void @llvm.dbg.declare(metadata double* %2, metadata !11589, metadata !DIExpression()), !dbg !11590
store double 0.000000e+00, double* %2, align 8, !dbg !11590
call void @llvm.dbg.declare(metadata [3 x double]* %3, metadata !11591, metadata !DIExpression()), !dbg !11592
%6 = bitcast [3 x double]* %3 to i8*, !dbg !11592
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %6, i8* align 16 bitcast ([3 x double]* @__const.testEarthPosition.posECEF to i8*), i64 24, i1 false), !dbg !11592
call void @llvm.dbg.declare(metadata [3 x double]* %4, metadata !11593, metadata !DIExpression()), !dbg !11594
call void @llvm.dbg.declare(metadata %struct.llaTrig_t* %5, metadata !11595, metadata !DIExpression()), !dbg !11596
%7 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11597
%8 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11598
call void @ecefToLLAandTrig(double* %7, double* %8, %struct.llaTrig_t* %5), !dbg !11599
%9 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11600
%10 = load double, double* %9, align 16, !dbg !11600
%11 = fsub double 0.000000e+00, %10, !dbg !11601
%12 = call double @llvm.fabs.f64(double %11), !dbg !11602
%13 = fmul double %12, 0x41584DB0315EDD45, !dbg !11603
%14 = load double, double* %2, align 8, !dbg !11604
%15 = fadd double %14, %13, !dbg !11604
store double %15, double* %2, align 8, !dbg !11604
%16 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 1, !dbg !11605
%17 = load double, double* %16, align 8, !dbg !11605
%18 = fsub double 0.000000e+00, %17, !dbg !11606
%19 = call double @llvm.fabs.f64(double %18), !dbg !11607
%20 = fmul double %19, 0x41584DB0315EDD45, !dbg !11608
%21 = load double, double* %2, align 8, !dbg !11609
%22 = fadd double %21, %20, !dbg !11609
store double %22, double* %2, align 8, !dbg !11609
%23 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 2, !dbg !11610
%24 = load double, double* %23, align 16, !dbg !11610
%25 = fsub double 0.000000e+00, %24, !dbg !11611
%26 = call double @llvm.fabs.f64(double %25), !dbg !11612
%27 = load double, double* %2, align 8, !dbg !11613
%28 = fadd double %27, %26, !dbg !11613
store double %28, double* %2, align 8, !dbg !11613
%29 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11614
%30 = load double, double* %29, align 8, !dbg !11614
%31 = fsub double 1.000000e+00, %30, !dbg !11615
%32 = call double @llvm.fabs.f64(double %31), !dbg !11616
%33 = load double, double* %2, align 8, !dbg !11617
%34 = fadd double %33, %32, !dbg !11617
store double %34, double* %2, align 8, !dbg !11617
%35 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11618
%36 = load double, double* %35, align 8, !dbg !11618
%37 = fsub double 1.000000e+00, %36, !dbg !11619
%38 = call double @llvm.fabs.f64(double %37), !dbg !11620
%39 = load double, double* %2, align 8, !dbg !11621
%40 = fadd double %39, %38, !dbg !11621
store double %40, double* %2, align 8, !dbg !11621
%41 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11622
%42 = load double, double* %41, align 8, !dbg !11622
%43 = fsub double 0.000000e+00, %42, !dbg !11623
%44 = call double @llvm.fabs.f64(double %43), !dbg !11624
%45 = load double, double* %2, align 8, !dbg !11625
%46 = fadd double %45, %44, !dbg !11625
store double %46, double* %2, align 8, !dbg !11625
%47 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11626
%48 = load double, double* %47, align 8, !dbg !11626
%49 = fsub double 0.000000e+00, %48, !dbg !11627
%50 = call double @llvm.fabs.f64(double %49), !dbg !11628
%51 = load double, double* %2, align 8, !dbg !11629
%52 = fadd double %51, %50, !dbg !11629
store double %52, double* %2, align 8, !dbg !11629
%53 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11630
%54 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11631
call void @llaToECEFandTrig(double* %53, double* %54, %struct.llaTrig_t* %5), !dbg !11632
%55 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11633
%56 = load double, double* %55, align 16, !dbg !11633
%57 = fsub double 0x415854A640000000, %56, !dbg !11634
%58 = call double @llvm.fabs.f64(double %57), !dbg !11635
%59 = load double, double* %2, align 8, !dbg !11636
%60 = fadd double %59, %58, !dbg !11636
store double %60, double* %2, align 8, !dbg !11636
%61 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 1, !dbg !11637
%62 = load double, double* %61, align 8, !dbg !11637
%63 = fsub double 0.000000e+00, %62, !dbg !11638
%64 = call double @llvm.fabs.f64(double %63), !dbg !11639
%65 = load double, double* %2, align 8, !dbg !11640
%66 = fadd double %65, %64, !dbg !11640
store double %66, double* %2, align 8, !dbg !11640
%67 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 2, !dbg !11641
%68 = load double, double* %67, align 16, !dbg !11641
%69 = fsub double 0.000000e+00, %68, !dbg !11642
%70 = call double @llvm.fabs.f64(double %69), !dbg !11643
%71 = load double, double* %2, align 8, !dbg !11644
%72 = fadd double %71, %70, !dbg !11644
store double %72, double* %2, align 8, !dbg !11644
%73 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11645
%74 = load double, double* %73, align 8, !dbg !11645
%75 = fsub double 1.000000e+00, %74, !dbg !11646
%76 = call double @llvm.fabs.f64(double %75), !dbg !11647
%77 = load double, double* %2, align 8, !dbg !11648
%78 = fadd double %77, %76, !dbg !11648
store double %78, double* %2, align 8, !dbg !11648
%79 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11649
%80 = load double, double* %79, align 8, !dbg !11649
%81 = fsub double 1.000000e+00, %80, !dbg !11650
%82 = call double @llvm.fabs.f64(double %81), !dbg !11651
%83 = load double, double* %2, align 8, !dbg !11652
%84 = fadd double %83, %82, !dbg !11652
store double %84, double* %2, align 8, !dbg !11652
%85 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11653
%86 = load double, double* %85, align 8, !dbg !11653
%87 = fsub double 0.000000e+00, %86, !dbg !11654
%88 = call double @llvm.fabs.f64(double %87), !dbg !11655
%89 = load double, double* %2, align 8, !dbg !11656
%90 = fadd double %89, %88, !dbg !11656
store double %90, double* %2, align 8, !dbg !11656
%91 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11657
%92 = load double, double* %91, align 8, !dbg !11657
%93 = fsub double 0.000000e+00, %92, !dbg !11658
%94 = call double @llvm.fabs.f64(double %93), !dbg !11659
%95 = load double, double* %2, align 8, !dbg !11660
%96 = fadd double %95, %94, !dbg !11660
store double %96, double* %2, align 8, !dbg !11660
%97 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11661
store double 0.000000e+00, double* %97, align 16, !dbg !11662
%98 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 1, !dbg !11663
store double 0x415854A640000000, double* %98, align 8, !dbg !11664
%99 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11665
%100 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11666
call void @ecefToLLAandTrig(double* %99, double* %100, %struct.llaTrig_t* %5), !dbg !11667
%101 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11668
%102 = load double, double* %101, align 16, !dbg !11668
%103 = fsub double 0.000000e+00, %102, !dbg !11669
%104 = call double @llvm.fabs.f64(double %103), !dbg !11670
%105 = fmul double %104, 0x41584DB0315EDD45, !dbg !11671
%106 = load double, double* %2, align 8, !dbg !11672
%107 = fadd double %106, %105, !dbg !11672
store double %107, double* %2, align 8, !dbg !11672
%108 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 1, !dbg !11673
%109 = load double, double* %108, align 8, !dbg !11673
%110 = fsub double 0x3FF921FB54442D18, %109, !dbg !11674
%111 = call double @llvm.fabs.f64(double %110), !dbg !11675
%112 = fmul double %111, 0x41584DB0315EDD45, !dbg !11676
%113 = load double, double* %2, align 8, !dbg !11677
%114 = fadd double %113, %112, !dbg !11677
store double %114, double* %2, align 8, !dbg !11677
%115 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 2, !dbg !11678
%116 = load double, double* %115, align 16, !dbg !11678
%117 = fsub double 0.000000e+00, %116, !dbg !11679
%118 = call double @llvm.fabs.f64(double %117), !dbg !11680
%119 = load double, double* %2, align 8, !dbg !11681
%120 = fadd double %119, %118, !dbg !11681
store double %120, double* %2, align 8, !dbg !11681
%121 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11682
%122 = load double, double* %121, align 8, !dbg !11682
%123 = fsub double 1.000000e+00, %122, !dbg !11683
%124 = call double @llvm.fabs.f64(double %123), !dbg !11684
%125 = load double, double* %2, align 8, !dbg !11685
%126 = fadd double %125, %124, !dbg !11685
store double %126, double* %2, align 8, !dbg !11685
%127 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11686
%128 = load double, double* %127, align 8, !dbg !11686
%129 = fsub double 0.000000e+00, %128, !dbg !11687
%130 = call double @llvm.fabs.f64(double %129), !dbg !11688
%131 = load double, double* %2, align 8, !dbg !11689
%132 = fadd double %131, %130, !dbg !11689
store double %132, double* %2, align 8, !dbg !11689
%133 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11690
%134 = load double, double* %133, align 8, !dbg !11690
%135 = fsub double 0.000000e+00, %134, !dbg !11691
%136 = call double @llvm.fabs.f64(double %135), !dbg !11692
%137 = load double, double* %2, align 8, !dbg !11693
%138 = fadd double %137, %136, !dbg !11693
store double %138, double* %2, align 8, !dbg !11693
%139 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11694
%140 = load double, double* %139, align 8, !dbg !11694
%141 = fsub double 1.000000e+00, %140, !dbg !11695
%142 = call double @llvm.fabs.f64(double %141), !dbg !11696
%143 = load double, double* %2, align 8, !dbg !11697
%144 = fadd double %143, %142, !dbg !11697
store double %144, double* %2, align 8, !dbg !11697
%145 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11698
%146 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11699
call void @llaToECEFandTrig(double* %145, double* %146, %struct.llaTrig_t* %5), !dbg !11700
%147 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 1, !dbg !11701
%148 = load double, double* %147, align 8, !dbg !11701
%149 = fsub double 0x415854A640000000, %148, !dbg !11702
%150 = call double @llvm.fabs.f64(double %149), !dbg !11703
%151 = load double, double* %2, align 8, !dbg !11704
%152 = fadd double %151, %150, !dbg !11704
store double %152, double* %2, align 8, !dbg !11704
%153 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11705
%154 = load double, double* %153, align 16, !dbg !11705
%155 = fsub double 0.000000e+00, %154, !dbg !11706
%156 = call double @llvm.fabs.f64(double %155), !dbg !11707
%157 = load double, double* %2, align 8, !dbg !11708
%158 = fadd double %157, %156, !dbg !11708
store double %158, double* %2, align 8, !dbg !11708
%159 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 2, !dbg !11709
%160 = load double, double* %159, align 16, !dbg !11709
%161 = fsub double 0.000000e+00, %160, !dbg !11710
%162 = call double @llvm.fabs.f64(double %161), !dbg !11711
%163 = load double, double* %2, align 8, !dbg !11712
%164 = fadd double %163, %162, !dbg !11712
store double %164, double* %2, align 8, !dbg !11712
%165 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11713
%166 = load double, double* %165, align 8, !dbg !11713
%167 = fsub double 1.000000e+00, %166, !dbg !11714
%168 = call double @llvm.fabs.f64(double %167), !dbg !11715
%169 = load double, double* %2, align 8, !dbg !11716
%170 = fadd double %169, %168, !dbg !11716
store double %170, double* %2, align 8, !dbg !11716
%171 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11717
%172 = load double, double* %171, align 8, !dbg !11717
%173 = fsub double 0.000000e+00, %172, !dbg !11718
%174 = call double @llvm.fabs.f64(double %173), !dbg !11719
%175 = load double, double* %2, align 8, !dbg !11720
%176 = fadd double %175, %174, !dbg !11720
store double %176, double* %2, align 8, !dbg !11720
%177 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11721
%178 = load double, double* %177, align 8, !dbg !11721
%179 = fsub double 0.000000e+00, %178, !dbg !11722
%180 = call double @llvm.fabs.f64(double %179), !dbg !11723
%181 = load double, double* %2, align 8, !dbg !11724
%182 = fadd double %181, %180, !dbg !11724
store double %182, double* %2, align 8, !dbg !11724
%183 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11725
%184 = load double, double* %183, align 8, !dbg !11725
%185 = fsub double 1.000000e+00, %184, !dbg !11726
%186 = call double @llvm.fabs.f64(double %185), !dbg !11727
%187 = load double, double* %2, align 8, !dbg !11728
%188 = fadd double %187, %186, !dbg !11728
store double %188, double* %2, align 8, !dbg !11728
%189 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11729
store double 0.000000e+00, double* %189, align 16, !dbg !11730
%190 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 1, !dbg !11731
store double 0.000000e+00, double* %190, align 8, !dbg !11732
%191 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 2, !dbg !11733
store double 0x415854A640000000, double* %191, align 16, !dbg !11734
%192 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11735
%193 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11736
call void @ecefToLLAandTrig(double* %192, double* %193, %struct.llaTrig_t* %5), !dbg !11737
%194 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11738
%195 = load double, double* %194, align 16, !dbg !11738
%196 = fsub double 0x3FF921FB54442D18, %195, !dbg !11739
%197 = call double @llvm.fabs.f64(double %196), !dbg !11740
%198 = fmul double %197, 0x41584DB0315EDD45, !dbg !11741
%199 = load double, double* %2, align 8, !dbg !11742
%200 = fadd double %199, %198, !dbg !11742
store double %200, double* %2, align 8, !dbg !11742
%201 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 1, !dbg !11743
%202 = load double, double* %201, align 8, !dbg !11743
%203 = fsub double 0.000000e+00, %202, !dbg !11744
%204 = call double @llvm.fabs.f64(double %203), !dbg !11745
%205 = fmul double %204, 0x41584DB0315EDD45, !dbg !11746
%206 = load double, double* %2, align 8, !dbg !11747
%207 = fadd double %206, %205, !dbg !11747
store double %207, double* %2, align 8, !dbg !11747
%208 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 2, !dbg !11748
%209 = load double, double* %208, align 16, !dbg !11748
%210 = fsub double 0x40D4E22BE3683000, %209, !dbg !11749
%211 = call double @llvm.fabs.f64(double %210), !dbg !11750
%212 = load double, double* %2, align 8, !dbg !11751
%213 = fadd double %212, %211, !dbg !11751
store double %213, double* %2, align 8, !dbg !11751
%214 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11752
%215 = load double, double* %214, align 8, !dbg !11752
%216 = fsub double 0.000000e+00, %215, !dbg !11753
%217 = call double @llvm.fabs.f64(double %216), !dbg !11754
%218 = load double, double* %2, align 8, !dbg !11755
%219 = fadd double %218, %217, !dbg !11755
store double %219, double* %2, align 8, !dbg !11755
%220 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11756
%221 = load double, double* %220, align 8, !dbg !11756
%222 = fsub double 1.000000e+00, %221, !dbg !11757
%223 = call double @llvm.fabs.f64(double %222), !dbg !11758
%224 = load double, double* %2, align 8, !dbg !11759
%225 = fadd double %224, %223, !dbg !11759
store double %225, double* %2, align 8, !dbg !11759
%226 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11760
%227 = load double, double* %226, align 8, !dbg !11760
%228 = fsub double 1.000000e+00, %227, !dbg !11761
%229 = call double @llvm.fabs.f64(double %228), !dbg !11762
%230 = load double, double* %2, align 8, !dbg !11763
%231 = fadd double %230, %229, !dbg !11763
store double %231, double* %2, align 8, !dbg !11763
%232 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11764
%233 = load double, double* %232, align 8, !dbg !11764
%234 = fsub double 0.000000e+00, %233, !dbg !11765
%235 = call double @llvm.fabs.f64(double %234), !dbg !11766
%236 = load double, double* %2, align 8, !dbg !11767
%237 = fadd double %236, %235, !dbg !11767
store double %237, double* %2, align 8, !dbg !11767
%238 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11768
%239 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11769
call void @llaToECEFandTrig(double* %238, double* %239, %struct.llaTrig_t* %5), !dbg !11770
%240 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 2, !dbg !11771
%241 = load double, double* %240, align 16, !dbg !11771
%242 = fsub double 0x415854A640000000, %241, !dbg !11772
%243 = call double @llvm.fabs.f64(double %242), !dbg !11773
%244 = load double, double* %2, align 8, !dbg !11774
%245 = fadd double %244, %243, !dbg !11774
store double %245, double* %2, align 8, !dbg !11774
%246 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 1, !dbg !11775
%247 = load double, double* %246, align 8, !dbg !11775
%248 = fsub double 0.000000e+00, %247, !dbg !11776
%249 = call double @llvm.fabs.f64(double %248), !dbg !11777
%250 = load double, double* %2, align 8, !dbg !11778
%251 = fadd double %250, %249, !dbg !11778
store double %251, double* %2, align 8, !dbg !11778
%252 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11779
%253 = load double, double* %252, align 16, !dbg !11779
%254 = fsub double 0.000000e+00, %253, !dbg !11780
%255 = call double @llvm.fabs.f64(double %254), !dbg !11781
%256 = load double, double* %2, align 8, !dbg !11782
%257 = fadd double %256, %255, !dbg !11782
store double %257, double* %2, align 8, !dbg !11782
%258 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11783
%259 = load double, double* %258, align 8, !dbg !11783
%260 = fsub double 0.000000e+00, %259, !dbg !11784
%261 = call double @llvm.fabs.f64(double %260), !dbg !11785
%262 = load double, double* %2, align 8, !dbg !11786
%263 = fadd double %262, %261, !dbg !11786
store double %263, double* %2, align 8, !dbg !11786
%264 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11787
%265 = load double, double* %264, align 8, !dbg !11787
%266 = fsub double 1.000000e+00, %265, !dbg !11788
%267 = call double @llvm.fabs.f64(double %266), !dbg !11789
%268 = load double, double* %2, align 8, !dbg !11790
%269 = fadd double %268, %267, !dbg !11790
store double %269, double* %2, align 8, !dbg !11790
%270 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11791
%271 = load double, double* %270, align 8, !dbg !11791
%272 = fsub double 1.000000e+00, %271, !dbg !11792
%273 = call double @llvm.fabs.f64(double %272), !dbg !11793
%274 = load double, double* %2, align 8, !dbg !11794
%275 = fadd double %274, %273, !dbg !11794
store double %275, double* %2, align 8, !dbg !11794
%276 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11795
%277 = load double, double* %276, align 8, !dbg !11795
%278 = fsub double 0.000000e+00, %277, !dbg !11796
%279 = call double @llvm.fabs.f64(double %278), !dbg !11797
%280 = load double, double* %2, align 8, !dbg !11798
%281 = fadd double %280, %279, !dbg !11798
store double %281, double* %2, align 8, !dbg !11798
%282 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11799
store double 0x3FE921FB54442D18, double* %282, align 16, !dbg !11800
%283 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 1, !dbg !11801
store double 0xC002D97C7F3321D2, double* %283, align 8, !dbg !11802
%284 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 2, !dbg !11803
store double 2.550000e+02, double* %284, align 16, !dbg !11804
%285 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11805
%286 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11806
call void @llaToECEFandTrig(double* %285, double* %286, %struct.llaTrig_t* %5), !dbg !11807
%287 = getelementptr inbounds [3 x double], [3 x double]* %3, i64 0, i64 0, !dbg !11808
%288 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11809
call void @ecefToLLAandTrig(double* %287, double* %288, %struct.llaTrig_t* %5), !dbg !11810
%289 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 0, !dbg !11811
%290 = load double, double* %289, align 16, !dbg !11811
%291 = fsub double 0x3FE921FB54442D18, %290, !dbg !11812
%292 = call double @llvm.fabs.f64(double %291), !dbg !11813
%293 = fmul double %292, 0x41584DB0315EDD45, !dbg !11814
%294 = load double, double* %2, align 8, !dbg !11815
%295 = fadd double %294, %293, !dbg !11815
store double %295, double* %2, align 8, !dbg !11815
%296 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 1, !dbg !11816
%297 = load double, double* %296, align 8, !dbg !11816
%298 = fsub double 0xC002D97C7F3321D2, %297, !dbg !11817
%299 = call double @llvm.fabs.f64(double %298), !dbg !11818
%300 = fmul double %299, 0x41584DB0315EDD45, !dbg !11819
%301 = load double, double* %2, align 8, !dbg !11820
%302 = fadd double %301, %300, !dbg !11820
store double %302, double* %2, align 8, !dbg !11820
%303 = getelementptr inbounds [3 x double], [3 x double]* %4, i64 0, i64 2, !dbg !11821
%304 = load double, double* %303, align 16, !dbg !11821
%305 = fsub double 2.550000e+02, %304, !dbg !11822
%306 = call double @llvm.fabs.f64(double %305), !dbg !11823
%307 = load double, double* %2, align 8, !dbg !11824
%308 = fadd double %307, %306, !dbg !11824
store double %308, double* %2, align 8, !dbg !11824
%309 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 2, !dbg !11825
%310 = load double, double* %309, align 8, !dbg !11825
%311 = fsub double 0x3FE6A09E667F3BD1, %310, !dbg !11826
%312 = call double @llvm.fabs.f64(double %311), !dbg !11827
%313 = load double, double* %2, align 8, !dbg !11828
%314 = fadd double %313, %312, !dbg !11828
store double %314, double* %2, align 8, !dbg !11828
%315 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 3, !dbg !11829
%316 = load double, double* %315, align 8, !dbg !11829
%317 = fsub double 0xBFE6A09E667F3BD1, %316, !dbg !11830
%318 = call double @llvm.fabs.f64(double %317), !dbg !11831
%319 = load double, double* %2, align 8, !dbg !11832
%320 = fadd double %319, %318, !dbg !11832
store double %320, double* %2, align 8, !dbg !11832
%321 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 0, !dbg !11833
%322 = load double, double* %321, align 8, !dbg !11833
%323 = fsub double 0x3FE6A09E667F3BD1, %322, !dbg !11834
%324 = call double @llvm.fabs.f64(double %323), !dbg !11835
%325 = load double, double* %2, align 8, !dbg !11836
%326 = fadd double %325, %324, !dbg !11836
store double %326, double* %2, align 8, !dbg !11836
%327 = getelementptr inbounds %struct.llaTrig_t, %struct.llaTrig_t* %5, i32 0, i32 1, !dbg !11837
%328 = load double, double* %327, align 8, !dbg !11837
%329 = fsub double 0xBFE6A09E667F3BD1, %328, !dbg !11838
%330 = call double @llvm.fabs.f64(double %329), !dbg !11839
%331 = load double, double* %2, align 8, !dbg !11840
%332 = fadd double %331, %330, !dbg !11840
store double %332, double* %2, align 8, !dbg !11840
%333 = load double, double* %2, align 8, !dbg !11841
%334 = fcmp olt double %333, 1.000000e-04, !dbg !11843
br i1 %334, label %335, label %336, !dbg !11844
335: ; preds = %0
store i64 1, i64* %1, align 8, !dbg !11845
br label %337, !dbg !11845
336: ; preds = %0
store i64 0, i64* %1, align 8, !dbg !11846
br label %337, !dbg !11846
337: ; preds = %336, %335
%338 = load i64, i64* %1, align 8, !dbg !11847
ret i64 %338, !dbg !11847
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmGet(%struct.Matrixf_t* %0, i32 %1, i32 %2) #0 !dbg !11848 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !11861, metadata !DIExpression()), !dbg !11862
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !11863, metadata !DIExpression()), !dbg !11864
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !11865, metadata !DIExpression()), !dbg !11866
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11867
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 2, !dbg !11867
%9 = load float*, float** %8, align 8, !dbg !11867
%10 = load i32, i32* %5, align 4, !dbg !11867
%11 = mul i32 %10, 3, !dbg !11867
%12 = load i32, i32* %6, align 4, !dbg !11867
%13 = add i32 %11, %12, !dbg !11867
%14 = zext i32 %13 to i64, !dbg !11867
%15 = getelementptr inbounds float, float* %9, i64 %14, !dbg !11867
%16 = load float, float* %15, align 4, !dbg !11867
ret float %16, !dbg !11868
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmGetFromRawData(float* %0, i32 %1, i32 %2) #0 !dbg !11869 {
%4 = alloca float*, align 8
%5 = alloca i32, align 4
%6 = alloca i32, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !11872, metadata !DIExpression()), !dbg !11873
store i32 %1, i32* %5, align 4
call void @llvm.dbg.declare(metadata i32* %5, metadata !11874, metadata !DIExpression()), !dbg !11875
store i32 %2, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !11876, metadata !DIExpression()), !dbg !11877
%7 = load float*, float** %4, align 8, !dbg !11878
%8 = load i32, i32* %5, align 4, !dbg !11879
%9 = mul i32 %8, 3, !dbg !11880
%10 = load i32, i32* %6, align 4, !dbg !11881
%11 = add i32 %9, %10, !dbg !11882
%12 = zext i32 %11 to i64, !dbg !11878
%13 = getelementptr inbounds float, float* %7, i64 %12, !dbg !11878
%14 = load float, float* %13, align 4, !dbg !11878
ret float %14, !dbg !11883
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmCopy(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !11884 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !11888, metadata !DIExpression()), !dbg !11889
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !11890, metadata !DIExpression()), !dbg !11891
%5 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11892
%6 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %5, i32 0, i32 2, !dbg !11893
%7 = load float*, float** %6, align 8, !dbg !11893
%8 = bitcast float* %7 to i8*, !dbg !11894
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11895
%10 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !11896
%11 = load float*, float** %10, align 8, !dbg !11896
%12 = bitcast float* %11 to i8*, !dbg !11894
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %8, i8* align 4 %12, i64 36, i1 false), !dbg !11894
ret void, !dbg !11897
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmSetIdentity(%struct.Matrixf_t* %0) #0 !dbg !11898 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !11901, metadata !DIExpression()), !dbg !11902
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11903
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !11903
%5 = load float*, float** %4, align 8, !dbg !11903
%6 = getelementptr inbounds float, float* %5, i64 0, !dbg !11903
store float 1.000000e+00, float* %6, align 4, !dbg !11903
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11904
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 2, !dbg !11904
%9 = load float*, float** %8, align 8, !dbg !11904
%10 = getelementptr inbounds float, float* %9, i64 1, !dbg !11904
store float 0.000000e+00, float* %10, align 4, !dbg !11904
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11905
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 2, !dbg !11905
%13 = load float*, float** %12, align 8, !dbg !11905
%14 = getelementptr inbounds float, float* %13, i64 2, !dbg !11905
store float 0.000000e+00, float* %14, align 4, !dbg !11905
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11906
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 2, !dbg !11906
%17 = load float*, float** %16, align 8, !dbg !11906
%18 = getelementptr inbounds float, float* %17, i64 3, !dbg !11906
store float 0.000000e+00, float* %18, align 4, !dbg !11906
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11907
%20 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %19, i32 0, i32 2, !dbg !11907
%21 = load float*, float** %20, align 8, !dbg !11907
%22 = getelementptr inbounds float, float* %21, i64 4, !dbg !11907
store float 1.000000e+00, float* %22, align 4, !dbg !11907
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11908
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !11908
%25 = load float*, float** %24, align 8, !dbg !11908
%26 = getelementptr inbounds float, float* %25, i64 5, !dbg !11908
store float 0.000000e+00, float* %26, align 4, !dbg !11908
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11909
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 2, !dbg !11909
%29 = load float*, float** %28, align 8, !dbg !11909
%30 = getelementptr inbounds float, float* %29, i64 6, !dbg !11909
store float 0.000000e+00, float* %30, align 4, !dbg !11909
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11910
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 2, !dbg !11910
%33 = load float*, float** %32, align 8, !dbg !11910
%34 = getelementptr inbounds float, float* %33, i64 7, !dbg !11910
store float 0.000000e+00, float* %34, align 4, !dbg !11910
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11911
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %35, i32 0, i32 2, !dbg !11911
%37 = load float*, float** %36, align 8, !dbg !11911
%38 = getelementptr inbounds float, float* %37, i64 8, !dbg !11911
store float 1.000000e+00, float* %38, align 4, !dbg !11911
ret void, !dbg !11912
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmAddIdentity(%struct.Matrixf_t* %0) #0 !dbg !11913 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !11914, metadata !DIExpression()), !dbg !11915
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11916
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !11916
%5 = load float*, float** %4, align 8, !dbg !11916
%6 = getelementptr inbounds float, float* %5, i64 0, !dbg !11916
%7 = load float, float* %6, align 4, !dbg !11917
%8 = fadd float %7, 1.000000e+00, !dbg !11917
store float %8, float* %6, align 4, !dbg !11917
%9 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11918
%10 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %9, i32 0, i32 2, !dbg !11918
%11 = load float*, float** %10, align 8, !dbg !11918
%12 = getelementptr inbounds float, float* %11, i64 4, !dbg !11918
%13 = load float, float* %12, align 4, !dbg !11919
%14 = fadd float %13, 1.000000e+00, !dbg !11919
store float %14, float* %12, align 4, !dbg !11919
%15 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !11920
%16 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %15, i32 0, i32 2, !dbg !11920
%17 = load float*, float** %16, align 8, !dbg !11920
%18 = getelementptr inbounds float, float* %17, i64 8, !dbg !11920
%19 = load float, float* %18, align 4, !dbg !11921
%20 = fadd float %19, 1.000000e+00, !dbg !11921
store float %20, float* %18, align 4, !dbg !11921
ret void, !dbg !11922
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmAddEquals(%struct.Matrixf_t* %0, %struct.Matrixf_t* %1) #0 !dbg !11923 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !11926, metadata !DIExpression()), !dbg !11927
store %struct.Matrixf_t* %1, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !11928, metadata !DIExpression()), !dbg !11929
%5 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11930
%6 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %5, i32 0, i32 2, !dbg !11931
%7 = load float*, float** %6, align 8, !dbg !11931
%8 = getelementptr inbounds float, float* %7, i64 0, !dbg !11930
%9 = load float, float* %8, align 4, !dbg !11930
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11932
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 2, !dbg !11933
%12 = load float*, float** %11, align 8, !dbg !11933
%13 = getelementptr inbounds float, float* %12, i64 0, !dbg !11932
%14 = load float, float* %13, align 4, !dbg !11934
%15 = fadd float %14, %9, !dbg !11934
store float %15, float* %13, align 4, !dbg !11934
%16 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11935
%17 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %16, i32 0, i32 2, !dbg !11936
%18 = load float*, float** %17, align 8, !dbg !11936
%19 = getelementptr inbounds float, float* %18, i64 1, !dbg !11935
%20 = load float, float* %19, align 4, !dbg !11935
%21 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11937
%22 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %21, i32 0, i32 2, !dbg !11938
%23 = load float*, float** %22, align 8, !dbg !11938
%24 = getelementptr inbounds float, float* %23, i64 1, !dbg !11937
%25 = load float, float* %24, align 4, !dbg !11939
%26 = fadd float %25, %20, !dbg !11939
store float %26, float* %24, align 4, !dbg !11939
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11940
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 2, !dbg !11941
%29 = load float*, float** %28, align 8, !dbg !11941
%30 = getelementptr inbounds float, float* %29, i64 2, !dbg !11940
%31 = load float, float* %30, align 4, !dbg !11940
%32 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11942
%33 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %32, i32 0, i32 2, !dbg !11943
%34 = load float*, float** %33, align 8, !dbg !11943
%35 = getelementptr inbounds float, float* %34, i64 2, !dbg !11942
%36 = load float, float* %35, align 4, !dbg !11944
%37 = fadd float %36, %31, !dbg !11944
store float %37, float* %35, align 4, !dbg !11944
%38 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11945
%39 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %38, i32 0, i32 2, !dbg !11946
%40 = load float*, float** %39, align 8, !dbg !11946
%41 = getelementptr inbounds float, float* %40, i64 3, !dbg !11945
%42 = load float, float* %41, align 4, !dbg !11945
%43 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11947
%44 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %43, i32 0, i32 2, !dbg !11948
%45 = load float*, float** %44, align 8, !dbg !11948
%46 = getelementptr inbounds float, float* %45, i64 3, !dbg !11947
%47 = load float, float* %46, align 4, !dbg !11949
%48 = fadd float %47, %42, !dbg !11949
store float %48, float* %46, align 4, !dbg !11949
%49 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11950
%50 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %49, i32 0, i32 2, !dbg !11951
%51 = load float*, float** %50, align 8, !dbg !11951
%52 = getelementptr inbounds float, float* %51, i64 4, !dbg !11950
%53 = load float, float* %52, align 4, !dbg !11950
%54 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11952
%55 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %54, i32 0, i32 2, !dbg !11953
%56 = load float*, float** %55, align 8, !dbg !11953
%57 = getelementptr inbounds float, float* %56, i64 4, !dbg !11952
%58 = load float, float* %57, align 4, !dbg !11954
%59 = fadd float %58, %53, !dbg !11954
store float %59, float* %57, align 4, !dbg !11954
%60 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11955
%61 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %60, i32 0, i32 2, !dbg !11956
%62 = load float*, float** %61, align 8, !dbg !11956
%63 = getelementptr inbounds float, float* %62, i64 5, !dbg !11955
%64 = load float, float* %63, align 4, !dbg !11955
%65 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11957
%66 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %65, i32 0, i32 2, !dbg !11958
%67 = load float*, float** %66, align 8, !dbg !11958
%68 = getelementptr inbounds float, float* %67, i64 5, !dbg !11957
%69 = load float, float* %68, align 4, !dbg !11959
%70 = fadd float %69, %64, !dbg !11959
store float %70, float* %68, align 4, !dbg !11959
%71 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11960
%72 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %71, i32 0, i32 2, !dbg !11961
%73 = load float*, float** %72, align 8, !dbg !11961
%74 = getelementptr inbounds float, float* %73, i64 6, !dbg !11960
%75 = load float, float* %74, align 4, !dbg !11960
%76 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11962
%77 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %76, i32 0, i32 2, !dbg !11963
%78 = load float*, float** %77, align 8, !dbg !11963
%79 = getelementptr inbounds float, float* %78, i64 6, !dbg !11962
%80 = load float, float* %79, align 4, !dbg !11964
%81 = fadd float %80, %75, !dbg !11964
store float %81, float* %79, align 4, !dbg !11964
%82 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11965
%83 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %82, i32 0, i32 2, !dbg !11966
%84 = load float*, float** %83, align 8, !dbg !11966
%85 = getelementptr inbounds float, float* %84, i64 7, !dbg !11965
%86 = load float, float* %85, align 4, !dbg !11965
%87 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11967
%88 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %87, i32 0, i32 2, !dbg !11968
%89 = load float*, float** %88, align 8, !dbg !11968
%90 = getelementptr inbounds float, float* %89, i64 7, !dbg !11967
%91 = load float, float* %90, align 4, !dbg !11969
%92 = fadd float %91, %86, !dbg !11969
store float %92, float* %90, align 4, !dbg !11969
%93 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !11970
%94 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %93, i32 0, i32 2, !dbg !11971
%95 = load float*, float** %94, align 8, !dbg !11971
%96 = getelementptr inbounds float, float* %95, i64 8, !dbg !11970
%97 = load float, float* %96, align 4, !dbg !11970
%98 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11972
%99 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %98, i32 0, i32 2, !dbg !11973
%100 = load float*, float** %99, align 8, !dbg !11973
%101 = getelementptr inbounds float, float* %100, i64 8, !dbg !11972
%102 = load float, float* %101, align 4, !dbg !11974
%103 = fadd float %102, %97, !dbg !11974
store float %103, float* %101, align 4, !dbg !11974
ret void, !dbg !11975
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmScale(%struct.Matrixf_t* %0, float %1) #0 !dbg !11976 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !11979, metadata !DIExpression()), !dbg !11980
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !11981, metadata !DIExpression()), !dbg !11982
%5 = load float, float* %4, align 4, !dbg !11983
%6 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11984
%7 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %6, i32 0, i32 2, !dbg !11985
%8 = load float*, float** %7, align 8, !dbg !11985
%9 = getelementptr inbounds float, float* %8, i64 0, !dbg !11984
%10 = load float, float* %9, align 4, !dbg !11986
%11 = fmul float %10, %5, !dbg !11986
store float %11, float* %9, align 4, !dbg !11986
%12 = load float, float* %4, align 4, !dbg !11987
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11988
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 2, !dbg !11989
%15 = load float*, float** %14, align 8, !dbg !11989
%16 = getelementptr inbounds float, float* %15, i64 1, !dbg !11988
%17 = load float, float* %16, align 4, !dbg !11990
%18 = fmul float %17, %12, !dbg !11990
store float %18, float* %16, align 4, !dbg !11990
%19 = load float, float* %4, align 4, !dbg !11991
%20 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11992
%21 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %20, i32 0, i32 2, !dbg !11993
%22 = load float*, float** %21, align 8, !dbg !11993
%23 = getelementptr inbounds float, float* %22, i64 2, !dbg !11992
%24 = load float, float* %23, align 4, !dbg !11994
%25 = fmul float %24, %19, !dbg !11994
store float %25, float* %23, align 4, !dbg !11994
%26 = load float, float* %4, align 4, !dbg !11995
%27 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !11996
%28 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %27, i32 0, i32 2, !dbg !11997
%29 = load float*, float** %28, align 8, !dbg !11997
%30 = getelementptr inbounds float, float* %29, i64 3, !dbg !11996
%31 = load float, float* %30, align 4, !dbg !11998
%32 = fmul float %31, %26, !dbg !11998
store float %32, float* %30, align 4, !dbg !11998
%33 = load float, float* %4, align 4, !dbg !11999
%34 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12000
%35 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %34, i32 0, i32 2, !dbg !12001
%36 = load float*, float** %35, align 8, !dbg !12001
%37 = getelementptr inbounds float, float* %36, i64 4, !dbg !12000
%38 = load float, float* %37, align 4, !dbg !12002
%39 = fmul float %38, %33, !dbg !12002
store float %39, float* %37, align 4, !dbg !12002
%40 = load float, float* %4, align 4, !dbg !12003
%41 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12004
%42 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %41, i32 0, i32 2, !dbg !12005
%43 = load float*, float** %42, align 8, !dbg !12005
%44 = getelementptr inbounds float, float* %43, i64 5, !dbg !12004
%45 = load float, float* %44, align 4, !dbg !12006
%46 = fmul float %45, %40, !dbg !12006
store float %46, float* %44, align 4, !dbg !12006
%47 = load float, float* %4, align 4, !dbg !12007
%48 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12008
%49 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %48, i32 0, i32 2, !dbg !12009
%50 = load float*, float** %49, align 8, !dbg !12009
%51 = getelementptr inbounds float, float* %50, i64 6, !dbg !12008
%52 = load float, float* %51, align 4, !dbg !12010
%53 = fmul float %52, %47, !dbg !12010
store float %53, float* %51, align 4, !dbg !12010
%54 = load float, float* %4, align 4, !dbg !12011
%55 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12012
%56 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %55, i32 0, i32 2, !dbg !12013
%57 = load float*, float** %56, align 8, !dbg !12013
%58 = getelementptr inbounds float, float* %57, i64 7, !dbg !12012
%59 = load float, float* %58, align 4, !dbg !12014
%60 = fmul float %59, %54, !dbg !12014
store float %60, float* %58, align 4, !dbg !12014
%61 = load float, float* %4, align 4, !dbg !12015
%62 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12016
%63 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %62, i32 0, i32 2, !dbg !12017
%64 = load float*, float** %63, align 8, !dbg !12017
%65 = getelementptr inbounds float, float* %64, i64 8, !dbg !12016
%66 = load float, float* %65, align 4, !dbg !12018
%67 = fmul float %66, %61, !dbg !12018
store float %67, float* %65, align 4, !dbg !12018
ret void, !dbg !12019
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmSet(%struct.Matrixf_t* %0, i32 %1, i32 %2, float %3) #0 !dbg !12020 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca i32, align 4
%7 = alloca i32, align 4
%8 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !12023, metadata !DIExpression()), !dbg !12024
store i32 %1, i32* %6, align 4
call void @llvm.dbg.declare(metadata i32* %6, metadata !12025, metadata !DIExpression()), !dbg !12026
store i32 %2, i32* %7, align 4
call void @llvm.dbg.declare(metadata i32* %7, metadata !12027, metadata !DIExpression()), !dbg !12028
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !12029, metadata !DIExpression()), !dbg !12030
%9 = load float, float* %8, align 4, !dbg !12031
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12031
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 2, !dbg !12031
%12 = load float*, float** %11, align 8, !dbg !12031
%13 = load i32, i32* %6, align 4, !dbg !12031
%14 = mul i32 %13, 3, !dbg !12031
%15 = load i32, i32* %7, align 4, !dbg !12031
%16 = add i32 %14, %15, !dbg !12031
%17 = zext i32 %16 to i64, !dbg !12031
%18 = getelementptr inbounds float, float* %12, i64 %17, !dbg !12031
store float %9, float* %18, align 4, !dbg !12031
ret void, !dbg !12032
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local %struct.Matrixf_t* @dcmAllocate() #0 !dbg !12033 {
%1 = alloca %struct.Matrixf_t*, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %1, metadata !12036, metadata !DIExpression()), !dbg !12037
%2 = call %struct.Matrixf_t* @matrixAllocatef(i32 3, i32 3), !dbg !12038
store %struct.Matrixf_t* %2, %struct.Matrixf_t** %1, align 8, !dbg !12037
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %1, align 8, !dbg !12039
%4 = icmp ne %struct.Matrixf_t* %3, null, !dbg !12041
br i1 %4, label %5, label %18, !dbg !12042
5: ; preds = %0
%6 = load %struct.Matrixf_t*, %struct.Matrixf_t** %1, align 8, !dbg !12043
%7 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %6, i32 0, i32 2, !dbg !12043
%8 = load float*, float** %7, align 8, !dbg !12043
%9 = getelementptr inbounds float, float* %8, i64 0, !dbg !12043
store float 1.000000e+00, float* %9, align 4, !dbg !12043
%10 = load %struct.Matrixf_t*, %struct.Matrixf_t** %1, align 8, !dbg !12045
%11 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %10, i32 0, i32 2, !dbg !12045
%12 = load float*, float** %11, align 8, !dbg !12045
%13 = getelementptr inbounds float, float* %12, i64 4, !dbg !12045
store float 1.000000e+00, float* %13, align 4, !dbg !12045
%14 = load %struct.Matrixf_t*, %struct.Matrixf_t** %1, align 8, !dbg !12046
%15 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %14, i32 0, i32 2, !dbg !12046
%16 = load float*, float** %15, align 8, !dbg !12046
%17 = getelementptr inbounds float, float* %16, i64 8, !dbg !12046
store float 1.000000e+00, float* %17, align 4, !dbg !12046
br label %18, !dbg !12047
18: ; preds = %5, %0
%19 = load %struct.Matrixf_t*, %struct.Matrixf_t** %1, align 8, !dbg !12048
ret %struct.Matrixf_t* %19, !dbg !12049
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @setDCMBasedOnRoll(%struct.Matrixf_t* %0, float %1) #0 !dbg !12050 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca float, align 4
%5 = alloca float, align 4
%6 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !12051, metadata !DIExpression()), !dbg !12052
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !12053, metadata !DIExpression()), !dbg !12054
call void @llvm.dbg.declare(metadata float* %5, metadata !12055, metadata !DIExpression()), !dbg !12056
%7 = load float, float* %4, align 4, !dbg !12057
%8 = call float @sinf(float %7) #7, !dbg !12058
store float %8, float* %5, align 4, !dbg !12056
call void @llvm.dbg.declare(metadata float* %6, metadata !12059, metadata !DIExpression()), !dbg !12060
%9 = load float, float* %4, align 4, !dbg !12061
%10 = call float @cosf(float %9) #7, !dbg !12062
store float %10, float* %6, align 4, !dbg !12060
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12063
call void @dcmSetIdentity(%struct.Matrixf_t* %11), !dbg !12064
%12 = load float, float* %6, align 4, !dbg !12065
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12065
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 2, !dbg !12065
%15 = load float*, float** %14, align 8, !dbg !12065
%16 = getelementptr inbounds float, float* %15, i64 4, !dbg !12065
store float %12, float* %16, align 4, !dbg !12065
%17 = load float, float* %6, align 4, !dbg !12066
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12066
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 2, !dbg !12066
%20 = load float*, float** %19, align 8, !dbg !12066
%21 = getelementptr inbounds float, float* %20, i64 8, !dbg !12066
store float %17, float* %21, align 4, !dbg !12066
%22 = load float, float* %5, align 4, !dbg !12067
%23 = fneg float %22, !dbg !12067
%24 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12067
%25 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %24, i32 0, i32 2, !dbg !12067
%26 = load float*, float** %25, align 8, !dbg !12067
%27 = getelementptr inbounds float, float* %26, i64 5, !dbg !12067
store float %23, float* %27, align 4, !dbg !12067
%28 = load float, float* %5, align 4, !dbg !12068
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12068
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 2, !dbg !12068
%31 = load float*, float** %30, align 8, !dbg !12068
%32 = getelementptr inbounds float, float* %31, i64 7, !dbg !12068
store float %28, float* %32, align 4, !dbg !12068
ret void, !dbg !12069
}
; Function Attrs: nounwind
declare dso_local float @sinf(float) #5
; Function Attrs: nounwind
declare dso_local float @cosf(float) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @setDCMBasedOnPitch(%struct.Matrixf_t* %0, float %1) #0 !dbg !12070 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca float, align 4
%5 = alloca float, align 4
%6 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !12071, metadata !DIExpression()), !dbg !12072
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !12073, metadata !DIExpression()), !dbg !12074
call void @llvm.dbg.declare(metadata float* %5, metadata !12075, metadata !DIExpression()), !dbg !12076
%7 = load float, float* %4, align 4, !dbg !12077
%8 = call float @sinf(float %7) #7, !dbg !12078
store float %8, float* %5, align 4, !dbg !12076
call void @llvm.dbg.declare(metadata float* %6, metadata !12079, metadata !DIExpression()), !dbg !12080
%9 = load float, float* %4, align 4, !dbg !12081
%10 = call float @cosf(float %9) #7, !dbg !12082
store float %10, float* %6, align 4, !dbg !12080
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12083
call void @dcmSetIdentity(%struct.Matrixf_t* %11), !dbg !12084
%12 = load float, float* %6, align 4, !dbg !12085
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12085
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 2, !dbg !12085
%15 = load float*, float** %14, align 8, !dbg !12085
%16 = getelementptr inbounds float, float* %15, i64 0, !dbg !12085
store float %12, float* %16, align 4, !dbg !12085
%17 = load float, float* %6, align 4, !dbg !12086
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12086
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 2, !dbg !12086
%20 = load float*, float** %19, align 8, !dbg !12086
%21 = getelementptr inbounds float, float* %20, i64 8, !dbg !12086
store float %17, float* %21, align 4, !dbg !12086
%22 = load float, float* %5, align 4, !dbg !12087
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12087
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !12087
%25 = load float*, float** %24, align 8, !dbg !12087
%26 = getelementptr inbounds float, float* %25, i64 2, !dbg !12087
store float %22, float* %26, align 4, !dbg !12087
%27 = load float, float* %5, align 4, !dbg !12088
%28 = fneg float %27, !dbg !12088
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12088
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 2, !dbg !12088
%31 = load float*, float** %30, align 8, !dbg !12088
%32 = getelementptr inbounds float, float* %31, i64 6, !dbg !12088
store float %28, float* %32, align 4, !dbg !12088
ret void, !dbg !12089
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @setDCMBasedOnYaw(%struct.Matrixf_t* %0, float %1) #0 !dbg !12090 {
%3 = alloca %struct.Matrixf_t*, align 8
%4 = alloca float, align 4
%5 = alloca float, align 4
%6 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %3, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %3, metadata !12091, metadata !DIExpression()), !dbg !12092
store float %1, float* %4, align 4
call void @llvm.dbg.declare(metadata float* %4, metadata !12093, metadata !DIExpression()), !dbg !12094
call void @llvm.dbg.declare(metadata float* %5, metadata !12095, metadata !DIExpression()), !dbg !12096
%7 = load float, float* %4, align 4, !dbg !12097
%8 = call float @sinf(float %7) #7, !dbg !12098
store float %8, float* %5, align 4, !dbg !12096
call void @llvm.dbg.declare(metadata float* %6, metadata !12099, metadata !DIExpression()), !dbg !12100
%9 = load float, float* %4, align 4, !dbg !12101
%10 = call float @cosf(float %9) #7, !dbg !12102
store float %10, float* %6, align 4, !dbg !12100
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12103
call void @dcmSetIdentity(%struct.Matrixf_t* %11), !dbg !12104
%12 = load float, float* %6, align 4, !dbg !12105
%13 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12105
%14 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %13, i32 0, i32 2, !dbg !12105
%15 = load float*, float** %14, align 8, !dbg !12105
%16 = getelementptr inbounds float, float* %15, i64 0, !dbg !12105
store float %12, float* %16, align 4, !dbg !12105
%17 = load float, float* %6, align 4, !dbg !12106
%18 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12106
%19 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %18, i32 0, i32 2, !dbg !12106
%20 = load float*, float** %19, align 8, !dbg !12106
%21 = getelementptr inbounds float, float* %20, i64 4, !dbg !12106
store float %17, float* %21, align 4, !dbg !12106
%22 = load float, float* %5, align 4, !dbg !12107
%23 = fneg float %22, !dbg !12107
%24 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12107
%25 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %24, i32 0, i32 2, !dbg !12107
%26 = load float*, float** %25, align 8, !dbg !12107
%27 = getelementptr inbounds float, float* %26, i64 1, !dbg !12107
store float %23, float* %27, align 4, !dbg !12107
%28 = load float, float* %5, align 4, !dbg !12108
%29 = load %struct.Matrixf_t*, %struct.Matrixf_t** %3, align 8, !dbg !12108
%30 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %29, i32 0, i32 2, !dbg !12108
%31 = load float*, float** %30, align 8, !dbg !12108
%32 = getelementptr inbounds float, float* %31, i64 3, !dbg !12108
store float %28, float* %32, align 4, !dbg !12108
ret void, !dbg !12109
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @setDCMBasedOnEuler(%struct.Matrixf_t* %0, float %1, float %2, float %3) #0 !dbg !12110 {
%5 = alloca %struct.Matrixf_t*, align 8
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
%10 = alloca float, align 4
%11 = alloca float, align 4
%12 = alloca float, align 4
%13 = alloca float, align 4
%14 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %5, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %5, metadata !12113, metadata !DIExpression()), !dbg !12114
store float %1, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !12115, metadata !DIExpression()), !dbg !12116
store float %2, float* %7, align 4
call void @llvm.dbg.declare(metadata float* %7, metadata !12117, metadata !DIExpression()), !dbg !12118
store float %3, float* %8, align 4
call void @llvm.dbg.declare(metadata float* %8, metadata !12119, metadata !DIExpression()), !dbg !12120
call void @llvm.dbg.declare(metadata float* %9, metadata !12121, metadata !DIExpression()), !dbg !12122
%15 = load float, float* %8, align 4, !dbg !12123
%16 = call float @cosf(float %15) #7, !dbg !12124
store float %16, float* %9, align 4, !dbg !12122
call void @llvm.dbg.declare(metadata float* %10, metadata !12125, metadata !DIExpression()), !dbg !12126
%17 = load float, float* %8, align 4, !dbg !12127
%18 = call float @sinf(float %17) #7, !dbg !12128
store float %18, float* %10, align 4, !dbg !12126
call void @llvm.dbg.declare(metadata float* %11, metadata !12129, metadata !DIExpression()), !dbg !12130
%19 = load float, float* %7, align 4, !dbg !12131
%20 = call float @cosf(float %19) #7, !dbg !12132
store float %20, float* %11, align 4, !dbg !12130
call void @llvm.dbg.declare(metadata float* %12, metadata !12133, metadata !DIExpression()), !dbg !12134
%21 = load float, float* %7, align 4, !dbg !12135
%22 = call float @sinf(float %21) #7, !dbg !12136
store float %22, float* %12, align 4, !dbg !12134
call void @llvm.dbg.declare(metadata float* %13, metadata !12137, metadata !DIExpression()), !dbg !12138
%23 = load float, float* %6, align 4, !dbg !12139
%24 = call float @cosf(float %23) #7, !dbg !12140
store float %24, float* %13, align 4, !dbg !12138
call void @llvm.dbg.declare(metadata float* %14, metadata !12141, metadata !DIExpression()), !dbg !12142
%25 = load float, float* %6, align 4, !dbg !12143
%26 = call float @sinf(float %25) #7, !dbg !12144
store float %26, float* %14, align 4, !dbg !12142
%27 = load float, float* %11, align 4, !dbg !12145
%28 = load float, float* %13, align 4, !dbg !12145
%29 = fmul float %27, %28, !dbg !12145
%30 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12145
%31 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %30, i32 0, i32 2, !dbg !12145
%32 = load float*, float** %31, align 8, !dbg !12145
%33 = getelementptr inbounds float, float* %32, i64 0, !dbg !12145
store float %29, float* %33, align 4, !dbg !12145
%34 = load float, float* %10, align 4, !dbg !12146
%35 = load float, float* %12, align 4, !dbg !12146
%36 = fmul float %34, %35, !dbg !12146
%37 = load float, float* %13, align 4, !dbg !12146
%38 = fmul float %36, %37, !dbg !12146
%39 = load float, float* %9, align 4, !dbg !12146
%40 = load float, float* %14, align 4, !dbg !12146
%41 = fmul float %39, %40, !dbg !12146
%42 = fsub float %38, %41, !dbg !12146
%43 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12146
%44 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %43, i32 0, i32 2, !dbg !12146
%45 = load float*, float** %44, align 8, !dbg !12146
%46 = getelementptr inbounds float, float* %45, i64 1, !dbg !12146
store float %42, float* %46, align 4, !dbg !12146
%47 = load float, float* %9, align 4, !dbg !12147
%48 = load float, float* %12, align 4, !dbg !12147
%49 = fmul float %47, %48, !dbg !12147
%50 = load float, float* %13, align 4, !dbg !12147
%51 = fmul float %49, %50, !dbg !12147
%52 = load float, float* %10, align 4, !dbg !12147
%53 = load float, float* %14, align 4, !dbg !12147
%54 = fmul float %52, %53, !dbg !12147
%55 = fadd float %51, %54, !dbg !12147
%56 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12147
%57 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %56, i32 0, i32 2, !dbg !12147
%58 = load float*, float** %57, align 8, !dbg !12147
%59 = getelementptr inbounds float, float* %58, i64 2, !dbg !12147
store float %55, float* %59, align 4, !dbg !12147
%60 = load float, float* %11, align 4, !dbg !12148
%61 = load float, float* %14, align 4, !dbg !12148
%62 = fmul float %60, %61, !dbg !12148
%63 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12148
%64 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %63, i32 0, i32 2, !dbg !12148
%65 = load float*, float** %64, align 8, !dbg !12148
%66 = getelementptr inbounds float, float* %65, i64 3, !dbg !12148
store float %62, float* %66, align 4, !dbg !12148
%67 = load float, float* %10, align 4, !dbg !12149
%68 = load float, float* %12, align 4, !dbg !12149
%69 = fmul float %67, %68, !dbg !12149
%70 = load float, float* %14, align 4, !dbg !12149
%71 = fmul float %69, %70, !dbg !12149
%72 = load float, float* %9, align 4, !dbg !12149
%73 = load float, float* %13, align 4, !dbg !12149
%74 = fmul float %72, %73, !dbg !12149
%75 = fadd float %71, %74, !dbg !12149
%76 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12149
%77 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %76, i32 0, i32 2, !dbg !12149
%78 = load float*, float** %77, align 8, !dbg !12149
%79 = getelementptr inbounds float, float* %78, i64 4, !dbg !12149
store float %75, float* %79, align 4, !dbg !12149
%80 = load float, float* %9, align 4, !dbg !12150
%81 = load float, float* %12, align 4, !dbg !12150
%82 = fmul float %80, %81, !dbg !12150
%83 = load float, float* %14, align 4, !dbg !12150
%84 = fmul float %82, %83, !dbg !12150
%85 = load float, float* %10, align 4, !dbg !12150
%86 = load float, float* %13, align 4, !dbg !12150
%87 = fmul float %85, %86, !dbg !12150
%88 = fsub float %84, %87, !dbg !12150
%89 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12150
%90 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %89, i32 0, i32 2, !dbg !12150
%91 = load float*, float** %90, align 8, !dbg !12150
%92 = getelementptr inbounds float, float* %91, i64 5, !dbg !12150
store float %88, float* %92, align 4, !dbg !12150
%93 = load float, float* %12, align 4, !dbg !12151
%94 = fmul float -1.000000e+00, %93, !dbg !12151
%95 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12151
%96 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %95, i32 0, i32 2, !dbg !12151
%97 = load float*, float** %96, align 8, !dbg !12151
%98 = getelementptr inbounds float, float* %97, i64 6, !dbg !12151
store float %94, float* %98, align 4, !dbg !12151
%99 = load float, float* %10, align 4, !dbg !12152
%100 = load float, float* %11, align 4, !dbg !12152
%101 = fmul float %99, %100, !dbg !12152
%102 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12152
%103 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %102, i32 0, i32 2, !dbg !12152
%104 = load float*, float** %103, align 8, !dbg !12152
%105 = getelementptr inbounds float, float* %104, i64 7, !dbg !12152
store float %101, float* %105, align 4, !dbg !12152
%106 = load float, float* %9, align 4, !dbg !12153
%107 = load float, float* %11, align 4, !dbg !12153
%108 = fmul float %106, %107, !dbg !12153
%109 = load %struct.Matrixf_t*, %struct.Matrixf_t** %5, align 8, !dbg !12153
%110 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %109, i32 0, i32 2, !dbg !12153
%111 = load float*, float** %110, align 8, !dbg !12153
%112 = getelementptr inbounds float, float* %111, i64 8, !dbg !12153
store float %108, float* %112, align 4, !dbg !12153
ret void, !dbg !12154
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @setDCMBasedOnPanTilt(%struct.Matrixf_t* %0, float %1, float %2) #0 !dbg !12155 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca float, align 4
%6 = alloca float, align 4
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
%10 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !12158, metadata !DIExpression()), !dbg !12159
store float %1, float* %5, align 4
call void @llvm.dbg.declare(metadata float* %5, metadata !12160, metadata !DIExpression()), !dbg !12161
store float %2, float* %6, align 4
call void @llvm.dbg.declare(metadata float* %6, metadata !12162, metadata !DIExpression()), !dbg !12163
call void @llvm.dbg.declare(metadata float* %7, metadata !12164, metadata !DIExpression()), !dbg !12165
%11 = load float, float* %6, align 4, !dbg !12166
%12 = call float @cosf(float %11) #7, !dbg !12167
store float %12, float* %7, align 4, !dbg !12165
call void @llvm.dbg.declare(metadata float* %8, metadata !12168, metadata !DIExpression()), !dbg !12169
%13 = load float, float* %6, align 4, !dbg !12170
%14 = call float @sinf(float %13) #7, !dbg !12171
store float %14, float* %8, align 4, !dbg !12169
call void @llvm.dbg.declare(metadata float* %9, metadata !12172, metadata !DIExpression()), !dbg !12173
%15 = load float, float* %5, align 4, !dbg !12174
%16 = call float @cosf(float %15) #7, !dbg !12175
store float %16, float* %9, align 4, !dbg !12173
call void @llvm.dbg.declare(metadata float* %10, metadata !12176, metadata !DIExpression()), !dbg !12177
%17 = load float, float* %5, align 4, !dbg !12178
%18 = call float @sinf(float %17) #7, !dbg !12179
store float %18, float* %10, align 4, !dbg !12177
%19 = load float, float* %7, align 4, !dbg !12180
%20 = load float, float* %9, align 4, !dbg !12180
%21 = fmul float %19, %20, !dbg !12180
%22 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12180
%23 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %22, i32 0, i32 2, !dbg !12180
%24 = load float*, float** %23, align 8, !dbg !12180
%25 = getelementptr inbounds float, float* %24, i64 0, !dbg !12180
store float %21, float* %25, align 4, !dbg !12180
%26 = load float, float* %10, align 4, !dbg !12181
%27 = fmul float -1.000000e+00, %26, !dbg !12181
%28 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12181
%29 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %28, i32 0, i32 2, !dbg !12181
%30 = load float*, float** %29, align 8, !dbg !12181
%31 = getelementptr inbounds float, float* %30, i64 1, !dbg !12181
store float %27, float* %31, align 4, !dbg !12181
%32 = load float, float* %8, align 4, !dbg !12182
%33 = load float, float* %9, align 4, !dbg !12182
%34 = fmul float %32, %33, !dbg !12182
%35 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12182
%36 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %35, i32 0, i32 2, !dbg !12182
%37 = load float*, float** %36, align 8, !dbg !12182
%38 = getelementptr inbounds float, float* %37, i64 2, !dbg !12182
store float %34, float* %38, align 4, !dbg !12182
%39 = load float, float* %7, align 4, !dbg !12183
%40 = load float, float* %10, align 4, !dbg !12183
%41 = fmul float %39, %40, !dbg !12183
%42 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12183
%43 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %42, i32 0, i32 2, !dbg !12183
%44 = load float*, float** %43, align 8, !dbg !12183
%45 = getelementptr inbounds float, float* %44, i64 3, !dbg !12183
store float %41, float* %45, align 4, !dbg !12183
%46 = load float, float* %9, align 4, !dbg !12184
%47 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12184
%48 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %47, i32 0, i32 2, !dbg !12184
%49 = load float*, float** %48, align 8, !dbg !12184
%50 = getelementptr inbounds float, float* %49, i64 4, !dbg !12184
store float %46, float* %50, align 4, !dbg !12184
%51 = load float, float* %8, align 4, !dbg !12185
%52 = load float, float* %10, align 4, !dbg !12185
%53 = fmul float %51, %52, !dbg !12185
%54 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12185
%55 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %54, i32 0, i32 2, !dbg !12185
%56 = load float*, float** %55, align 8, !dbg !12185
%57 = getelementptr inbounds float, float* %56, i64 5, !dbg !12185
store float %53, float* %57, align 4, !dbg !12185
%58 = load float, float* %8, align 4, !dbg !12186
%59 = fmul float -1.000000e+00, %58, !dbg !12186
%60 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12186
%61 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %60, i32 0, i32 2, !dbg !12186
%62 = load float*, float** %61, align 8, !dbg !12186
%63 = getelementptr inbounds float, float* %62, i64 6, !dbg !12186
store float %59, float* %63, align 4, !dbg !12186
%64 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12187
%65 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %64, i32 0, i32 2, !dbg !12187
%66 = load float*, float** %65, align 8, !dbg !12187
%67 = getelementptr inbounds float, float* %66, i64 7, !dbg !12187
store float 0.000000e+00, float* %67, align 4, !dbg !12187
%68 = load float, float* %7, align 4, !dbg !12188
%69 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12188
%70 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %69, i32 0, i32 2, !dbg !12188
%71 = load float*, float** %70, align 8, !dbg !12188
%72 = getelementptr inbounds float, float* %71, i64 8, !dbg !12188
store float %68, float* %72, align 4, !dbg !12188
ret void, !dbg !12189
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmYaw(%struct.Matrixf_t* %0) #0 !dbg !12190 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12193, metadata !DIExpression()), !dbg !12194
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12195
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !12195
%5 = load float*, float** %4, align 8, !dbg !12195
%6 = getelementptr inbounds float, float* %5, i64 3, !dbg !12195
%7 = load float, float* %6, align 4, !dbg !12195
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12196
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 2, !dbg !12196
%10 = load float*, float** %9, align 8, !dbg !12196
%11 = getelementptr inbounds float, float* %10, i64 0, !dbg !12196
%12 = load float, float* %11, align 4, !dbg !12196
%13 = call float @atan2f(float %7, float %12) #7, !dbg !12197
ret float %13, !dbg !12198
}
; Function Attrs: nounwind
declare dso_local float @atan2f(float, float) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmPitch(%struct.Matrixf_t* %0) #0 !dbg !12199 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12200, metadata !DIExpression()), !dbg !12201
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12202
%4 = call float @dcmSinPitch(%struct.Matrixf_t* %3), !dbg !12203
%5 = call float @asinf(float %4) #7, !dbg !12204
ret float %5, !dbg !12205
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmSinPitch(%struct.Matrixf_t* %0) #0 !dbg !12206 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12207, metadata !DIExpression()), !dbg !12208
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12209
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !12209
%5 = load float*, float** %4, align 8, !dbg !12209
%6 = getelementptr inbounds float, float* %5, i64 6, !dbg !12209
%7 = load float, float* %6, align 4, !dbg !12209
%8 = fmul float -1.000000e+00, %7, !dbg !12209
%9 = fcmp olt float %8, 1.000000e+00, !dbg !12209
br i1 %9, label %10, label %17, !dbg !12209
10: ; preds = %1
%11 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12209
%12 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %11, i32 0, i32 2, !dbg !12209
%13 = load float*, float** %12, align 8, !dbg !12209
%14 = getelementptr inbounds float, float* %13, i64 6, !dbg !12209
%15 = load float, float* %14, align 4, !dbg !12209
%16 = fmul float -1.000000e+00, %15, !dbg !12209
br label %18, !dbg !12209
17: ; preds = %1
br label %18, !dbg !12209
18: ; preds = %17, %10
%19 = phi float [ %16, %10 ], [ 1.000000e+00, %17 ], !dbg !12209
%20 = fcmp ogt float -1.000000e+00, %19, !dbg !12209
br i1 %20, label %21, label %22, !dbg !12209
21: ; preds = %18
br label %40, !dbg !12209
22: ; preds = %18
%23 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12209
%24 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %23, i32 0, i32 2, !dbg !12209
%25 = load float*, float** %24, align 8, !dbg !12209
%26 = getelementptr inbounds float, float* %25, i64 6, !dbg !12209
%27 = load float, float* %26, align 4, !dbg !12209
%28 = fmul float -1.000000e+00, %27, !dbg !12209
%29 = fcmp olt float %28, 1.000000e+00, !dbg !12209
br i1 %29, label %30, label %37, !dbg !12209
30: ; preds = %22
%31 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12209
%32 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %31, i32 0, i32 2, !dbg !12209
%33 = load float*, float** %32, align 8, !dbg !12209
%34 = getelementptr inbounds float, float* %33, i64 6, !dbg !12209
%35 = load float, float* %34, align 4, !dbg !12209
%36 = fmul float -1.000000e+00, %35, !dbg !12209
br label %38, !dbg !12209
37: ; preds = %22
br label %38, !dbg !12209
38: ; preds = %37, %30
%39 = phi float [ %36, %30 ], [ 1.000000e+00, %37 ], !dbg !12209
br label %40, !dbg !12209
40: ; preds = %38, %21
%41 = phi float [ -1.000000e+00, %21 ], [ %39, %38 ], !dbg !12209
ret float %41, !dbg !12210
}
; Function Attrs: nounwind
declare dso_local float @asinf(float) #5
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmCosPitch(%struct.Matrixf_t* %0) #0 !dbg !12211 {
%2 = alloca %struct.Matrixf_t*, align 8
%3 = alloca float, align 4
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12212, metadata !DIExpression()), !dbg !12213
call void @llvm.dbg.declare(metadata float* %3, metadata !12214, metadata !DIExpression()), !dbg !12215
%4 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12216
%5 = call float @dcmSinPitch(%struct.Matrixf_t* %4), !dbg !12217
store float %5, float* %3, align 4, !dbg !12215
%6 = load float, float* %3, align 4, !dbg !12218
%7 = load float, float* %3, align 4, !dbg !12219
%8 = fmul float %6, %7, !dbg !12220
%9 = fsub float 1.000000e+00, %8, !dbg !12221
%10 = call float @sqrtf(float %9) #7, !dbg !12222
ret float %10, !dbg !12223
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmRoll(%struct.Matrixf_t* %0) #0 !dbg !12224 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12225, metadata !DIExpression()), !dbg !12226
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12227
%4 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %3, i32 0, i32 2, !dbg !12227
%5 = load float*, float** %4, align 8, !dbg !12227
%6 = getelementptr inbounds float, float* %5, i64 7, !dbg !12227
%7 = load float, float* %6, align 4, !dbg !12227
%8 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12228
%9 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %8, i32 0, i32 2, !dbg !12228
%10 = load float*, float** %9, align 8, !dbg !12228
%11 = getelementptr inbounds float, float* %10, i64 8, !dbg !12228
%12 = load float, float* %11, align 4, !dbg !12228
%13 = call float @atan2f(float %7, float %12) #7, !dbg !12229
ret float %13, !dbg !12230
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmCosRoll(%struct.Matrixf_t* %0) #0 !dbg !12231 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12232, metadata !DIExpression()), !dbg !12233
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12234
%4 = call float @dcmRoll(%struct.Matrixf_t* %3), !dbg !12235
%5 = call float @cosf(float %4) #7, !dbg !12236
ret float %5, !dbg !12237
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local float @dcmSinRoll(%struct.Matrixf_t* %0) #0 !dbg !12238 {
%2 = alloca %struct.Matrixf_t*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %2, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %2, metadata !12239, metadata !DIExpression()), !dbg !12240
%3 = load %struct.Matrixf_t*, %struct.Matrixf_t** %2, align 8, !dbg !12241
%4 = call float @dcmRoll(%struct.Matrixf_t* %3), !dbg !12242
%5 = call float @sinf(float %4) #7, !dbg !12243
ret float %5, !dbg !12244
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @dcmApplyRotation(%struct.Matrixf_t* %0, float* %1, float* %2) #0 !dbg !12245 {
%4 = alloca %struct.Matrixf_t*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
store %struct.Matrixf_t* %0, %struct.Matrixf_t** %4, align 8
call void @llvm.dbg.declare(metadata %struct.Matrixf_t** %4, metadata !12248, metadata !DIExpression()), !dbg !12249
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !12250, metadata !DIExpression()), !dbg !12251
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !12252, metadata !DIExpression()), !dbg !12253
%7 = load %struct.Matrixf_t*, %struct.Matrixf_t** %4, align 8, !dbg !12254
%8 = getelementptr inbounds %struct.Matrixf_t, %struct.Matrixf_t* %7, i32 0, i32 2, !dbg !12255
%9 = load float*, float** %8, align 8, !dbg !12255
%10 = load float*, float** %5, align 8, !dbg !12256
%11 = load float*, float** %6, align 8, !dbg !12257
call void @rawdcmApplyRotation(float* %9, float* %10, float* %11), !dbg !12258
ret void, !dbg !12259
}
; Function Attrs: noinline nounwind optnone uwtable
define dso_local void @rawdcmApplyRotation(float* %0, float* %1, float* %2) #0 !dbg !12260 {
%4 = alloca float*, align 8
%5 = alloca float*, align 8
%6 = alloca float*, align 8
%7 = alloca float, align 4
%8 = alloca float, align 4
%9 = alloca float, align 4
store float* %0, float** %4, align 8
call void @llvm.dbg.declare(metadata float** %4, metadata !12263, metadata !DIExpression()), !dbg !12264
store float* %1, float** %5, align 8
call void @llvm.dbg.declare(metadata float** %5, metadata !12265, metadata !DIExpression()), !dbg !12266
store float* %2, float** %6, align 8
call void @llvm.dbg.declare(metadata float** %6, metadata !12267, metadata !DIExpression()), !dbg !12268
call void @llvm.dbg.declare(metadata float* %7, metadata !12269, metadata !DIExpression()), !dbg !12270
%10 = load float*, float** %4, align 8, !dbg !12271
%11 = getelementptr inbounds float, float* %10, i64 0, !dbg !12271
%12 = load float, float* %11, align 4, !dbg !12271
%13 = load float*, float** %5, align 8, !dbg !12272
%14 = getelementptr inbounds float, float* %13, i64 0, !dbg !12272
%15 = load float, float* %14, align 4, !dbg !12272
%16 = fmul float %12, %15, !dbg !12273
%17 = load float*, float** %4, align 8, !dbg !12274
%18 = getelementptr inbounds float, float* %17, i64 1, !dbg !12274
%19 = load float, float* %18, align 4, !dbg !12274
%20 = load float*, float** %5, align 8, !dbg !12275
%21 = getelementptr inbounds float, float* %20, i64 1, !dbg !12275
%22 = load float, float* %21, align 4, !dbg !12275
%23 = fmul float %19, %22, !dbg !12276
%24 = fadd float %16, %23, !dbg !12277
%25 = load float*, float** %4, align 8, !dbg !12278
%26 = getelementptr inbounds float, float* %25, i64 2, !dbg !12278
%27 = load float, float* %26, align 4, !dbg !12278
%28 = load float*, float** %5, align 8, !dbg !12279
%29 = getelementptr inbounds float, float* %28, i64 2, !dbg !12279
%30 = load float, float* %29, align 4, !dbg !12279
%31 = fmul float %27, %30, !dbg !12280
%32 = fadd float %24, %31, !dbg !12281
store float %32, float* %7, align 4, !dbg !12270
call void @llvm.dbg.declare(metadata float* %8, metadata !12282, metadata !DIExpression()), !dbg !12283
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment